dignity.js 0.8.1 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,42 +1,42 @@
1
- var DignityJS=(()=>{var Oa=Object.defineProperty;var Ua=n=>{throw TypeError(n)};var Ba=(n,e,t)=>e in n?Oa(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var En=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var F=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var hr=(n,e,t)=>Ba(n,typeof e!="symbol"?e+"":e,t);var Ot=(n,e,t)=>e.has(n)?Ua("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t);var hs=F(()=>{});var wt=F((fl,pr)=>{(function(n){"use strict";var e=function(c){var u,d=new Float64Array(16);if(c)for(u=0;u<c.length;u++)d[u]=c[u];return d},t=function(){throw new Error("no PRNG")},r=new Uint8Array(16),i=new Uint8Array(32);i[0]=9;var s=e(),a=e([1]),f=e([56129,1]),l=e([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),p=e([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),y=e([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),x=e([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),E=e([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function G(c,u,d,o){c[u]=d>>24&255,c[u+1]=d>>16&255,c[u+2]=d>>8&255,c[u+3]=d&255,c[u+4]=o>>24&255,c[u+5]=o>>16&255,c[u+6]=o>>8&255,c[u+7]=o&255}function W(c,u,d,o,h){var m,b=0;for(m=0;m<h;m++)b|=c[u+m]^d[o+m];return(1&b-1>>>8)-1}function ie(c,u,d,o){return W(c,u,d,o,16)}function ue(c,u,d,o){return W(c,u,d,o,32)}function be(c,u,d,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,m=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,b=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,w=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,k=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=u[0]&255|(u[1]&255)<<8|(u[2]&255)<<16|(u[3]&255)<<24,ae=u[4]&255|(u[5]&255)<<8|(u[6]&255)<<16|(u[7]&255)<<24,D=u[8]&255|(u[9]&255)<<8|(u[10]&255)<<16|(u[11]&255)<<24,z=u[12]&255|(u[13]&255)<<8|(u[14]&255)<<16|(u[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,J=d[16]&255|(d[17]&255)<<8|(d[18]&255)<<16|(d[19]&255)<<24,Y=d[20]&255|(d[21]&255)<<8|(d[22]&255)<<16|(d[23]&255)<<24,$=d[24]&255|(d[25]&255)<<8|(d[26]&255)<<16|(d[27]&255)<<24,V=d[28]&255|(d[29]&255)<<8|(d[30]&255)<<16|(d[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,K=m,M=b,U=w,L=k,R=j,v=A,_=ae,C=D,P=z,S=q,T=J,N=Y,X=$,Q=V,Z=H,g,re=0;re<20;re+=2)g=O+N|0,L^=g<<7|g>>>25,g=L+O|0,C^=g<<9|g>>>23,g=C+L|0,N^=g<<13|g>>>19,g=N+C|0,O^=g<<18|g>>>14,g=R+K|0,P^=g<<7|g>>>25,g=P+R|0,X^=g<<9|g>>>23,g=X+P|0,K^=g<<13|g>>>19,g=K+X|0,R^=g<<18|g>>>14,g=S+v|0,Q^=g<<7|g>>>25,g=Q+S|0,M^=g<<9|g>>>23,g=M+Q|0,v^=g<<13|g>>>19,g=v+M|0,S^=g<<18|g>>>14,g=Z+T|0,U^=g<<7|g>>>25,g=U+Z|0,_^=g<<9|g>>>23,g=_+U|0,T^=g<<13|g>>>19,g=T+_|0,Z^=g<<18|g>>>14,g=O+U|0,K^=g<<7|g>>>25,g=K+O|0,M^=g<<9|g>>>23,g=M+K|0,U^=g<<13|g>>>19,g=U+M|0,O^=g<<18|g>>>14,g=R+L|0,v^=g<<7|g>>>25,g=v+R|0,_^=g<<9|g>>>23,g=_+v|0,L^=g<<13|g>>>19,g=L+_|0,R^=g<<18|g>>>14,g=S+P|0,T^=g<<7|g>>>25,g=T+S|0,C^=g<<9|g>>>23,g=C+T|0,P^=g<<13|g>>>19,g=P+C|0,S^=g<<18|g>>>14,g=Z+Q|0,N^=g<<7|g>>>25,g=N+Z|0,X^=g<<9|g>>>23,g=X+N|0,Q^=g<<13|g>>>19,g=Q+X|0,Z^=g<<18|g>>>14;O=O+h|0,K=K+m|0,M=M+b|0,U=U+w|0,L=L+k|0,R=R+j|0,v=v+A|0,_=_+ae|0,C=C+D|0,P=P+z|0,S=S+q|0,T=T+J|0,N=N+Y|0,X=X+$|0,Q=Q+V|0,Z=Z+H|0,c[0]=O>>>0&255,c[1]=O>>>8&255,c[2]=O>>>16&255,c[3]=O>>>24&255,c[4]=K>>>0&255,c[5]=K>>>8&255,c[6]=K>>>16&255,c[7]=K>>>24&255,c[8]=M>>>0&255,c[9]=M>>>8&255,c[10]=M>>>16&255,c[11]=M>>>24&255,c[12]=U>>>0&255,c[13]=U>>>8&255,c[14]=U>>>16&255,c[15]=U>>>24&255,c[16]=L>>>0&255,c[17]=L>>>8&255,c[18]=L>>>16&255,c[19]=L>>>24&255,c[20]=R>>>0&255,c[21]=R>>>8&255,c[22]=R>>>16&255,c[23]=R>>>24&255,c[24]=v>>>0&255,c[25]=v>>>8&255,c[26]=v>>>16&255,c[27]=v>>>24&255,c[28]=_>>>0&255,c[29]=_>>>8&255,c[30]=_>>>16&255,c[31]=_>>>24&255,c[32]=C>>>0&255,c[33]=C>>>8&255,c[34]=C>>>16&255,c[35]=C>>>24&255,c[36]=P>>>0&255,c[37]=P>>>8&255,c[38]=P>>>16&255,c[39]=P>>>24&255,c[40]=S>>>0&255,c[41]=S>>>8&255,c[42]=S>>>16&255,c[43]=S>>>24&255,c[44]=T>>>0&255,c[45]=T>>>8&255,c[46]=T>>>16&255,c[47]=T>>>24&255,c[48]=N>>>0&255,c[49]=N>>>8&255,c[50]=N>>>16&255,c[51]=N>>>24&255,c[52]=X>>>0&255,c[53]=X>>>8&255,c[54]=X>>>16&255,c[55]=X>>>24&255,c[56]=Q>>>0&255,c[57]=Q>>>8&255,c[58]=Q>>>16&255,c[59]=Q>>>24&255,c[60]=Z>>>0&255,c[61]=Z>>>8&255,c[62]=Z>>>16&255,c[63]=Z>>>24&255}function xt(c,u,d,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,m=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,b=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,w=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,k=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=u[0]&255|(u[1]&255)<<8|(u[2]&255)<<16|(u[3]&255)<<24,ae=u[4]&255|(u[5]&255)<<8|(u[6]&255)<<16|(u[7]&255)<<24,D=u[8]&255|(u[9]&255)<<8|(u[10]&255)<<16|(u[11]&255)<<24,z=u[12]&255|(u[13]&255)<<8|(u[14]&255)<<16|(u[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,J=d[16]&255|(d[17]&255)<<8|(d[18]&255)<<16|(d[19]&255)<<24,Y=d[20]&255|(d[21]&255)<<8|(d[22]&255)<<16|(d[23]&255)<<24,$=d[24]&255|(d[25]&255)<<8|(d[26]&255)<<16|(d[27]&255)<<24,V=d[28]&255|(d[29]&255)<<8|(d[30]&255)<<16|(d[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,K=m,M=b,U=w,L=k,R=j,v=A,_=ae,C=D,P=z,S=q,T=J,N=Y,X=$,Q=V,Z=H,g,re=0;re<20;re+=2)g=O+N|0,L^=g<<7|g>>>25,g=L+O|0,C^=g<<9|g>>>23,g=C+L|0,N^=g<<13|g>>>19,g=N+C|0,O^=g<<18|g>>>14,g=R+K|0,P^=g<<7|g>>>25,g=P+R|0,X^=g<<9|g>>>23,g=X+P|0,K^=g<<13|g>>>19,g=K+X|0,R^=g<<18|g>>>14,g=S+v|0,Q^=g<<7|g>>>25,g=Q+S|0,M^=g<<9|g>>>23,g=M+Q|0,v^=g<<13|g>>>19,g=v+M|0,S^=g<<18|g>>>14,g=Z+T|0,U^=g<<7|g>>>25,g=U+Z|0,_^=g<<9|g>>>23,g=_+U|0,T^=g<<13|g>>>19,g=T+_|0,Z^=g<<18|g>>>14,g=O+U|0,K^=g<<7|g>>>25,g=K+O|0,M^=g<<9|g>>>23,g=M+K|0,U^=g<<13|g>>>19,g=U+M|0,O^=g<<18|g>>>14,g=R+L|0,v^=g<<7|g>>>25,g=v+R|0,_^=g<<9|g>>>23,g=_+v|0,L^=g<<13|g>>>19,g=L+_|0,R^=g<<18|g>>>14,g=S+P|0,T^=g<<7|g>>>25,g=T+S|0,C^=g<<9|g>>>23,g=C+T|0,P^=g<<13|g>>>19,g=P+C|0,S^=g<<18|g>>>14,g=Z+Q|0,N^=g<<7|g>>>25,g=N+Z|0,X^=g<<9|g>>>23,g=X+N|0,Q^=g<<13|g>>>19,g=Q+X|0,Z^=g<<18|g>>>14;c[0]=O>>>0&255,c[1]=O>>>8&255,c[2]=O>>>16&255,c[3]=O>>>24&255,c[4]=R>>>0&255,c[5]=R>>>8&255,c[6]=R>>>16&255,c[7]=R>>>24&255,c[8]=S>>>0&255,c[9]=S>>>8&255,c[10]=S>>>16&255,c[11]=S>>>24&255,c[12]=Z>>>0&255,c[13]=Z>>>8&255,c[14]=Z>>>16&255,c[15]=Z>>>24&255,c[16]=v>>>0&255,c[17]=v>>>8&255,c[18]=v>>>16&255,c[19]=v>>>24&255,c[20]=_>>>0&255,c[21]=_>>>8&255,c[22]=_>>>16&255,c[23]=_>>>24&255,c[24]=C>>>0&255,c[25]=C>>>8&255,c[26]=C>>>16&255,c[27]=C>>>24&255,c[28]=P>>>0&255,c[29]=P>>>8&255,c[30]=P>>>16&255,c[31]=P>>>24&255}function rr(c,u,d,o){be(c,u,d,o)}function nr(c,u,d,o){xt(c,u,d,o)}var dt=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ji(c,u,d,o,h,m,b){var w=new Uint8Array(16),k=new Uint8Array(64),j,A;for(A=0;A<16;A++)w[A]=0;for(A=0;A<8;A++)w[A]=m[A];for(;h>=64;){for(rr(k,w,b,dt),A=0;A<64;A++)c[u+A]=d[o+A]^k[A];for(j=1,A=8;A<16;A++)j=j+(w[A]&255)|0,w[A]=j&255,j>>>=8;h-=64,u+=64,o+=64}if(h>0)for(rr(k,w,b,dt),A=0;A<h;A++)c[u+A]=d[o+A]^k[A];return 0}function Xi(c,u,d,o,h){var m=new Uint8Array(16),b=new Uint8Array(64),w,k;for(k=0;k<16;k++)m[k]=0;for(k=0;k<8;k++)m[k]=o[k];for(;d>=64;){for(rr(b,m,h,dt),k=0;k<64;k++)c[u+k]=b[k];for(w=1,k=8;k<16;k++)w=w+(m[k]&255)|0,m[k]=w&255,w>>>=8;d-=64,u+=64}if(d>0)for(rr(b,m,h,dt),k=0;k<d;k++)c[u+k]=b[k];return 0}function Zi(c,u,d,o,h){var m=new Uint8Array(32);nr(m,o,h,dt);for(var b=new Uint8Array(8),w=0;w<8;w++)b[w]=o[w+16];return Xi(c,u,d,b,m)}function dn(c,u,d,o,h,m,b){var w=new Uint8Array(32);nr(w,m,b,dt);for(var k=new Uint8Array(8),j=0;j<8;j++)k[j]=m[j+16];return Ji(c,u,d,o,h,k,w)}var ir=function(c){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var u,d,o,h,m,b,w,k;u=c[0]&255|(c[1]&255)<<8,this.r[0]=u&8191,d=c[2]&255|(c[3]&255)<<8,this.r[1]=(u>>>13|d<<3)&8191,o=c[4]&255|(c[5]&255)<<8,this.r[2]=(d>>>10|o<<6)&7939,h=c[6]&255|(c[7]&255)<<8,this.r[3]=(o>>>7|h<<9)&8191,m=c[8]&255|(c[9]&255)<<8,this.r[4]=(h>>>4|m<<12)&255,this.r[5]=m>>>1&8190,b=c[10]&255|(c[11]&255)<<8,this.r[6]=(m>>>14|b<<2)&8191,w=c[12]&255|(c[13]&255)<<8,this.r[7]=(b>>>11|w<<5)&8065,k=c[14]&255|(c[15]&255)<<8,this.r[8]=(w>>>8|k<<8)&8191,this.r[9]=k>>>5&127,this.pad[0]=c[16]&255|(c[17]&255)<<8,this.pad[1]=c[18]&255|(c[19]&255)<<8,this.pad[2]=c[20]&255|(c[21]&255)<<8,this.pad[3]=c[22]&255|(c[23]&255)<<8,this.pad[4]=c[24]&255|(c[25]&255)<<8,this.pad[5]=c[26]&255|(c[27]&255)<<8,this.pad[6]=c[28]&255|(c[29]&255)<<8,this.pad[7]=c[30]&255|(c[31]&255)<<8};ir.prototype.blocks=function(c,u,d){for(var o=this.fin?0:2048,h,m,b,w,k,j,A,ae,D,z,q,J,Y,$,V,H,O,K,M,U=this.h[0],L=this.h[1],R=this.h[2],v=this.h[3],_=this.h[4],C=this.h[5],P=this.h[6],S=this.h[7],T=this.h[8],N=this.h[9],X=this.r[0],Q=this.r[1],Z=this.r[2],g=this.r[3],re=this.r[4],ce=this.r[5],fe=this.r[6],ee=this.r[7],se=this.r[8],oe=this.r[9];d>=16;)h=c[u+0]&255|(c[u+1]&255)<<8,U+=h&8191,m=c[u+2]&255|(c[u+3]&255)<<8,L+=(h>>>13|m<<3)&8191,b=c[u+4]&255|(c[u+5]&255)<<8,R+=(m>>>10|b<<6)&8191,w=c[u+6]&255|(c[u+7]&255)<<8,v+=(b>>>7|w<<9)&8191,k=c[u+8]&255|(c[u+9]&255)<<8,_+=(w>>>4|k<<12)&8191,C+=k>>>1&8191,j=c[u+10]&255|(c[u+11]&255)<<8,P+=(k>>>14|j<<2)&8191,A=c[u+12]&255|(c[u+13]&255)<<8,S+=(j>>>11|A<<5)&8191,ae=c[u+14]&255|(c[u+15]&255)<<8,T+=(A>>>8|ae<<8)&8191,N+=ae>>>5|o,D=0,z=D,z+=U*X,z+=L*(5*oe),z+=R*(5*se),z+=v*(5*ee),z+=_*(5*fe),D=z>>>13,z&=8191,z+=C*(5*ce),z+=P*(5*re),z+=S*(5*g),z+=T*(5*Z),z+=N*(5*Q),D+=z>>>13,z&=8191,q=D,q+=U*Q,q+=L*X,q+=R*(5*oe),q+=v*(5*se),q+=_*(5*ee),D=q>>>13,q&=8191,q+=C*(5*fe),q+=P*(5*ce),q+=S*(5*re),q+=T*(5*g),q+=N*(5*Z),D+=q>>>13,q&=8191,J=D,J+=U*Z,J+=L*Q,J+=R*X,J+=v*(5*oe),J+=_*(5*se),D=J>>>13,J&=8191,J+=C*(5*ee),J+=P*(5*fe),J+=S*(5*ce),J+=T*(5*re),J+=N*(5*g),D+=J>>>13,J&=8191,Y=D,Y+=U*g,Y+=L*Z,Y+=R*Q,Y+=v*X,Y+=_*(5*oe),D=Y>>>13,Y&=8191,Y+=C*(5*se),Y+=P*(5*ee),Y+=S*(5*fe),Y+=T*(5*ce),Y+=N*(5*re),D+=Y>>>13,Y&=8191,$=D,$+=U*re,$+=L*g,$+=R*Z,$+=v*Q,$+=_*X,D=$>>>13,$&=8191,$+=C*(5*oe),$+=P*(5*se),$+=S*(5*ee),$+=T*(5*fe),$+=N*(5*ce),D+=$>>>13,$&=8191,V=D,V+=U*ce,V+=L*re,V+=R*g,V+=v*Z,V+=_*Q,D=V>>>13,V&=8191,V+=C*X,V+=P*(5*oe),V+=S*(5*se),V+=T*(5*ee),V+=N*(5*fe),D+=V>>>13,V&=8191,H=D,H+=U*fe,H+=L*ce,H+=R*re,H+=v*g,H+=_*Z,D=H>>>13,H&=8191,H+=C*Q,H+=P*X,H+=S*(5*oe),H+=T*(5*se),H+=N*(5*ee),D+=H>>>13,H&=8191,O=D,O+=U*ee,O+=L*fe,O+=R*ce,O+=v*re,O+=_*g,D=O>>>13,O&=8191,O+=C*Z,O+=P*Q,O+=S*X,O+=T*(5*oe),O+=N*(5*se),D+=O>>>13,O&=8191,K=D,K+=U*se,K+=L*ee,K+=R*fe,K+=v*ce,K+=_*re,D=K>>>13,K&=8191,K+=C*g,K+=P*Z,K+=S*Q,K+=T*X,K+=N*(5*oe),D+=K>>>13,K&=8191,M=D,M+=U*oe,M+=L*se,M+=R*ee,M+=v*fe,M+=_*ce,D=M>>>13,M&=8191,M+=C*re,M+=P*g,M+=S*Z,M+=T*Q,M+=N*X,D+=M>>>13,M&=8191,D=(D<<2)+D|0,D=D+z|0,z=D&8191,D=D>>>13,q+=D,U=z,L=q,R=J,v=Y,_=$,C=V,P=H,S=O,T=K,N=M,u+=16,d-=16;this.h[0]=U,this.h[1]=L,this.h[2]=R,this.h[3]=v,this.h[4]=_,this.h[5]=C,this.h[6]=P,this.h[7]=S,this.h[8]=T,this.h[9]=N},ir.prototype.finish=function(c,u){var d=new Uint16Array(10),o,h,m,b;if(this.leftover){for(b=this.leftover,this.buffer[b++]=1;b<16;b++)this.buffer[b]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,b=2;b<10;b++)this.h[b]+=o,o=this.h[b]>>>13,this.h[b]&=8191;for(this.h[0]+=o*5,o=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=o,o=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=o,d[0]=this.h[0]+5,o=d[0]>>>13,d[0]&=8191,b=1;b<10;b++)d[b]=this.h[b]+o,o=d[b]>>>13,d[b]&=8191;for(d[9]-=8192,h=(o^1)-1,b=0;b<10;b++)d[b]&=h;for(h=~h,b=0;b<10;b++)this.h[b]=this.h[b]&h|d[b];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,m=this.h[0]+this.pad[0],this.h[0]=m&65535,b=1;b<8;b++)m=(this.h[b]+this.pad[b]|0)+(m>>>16)|0,this.h[b]=m&65535;c[u+0]=this.h[0]>>>0&255,c[u+1]=this.h[0]>>>8&255,c[u+2]=this.h[1]>>>0&255,c[u+3]=this.h[1]>>>8&255,c[u+4]=this.h[2]>>>0&255,c[u+5]=this.h[2]>>>8&255,c[u+6]=this.h[3]>>>0&255,c[u+7]=this.h[3]>>>8&255,c[u+8]=this.h[4]>>>0&255,c[u+9]=this.h[4]>>>8&255,c[u+10]=this.h[5]>>>0&255,c[u+11]=this.h[5]>>>8&255,c[u+12]=this.h[6]>>>0&255,c[u+13]=this.h[6]>>>8&255,c[u+14]=this.h[7]>>>0&255,c[u+15]=this.h[7]>>>8&255},ir.prototype.update=function(c,u,d){var o,h;if(this.leftover){for(h=16-this.leftover,h>d&&(h=d),o=0;o<h;o++)this.buffer[this.leftover+o]=c[u+o];if(d-=h,u+=h,this.leftover+=h,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(d>=16&&(h=d-d%16,this.blocks(c,u,h),u+=h,d-=h),d){for(o=0;o<d;o++)this.buffer[this.leftover+o]=c[u+o];this.leftover+=d}};function un(c,u,d,o,h,m){var b=new ir(m);return b.update(d,o,h),b.finish(c,u),0}function Qi(c,u,d,o,h,m){var b=new Uint8Array(16);return un(b,0,d,o,h,m),ie(c,u,b,0)}function ln(c,u,d,o,h){var m;if(d<32)return-1;for(dn(c,0,u,0,d,o,h),un(c,16,c,32,d-32,c),m=0;m<16;m++)c[m]=0;return 0}function hn(c,u,d,o,h){var m,b=new Uint8Array(32);if(d<32||(Zi(b,0,32,o,h),Qi(u,16,u,32,d-32,b)!==0))return-1;for(dn(c,0,u,0,d,o,h),m=0;m<32;m++)c[m]=0;return 0}function Ze(c,u){var d;for(d=0;d<16;d++)c[d]=u[d]|0}function pn(c){var u,d,o=1;for(u=0;u<16;u++)d=c[u]+o+65535,o=Math.floor(d/65536),c[u]=d-o*65536;c[0]+=o-1+37*(o-1)}function bt(c,u,d){for(var o,h=~(d-1),m=0;m<16;m++)o=h&(c[m]^u[m]),c[m]^=o,u[m]^=o}function vt(c,u){var d,o,h,m=e(),b=e();for(d=0;d<16;d++)b[d]=u[d];for(pn(b),pn(b),pn(b),o=0;o<2;o++){for(m[0]=b[0]-65517,d=1;d<15;d++)m[d]=b[d]-65535-(m[d-1]>>16&1),m[d-1]&=65535;m[15]=b[15]-32767-(m[14]>>16&1),h=m[15]>>16&1,m[14]&=65535,bt(b,m,1-h)}for(d=0;d<16;d++)c[2*d]=b[d]&255,c[2*d+1]=b[d]>>8}function es(c,u){var d=new Uint8Array(32),o=new Uint8Array(32);return vt(d,c),vt(o,u),ue(d,0,o,0)}function ts(c){var u=new Uint8Array(32);return vt(u,c),u[0]&1}function yn(c,u){var d;for(d=0;d<16;d++)c[d]=u[2*d]+(u[2*d+1]<<8);c[15]&=32767}function Ke(c,u,d){for(var o=0;o<16;o++)c[o]=u[o]+d[o]}function Fe(c,u,d){for(var o=0;o<16;o++)c[o]=u[o]-d[o]}function ne(c,u,d){var o,h,m=0,b=0,w=0,k=0,j=0,A=0,ae=0,D=0,z=0,q=0,J=0,Y=0,$=0,V=0,H=0,O=0,K=0,M=0,U=0,L=0,R=0,v=0,_=0,C=0,P=0,S=0,T=0,N=0,X=0,Q=0,Z=0,g=d[0],re=d[1],ce=d[2],fe=d[3],ee=d[4],se=d[5],oe=d[6],xe=d[7],de=d[8],le=d[9],he=d[10],pe=d[11],_e=d[12],we=d[13],Se=d[14],Ce=d[15];o=u[0],m+=o*g,b+=o*re,w+=o*ce,k+=o*fe,j+=o*ee,A+=o*se,ae+=o*oe,D+=o*xe,z+=o*de,q+=o*le,J+=o*he,Y+=o*pe,$+=o*_e,V+=o*we,H+=o*Se,O+=o*Ce,o=u[1],b+=o*g,w+=o*re,k+=o*ce,j+=o*fe,A+=o*ee,ae+=o*se,D+=o*oe,z+=o*xe,q+=o*de,J+=o*le,Y+=o*he,$+=o*pe,V+=o*_e,H+=o*we,O+=o*Se,K+=o*Ce,o=u[2],w+=o*g,k+=o*re,j+=o*ce,A+=o*fe,ae+=o*ee,D+=o*se,z+=o*oe,q+=o*xe,J+=o*de,Y+=o*le,$+=o*he,V+=o*pe,H+=o*_e,O+=o*we,K+=o*Se,M+=o*Ce,o=u[3],k+=o*g,j+=o*re,A+=o*ce,ae+=o*fe,D+=o*ee,z+=o*se,q+=o*oe,J+=o*xe,Y+=o*de,$+=o*le,V+=o*he,H+=o*pe,O+=o*_e,K+=o*we,M+=o*Se,U+=o*Ce,o=u[4],j+=o*g,A+=o*re,ae+=o*ce,D+=o*fe,z+=o*ee,q+=o*se,J+=o*oe,Y+=o*xe,$+=o*de,V+=o*le,H+=o*he,O+=o*pe,K+=o*_e,M+=o*we,U+=o*Se,L+=o*Ce,o=u[5],A+=o*g,ae+=o*re,D+=o*ce,z+=o*fe,q+=o*ee,J+=o*se,Y+=o*oe,$+=o*xe,V+=o*de,H+=o*le,O+=o*he,K+=o*pe,M+=o*_e,U+=o*we,L+=o*Se,R+=o*Ce,o=u[6],ae+=o*g,D+=o*re,z+=o*ce,q+=o*fe,J+=o*ee,Y+=o*se,$+=o*oe,V+=o*xe,H+=o*de,O+=o*le,K+=o*he,M+=o*pe,U+=o*_e,L+=o*we,R+=o*Se,v+=o*Ce,o=u[7],D+=o*g,z+=o*re,q+=o*ce,J+=o*fe,Y+=o*ee,$+=o*se,V+=o*oe,H+=o*xe,O+=o*de,K+=o*le,M+=o*he,U+=o*pe,L+=o*_e,R+=o*we,v+=o*Se,_+=o*Ce,o=u[8],z+=o*g,q+=o*re,J+=o*ce,Y+=o*fe,$+=o*ee,V+=o*se,H+=o*oe,O+=o*xe,K+=o*de,M+=o*le,U+=o*he,L+=o*pe,R+=o*_e,v+=o*we,_+=o*Se,C+=o*Ce,o=u[9],q+=o*g,J+=o*re,Y+=o*ce,$+=o*fe,V+=o*ee,H+=o*se,O+=o*oe,K+=o*xe,M+=o*de,U+=o*le,L+=o*he,R+=o*pe,v+=o*_e,_+=o*we,C+=o*Se,P+=o*Ce,o=u[10],J+=o*g,Y+=o*re,$+=o*ce,V+=o*fe,H+=o*ee,O+=o*se,K+=o*oe,M+=o*xe,U+=o*de,L+=o*le,R+=o*he,v+=o*pe,_+=o*_e,C+=o*we,P+=o*Se,S+=o*Ce,o=u[11],Y+=o*g,$+=o*re,V+=o*ce,H+=o*fe,O+=o*ee,K+=o*se,M+=o*oe,U+=o*xe,L+=o*de,R+=o*le,v+=o*he,_+=o*pe,C+=o*_e,P+=o*we,S+=o*Se,T+=o*Ce,o=u[12],$+=o*g,V+=o*re,H+=o*ce,O+=o*fe,K+=o*ee,M+=o*se,U+=o*oe,L+=o*xe,R+=o*de,v+=o*le,_+=o*he,C+=o*pe,P+=o*_e,S+=o*we,T+=o*Se,N+=o*Ce,o=u[13],V+=o*g,H+=o*re,O+=o*ce,K+=o*fe,M+=o*ee,U+=o*se,L+=o*oe,R+=o*xe,v+=o*de,_+=o*le,C+=o*he,P+=o*pe,S+=o*_e,T+=o*we,N+=o*Se,X+=o*Ce,o=u[14],H+=o*g,O+=o*re,K+=o*ce,M+=o*fe,U+=o*ee,L+=o*se,R+=o*oe,v+=o*xe,_+=o*de,C+=o*le,P+=o*he,S+=o*pe,T+=o*_e,N+=o*we,X+=o*Se,Q+=o*Ce,o=u[15],O+=o*g,K+=o*re,M+=o*ce,U+=o*fe,L+=o*ee,R+=o*se,v+=o*oe,_+=o*xe,C+=o*de,P+=o*le,S+=o*he,T+=o*pe,N+=o*_e,X+=o*we,Q+=o*Se,Z+=o*Ce,m+=38*K,b+=38*M,w+=38*U,k+=38*L,j+=38*R,A+=38*v,ae+=38*_,D+=38*C,z+=38*P,q+=38*S,J+=38*T,Y+=38*N,$+=38*X,V+=38*Q,H+=38*Z,h=1,o=m+h+65535,h=Math.floor(o/65536),m=o-h*65536,o=b+h+65535,h=Math.floor(o/65536),b=o-h*65536,o=w+h+65535,h=Math.floor(o/65536),w=o-h*65536,o=k+h+65535,h=Math.floor(o/65536),k=o-h*65536,o=j+h+65535,h=Math.floor(o/65536),j=o-h*65536,o=A+h+65535,h=Math.floor(o/65536),A=o-h*65536,o=ae+h+65535,h=Math.floor(o/65536),ae=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=z+h+65535,h=Math.floor(o/65536),z=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=J+h+65535,h=Math.floor(o/65536),J=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=o-h*65536,o=$+h+65535,h=Math.floor(o/65536),$=o-h*65536,o=V+h+65535,h=Math.floor(o/65536),V=o-h*65536,o=H+h+65535,h=Math.floor(o/65536),H=o-h*65536,o=O+h+65535,h=Math.floor(o/65536),O=o-h*65536,m+=h-1+37*(h-1),h=1,o=m+h+65535,h=Math.floor(o/65536),m=o-h*65536,o=b+h+65535,h=Math.floor(o/65536),b=o-h*65536,o=w+h+65535,h=Math.floor(o/65536),w=o-h*65536,o=k+h+65535,h=Math.floor(o/65536),k=o-h*65536,o=j+h+65535,h=Math.floor(o/65536),j=o-h*65536,o=A+h+65535,h=Math.floor(o/65536),A=o-h*65536,o=ae+h+65535,h=Math.floor(o/65536),ae=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=z+h+65535,h=Math.floor(o/65536),z=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=J+h+65535,h=Math.floor(o/65536),J=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=o-h*65536,o=$+h+65535,h=Math.floor(o/65536),$=o-h*65536,o=V+h+65535,h=Math.floor(o/65536),V=o-h*65536,o=H+h+65535,h=Math.floor(o/65536),H=o-h*65536,o=O+h+65535,h=Math.floor(o/65536),O=o-h*65536,m+=h-1+37*(h-1),c[0]=m,c[1]=b,c[2]=w,c[3]=k,c[4]=j,c[5]=A,c[6]=ae,c[7]=D,c[8]=z,c[9]=q,c[10]=J,c[11]=Y,c[12]=$,c[13]=V,c[14]=H,c[15]=O}function Le(c,u){ne(c,u,u)}function rs(c,u){var d=e(),o;for(o=0;o<16;o++)d[o]=u[o];for(o=253;o>=0;o--)Le(d,d),o!==2&&o!==4&&ne(d,d,u);for(o=0;o<16;o++)c[o]=d[o]}function ns(c,u){var d=e(),o;for(o=0;o<16;o++)d[o]=u[o];for(o=250;o>=0;o--)Le(d,d),o!==1&&ne(d,d,u);for(o=0;o<16;o++)c[o]=d[o]}function sr(c,u,d){var o=new Uint8Array(32),h=new Float64Array(80),m,b,w=e(),k=e(),j=e(),A=e(),ae=e(),D=e();for(b=0;b<31;b++)o[b]=u[b];for(o[31]=u[31]&127|64,o[0]&=248,yn(h,d),b=0;b<16;b++)k[b]=h[b],A[b]=w[b]=j[b]=0;for(w[0]=A[0]=1,b=254;b>=0;--b)m=o[b>>>3]>>>(b&7)&1,bt(w,k,m),bt(j,A,m),Ke(ae,w,j),Fe(w,w,j),Ke(j,k,A),Fe(k,k,A),Le(A,ae),Le(D,w),ne(w,j,w),ne(j,k,ae),Ke(ae,w,j),Fe(w,w,j),Le(k,w),Fe(j,A,D),ne(w,j,f),Ke(w,w,A),ne(j,j,w),ne(w,A,D),ne(A,k,h),Le(k,ae),bt(w,k,m),bt(j,A,m);for(b=0;b<16;b++)h[b+16]=w[b],h[b+32]=j[b],h[b+48]=k[b],h[b+64]=A[b];var z=h.subarray(32),q=h.subarray(16);return rs(z,z),ne(q,q,z),vt(c,q),0}function or(c,u){return sr(c,u,i)}function is(c,u){return t(u,32),or(c,u)}function ar(c,u,d){var o=new Uint8Array(32);return sr(o,d,u),nr(c,r,o,dt)}var ss=ln,Ia=hn;function Ta(c,u,d,o,h,m){var b=new Uint8Array(32);return ar(b,h,m),ss(c,u,d,o,b)}function ka(c,u,d,o,h,m){var b=new Uint8Array(32);return ar(b,h,m),Ia(c,u,d,o,b)}var os=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function as(c,u,d,o){for(var h=new Int32Array(16),m=new Int32Array(16),b,w,k,j,A,ae,D,z,q,J,Y,$,V,H,O,K,M,U,L,R,v,_,C,P,S,T,N=c[0],X=c[1],Q=c[2],Z=c[3],g=c[4],re=c[5],ce=c[6],fe=c[7],ee=u[0],se=u[1],oe=u[2],xe=u[3],de=u[4],le=u[5],he=u[6],pe=u[7],_e=0;o>=128;){for(L=0;L<16;L++)R=8*L+_e,h[L]=d[R+0]<<24|d[R+1]<<16|d[R+2]<<8|d[R+3],m[L]=d[R+4]<<24|d[R+5]<<16|d[R+6]<<8|d[R+7];for(L=0;L<80;L++)if(b=N,w=X,k=Q,j=Z,A=g,ae=re,D=ce,z=fe,q=ee,J=se,Y=oe,$=xe,V=de,H=le,O=he,K=pe,v=fe,_=pe,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=(g>>>14|de<<18)^(g>>>18|de<<14)^(de>>>9|g<<23),_=(de>>>14|g<<18)^(de>>>18|g<<14)^(g>>>9|de<<23),C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,v=g&re^~g&ce,_=de&le^~de&he,C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,v=os[L*2],_=os[L*2+1],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,v=h[L%16],_=m[L%16],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,M=S&65535|T<<16,U=C&65535|P<<16,v=M,_=U,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=(N>>>28|ee<<4)^(ee>>>2|N<<30)^(ee>>>7|N<<25),_=(ee>>>28|N<<4)^(N>>>2|ee<<30)^(N>>>7|ee<<25),C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,v=N&X^N&Q^X&Q,_=ee&se^ee&oe^se&oe,C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,z=S&65535|T<<16,K=C&65535|P<<16,v=j,_=$,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=M,_=U,C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,j=S&65535|T<<16,$=C&65535|P<<16,X=b,Q=w,Z=k,g=j,re=A,ce=ae,fe=D,N=z,se=q,oe=J,xe=Y,de=$,le=V,he=H,pe=O,ee=K,L%16===15)for(R=0;R<16;R++)v=h[R],_=m[R],C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=h[(R+9)%16],_=m[(R+9)%16],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,M=h[(R+1)%16],U=m[(R+1)%16],v=(M>>>1|U<<31)^(M>>>8|U<<24)^M>>>7,_=(U>>>1|M<<31)^(U>>>8|M<<24)^(U>>>7|M<<25),C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,M=h[(R+14)%16],U=m[(R+14)%16],v=(M>>>19|U<<13)^(U>>>29|M<<3)^M>>>6,_=(U>>>19|M<<13)^(M>>>29|U<<3)^(U>>>6|M<<26),C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,h[R]=S&65535|T<<16,m[R]=C&65535|P<<16;v=N,_=ee,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[0],_=u[0],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[0]=N=S&65535|T<<16,u[0]=ee=C&65535|P<<16,v=X,_=se,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[1],_=u[1],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[1]=X=S&65535|T<<16,u[1]=se=C&65535|P<<16,v=Q,_=oe,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[2],_=u[2],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[2]=Q=S&65535|T<<16,u[2]=oe=C&65535|P<<16,v=Z,_=xe,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[3],_=u[3],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[3]=Z=S&65535|T<<16,u[3]=xe=C&65535|P<<16,v=g,_=de,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[4],_=u[4],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[4]=g=S&65535|T<<16,u[4]=de=C&65535|P<<16,v=re,_=le,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[5],_=u[5],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[5]=re=S&65535|T<<16,u[5]=le=C&65535|P<<16,v=ce,_=he,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[6],_=u[6],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[6]=ce=S&65535|T<<16,u[6]=he=C&65535|P<<16,v=fe,_=pe,C=_&65535,P=_>>>16,S=v&65535,T=v>>>16,v=c[7],_=u[7],C+=_&65535,P+=_>>>16,S+=v&65535,T+=v>>>16,P+=C>>>16,S+=P>>>16,T+=S>>>16,c[7]=fe=S&65535|T<<16,u[7]=pe=C&65535|P<<16,_e+=128,o-=128}return o}function ut(c,u,d){var o=new Int32Array(8),h=new Int32Array(8),m=new Uint8Array(256),b,w=d;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,as(o,h,u,d),d%=128,b=0;b<d;b++)m[b]=u[w-d+b];for(m[d]=128,d=256-128*(d<112?1:0),m[d-9]=0,G(m,d-8,w/536870912|0,w<<3),as(o,h,m,d),b=0;b<8;b++)G(c,8*b,o[b],h[b]);return 0}function cr(c,u){var d=e(),o=e(),h=e(),m=e(),b=e(),w=e(),k=e(),j=e(),A=e();Fe(d,c[1],c[0]),Fe(A,u[1],u[0]),ne(d,d,A),Ke(o,c[0],c[1]),Ke(A,u[0],u[1]),ne(o,o,A),ne(h,c[3],u[3]),ne(h,h,p),ne(m,c[2],u[2]),Ke(m,m,m),Fe(b,o,d),Fe(w,m,h),Ke(k,m,h),Ke(j,o,d),ne(c[0],b,w),ne(c[1],j,k),ne(c[2],k,w),ne(c[3],b,j)}function cs(c,u,d){var o;for(o=0;o<4;o++)bt(c[o],u[o],d)}function gn(c,u){var d=e(),o=e(),h=e();rs(h,u[2]),ne(d,u[0],h),ne(o,u[1],h),vt(c,o),c[31]^=ts(d)<<7}function mn(c,u,d){var o,h;for(Ze(c[0],s),Ze(c[1],a),Ze(c[2],a),Ze(c[3],s),h=255;h>=0;--h)o=d[h/8|0]>>(h&7)&1,cs(c,u,o),cr(u,c),cr(c,c),cs(c,u,o)}function fr(c,u){var d=[e(),e(),e(),e()];Ze(d[0],y),Ze(d[1],x),Ze(d[2],a),ne(d[3],y,x),mn(c,d,u)}function xn(c,u,d){var o=new Uint8Array(64),h=[e(),e(),e(),e()],m;for(d||t(u,32),ut(o,u,32),o[0]&=248,o[31]&=127,o[31]|=64,fr(h,o),gn(c,h),m=0;m<32;m++)u[m+32]=c[m];return 0}var dr=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function bn(c,u){var d,o,h,m;for(o=63;o>=32;--o){for(d=0,h=o-32,m=o-12;h<m;++h)u[h]+=d-16*u[o]*dr[h-(o-32)],d=Math.floor((u[h]+128)/256),u[h]-=d*256;u[h]+=d,u[o]=0}for(d=0,h=0;h<32;h++)u[h]+=d-(u[31]>>4)*dr[h],d=u[h]>>8,u[h]&=255;for(h=0;h<32;h++)u[h]-=d*dr[h];for(o=0;o<32;o++)u[o+1]+=u[o]>>8,c[o]=u[o]&255}function vn(c){var u=new Float64Array(64),d;for(d=0;d<64;d++)u[d]=c[d];for(d=0;d<64;d++)c[d]=0;bn(c,u)}function fs(c,u,d,o){var h=new Uint8Array(64),m=new Uint8Array(64),b=new Uint8Array(64),w,k,j=new Float64Array(64),A=[e(),e(),e(),e()];ut(h,o,32),h[0]&=248,h[31]&=127,h[31]|=64;var ae=d+64;for(w=0;w<d;w++)c[64+w]=u[w];for(w=0;w<32;w++)c[32+w]=h[32+w];for(ut(b,c.subarray(32),d+32),vn(b),fr(A,b),gn(c,A),w=32;w<64;w++)c[w]=o[w];for(ut(m,c,d+64),vn(m),w=0;w<64;w++)j[w]=0;for(w=0;w<32;w++)j[w]=b[w];for(w=0;w<32;w++)for(k=0;k<32;k++)j[w+k]+=m[w]*h[k];return bn(c.subarray(32),j),ae}function Ra(c,u){var d=e(),o=e(),h=e(),m=e(),b=e(),w=e(),k=e();return Ze(c[2],a),yn(c[1],u),Le(h,c[1]),ne(m,h,l),Fe(h,h,c[2]),Ke(m,c[2],m),Le(b,m),Le(w,b),ne(k,w,b),ne(d,k,h),ne(d,d,m),ns(d,d),ne(d,d,h),ne(d,d,m),ne(d,d,m),ne(c[0],d,m),Le(o,c[0]),ne(o,o,m),es(o,h)&&ne(c[0],c[0],E),Le(o,c[0]),ne(o,o,m),es(o,h)?-1:(ts(c[0])===u[31]>>7&&Fe(c[0],s,c[0]),ne(c[3],c[0],c[1]),0)}function _n(c,u,d,o){var h,m=new Uint8Array(32),b=new Uint8Array(64),w=[e(),e(),e(),e()],k=[e(),e(),e(),e()];if(d<64||Ra(k,o))return-1;for(h=0;h<d;h++)c[h]=u[h];for(h=0;h<32;h++)c[h+32]=o[h];if(ut(b,c,d),vn(b),mn(w,k,b),fr(k,u.subarray(32)),cr(w,k),gn(m,w),d-=64,ue(u,0,m,0)){for(h=0;h<d;h++)c[h]=0;return-1}for(h=0;h<d;h++)c[h]=u[h+64];return d}var Pn=32,ur=24,Rt=32,_t=16,At=32,lr=32,Mt=32,Dt=32,wn=32,ds=ur,Aa=Rt,Ma=_t,Qe=64,lt=32,Pt=64,Sn=32,Cn=64;n.lowlevel={crypto_core_hsalsa20:nr,crypto_stream_xor:dn,crypto_stream:Zi,crypto_stream_salsa20_xor:Ji,crypto_stream_salsa20:Xi,crypto_onetimeauth:un,crypto_onetimeauth_verify:Qi,crypto_verify_16:ie,crypto_verify_32:ue,crypto_secretbox:ln,crypto_secretbox_open:hn,crypto_scalarmult:sr,crypto_scalarmult_base:or,crypto_box_beforenm:ar,crypto_box_afternm:ss,crypto_box:Ta,crypto_box_open:ka,crypto_box_keypair:is,crypto_hash:ut,crypto_sign:fs,crypto_sign_keypair:xn,crypto_sign_open:_n,crypto_secretbox_KEYBYTES:Pn,crypto_secretbox_NONCEBYTES:ur,crypto_secretbox_ZEROBYTES:Rt,crypto_secretbox_BOXZEROBYTES:_t,crypto_scalarmult_BYTES:At,crypto_scalarmult_SCALARBYTES:lr,crypto_box_PUBLICKEYBYTES:Mt,crypto_box_SECRETKEYBYTES:Dt,crypto_box_BEFORENMBYTES:wn,crypto_box_NONCEBYTES:ds,crypto_box_ZEROBYTES:Aa,crypto_box_BOXZEROBYTES:Ma,crypto_sign_BYTES:Qe,crypto_sign_PUBLICKEYBYTES:lt,crypto_sign_SECRETKEYBYTES:Pt,crypto_sign_SEEDBYTES:Sn,crypto_hash_BYTES:Cn,gf:e,D:l,L:dr,pack25519:vt,unpack25519:yn,M:ne,A:Ke,S:Le,Z:Fe,pow2523:ns,add:cr,set25519:Ze,modL:bn,scalarmult:mn,scalarbase:fr};function us(c,u){if(c.length!==Pn)throw new Error("bad key size");if(u.length!==ur)throw new Error("bad nonce size")}function Da(c,u){if(c.length!==Mt)throw new Error("bad public key size");if(u.length!==Dt)throw new Error("bad secret key size")}function Be(){for(var c=0;c<arguments.length;c++)if(!(arguments[c]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function ls(c){for(var u=0;u<c.length;u++)c[u]=0}n.randomBytes=function(c){var u=new Uint8Array(c);return t(u,c),u},n.secretbox=function(c,u,d){Be(c,u,d),us(d,u);for(var o=new Uint8Array(Rt+c.length),h=new Uint8Array(o.length),m=0;m<c.length;m++)o[m+Rt]=c[m];return ln(h,o,o.length,u,d),h.subarray(_t)},n.secretbox.open=function(c,u,d){Be(c,u,d),us(d,u);for(var o=new Uint8Array(_t+c.length),h=new Uint8Array(o.length),m=0;m<c.length;m++)o[m+_t]=c[m];return o.length<32||hn(h,o,o.length,u,d)!==0?null:h.subarray(Rt)},n.secretbox.keyLength=Pn,n.secretbox.nonceLength=ur,n.secretbox.overheadLength=_t,n.scalarMult=function(c,u){if(Be(c,u),c.length!==lr)throw new Error("bad n size");if(u.length!==At)throw new Error("bad p size");var d=new Uint8Array(At);return sr(d,c,u),d},n.scalarMult.base=function(c){if(Be(c),c.length!==lr)throw new Error("bad n size");var u=new Uint8Array(At);return or(u,c),u},n.scalarMult.scalarLength=lr,n.scalarMult.groupElementLength=At,n.box=function(c,u,d,o){var h=n.box.before(d,o);return n.secretbox(c,u,h)},n.box.before=function(c,u){Be(c,u),Da(c,u);var d=new Uint8Array(wn);return ar(d,c,u),d},n.box.after=n.secretbox,n.box.open=function(c,u,d,o){var h=n.box.before(d,o);return n.secretbox.open(c,u,h)},n.box.open.after=n.secretbox.open,n.box.keyPair=function(){var c=new Uint8Array(Mt),u=new Uint8Array(Dt);return is(c,u),{publicKey:c,secretKey:u}},n.box.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==Dt)throw new Error("bad secret key size");var u=new Uint8Array(Mt);return or(u,c),{publicKey:u,secretKey:new Uint8Array(c)}},n.box.publicKeyLength=Mt,n.box.secretKeyLength=Dt,n.box.sharedKeyLength=wn,n.box.nonceLength=ds,n.box.overheadLength=n.secretbox.overheadLength,n.sign=function(c,u){if(Be(c,u),u.length!==Pt)throw new Error("bad secret key size");var d=new Uint8Array(Qe+c.length);return fs(d,c,c.length,u),d},n.sign.open=function(c,u){if(Be(c,u),u.length!==lt)throw new Error("bad public key size");var d=new Uint8Array(c.length),o=_n(d,c,c.length,u);if(o<0)return null;for(var h=new Uint8Array(o),m=0;m<h.length;m++)h[m]=d[m];return h},n.sign.detached=function(c,u){for(var d=n.sign(c,u),o=new Uint8Array(Qe),h=0;h<o.length;h++)o[h]=d[h];return o},n.sign.detached.verify=function(c,u,d){if(Be(c,u,d),u.length!==Qe)throw new Error("bad signature size");if(d.length!==lt)throw new Error("bad public key size");var o=new Uint8Array(Qe+c.length),h=new Uint8Array(Qe+c.length),m;for(m=0;m<Qe;m++)o[m]=u[m];for(m=0;m<c.length;m++)o[m+Qe]=c[m];return _n(h,o,o.length,d)>=0},n.sign.keyPair=function(){var c=new Uint8Array(lt),u=new Uint8Array(Pt);return xn(c,u),{publicKey:c,secretKey:u}},n.sign.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==Pt)throw new Error("bad secret key size");for(var u=new Uint8Array(lt),d=0;d<u.length;d++)u[d]=c[32+d];return{publicKey:u,secretKey:new Uint8Array(c)}},n.sign.keyPair.fromSeed=function(c){if(Be(c),c.length!==Sn)throw new Error("bad seed size");for(var u=new Uint8Array(lt),d=new Uint8Array(Pt),o=0;o<32;o++)d[o]=c[o];return xn(u,d,!0),{publicKey:u,secretKey:d}},n.sign.publicKeyLength=lt,n.sign.secretKeyLength=Pt,n.sign.seedLength=Sn,n.sign.signatureLength=Qe,n.hash=function(c){Be(c);var u=new Uint8Array(Cn);return ut(u,c,c.length),u},n.hash.hashLength=Cn,n.verify=function(c,u){return Be(c,u),c.length===0||u.length===0||c.length!==u.length?!1:W(c,0,u,0,c.length)===0},n.setPRNG=function(c){t=c},(function(){var c=typeof self<"u"?self.crypto||self.msCrypto:null;if(c&&c.getRandomValues){var u=65536;n.setPRNG(function(d,o){var h,m=new Uint8Array(o);for(h=0;h<o;h+=u)c.getRandomValues(m.subarray(h,h+Math.min(o-h,u)));for(h=0;h<o;h++)d[h]=m[h];ls(m)})}else typeof En<"u"&&(c=hs(),c&&c.randomBytes&&n.setPRNG(function(d,o){var h,m=c.randomBytes(o);for(h=0;h<o;h++)d[h]=m[h];ls(m)}))})()})(typeof pr<"u"&&pr.exports?pr.exports:self.nacl=self.nacl||{})});var St=F((ps,yr)=>{(function(n,e){"use strict";typeof yr<"u"&&yr.exports?yr.exports=e():(n.nacl||(n.nacl={}),n.nacl.util=e())})(ps,function(){"use strict";var n={};function e(t){if(!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t))throw new TypeError("invalid encoding")}return n.decodeUTF8=function(t){if(typeof t!="string")throw new TypeError("expected string");var r,i=unescape(encodeURIComponent(t)),s=new Uint8Array(i.length);for(r=0;r<i.length;r++)s[r]=i.charCodeAt(r);return s},n.encodeUTF8=function(t){var r,i=[];for(r=0;r<t.length;r++)i.push(String.fromCharCode(t[r]));return decodeURIComponent(escape(i.join("")))},typeof atob>"u"?typeof Buffer.from<"u"?(n.encodeBase64=function(t){return Buffer.from(t).toString("base64")},n.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(Buffer.from(t,"base64"),0))}):(n.encodeBase64=function(t){return new Buffer(t).toString("base64")},n.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(new Buffer(t,"base64"),0))}):(n.encodeBase64=function(t){var r,i=[],s=t.length;for(r=0;r<s;r++)i.push(String.fromCharCode(t[r]));return btoa(i.join(""))},n.decodeBase64=function(t){e(t);var r,i=atob(t),s=new Uint8Array(i.length);for(r=0;r<i.length;r++)s[r]=i.charCodeAt(r);return s}),n})});var Tn=F((ul,ys)=>{var In=class{constructor(){this.handlers=new Map}on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t)}off(e,t){let r=this.handlers.get(e);r&&(r.delete(t),r.size===0&&this.handlers.delete(e))}emit(e,t){let r=this.handlers.get(e);if(r)for(let i of r)i(t)}};ys.exports=In});var Rn=F((ll,gs)=>{var ye=class ye{fastPow(e,t,r){if(r===BigInt(1))return BigInt(0);let i=BigInt(1),s=e%r,a=t;for(;a>0;)(a&BigInt(1))===BigInt(1)&&(i=i*s%r),a=a>>BigInt(1),s=s*s%r;return i}quadRes(e){return this.fastPow(e,ye.pHalf,ye.p)===BigInt(1)}modSqrtOp(e){let t,r=e;return this.quadRes(r)?t=this.fastPow(r,ye.pQuarter,ye.p):(r=(-r+ye.p)%ye.p,t=this.fastPow(r,ye.pQuarter,ye.p)),t}modOp(e,t){let r=e%ye.p;for(let i=BigInt(0);i<t;i+=BigInt(1))r=this.modSqrtOp(r);return r}modVerif(e,t,r){let i=t%ye.p,s=e;for(let a=BigInt(0);a<r;a+=BigInt(1))s=s**BigInt(2)%ye.p;return this.quadRes(s)||(s=(-s+ye.p)%ye.p),i===s||(-i+ye.p)%ye.p===s}generateProofVDF(e,t){return this.modOp(t,e)}verifyProofVDF(e,t,r){return this.modVerif(r,t,e)}};hr(ye,"p",BigInt("170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979")),hr(ye,"pHalf",ye.p-BigInt(1)>>BigInt(1)),hr(ye,"pQuarter",ye.p+BigInt(1)>>BigInt(2));var kn=ye;gs.exports=kn});var Mn=F((pl,xs)=>{var ms=Rn(),An=class{static async compute(e,t){let r=new ms,i=BigInt(`0x${e}`);return r.generateProofVDF(t,i).toString(16)}static async verify(e,t,r){let i=new ms,s=BigInt(`0x${e}`),a=BigInt(`0x${r}`);return i.verifyProofVDF(t,s,a)}};xs.exports=An});var mr=F((yl,Ts)=>{var Dn=wt(),gr=St(),{deriveBroadcastKey:vs,DEFAULT_SECURITY_OPTIONS:_s}=Ct(),Ps="dignity-signing-v1",ws="dignity-encryption-v1",Ss="dignity-cold-recovery-v1";function Cs(n){return gr.decodeUTF8(n)}function La(...n){let e=n.reduce((i,s)=>i+s.length,0),t=new Uint8Array(e),r=0;for(let i of n)t.set(i,r),r+=i.length;return t}function Es(n,e=""){if(!n||typeof n!="string")throw new Error("deriveColdRecoverySigningKey requires username");let t=["dignity-cold-recovery-v1"];return e&&t.push(e),t.push(n,Ss),Cs(t.join("\0"))}async function ja({username:n,coldPassword:e,pepper:t="",kdfIterations:r}={}){if(!e||typeof e!="string")throw new Error("deriveColdRecoverySigningKey requires coldPassword");let i=Es(n,t),s=typeof r=="number"?r:_s.kdfIterations,a=await vs(e,i,s),f=Dn.sign.keyPair.fromSeed(a);return{signing:f,recoveryPublicKey:gr.encodeBase64(f.publicKey)}}function Is(n,e,t="",r=1){if(!n||typeof n!="string")throw new Error("deriveKeyPairFromCredentials requires username");if(!e||typeof e!="string")throw new Error("deriveKeyPairFromCredentials requires info label");let i=Number(r);if(!Number.isInteger(i)||i<1)throw new Error("deriveKeyPairFromCredentials requires generation >= 1");let s=["dignity-identity-v1"];return t&&s.push(t),s.push(n,`gen:${i}`,e),Cs(s.join("\0"))}async function bs({password:n,username:e,info:t,pepper:r,generation:i,kdfIterations:s}){if(!n||typeof n!="string")throw new Error("deriveKeyPairFromCredentials requires password");let a=Is(e,t,r,i),f=typeof s=="number"?s:_s.kdfIterations;return vs(n,a,f)}async function Ga({username:n,password:e,pepper:t="",generation:r=1,kdfIterations:i}={}){let s=await bs({password:e,username:n,info:Ps,pepper:t,generation:r,kdfIterations:i}),a=await bs({password:e,username:n,info:ws,pepper:t,generation:r,kdfIterations:i});return{signing:Dn.sign.keyPair.fromSeed(s),encryption:Dn.box.keyPair.fromSecretKey(a),generation:r}}function Ka(n){return{signingPublicKey:gr.encodeBase64(n.signing.publicKey),encryptionPublicKey:gr.encodeBase64(n.encryption.publicKey)}}Ts.exports={deriveKeyPairFromCredentials:Ga,deriveColdRecoverySigningKey:ja,keyPairToPublicBundle:Ka,buildIdentitySalt:Is,buildColdRecoverySalt:Es,SIGNING_INFO:Ps,ENCRYPTION_INFO:ws,COLD_RECOVERY_INFO:Ss,concatBytes:La}});var Ut=F((gl,Gs)=>{var Rs=wt(),xr=St(),{stableStringify:As}=Ct(),{deriveKeyPairFromCredentials:br,deriveColdRecoverySigningKey:Ms,keyPairToPublicBundle:_r}=mr(),On=new Set(["compromise-recovery","password-change"]);function Ds(n){return xr.decodeUTF8(n)}function ks(n){if(!n||!n.signingPublicKey||!n.encryptionPublicKey)throw new Error("Public key bundle requires signingPublicKey and encryptionPublicKey");return{signingPublicKey:n.signingPublicKey,encryptionPublicKey:n.encryptionPublicKey}}function Os({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextPublicKey:i,rotationKind:s,reason:a,timestamp:f}){if(!n)throw new Error("Identity rotation requires username");if(!On.has(s))throw new Error(`Identity rotation kind must be one of: ${[...On].join(", ")}`);if(t!==e+1)throw new Error("Identity rotation must advance generation by exactly 1");return{version:1,type:"identity:rotate",username:n,fromGeneration:e,toGeneration:t,previousPublicKey:ks(r),nextPublicKey:ks(i),rotationKind:s,reason:a||"",timestamp:typeof f=="number"?f:Date.now()}}function vr(n,e){let t=Ds(As(n)),r=Rs.sign.detached(t,e);return xr.encodeBase64(r)}function Un(n,e,t){let r=Ds(As(n)),i=xr.decodeBase64(e),s=xr.decodeBase64(t);return Rs.sign.detached.verify(r,i,s)}function Bn({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextKeyPair:i,rotationKind:s,reason:a,timestamp:f,coldRecoverySigningSecretKey:l}){if(!i||!i.signing||!i.signing.secretKey)throw new Error("Identity rotation requires nextKeyPair with signing secret");let p=Os({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextPublicKey:_r(i),rotationKind:s,reason:a,timestamp:f}),y={...p,signature:vr(p,i.signing.secretKey)};return l&&(y.recoverySignature=vr(p,l)),y}function Us({username:n,recoveryPublicKey:e,timestamp:t}){if(!n)throw new Error("Cold recovery enrollment requires username");if(!e)throw new Error("Cold recovery enrollment requires recoveryPublicKey");return{version:1,type:"identity:cold-enroll",username:n,recoveryPublicKey:e,timestamp:typeof t=="number"?t:Date.now()}}function Bs({username:n,coldRecoverySigningSecretKey:e,recoveryPublicKey:t,timestamp:r}){if(!e)throw new Error("Cold recovery enrollment requires cold recovery signing secret");if(!t)throw new Error("Cold recovery enrollment requires recoveryPublicKey");let i=Us({username:n,recoveryPublicKey:t,timestamp:r});return{...i,signature:vr(i,e)}}function Fa(n){if(!n||n.type!=="identity:cold-enroll"||n.version!==1)return{ok:!1,error:"invalid-enrollment-shape"};if(!n.signature||!n.recoveryPublicKey)return{ok:!1,error:"missing-enrollment-fields"};let{signature:e,...t}=n;return Un(t,e,n.recoveryPublicKey)?{ok:!0,enrollment:n}:{ok:!1,error:"invalid-enrollment-signature"}}function Ls(n,e={}){if(!n||n.type!=="identity:rotate"||n.version!==1)return{ok:!1,error:"invalid-rotation-shape"};if(!n.signature||!n.nextPublicKey||!n.previousPublicKey)return{ok:!1,error:"missing-rotation-fields"};if(n.toGeneration!==n.fromGeneration+1)return{ok:!1,error:"invalid-generation-step"};if(!On.has(n.rotationKind))return{ok:!1,error:"invalid-rotation-kind"};let{signature:t,recoverySignature:r,...i}=n;if(!Un(i,t,n.nextPublicKey.signingPublicKey))return{ok:!1,error:"invalid-signature"};let a=e.requiredRecoveryPublicKey||null;if(a){if(!r)return{ok:!1,error:"missing-recovery-signature"};if(!Un(i,r,a))return{ok:!1,error:"invalid-recovery-signature"}}return n.previousPublicKey.signingPublicKey===n.nextPublicKey.signingPublicKey?{ok:!1,error:"unchanged-signing-key"}:{ok:!0,rotation:n}}async function js({username:n,coldPassword:e,pepper:t,kdfIterations:r}){return e?(await Ms({username:n,coldPassword:e,pepper:t,kdfIterations:r})).signing.secretKey:null}async function Na({username:n,password:e,coldPassword:t,currentGeneration:r=1,reason:i="compromise-recovery",pepper:s="",kdfIterations:a,timestamp:f}={}){let l=await br({username:n,password:e,generation:r,pepper:s,kdfIterations:a}),p=r+1,y=await br({username:n,password:e,generation:p,pepper:s,kdfIterations:a}),x=await js({username:n,coldPassword:t,pepper:s,kdfIterations:a});return{rotation:Bn({username:n,fromGeneration:r,toGeneration:p,previousPublicKey:_r(l),nextKeyPair:y,rotationKind:"compromise-recovery",reason:i,timestamp:f,coldRecoverySigningSecretKey:x}),currentKeyPair:l,nextKeyPair:y,nextGeneration:p,coldRecoveryUsed:!!x}}async function za({username:n,currentPassword:e,newPassword:t,coldPassword:r,currentGeneration:i=1,reason:s="password-change",pepper:a="",kdfIterations:f,timestamp:l}={}){let p=await br({username:n,password:e,generation:i,pepper:a,kdfIterations:f}),y=i+1,x=await br({username:n,password:t,generation:y,pepper:a,kdfIterations:f}),E=await js({username:n,coldPassword:r,pepper:a,kdfIterations:f});return{rotation:Bn({username:n,fromGeneration:i,toGeneration:y,previousPublicKey:_r(p),nextKeyPair:x,rotationKind:"password-change",reason:s,timestamp:l,coldRecoverySigningSecretKey:E}),currentKeyPair:p,nextKeyPair:x,nextGeneration:y,coldRecoveryUsed:!!E}}async function qa({username:n,coldPassword:e,pepper:t="",kdfIterations:r,timestamp:i}={}){let s=await Ms({username:n,coldPassword:e,pepper:t,kdfIterations:r});return{enrollment:Bs({username:n,coldRecoverySigningSecretKey:s.signing.secretKey,recoveryPublicKey:s.recoveryPublicKey,timestamp:i}),recoveryPublicKey:s.recoveryPublicKey,coldRecovery:s}}function $a(n,e,t={}){let r=t.enrolledRecoveryPublicKey||n&&n.recoveryPublicKey||null,i=Ls(e,{requiredRecoveryPublicKey:r});return i.ok?n&&e.toGeneration<=n.generation?{apply:!1,reason:"stale-generation"}:n&&n.publicKey&&n.publicKey.signingPublicKey!==e.previousPublicKey.signingPublicKey?{apply:!1,reason:"previous-key-mismatch"}:{apply:!0,rotation:i.rotation}:{apply:!1,reason:i.error}}Gs.exports={createIdentityRotation:Bn,createColdRecoveryEnrollment:Bs,verifyIdentityRotation:Ls,verifyColdRecoveryEnrollment:Fa,revokeAndRotateIdentity:Na,rotateIdentityPassword:za,enrollColdRecoveryPassword:qa,shouldApplyIdentityRotation:$a,keyPairToPublicBundle:_r,buildIdentityRotationPayload:Os,buildColdRecoveryEnrollmentPayload:Us,signIdentityRotationPayload:vr}});var Ct=F((ml,qs)=>{var Me=wt(),ge=St(),Ln=Mn(),Fs="change-this-app-password",Pr={enabled:!0,signingEnabled:!0,encryptionEnabled:!0,powEnabled:!0,powTargetMs:1e3,appPassword:Fs,broadcastPasswords:{},resolveBroadcastPassword:null,powSteps:22,trustedPeerKeys:{},kdfIterations:1e5};function Bt(n){return n===null||typeof n!="object"?JSON.stringify(n):Array.isArray(n)?`[${n.map(t=>Bt(t)).join(",")}]`:`{${Object.keys(n).sort().map(t=>`${JSON.stringify(t)}:${Bt(n[t])}`).join(",")}}`}function Ns(n,e){let t=new Uint8Array(n.length+e.length);return t.set(n,0),t.set(e,n.length),t}function wr(n){return Me.hash(n).slice(0,32)}function Ks(n){return Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")}function Lt(n){return ge.decodeUTF8(n)}async function Gn(n,e,t){let r=globalThis.crypto&&globalThis.crypto.subtle;if(r){let i=await r.importKey("raw",Lt(n),"PBKDF2",!1,["deriveBits"]),s=await r.deriveBits({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,256);return new Uint8Array(s)}try{let{pbkdf2Sync:i}=En("crypto");return new Uint8Array(i(n,Buffer.from(e),t,32,"sha256"))}catch{return wr(Ns(Lt(n),e))}}function zs(n,e){return wr(Ns(Lt(n),e))}function jn(n){if(!n||typeof n!="object")throw new Error("Public key must be an object with signingPublicKey and encryptionPublicKey");if(!n.signingPublicKey||!n.encryptionPublicKey)throw new Error("Public key object is missing signingPublicKey or encryptionPublicKey");return{signingPublicKey:n.signingPublicKey,encryptionPublicKey:n.encryptionPublicKey}}var Kn=class{constructor({nodeId:e,options:t={},now:r}={}){if(!e)throw new Error("MessageSecurityService requires nodeId");this.nodeId=e,this.options={...Pr,...t},this.now=r||(()=>Date.now());let i=t.keyPair||{signing:Me.sign.keyPair(),encryption:Me.box.keyPair()};this.signingSecretKey=i.signing.secretKey,this.signingPublicKey=i.signing.publicKey,this.encryptionSecretKey=i.encryption.secretKey,this.encryptionPublicKey=i.encryption.publicKey,this.publicKeyBundle={signingPublicKey:ge.encodeBase64(this.signingPublicKey),encryptionPublicKey:ge.encodeBase64(this.encryptionPublicKey)},this.peerPublicKeys=new Map,this.peerIdentityGenerations=new Map,this.peerRecoveryPublicKeys=new Map;for(let[s,a]of Object.entries(this.options.trustedPeerKeys||{}))this.peerPublicKeys.set(s,jn(a)),this.peerIdentityGenerations.set(s,1);this.calibratedPowSteps=this.options.powSteps}getPublicKey(){return{...this.publicKeyBundle}}registerPeerPublicKey(e,t,r={}){let i=jn(t),s=typeof r.generation=="number"?r.generation:1,a=this.peerIdentityGenerations.get(e)||0;if(s<a&&r.allowDowngrade!==!0)throw new Error(`Refusing older identity generation for peer ${e}`);this.peerPublicKeys.set(e,i),this.peerIdentityGenerations.set(e,Math.max(a,s))}getPeerIdentityGeneration(e){return this.peerIdentityGenerations.get(e)||0}getPeerIdentityState(e){let t=this.peerPublicKeys.get(e),r=this.peerRecoveryPublicKeys.get(e)||null;return!t&&!r?null:{publicKey:t?{...t}:null,generation:this.getPeerIdentityGeneration(e),recoveryPublicKey:r}}registerPeerRecoveryPublicKey(e,t){if(!e||!t)throw new Error("registerPeerRecoveryPublicKey requires peerId and recoveryPublicKey");this.peerRecoveryPublicKeys.set(e,t)}getPeerRecoveryPublicKey(e){return this.peerRecoveryPublicKeys.get(e)||null}applyColdRecoveryEnrollment(e,t){let{verifyColdRecoveryEnrollment:r}=Ut(),i=r(t);if(!i.ok){let s=new Error(`Invalid cold recovery enrollment: ${i.error}`);throw s.code="INVALID_COLD_RECOVERY_ENROLLMENT",s}return this.registerPeerRecoveryPublicKey(e,t.recoveryPublicKey),{applied:!0,recoveryPublicKey:t.recoveryPublicKey}}applyIdentityRotation(e,t){let{shouldApplyIdentityRotation:r}=Ut(),i=this.getPeerIdentityState(e),s=r(i,t,{enrolledRecoveryPublicKey:this.getPeerRecoveryPublicKey(e)});if(!s.apply){if(s.reason&&s.reason!=="stale-generation"&&s.reason!=="previous-key-mismatch"){let a=new Error(`Invalid identity rotation: ${s.reason}`);throw a.code="INVALID_IDENTITY_ROTATION",a}return{applied:!1,reason:s.reason}}return this.registerPeerPublicKey(e,t.nextPublicKey,{generation:t.toGeneration}),{applied:!0,fromGeneration:t.fromGeneration,toGeneration:t.toGeneration,rotationKind:t.rotationKind}}resolvePeerPublicKey(e,t){let r=this.peerPublicKeys.get(e),i=t?jn(t):null;if(r&&i&&(r.signingPublicKey!==i.signingPublicKey||r.encryptionPublicKey!==i.encryptionPublicKey))throw new Error(`Public key mismatch for peer ${e}`);return r||i||null}buildEnvelopeBase({messageType:e,payload:t,targetId:r=null}){return{version:1,senderId:this.nodeId,senderPublicKey:this.getPublicKey(),targetId:r,messageType:e,timestamp:this.now(),payload:t}}async secureOutgoingMessage({messageType:e,payload:t,targetId:r=null,securityContext:i={}}){if(!this.options.enabled)return this.buildEnvelopeBase({messageType:e,payload:t,targetId:r});let s=this.buildEnvelopeBase({messageType:e,payload:t,targetId:r}),a=await this.encryptPayload({payload:t,targetId:r,securityContext:i});if(s.payload=a.payload,s.security={encryption:a.security,signing:{enabled:!1},pow:{enabled:!1}},this.options.powEnabled){let f=await this.generatePow(s);s.security.pow={enabled:!0,messageHash:f.messageHash,challenge:f.challenge,proof:f.proof,steps:f.steps,durationMs:f.durationMs}}if(this.options.signingEnabled){let f=this.canonicalSigningInput(s),l=Me.sign.detached(ge.decodeUTF8(f),this.signingSecretKey);s.security.signing={enabled:!0,algorithm:"ed25519",signature:ge.encodeBase64(l)}}return s}canonicalSigningInput(e){return Bt({version:e.version,senderId:e.senderId,senderPublicKey:e.senderPublicKey,targetId:e.targetId,messageType:e.messageType,timestamp:e.timestamp,payload:e.payload,security:{encryption:e.security?e.security.encryption:{enabled:!1},pow:e.security?e.security.pow:{enabled:!1}}})}canonicalPowInput(e){return Bt({version:e.version,senderId:e.senderId,senderPublicKey:e.senderPublicKey,targetId:e.targetId,messageType:e.messageType,timestamp:e.timestamp,payload:e.payload,security:{encryption:e.security?e.security.encryption:{enabled:!1}}})}computePowMessageHash(e){return Ks(wr(Lt(this.canonicalPowInput(e))))}async decryptIncomingMessage(e){if(!this.options.enabled)return{ignored:!1,messageType:e.messageType,senderId:e.senderId,targetId:e.targetId,payload:e.payload};if(!e||typeof e!="object")throw new Error("Incoming message is invalid");if(e.targetId&&e.targetId!==this.nodeId)return{ignored:!0};e.security&&e.security.pow&&e.security.pow.enabled&&this.options.powEnabled&&await this.verifyPow(e),e.security&&e.security.signing&&e.security.signing.enabled&&this.options.signingEnabled&&this.verifySignature(e);let t=await this.decryptPayload(e);return{ignored:!1,messageType:e.messageType,senderId:e.senderId,targetId:e.targetId,payload:t}}resolveBroadcastPassword(e){let t=e||"default";if(typeof this.options.resolveBroadcastPassword=="function"){let i=this.options.resolveBroadcastPassword({scope:t,nodeId:this.nodeId,defaultPassword:this.options.appPassword,broadcastPasswords:this.options.broadcastPasswords||{}});if(typeof i=="string"&&i.length>0)return i}let r=this.options.broadcastPasswords?this.options.broadcastPasswords[t]:null;return typeof r=="string"&&r.length>0?r:this.options.appPassword}async encryptPayload({payload:e,targetId:t,securityContext:r={}}){if(!this.options.encryptionEnabled)return{payload:e,security:{enabled:!1,mode:"none"}};let i=ge.decodeUTF8(JSON.stringify(e));if(t){let E=this.resolvePeerPublicKey(t,null);if(!E)throw new Error(`Missing public key for target peer ${t}`);let G=Me.randomBytes(Me.box.nonceLength),W=Me.box(i,G,ge.decodeBase64(E.encryptionPublicKey),this.encryptionSecretKey);return{payload:ge.encodeBase64(W),security:{enabled:!0,mode:"direct",nonce:ge.encodeBase64(G),senderEncryptionPublicKey:this.publicKeyBundle.encryptionPublicKey}}}let s=r.broadcastScope||"default",a=Me.randomBytes(Me.secretbox.nonceLength),f=Me.randomBytes(16),l=this.resolveBroadcastPassword(s),p=this.options.kdfIterations||Pr.kdfIterations,y=await Gn(l,f,p),x=Me.secretbox(i,a,y);return{payload:ge.encodeBase64(x),security:{enabled:!0,mode:"broadcast",scope:s,nonce:ge.encodeBase64(a),salt:ge.encodeBase64(f),kdf:"pbkdf2",kdfIterations:p}}}async decryptPayload(e){let t=e.security?e.security.encryption:null;if(!t||!t.enabled||!this.options.encryptionEnabled)return e.payload;let r=ge.decodeBase64(e.payload);if(t.mode==="broadcast"){let i=t.scope||"default",s=this.resolveBroadcastPassword(i),a=ge.decodeBase64(t.salt),f=ge.decodeBase64(t.nonce),l;if(t.kdf==="pbkdf2"){let y=this.options.kdfIterations||Pr.kdfIterations,x=t.kdfIterations||y,E=Math.max(1e3,Math.floor(y*.1)),G=y*2;if(x<E||x>G)throw new Error(`Invalid kdfIterations: ${x}`);l=await Gn(s,a,x)}else l=zs(s,a);let p=Me.secretbox.open(r,f,l);if(!p)throw new Error("Unable to decrypt broadcast payload");return JSON.parse(ge.encodeUTF8(p))}if(t.mode==="direct"){let i=ge.decodeBase64(t.senderEncryptionPublicKey),s=ge.decodeBase64(t.nonce),a=Me.box.open(r,s,i,this.encryptionSecretKey);if(!a)throw new Error("Unable to decrypt direct payload");return JSON.parse(ge.encodeUTF8(a))}throw new Error(`Unsupported encryption mode: ${t.mode}`)}verifySignature(e){let t=this.resolvePeerPublicKey(e.senderId,e.senderPublicKey);if(!t)throw new Error(`Missing public key for sender ${e.senderId}`);let r=this.canonicalSigningInput(e);if(!Me.sign.detached.verify(ge.decodeUTF8(r),ge.decodeBase64(e.security.signing.signature),ge.decodeBase64(t.signingPublicKey))){let s=new Error(`Invalid signature for sender ${e.senderId}`);throw s.code="INVALID_SIGNATURE",s}return!0}async determinePowSteps(){if(typeof this.calibratedPowSteps=="bigint")return this.calibratedPowSteps;if(typeof this.options.powSteps=="number")return this.calibratedPowSteps=BigInt(Math.max(1,this.options.powSteps)),this.calibratedPowSteps;let e=Math.max(1,Number(this.options.powTargetMs||1)),t=Ks(wr(Lt(`probe:${this.nodeId}:${this.now()}`))),r=BigInt(2),i=this.now();await Ln.compute(t,r);let s=Math.max(1,this.now()-i),a=Math.max(1,Math.round(e/s*Number(r)));return this.calibratedPowSteps=BigInt(a),this.calibratedPowSteps}async generatePow(e){let t=this.computePowMessageHash(e),r=t,i=await this.determinePowSteps(),s=this.now(),a=await Ln.compute(r,i),f=this.now()-s;return{messageHash:t,challenge:r,proof:a,steps:i.toString(),durationMs:f}}async verifyPow(e){let t=this.computePowMessageHash(e),r=e.security.pow;if(!r||!r.messageHash||r.messageHash!==t||r.challenge!==r.messageHash){let s=new Error("PoW challenge mismatch");throw s.code="INVALID_POW",s}if(!await Ln.verify(r.messageHash,BigInt(r.steps),r.proof)){let s=new Error("PoW verification failed");throw s.code="INVALID_POW",s}return!0}};qs.exports={MessageSecurityService:Kn,stableStringify:Bt,deriveBroadcastKey:Gn,legacyBroadcastKey:zs,DEFAULT_SECURITY_OPTIONS:Pr,DEFAULT_APP_PASSWORD:Fs}});var Nn=F((xl,$s)=>{var Sr="gossip:",Ha={fanout:3,maxActivePeers:8,maxHops:64,relayEnabled:!0};function Va(n){if(!n)throw new Error("peerGroupScope requires groupId");return`${Sr}${n}`}function Wa(n){return!n||!n.startsWith(Sr)?null:n.slice(Sr.length)}function Fn(n,e=Math.random){let t=[...n];for(let r=t.length-1;r>0;r-=1){let i=Math.floor(e()*(r+1));[t[r],t[i]]=[t[i],t[r]]}return t}function Ya({peers:n,count:e,excludePeerIds:t=[],connectedPeerIds:r=[],randomFn:i=Math.random}){let s=new Set(t.filter(Boolean)),a=n.map(x=>x.peerId||x).filter(x=>x&&!s.has(x)),f=new Set(r.filter(Boolean)),l=a.filter(x=>f.has(x)),p=a.filter(x=>!f.has(x));return[...Fn(l,i),...Fn(p,i)].slice(0,Math.max(0,e))}$s.exports={PEER_GROUP_SCOPE_PREFIX:Sr,DEFAULT_PEER_GROUP_OPTIONS:Ha,peerGroupScope:Va,parsePeerGroupScope:Wa,shufflePeerIds:Fn,selectFanoutPeers:Ya}});var Tr=F((bl,Js)=>{var Cr=wt(),ht=St(),{stableStringify:Vs}=Ct(),Er=1,Ws={create:"record:created",update:"record:updated",delete:"record:removed","transfer-ownership":"ownership:transferred"};function Hs(n){let e=Vs(n||{}),t=ht.decodeUTF8(e),r=Cr.hash(t);return`sha512:${Array.from(r,s=>s.toString(16).padStart(2,"0")).join("")}`}function Ja(n){return Vs({schemaVersion:n.schemaVersion,eventId:n.eventId,groupId:n.groupId,publisherId:n.publisherId,kind:n.kind,collectionName:n.collectionName,id:n.id,payload:n.payload,timestamp:n.timestamp,baseVersion:n.baseVersion,prevHash:n.prevHash||null,newOwnerId:n.newOwnerId||null})}function Ir(n){let e=Ja(n),t=ht.decodeUTF8(e),r=Cr.hash(t);return`sha512:${Array.from(r,s=>s.toString(16).padStart(2,"0")).join("")}`}function Xa(n,{publisherId:e,groupId:t,prevHash:r,eventIdGenerator:i}){if(!n||!e||!t)throw new Error("operationToDomainEvent requires operation, publisherId, and groupId");let s=Ws[n.kind];if(!s)throw new Error(`Unsupported operation kind for domain event: ${n.kind}`);let a={schemaVersion:Er,eventId:i?i():`${Date.now()}-${Math.random().toString(16).slice(2)}`,groupId:t,publisherId:e,kind:s,collectionName:n.collectionName,id:n.id,payload:n.payload||{},timestamp:n.timestamp,baseVersion:n.baseVersion||null,prevHash:r||null,newOwnerId:n.newOwnerId||null,eventHash:null,signature:null};return a.eventHash=Ir(a),a}function Za(n,e){if(!e)return{...n};let t={...n,signature:null},r=Ir(t),i=Cr.sign.detached(ht.decodeUTF8(r),e);return{...t,eventHash:r,signature:ht.encodeBase64(i)}}function zn(n,e){if(!n||!n.eventHash)return{ok:!1,reason:"missing-event-hash"};if(Ir({...n,signature:null})!==n.eventHash)return{ok:!1,reason:"event-hash-mismatch"};if(!n.signature)return{ok:!0,unsigned:!0};if(!e)return{ok:!1,reason:"missing-public-key"};let r=typeof e=="string"?ht.decodeBase64(e):e;return Cr.sign.detached.verify(ht.decodeUTF8(n.eventHash),ht.decodeBase64(n.signature),r)?{ok:!0}:{ok:!1,reason:"invalid-signature"}}function Qa(n,{signingPublicKey:e,supportedVersions:t}={}){return!n||typeof n!="object"?{ok:!1,reason:"invalid-event"}:(t||[Er]).includes(n.schemaVersion)?!n.eventId||!n.groupId||!n.publisherId||!n.kind?{ok:!1,reason:"missing-required-fields"}:zn(n,e):{ok:!1,reason:"unsupported-schema-version",schemaVersion:n.schemaVersion}}function ec(n=[]){let e=new Map;for(let t of n)e.set(t,new Map);return e}function tc(n,e){return n.has(e)||n.set(e,new Map),n.get(e)}function rc(n,e,{collectionsFilter:t}={}){if(!e||!e.collectionName)return{applied:!1,reason:"invalid-event"};if(Array.isArray(t)&&t.length>0&&!t.includes(e.collectionName))return{applied:!1,reason:"collection-filtered"};let r=tc(n,e.collectionName);if(e.kind==="record:created")return r.has(e.id)?{applied:!1,reason:"already-exists"}:(r.set(e.id,{id:e.id,ownerId:e.publisherId,data:{...e.payload||{}},hash:Hs(e.payload||{}),createdAt:e.timestamp,updatedAt:e.timestamp,deletedAt:null,version:1}),{applied:!0,kind:e.kind});let i=r.get(e.id);return!i||i.deletedAt?e.kind==="record:removed"?{applied:!1,reason:"not-found"}:{applied:!1,reason:"missing-record"}:e.kind==="record:updated"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.data={...i.data,...e.payload||{}},i.hash=Hs(i.data),i.updatedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):e.kind==="record:removed"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.deletedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):e.kind==="ownership:transferred"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.ownerId=e.newOwnerId,i.updatedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):{applied:!1,reason:"unknown-kind"}}function Ys(n,{genesisHash:e=null}={}){if(!Array.isArray(n)||n.length===0)return{ok:!0,length:0};let t=e;for(let r=0;r<n.length;r+=1){let i=n[r],s=i.prevHash||null;if(s!==t)return{ok:!1,reason:"chain-break",index:r,expectedPrev:t,actualPrev:s};let a=zn(i,null);if(!a.ok)return{ok:!1,reason:a.reason,index:r};t=i.eventHash}return{ok:!0,length:n.length,lastHash:t}}function nc(n,e,{publisherId:t}={}){let r=Ys(e);return{schemaVersion:Er,groupId:n,publisherId:t||null,lastEventHash:r.lastHash||null,recordCount:e.length,timestamp:Date.now()}}Js.exports={DOMAIN_EVENT_SCHEMA_VERSION:Er,OPERATION_KIND_TO_EVENT_KIND:Ws,computeEventHash:Ir,operationToDomainEvent:Xa,signDomainEvent:Za,verifyDomainEvent:Qa,verifyDomainEventSignature:zn,createEmptyView:ec,applyDomainEventToView:rc,verifyEventChain:Ys,buildCheckpoint:nc}});var Rr=F((vl,Xs)=>{function ic({joinIndex:n,liveCap:e=5e3,requestedTier:t,role:r}){return r==="publisher"?"live":t==="live"||t==="bulk"?t==="live"&&n>=e?"bulk":t:n<e?"live":"bulk"}function kr(n){return n?.metadata?.peerGroupTier||n?.peerGroupTier||null}function sc(n,e){return e?n.filter(t=>kr(t)===e):n}function oc(n){return n.filter(e=>kr(e)==="live").length}function ac(n){return n.filter(e=>kr(e)==="bulk").length}Xs.exports={DEFAULT_LIVE_CAP:5e3,DEFAULT_BULK_INTERVAL_MS:3e4,assignPeerGroupTier:ic,getPeerTier:kr,filterPeersByTier:sc,countLivePeers:oc,countBulkPeers:ac}});var qn=F((_l,Qs)=>{var{getPeerTier:cc}=Rr(),Zs=3;function fc(n,{count:e=Zs}={}){return n.filter(r=>cc(r)==="bulk").map(r=>r.peerId||r).filter(Boolean).sort().slice(0,Math.max(0,e))}function dc(n){return n?.bulkRelay===!0}function uc(n,e){let t=new Set(e);return n.map(r=>({...r,metadata:{...r.metadata||{},bulkRelay:t.has(r.peerId)}}))}Qs.exports={DEFAULT_BULK_RELAY_COUNT:Zs,electBulkRelays:fc,isBulkRelay:dc,applyBulkRelayFlags:uc}});var no=F((Pl,ro)=>{var lc=wt(),Hn=St(),hc=Tn(),{MessageSecurityService:pc,stableStringify:yc,DEFAULT_APP_PASSWORD:gc}=Ct(),{revokeAndRotateIdentity:mc,rotateIdentityPassword:xc,enrollColdRecoveryPassword:bc}=Ut(),{deriveKeyPairFromCredentials:vc}=mr(),{DEFAULT_PEER_GROUP_OPTIONS:$n,peerGroupScope:_c,parsePeerGroupScope:Pc,selectFanoutPeers:wc}=Nn(),{operationToDomainEvent:Sc,signDomainEvent:Cc,verifyDomainEvent:Ec,applyDomainEventToView:Ic,createEmptyView:eo,buildCheckpoint:Tc}=Tr(),{DEFAULT_LIVE_CAP:kc,DEFAULT_BULK_INTERVAL_MS:Rc,assignPeerGroupTier:to,filterPeersByTier:Ac}=Rr(),{electBulkRelays:Mc}=qn();function jt(n){let e=yc(n||{}),t=Hn.decodeUTF8(e),r=lc.hash(t);return`sha512:${Array.from(r,s=>s.toString(16).padStart(2,"0")).join("")}`}var Vn=class extends hc{constructor({nodeId:e,networkAdapter:t,idGenerator:r,now:i,security:s}={}){if(super(),!e)throw new Error("DignityP2P requires nodeId");if(!t)throw new Error("DignityP2P requires networkAdapter");this.nodeId=e,this.networkAdapter=t,this.idGenerator=r||(()=>`${Date.now()}-${Math.random().toString(16).slice(2)}`),this.now=i||(()=>Date.now()),this.securityService=new pc({nodeId:this.nodeId,options:s||{},now:this.now}),this.bannedPeers=new Map,this.peerBanDurationMs=s&&typeof s.banDurationMs=="number"?s.banDurationMs:2880*60*1e3,this.resolveBroadcastScope=s&&typeof s.resolveBroadcastScope=="function"?s.resolveBroadcastScope:(()=>"default"),this.defaultDiscoveryHeartbeatMs=s&&typeof s.discoveryHeartbeatMs=="number"?s.discoveryHeartbeatMs:15e3,this.defaultPresenceTtlMs=s&&typeof s.presenceTtlMs=="number"?s.presenceTtlMs:45e3,this.discoveryRooms=new Map,this.presenceByScope=new Map,this.peerGroups=new Map,this.seenGossipIds=new Map,this.defaultPeerGroupFanout=s&&typeof s.peerGroupFanout=="number"?s.peerGroupFanout:$n.fanout,this.defaultPeerGroupMaxActivePeers=s&&typeof s.peerGroupMaxActivePeers=="number"?s.peerGroupMaxActivePeers:$n.maxActivePeers,this.defaultGossipMaxHops=s&&typeof s.gossipMaxHops=="number"?s.gossipMaxHops:$n.maxHops,this.globalMaxOpenConnections=s&&typeof s.globalMaxOpenConnections=="number"?s.globalMaxOpenConnections:32,this.gossipIdTtlMs=s&&typeof s.gossipIdTtlMs=="number"?s.gossipIdTtlMs:300*1e3,this.maxSeenGossipIds=s&&typeof s.maxSeenGossipIds=="number"?s.maxSeenGossipIds:1e5,this.gossipPublishMinIntervalMs=s&&typeof s.gossipPublishMinIntervalMs=="number"?s.gossipPublishMinIntervalMs:0,this.lastGossipPublishAt=new Map,this.maxAppliedOperations=s&&typeof s.maxAppliedOperations=="number"?s.maxAppliedOperations:5e4,this.domainEventLogs=new Map,this.lastEventHashByGroup=new Map,this.bulkRelayByGroup=new Map,this.replicaViews=new Map,this.state=new Map,this.appliedOperations=new Map,this.boundMessageHandler=this.handleIncomingMessage.bind(this)}async start(){this.networkAdapter.onMessage(this.boundMessageHandler),await this.networkAdapter.start(this.nodeId);let e=this.securityService.options.appPassword;(!e||e===gc)&&this.emit("warning",{type:"default-app-password",message:"Using the default appPassword is insecure; set a strong shared secret in production."})}async stop(){let e=Array.from(this.peerGroups.keys());for(let r of e)try{await this.leavePeerGroup(r)}catch(i){this.emit("warning",{type:"peer-group-leave-failed",groupId:r,error:i})}let t=Array.from(this.discoveryRooms.keys());for(let r of t)try{await this.leaveDiscovery(r)}catch(i){this.emit("warning",{type:"presence-leave-failed",scope:r,error:i})}this.networkAdapter.offMessage(this.boundMessageHandler),await this.networkAdapter.stop()}getCollection(e){if(!e)throw new Error("collectionName is required");return this.state.has(e)||this.state.set(e,new Map),this.state.get(e)}normalizeRecord(e){if(!e||e.deletedAt)return null;let t={...e.data||{}};return{id:e.id,ownerId:e.ownerId,collaboratorIds:Array.isArray(e.collaboratorIds)?[...e.collaboratorIds]:[],createdAt:e.createdAt,updatedAt:e.updatedAt,version:e.version,hash:e.hash||jt(t),data:t}}canUpdateRecord(e,t){return!e||!t?!1:e.ownerId===t?!0:Array.isArray(e.collaboratorIds)&&e.collaboratorIds.includes(t)}normalizeCollaboratorIds(e){return Array.isArray(e)?[...new Set(e.filter(Boolean))]:[]}getRecordPeerIds(e,t,r={}){let i=r.fromRecord||this.getCollection(e).get(t);if(!i)return[];let s=r.includeSelf===!0,a=[i.ownerId,...i.collaboratorIds||[]];return[...new Set(a.filter(Boolean).filter(f=>s||f!==this.nodeId))]}resolveReplicationPeers(e,t,r={},i={}){if(r.connectToPeers===!1)return;if(Array.isArray(r.connectToPeers))return r.connectToPeers;let s=new Set;if(i.fromRecord)for(let a of this.getRecordPeerIds(e,t,{fromRecord:i.fromRecord,includeSelf:!0}))s.add(a);else if(t)for(let a of this.getRecordPeerIds(e,t,{includeSelf:!0}))s.add(a);if(Array.isArray(r.collaborators))for(let a of this.normalizeCollaboratorIds(r.collaborators))s.add(a);if(Array.isArray(i.extraPeerIds))for(let a of i.extraPeerIds)a&&s.add(a);return[...s].filter(a=>a&&a!==this.nodeId)}async create(e,t,r={}){let i=this.getCollection(e),s=r.id||this.idGenerator();if(i.has(s)&&!i.get(s).deletedAt)throw new Error(`Object ${s} already exists in ${e}`);let a=this.now(),f=this.normalizeCollaboratorIds(r.collaborators),l={opId:this.idGenerator(),kind:"create",collectionName:e,id:s,actorId:this.nodeId,ownerId:this.nodeId,collaboratorIds:f,timestamp:a,payload:{...t||{}}};return this.applyOperation(l),await this.maybePublishDomainEvent(l,r),await this.broadcastMessage("operation",l,{broadcastScope:r.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:l,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,null,r,{extraPeerIds:r.collaborators})}),this.read(e,s)}read(e,t){let r=this.getCollection(e);return this.normalizeRecord(r.get(t))}list(e,t={}){let r=this.getCollection(e),i=t.includeDeleted||!1,s=[];for(let a of r.values())if(!(a.deletedAt&&!i)){if(a.deletedAt&&i){s.push({id:a.id,ownerId:a.ownerId,deletedAt:a.deletedAt,version:a.version});continue}s.push(this.normalizeRecord(a))}return s}async update(e,t,r,i={}){let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(!this.canUpdateRecord(s,this.nodeId))throw new Error(`Only owner ${s.ownerId} or collaborators can update object ${t}`);if(i.collaborators!==void 0&&s.ownerId!==this.nodeId)throw new Error(`Only owner ${s.ownerId} can change collaborators on object ${t}`);if(typeof i.expectedVersion=="number"&&s.version!==i.expectedVersion){this.emitConflict({kind:"update",collection:e,id:t,expectedVersion:i.expectedVersion,currentVersion:s.version,phase:"local"});let f=new Error(`Version conflict on ${e}/${t}: expected ${i.expectedVersion}, current ${s.version}`);throw f.code="VERSION_CONFLICT",f}let a={opId:this.idGenerator(),kind:"update",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:s.version,payload:{...r}};return i.collaborators!==void 0&&(a.collaboratorIds=this.normalizeCollaboratorIds(i.collaborators)),this.applyOperation(a),await this.maybePublishDomainEvent(a,i),await this.broadcastMessage("operation",a,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:a,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,i,{fromRecord:s})}),this.read(e,t)}async updateWithRetry(e,t,r,i={}){let s=typeof i.maxAttempts=="number"?i.maxAttempts:5;for(let a=0;a<s;a+=1){let f=this.read(e,t);if(!f)throw new Error(`Object ${t} does not exist in ${e}`);let l=await r(f);try{return await this.update(e,t,l,{...i,expectedVersion:f.version})}catch(p){if(p.code!=="VERSION_CONFLICT"||a===s-1)throw p}}throw new Error(`Unable to update ${e}/${t} after ${s} attempts`)}async transferOwnership(e,t,r,i={}){if(!r)throw new Error("newOwnerId is required");let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(s.ownerId!==this.nodeId)throw new Error(`Only owner ${s.ownerId} can transfer object ${t}`);let a={opId:this.idGenerator(),kind:"transfer-ownership",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:s.version,newOwnerId:r,keepPreviousOwnerAsCollaborator:i.keepAsCollaborator!==!1};return this.applyOperation(a),await this.maybePublishDomainEvent(a,i),await this.broadcastMessage("operation",a,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:a,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,i,{fromRecord:s,extraPeerIds:[r]})}),this.read(e,t)}async remove(e,t,r={}){let i=this.getCollection(e).get(t);if(!i||i.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(i.ownerId!==this.nodeId)throw new Error(`Only owner ${i.ownerId} can delete object ${t}`);let s={opId:this.idGenerator(),kind:"delete",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:i.version};this.applyOperation(s),await this.maybePublishDomainEvent(s,r),await this.broadcastMessage("operation",s,{broadcastScope:r.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:s,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,r,{fromRecord:i})})}registerPeerPublicKey(e,t,r={}){this.securityService.registerPeerPublicKey(e,t,r)}getPeerIdentityGeneration(e){return this.securityService.getPeerIdentityGeneration(e)}getPeerIdentityState(e){return this.securityService.getPeerIdentityState(e)}applyPeerIdentityRotation(e,t){let r=this.securityService.applyIdentityRotation(e,t);return r.applied&&this.emit("identityrotated",{peerId:e,username:t.username,fromGeneration:r.fromGeneration,toGeneration:r.toGeneration,rotationKind:r.rotationKind}),r}async broadcastIdentityRotation(e,t={}){return this.broadcastMessage("identity:rotate",e,t)}async broadcastColdRecoveryEnrollment(e,t={}){return this.broadcastMessage("identity:cold-enroll",e,t)}applyPeerColdRecoveryEnrollment(e,t){let r=this.securityService.applyColdRecoveryEnrollment(e,t);return r.applied&&this.emit("coldrecoveryenrolled",{peerId:e,username:t.username,recoveryPublicKey:t.recoveryPublicKey}),r}async enrollAndBroadcastColdRecovery({username:e,coldPassword:t,pepper:r="",kdfIterations:i,broadcastOptions:s={}}={}){let a=await bc({username:e,coldPassword:t,pepper:r,kdfIterations:i});return await this.broadcastColdRecoveryEnrollment(a.enrollment,s),a}async revokeAndRotateDerivedIdentity({username:e,password:t,coldPassword:r,currentGeneration:i=1,reason:s="compromise-recovery",pepper:a="",kdfIterations:f,broadcast:l=!1,broadcastOptions:p={}}={}){let y=await mc({username:e,password:t,coldPassword:r,currentGeneration:i,reason:s,pepper:a,kdfIterations:f});return l&&await this.broadcastIdentityRotation(y.rotation,p),y}async rotateDerivedIdentityPassword({username:e,currentPassword:t,newPassword:r,coldPassword:i,currentGeneration:s=1,reason:a="password-change",pepper:f="",kdfIterations:l,broadcast:p=!1,broadcastOptions:y={}}={}){let x=await xc({username:e,currentPassword:t,newPassword:r,coldPassword:i,currentGeneration:s,reason:a,pepper:f,kdfIterations:l});return p&&await this.broadcastIdentityRotation(x.rotation,y),x}async adoptDerivedIdentityKeyPair(e,{generation:t=1}={}){if(!e||!e.signing||!e.encryption)throw new Error("adoptDerivedIdentityKeyPair requires a derived keyPair");this.securityService.signingSecretKey=e.signing.secretKey,this.securityService.signingPublicKey=e.signing.publicKey,this.securityService.encryptionSecretKey=e.encryption.secretKey,this.securityService.encryptionPublicKey=e.encryption.publicKey,this.securityService.publicKeyBundle={signingPublicKey:Hn.encodeBase64(e.signing.publicKey),encryptionPublicKey:Hn.encodeBase64(e.encryption.publicKey)},this.securityService.options.keyPair=e,this.securityService.options.identityGeneration=t}async deriveAndAdoptIdentity({username:e,password:t,generation:r=1,pepper:i="",kdfIterations:s}={}){let a=await vc({username:e,password:t,generation:r,pepper:i,kdfIterations:s});return await this.adoptDerivedIdentityKeyPair(a,{generation:r}),a}trustPeerPublicKey(e,t){if(!e||!t)return!1;try{return this.registerPeerPublicKey(e,t),!0}catch(r){return this.emit("warning",{type:"peer-key-trust-failed",peerId:e,error:r}),!1}}trustPeerFromMetadata(e,t){return!t||!t.publicKey?!1:this.trustPeerPublicKey(e,t.publicKey)}getPublicKey(){return this.securityService.getPublicKey()}async connectToPeer(e){if(!e||e===this.nodeId)return null;if(typeof this.networkAdapter.connectToPeer!="function")throw new Error("Network adapter does not support connectToPeer");return this.networkAdapter.connectToPeer(e)}getConnectionStats(){let e=this.networkAdapter;if(!e)return{openCount:0,peerIds:[]};let t=typeof e.listOpenPeerIds=="function"?e.listOpenPeerIds():[];return{openCount:typeof e.getOpenConnectionCount=="function"?e.getOpenConnectionCount():t.length,peerIds:t}}async ensureConnectedToPeers(e=[]){let t=[...new Set((e||[]).filter(Boolean))],r=[];for(let i of t)if(i!==this.nodeId)try{await this.connectToPeer(i),r.push({peerId:i,ok:!0})}catch(s){this.emit("warning",{type:"peer-connect-failed",peerId:i,error:s}),r.push({peerId:i,ok:!1,error:s})}return r}async broadcastMessage(e,t,r={}){let i=r.connectToPeers;Array.isArray(i)&&i.length>0&&(await this.ensureConnectedToPeers(i),await this.enforceConnectionBudget());let s=await this.securityService.secureOutgoingMessage({messageType:e,payload:t,targetId:null,securityContext:r}),a=r.fanoutPeerIds;if(Array.isArray(a)&&a.length>0&&typeof this.networkAdapter.sendToPeers=="function"){await this.networkAdapter.sendToPeers(s,a);return}await this.networkAdapter.broadcast(s)}async sendDirectMessage(e,t,r){if(e)try{await this.connectToPeer(e)}catch(s){this.emit("warning",{type:"direct-message-connect-failed",targetId:e,error:s})}let i=await this.securityService.secureOutgoingMessage({messageType:t,payload:r,targetId:e});if(e&&typeof this.networkAdapter.sendToPeers=="function"){await this.networkAdapter.sendToPeers(i,[e]);return}await this.networkAdapter.broadcast(i)}peerGroupScopeFor(e){return _c(e)}getPeerGroupConfig(e){return this.peerGroups.get(e)||null}listPeerGroupMembers(e,t={}){return this.listPeers(this.peerGroupScopeFor(e),t)}getPeerGroupStats(){let e=this.networkAdapter,t=typeof e.listOpenPeerIds=="function"?e.listOpenPeerIds():[];return{joinedGroups:Array.from(this.peerGroups.keys()),seenGossipCount:this.seenGossipIds.size,openConnectionCount:t.length,globalMaxOpenConnections:this.globalMaxOpenConnections}}pruneSeenGossip(){let e=this.now();for(let[t,r]of this.seenGossipIds.entries())r<=e&&this.seenGossipIds.delete(t);for(;this.seenGossipIds.size>this.maxSeenGossipIds;){let t=this.seenGossipIds.keys().next().value;if(!t)break;this.seenGossipIds.delete(t)}}hasSeenGossip(e){return e?(this.pruneSeenGossip(),this.seenGossipIds.has(e)):!1}markSeenGossip(e){e&&(this.seenGossipIds.set(e,this.now()+this.gossipIdTtlMs),this.pruneSeenGossip())}listConnectedPeerIds(){return typeof this.networkAdapter.listOpenPeerIds=="function"?this.networkAdapter.listOpenPeerIds():[]}selectPeerGroupFanout(e,t,r=[],i={}){let s=this.peerGroupScopeFor(e),a=this.peerGroups.get(e),f=this.listPeers(s,{includeSelf:!1});return a&&a.tiered&&i.tier&&(f=Ac(f,i.tier)),i.bulkRelayOnly&&(f=f.filter(l=>l.metadata?.bulkRelay===!0)),wc({peers:f,count:t,excludePeerIds:[...r,this.nodeId],connectedPeerIds:this.listConnectedPeerIds()})}async enforceConnectionBudget(){let e=this.networkAdapter;if(typeof e.listOpenPeerIds!="function"||typeof e.disconnectPeer!="function")return;let t=e.listOpenPeerIds();if(t.length<=this.globalMaxOpenConnections)return;let r=t.length-this.globalMaxOpenConnections,i=t.slice(0,r);for(let s of i)try{await e.disconnectPeer(s)}catch(a){this.emit("warning",{type:"peer-disconnect-failed",peerId:s,error:a})}}async joinPeerGroup(e,t={}){if(!e)throw new Error("joinPeerGroup requires groupId");let r=this.peerGroupScopeFor(e),i=t.role||t.metadata?.role||"subscriber",s=t.tierMode||"auto",a=t.tiered===!0||t.tierMode!==void 0||t.role!==void 0||typeof t.liveCap=="number",f=typeof t.liveCap=="number"?t.liveCap:kc,p=this.listPeerGroupMembers(e,{includeSelf:!1}).filter(G=>(G.metadata?.peerGroupRole||G.metadata?.role)!=="publisher").length,y=a?to({joinIndex:p,liveCap:f,requestedTier:s==="auto"?null:s,role:i}):null,x=t.publisherId||(i==="publisher"?this.nodeId:null),E={fanout:typeof t.fanout=="number"?t.fanout:this.defaultPeerGroupFanout,maxActivePeers:typeof t.maxActivePeers=="number"?t.maxActivePeers:this.defaultPeerGroupMaxActivePeers,maxHops:typeof t.maxHops=="number"?t.maxHops:this.defaultGossipMaxHops,relayEnabled:t.relayEnabled!==!1,tiered:a,tierMode:s,liveCap:f,bulkIntervalMs:typeof t.bulkIntervalMs=="number"?t.bulkIntervalMs:Rc,domainEvents:t.domainEvents!==!1,autoPublishDomainEvents:t.autoPublishDomainEvents!==!1,role:i,publisherId:x,commandCapable:t.commandCapable!==!1,peerGroupTier:y};return await this.joinDiscovery(r,{metadata:{peerGroup:e,...y?{peerGroupTier:y}:{},peerGroupRole:i,...x?{publisherId:x}:{},bulkRelay:!1,...t.metadata||{}},bootstrapPeerIds:t.bootstrapPeerIds,heartbeatIntervalMs:t.heartbeatIntervalMs,ttlMs:t.ttlMs}),this.peerGroups.set(e,E),this.domainEventLogs.has(e)||this.domainEventLogs.set(e,[]),this.replicaViews.has(e)||this.replicaViews.set(e,eo()),this.refreshBulkRelays(e),a&&s==="auto"&&i==="subscriber"&&(y=this.recalculateOwnPeerGroupTier(e)||y,E.peerGroupTier=y),this.emit("peergroupjoined",{groupId:e,config:E,tier:y}),E}recalculateOwnPeerGroupTier(e){let t=this.peerGroups.get(e);if(!t||!t.tiered||t.role!=="subscriber")return t?t.peerGroupTier:null;if(t.tierMode!=="auto")return t.peerGroupTier;let r=this.peerGroupScopeFor(e),a=this.listPeerGroupMembers(e,{includeSelf:!0}).filter(p=>(p.metadata?.peerGroupRole||p.metadata?.role)!=="publisher").map(p=>p.peerId).sort().indexOf(this.nodeId);if(a<0)return t.peerGroupTier;let f=to({joinIndex:a,liveCap:t.liveCap,requestedTier:null,role:"subscriber"});if(f===t.peerGroupTier)return f;t.peerGroupTier=f;let l=this.discoveryRooms.get(r);return l&&(l.metadata={...l.metadata||{},peerGroupTier:f},this.upsertPresence(r,this.nodeId,l.metadata,l.ttlMs,this.now()),this.announcePresence(r).catch(p=>{this.emit("warning",{type:"tier-announce-failed",groupId:e,error:p})})),f}async leavePeerGroup(e){if(!e)return;let t=this.peerGroupScopeFor(e);await this.leaveDiscovery(t),this.peerGroups.delete(e),this.bulkRelayByGroup.delete(e),this.emit("peergroupleft",{groupId:e})}async publishToPeerGroup(e,t,r,i={}){if(!e)throw new Error("publishToPeerGroup requires groupId");let s=this.peerGroups.get(e);if(!s&&i.allowUnjoined!==!0)throw new Error(`PeerGroup ${e} has not been joined`);if(this.gossipPublishMinIntervalMs>0){let E=this.lastGossipPublishAt.get(e)||0;if(this.now()-E<this.gossipPublishMinIntervalMs){let W=new Error(`Gossip publish rate limit exceeded for group ${e}`);throw W.code="GOSSIP_RATE_LIMIT",W}}let a=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,f=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,l=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p={};s&&s.tiered&&i.tier!=="bulk"&&(p.tier=i.tier||"live");let y=this.selectPeerGroupFanout(e,a,[this.nodeId],p);y.length>0&&(await this.ensureConnectedToPeers(y.slice(0,f)),await this.enforceConnectionBudget());let x=i.gossipId||this.idGenerator();return this.markSeenGossip(x),this.lastGossipPublishAt.set(e,this.now()),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:x,publisherId:this.nodeId,hop:0,maxHop:l,innerMessageType:t,innerPayload:r},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:y}),{gossipId:x,fanoutPeerIds:y}}async publishPeerGroupBulk(e,t,r,i={}){let s=this.peerGroups.get(e);if(!s&&i.allowUnjoined!==!0)throw new Error(`PeerGroup ${e} has not been joined`);if(s&&s.role!=="publisher")throw new Error(`Only publisher can bulk-publish to PeerGroup ${e}`);let a=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,f=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,l=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p=this.selectPeerGroupFanout(e,a,[this.nodeId],{tier:"bulk",bulkRelayOnly:s?.tiered===!0});p.length>0&&(await this.ensureConnectedToPeers(p.slice(0,f)),await this.enforceConnectionBudget());let y=i.gossipId||this.idGenerator();return this.markSeenGossip(y),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:y,publisherId:this.nodeId,hop:0,maxHop:l,deliveryTier:"bulk",innerMessageType:t,innerPayload:r},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:p}),{gossipId:y,fanoutPeerIds:p}}async publishPeerGroupCheckpoint(e,t={}){let r=this.peerGroups.get(e);if(!r)throw new Error(`PeerGroup ${e} has not been joined`);let i=this.domainEventLogs.get(e)||[],s=Tc(e,i,{publisherId:t.publisherId||r.publisherId||this.nodeId});return await this.publishPeerGroupBulk(e,"domain:checkpoint",s,t),this.emit("checkpointpublished",{groupId:e,checkpoint:s}),s}resolvePublisherGroupIds(e={}){if(e.peerGroupId)return[e.peerGroupId];let t=[];for(let[r,i]of this.peerGroups.entries())i.domainEvents&&i.autoPublishDomainEvents&&i.role==="publisher"&&t.push(r);return t}async maybePublishDomainEvent(e,t={}){let r=this.resolvePublisherGroupIds(t);if(r.length!==0)for(let i of r)await this.publishDomainEventForOperation(i,e)}async publishDomainEventForOperation(e,t){let r=this.peerGroups.get(e);if(!r||!r.domainEvents)return null;if(r.role!=="publisher")throw new Error(`Only publisher can emit domain events for PeerGroup ${e}`);let i=this.lastEventHashByGroup.get(e)||null,s=Sc(t,{publisherId:this.nodeId,groupId:e,prevHash:i,eventIdGenerator:()=>this.idGenerator()});this.securityService.options.signingEnabled&&this.securityService.signingSecretKey&&(s=Cc(s,this.securityService.signingSecretKey));let a=this.domainEventLogs.get(e)||[];return a.push(s),this.domainEventLogs.set(e,a),this.lastEventHashByGroup.set(e,s.eventHash),this.emit("domainevent",s),r.autoPublishDomainEvents&&(await this.publishToPeerGroup(e,"domain:event",s,{tier:"live"}),r.tiered&&await this.publishPeerGroupBulk(e,"domain:event",s)),s}refreshBulkRelays(e){let t=this.peerGroups.get(e);if(!t||!t.tiered)return[];let r=this.listPeerGroupMembers(e,{includeSelf:!1}),i=Mc(r),s=this.bulkRelayByGroup.get(e)||[];return this.bulkRelayByGroup.set(e,i),(s.length!==i.length||s.some((f,l)=>f!==i[l]))&&this.emit("bulkrelaychanged",{groupId:e,relays:i,previous:s}),i}ingestRemoteDomainEvent(e,t={}){let r=e.groupId||t.groupId;if(!r)return!1;let i=this.peerGroups.get(r);if(!i)return!1;let s=e.publisherId||t.publisherId;if(i.publisherId&&s!==i.publisherId)return this.emit("warning",{type:"domain-event-rejected",groupId:r,reason:"publisher-mismatch",eventId:e.eventId,expectedPublisher:i.publisherId,actualPublisher:s}),!1;let a=null;if(this.securityService.options.signingEnabled&&s){let y=this.securityService.resolvePeerPublicKey(s,null);if(a=y?y.signingPublicKey:null,!a)return this.emit("warning",{type:"domain-event-rejected",groupId:r,reason:"missing-publisher-key",eventId:e.eventId,publisherId:s}),!1}let f=Ec(e,{signingPublicKey:a});if(!f.ok)return this.emit("warning",{type:"domain-event-rejected",groupId:r,reason:f.reason,eventId:e.eventId}),!1;if(this.securityService.options.signingEnabled&&f.unsigned)return this.emit("warning",{type:"domain-event-rejected",groupId:r,reason:"unsigned-event",eventId:e.eventId}),!1;let l=this.domainEventLogs.get(r)||[];if(l.some(y=>y.eventId===e.eventId))return!1;let p=l.length>0?l[l.length-1].eventHash:null;if(e.prevHash!==p)return this.emit("chainbroken",{groupId:r,expectedPrev:p,actualPrev:e.prevHash,eventId:e.eventId}),!1;if(l.push(e),this.domainEventLogs.set(r,l),this.lastEventHashByGroup.set(r,e.eventHash),!i.commandCapable){let y=this.replicaViews.get(r)||eo();Ic(y,e),this.replicaViews.set(r,y)}return this.emit("domainevent",e),!0}async publishRecordToPeerGroup(e,t,r,i={}){let a=this.getCollection(t).get(r);if(!a||a.deletedAt)throw new Error(`Object ${r} does not exist in ${t}`);let f=this.normalizeRecord(a);return this.publishToPeerGroup(e,"record:snapshot",{collectionName:t,record:f},i)}async handlePeerGroupGossip(e){let t=e.payload||{},{groupId:r,gossipId:i,publisherId:s=e.senderId,hop:a=0,maxHop:f,innerMessageType:l,innerPayload:p}=t;if(!r||!l||!i||!this.peerGroups.has(r)||this.hasSeenGossip(i))return;this.markSeenGossip(i),await this.dispatchPeerGroupInnerMessage(l,p,{groupId:r,senderId:e.senderId,publisherId:s});let y=this.peerGroups.get(r),x=t.deliveryTier||"live";if(y&&y.tiered&&y.peerGroupTier==="bulk"&&x!=="bulk")return;let E=y?y.maxHops:this.defaultGossipMaxHops,G=typeof f=="number"?Math.min(f,E):E;if(!y||y.relayEnabled===!1||a>=G)return;let W={};y.tiered&&(W.tier=x==="bulk"?"bulk":"live",x==="bulk"&&(W.bulkRelayOnly=!0));let ie=this.selectPeerGroupFanout(r,y.fanout,[e.senderId,this.nodeId],W);ie.length!==0&&(await this.ensureConnectedToPeers(ie.slice(0,y.maxActivePeers)),await this.enforceConnectionBudget(),await this.broadcastMessage("peer-group:gossip",{groupId:r,gossipId:i,publisherId:s,hop:a+1,maxHop:G,deliveryTier:x,innerMessageType:l,innerPayload:p},{broadcastScope:this.peerGroupScopeFor(r),fanoutPeerIds:ie}))}normalizeGossipOperation(e,t){if(!e||!t)return null;if(e.actorId&&e.actorId!==t)return this.emit("warning",{type:"gossip-operation-actor-mismatch",publisherId:t,actorId:e.actorId,kind:e.kind,collection:e.collectionName,id:e.id}),null;let r={...e,actorId:t};return r.kind==="create"&&(r.ownerId=t),r}async dispatchPeerGroupInnerMessage(e,t,r={}){if(e==="operation"){let i=this.normalizeGossipOperation(t,r.publisherId||r.senderId);i&&this.applyOperation(i);return}if(e==="domain:event"){this.ingestRemoteDomainEvent(t,r);return}if(e==="domain:checkpoint"){this.emit("peergroupmessage",{groupId:r.groupId,senderId:r.senderId,type:"domain:checkpoint",payload:t});return}if(e==="record:snapshot"){let{collectionName:i,record:s}=t||{};i&&s&&this.restoreRecord(i,s,{rejectOnHashMismatch:!0,rejectOnOwnershipMismatch:!0,via:"peer-group"})&&this.emit("change",{kind:"snapshot",collection:i,id:s.id,via:"peer-group",groupId:r.groupId});return}this.emit("peergroupmessage",{groupId:r.groupId,senderId:r.senderId,type:e,payload:t})}getPresenceMap(e){return this.presenceByScope.has(e)||this.presenceByScope.set(e,new Map),this.presenceByScope.get(e)}upsertPresence(e,t,r,i,s){let a=this.getPresenceMap(e),f=a.get(t),l={peerId:t,scope:e,metadata:r?{...r}:{},lastSeenAt:s,expiresAt:s+i};a.set(t,l),this.trustPeerFromMetadata(t,l.metadata);let p=Pc(e);return p&&this.peerGroups.has(p)&&(this.refreshBulkRelays(p),t!==this.nodeId&&this.recalculateOwnPeerGroupTier(p)),f||this.emit("peerdiscovered",{scope:e,peerId:t,metadata:l.metadata}),l}prunePresence(e){let t=this.presenceByScope.get(e);if(!t)return;let r=this.now();for(let[i,s]of t.entries())s.expiresAt<=r&&(t.delete(i),this.emit("peerleft",{scope:e,peerId:i,reason:"timeout"}))}async joinDiscovery(e="main",t={}){let r=e||"main",i=t.heartbeatIntervalMs||this.defaultDiscoveryHeartbeatMs,s=t.ttlMs||this.defaultPresenceTtlMs,a={publicKey:this.getPublicKey(),...t.metadata||{}},f=Array.isArray(t.bootstrapPeerIds)?[...new Set(t.bootstrapPeerIds.filter(Boolean))]:[],l=this.discoveryRooms.get(r);l&&l.timer&&clearInterval(l.timer),f.length>0&&await this.ensureConnectedToPeers(f);let p=setInterval(()=>{this.announcePresence(r).catch(y=>{this.emit("warning",{type:"presence-heartbeat-failed",scope:r,error:y})})},i);this.discoveryRooms.set(r,{metadata:a,bootstrapPeerIds:f,heartbeatIntervalMs:i,ttlMs:s,timer:p}),this.upsertPresence(r,this.nodeId,a,s,this.now()),await this.announcePresence(r)}async announcePresence(e="main",t=null){let r=e||"main",i=this.discoveryRooms.get(r);if(!i)throw new Error(`Scope ${r} has not been joined for discovery`);let s=t||i.metadata||{},a=this.now();this.upsertPresence(r,this.nodeId,s,i.ttlMs,a),await this.broadcastMessage("presence:announce",{scope:r,peerId:this.nodeId,metadata:s,ttlMs:i.ttlMs,announcedAt:a},{broadcastScope:r})}async leaveDiscovery(e="main"){let t=e||"main",r=this.discoveryRooms.get(t);if(!r)return;r.timer&&clearInterval(r.timer),this.discoveryRooms.delete(t);let i=this.presenceByScope.get(t);i&&i.delete(this.nodeId),await this.broadcastMessage("presence:leave",{scope:t,peerId:this.nodeId,leftAt:this.now()},{broadcastScope:t})}listPeers(e="main",t={}){let r=e||"main",i=t.includeSelf!==!1;this.prunePresence(r);let s=this.presenceByScope.get(r);return s?Array.from(s.values()).filter(a=>i||a.peerId!==this.nodeId).map(a=>({peerId:a.peerId,scope:a.scope,metadata:{...a.metadata},lastSeenAt:a.lastSeenAt,expiresAt:a.expiresAt})):[]}async handleIncomingMessage(e){if(e&&e.opId&&e.kind){if(this.securityService.options.enabled){this.emit("messageignored",{reason:"raw-operation-rejected",hint:"Unsigned raw operations are disabled when security is enabled"});return}this.applyOperation(e);return}if(e&&e.senderId&&this.isPeerBanned(e.senderId)){this.emit("messageignored",{senderId:e.senderId,reason:"peer-banned"});return}let t;try{t=await this.securityService.decryptIncomingMessage(e)}catch(r){let i=e?e.senderId:null;i&&(r.code==="INVALID_SIGNATURE"||r.code==="INVALID_POW")&&this.banPeer(i,this.peerBanDurationMs,r.code),this.emit("securityerror",{senderId:i,error:r});return}if(!(!t||t.ignored)){if(t.messageType==="identity:rotate"){let r=t.senderId||t.payload?.username;if(r&&t.payload){let i=this.applyPeerIdentityRotation(r,t.payload);i.applied||this.emit("warning",{type:"identity-rotation-ignored",peerId:r,reason:i.reason})}return}if(t.messageType==="identity:cold-enroll"){let r=t.senderId||t.payload?.username;if(r&&t.payload)try{this.applyPeerColdRecoveryEnrollment(r,t.payload)}catch(i){this.emit("warning",{type:"cold-recovery-enrollment-rejected",peerId:r,error:i})}return}if(e&&e.senderId&&e.senderPublicKey&&this.trustPeerPublicKey(e.senderId,e.senderPublicKey),t.messageType==="operation"){this.applyOperation(t.payload);return}if(t.messageType==="record:snapshot"){let r=t.payload||{},{collectionName:i,record:s}=r;i&&s&&this.restoreRecord(i,s,{rejectOnHashMismatch:!0,via:"direct-mesh"})&&this.emit("change",{kind:"snapshot",collection:i,id:s.id});return}if(t.messageType==="presence:announce"){let r=t.payload||{},i=r.scope||"main",s=r.peerId||t.senderId;if(!s||s!==t.senderId||!this.discoveryRooms.has(i))return;let a=this.discoveryRooms.get(i),l=!this.getPresenceMap(i).has(s),p=typeof r.ttlMs=="number"?r.ttlMs:a.ttlMs,y=Math.min(p,a.ttlMs);this.upsertPresence(i,s,r.metadata||{},y,this.now()),r.metadata&&r.metadata.publicKey&&this.trustPeerPublicKey(s,r.metadata.publicKey),l&&s!==this.nodeId&&this.discoveryRooms.has(i)&&(typeof this.networkAdapter.connectToPeer=="function"&&Promise.resolve(this.connectToPeer(s)).catch(x=>{this.emit("warning",{type:"peer-connect-failed",scope:i,peerId:s,error:x})}),this.announcePresence(i).catch(x=>{this.emit("warning",{type:"presence-handshake-failed",scope:i,error:x})}));return}if(t.messageType==="presence:leave"){let r=t.payload||{},i=r.scope||"main",s=r.peerId||t.senderId;if(!s||s!==t.senderId)return;let a=this.presenceByScope.get(i);a&&s&&a.has(s)&&(a.delete(s),this.emit("peerleft",{scope:i,peerId:s,reason:"leave"}));return}if(t.messageType==="peer-group:gossip"){await this.handlePeerGroupGossip(t);return}this.emit("message",{senderId:t.senderId,targetId:t.targetId,type:t.messageType,payload:t.payload})}}banPeer(e,t=this.peerBanDurationMs,r="manual"){if(!e)return;let i=this.now()+Math.max(1,t);this.bannedPeers.set(e,{peerId:e,reason:r,bannedAt:this.now(),bannedUntil:i}),this.emit("peerbanned",{peerId:e,reason:r,bannedUntil:i})}unbanPeer(e){this.bannedPeers.delete(e),this.emit("peerunbanned",{peerId:e})}getBanInfo(e){let t=this.bannedPeers.get(e);return t?t.bannedUntil<=this.now()?(this.bannedPeers.delete(e),null):{...t}:null}isPeerBanned(e){return this.getBanInfo(e)!==null}emitConflict(e){this.emit("conflict",e)}restoreRecord(e,t,r={}){if(!t||!t.id)return!1;let i=this.getCollection(e),s=i.get(t.id);if(s&&s.version>=t.version)return!1;let a={...t.data||{}},f=jt(a),l=r.rejectOnHashMismatch===!0;if(r.rejectOnOwnershipMismatch===!0&&s&&t.ownerId&&s.ownerId!==t.ownerId)return this.emit("warning",{type:"ownership-mismatch",collection:e,id:t.id,currentOwnerId:s.ownerId,advertisedOwnerId:t.ownerId,via:r.via||null}),!1;if(t.hash){if(t.hash!==f&&(this.emit("warning",{type:"content-hash-mismatch",collection:e,id:t.id,advertisedHash:t.hash,computedHash:f,via:r.via||null}),l))return!1}else{let y={type:"content-hash-missing",collection:e,id:t.id,via:r.via||null};if(this.emit("warning",y),l)return!1}return i.set(t.id,{id:t.id,ownerId:t.ownerId,collaboratorIds:this.normalizeCollaboratorIds(t.collaboratorIds),data:a,hash:f,createdAt:t.createdAt,updatedAt:t.updatedAt,deletedAt:t.deletedAt||null,version:t.version}),!0}async pushRecordSnapshot(e,t,r={}){let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);let a={id:s.id,ownerId:s.ownerId,collaboratorIds:Array.isArray(s.collaboratorIds)?[...s.collaboratorIds]:[],data:{...s.data||{}},hash:s.hash||jt(s.data||{}),createdAt:s.createdAt,updatedAt:s.updatedAt,deletedAt:s.deletedAt||null,version:s.version};return await this.broadcastMessage("record:snapshot",{collectionName:e,record:a},{broadcastScope:r.broadcastScope||this.resolveBroadcastScope({messageType:"record:snapshot",collectionName:e,id:t}),connectToPeers:this.resolveReplicationPeers(e,t,r,{fromRecord:s})}),a}pruneAppliedOperations(){for(;this.appliedOperations.size>this.maxAppliedOperations;){let e=this.appliedOperations.keys().next().value;if(!e)break;this.appliedOperations.delete(e)}}applyOperation(e){if(!e||!e.opId||this.appliedOperations.has(e.opId))return!1;let t=this.getCollection(e.collectionName),r=t.get(e.id);if(e.kind==="create")return r&&!r.deletedAt?!1:(t.set(e.id,{id:e.id,ownerId:e.ownerId,collaboratorIds:this.normalizeCollaboratorIds(e.collaboratorIds),data:{...e.payload||{}},hash:jt(e.payload||{}),createdAt:e.timestamp,updatedAt:e.timestamp,deletedAt:null,version:1}),this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"create",collection:e.collectionName,id:e.id}),!0);if(!r||r.deletedAt)return e.kind!=="create"&&this.emit("warning",{type:"orphan-operation",kind:e.kind,collection:e.collectionName,id:e.id,actorId:e.actorId,hint:"Peer is missing the record; pushRecordSnapshot from the owner to catch up."}),!1;if(e.kind==="transfer-ownership"){if(e.actorId!==r.ownerId)return!1;if(typeof e.baseVersion=="number"&&e.baseVersion!==r.version)return this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:r.version,phase:"remote",operation:e}),!1;let i=r.ownerId;if(r.ownerId=e.newOwnerId,e.keepPreviousOwnerAsCollaborator!==!1){let s=this.normalizeCollaboratorIds(r.collaboratorIds);s.includes(i)||s.push(i),r.collaboratorIds=s.filter(a=>a!==e.newOwnerId)}return r.updatedAt=e.timestamp,r.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"transfer-ownership",collection:e.collectionName,id:e.id,previousOwnerId:i,newOwnerId:e.newOwnerId}),!0}return e.kind==="delete"?e.actorId!==r.ownerId?!1:typeof e.baseVersion=="number"&&e.baseVersion!==r.version?(this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:r.version,phase:"remote",operation:e}),!1):(r.deletedAt=e.timestamp,r.updatedAt=e.timestamp,r.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"delete",collection:e.collectionName,id:e.id}),!0):this.canUpdateRecord(r,e.actorId)?typeof e.baseVersion=="number"&&e.baseVersion!==r.version?(this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:r.version,phase:"remote",operation:e}),!1):e.kind==="update"?(r.data={...r.data,...e.payload},r.hash=jt(r.data),Array.isArray(e.collaboratorIds)&&e.actorId===r.ownerId&&(r.collaboratorIds=this.normalizeCollaboratorIds(e.collaboratorIds)),r.updatedAt=e.timestamp,r.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"update",collection:e.collectionName,id:e.id}),!0):!1:!1}};ro.exports=Vn});var Yn=F((wl,io)=>{var Wn=class{constructor(e=[]){this.providers=[...e],this.activeProvider=null}registerProvider(e){this.providers.push(e)}getProvidersByPriority(){return[...this.providers].sort((e,t)=>(e.priority||0)-(t.priority||0))}async connect(e=new Set){let t=this.getProvidersByPriority().filter(i=>!e.has(i.id)),r;for(let i of t)try{return await i.connect(),this.activeProvider=i,i}catch(s){r=s}throw r||new Error("No signaling provider could connect")}async send(e){this.activeProvider||await this.connect();try{await this.activeProvider.send(e)}catch(t){this.activeProvider&&typeof this.activeProvider.disconnect=="function"&&await this.activeProvider.disconnect();let r=this.activeProvider?this.activeProvider.id:null;this.activeProvider=null;let i=r?new Set([r]):new Set;return await this.connect(i),await this.activeProvider.send(e),t}return null}onMessage(e){for(let t of this.providers)typeof t.onMessage=="function"&&t.onMessage(e)}async disconnect(){let e=this.providers.filter(t=>typeof t.disconnect=="function").map(t=>t.disconnect());await Promise.all(e),this.activeProvider=null}};io.exports=Wn});var Ar=F((Sl,oo)=>{function so(n){let e="";for(;e.length<n;){let t=Math.random().toString(36).slice(2);e+=t.length>0?t:"0"}return e.slice(0,n)}var Jn=class{constructor({id:e,url:t,WebSocketImpl:r,priority:i=0}){if(!t)throw new Error("WebSocket signaling provider requires a url");this.id=e||t,this.url=t,this.priority=i,this.WebSocketImpl=r||globalThis.WebSocket,this.socket=null,this.messageHandlers=new Set}async connect(){if(!this.WebSocketImpl)throw new Error("WebSocket implementation is not available");await new Promise((e,t)=>{let r=new this.WebSocketImpl(this.buildConnectionUrl());r.onopen=()=>{this.socket=r,e()},r.onerror=()=>{t(new Error(`Unable to connect to signaling url ${this.url}`))},r.onmessage=i=>{let s=i.data;try{s=JSON.parse(i.data)}catch{s=i.data}for(let a of this.messageHandlers)a(s)}})}buildConnectionUrl(){if(!/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(this.url))return this.url;let t=`dignityjs_${so(10)}`,r=so(10),i=this.url.includes("?"),s=/[?&]id=/.test(this.url),a=/[?&]token=/.test(this.url),f=this.url;return s||(f+=`${i?"&":"?"}id=${t}`),a||(f+=`${f.includes("?")?"&":"?"}token=${r}`),f}onMessage(e){this.messageHandlers.add(e)}async send(e){if(!this.socket||this.socket.readyState!==1)throw new Error(`Signaling socket is not open for ${this.url}`);this.socket.send(JSON.stringify(e))}async disconnect(){this.socket&&(this.socket.close(),this.socket=null)}};oo.exports=Jn});var Mr=F((Cl,ao)=>{function Dc(n){let e=new URL(n),t=e.protocol==="wss:",r=e.hostname,i=e.port?Number(e.port):t?443:80,s=e.searchParams.get("key")||"peerjs",a=e.pathname||"/";return a.endsWith("/peerjs")&&(a=a.slice(0,-7)||"/"),a!=="/"&&!a.endsWith("/")&&(a+="/"),{secure:t,host:r,port:i,path:a,key:s}}ao.exports=Dc});var co=F((El,Or)=>{function Qn(n,e,t,r){Object.defineProperty(n,e,{get:t,set:r,enumerable:!0,configurable:!0})}Qn(Or.exports,"unpack",()=>Uc);Qn(Or.exports,"pack",()=>Bc);Qn(Or.exports,"Packer",()=>Dr);var Xn=class{constructor(){this.encoder=new TextEncoder,this._pieces=[],this._parts=[]}append_buffer(e){this.flush(),this._parts.push(e)}append(e){this._pieces.push(e)}flush(){if(this._pieces.length>0){let e=new Uint8Array(this._pieces);this._parts.push(e),this._pieces=[]}}toArrayBuffer(){let e=[];for(let t of this._parts)e.push(t);return Oc(e).buffer}};function Oc(n){let e=0;for(let i of n)e+=i.byteLength;let t=new Uint8Array(e),r=0;for(let i of n){let s=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);t.set(s,r),r+=i.byteLength}return t}function Uc(n){return new Zn(n).unpack()}function Bc(n){let e=new Dr,t=e.pack(n);return t instanceof Promise?t.then(()=>e.getBuffer()):e.getBuffer()}var Zn=class{constructor(e){this.index=0,this.dataBuffer=e,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}unpack(){let e=this.unpack_uint8();if(e<128)return e;if((e^224)<32)return(e^224)-32;let t;if((t=e^160)<=15)return this.unpack_raw(t);if((t=e^176)<=15)return this.unpack_string(t);if((t=e^144)<=15)return this.unpack_array(t);if((t=e^128)<=15)return this.unpack_map(t);switch(e){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return t=this.unpack_uint16(),this.unpack_string(t);case 217:return t=this.unpack_uint32(),this.unpack_string(t);case 218:return t=this.unpack_uint16(),this.unpack_raw(t);case 219:return t=this.unpack_uint32(),this.unpack_raw(t);case 220:return t=this.unpack_uint16(),this.unpack_array(t);case 221:return t=this.unpack_uint32(),this.unpack_array(t);case 222:return t=this.unpack_uint16(),this.unpack_map(t);case 223:return t=this.unpack_uint32(),this.unpack_map(t)}}unpack_uint8(){let e=this.dataView[this.index]&255;return this.index++,e}unpack_uint16(){let e=this.read(2),t=(e[0]&255)*256+(e[1]&255);return this.index+=2,t}unpack_uint32(){let e=this.read(4),t=((e[0]*256+e[1])*256+e[2])*256+e[3];return this.index+=4,t}unpack_uint64(){let e=this.read(8),t=((((((e[0]*256+e[1])*256+e[2])*256+e[3])*256+e[4])*256+e[5])*256+e[6])*256+e[7];return this.index+=8,t}unpack_int8(){let e=this.unpack_uint8();return e<128?e:e-256}unpack_int16(){let e=this.unpack_uint16();return e<32768?e:e-65536}unpack_int32(){let e=this.unpack_uint32();return e<2**31?e:e-2**32}unpack_int64(){let e=this.unpack_uint64();return e<2**63?e:e-2**64}unpack_raw(e){if(this.length<this.index+e)throw new Error(`BinaryPackFailure: index is out of range ${this.index} ${e} ${this.length}`);let t=this.dataBuffer.slice(this.index,this.index+e);return this.index+=e,t}unpack_string(e){let t=this.read(e),r=0,i="",s,a;for(;r<e;)s=t[r],s<160?(a=s,r++):(s^192)<32?(a=(s&31)<<6|t[r+1]&63,r+=2):(s^224)<16?(a=(s&15)<<12|(t[r+1]&63)<<6|t[r+2]&63,r+=3):(a=(s&7)<<18|(t[r+1]&63)<<12|(t[r+2]&63)<<6|t[r+3]&63,r+=4),i+=String.fromCodePoint(a);return this.index+=e,i}unpack_array(e){let t=new Array(e);for(let r=0;r<e;r++)t[r]=this.unpack();return t}unpack_map(e){let t={};for(let r=0;r<e;r++){let i=this.unpack();t[i]=this.unpack()}return t}unpack_float(){let e=this.unpack_uint32(),t=e>>31,r=(e>>23&255)-127,i=e&8388607|8388608;return(t===0?1:-1)*i*2**(r-23)}unpack_double(){let e=this.unpack_uint32(),t=this.unpack_uint32(),r=e>>31,i=(e>>20&2047)-1023,a=(e&1048575|1048576)*2**(i-20)+t*2**(i-52);return(r===0?1:-1)*a}read(e){let t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw new Error("BinaryPackFailure: read index out of range")}},Dr=class{getBuffer(){return this._bufferBuilder.toArrayBuffer()}pack(e){if(typeof e=="string")this.pack_string(e);else if(typeof e=="number")Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if(typeof e=="boolean")e===!0?this._bufferBuilder.append(195):e===!1&&this._bufferBuilder.append(194);else if(e===void 0)this._bufferBuilder.append(192);else if(typeof e=="object")if(e===null)this._bufferBuilder.append(192);else{let t=e.constructor;if(e instanceof Array){let r=this.pack_array(e);if(r instanceof Promise)return r.then(()=>this._bufferBuilder.flush())}else if(e instanceof ArrayBuffer)this.pack_bin(new Uint8Array(e));else if("BYTES_PER_ELEMENT"in e){let r=e;this.pack_bin(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}else if(e instanceof Date)this.pack_string(e.toString());else{if(e instanceof Blob)return e.arrayBuffer().then(r=>{this.pack_bin(new Uint8Array(r)),this._bufferBuilder.flush()});if(t==Object||t.toString().startsWith("class")){let r=this.pack_object(e);if(r instanceof Promise)return r.then(()=>this._bufferBuilder.flush())}else throw new Error(`Type "${t.toString()}" not yet supported`)}}else throw new Error(`Type "${typeof e}" not yet supported`);this._bufferBuilder.flush()}pack_bin(e){let t=e.length;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this._bufferBuilder.append(218),this.pack_uint16(t);else if(t<=4294967295)this._bufferBuilder.append(219),this.pack_uint32(t);else throw new Error("Invalid length");this._bufferBuilder.append_buffer(e)}pack_string(e){let t=this._textEncoder.encode(e),r=t.length;if(r<=15)this.pack_uint8(176+r);else if(r<=65535)this._bufferBuilder.append(216),this.pack_uint16(r);else if(r<=4294967295)this._bufferBuilder.append(217),this.pack_uint32(r);else throw new Error("Invalid length");this._bufferBuilder.append_buffer(t)}pack_array(e){let t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this._bufferBuilder.append(220),this.pack_uint16(t);else if(t<=4294967295)this._bufferBuilder.append(221),this.pack_uint32(t);else throw new Error("Invalid length");let r=i=>{if(i<t){let s=this.pack(e[i]);return s instanceof Promise?s.then(()=>r(i+1)):r(i+1)}};return r(0)}pack_integer(e){if(e>=-32&&e<=127)this._bufferBuilder.append(e&255);else if(e>=0&&e<=255)this._bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this._bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this._bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this._bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this._bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this._bufferBuilder.append(210),this.pack_int32(e);else if(e>=-9223372036854776e3&&e<=9223372036854776e3)this._bufferBuilder.append(211),this.pack_int64(e);else if(e>=0&&e<=18446744073709552e3)this._bufferBuilder.append(207),this.pack_uint64(e);else throw new Error("Invalid integer")}pack_double(e){let t=0;e<0&&(t=1,e=-e);let r=Math.floor(Math.log(e)/Math.LN2),i=e/2**r-1,s=Math.floor(i*2**52),a=2**32,f=t<<31|r+1023<<20|s/a&1048575,l=s%a;this._bufferBuilder.append(203),this.pack_int32(f),this.pack_int32(l)}pack_object(e){let t=Object.keys(e),r=t.length;if(r<=15)this.pack_uint8(128+r);else if(r<=65535)this._bufferBuilder.append(222),this.pack_uint16(r);else if(r<=4294967295)this._bufferBuilder.append(223),this.pack_uint32(r);else throw new Error("Invalid length");let i=s=>{if(s<t.length){let a=t[s];if(e.hasOwnProperty(a)){this.pack(a);let f=this.pack(e[a]);if(f instanceof Promise)return f.then(()=>i(s+1))}return i(s+1)}};return i(0)}pack_uint8(e){this._bufferBuilder.append(e)}pack_uint16(e){this._bufferBuilder.append(e>>8),this._bufferBuilder.append(e&255)}pack_uint32(e){let t=e&4294967295;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255)}pack_uint64(e){let t=e/4294967296,r=e%2**32;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255),this._bufferBuilder.append((r&4278190080)>>>24),this._bufferBuilder.append((r&16711680)>>>16),this._bufferBuilder.append((r&65280)>>>8),this._bufferBuilder.append(r&255)}pack_int8(e){this._bufferBuilder.append(e&255)}pack_int16(e){this._bufferBuilder.append((e&65280)>>8),this._bufferBuilder.append(e&255)}pack_int32(e){this._bufferBuilder.append(e>>>24&255),this._bufferBuilder.append((e&16711680)>>>16),this._bufferBuilder.append((e&65280)>>>8),this._bufferBuilder.append(e&255)}pack_int64(e){let t=Math.floor(e/4294967296),r=e%2**32;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255),this._bufferBuilder.append((r&4278190080)>>>24),this._bufferBuilder.append((r&16711680)>>>16),this._bufferBuilder.append((r&65280)>>>8),this._bufferBuilder.append(r&255)}constructor(){this._bufferBuilder=new Xn,this._textEncoder=new TextEncoder}}});var nt=F(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.compactObject=ho;je.deprecated=qc;je.detectBrowser=$c;je.disableLog=Fc;je.disableWarnings=Nc;je.extractVersion=Gt;je.filterStats=Hc;je.log=zc;je.walkStats=Ur;je.wrapPeerConnectionEvent=Kc;function Lc(n,e,t){return(e=jc(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function jc(n){var e=Gc(n,"string");return rt(e)=="symbol"?e:e+""}function Gc(n,e){if(rt(n)!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(rt(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function rt(n){"@babel/helpers - typeof";return rt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},rt(n)}var uo=!0,lo=!0;function Gt(n,e,t){var r=n.match(e);return r&&r.length>=t&&parseFloat(r[t],10)}function Kc(n,e,t){if(n.RTCPeerConnection){var r=n.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(a,f){if(a!==e)return i.apply(this,arguments);var l=function(y){var x=t(y);x&&(f.handleEvent?f.handleEvent(x):f(x))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(f,l),i.apply(this,[a,l])};var s=r.removeEventListener;r.removeEventListener=function(a,f){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(f))return s.apply(this,arguments);var l=this._eventMap[e].get(f);return this._eventMap[e].delete(f),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,l])},Object.defineProperty(r,"on"+e,{get:function(){return this["_on"+e]},set:function(f){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),f&&this.addEventListener(e,this["_on"+e]=f)},enumerable:!0,configurable:!0})}}function Fc(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):(uo=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Nc(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):(lo=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function zc(){if((typeof window>"u"?"undefined":rt(window))==="object"){if(uo)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function qc(n,e){lo&&console.warn(n+" is deprecated, please use "+e+" instead.")}function $c(n){var e={browser:null,version:null};if(typeof n>"u"||!n.navigator||!n.navigator.userAgent)return e.browser="Not a browser.",e;var t=n.navigator;if(t.userAgentData&&t.userAgentData.brands){var r=t.userAgentData.brands.find(function(i){return i.brand==="Chromium"});if(r)return{browser:"chrome",version:parseInt(r.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(Gt(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Gt(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Gt(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=Gt(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function fo(n){return Object.prototype.toString.call(n)==="[object Object]"}function ho(n){return fo(n)?Object.keys(n).reduce(function(e,t){var r=fo(n[t]),i=r?ho(n[t]):n[t],s=r&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,Lc({},t,i))},{}):n}function Ur(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(function(r){r.endsWith("Id")?Ur(n,n.get(e[r]),t):r.endsWith("Ids")&&e[r].forEach(function(i){Ur(n,n.get(i),t)})}))}function Hc(n,e,t){var r=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;var s=[];return n.forEach(function(a){a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(function(a){n.forEach(function(f){f.type===r&&f.trackId===a.id&&Ur(n,f,i)})}),i}});var go=F(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.shimGetUserMedia=Wc;var Vc=yo(nt());function yo(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(yo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||it(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function it(n){"@babel/helpers - typeof";return it=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},it(n)}var po=Vc.log;function Wc(n,e){var t=n&&n.navigator;if(t.mediaDevices){var r=function(p){if(it(p)!=="object"||p.mandatory||p.optional)return p;var y={};return Object.keys(p).forEach(function(x){if(!(x==="require"||x==="advanced"||x==="mediaSource")){var E=it(p[x])==="object"?p[x]:{ideal:p[x]};E.exact!==void 0&&typeof E.exact=="number"&&(E.min=E.max=E.exact);var G=function(ue,be){return ue?ue+be.charAt(0).toUpperCase()+be.slice(1):be==="deviceId"?"sourceId":be};if(E.ideal!==void 0){y.optional=y.optional||[];var W={};typeof E.ideal=="number"?(W[G("min",x)]=E.ideal,y.optional.push(W),W={},W[G("max",x)]=E.ideal,y.optional.push(W)):(W[G("",x)]=E.ideal,y.optional.push(W))}E.exact!==void 0&&typeof E.exact!="number"?(y.mandatory=y.mandatory||{},y.mandatory[G("",x)]=E.exact):["min","max"].forEach(function(ie){E[ie]!==void 0&&(y.mandatory=y.mandatory||{},y.mandatory[G(ie,x)]=E[ie])})}}),p.advanced&&(y.optional=(y.optional||[]).concat(p.advanced)),y},i=function(p,y){if(e.version>=61)return y(p);if(p=JSON.parse(JSON.stringify(p)),p&&it(p.audio)==="object"){var x=function(ue,be,xt){be in ue&&!(xt in ue)&&(ue[xt]=ue[be],delete ue[be])};p=JSON.parse(JSON.stringify(p)),x(p.audio,"autoGainControl","googAutoGainControl"),x(p.audio,"noiseSuppression","googNoiseSuppression"),p.audio=r(p.audio)}if(p&&it(p.video)==="object"){var E=p.video.facingMode;E=E&&(it(E)==="object"?E:{ideal:E});var G=e.version<66;if(E&&(E.exact==="user"||E.exact==="environment"||E.ideal==="user"||E.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!G)){delete p.video.facingMode;var W;if(E.exact==="environment"||E.ideal==="environment"?W=["back","rear"]:(E.exact==="user"||E.ideal==="user")&&(W=["front"]),W)return t.mediaDevices.enumerateDevices().then(function(ie){ie=ie.filter(function(be){return be.kind==="videoinput"});var ue=ie.find(function(be){return W.some(function(xt){return be.label.toLowerCase().includes(xt)})});return!ue&&ie.length&&W.includes("back")&&(ue=ie[ie.length-1]),ue&&(p.video.deviceId=E.exact?{exact:ue.deviceId}:{ideal:ue.deviceId}),p.video=r(p.video),po("chrome: "+JSON.stringify(p)),y(p)})}p.video=r(p.video)}return po("chrome: "+JSON.stringify(p)),y(p)},s=function(p){return e.version>=64?p:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[p.name]||p.name,message:p.message,constraint:p.constraint||p.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},a=function(p,y,x){i(p,function(E){t.webkitGetUserMedia(E,y,function(G){x&&x(s(G))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){var f=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(l){return i(l,function(p){return f(p).then(function(y){if(p.audio&&!y.getAudioTracks().length||p.video&&!y.getVideoTracks().length)throw y.getTracks().forEach(function(x){x.stop()}),new DOMException("","NotFoundError");return y},function(y){return Promise.reject(s(y))})})}}}}});var vo=F(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.fixNegotiationNeeded=sf;Ne.shimAddTrackRemoveTrack=rf;Ne.shimAddTrackRemoveTrackWithNative=bo;Ne.shimGetSendersWithDtmf=ef;Object.defineProperty(Ne,"shimGetUserMedia",{enumerable:!0,get:function(){return Yc.shimGetUserMedia}});Ne.shimMediaStream=Zc;Ne.shimOnTrack=Qc;Ne.shimPeerConnection=nf;Ne.shimSenderReceiverGetStats=tf;var Kt=mo(nt()),Yc=go();function mo(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(mo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||He(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function xo(n,e,t){return(e=Jc(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Jc(n){var e=Xc(n,"string");return He(e)=="symbol"?e:e+""}function Xc(n,e){if(He(n)!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(He(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function He(n){"@babel/helpers - typeof";return He=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(n)}function Zc(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function Qc(n){if(He(n)==="object"&&n.RTCPeerConnection&&!("ontrack"in n.RTCPeerConnection.prototype)){Object.defineProperty(n.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(r){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=r)},enumerable:!0,configurable:!0});var e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){var r=this;return this._ontrackpoly||(this._ontrackpoly=function(i){i.stream.addEventListener("addtrack",function(s){var a;n.RTCPeerConnection.prototype.getReceivers?a=r.getReceivers().find(function(l){return l.track&&l.track.id===s.track.id}):a={track:s.track};var f=new Event("track");f.track=s.track,f.receiver=a,f.transceiver={receiver:a},f.streams=[i.stream],r.dispatchEvent(f)}),i.stream.getTracks().forEach(function(s){var a;n.RTCPeerConnection.prototype.getReceivers?a=r.getReceivers().find(function(l){return l.track&&l.track.id===s.id}):a={track:s};var f=new Event("track");f.track=s,f.receiver=a,f.transceiver={receiver:a},f.streams=[i.stream],r.dispatchEvent(f)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else Kt.wrapPeerConnectionEvent(n,"track",function(t){return t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t})}function ef(n){if(He(n)==="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){var e=function(l,p){return{track:p,get dtmf(){return this._dtmf===void 0&&(p.kind==="audio"?this._dtmf=l.createDTMFSender(p):this._dtmf=null),this._dtmf},_pc:l}};if(!n.RTCPeerConnection.prototype.getSenders){n.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var t=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(l,p){var y=t.apply(this,arguments);return y||(y=e(this,l),this._senders.push(y)),y};var r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(l){r.apply(this,arguments);var p=this._senders.indexOf(l);p!==-1&&this._senders.splice(p,1)}}var i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(l){var p=this;this._senders=this._senders||[],i.apply(this,[l]),l.getTracks().forEach(function(y){p._senders.push(e(p,y))})};var s=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(l){var p=this;this._senders=this._senders||[],s.apply(this,[l]),l.getTracks().forEach(function(y){var x=p._senders.find(function(E){return E.track===y});x&&p._senders.splice(p._senders.indexOf(x),1)})}}else if(He(n)==="object"&&n.RTCPeerConnection&&"getSenders"in n.RTCPeerConnection.prototype&&"createDTMFSender"in n.RTCPeerConnection.prototype&&n.RTCRtpSender&&!("dtmf"in n.RTCRtpSender.prototype)){var a=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){var l=this,p=a.apply(this,[]);return p.forEach(function(y){return y._pc=l}),p},Object.defineProperty(n.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function tf(n){if(He(n)==="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&n.RTCRtpReceiver){if(!("getStats"in n.RTCRtpSender.prototype)){var e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){var a=this,f=e.apply(this,[]);return f.forEach(function(l){return l._pc=a}),f});var t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){var a=t.apply(this,arguments);return a._pc=this,a}),n.RTCRtpSender.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(f){return Kt.filterStats(f,a.track,!0)})}}if(!("getStats"in n.RTCRtpReceiver.prototype)){var r=n.RTCPeerConnection.prototype.getReceivers;r&&(n.RTCPeerConnection.prototype.getReceivers=function(){var a=this,f=r.apply(this,[]);return f.forEach(function(l){return l._pc=a}),f}),Kt.wrapPeerConnectionEvent(n,"track",function(s){return s.receiver._pc=s.srcElement,s}),n.RTCRtpReceiver.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(f){return Kt.filterStats(f,a.track,!1)})}}if("getStats"in n.RTCRtpSender.prototype&&"getStats"in n.RTCRtpReceiver.prototype){var i=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof n.MediaStreamTrack){var a=arguments[0],f,l,p;return this.getSenders().forEach(function(y){y.track===a&&(f?p=!0:f=y)}),this.getReceivers().forEach(function(y){return y.track===a&&(l?p=!0:l=y),y.track===a}),p||f&&l?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):f?f.getStats():l?l.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function bo(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){var a=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(f){return a._shimmedLocalStreams[f][0]})};var e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,f){if(!f)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var l=e.apply(this,arguments);return this._shimmedLocalStreams[f.id]?this._shimmedLocalStreams[f.id].indexOf(l)===-1&&this._shimmedLocalStreams[f.id].push(l):this._shimmedLocalStreams[f.id]=[f,l],l};var t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(a){var f=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(function(y){var x=f.getSenders().find(function(E){return E.track===y});if(x)throw new DOMException("Track already exists.","InvalidAccessError")});var l=this.getSenders();t.apply(this,arguments);var p=this.getSenders().filter(function(y){return l.indexOf(y)===-1});this._shimmedLocalStreams[a.id]=[a].concat(p)};var r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],r.apply(this,arguments)};var i=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(a){var f=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(function(l){var p=f._shimmedLocalStreams[l].indexOf(a);p!==-1&&f._shimmedLocalStreams[l].splice(p,1),f._shimmedLocalStreams[l].length===1&&delete f._shimmedLocalStreams[l]}),i.apply(this,arguments)}}function rf(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return bo(n);var t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){var y=this,x=t.apply(this);return this._reverseStreams=this._reverseStreams||{},x.map(function(E){return y._reverseStreams[E.id]})};var r=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(y){var x=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},y.getTracks().forEach(function(G){var W=x.getSenders().find(function(ie){return ie.track===G});if(W)throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[y.id]){var E=new n.MediaStream(y.getTracks());this._streams[y.id]=E,this._reverseStreams[E.id]=y,y=E}r.apply(this,[y])};var i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(y){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[y.id]||y]),delete this._reverseStreams[this._streams[y.id]?this._streams[y.id].id:y.id],delete this._streams[y.id]},n.RTCPeerConnection.prototype.addTrack=function(y,x){var E=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var G=[].slice.call(arguments,1);if(G.length!==1||!G[0].getTracks().find(function(be){return be===y}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var W=this.getSenders().find(function(be){return be.track===y});if(W)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var ie=this._streams[x.id];if(ie)ie.addTrack(y),Promise.resolve().then(function(){E.dispatchEvent(new Event("negotiationneeded"))});else{var ue=new n.MediaStream([y]);this._streams[x.id]=ue,this._reverseStreams[ue.id]=x,this.addStream(ue)}return this.getSenders().find(function(be){return be.track===y})};function s(p,y){var x=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var G=p._reverseStreams[E],W=p._streams[G.id];x=x.replace(new RegExp(W.id,"g"),G.id)}),new RTCSessionDescription({type:y.type,sdp:x})}function a(p,y){var x=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var G=p._reverseStreams[E],W=p._streams[G.id];x=x.replace(new RegExp(G.id,"g"),W.id)}),new RTCSessionDescription({type:y.type,sdp:x})}["createOffer","createAnswer"].forEach(function(p){var y=n.RTCPeerConnection.prototype[p],x=xo({},p,function(){var E=this,G=arguments,W=arguments.length&&typeof arguments[0]=="function";return W?y.apply(this,[function(ie){var ue=s(E,ie);G[0].apply(null,[ue])},function(ie){G[1]&&G[1].apply(null,ie)},arguments[2]]):y.apply(this,arguments).then(function(ie){return s(E,ie)})});n.RTCPeerConnection.prototype[p]=x[p]});var f=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?f.apply(this,arguments):(arguments[0]=a(this,arguments[0]),f.apply(this,arguments))};var l=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get:function(){var y=l.get.apply(this);return y.type===""?y:s(this,y)}}),n.RTCPeerConnection.prototype.removeTrack=function(y){var x=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!y._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");var E=y._pc===this;if(!E)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};var G;Object.keys(this._streams).forEach(function(W){var ie=x._streams[W].getTracks().find(function(ue){return y.track===ue});ie&&(G=x._streams[W])}),G&&(G.getTracks().length===1?this.removeStream(this._reverseStreams[G.id]):G.removeTrack(y.track),this.dispatchEvent(new Event("negotiationneeded")))}}function nf(n,e){!n.RTCPeerConnection&&n.webkitRTCPeerConnection&&(n.RTCPeerConnection=n.webkitRTCPeerConnection),n.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var r=n.RTCPeerConnection.prototype[t],i=xo({},t,function(){return arguments[0]=new(t==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)});n.RTCPeerConnection.prototype[t]=i[t]})}function sf(n,e){Kt.wrapPeerConnectionEvent(n,"negotiationneeded",function(t){var r=t.target;if(!((e.version<72||r.getConfiguration&&r.getConfiguration().sdpSemantics==="plan-b")&&r.signalingState!=="stable"))return t})}});var Po=F(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.shimGetUserMedia=af;var of=_o(nt());function _o(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(_o=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||Et(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function Et(n){"@babel/helpers - typeof";return Et=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Et(n)}function af(n,e){var t=n&&n.navigator,r=n&&n.MediaStreamTrack;if(t.getUserMedia=function(l,p,y){of.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(l).then(p,y)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){var i=function(p,y,x){y in p&&!(x in p)&&(p[x]=p[y],delete p[y])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(l){return Et(l)==="object"&&Et(l.audio)==="object"&&(l=JSON.parse(JSON.stringify(l)),i(l.audio,"autoGainControl","mozAutoGainControl"),i(l.audio,"noiseSuppression","mozNoiseSuppression")),s(l)},r&&r.prototype.getSettings){var a=r.prototype.getSettings;r.prototype.getSettings=function(){var l=a.apply(this,arguments);return i(l,"mozAutoGainControl","autoGainControl"),i(l,"mozNoiseSuppression","noiseSuppression"),l}}if(r&&r.prototype.applyConstraints){var f=r.prototype.applyConstraints;r.prototype.applyConstraints=function(l){return this.kind==="audio"&&Et(l)==="object"&&(l=JSON.parse(JSON.stringify(l)),i(l,"autoGainControl","mozAutoGainControl"),i(l,"noiseSuppression","mozNoiseSuppression")),f.apply(this,[l])}}}}});var wo=F(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.shimGetDisplayMedia=cf;function cf(n,e){n.navigator.mediaDevices&&"getDisplayMedia"in n.navigator.mediaDevices||n.navigator.mediaDevices&&(n.navigator.mediaDevices.getDisplayMedia=function(r){if(!(r&&r.video)){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return r.video===!0?r.video={mediaSource:e}:r.video.mediaSource=e,n.navigator.mediaDevices.getUserMedia(r)})}});var Eo=F(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.shimAddTransceiver=Cf;Oe.shimCreateAnswer=Tf;Oe.shimCreateOffer=If;Object.defineProperty(Oe,"shimGetDisplayMedia",{enumerable:!0,get:function(){return df.shimGetDisplayMedia}});Oe.shimGetParameters=Ef;Object.defineProperty(Oe,"shimGetUserMedia",{enumerable:!0,get:function(){return ff.shimGetUserMedia}});Oe.shimOnTrack=bf;Oe.shimPeerConnection=vf;Oe.shimRTCDataChannel=Sf;Oe.shimReceiverGetStats=Pf;Oe.shimRemoveStream=wf;Oe.shimSenderGetStats=_f;var So=Co(nt()),ff=Po(),df=wo();function Co(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Co=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||De(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function uf(n){return yf(n)||pf(n)||hf(n)||lf()}function lf(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function hf(n,e){if(n){if(typeof n=="string")return ni(n,e);var t={}.toString.call(n).slice(8,-1);return t==="Object"&&n.constructor&&(t=n.constructor.name),t==="Map"||t==="Set"?Array.from(n):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ni(n,e):void 0}}function pf(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function yf(n){if(Array.isArray(n))return ni(n)}function ni(n,e){(e==null||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t<e;t++)r[t]=n[t];return r}function gf(n,e,t){return(e=mf(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function mf(n){var e=xf(n,"string");return De(e)=="symbol"?e:e+""}function xf(n,e){if(De(n)!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(De(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function De(n){"@babel/helpers - typeof";return De=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(n)}function bf(n){De(n)==="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function vf(n,e){if(!(De(n)!=="object"||!(n.RTCPeerConnection||n.mozRTCPeerConnection))){!n.RTCPeerConnection&&n.mozRTCPeerConnection&&(n.RTCPeerConnection=n.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){var s=n.RTCPeerConnection.prototype[i],a=gf({},i,function(){return arguments[0]=new(i==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)});n.RTCPeerConnection.prototype[i]=a[i]});var t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},r=n.RTCPeerConnection.prototype.getStats;n.RTCPeerConnection.prototype.getStats=function(){var s=Array.prototype.slice.call(arguments),a=s[0],f=s[1],l=s[2];return r.apply(this,[a||null]).then(function(p){if(e.version<53&&!f)try{p.forEach(function(y){y.type=t[y.type]||y.type})}catch(y){if(y.name!=="TypeError")throw y;p.forEach(function(x,E){p.set(E,Object.assign({},x,{type:t[x.type]||x.type}))})}return p}).then(f,l)}}}function _f(n){if(De(n)==="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&!(n.RTCRtpSender&&"getStats"in n.RTCRtpSender.prototype)){var e=n.RTCPeerConnection.prototype.getSenders;e&&(n.RTCPeerConnection.prototype.getSenders=function(){var i=this,s=e.apply(this,[]);return s.forEach(function(a){return a._pc=i}),s});var t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){var i=t.apply(this,arguments);return i._pc=this,i}),n.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function Pf(n){if(De(n)==="object"&&n.RTCPeerConnection&&n.RTCRtpSender&&!(n.RTCRtpSender&&"getStats"in n.RTCRtpReceiver.prototype)){var e=n.RTCPeerConnection.prototype.getReceivers;e&&(n.RTCPeerConnection.prototype.getReceivers=function(){var r=this,i=e.apply(this,[]);return i.forEach(function(s){return s._pc=r}),i}),So.wrapPeerConnectionEvent(n,"track",function(t){return t.receiver._pc=t.srcElement,t}),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function wf(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){var r=this;So.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&t.getTracks().includes(i.track)&&r.removeTrack(i)})})}function Sf(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function Cf(n){if(De(n)==="object"&&n.RTCPeerConnection){var e=n.RTCPeerConnection.prototype.addTransceiver;e&&(n.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var r=arguments[1]&&arguments[1].sendEncodings;r===void 0&&(r=[]),r=uf(r);var i=r.length>0;i&&r.forEach(function(l){if("rid"in l){var p=/^[a-z0-9]{0,16}$/i;if(!p.test(l.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in l&&!(parseFloat(l.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in l&&!(parseFloat(l.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var s=e.apply(this,arguments);if(i){var a=s.sender,f=a.getParameters();(!("encodings"in f)||f.encodings.length===1&&Object.keys(f.encodings[0]).length===0)&&(f.encodings=r,a.sendEncodings=r,this.setParametersPromises.push(a.setParameters(f).then(function(){delete a.sendEncodings}).catch(function(){delete a.sendEncodings})))}return s})}}function Ef(n){if(De(n)==="object"&&n.RTCRtpSender){var e=n.RTCRtpSender.prototype.getParameters;e&&(n.RTCRtpSender.prototype.getParameters=function(){var r=e.apply(this,arguments);return"encodings"in r||(r.encodings=[].concat(this.sendEncodings||[{}])),r})}}function If(n){if(De(n)==="object"&&n.RTCPeerConnection){var e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(){var r=arguments,i=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return e.apply(i,r)}).finally(function(){i.setParametersPromises=[]}):e.apply(this,arguments)}}}function Tf(n){if(De(n)==="object"&&n.RTCPeerConnection){var e=n.RTCPeerConnection.prototype.createAnswer;n.RTCPeerConnection.prototype.createAnswer=function(){var r=arguments,i=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return e.apply(i,r)}).finally(function(){i.setParametersPromises=[]}):e.apply(this,arguments)}}}});var Ro=F(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.shimAudioContext=Bf;ze.shimCallbacksAPI=Af;ze.shimConstraints=ko;ze.shimCreateOfferLegacy=Uf;ze.shimGetUserMedia=Mf;ze.shimLocalStreamsAPI=kf;ze.shimRTCIceServerUrls=Df;ze.shimRemoteStreamsAPI=Rf;ze.shimTrackEventTransceiver=Of;var Io=To(nt());function To(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(To=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||st(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function st(n){"@babel/helpers - typeof";return st=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},st(n)}function kf(n){if(!(st(n)!=="object"||!n.RTCPeerConnection)){if("getLocalStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in n.RTCPeerConnection.prototype)){var e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addStream=function(r){var i=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(r)||this._localStreams.push(r),r.getAudioTracks().forEach(function(s){return e.call(i,s,r)}),r.getVideoTracks().forEach(function(s){return e.call(i,s,r)})},n.RTCPeerConnection.prototype.addTrack=function(r){for(var i=this,s=arguments.length,a=new Array(s>1?s-1:0),f=1;f<s;f++)a[f-1]=arguments[f];return a&&a.forEach(function(l){i._localStreams?i._localStreams.includes(l)||i._localStreams.push(l):i._localStreams=[l]}),e.apply(this,arguments)}}"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(r){var i=this;this._localStreams||(this._localStreams=[]);var s=this._localStreams.indexOf(r);if(s!==-1){this._localStreams.splice(s,1);var a=r.getTracks();this.getSenders().forEach(function(f){a.includes(f.track)&&i.removeTrack(f)})}})}}function Rf(n){if(!(st(n)!=="object"||!n.RTCPeerConnection)&&("getRemoteStreams"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in n.RTCPeerConnection.prototype))){Object.defineProperty(n.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(r){var i=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=r),this.addEventListener("track",this._onaddstreampoly=function(s){s.streams.forEach(function(a){if(i._remoteStreams||(i._remoteStreams=[]),!i._remoteStreams.includes(a)){i._remoteStreams.push(a);var f=new Event("addstream");f.stream=a,i.dispatchEvent(f)}})})}});var e=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){var r=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(function(s){if(r._remoteStreams||(r._remoteStreams=[]),!(r._remoteStreams.indexOf(s)>=0)){r._remoteStreams.push(s);var a=new Event("addstream");a.stream=s,r.dispatchEvent(a)}})}),e.apply(r,arguments)}}}function Af(n){if(!(st(n)!=="object"||!n.RTCPeerConnection)){var e=n.RTCPeerConnection.prototype,t=e.createOffer,r=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(p,y){var x=arguments.length>=2?arguments[2]:arguments[0],E=t.apply(this,[x]);return y?(E.then(p,y),Promise.resolve()):E},e.createAnswer=function(p,y){var x=arguments.length>=2?arguments[2]:arguments[0],E=r.apply(this,[x]);return y?(E.then(p,y),Promise.resolve()):E};var f=function(p,y,x){var E=i.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E};e.setLocalDescription=f,f=function(p,y,x){var E=s.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E},e.setRemoteDescription=f,f=function(p,y,x){var E=a.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E},e.addIceCandidate=f}}function Mf(n){var e=n&&n.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){var t=e.mediaDevices,r=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=function(i){return r(ko(i))}}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(s,a,f){e.mediaDevices.getUserMedia(s).then(a,f)}.bind(e))}function ko(n){return n&&n.video!==void 0?Object.assign({},n,{video:Io.compactObject(n.video)}):n}function Df(n){if(n.RTCPeerConnection){var e=n.RTCPeerConnection;n.RTCPeerConnection=function(r,i){if(r&&r.iceServers){for(var s=[],a=0;a<r.iceServers.length;a++){var f=r.iceServers[a];f.urls===void 0&&f.url?(Io.deprecated("RTCIceServer.url","RTCIceServer.urls"),f=JSON.parse(JSON.stringify(f)),f.urls=f.url,delete f.url,s.push(f)):s.push(r.iceServers[a])}r.iceServers=s}return new e(r,i)},n.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(n.RTCPeerConnection,"generateCertificate",{get:function(){return e.generateCertificate}})}}function Of(n){st(n)==="object"&&n.RTCTrackEvent&&"receiver"in n.RTCTrackEvent.prototype&&!("transceiver"in n.RTCTrackEvent.prototype)&&Object.defineProperty(n.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function Uf(n){var e=n.RTCPeerConnection.prototype.createOffer;n.RTCPeerConnection.prototype.createOffer=function(r){if(r){typeof r.offerToReceiveAudio<"u"&&(r.offerToReceiveAudio=!!r.offerToReceiveAudio);var i=this.getTransceivers().find(function(a){return a.receiver.track.kind==="audio"});r.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):r.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio",{direction:"recvonly"}),typeof r.offerToReceiveVideo<"u"&&(r.offerToReceiveVideo=!!r.offerToReceiveVideo);var s=this.getTransceivers().find(function(a){return a.receiver.track.kind==="video"});r.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):r.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Bf(n){st(n)!=="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}});var si=F((Ol,ii)=>{"use strict";var I={};I.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};I.localCName=I.generateIdentifier();I.splitLines=function(n){return n.trim().split(`
3
- `).map(e=>e.trim())};I.splitSections=function(n){return n.split(`
4
- m=`).map((t,r)=>(r>0?"m="+t:t).trim()+`\r
5
- `)};I.getDescription=function(n){let e=I.splitSections(n);return e&&e[0]};I.getMediaSections=function(n){let e=I.splitSections(n);return e.shift(),e};I.matchPrefix=function(n,e){return I.splitLines(n).filter(t=>t.indexOf(e)===0)};I.parseCandidate=function(n){let e;n.indexOf("a=candidate:")===0?e=n.substring(12).split(" "):e=n.substring(10).split(" ");let t={foundation:e[0],component:{1:"rtp",2:"rtcp"}[e[1]]||e[1],protocol:e[2].toLowerCase(),priority:parseInt(e[3],10),ip:e[4],address:e[4],port:parseInt(e[5],10),type:e[7]};for(let r=8;r<e.length;r+=2)switch(e[r]){case"raddr":t.relatedAddress=e[r+1];break;case"rport":t.relatedPort=parseInt(e[r+1],10);break;case"tcptype":t.tcpType=e[r+1];break;case"ufrag":t.ufrag=e[r+1],t.usernameFragment=e[r+1];break;default:t[e[r]]===void 0&&(t[e[r]]=e[r+1]);break}return t};I.writeCandidate=function(n){let e=[];e.push(n.foundation);let t=n.component;t==="rtp"?e.push(1):t==="rtcp"?e.push(2):e.push(t),e.push(n.protocol.toUpperCase()),e.push(n.priority),e.push(n.address||n.ip),e.push(n.port);let r=n.type;return e.push("typ"),e.push(r),r!=="host"&&n.relatedAddress&&n.relatedPort!==void 0&&(e.push("raddr"),e.push(n.relatedAddress),e.push("rport"),e.push(n.relatedPort)),n.tcpType&&n.protocol.toLowerCase()==="tcp"&&(e.push("tcptype"),e.push(n.tcpType)),(n.usernameFragment||n.ufrag)&&(e.push("ufrag"),e.push(n.usernameFragment||n.ufrag)),"candidate:"+e.join(" ")};I.parseIceOptions=function(n){return n.substring(14).split(" ")};I.parseRtpMap=function(n){let e=n.substring(9).split(" "),t={payloadType:parseInt(e.shift(),10)};return e=e[0].split("/"),t.name=e[0],t.clockRate=parseInt(e[1],10),t.channels=e.length===3?parseInt(e[2],10):1,t.numChannels=t.channels,t};I.writeRtpMap=function(n){let e=n.payloadType;n.preferredPayloadType!==void 0&&(e=n.preferredPayloadType);let t=n.channels||n.numChannels||1;return"a=rtpmap:"+e+" "+n.name+"/"+n.clockRate+(t!==1?"/"+t:"")+`\r
6
- `};I.parseExtmap=function(n){let e=n.substring(9).split(" ");return{id:parseInt(e[0],10),direction:e[0].indexOf("/")>0?e[0].split("/")[1]:"sendrecv",uri:e[1],attributes:e.slice(2).join(" ")}};I.writeExtmap=function(n){return"a=extmap:"+(n.id||n.preferredId)+(n.direction&&n.direction!=="sendrecv"?"/"+n.direction:"")+" "+n.uri+(n.attributes?" "+n.attributes:"")+`\r
7
- `};I.parseFmtp=function(n){let e={},t,r=n.substring(n.indexOf(" ")+1).split(";");for(let i=0;i<r.length;i++)t=r[i].trim().split("="),e[t[0].trim()]=t[1];return e};I.writeFmtp=function(n){let e="",t=n.payloadType;if(n.preferredPayloadType!==void 0&&(t=n.preferredPayloadType),n.parameters&&Object.keys(n.parameters).length){let r=[];Object.keys(n.parameters).forEach(i=>{n.parameters[i]!==void 0?r.push(i+"="+n.parameters[i]):r.push(i)}),e+="a=fmtp:"+t+" "+r.join(";")+`\r
8
- `}return e};I.parseRtcpFb=function(n){let e=n.substring(n.indexOf(" ")+1).split(" ");return{type:e.shift(),parameter:e.join(" ")}};I.writeRtcpFb=function(n){let e="",t=n.payloadType;return n.preferredPayloadType!==void 0&&(t=n.preferredPayloadType),n.rtcpFeedback&&n.rtcpFeedback.length&&n.rtcpFeedback.forEach(r=>{e+="a=rtcp-fb:"+t+" "+r.type+(r.parameter&&r.parameter.length?" "+r.parameter:"")+`\r
9
- `}),e};I.parseSsrcMedia=function(n){let e=n.indexOf(" "),t={ssrc:parseInt(n.substring(7,e),10)},r=n.indexOf(":",e);return r>-1?(t.attribute=n.substring(e+1,r),t.value=n.substring(r+1)):t.attribute=n.substring(e+1),t};I.parseSsrcGroup=function(n){let e=n.substring(13).split(" ");return{semantics:e.shift(),ssrcs:e.map(t=>parseInt(t,10))}};I.getMid=function(n){let e=I.matchPrefix(n,"a=mid:")[0];if(e)return e.substring(6)};I.parseFingerprint=function(n){let e=n.substring(14).split(" ");return{algorithm:e[0].toLowerCase(),value:e[1].toUpperCase()}};I.getDtlsParameters=function(n,e){return{role:"auto",fingerprints:I.matchPrefix(n+e,"a=fingerprint:").map(I.parseFingerprint)}};I.writeDtlsParameters=function(n,e){let t="a=setup:"+e+`\r
10
- `;return n.fingerprints.forEach(r=>{t+="a=fingerprint:"+r.algorithm+" "+r.value+`\r
11
- `}),t};I.parseCryptoLine=function(n){let e=n.substring(9).split(" ");return{tag:parseInt(e[0],10),cryptoSuite:e[1],keyParams:e[2],sessionParams:e.slice(3)}};I.writeCryptoLine=function(n){return"a=crypto:"+n.tag+" "+n.cryptoSuite+" "+(typeof n.keyParams=="object"?I.writeCryptoKeyParams(n.keyParams):n.keyParams)+(n.sessionParams?" "+n.sessionParams.join(" "):"")+`\r
12
- `};I.parseCryptoKeyParams=function(n){if(n.indexOf("inline:")!==0)return null;let e=n.substring(7).split("|");return{keyMethod:"inline",keySalt:e[0],lifeTime:e[1],mkiValue:e[2]?e[2].split(":")[0]:void 0,mkiLength:e[2]?e[2].split(":")[1]:void 0}};I.writeCryptoKeyParams=function(n){return n.keyMethod+":"+n.keySalt+(n.lifeTime?"|"+n.lifeTime:"")+(n.mkiValue&&n.mkiLength?"|"+n.mkiValue+":"+n.mkiLength:"")};I.getCryptoParameters=function(n,e){return I.matchPrefix(n+e,"a=crypto:").map(I.parseCryptoLine)};I.getIceParameters=function(n,e){let t=I.matchPrefix(n+e,"a=ice-ufrag:")[0],r=I.matchPrefix(n+e,"a=ice-pwd:")[0];return t&&r?{usernameFragment:t.substring(12),password:r.substring(10)}:null};I.writeIceParameters=function(n){let e="a=ice-ufrag:"+n.usernameFragment+`\r
13
- a=ice-pwd:`+n.password+`\r
14
- `;return n.iceLite&&(e+=`a=ice-lite\r
15
- `),e};I.parseRtpParameters=function(n){let e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=I.splitLines(n)[0].split(" ");e.profile=r[2];for(let s=3;s<r.length;s++){let a=r[s],f=I.matchPrefix(n,"a=rtpmap:"+a+" ")[0];if(f){let l=I.parseRtpMap(f),p=I.matchPrefix(n,"a=fmtp:"+a+" ");switch(l.parameters=p.length?I.parseFmtp(p[0]):{},l.rtcpFeedback=I.matchPrefix(n,"a=rtcp-fb:"+a+" ").map(I.parseRtcpFb),e.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":e.fecMechanisms.push(l.name.toUpperCase());break;default:break}}}I.matchPrefix(n,"a=extmap:").forEach(s=>{e.headerExtensions.push(I.parseExtmap(s))});let i=I.matchPrefix(n,"a=rtcp-fb:* ").map(I.parseRtcpFb);return e.codecs.forEach(s=>{i.forEach(a=>{s.rtcpFeedback.find(l=>l.type===a.type&&l.parameter===a.parameter)||s.rtcpFeedback.push(a)})}),e};I.writeRtpDescription=function(n,e){let t="";t+="m="+n+" ",t+=e.codecs.length>0?"9":"0",t+=" "+(e.profile||"UDP/TLS/RTP/SAVPF")+" ",t+=e.codecs.map(i=>i.preferredPayloadType!==void 0?i.preferredPayloadType:i.payloadType).join(" ")+`\r
1
+ var DignityJS=(()=>{var ja=Object.defineProperty;var Ga=r=>{throw TypeError(r)};var Fa=(r,e,t)=>e in r?ja(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var In=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});var K=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var pr=(r,e,t)=>Fa(r,typeof e!="symbol"?e+"":e,t);var Ut=(r,e,t)=>e.has(r)?Ga("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t);var ps=K(()=>{});var wt=K((_l,yr)=>{(function(r){"use strict";var e=function(c){var u,d=new Float64Array(16);if(c)for(u=0;u<c.length;u++)d[u]=c[u];return d},t=function(){throw new Error("no PRNG")},n=new Uint8Array(16),i=new Uint8Array(32);i[0]=9;var s=e(),a=e([1]),f=e([56129,1]),l=e([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),p=e([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),y=e([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),x=e([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),E=e([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function G(c,u,d,o){c[u]=d>>24&255,c[u+1]=d>>16&255,c[u+2]=d>>8&255,c[u+3]=d&255,c[u+4]=o>>24&255,c[u+5]=o>>16&255,c[u+6]=o>>8&255,c[u+7]=o&255}function W(c,u,d,o,h){var g,b=0;for(g=0;g<h;g++)b|=c[u+g]^d[o+g];return(1&b-1>>>8)-1}function ie(c,u,d,o){return W(c,u,d,o,16)}function ue(c,u,d,o){return W(c,u,d,o,32)}function be(c,u,d,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,g=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,b=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,S=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,k=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=u[0]&255|(u[1]&255)<<8|(u[2]&255)<<16|(u[3]&255)<<24,ae=u[4]&255|(u[5]&255)<<8|(u[6]&255)<<16|(u[7]&255)<<24,D=u[8]&255|(u[9]&255)<<8|(u[10]&255)<<16|(u[11]&255)<<24,$=u[12]&255|(u[13]&255)<<8|(u[14]&255)<<16|(u[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,J=d[16]&255|(d[17]&255)<<8|(d[18]&255)<<16|(d[19]&255)<<24,Y=d[20]&255|(d[21]&255)<<8|(d[22]&255)<<16|(d[23]&255)<<24,z=d[24]&255|(d[25]&255)<<8|(d[26]&255)<<16|(d[27]&255)<<24,H=d[28]&255|(d[29]&255)<<8|(d[30]&255)<<16|(d[31]&255)<<24,V=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,F=g,M=b,U=S,L=k,R=j,v=A,_=ae,C=D,P=$,w=q,T=J,N=Y,X=z,Q=H,Z=V,m,re=0;re<20;re+=2)m=O+N|0,L^=m<<7|m>>>25,m=L+O|0,C^=m<<9|m>>>23,m=C+L|0,N^=m<<13|m>>>19,m=N+C|0,O^=m<<18|m>>>14,m=R+F|0,P^=m<<7|m>>>25,m=P+R|0,X^=m<<9|m>>>23,m=X+P|0,F^=m<<13|m>>>19,m=F+X|0,R^=m<<18|m>>>14,m=w+v|0,Q^=m<<7|m>>>25,m=Q+w|0,M^=m<<9|m>>>23,m=M+Q|0,v^=m<<13|m>>>19,m=v+M|0,w^=m<<18|m>>>14,m=Z+T|0,U^=m<<7|m>>>25,m=U+Z|0,_^=m<<9|m>>>23,m=_+U|0,T^=m<<13|m>>>19,m=T+_|0,Z^=m<<18|m>>>14,m=O+U|0,F^=m<<7|m>>>25,m=F+O|0,M^=m<<9|m>>>23,m=M+F|0,U^=m<<13|m>>>19,m=U+M|0,O^=m<<18|m>>>14,m=R+L|0,v^=m<<7|m>>>25,m=v+R|0,_^=m<<9|m>>>23,m=_+v|0,L^=m<<13|m>>>19,m=L+_|0,R^=m<<18|m>>>14,m=w+P|0,T^=m<<7|m>>>25,m=T+w|0,C^=m<<9|m>>>23,m=C+T|0,P^=m<<13|m>>>19,m=P+C|0,w^=m<<18|m>>>14,m=Z+Q|0,N^=m<<7|m>>>25,m=N+Z|0,X^=m<<9|m>>>23,m=X+N|0,Q^=m<<13|m>>>19,m=Q+X|0,Z^=m<<18|m>>>14;O=O+h|0,F=F+g|0,M=M+b|0,U=U+S|0,L=L+k|0,R=R+j|0,v=v+A|0,_=_+ae|0,C=C+D|0,P=P+$|0,w=w+q|0,T=T+J|0,N=N+Y|0,X=X+z|0,Q=Q+H|0,Z=Z+V|0,c[0]=O>>>0&255,c[1]=O>>>8&255,c[2]=O>>>16&255,c[3]=O>>>24&255,c[4]=F>>>0&255,c[5]=F>>>8&255,c[6]=F>>>16&255,c[7]=F>>>24&255,c[8]=M>>>0&255,c[9]=M>>>8&255,c[10]=M>>>16&255,c[11]=M>>>24&255,c[12]=U>>>0&255,c[13]=U>>>8&255,c[14]=U>>>16&255,c[15]=U>>>24&255,c[16]=L>>>0&255,c[17]=L>>>8&255,c[18]=L>>>16&255,c[19]=L>>>24&255,c[20]=R>>>0&255,c[21]=R>>>8&255,c[22]=R>>>16&255,c[23]=R>>>24&255,c[24]=v>>>0&255,c[25]=v>>>8&255,c[26]=v>>>16&255,c[27]=v>>>24&255,c[28]=_>>>0&255,c[29]=_>>>8&255,c[30]=_>>>16&255,c[31]=_>>>24&255,c[32]=C>>>0&255,c[33]=C>>>8&255,c[34]=C>>>16&255,c[35]=C>>>24&255,c[36]=P>>>0&255,c[37]=P>>>8&255,c[38]=P>>>16&255,c[39]=P>>>24&255,c[40]=w>>>0&255,c[41]=w>>>8&255,c[42]=w>>>16&255,c[43]=w>>>24&255,c[44]=T>>>0&255,c[45]=T>>>8&255,c[46]=T>>>16&255,c[47]=T>>>24&255,c[48]=N>>>0&255,c[49]=N>>>8&255,c[50]=N>>>16&255,c[51]=N>>>24&255,c[52]=X>>>0&255,c[53]=X>>>8&255,c[54]=X>>>16&255,c[55]=X>>>24&255,c[56]=Q>>>0&255,c[57]=Q>>>8&255,c[58]=Q>>>16&255,c[59]=Q>>>24&255,c[60]=Z>>>0&255,c[61]=Z>>>8&255,c[62]=Z>>>16&255,c[63]=Z>>>24&255}function bt(c,u,d,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,g=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,b=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,S=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,k=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=u[0]&255|(u[1]&255)<<8|(u[2]&255)<<16|(u[3]&255)<<24,ae=u[4]&255|(u[5]&255)<<8|(u[6]&255)<<16|(u[7]&255)<<24,D=u[8]&255|(u[9]&255)<<8|(u[10]&255)<<16|(u[11]&255)<<24,$=u[12]&255|(u[13]&255)<<8|(u[14]&255)<<16|(u[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,J=d[16]&255|(d[17]&255)<<8|(d[18]&255)<<16|(d[19]&255)<<24,Y=d[20]&255|(d[21]&255)<<8|(d[22]&255)<<16|(d[23]&255)<<24,z=d[24]&255|(d[25]&255)<<8|(d[26]&255)<<16|(d[27]&255)<<24,H=d[28]&255|(d[29]&255)<<8|(d[30]&255)<<16|(d[31]&255)<<24,V=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,F=g,M=b,U=S,L=k,R=j,v=A,_=ae,C=D,P=$,w=q,T=J,N=Y,X=z,Q=H,Z=V,m,re=0;re<20;re+=2)m=O+N|0,L^=m<<7|m>>>25,m=L+O|0,C^=m<<9|m>>>23,m=C+L|0,N^=m<<13|m>>>19,m=N+C|0,O^=m<<18|m>>>14,m=R+F|0,P^=m<<7|m>>>25,m=P+R|0,X^=m<<9|m>>>23,m=X+P|0,F^=m<<13|m>>>19,m=F+X|0,R^=m<<18|m>>>14,m=w+v|0,Q^=m<<7|m>>>25,m=Q+w|0,M^=m<<9|m>>>23,m=M+Q|0,v^=m<<13|m>>>19,m=v+M|0,w^=m<<18|m>>>14,m=Z+T|0,U^=m<<7|m>>>25,m=U+Z|0,_^=m<<9|m>>>23,m=_+U|0,T^=m<<13|m>>>19,m=T+_|0,Z^=m<<18|m>>>14,m=O+U|0,F^=m<<7|m>>>25,m=F+O|0,M^=m<<9|m>>>23,m=M+F|0,U^=m<<13|m>>>19,m=U+M|0,O^=m<<18|m>>>14,m=R+L|0,v^=m<<7|m>>>25,m=v+R|0,_^=m<<9|m>>>23,m=_+v|0,L^=m<<13|m>>>19,m=L+_|0,R^=m<<18|m>>>14,m=w+P|0,T^=m<<7|m>>>25,m=T+w|0,C^=m<<9|m>>>23,m=C+T|0,P^=m<<13|m>>>19,m=P+C|0,w^=m<<18|m>>>14,m=Z+Q|0,N^=m<<7|m>>>25,m=N+Z|0,X^=m<<9|m>>>23,m=X+N|0,Q^=m<<13|m>>>19,m=Q+X|0,Z^=m<<18|m>>>14;c[0]=O>>>0&255,c[1]=O>>>8&255,c[2]=O>>>16&255,c[3]=O>>>24&255,c[4]=R>>>0&255,c[5]=R>>>8&255,c[6]=R>>>16&255,c[7]=R>>>24&255,c[8]=w>>>0&255,c[9]=w>>>8&255,c[10]=w>>>16&255,c[11]=w>>>24&255,c[12]=Z>>>0&255,c[13]=Z>>>8&255,c[14]=Z>>>16&255,c[15]=Z>>>24&255,c[16]=v>>>0&255,c[17]=v>>>8&255,c[18]=v>>>16&255,c[19]=v>>>24&255,c[20]=_>>>0&255,c[21]=_>>>8&255,c[22]=_>>>16&255,c[23]=_>>>24&255,c[24]=C>>>0&255,c[25]=C>>>8&255,c[26]=C>>>16&255,c[27]=C>>>24&255,c[28]=P>>>0&255,c[29]=P>>>8&255,c[30]=P>>>16&255,c[31]=P>>>24&255}function nr(c,u,d,o){be(c,u,d,o)}function ir(c,u,d,o){bt(c,u,d,o)}var ut=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Xi(c,u,d,o,h,g,b){var S=new Uint8Array(16),k=new Uint8Array(64),j,A;for(A=0;A<16;A++)S[A]=0;for(A=0;A<8;A++)S[A]=g[A];for(;h>=64;){for(nr(k,S,b,ut),A=0;A<64;A++)c[u+A]=d[o+A]^k[A];for(j=1,A=8;A<16;A++)j=j+(S[A]&255)|0,S[A]=j&255,j>>>=8;h-=64,u+=64,o+=64}if(h>0)for(nr(k,S,b,ut),A=0;A<h;A++)c[u+A]=d[o+A]^k[A];return 0}function Zi(c,u,d,o,h){var g=new Uint8Array(16),b=new Uint8Array(64),S,k;for(k=0;k<16;k++)g[k]=0;for(k=0;k<8;k++)g[k]=o[k];for(;d>=64;){for(nr(b,g,h,ut),k=0;k<64;k++)c[u+k]=b[k];for(S=1,k=8;k<16;k++)S=S+(g[k]&255)|0,g[k]=S&255,S>>>=8;d-=64,u+=64}if(d>0)for(nr(b,g,h,ut),k=0;k<d;k++)c[u+k]=b[k];return 0}function Qi(c,u,d,o,h){var g=new Uint8Array(32);ir(g,o,h,ut);for(var b=new Uint8Array(8),S=0;S<8;S++)b[S]=o[S+16];return Zi(c,u,d,b,g)}function un(c,u,d,o,h,g,b){var S=new Uint8Array(32);ir(S,g,b,ut);for(var k=new Uint8Array(8),j=0;j<8;j++)k[j]=g[j+16];return Xi(c,u,d,o,h,k,S)}var sr=function(c){this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.leftover=0,this.fin=0;var u,d,o,h,g,b,S,k;u=c[0]&255|(c[1]&255)<<8,this.r[0]=u&8191,d=c[2]&255|(c[3]&255)<<8,this.r[1]=(u>>>13|d<<3)&8191,o=c[4]&255|(c[5]&255)<<8,this.r[2]=(d>>>10|o<<6)&7939,h=c[6]&255|(c[7]&255)<<8,this.r[3]=(o>>>7|h<<9)&8191,g=c[8]&255|(c[9]&255)<<8,this.r[4]=(h>>>4|g<<12)&255,this.r[5]=g>>>1&8190,b=c[10]&255|(c[11]&255)<<8,this.r[6]=(g>>>14|b<<2)&8191,S=c[12]&255|(c[13]&255)<<8,this.r[7]=(b>>>11|S<<5)&8065,k=c[14]&255|(c[15]&255)<<8,this.r[8]=(S>>>8|k<<8)&8191,this.r[9]=k>>>5&127,this.pad[0]=c[16]&255|(c[17]&255)<<8,this.pad[1]=c[18]&255|(c[19]&255)<<8,this.pad[2]=c[20]&255|(c[21]&255)<<8,this.pad[3]=c[22]&255|(c[23]&255)<<8,this.pad[4]=c[24]&255|(c[25]&255)<<8,this.pad[5]=c[26]&255|(c[27]&255)<<8,this.pad[6]=c[28]&255|(c[29]&255)<<8,this.pad[7]=c[30]&255|(c[31]&255)<<8};sr.prototype.blocks=function(c,u,d){for(var o=this.fin?0:2048,h,g,b,S,k,j,A,ae,D,$,q,J,Y,z,H,V,O,F,M,U=this.h[0],L=this.h[1],R=this.h[2],v=this.h[3],_=this.h[4],C=this.h[5],P=this.h[6],w=this.h[7],T=this.h[8],N=this.h[9],X=this.r[0],Q=this.r[1],Z=this.r[2],m=this.r[3],re=this.r[4],ce=this.r[5],fe=this.r[6],ee=this.r[7],se=this.r[8],oe=this.r[9];d>=16;)h=c[u+0]&255|(c[u+1]&255)<<8,U+=h&8191,g=c[u+2]&255|(c[u+3]&255)<<8,L+=(h>>>13|g<<3)&8191,b=c[u+4]&255|(c[u+5]&255)<<8,R+=(g>>>10|b<<6)&8191,S=c[u+6]&255|(c[u+7]&255)<<8,v+=(b>>>7|S<<9)&8191,k=c[u+8]&255|(c[u+9]&255)<<8,_+=(S>>>4|k<<12)&8191,C+=k>>>1&8191,j=c[u+10]&255|(c[u+11]&255)<<8,P+=(k>>>14|j<<2)&8191,A=c[u+12]&255|(c[u+13]&255)<<8,w+=(j>>>11|A<<5)&8191,ae=c[u+14]&255|(c[u+15]&255)<<8,T+=(A>>>8|ae<<8)&8191,N+=ae>>>5|o,D=0,$=D,$+=U*X,$+=L*(5*oe),$+=R*(5*se),$+=v*(5*ee),$+=_*(5*fe),D=$>>>13,$&=8191,$+=C*(5*ce),$+=P*(5*re),$+=w*(5*m),$+=T*(5*Z),$+=N*(5*Q),D+=$>>>13,$&=8191,q=D,q+=U*Q,q+=L*X,q+=R*(5*oe),q+=v*(5*se),q+=_*(5*ee),D=q>>>13,q&=8191,q+=C*(5*fe),q+=P*(5*ce),q+=w*(5*re),q+=T*(5*m),q+=N*(5*Z),D+=q>>>13,q&=8191,J=D,J+=U*Z,J+=L*Q,J+=R*X,J+=v*(5*oe),J+=_*(5*se),D=J>>>13,J&=8191,J+=C*(5*ee),J+=P*(5*fe),J+=w*(5*ce),J+=T*(5*re),J+=N*(5*m),D+=J>>>13,J&=8191,Y=D,Y+=U*m,Y+=L*Z,Y+=R*Q,Y+=v*X,Y+=_*(5*oe),D=Y>>>13,Y&=8191,Y+=C*(5*se),Y+=P*(5*ee),Y+=w*(5*fe),Y+=T*(5*ce),Y+=N*(5*re),D+=Y>>>13,Y&=8191,z=D,z+=U*re,z+=L*m,z+=R*Z,z+=v*Q,z+=_*X,D=z>>>13,z&=8191,z+=C*(5*oe),z+=P*(5*se),z+=w*(5*ee),z+=T*(5*fe),z+=N*(5*ce),D+=z>>>13,z&=8191,H=D,H+=U*ce,H+=L*re,H+=R*m,H+=v*Z,H+=_*Q,D=H>>>13,H&=8191,H+=C*X,H+=P*(5*oe),H+=w*(5*se),H+=T*(5*ee),H+=N*(5*fe),D+=H>>>13,H&=8191,V=D,V+=U*fe,V+=L*ce,V+=R*re,V+=v*m,V+=_*Z,D=V>>>13,V&=8191,V+=C*Q,V+=P*X,V+=w*(5*oe),V+=T*(5*se),V+=N*(5*ee),D+=V>>>13,V&=8191,O=D,O+=U*ee,O+=L*fe,O+=R*ce,O+=v*re,O+=_*m,D=O>>>13,O&=8191,O+=C*Z,O+=P*Q,O+=w*X,O+=T*(5*oe),O+=N*(5*se),D+=O>>>13,O&=8191,F=D,F+=U*se,F+=L*ee,F+=R*fe,F+=v*ce,F+=_*re,D=F>>>13,F&=8191,F+=C*m,F+=P*Z,F+=w*Q,F+=T*X,F+=N*(5*oe),D+=F>>>13,F&=8191,M=D,M+=U*oe,M+=L*se,M+=R*ee,M+=v*fe,M+=_*ce,D=M>>>13,M&=8191,M+=C*re,M+=P*m,M+=w*Z,M+=T*Q,M+=N*X,D+=M>>>13,M&=8191,D=(D<<2)+D|0,D=D+$|0,$=D&8191,D=D>>>13,q+=D,U=$,L=q,R=J,v=Y,_=z,C=H,P=V,w=O,T=F,N=M,u+=16,d-=16;this.h[0]=U,this.h[1]=L,this.h[2]=R,this.h[3]=v,this.h[4]=_,this.h[5]=C,this.h[6]=P,this.h[7]=w,this.h[8]=T,this.h[9]=N},sr.prototype.finish=function(c,u){var d=new Uint16Array(10),o,h,g,b;if(this.leftover){for(b=this.leftover,this.buffer[b++]=1;b<16;b++)this.buffer[b]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,b=2;b<10;b++)this.h[b]+=o,o=this.h[b]>>>13,this.h[b]&=8191;for(this.h[0]+=o*5,o=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=o,o=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=o,d[0]=this.h[0]+5,o=d[0]>>>13,d[0]&=8191,b=1;b<10;b++)d[b]=this.h[b]+o,o=d[b]>>>13,d[b]&=8191;for(d[9]-=8192,h=(o^1)-1,b=0;b<10;b++)d[b]&=h;for(h=~h,b=0;b<10;b++)this.h[b]=this.h[b]&h|d[b];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,g=this.h[0]+this.pad[0],this.h[0]=g&65535,b=1;b<8;b++)g=(this.h[b]+this.pad[b]|0)+(g>>>16)|0,this.h[b]=g&65535;c[u+0]=this.h[0]>>>0&255,c[u+1]=this.h[0]>>>8&255,c[u+2]=this.h[1]>>>0&255,c[u+3]=this.h[1]>>>8&255,c[u+4]=this.h[2]>>>0&255,c[u+5]=this.h[2]>>>8&255,c[u+6]=this.h[3]>>>0&255,c[u+7]=this.h[3]>>>8&255,c[u+8]=this.h[4]>>>0&255,c[u+9]=this.h[4]>>>8&255,c[u+10]=this.h[5]>>>0&255,c[u+11]=this.h[5]>>>8&255,c[u+12]=this.h[6]>>>0&255,c[u+13]=this.h[6]>>>8&255,c[u+14]=this.h[7]>>>0&255,c[u+15]=this.h[7]>>>8&255},sr.prototype.update=function(c,u,d){var o,h;if(this.leftover){for(h=16-this.leftover,h>d&&(h=d),o=0;o<h;o++)this.buffer[this.leftover+o]=c[u+o];if(d-=h,u+=h,this.leftover+=h,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(d>=16&&(h=d-d%16,this.blocks(c,u,h),u+=h,d-=h),d){for(o=0;o<d;o++)this.buffer[this.leftover+o]=c[u+o];this.leftover+=d}};function ln(c,u,d,o,h,g){var b=new sr(g);return b.update(d,o,h),b.finish(c,u),0}function es(c,u,d,o,h,g){var b=new Uint8Array(16);return ln(b,0,d,o,h,g),ie(c,u,b,0)}function hn(c,u,d,o,h){var g;if(d<32)return-1;for(un(c,0,u,0,d,o,h),ln(c,16,c,32,d-32,c),g=0;g<16;g++)c[g]=0;return 0}function pn(c,u,d,o,h){var g,b=new Uint8Array(32);if(d<32||(Qi(b,0,32,o,h),es(u,16,u,32,d-32,b)!==0))return-1;for(un(c,0,u,0,d,o,h),g=0;g<32;g++)c[g]=0;return 0}function Qe(c,u){var d;for(d=0;d<16;d++)c[d]=u[d]|0}function yn(c){var u,d,o=1;for(u=0;u<16;u++)d=c[u]+o+65535,o=Math.floor(d/65536),c[u]=d-o*65536;c[0]+=o-1+37*(o-1)}function vt(c,u,d){for(var o,h=~(d-1),g=0;g<16;g++)o=h&(c[g]^u[g]),c[g]^=o,u[g]^=o}function _t(c,u){var d,o,h,g=e(),b=e();for(d=0;d<16;d++)b[d]=u[d];for(yn(b),yn(b),yn(b),o=0;o<2;o++){for(g[0]=b[0]-65517,d=1;d<15;d++)g[d]=b[d]-65535-(g[d-1]>>16&1),g[d-1]&=65535;g[15]=b[15]-32767-(g[14]>>16&1),h=g[15]>>16&1,g[14]&=65535,vt(b,g,1-h)}for(d=0;d<16;d++)c[2*d]=b[d]&255,c[2*d+1]=b[d]>>8}function ts(c,u){var d=new Uint8Array(32),o=new Uint8Array(32);return _t(d,c),_t(o,u),ue(d,0,o,0)}function rs(c){var u=new Uint8Array(32);return _t(u,c),u[0]&1}function mn(c,u){var d;for(d=0;d<16;d++)c[d]=u[2*d]+(u[2*d+1]<<8);c[15]&=32767}function Fe(c,u,d){for(var o=0;o<16;o++)c[o]=u[o]+d[o]}function Ke(c,u,d){for(var o=0;o<16;o++)c[o]=u[o]-d[o]}function ne(c,u,d){var o,h,g=0,b=0,S=0,k=0,j=0,A=0,ae=0,D=0,$=0,q=0,J=0,Y=0,z=0,H=0,V=0,O=0,F=0,M=0,U=0,L=0,R=0,v=0,_=0,C=0,P=0,w=0,T=0,N=0,X=0,Q=0,Z=0,m=d[0],re=d[1],ce=d[2],fe=d[3],ee=d[4],se=d[5],oe=d[6],xe=d[7],de=d[8],le=d[9],he=d[10],pe=d[11],_e=d[12],Se=d[13],we=d[14],Ce=d[15];o=u[0],g+=o*m,b+=o*re,S+=o*ce,k+=o*fe,j+=o*ee,A+=o*se,ae+=o*oe,D+=o*xe,$+=o*de,q+=o*le,J+=o*he,Y+=o*pe,z+=o*_e,H+=o*Se,V+=o*we,O+=o*Ce,o=u[1],b+=o*m,S+=o*re,k+=o*ce,j+=o*fe,A+=o*ee,ae+=o*se,D+=o*oe,$+=o*xe,q+=o*de,J+=o*le,Y+=o*he,z+=o*pe,H+=o*_e,V+=o*Se,O+=o*we,F+=o*Ce,o=u[2],S+=o*m,k+=o*re,j+=o*ce,A+=o*fe,ae+=o*ee,D+=o*se,$+=o*oe,q+=o*xe,J+=o*de,Y+=o*le,z+=o*he,H+=o*pe,V+=o*_e,O+=o*Se,F+=o*we,M+=o*Ce,o=u[3],k+=o*m,j+=o*re,A+=o*ce,ae+=o*fe,D+=o*ee,$+=o*se,q+=o*oe,J+=o*xe,Y+=o*de,z+=o*le,H+=o*he,V+=o*pe,O+=o*_e,F+=o*Se,M+=o*we,U+=o*Ce,o=u[4],j+=o*m,A+=o*re,ae+=o*ce,D+=o*fe,$+=o*ee,q+=o*se,J+=o*oe,Y+=o*xe,z+=o*de,H+=o*le,V+=o*he,O+=o*pe,F+=o*_e,M+=o*Se,U+=o*we,L+=o*Ce,o=u[5],A+=o*m,ae+=o*re,D+=o*ce,$+=o*fe,q+=o*ee,J+=o*se,Y+=o*oe,z+=o*xe,H+=o*de,V+=o*le,O+=o*he,F+=o*pe,M+=o*_e,U+=o*Se,L+=o*we,R+=o*Ce,o=u[6],ae+=o*m,D+=o*re,$+=o*ce,q+=o*fe,J+=o*ee,Y+=o*se,z+=o*oe,H+=o*xe,V+=o*de,O+=o*le,F+=o*he,M+=o*pe,U+=o*_e,L+=o*Se,R+=o*we,v+=o*Ce,o=u[7],D+=o*m,$+=o*re,q+=o*ce,J+=o*fe,Y+=o*ee,z+=o*se,H+=o*oe,V+=o*xe,O+=o*de,F+=o*le,M+=o*he,U+=o*pe,L+=o*_e,R+=o*Se,v+=o*we,_+=o*Ce,o=u[8],$+=o*m,q+=o*re,J+=o*ce,Y+=o*fe,z+=o*ee,H+=o*se,V+=o*oe,O+=o*xe,F+=o*de,M+=o*le,U+=o*he,L+=o*pe,R+=o*_e,v+=o*Se,_+=o*we,C+=o*Ce,o=u[9],q+=o*m,J+=o*re,Y+=o*ce,z+=o*fe,H+=o*ee,V+=o*se,O+=o*oe,F+=o*xe,M+=o*de,U+=o*le,L+=o*he,R+=o*pe,v+=o*_e,_+=o*Se,C+=o*we,P+=o*Ce,o=u[10],J+=o*m,Y+=o*re,z+=o*ce,H+=o*fe,V+=o*ee,O+=o*se,F+=o*oe,M+=o*xe,U+=o*de,L+=o*le,R+=o*he,v+=o*pe,_+=o*_e,C+=o*Se,P+=o*we,w+=o*Ce,o=u[11],Y+=o*m,z+=o*re,H+=o*ce,V+=o*fe,O+=o*ee,F+=o*se,M+=o*oe,U+=o*xe,L+=o*de,R+=o*le,v+=o*he,_+=o*pe,C+=o*_e,P+=o*Se,w+=o*we,T+=o*Ce,o=u[12],z+=o*m,H+=o*re,V+=o*ce,O+=o*fe,F+=o*ee,M+=o*se,U+=o*oe,L+=o*xe,R+=o*de,v+=o*le,_+=o*he,C+=o*pe,P+=o*_e,w+=o*Se,T+=o*we,N+=o*Ce,o=u[13],H+=o*m,V+=o*re,O+=o*ce,F+=o*fe,M+=o*ee,U+=o*se,L+=o*oe,R+=o*xe,v+=o*de,_+=o*le,C+=o*he,P+=o*pe,w+=o*_e,T+=o*Se,N+=o*we,X+=o*Ce,o=u[14],V+=o*m,O+=o*re,F+=o*ce,M+=o*fe,U+=o*ee,L+=o*se,R+=o*oe,v+=o*xe,_+=o*de,C+=o*le,P+=o*he,w+=o*pe,T+=o*_e,N+=o*Se,X+=o*we,Q+=o*Ce,o=u[15],O+=o*m,F+=o*re,M+=o*ce,U+=o*fe,L+=o*ee,R+=o*se,v+=o*oe,_+=o*xe,C+=o*de,P+=o*le,w+=o*he,T+=o*pe,N+=o*_e,X+=o*Se,Q+=o*we,Z+=o*Ce,g+=38*F,b+=38*M,S+=38*U,k+=38*L,j+=38*R,A+=38*v,ae+=38*_,D+=38*C,$+=38*P,q+=38*w,J+=38*T,Y+=38*N,z+=38*X,H+=38*Q,V+=38*Z,h=1,o=g+h+65535,h=Math.floor(o/65536),g=o-h*65536,o=b+h+65535,h=Math.floor(o/65536),b=o-h*65536,o=S+h+65535,h=Math.floor(o/65536),S=o-h*65536,o=k+h+65535,h=Math.floor(o/65536),k=o-h*65536,o=j+h+65535,h=Math.floor(o/65536),j=o-h*65536,o=A+h+65535,h=Math.floor(o/65536),A=o-h*65536,o=ae+h+65535,h=Math.floor(o/65536),ae=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=$+h+65535,h=Math.floor(o/65536),$=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=J+h+65535,h=Math.floor(o/65536),J=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=o-h*65536,o=z+h+65535,h=Math.floor(o/65536),z=o-h*65536,o=H+h+65535,h=Math.floor(o/65536),H=o-h*65536,o=V+h+65535,h=Math.floor(o/65536),V=o-h*65536,o=O+h+65535,h=Math.floor(o/65536),O=o-h*65536,g+=h-1+37*(h-1),h=1,o=g+h+65535,h=Math.floor(o/65536),g=o-h*65536,o=b+h+65535,h=Math.floor(o/65536),b=o-h*65536,o=S+h+65535,h=Math.floor(o/65536),S=o-h*65536,o=k+h+65535,h=Math.floor(o/65536),k=o-h*65536,o=j+h+65535,h=Math.floor(o/65536),j=o-h*65536,o=A+h+65535,h=Math.floor(o/65536),A=o-h*65536,o=ae+h+65535,h=Math.floor(o/65536),ae=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=$+h+65535,h=Math.floor(o/65536),$=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=J+h+65535,h=Math.floor(o/65536),J=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=o-h*65536,o=z+h+65535,h=Math.floor(o/65536),z=o-h*65536,o=H+h+65535,h=Math.floor(o/65536),H=o-h*65536,o=V+h+65535,h=Math.floor(o/65536),V=o-h*65536,o=O+h+65535,h=Math.floor(o/65536),O=o-h*65536,g+=h-1+37*(h-1),c[0]=g,c[1]=b,c[2]=S,c[3]=k,c[4]=j,c[5]=A,c[6]=ae,c[7]=D,c[8]=$,c[9]=q,c[10]=J,c[11]=Y,c[12]=z,c[13]=H,c[14]=V,c[15]=O}function Le(c,u){ne(c,u,u)}function ns(c,u){var d=e(),o;for(o=0;o<16;o++)d[o]=u[o];for(o=253;o>=0;o--)Le(d,d),o!==2&&o!==4&&ne(d,d,u);for(o=0;o<16;o++)c[o]=d[o]}function is(c,u){var d=e(),o;for(o=0;o<16;o++)d[o]=u[o];for(o=250;o>=0;o--)Le(d,d),o!==1&&ne(d,d,u);for(o=0;o<16;o++)c[o]=d[o]}function or(c,u,d){var o=new Uint8Array(32),h=new Float64Array(80),g,b,S=e(),k=e(),j=e(),A=e(),ae=e(),D=e();for(b=0;b<31;b++)o[b]=u[b];for(o[31]=u[31]&127|64,o[0]&=248,mn(h,d),b=0;b<16;b++)k[b]=h[b],A[b]=S[b]=j[b]=0;for(S[0]=A[0]=1,b=254;b>=0;--b)g=o[b>>>3]>>>(b&7)&1,vt(S,k,g),vt(j,A,g),Fe(ae,S,j),Ke(S,S,j),Fe(j,k,A),Ke(k,k,A),Le(A,ae),Le(D,S),ne(S,j,S),ne(j,k,ae),Fe(ae,S,j),Ke(S,S,j),Le(k,S),Ke(j,A,D),ne(S,j,f),Fe(S,S,A),ne(j,j,S),ne(S,A,D),ne(A,k,h),Le(k,ae),vt(S,k,g),vt(j,A,g);for(b=0;b<16;b++)h[b+16]=S[b],h[b+32]=j[b],h[b+48]=k[b],h[b+64]=A[b];var $=h.subarray(32),q=h.subarray(16);return ns($,$),ne(q,q,$),_t(c,q),0}function ar(c,u){return or(c,u,i)}function ss(c,u){return t(u,32),ar(c,u)}function cr(c,u,d){var o=new Uint8Array(32);return or(o,d,u),ir(c,n,o,ut)}var os=hn,Aa=pn;function Ma(c,u,d,o,h,g){var b=new Uint8Array(32);return cr(b,h,g),os(c,u,d,o,b)}function Da(c,u,d,o,h,g){var b=new Uint8Array(32);return cr(b,h,g),Aa(c,u,d,o,b)}var as=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function cs(c,u,d,o){for(var h=new Int32Array(16),g=new Int32Array(16),b,S,k,j,A,ae,D,$,q,J,Y,z,H,V,O,F,M,U,L,R,v,_,C,P,w,T,N=c[0],X=c[1],Q=c[2],Z=c[3],m=c[4],re=c[5],ce=c[6],fe=c[7],ee=u[0],se=u[1],oe=u[2],xe=u[3],de=u[4],le=u[5],he=u[6],pe=u[7],_e=0;o>=128;){for(L=0;L<16;L++)R=8*L+_e,h[L]=d[R+0]<<24|d[R+1]<<16|d[R+2]<<8|d[R+3],g[L]=d[R+4]<<24|d[R+5]<<16|d[R+6]<<8|d[R+7];for(L=0;L<80;L++)if(b=N,S=X,k=Q,j=Z,A=m,ae=re,D=ce,$=fe,q=ee,J=se,Y=oe,z=xe,H=de,V=le,O=he,F=pe,v=fe,_=pe,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=(m>>>14|de<<18)^(m>>>18|de<<14)^(de>>>9|m<<23),_=(de>>>14|m<<18)^(de>>>18|m<<14)^(m>>>9|de<<23),C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,v=m&re^~m&ce,_=de&le^~de&he,C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,v=as[L*2],_=as[L*2+1],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,v=h[L%16],_=g[L%16],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,M=w&65535|T<<16,U=C&65535|P<<16,v=M,_=U,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=(N>>>28|ee<<4)^(ee>>>2|N<<30)^(ee>>>7|N<<25),_=(ee>>>28|N<<4)^(N>>>2|ee<<30)^(N>>>7|ee<<25),C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,v=N&X^N&Q^X&Q,_=ee&se^ee&oe^se&oe,C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,$=w&65535|T<<16,F=C&65535|P<<16,v=j,_=z,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=M,_=U,C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,j=w&65535|T<<16,z=C&65535|P<<16,X=b,Q=S,Z=k,m=j,re=A,ce=ae,fe=D,N=$,se=q,oe=J,xe=Y,de=z,le=H,he=V,pe=O,ee=F,L%16===15)for(R=0;R<16;R++)v=h[R],_=g[R],C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=h[(R+9)%16],_=g[(R+9)%16],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,M=h[(R+1)%16],U=g[(R+1)%16],v=(M>>>1|U<<31)^(M>>>8|U<<24)^M>>>7,_=(U>>>1|M<<31)^(U>>>8|M<<24)^(U>>>7|M<<25),C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,M=h[(R+14)%16],U=g[(R+14)%16],v=(M>>>19|U<<13)^(U>>>29|M<<3)^M>>>6,_=(U>>>19|M<<13)^(M>>>29|U<<3)^(U>>>6|M<<26),C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,h[R]=w&65535|T<<16,g[R]=C&65535|P<<16;v=N,_=ee,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[0],_=u[0],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[0]=N=w&65535|T<<16,u[0]=ee=C&65535|P<<16,v=X,_=se,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[1],_=u[1],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[1]=X=w&65535|T<<16,u[1]=se=C&65535|P<<16,v=Q,_=oe,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[2],_=u[2],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[2]=Q=w&65535|T<<16,u[2]=oe=C&65535|P<<16,v=Z,_=xe,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[3],_=u[3],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[3]=Z=w&65535|T<<16,u[3]=xe=C&65535|P<<16,v=m,_=de,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[4],_=u[4],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[4]=m=w&65535|T<<16,u[4]=de=C&65535|P<<16,v=re,_=le,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[5],_=u[5],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[5]=re=w&65535|T<<16,u[5]=le=C&65535|P<<16,v=ce,_=he,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[6],_=u[6],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[6]=ce=w&65535|T<<16,u[6]=he=C&65535|P<<16,v=fe,_=pe,C=_&65535,P=_>>>16,w=v&65535,T=v>>>16,v=c[7],_=u[7],C+=_&65535,P+=_>>>16,w+=v&65535,T+=v>>>16,P+=C>>>16,w+=P>>>16,T+=w>>>16,c[7]=fe=w&65535|T<<16,u[7]=pe=C&65535|P<<16,_e+=128,o-=128}return o}function lt(c,u,d){var o=new Int32Array(8),h=new Int32Array(8),g=new Uint8Array(256),b,S=d;for(o[0]=1779033703,o[1]=3144134277,o[2]=1013904242,o[3]=2773480762,o[4]=1359893119,o[5]=2600822924,o[6]=528734635,o[7]=1541459225,h[0]=4089235720,h[1]=2227873595,h[2]=4271175723,h[3]=1595750129,h[4]=2917565137,h[5]=725511199,h[6]=4215389547,h[7]=327033209,cs(o,h,u,d),d%=128,b=0;b<d;b++)g[b]=u[S-d+b];for(g[d]=128,d=256-128*(d<112?1:0),g[d-9]=0,G(g,d-8,S/536870912|0,S<<3),cs(o,h,g,d),b=0;b<8;b++)G(c,8*b,o[b],h[b]);return 0}function fr(c,u){var d=e(),o=e(),h=e(),g=e(),b=e(),S=e(),k=e(),j=e(),A=e();Ke(d,c[1],c[0]),Ke(A,u[1],u[0]),ne(d,d,A),Fe(o,c[0],c[1]),Fe(A,u[0],u[1]),ne(o,o,A),ne(h,c[3],u[3]),ne(h,h,p),ne(g,c[2],u[2]),Fe(g,g,g),Ke(b,o,d),Ke(S,g,h),Fe(k,g,h),Fe(j,o,d),ne(c[0],b,S),ne(c[1],j,k),ne(c[2],k,S),ne(c[3],b,j)}function fs(c,u,d){var o;for(o=0;o<4;o++)vt(c[o],u[o],d)}function gn(c,u){var d=e(),o=e(),h=e();ns(h,u[2]),ne(d,u[0],h),ne(o,u[1],h),_t(c,o),c[31]^=rs(d)<<7}function xn(c,u,d){var o,h;for(Qe(c[0],s),Qe(c[1],a),Qe(c[2],a),Qe(c[3],s),h=255;h>=0;--h)o=d[h/8|0]>>(h&7)&1,fs(c,u,o),fr(u,c),fr(c,c),fs(c,u,o)}function dr(c,u){var d=[e(),e(),e(),e()];Qe(d[0],y),Qe(d[1],x),Qe(d[2],a),ne(d[3],y,x),xn(c,d,u)}function bn(c,u,d){var o=new Uint8Array(64),h=[e(),e(),e(),e()],g;for(d||t(u,32),lt(o,u,32),o[0]&=248,o[31]&=127,o[31]|=64,dr(h,o),gn(c,h),g=0;g<32;g++)u[g+32]=c[g];return 0}var ur=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function vn(c,u){var d,o,h,g;for(o=63;o>=32;--o){for(d=0,h=o-32,g=o-12;h<g;++h)u[h]+=d-16*u[o]*ur[h-(o-32)],d=Math.floor((u[h]+128)/256),u[h]-=d*256;u[h]+=d,u[o]=0}for(d=0,h=0;h<32;h++)u[h]+=d-(u[31]>>4)*ur[h],d=u[h]>>8,u[h]&=255;for(h=0;h<32;h++)u[h]-=d*ur[h];for(o=0;o<32;o++)u[o+1]+=u[o]>>8,c[o]=u[o]&255}function _n(c){var u=new Float64Array(64),d;for(d=0;d<64;d++)u[d]=c[d];for(d=0;d<64;d++)c[d]=0;vn(c,u)}function ds(c,u,d,o){var h=new Uint8Array(64),g=new Uint8Array(64),b=new Uint8Array(64),S,k,j=new Float64Array(64),A=[e(),e(),e(),e()];lt(h,o,32),h[0]&=248,h[31]&=127,h[31]|=64;var ae=d+64;for(S=0;S<d;S++)c[64+S]=u[S];for(S=0;S<32;S++)c[32+S]=h[32+S];for(lt(b,c.subarray(32),d+32),_n(b),dr(A,b),gn(c,A),S=32;S<64;S++)c[S]=o[S];for(lt(g,c,d+64),_n(g),S=0;S<64;S++)j[S]=0;for(S=0;S<32;S++)j[S]=b[S];for(S=0;S<32;S++)for(k=0;k<32;k++)j[S+k]+=g[S]*h[k];return vn(c.subarray(32),j),ae}function Oa(c,u){var d=e(),o=e(),h=e(),g=e(),b=e(),S=e(),k=e();return Qe(c[2],a),mn(c[1],u),Le(h,c[1]),ne(g,h,l),Ke(h,h,c[2]),Fe(g,c[2],g),Le(b,g),Le(S,b),ne(k,S,b),ne(d,k,h),ne(d,d,g),is(d,d),ne(d,d,h),ne(d,d,g),ne(d,d,g),ne(c[0],d,g),Le(o,c[0]),ne(o,o,g),ts(o,h)&&ne(c[0],c[0],E),Le(o,c[0]),ne(o,o,g),ts(o,h)?-1:(rs(c[0])===u[31]>>7&&Ke(c[0],s,c[0]),ne(c[3],c[0],c[1]),0)}function Pn(c,u,d,o){var h,g=new Uint8Array(32),b=new Uint8Array(64),S=[e(),e(),e(),e()],k=[e(),e(),e(),e()];if(d<64||Oa(k,o))return-1;for(h=0;h<d;h++)c[h]=u[h];for(h=0;h<32;h++)c[h+32]=o[h];if(lt(b,c,d),_n(b),xn(S,k,b),dr(k,u.subarray(32)),fr(S,k),gn(g,S),d-=64,ue(u,0,g,0)){for(h=0;h<d;h++)c[h]=0;return-1}for(h=0;h<d;h++)c[h]=u[h+64];return d}var Sn=32,lr=24,At=32,Pt=16,Mt=32,hr=32,Dt=32,Ot=32,wn=32,us=lr,Ua=At,Ba=Pt,et=64,ht=32,St=64,Cn=32,En=64;r.lowlevel={crypto_core_hsalsa20:ir,crypto_stream_xor:un,crypto_stream:Qi,crypto_stream_salsa20_xor:Xi,crypto_stream_salsa20:Zi,crypto_onetimeauth:ln,crypto_onetimeauth_verify:es,crypto_verify_16:ie,crypto_verify_32:ue,crypto_secretbox:hn,crypto_secretbox_open:pn,crypto_scalarmult:or,crypto_scalarmult_base:ar,crypto_box_beforenm:cr,crypto_box_afternm:os,crypto_box:Ma,crypto_box_open:Da,crypto_box_keypair:ss,crypto_hash:lt,crypto_sign:ds,crypto_sign_keypair:bn,crypto_sign_open:Pn,crypto_secretbox_KEYBYTES:Sn,crypto_secretbox_NONCEBYTES:lr,crypto_secretbox_ZEROBYTES:At,crypto_secretbox_BOXZEROBYTES:Pt,crypto_scalarmult_BYTES:Mt,crypto_scalarmult_SCALARBYTES:hr,crypto_box_PUBLICKEYBYTES:Dt,crypto_box_SECRETKEYBYTES:Ot,crypto_box_BEFORENMBYTES:wn,crypto_box_NONCEBYTES:us,crypto_box_ZEROBYTES:Ua,crypto_box_BOXZEROBYTES:Ba,crypto_sign_BYTES:et,crypto_sign_PUBLICKEYBYTES:ht,crypto_sign_SECRETKEYBYTES:St,crypto_sign_SEEDBYTES:Cn,crypto_hash_BYTES:En,gf:e,D:l,L:ur,pack25519:_t,unpack25519:mn,M:ne,A:Fe,S:Le,Z:Ke,pow2523:is,add:fr,set25519:Qe,modL:vn,scalarmult:xn,scalarbase:dr};function ls(c,u){if(c.length!==Sn)throw new Error("bad key size");if(u.length!==lr)throw new Error("bad nonce size")}function La(c,u){if(c.length!==Dt)throw new Error("bad public key size");if(u.length!==Ot)throw new Error("bad secret key size")}function Be(){for(var c=0;c<arguments.length;c++)if(!(arguments[c]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function hs(c){for(var u=0;u<c.length;u++)c[u]=0}r.randomBytes=function(c){var u=new Uint8Array(c);return t(u,c),u},r.secretbox=function(c,u,d){Be(c,u,d),ls(d,u);for(var o=new Uint8Array(At+c.length),h=new Uint8Array(o.length),g=0;g<c.length;g++)o[g+At]=c[g];return hn(h,o,o.length,u,d),h.subarray(Pt)},r.secretbox.open=function(c,u,d){Be(c,u,d),ls(d,u);for(var o=new Uint8Array(Pt+c.length),h=new Uint8Array(o.length),g=0;g<c.length;g++)o[g+Pt]=c[g];return o.length<32||pn(h,o,o.length,u,d)!==0?null:h.subarray(At)},r.secretbox.keyLength=Sn,r.secretbox.nonceLength=lr,r.secretbox.overheadLength=Pt,r.scalarMult=function(c,u){if(Be(c,u),c.length!==hr)throw new Error("bad n size");if(u.length!==Mt)throw new Error("bad p size");var d=new Uint8Array(Mt);return or(d,c,u),d},r.scalarMult.base=function(c){if(Be(c),c.length!==hr)throw new Error("bad n size");var u=new Uint8Array(Mt);return ar(u,c),u},r.scalarMult.scalarLength=hr,r.scalarMult.groupElementLength=Mt,r.box=function(c,u,d,o){var h=r.box.before(d,o);return r.secretbox(c,u,h)},r.box.before=function(c,u){Be(c,u),La(c,u);var d=new Uint8Array(wn);return cr(d,c,u),d},r.box.after=r.secretbox,r.box.open=function(c,u,d,o){var h=r.box.before(d,o);return r.secretbox.open(c,u,h)},r.box.open.after=r.secretbox.open,r.box.keyPair=function(){var c=new Uint8Array(Dt),u=new Uint8Array(Ot);return ss(c,u),{publicKey:c,secretKey:u}},r.box.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==Ot)throw new Error("bad secret key size");var u=new Uint8Array(Dt);return ar(u,c),{publicKey:u,secretKey:new Uint8Array(c)}},r.box.publicKeyLength=Dt,r.box.secretKeyLength=Ot,r.box.sharedKeyLength=wn,r.box.nonceLength=us,r.box.overheadLength=r.secretbox.overheadLength,r.sign=function(c,u){if(Be(c,u),u.length!==St)throw new Error("bad secret key size");var d=new Uint8Array(et+c.length);return ds(d,c,c.length,u),d},r.sign.open=function(c,u){if(Be(c,u),u.length!==ht)throw new Error("bad public key size");var d=new Uint8Array(c.length),o=Pn(d,c,c.length,u);if(o<0)return null;for(var h=new Uint8Array(o),g=0;g<h.length;g++)h[g]=d[g];return h},r.sign.detached=function(c,u){for(var d=r.sign(c,u),o=new Uint8Array(et),h=0;h<o.length;h++)o[h]=d[h];return o},r.sign.detached.verify=function(c,u,d){if(Be(c,u,d),u.length!==et)throw new Error("bad signature size");if(d.length!==ht)throw new Error("bad public key size");var o=new Uint8Array(et+c.length),h=new Uint8Array(et+c.length),g;for(g=0;g<et;g++)o[g]=u[g];for(g=0;g<c.length;g++)o[g+et]=c[g];return Pn(h,o,o.length,d)>=0},r.sign.keyPair=function(){var c=new Uint8Array(ht),u=new Uint8Array(St);return bn(c,u),{publicKey:c,secretKey:u}},r.sign.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==St)throw new Error("bad secret key size");for(var u=new Uint8Array(ht),d=0;d<u.length;d++)u[d]=c[32+d];return{publicKey:u,secretKey:new Uint8Array(c)}},r.sign.keyPair.fromSeed=function(c){if(Be(c),c.length!==Cn)throw new Error("bad seed size");for(var u=new Uint8Array(ht),d=new Uint8Array(St),o=0;o<32;o++)d[o]=c[o];return bn(u,d,!0),{publicKey:u,secretKey:d}},r.sign.publicKeyLength=ht,r.sign.secretKeyLength=St,r.sign.seedLength=Cn,r.sign.signatureLength=et,r.hash=function(c){Be(c);var u=new Uint8Array(En);return lt(u,c,c.length),u},r.hash.hashLength=En,r.verify=function(c,u){return Be(c,u),c.length===0||u.length===0||c.length!==u.length?!1:W(c,0,u,0,c.length)===0},r.setPRNG=function(c){t=c},(function(){var c=typeof self<"u"?self.crypto||self.msCrypto:null;if(c&&c.getRandomValues){var u=65536;r.setPRNG(function(d,o){var h,g=new Uint8Array(o);for(h=0;h<o;h+=u)c.getRandomValues(g.subarray(h,h+Math.min(o-h,u)));for(h=0;h<o;h++)d[h]=g[h];hs(g)})}else typeof In<"u"&&(c=ps(),c&&c.randomBytes&&r.setPRNG(function(d,o){var h,g=c.randomBytes(o);for(h=0;h<o;h++)d[h]=g[h];hs(g)}))})()})(typeof yr<"u"&&yr.exports?yr.exports:self.nacl=self.nacl||{})});var Ct=K((ys,mr)=>{(function(r,e){"use strict";typeof mr<"u"&&mr.exports?mr.exports=e():(r.nacl||(r.nacl={}),r.nacl.util=e())})(ys,function(){"use strict";var r={};function e(t){if(!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t))throw new TypeError("invalid encoding")}return r.decodeUTF8=function(t){if(typeof t!="string")throw new TypeError("expected string");var n,i=unescape(encodeURIComponent(t)),s=new Uint8Array(i.length);for(n=0;n<i.length;n++)s[n]=i.charCodeAt(n);return s},r.encodeUTF8=function(t){var n,i=[];for(n=0;n<t.length;n++)i.push(String.fromCharCode(t[n]));return decodeURIComponent(escape(i.join("")))},typeof atob>"u"?typeof Buffer.from<"u"?(r.encodeBase64=function(t){return Buffer.from(t).toString("base64")},r.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(Buffer.from(t,"base64"),0))}):(r.encodeBase64=function(t){return new Buffer(t).toString("base64")},r.decodeBase64=function(t){return e(t),new Uint8Array(Array.prototype.slice.call(new Buffer(t,"base64"),0))}):(r.encodeBase64=function(t){var n,i=[],s=t.length;for(n=0;n<s;n++)i.push(String.fromCharCode(t[n]));return btoa(i.join(""))},r.decodeBase64=function(t){e(t);var n,i=atob(t),s=new Uint8Array(i.length);for(n=0;n<i.length;n++)s[n]=i.charCodeAt(n);return s}),r})});var kn=K((Sl,ms)=>{var Tn=class{constructor(){this.handlers=new Map}on(e,t){this.handlers.has(e)||this.handlers.set(e,new Set),this.handlers.get(e).add(t)}off(e,t){let n=this.handlers.get(e);n&&(n.delete(t),n.size===0&&this.handlers.delete(e))}emit(e,t){let n=this.handlers.get(e);if(n)for(let i of n)i(t)}};ms.exports=Tn});var An=K((wl,gs)=>{var ye=class ye{fastPow(e,t,n){if(n===BigInt(1))return BigInt(0);let i=BigInt(1),s=e%n,a=t;for(;a>0;)(a&BigInt(1))===BigInt(1)&&(i=i*s%n),a=a>>BigInt(1),s=s*s%n;return i}quadRes(e){return this.fastPow(e,ye.pHalf,ye.p)===BigInt(1)}modSqrtOp(e){let t,n=e;return this.quadRes(n)?t=this.fastPow(n,ye.pQuarter,ye.p):(n=(-n+ye.p)%ye.p,t=this.fastPow(n,ye.pQuarter,ye.p)),t}modOp(e,t){let n=e%ye.p;for(let i=BigInt(0);i<t;i+=BigInt(1))n=this.modSqrtOp(n);return n}modVerif(e,t,n){let i=t%ye.p,s=e;for(let a=BigInt(0);a<n;a+=BigInt(1))s=s**BigInt(2)%ye.p;return this.quadRes(s)||(s=(-s+ye.p)%ye.p),i===s||(-i+ye.p)%ye.p===s}generateProofVDF(e,t){return this.modOp(t,e)}verifyProofVDF(e,t,n){return this.modVerif(n,t,e)}};pr(ye,"p",BigInt("170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979")),pr(ye,"pHalf",ye.p-BigInt(1)>>BigInt(1)),pr(ye,"pQuarter",ye.p+BigInt(1)>>BigInt(2));var Rn=ye;gs.exports=Rn});var Dn=K((El,bs)=>{var xs=An(),Mn=class{static async compute(e,t){let n=new xs,i=BigInt(`0x${e}`);return n.generateProofVDF(t,i).toString(16)}static async verify(e,t,n){let i=new xs,s=BigInt(`0x${e}`),a=BigInt(`0x${n}`);return i.verifyProofVDF(t,s,a)}};bs.exports=Mn});var xr=K((Il,ks)=>{var On=wt(),gr=Ct(),{deriveBroadcastKey:_s,DEFAULT_SECURITY_OPTIONS:Ps}=Et(),Ss="dignity-signing-v1",ws="dignity-encryption-v1",Cs="dignity-cold-recovery-v1";function Es(r){return gr.decodeUTF8(r)}function Ka(...r){let e=r.reduce((i,s)=>i+s.length,0),t=new Uint8Array(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}function Is(r,e=""){if(!r||typeof r!="string")throw new Error("deriveColdRecoverySigningKey requires username");let t=["dignity-cold-recovery-v1"];return e&&t.push(e),t.push(r,Cs),Es(t.join("\0"))}async function Na({username:r,coldPassword:e,pepper:t="",kdfIterations:n}={}){if(!e||typeof e!="string")throw new Error("deriveColdRecoverySigningKey requires coldPassword");let i=Is(r,t),s=typeof n=="number"?n:Ps.kdfIterations,a=await _s(e,i,s),f=On.sign.keyPair.fromSeed(a);return{signing:f,recoveryPublicKey:gr.encodeBase64(f.publicKey)}}function Ts(r,e,t="",n=1){if(!r||typeof r!="string")throw new Error("deriveKeyPairFromCredentials requires username");if(!e||typeof e!="string")throw new Error("deriveKeyPairFromCredentials requires info label");let i=Number(n);if(!Number.isInteger(i)||i<1)throw new Error("deriveKeyPairFromCredentials requires generation >= 1");let s=["dignity-identity-v1"];return t&&s.push(t),s.push(r,`gen:${i}`,e),Es(s.join("\0"))}async function vs({password:r,username:e,info:t,pepper:n,generation:i,kdfIterations:s}){if(!r||typeof r!="string")throw new Error("deriveKeyPairFromCredentials requires password");let a=Ts(e,t,n,i),f=typeof s=="number"?s:Ps.kdfIterations;return _s(r,a,f)}async function $a({username:r,password:e,pepper:t="",generation:n=1,kdfIterations:i}={}){let s=await vs({password:e,username:r,info:Ss,pepper:t,generation:n,kdfIterations:i}),a=await vs({password:e,username:r,info:ws,pepper:t,generation:n,kdfIterations:i});return{signing:On.sign.keyPair.fromSeed(s),encryption:On.box.keyPair.fromSecretKey(a),generation:n}}function qa(r){return{signingPublicKey:gr.encodeBase64(r.signing.publicKey),encryptionPublicKey:gr.encodeBase64(r.encryption.publicKey)}}ks.exports={deriveKeyPairFromCredentials:$a,deriveColdRecoverySigningKey:Na,keyPairToPublicBundle:qa,buildIdentitySalt:Ts,buildColdRecoverySalt:Is,SIGNING_INFO:Ss,ENCRYPTION_INFO:ws,COLD_RECOVERY_INFO:Cs,concatBytes:Ka}});var Bt=K((Tl,Fs)=>{var As=wt(),br=Ct(),{stableStringify:Ms}=Et(),{deriveKeyPairFromCredentials:vr,deriveColdRecoverySigningKey:Ds,keyPairToPublicBundle:Pr}=xr(),Un=new Set(["compromise-recovery","password-change"]);function Os(r){return br.decodeUTF8(r)}function Rs(r){if(!r||!r.signingPublicKey||!r.encryptionPublicKey)throw new Error("Public key bundle requires signingPublicKey and encryptionPublicKey");return{signingPublicKey:r.signingPublicKey,encryptionPublicKey:r.encryptionPublicKey}}function Us({username:r,fromGeneration:e,toGeneration:t,previousPublicKey:n,nextPublicKey:i,rotationKind:s,reason:a,timestamp:f}){if(!r)throw new Error("Identity rotation requires username");if(!Un.has(s))throw new Error(`Identity rotation kind must be one of: ${[...Un].join(", ")}`);if(t!==e+1)throw new Error("Identity rotation must advance generation by exactly 1");return{version:1,type:"identity:rotate",username:r,fromGeneration:e,toGeneration:t,previousPublicKey:Rs(n),nextPublicKey:Rs(i),rotationKind:s,reason:a||"",timestamp:typeof f=="number"?f:Date.now()}}function _r(r,e){let t=Os(Ms(r)),n=As.sign.detached(t,e);return br.encodeBase64(n)}function Bn(r,e,t){let n=Os(Ms(r)),i=br.decodeBase64(e),s=br.decodeBase64(t);return As.sign.detached.verify(n,i,s)}function Ln({username:r,fromGeneration:e,toGeneration:t,previousPublicKey:n,nextKeyPair:i,rotationKind:s,reason:a,timestamp:f,coldRecoverySigningSecretKey:l}){if(!i||!i.signing||!i.signing.secretKey)throw new Error("Identity rotation requires nextKeyPair with signing secret");let p=Us({username:r,fromGeneration:e,toGeneration:t,previousPublicKey:n,nextPublicKey:Pr(i),rotationKind:s,reason:a,timestamp:f}),y={...p,signature:_r(p,i.signing.secretKey)};return l&&(y.recoverySignature=_r(p,l)),y}function Bs({username:r,recoveryPublicKey:e,timestamp:t}){if(!r)throw new Error("Cold recovery enrollment requires username");if(!e)throw new Error("Cold recovery enrollment requires recoveryPublicKey");return{version:1,type:"identity:cold-enroll",username:r,recoveryPublicKey:e,timestamp:typeof t=="number"?t:Date.now()}}function Ls({username:r,coldRecoverySigningSecretKey:e,recoveryPublicKey:t,timestamp:n}){if(!e)throw new Error("Cold recovery enrollment requires cold recovery signing secret");if(!t)throw new Error("Cold recovery enrollment requires recoveryPublicKey");let i=Bs({username:r,recoveryPublicKey:t,timestamp:n});return{...i,signature:_r(i,e)}}function za(r){if(!r||r.type!=="identity:cold-enroll"||r.version!==1)return{ok:!1,error:"invalid-enrollment-shape"};if(!r.signature||!r.recoveryPublicKey)return{ok:!1,error:"missing-enrollment-fields"};let{signature:e,...t}=r;return Bn(t,e,r.recoveryPublicKey)?{ok:!0,enrollment:r}:{ok:!1,error:"invalid-enrollment-signature"}}function js(r,e={}){if(!r||r.type!=="identity:rotate"||r.version!==1)return{ok:!1,error:"invalid-rotation-shape"};if(!r.signature||!r.nextPublicKey||!r.previousPublicKey)return{ok:!1,error:"missing-rotation-fields"};if(r.toGeneration!==r.fromGeneration+1)return{ok:!1,error:"invalid-generation-step"};if(!Un.has(r.rotationKind))return{ok:!1,error:"invalid-rotation-kind"};let{signature:t,recoverySignature:n,...i}=r;if(!Bn(i,t,r.nextPublicKey.signingPublicKey))return{ok:!1,error:"invalid-signature"};let a=e.requiredRecoveryPublicKey||null;if(a){if(!n)return{ok:!1,error:"missing-recovery-signature"};if(!Bn(i,n,a))return{ok:!1,error:"invalid-recovery-signature"}}return r.previousPublicKey.signingPublicKey===r.nextPublicKey.signingPublicKey?{ok:!1,error:"unchanged-signing-key"}:{ok:!0,rotation:r}}async function Gs({username:r,coldPassword:e,pepper:t,kdfIterations:n}){return e?(await Ds({username:r,coldPassword:e,pepper:t,kdfIterations:n})).signing.secretKey:null}async function Va({username:r,password:e,coldPassword:t,currentGeneration:n=1,reason:i="compromise-recovery",pepper:s="",kdfIterations:a,timestamp:f}={}){let l=await vr({username:r,password:e,generation:n,pepper:s,kdfIterations:a}),p=n+1,y=await vr({username:r,password:e,generation:p,pepper:s,kdfIterations:a}),x=await Gs({username:r,coldPassword:t,pepper:s,kdfIterations:a});return{rotation:Ln({username:r,fromGeneration:n,toGeneration:p,previousPublicKey:Pr(l),nextKeyPair:y,rotationKind:"compromise-recovery",reason:i,timestamp:f,coldRecoverySigningSecretKey:x}),currentKeyPair:l,nextKeyPair:y,nextGeneration:p,coldRecoveryUsed:!!x}}async function Ha({username:r,currentPassword:e,newPassword:t,coldPassword:n,currentGeneration:i=1,reason:s="password-change",pepper:a="",kdfIterations:f,timestamp:l}={}){let p=await vr({username:r,password:e,generation:i,pepper:a,kdfIterations:f}),y=i+1,x=await vr({username:r,password:t,generation:y,pepper:a,kdfIterations:f}),E=await Gs({username:r,coldPassword:n,pepper:a,kdfIterations:f});return{rotation:Ln({username:r,fromGeneration:i,toGeneration:y,previousPublicKey:Pr(p),nextKeyPair:x,rotationKind:"password-change",reason:s,timestamp:l,coldRecoverySigningSecretKey:E}),currentKeyPair:p,nextKeyPair:x,nextGeneration:y,coldRecoveryUsed:!!E}}async function Wa({username:r,coldPassword:e,pepper:t="",kdfIterations:n,timestamp:i}={}){let s=await Ds({username:r,coldPassword:e,pepper:t,kdfIterations:n});return{enrollment:Ls({username:r,coldRecoverySigningSecretKey:s.signing.secretKey,recoveryPublicKey:s.recoveryPublicKey,timestamp:i}),recoveryPublicKey:s.recoveryPublicKey,coldRecovery:s}}function Ya(r,e,t={}){let n=t.enrolledRecoveryPublicKey||r&&r.recoveryPublicKey||null,i=js(e,{requiredRecoveryPublicKey:n});return i.ok?r&&e.toGeneration<=r.generation?{apply:!1,reason:"stale-generation"}:r&&r.publicKey&&r.publicKey.signingPublicKey!==e.previousPublicKey.signingPublicKey?{apply:!1,reason:"previous-key-mismatch"}:{apply:!0,rotation:i.rotation}:{apply:!1,reason:i.error}}Fs.exports={createIdentityRotation:Ln,createColdRecoveryEnrollment:Ls,verifyIdentityRotation:js,verifyColdRecoveryEnrollment:za,revokeAndRotateIdentity:Va,rotateIdentityPassword:Ha,enrollColdRecoveryPassword:Wa,shouldApplyIdentityRotation:Ya,keyPairToPublicBundle:Pr,buildIdentityRotationPayload:Us,buildColdRecoveryEnrollmentPayload:Bs,signIdentityRotationPayload:_r}});var Et=K((kl,zs)=>{var Me=wt(),me=Ct(),jn=Dn(),Ns="change-this-app-password",Sr={enabled:!0,signingEnabled:!0,encryptionEnabled:!0,powEnabled:!0,powTargetMs:1e3,appPassword:Ns,broadcastPasswords:{},resolveBroadcastPassword:null,powSteps:22,trustedPeerKeys:{},kdfIterations:1e5};function Lt(r){return r===null||typeof r!="object"?JSON.stringify(r):Array.isArray(r)?`[${r.map(t=>Lt(t)).join(",")}]`:`{${Object.keys(r).sort().map(t=>`${JSON.stringify(t)}:${Lt(r[t])}`).join(",")}}`}function $s(r,e){let t=new Uint8Array(r.length+e.length);return t.set(r,0),t.set(e,r.length),t}function wr(r){return Me.hash(r).slice(0,32)}function Ks(r){return Array.from(r,e=>e.toString(16).padStart(2,"0")).join("")}function jt(r){return me.decodeUTF8(r)}async function Fn(r,e,t){let n=globalThis.crypto&&globalThis.crypto.subtle;if(n){let i=await n.importKey("raw",jt(r),"PBKDF2",!1,["deriveBits"]),s=await n.deriveBits({name:"PBKDF2",salt:e,iterations:t,hash:"SHA-256"},i,256);return new Uint8Array(s)}try{let{pbkdf2Sync:i}=In("crypto");return new Uint8Array(i(r,Buffer.from(e),t,32,"sha256"))}catch{return wr($s(jt(r),e))}}function qs(r,e){return wr($s(jt(r),e))}function Gn(r){if(!r||typeof r!="object")throw new Error("Public key must be an object with signingPublicKey and encryptionPublicKey");if(!r.signingPublicKey||!r.encryptionPublicKey)throw new Error("Public key object is missing signingPublicKey or encryptionPublicKey");return{signingPublicKey:r.signingPublicKey,encryptionPublicKey:r.encryptionPublicKey}}var Kn=class{constructor({nodeId:e,options:t={},now:n}={}){if(!e)throw new Error("MessageSecurityService requires nodeId");this.nodeId=e,this.options={...Sr,...t},this.now=n||(()=>Date.now());let i=t.keyPair||{signing:Me.sign.keyPair(),encryption:Me.box.keyPair()};this.signingSecretKey=i.signing.secretKey,this.signingPublicKey=i.signing.publicKey,this.encryptionSecretKey=i.encryption.secretKey,this.encryptionPublicKey=i.encryption.publicKey,this.publicKeyBundle={signingPublicKey:me.encodeBase64(this.signingPublicKey),encryptionPublicKey:me.encodeBase64(this.encryptionPublicKey)},this.peerPublicKeys=new Map,this.peerIdentityGenerations=new Map,this.peerRecoveryPublicKeys=new Map;for(let[s,a]of Object.entries(this.options.trustedPeerKeys||{}))this.peerPublicKeys.set(s,Gn(a)),this.peerIdentityGenerations.set(s,1);this.calibratedPowSteps=this.options.powSteps}getPublicKey(){return{...this.publicKeyBundle}}registerPeerPublicKey(e,t,n={}){let i=Gn(t),s=typeof n.generation=="number"?n.generation:1,a=this.peerIdentityGenerations.get(e)||0;if(s<a&&n.allowDowngrade!==!0)throw new Error(`Refusing older identity generation for peer ${e}`);this.peerPublicKeys.set(e,i),this.peerIdentityGenerations.set(e,Math.max(a,s))}getPeerIdentityGeneration(e){return this.peerIdentityGenerations.get(e)||0}getPeerIdentityState(e){let t=this.peerPublicKeys.get(e),n=this.peerRecoveryPublicKeys.get(e)||null;return!t&&!n?null:{publicKey:t?{...t}:null,generation:this.getPeerIdentityGeneration(e),recoveryPublicKey:n}}registerPeerRecoveryPublicKey(e,t){if(!e||!t)throw new Error("registerPeerRecoveryPublicKey requires peerId and recoveryPublicKey");this.peerRecoveryPublicKeys.set(e,t)}getPeerRecoveryPublicKey(e){return this.peerRecoveryPublicKeys.get(e)||null}applyColdRecoveryEnrollment(e,t){let{verifyColdRecoveryEnrollment:n}=Bt(),i=n(t);if(!i.ok){let s=new Error(`Invalid cold recovery enrollment: ${i.error}`);throw s.code="INVALID_COLD_RECOVERY_ENROLLMENT",s}return this.registerPeerRecoveryPublicKey(e,t.recoveryPublicKey),{applied:!0,recoveryPublicKey:t.recoveryPublicKey}}applyIdentityRotation(e,t){let{shouldApplyIdentityRotation:n}=Bt(),i=this.getPeerIdentityState(e),s=n(i,t,{enrolledRecoveryPublicKey:this.getPeerRecoveryPublicKey(e)});if(!s.apply){if(s.reason&&s.reason!=="stale-generation"&&s.reason!=="previous-key-mismatch"){let a=new Error(`Invalid identity rotation: ${s.reason}`);throw a.code="INVALID_IDENTITY_ROTATION",a}return{applied:!1,reason:s.reason}}return this.registerPeerPublicKey(e,t.nextPublicKey,{generation:t.toGeneration}),{applied:!0,fromGeneration:t.fromGeneration,toGeneration:t.toGeneration,rotationKind:t.rotationKind}}resolvePeerPublicKey(e,t){let n=this.peerPublicKeys.get(e),i=t?Gn(t):null;if(n&&i&&(n.signingPublicKey!==i.signingPublicKey||n.encryptionPublicKey!==i.encryptionPublicKey))throw new Error(`Public key mismatch for peer ${e}`);return n||i||null}buildEnvelopeBase({messageType:e,payload:t,targetId:n=null}){return{version:1,senderId:this.nodeId,senderPublicKey:this.getPublicKey(),targetId:n,messageType:e,timestamp:this.now(),payload:t}}async secureOutgoingMessage({messageType:e,payload:t,targetId:n=null,securityContext:i={}}){if(!this.options.enabled)return this.buildEnvelopeBase({messageType:e,payload:t,targetId:n});let s=this.buildEnvelopeBase({messageType:e,payload:t,targetId:n}),a=await this.encryptPayload({payload:t,targetId:n,securityContext:i});if(s.payload=a.payload,s.security={encryption:a.security,signing:{enabled:!1},pow:{enabled:!1}},this.options.powEnabled){let f=await this.generatePow(s);s.security.pow={enabled:!0,messageHash:f.messageHash,challenge:f.challenge,proof:f.proof,steps:f.steps,durationMs:f.durationMs}}if(this.options.signingEnabled){let f=this.canonicalSigningInput(s),l=Me.sign.detached(me.decodeUTF8(f),this.signingSecretKey);s.security.signing={enabled:!0,algorithm:"ed25519",signature:me.encodeBase64(l)}}return s}canonicalSigningInput(e){return Lt({version:e.version,senderId:e.senderId,senderPublicKey:e.senderPublicKey,targetId:e.targetId,messageType:e.messageType,timestamp:e.timestamp,payload:e.payload,security:{encryption:e.security?e.security.encryption:{enabled:!1},pow:e.security?e.security.pow:{enabled:!1}}})}canonicalPowInput(e){return Lt({version:e.version,senderId:e.senderId,senderPublicKey:e.senderPublicKey,targetId:e.targetId,messageType:e.messageType,timestamp:e.timestamp,payload:e.payload,security:{encryption:e.security?e.security.encryption:{enabled:!1}}})}computePowMessageHash(e){return Ks(wr(jt(this.canonicalPowInput(e))))}async decryptIncomingMessage(e){if(!this.options.enabled)return{ignored:!1,messageType:e.messageType,senderId:e.senderId,targetId:e.targetId,payload:e.payload};if(!e||typeof e!="object")throw new Error("Incoming message is invalid");if(e.targetId&&e.targetId!==this.nodeId)return{ignored:!0};e.security&&e.security.pow&&e.security.pow.enabled&&this.options.powEnabled&&await this.verifyPow(e),e.security&&e.security.signing&&e.security.signing.enabled&&this.options.signingEnabled&&this.verifySignature(e);let t=await this.decryptPayload(e);return{ignored:!1,messageType:e.messageType,senderId:e.senderId,targetId:e.targetId,payload:t}}resolveBroadcastPassword(e){let t=e||"default";if(typeof this.options.resolveBroadcastPassword=="function"){let i=this.options.resolveBroadcastPassword({scope:t,nodeId:this.nodeId,defaultPassword:this.options.appPassword,broadcastPasswords:this.options.broadcastPasswords||{}});if(typeof i=="string"&&i.length>0)return i}let n=this.options.broadcastPasswords?this.options.broadcastPasswords[t]:null;return typeof n=="string"&&n.length>0?n:this.options.appPassword}async encryptPayload({payload:e,targetId:t,securityContext:n={}}){if(!this.options.encryptionEnabled)return{payload:e,security:{enabled:!1,mode:"none"}};let i=me.decodeUTF8(JSON.stringify(e));if(t){let E=this.resolvePeerPublicKey(t,null);if(!E)throw new Error(`Missing public key for target peer ${t}`);let G=Me.randomBytes(Me.box.nonceLength),W=Me.box(i,G,me.decodeBase64(E.encryptionPublicKey),this.encryptionSecretKey);return{payload:me.encodeBase64(W),security:{enabled:!0,mode:"direct",nonce:me.encodeBase64(G),senderEncryptionPublicKey:this.publicKeyBundle.encryptionPublicKey}}}let s=n.broadcastScope||"default",a=Me.randomBytes(Me.secretbox.nonceLength),f=Me.randomBytes(16),l=this.resolveBroadcastPassword(s),p=this.options.kdfIterations||Sr.kdfIterations,y=await Fn(l,f,p),x=Me.secretbox(i,a,y);return{payload:me.encodeBase64(x),security:{enabled:!0,mode:"broadcast",scope:s,nonce:me.encodeBase64(a),salt:me.encodeBase64(f),kdf:"pbkdf2",kdfIterations:p}}}async decryptPayload(e){let t=e.security?e.security.encryption:null;if(!t||!t.enabled||!this.options.encryptionEnabled)return e.payload;let n=me.decodeBase64(e.payload);if(t.mode==="broadcast"){let i=t.scope||"default",s=this.resolveBroadcastPassword(i),a=me.decodeBase64(t.salt),f=me.decodeBase64(t.nonce),l;if(t.kdf==="pbkdf2"){let y=this.options.kdfIterations||Sr.kdfIterations,x=t.kdfIterations||y,E=Math.max(1e3,Math.floor(y*.1)),G=y*2;if(x<E||x>G)throw new Error(`Invalid kdfIterations: ${x}`);l=await Fn(s,a,x)}else l=qs(s,a);let p=Me.secretbox.open(n,f,l);if(!p)throw new Error("Unable to decrypt broadcast payload");return JSON.parse(me.encodeUTF8(p))}if(t.mode==="direct"){let i=me.decodeBase64(t.senderEncryptionPublicKey),s=me.decodeBase64(t.nonce),a=Me.box.open(n,s,i,this.encryptionSecretKey);if(!a)throw new Error("Unable to decrypt direct payload");return JSON.parse(me.encodeUTF8(a))}throw new Error(`Unsupported encryption mode: ${t.mode}`)}verifySignature(e){let t=this.resolvePeerPublicKey(e.senderId,e.senderPublicKey);if(!t)throw new Error(`Missing public key for sender ${e.senderId}`);let n=this.canonicalSigningInput(e);if(!Me.sign.detached.verify(me.decodeUTF8(n),me.decodeBase64(e.security.signing.signature),me.decodeBase64(t.signingPublicKey))){let s=new Error(`Invalid signature for sender ${e.senderId}`);throw s.code="INVALID_SIGNATURE",s}return!0}async determinePowSteps(){if(typeof this.calibratedPowSteps=="bigint")return this.calibratedPowSteps;if(typeof this.options.powSteps=="number")return this.calibratedPowSteps=BigInt(Math.max(1,this.options.powSteps)),this.calibratedPowSteps;let e=Math.max(1,Number(this.options.powTargetMs||1)),t=Ks(wr(jt(`probe:${this.nodeId}:${this.now()}`))),n=BigInt(2),i=this.now();await jn.compute(t,n);let s=Math.max(1,this.now()-i),a=Math.max(1,Math.round(e/s*Number(n)));return this.calibratedPowSteps=BigInt(a),this.calibratedPowSteps}async generatePow(e){let t=this.computePowMessageHash(e),n=t,i=await this.determinePowSteps(),s=this.now(),a=await jn.compute(n,i),f=this.now()-s;return{messageHash:t,challenge:n,proof:a,steps:i.toString(),durationMs:f}}async verifyPow(e){let t=this.computePowMessageHash(e),n=e.security.pow;if(!n||!n.messageHash||n.messageHash!==t||n.challenge!==n.messageHash){let s=new Error("PoW challenge mismatch");throw s.code="INVALID_POW",s}if(!await jn.verify(n.messageHash,BigInt(n.steps),n.proof)){let s=new Error("PoW verification failed");throw s.code="INVALID_POW",s}return!0}};zs.exports={MessageSecurityService:Kn,stableStringify:Lt,deriveBroadcastKey:Fn,legacyBroadcastKey:qs,DEFAULT_SECURITY_OPTIONS:Sr,DEFAULT_APP_PASSWORD:Ns}});var $n=K((Rl,Vs)=>{var Cr="gossip:",Ja={fanout:3,maxActivePeers:8,maxHops:64,relayEnabled:!0};function Xa(r){if(!r)throw new Error("peerGroupScope requires groupId");return`${Cr}${r}`}function Za(r){return!r||!r.startsWith(Cr)?null:r.slice(Cr.length)}function Nn(r,e=Math.random){let t=[...r];for(let n=t.length-1;n>0;n-=1){let i=Math.floor(e()*(n+1));[t[n],t[i]]=[t[i],t[n]]}return t}function Qa({peers:r,count:e,excludePeerIds:t=[],connectedPeerIds:n=[],randomFn:i=Math.random}){let s=new Set(t.filter(Boolean)),a=r.map(x=>x.peerId||x).filter(x=>x&&!s.has(x)),f=new Set(n.filter(Boolean)),l=a.filter(x=>f.has(x)),p=a.filter(x=>!f.has(x));return[...Nn(l,i),...Nn(p,i)].slice(0,Math.max(0,e))}Vs.exports={PEER_GROUP_SCOPE_PREFIX:Cr,DEFAULT_PEER_GROUP_OPTIONS:Ja,peerGroupScope:Xa,parsePeerGroupScope:Za,shufflePeerIds:Nn,selectFanoutPeers:Qa}});var kr=K((Al,Xs)=>{var Er=wt(),pt=Ct(),{stableStringify:Ws}=Et(),Ir=1,Ys={create:"record:created",update:"record:updated",delete:"record:removed","transfer-ownership":"ownership:transferred"};function Hs(r){let e=Ws(r||{}),t=pt.decodeUTF8(e),n=Er.hash(t);return`sha512:${Array.from(n,s=>s.toString(16).padStart(2,"0")).join("")}`}function ec(r){return Ws({schemaVersion:r.schemaVersion,eventId:r.eventId,groupId:r.groupId,publisherId:r.publisherId,kind:r.kind,collectionName:r.collectionName,id:r.id,payload:r.payload,timestamp:r.timestamp,baseVersion:r.baseVersion,prevHash:r.prevHash||null,newOwnerId:r.newOwnerId||null})}function Tr(r){let e=ec(r),t=pt.decodeUTF8(e),n=Er.hash(t);return`sha512:${Array.from(n,s=>s.toString(16).padStart(2,"0")).join("")}`}function tc(r,{publisherId:e,groupId:t,prevHash:n,eventIdGenerator:i}){if(!r||!e||!t)throw new Error("operationToDomainEvent requires operation, publisherId, and groupId");let s=Ys[r.kind];if(!s)throw new Error(`Unsupported operation kind for domain event: ${r.kind}`);let a={schemaVersion:Ir,eventId:i?i():`${Date.now()}-${Math.random().toString(16).slice(2)}`,groupId:t,publisherId:e,kind:s,collectionName:r.collectionName,id:r.id,payload:r.payload||{},timestamp:r.timestamp,baseVersion:r.baseVersion||null,prevHash:n||null,newOwnerId:r.newOwnerId||null,eventHash:null,signature:null};return a.eventHash=Tr(a),a}function rc(r,e){if(!e)return{...r};let t={...r,signature:null},n=Tr(t),i=Er.sign.detached(pt.decodeUTF8(n),e);return{...t,eventHash:n,signature:pt.encodeBase64(i)}}function qn(r,e){if(!r||!r.eventHash)return{ok:!1,reason:"missing-event-hash"};if(Tr({...r,signature:null})!==r.eventHash)return{ok:!1,reason:"event-hash-mismatch"};if(!r.signature)return{ok:!0,unsigned:!0};if(!e)return{ok:!1,reason:"missing-public-key"};let n=typeof e=="string"?pt.decodeBase64(e):e;return Er.sign.detached.verify(pt.decodeUTF8(r.eventHash),pt.decodeBase64(r.signature),n)?{ok:!0}:{ok:!1,reason:"invalid-signature"}}function nc(r,{signingPublicKey:e,supportedVersions:t}={}){return!r||typeof r!="object"?{ok:!1,reason:"invalid-event"}:(t||[Ir]).includes(r.schemaVersion)?!r.eventId||!r.groupId||!r.publisherId||!r.kind?{ok:!1,reason:"missing-required-fields"}:qn(r,e):{ok:!1,reason:"unsupported-schema-version",schemaVersion:r.schemaVersion}}function ic(r=[]){let e=new Map;for(let t of r)e.set(t,new Map);return e}function sc(r,e){return r.has(e)||r.set(e,new Map),r.get(e)}function oc(r,e,{collectionsFilter:t}={}){if(!e||!e.collectionName)return{applied:!1,reason:"invalid-event"};if(Array.isArray(t)&&t.length>0&&!t.includes(e.collectionName))return{applied:!1,reason:"collection-filtered"};let n=sc(r,e.collectionName);if(e.kind==="record:created")return n.has(e.id)?{applied:!1,reason:"already-exists"}:(n.set(e.id,{id:e.id,ownerId:e.publisherId,data:{...e.payload||{}},hash:Hs(e.payload||{}),createdAt:e.timestamp,updatedAt:e.timestamp,deletedAt:null,version:1}),{applied:!0,kind:e.kind});let i=n.get(e.id);return!i||i.deletedAt?e.kind==="record:removed"?{applied:!1,reason:"not-found"}:{applied:!1,reason:"missing-record"}:e.kind==="record:updated"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.data={...i.data,...e.payload||{}},i.hash=Hs(i.data),i.updatedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):e.kind==="record:removed"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.deletedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):e.kind==="ownership:transferred"?typeof e.baseVersion=="number"&&i.version!==e.baseVersion?{applied:!1,reason:"version-conflict",currentVersion:i.version}:(i.ownerId=e.newOwnerId,i.updatedAt=e.timestamp,i.version+=1,{applied:!0,kind:e.kind}):{applied:!1,reason:"unknown-kind"}}function Js(r,{genesisHash:e=null}={}){if(!Array.isArray(r)||r.length===0)return{ok:!0,length:0};let t=e;for(let n=0;n<r.length;n+=1){let i=r[n],s=i.prevHash||null;if(s!==t)return{ok:!1,reason:"chain-break",index:n,expectedPrev:t,actualPrev:s};let a=qn(i,null);if(!a.ok)return{ok:!1,reason:a.reason,index:n};t=i.eventHash}return{ok:!0,length:r.length,lastHash:t}}function ac(r,e,{publisherId:t}={}){let n=Js(e);return{schemaVersion:Ir,groupId:r,publisherId:t||null,lastEventHash:n.lastHash||null,recordCount:e.length,timestamp:Date.now()}}Xs.exports={DOMAIN_EVENT_SCHEMA_VERSION:Ir,OPERATION_KIND_TO_EVENT_KIND:Ys,computeEventHash:Tr,operationToDomainEvent:tc,signDomainEvent:rc,verifyDomainEvent:nc,verifyDomainEventSignature:qn,createEmptyView:ic,applyDomainEventToView:oc,verifyEventChain:Js,buildCheckpoint:ac}});var Ar=K((Ml,Zs)=>{function cc({joinIndex:r,liveCap:e=5e3,requestedTier:t,role:n}){return n==="publisher"?"live":t==="live"||t==="bulk"?t==="live"&&r>=e?"bulk":t:r<e?"live":"bulk"}function Rr(r){return r?.metadata?.peerGroupTier||r?.peerGroupTier||null}function fc(r,e){return e?r.filter(t=>Rr(t)===e):r}function dc(r){return r.filter(e=>Rr(e)==="live").length}function uc(r){return r.filter(e=>Rr(e)==="bulk").length}Zs.exports={DEFAULT_LIVE_CAP:5e3,DEFAULT_BULK_INTERVAL_MS:3e4,assignPeerGroupTier:cc,getPeerTier:Rr,filterPeersByTier:fc,countLivePeers:dc,countBulkPeers:uc}});var zn=K((Dl,eo)=>{var{getPeerTier:lc}=Ar(),Qs=3;function hc(r,{count:e=Qs}={}){return r.filter(n=>lc(n)==="bulk").map(n=>n.peerId||n).filter(Boolean).sort().slice(0,Math.max(0,e))}function pc(r){return r?.bulkRelay===!0}function yc(r,e){let t=new Set(e);return r.map(n=>({...n,metadata:{...n.metadata||{},bulkRelay:t.has(n.peerId)}}))}eo.exports={DEFAULT_BULK_RELAY_COUNT:Qs,electBulkRelays:hc,isBulkRelay:pc,applyBulkRelayFlags:yc}});var io=K((Ol,no)=>{var mc=wt(),Hn=Ct(),gc=kn(),{MessageSecurityService:xc,stableStringify:bc,DEFAULT_APP_PASSWORD:vc}=Et(),{revokeAndRotateIdentity:_c,rotateIdentityPassword:Pc,enrollColdRecoveryPassword:Sc}=Bt(),{deriveKeyPairFromCredentials:wc}=xr(),{DEFAULT_PEER_GROUP_OPTIONS:Vn,peerGroupScope:Cc,parsePeerGroupScope:Ec,selectFanoutPeers:Ic}=$n(),{operationToDomainEvent:Tc,signDomainEvent:kc,verifyDomainEvent:Rc,applyDomainEventToView:Ac,createEmptyView:to,buildCheckpoint:Mc}=kr(),{DEFAULT_LIVE_CAP:Dc,DEFAULT_BULK_INTERVAL_MS:Oc,assignPeerGroupTier:ro,filterPeersByTier:Uc}=Ar(),{electBulkRelays:Bc}=zn();function Gt(r){let e=bc(r||{}),t=Hn.decodeUTF8(e),n=mc.hash(t);return`sha512:${Array.from(n,s=>s.toString(16).padStart(2,"0")).join("")}`}var Wn=class extends gc{constructor({nodeId:e,networkAdapter:t,idGenerator:n,now:i,security:s}={}){if(super(),!e)throw new Error("DignityP2P requires nodeId");if(!t)throw new Error("DignityP2P requires networkAdapter");this.nodeId=e,this.networkAdapter=t,this.idGenerator=n||(()=>`${Date.now()}-${Math.random().toString(16).slice(2)}`),this.now=i||(()=>Date.now()),this.securityService=new xc({nodeId:this.nodeId,options:s||{},now:this.now}),this.bannedPeers=new Map,this.peerBanDurationMs=s&&typeof s.banDurationMs=="number"?s.banDurationMs:2880*60*1e3,this.resolveBroadcastScope=s&&typeof s.resolveBroadcastScope=="function"?s.resolveBroadcastScope:(()=>"default"),this.defaultDiscoveryHeartbeatMs=s&&typeof s.discoveryHeartbeatMs=="number"?s.discoveryHeartbeatMs:15e3,this.defaultPresenceTtlMs=s&&typeof s.presenceTtlMs=="number"?s.presenceTtlMs:45e3,this.discoveryRooms=new Map,this.presenceByScope=new Map,this.peerGroups=new Map,this.seenGossipIds=new Map,this.defaultPeerGroupFanout=s&&typeof s.peerGroupFanout=="number"?s.peerGroupFanout:Vn.fanout,this.defaultPeerGroupMaxActivePeers=s&&typeof s.peerGroupMaxActivePeers=="number"?s.peerGroupMaxActivePeers:Vn.maxActivePeers,this.defaultGossipMaxHops=s&&typeof s.gossipMaxHops=="number"?s.gossipMaxHops:Vn.maxHops,this.globalMaxOpenConnections=s&&typeof s.globalMaxOpenConnections=="number"?s.globalMaxOpenConnections:32,this.gossipIdTtlMs=s&&typeof s.gossipIdTtlMs=="number"?s.gossipIdTtlMs:300*1e3,this.maxSeenGossipIds=s&&typeof s.maxSeenGossipIds=="number"?s.maxSeenGossipIds:1e5,this.gossipPublishMinIntervalMs=s&&typeof s.gossipPublishMinIntervalMs=="number"?s.gossipPublishMinIntervalMs:0,this.lastGossipPublishAt=new Map,this.maxAppliedOperations=s&&typeof s.maxAppliedOperations=="number"?s.maxAppliedOperations:5e4,this.domainEventLogs=new Map,this.lastEventHashByGroup=new Map,this.bulkRelayByGroup=new Map,this.replicaViews=new Map,this.state=new Map,this.appliedOperations=new Map,this.boundMessageHandler=this.handleIncomingMessage.bind(this)}async start(){this.networkAdapter.onMessage(this.boundMessageHandler),await this.networkAdapter.start(this.nodeId);let e=this.securityService.options.appPassword;(!e||e===vc)&&this.emit("warning",{type:"default-app-password",message:"Using the default appPassword is insecure; set a strong shared secret in production."})}async stop(){let e=Array.from(this.peerGroups.keys());for(let n of e)try{await this.leavePeerGroup(n)}catch(i){this.emit("warning",{type:"peer-group-leave-failed",groupId:n,error:i})}let t=Array.from(this.discoveryRooms.keys());for(let n of t)try{await this.leaveDiscovery(n)}catch(i){this.emit("warning",{type:"presence-leave-failed",scope:n,error:i})}this.networkAdapter.offMessage(this.boundMessageHandler),await this.networkAdapter.stop()}getCollection(e){if(!e)throw new Error("collectionName is required");return this.state.has(e)||this.state.set(e,new Map),this.state.get(e)}normalizeRecord(e){if(!e||e.deletedAt)return null;let t={...e.data||{}};return{id:e.id,ownerId:e.ownerId,collaboratorIds:Array.isArray(e.collaboratorIds)?[...e.collaboratorIds]:[],createdAt:e.createdAt,updatedAt:e.updatedAt,version:e.version,hash:e.hash||Gt(t),data:t}}canUpdateRecord(e,t){return!e||!t?!1:e.ownerId===t?!0:Array.isArray(e.collaboratorIds)&&e.collaboratorIds.includes(t)}normalizeCollaboratorIds(e){return Array.isArray(e)?[...new Set(e.filter(Boolean))]:[]}getRecordPeerIds(e,t,n={}){let i=n.fromRecord||this.getCollection(e).get(t);if(!i)return[];let s=n.includeSelf===!0,a=[i.ownerId,...i.collaboratorIds||[]];return[...new Set(a.filter(Boolean).filter(f=>s||f!==this.nodeId))]}resolveReplicationPeers(e,t,n={},i={}){if(n.connectToPeers===!1)return;if(Array.isArray(n.connectToPeers))return n.connectToPeers;let s=new Set;if(i.fromRecord)for(let a of this.getRecordPeerIds(e,t,{fromRecord:i.fromRecord,includeSelf:!0}))s.add(a);else if(t)for(let a of this.getRecordPeerIds(e,t,{includeSelf:!0}))s.add(a);if(Array.isArray(n.collaborators))for(let a of this.normalizeCollaboratorIds(n.collaborators))s.add(a);if(Array.isArray(i.extraPeerIds))for(let a of i.extraPeerIds)a&&s.add(a);return[...s].filter(a=>a&&a!==this.nodeId)}async create(e,t,n={}){let i=this.getCollection(e),s=n.id||this.idGenerator();if(i.has(s)&&!i.get(s).deletedAt)throw new Error(`Object ${s} already exists in ${e}`);let a=this.now(),f=this.normalizeCollaboratorIds(n.collaborators),l={opId:this.idGenerator(),kind:"create",collectionName:e,id:s,actorId:this.nodeId,ownerId:this.nodeId,collaboratorIds:f,timestamp:a,payload:{...t||{}}};return this.applyOperation(l),await this.maybePublishDomainEvent(l,n),await this.broadcastMessage("operation",l,{broadcastScope:n.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:l,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,null,n,{extraPeerIds:n.collaborators})}),this.read(e,s)}read(e,t){let n=this.getCollection(e);return this.normalizeRecord(n.get(t))}list(e,t={}){let n=this.getCollection(e),i=t.includeDeleted||!1,s=[];for(let a of n.values())if(!(a.deletedAt&&!i)){if(a.deletedAt&&i){s.push({id:a.id,ownerId:a.ownerId,deletedAt:a.deletedAt,version:a.version});continue}s.push(this.normalizeRecord(a))}return s}async update(e,t,n,i={}){let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(!this.canUpdateRecord(s,this.nodeId))throw new Error(`Only owner ${s.ownerId} or collaborators can update object ${t}`);if(i.collaborators!==void 0&&s.ownerId!==this.nodeId)throw new Error(`Only owner ${s.ownerId} can change collaborators on object ${t}`);if(typeof i.expectedVersion=="number"&&s.version!==i.expectedVersion){this.emitConflict({kind:"update",collection:e,id:t,expectedVersion:i.expectedVersion,currentVersion:s.version,phase:"local"});let f=new Error(`Version conflict on ${e}/${t}: expected ${i.expectedVersion}, current ${s.version}`);throw f.code="VERSION_CONFLICT",f}let a={opId:this.idGenerator(),kind:"update",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:s.version,payload:{...n}};return i.collaborators!==void 0&&(a.collaboratorIds=this.normalizeCollaboratorIds(i.collaborators)),this.applyOperation(a),await this.maybePublishDomainEvent(a,i),await this.broadcastMessage("operation",a,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:a,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,i,{fromRecord:s})}),this.read(e,t)}async updateWithRetry(e,t,n,i={}){let s=typeof i.maxAttempts=="number"?i.maxAttempts:5;for(let a=0;a<s;a+=1){let f=this.read(e,t);if(!f)throw new Error(`Object ${t} does not exist in ${e}`);let l=await n(f);try{return await this.update(e,t,l,{...i,expectedVersion:f.version})}catch(p){if(p.code!=="VERSION_CONFLICT"||a===s-1)throw p}}throw new Error(`Unable to update ${e}/${t} after ${s} attempts`)}async transferOwnership(e,t,n,i={}){if(!n)throw new Error("newOwnerId is required");let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(s.ownerId!==this.nodeId)throw new Error(`Only owner ${s.ownerId} can transfer object ${t}`);let a={opId:this.idGenerator(),kind:"transfer-ownership",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:s.version,newOwnerId:n,keepPreviousOwnerAsCollaborator:i.keepAsCollaborator!==!1};return this.applyOperation(a),await this.maybePublishDomainEvent(a,i),await this.broadcastMessage("operation",a,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:a,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,i,{fromRecord:s,extraPeerIds:[n]})}),this.read(e,t)}async remove(e,t,n={}){let i=this.getCollection(e).get(t);if(!i||i.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);if(i.ownerId!==this.nodeId)throw new Error(`Only owner ${i.ownerId} can delete object ${t}`);let s={opId:this.idGenerator(),kind:"delete",collectionName:e,id:t,actorId:this.nodeId,timestamp:this.now(),baseVersion:i.version};this.applyOperation(s),await this.maybePublishDomainEvent(s,n),await this.broadcastMessage("operation",s,{broadcastScope:n.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:s,collectionName:e}),connectToPeers:this.resolveReplicationPeers(e,t,n,{fromRecord:i})})}registerPeerPublicKey(e,t,n={}){this.securityService.registerPeerPublicKey(e,t,n)}getPeerIdentityGeneration(e){return this.securityService.getPeerIdentityGeneration(e)}getPeerIdentityState(e){return this.securityService.getPeerIdentityState(e)}applyPeerIdentityRotation(e,t){let n=this.securityService.applyIdentityRotation(e,t);return n.applied&&this.emit("identityrotated",{peerId:e,username:t.username,fromGeneration:n.fromGeneration,toGeneration:n.toGeneration,rotationKind:n.rotationKind}),n}async broadcastIdentityRotation(e,t={}){return this.broadcastMessage("identity:rotate",e,t)}async broadcastColdRecoveryEnrollment(e,t={}){return this.broadcastMessage("identity:cold-enroll",e,t)}applyPeerColdRecoveryEnrollment(e,t){let n=this.securityService.applyColdRecoveryEnrollment(e,t);return n.applied&&this.emit("coldrecoveryenrolled",{peerId:e,username:t.username,recoveryPublicKey:t.recoveryPublicKey}),n}async enrollAndBroadcastColdRecovery({username:e,coldPassword:t,pepper:n="",kdfIterations:i,broadcastOptions:s={}}={}){let a=await Sc({username:e,coldPassword:t,pepper:n,kdfIterations:i});return await this.broadcastColdRecoveryEnrollment(a.enrollment,s),a}async revokeAndRotateDerivedIdentity({username:e,password:t,coldPassword:n,currentGeneration:i=1,reason:s="compromise-recovery",pepper:a="",kdfIterations:f,broadcast:l=!1,broadcastOptions:p={}}={}){let y=await _c({username:e,password:t,coldPassword:n,currentGeneration:i,reason:s,pepper:a,kdfIterations:f});return l&&await this.broadcastIdentityRotation(y.rotation,p),y}async rotateDerivedIdentityPassword({username:e,currentPassword:t,newPassword:n,coldPassword:i,currentGeneration:s=1,reason:a="password-change",pepper:f="",kdfIterations:l,broadcast:p=!1,broadcastOptions:y={}}={}){let x=await Pc({username:e,currentPassword:t,newPassword:n,coldPassword:i,currentGeneration:s,reason:a,pepper:f,kdfIterations:l});return p&&await this.broadcastIdentityRotation(x.rotation,y),x}async adoptDerivedIdentityKeyPair(e,{generation:t=1}={}){if(!e||!e.signing||!e.encryption)throw new Error("adoptDerivedIdentityKeyPair requires a derived keyPair");this.securityService.signingSecretKey=e.signing.secretKey,this.securityService.signingPublicKey=e.signing.publicKey,this.securityService.encryptionSecretKey=e.encryption.secretKey,this.securityService.encryptionPublicKey=e.encryption.publicKey,this.securityService.publicKeyBundle={signingPublicKey:Hn.encodeBase64(e.signing.publicKey),encryptionPublicKey:Hn.encodeBase64(e.encryption.publicKey)},this.securityService.options.keyPair=e,this.securityService.options.identityGeneration=t}async deriveAndAdoptIdentity({username:e,password:t,generation:n=1,pepper:i="",kdfIterations:s}={}){let a=await wc({username:e,password:t,generation:n,pepper:i,kdfIterations:s});return await this.adoptDerivedIdentityKeyPair(a,{generation:n}),a}trustPeerPublicKey(e,t){if(!e||!t)return!1;try{return this.registerPeerPublicKey(e,t),!0}catch(n){return this.emit("warning",{type:"peer-key-trust-failed",peerId:e,error:n}),!1}}trustPeerFromMetadata(e,t){return!t||!t.publicKey?!1:this.trustPeerPublicKey(e,t.publicKey)}getPublicKey(){return this.securityService.getPublicKey()}async connectToPeer(e){if(!e||e===this.nodeId)return null;if(typeof this.networkAdapter.connectToPeer!="function")throw new Error("Network adapter does not support connectToPeer");return this.networkAdapter.connectToPeer(e)}getConnectionStats(){let e=this.networkAdapter;if(!e)return{openCount:0,peerIds:[]};let t=typeof e.listOpenPeerIds=="function"?e.listOpenPeerIds():[];return{openCount:typeof e.getOpenConnectionCount=="function"?e.getOpenConnectionCount():t.length,peerIds:t}}async ensureConnectedToPeers(e=[]){let t=[...new Set((e||[]).filter(Boolean))],n=[];for(let i of t)if(i!==this.nodeId)try{await this.connectToPeer(i),n.push({peerId:i,ok:!0})}catch(s){this.emit("warning",{type:"peer-connect-failed",peerId:i,error:s}),n.push({peerId:i,ok:!1,error:s})}return n}async broadcastMessage(e,t,n={}){let i=n.connectToPeers;Array.isArray(i)&&i.length>0&&(await this.ensureConnectedToPeers(i),await this.enforceConnectionBudget());let s=await this.securityService.secureOutgoingMessage({messageType:e,payload:t,targetId:null,securityContext:n}),a=n.fanoutPeerIds;if(Array.isArray(a)&&a.length>0&&typeof this.networkAdapter.sendToPeers=="function"){await this.networkAdapter.sendToPeers(s,a);return}await this.networkAdapter.broadcast(s)}async sendDirectMessage(e,t,n){if(e)try{await this.connectToPeer(e)}catch(s){this.emit("warning",{type:"direct-message-connect-failed",targetId:e,error:s})}let i=await this.securityService.secureOutgoingMessage({messageType:t,payload:n,targetId:e});if(e&&typeof this.networkAdapter.sendToPeers=="function"){await this.networkAdapter.sendToPeers(i,[e]);return}await this.networkAdapter.broadcast(i)}peerGroupScopeFor(e){return Cc(e)}getPeerGroupConfig(e){return this.peerGroups.get(e)||null}listPeerGroupMembers(e,t={}){return this.listPeers(this.peerGroupScopeFor(e),t)}getPeerGroupStats(){let e=this.networkAdapter,t=typeof e.listOpenPeerIds=="function"?e.listOpenPeerIds():[];return{joinedGroups:Array.from(this.peerGroups.keys()),seenGossipCount:this.seenGossipIds.size,openConnectionCount:t.length,globalMaxOpenConnections:this.globalMaxOpenConnections}}pruneSeenGossip(){let e=this.now();for(let[t,n]of this.seenGossipIds.entries())n<=e&&this.seenGossipIds.delete(t);for(;this.seenGossipIds.size>this.maxSeenGossipIds;){let t=this.seenGossipIds.keys().next().value;if(!t)break;this.seenGossipIds.delete(t)}}hasSeenGossip(e){return e?(this.pruneSeenGossip(),this.seenGossipIds.has(e)):!1}markSeenGossip(e){e&&(this.seenGossipIds.set(e,this.now()+this.gossipIdTtlMs),this.pruneSeenGossip())}listConnectedPeerIds(){return typeof this.networkAdapter.listOpenPeerIds=="function"?this.networkAdapter.listOpenPeerIds():[]}selectPeerGroupFanout(e,t,n=[],i={}){let s=this.peerGroupScopeFor(e),a=this.peerGroups.get(e),f=this.listPeers(s,{includeSelf:!1});return a&&a.tiered&&i.tier&&(f=Uc(f,i.tier)),i.bulkRelayOnly&&(f=f.filter(l=>l.metadata?.bulkRelay===!0)),Ic({peers:f,count:t,excludePeerIds:[...n,this.nodeId],connectedPeerIds:this.listConnectedPeerIds()})}async enforceConnectionBudget(){let e=this.networkAdapter;if(typeof e.listOpenPeerIds!="function"||typeof e.disconnectPeer!="function")return;let t=e.listOpenPeerIds();if(t.length<=this.globalMaxOpenConnections)return;let n=t.length-this.globalMaxOpenConnections,i=t.slice(0,n);for(let s of i)try{await e.disconnectPeer(s)}catch(a){this.emit("warning",{type:"peer-disconnect-failed",peerId:s,error:a})}}async joinPeerGroup(e,t={}){if(!e)throw new Error("joinPeerGroup requires groupId");let n=this.peerGroupScopeFor(e),i=t.role||t.metadata?.role||"subscriber",s=t.tierMode||"auto",a=t.tiered===!0||t.tierMode!==void 0||t.role!==void 0||typeof t.liveCap=="number",f=typeof t.liveCap=="number"?t.liveCap:Dc,p=this.listPeerGroupMembers(e,{includeSelf:!1}).filter(G=>(G.metadata?.peerGroupRole||G.metadata?.role)!=="publisher").length,y=a?ro({joinIndex:p,liveCap:f,requestedTier:s==="auto"?null:s,role:i}):null,x=t.publisherId||(i==="publisher"?this.nodeId:null),E={fanout:typeof t.fanout=="number"?t.fanout:this.defaultPeerGroupFanout,maxActivePeers:typeof t.maxActivePeers=="number"?t.maxActivePeers:this.defaultPeerGroupMaxActivePeers,maxHops:typeof t.maxHops=="number"?t.maxHops:this.defaultGossipMaxHops,relayEnabled:t.relayEnabled!==!1,tiered:a,tierMode:s,liveCap:f,bulkIntervalMs:typeof t.bulkIntervalMs=="number"?t.bulkIntervalMs:Oc,domainEvents:t.domainEvents!==!1,autoPublishDomainEvents:t.autoPublishDomainEvents!==!1,role:i,publisherId:x,commandCapable:t.commandCapable!==!1,peerGroupTier:y};return await this.joinDiscovery(n,{metadata:{peerGroup:e,...y?{peerGroupTier:y}:{},peerGroupRole:i,...x?{publisherId:x}:{},bulkRelay:!1,...t.metadata||{}},bootstrapPeerIds:t.bootstrapPeerIds,heartbeatIntervalMs:t.heartbeatIntervalMs,ttlMs:t.ttlMs}),this.peerGroups.set(e,E),this.domainEventLogs.has(e)||this.domainEventLogs.set(e,[]),this.replicaViews.has(e)||this.replicaViews.set(e,to()),this.refreshBulkRelays(e),a&&s==="auto"&&i==="subscriber"&&(y=this.recalculateOwnPeerGroupTier(e)||y,E.peerGroupTier=y),this.emit("peergroupjoined",{groupId:e,config:E,tier:y}),E}recalculateOwnPeerGroupTier(e){let t=this.peerGroups.get(e);if(!t||!t.tiered||t.role!=="subscriber")return t?t.peerGroupTier:null;if(t.tierMode!=="auto")return t.peerGroupTier;let n=this.peerGroupScopeFor(e),a=this.listPeerGroupMembers(e,{includeSelf:!0}).filter(p=>(p.metadata?.peerGroupRole||p.metadata?.role)!=="publisher").map(p=>p.peerId).sort().indexOf(this.nodeId);if(a<0)return t.peerGroupTier;let f=ro({joinIndex:a,liveCap:t.liveCap,requestedTier:null,role:"subscriber"});if(f===t.peerGroupTier)return f;t.peerGroupTier=f;let l=this.discoveryRooms.get(n);return l&&(l.metadata={...l.metadata||{},peerGroupTier:f},this.upsertPresence(n,this.nodeId,l.metadata,l.ttlMs,this.now()),this.announcePresence(n).catch(p=>{this.emit("warning",{type:"tier-announce-failed",groupId:e,error:p})})),f}async leavePeerGroup(e){if(!e)return;let t=this.peerGroupScopeFor(e);await this.leaveDiscovery(t),this.peerGroups.delete(e),this.bulkRelayByGroup.delete(e),this.emit("peergroupleft",{groupId:e})}async publishToPeerGroup(e,t,n,i={}){if(!e)throw new Error("publishToPeerGroup requires groupId");let s=this.peerGroups.get(e);if(!s&&i.allowUnjoined!==!0)throw new Error(`PeerGroup ${e} has not been joined`);if(this.gossipPublishMinIntervalMs>0){let E=this.lastGossipPublishAt.get(e)||0;if(this.now()-E<this.gossipPublishMinIntervalMs){let W=new Error(`Gossip publish rate limit exceeded for group ${e}`);throw W.code="GOSSIP_RATE_LIMIT",W}}let a=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,f=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,l=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p={};s&&s.tiered&&i.tier!=="bulk"&&(p.tier=i.tier||"live");let y=this.selectPeerGroupFanout(e,a,[this.nodeId],p);y.length>0&&(await this.ensureConnectedToPeers(y.slice(0,f)),await this.enforceConnectionBudget());let x=i.gossipId||this.idGenerator();return this.markSeenGossip(x),this.lastGossipPublishAt.set(e,this.now()),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:x,publisherId:this.nodeId,hop:0,maxHop:l,innerMessageType:t,innerPayload:n},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:y}),{gossipId:x,fanoutPeerIds:y}}async publishPeerGroupBulk(e,t,n,i={}){let s=this.peerGroups.get(e);if(!s&&i.allowUnjoined!==!0)throw new Error(`PeerGroup ${e} has not been joined`);if(s&&s.role!=="publisher")throw new Error(`Only publisher can bulk-publish to PeerGroup ${e}`);let a=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,f=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,l=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p=this.selectPeerGroupFanout(e,a,[this.nodeId],{tier:"bulk",bulkRelayOnly:s?.tiered===!0});p.length>0&&(await this.ensureConnectedToPeers(p.slice(0,f)),await this.enforceConnectionBudget());let y=i.gossipId||this.idGenerator();return this.markSeenGossip(y),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:y,publisherId:this.nodeId,hop:0,maxHop:l,deliveryTier:"bulk",innerMessageType:t,innerPayload:n},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:p}),{gossipId:y,fanoutPeerIds:p}}async publishPeerGroupCheckpoint(e,t={}){let n=this.peerGroups.get(e);if(!n)throw new Error(`PeerGroup ${e} has not been joined`);let i=this.domainEventLogs.get(e)||[],s=Mc(e,i,{publisherId:t.publisherId||n.publisherId||this.nodeId});return await this.publishPeerGroupBulk(e,"domain:checkpoint",s,t),this.emit("checkpointpublished",{groupId:e,checkpoint:s}),s}resolvePublisherGroupIds(e={}){if(e.peerGroupId)return[e.peerGroupId];let t=[];for(let[n,i]of this.peerGroups.entries())i.domainEvents&&i.autoPublishDomainEvents&&i.role==="publisher"&&t.push(n);return t}async maybePublishDomainEvent(e,t={}){let n=this.resolvePublisherGroupIds(t);if(n.length!==0)for(let i of n)await this.publishDomainEventForOperation(i,e)}async publishDomainEventForOperation(e,t){let n=this.peerGroups.get(e);if(!n||!n.domainEvents)return null;if(n.role!=="publisher")throw new Error(`Only publisher can emit domain events for PeerGroup ${e}`);let i=this.lastEventHashByGroup.get(e)||null,s=Tc(t,{publisherId:this.nodeId,groupId:e,prevHash:i,eventIdGenerator:()=>this.idGenerator()});this.securityService.options.signingEnabled&&this.securityService.signingSecretKey&&(s=kc(s,this.securityService.signingSecretKey));let a=this.domainEventLogs.get(e)||[];return a.push(s),this.domainEventLogs.set(e,a),this.lastEventHashByGroup.set(e,s.eventHash),this.emit("domainevent",s),n.autoPublishDomainEvents&&(await this.publishToPeerGroup(e,"domain:event",s,{tier:"live"}),n.tiered&&await this.publishPeerGroupBulk(e,"domain:event",s)),s}refreshBulkRelays(e){let t=this.peerGroups.get(e);if(!t||!t.tiered)return[];let n=this.listPeerGroupMembers(e,{includeSelf:!1}),i=Bc(n),s=this.bulkRelayByGroup.get(e)||[];return this.bulkRelayByGroup.set(e,i),(s.length!==i.length||s.some((f,l)=>f!==i[l]))&&this.emit("bulkrelaychanged",{groupId:e,relays:i,previous:s}),i}ingestRemoteDomainEvent(e,t={}){let n=e.groupId||t.groupId;if(!n)return!1;let i=this.peerGroups.get(n);if(!i)return!1;let s=e.publisherId||t.publisherId;if(i.publisherId&&s!==i.publisherId)return this.emit("warning",{type:"domain-event-rejected",groupId:n,reason:"publisher-mismatch",eventId:e.eventId,expectedPublisher:i.publisherId,actualPublisher:s}),!1;let a=null;if(this.securityService.options.signingEnabled&&s){let y=this.securityService.resolvePeerPublicKey(s,null);if(a=y?y.signingPublicKey:null,!a)return this.emit("warning",{type:"domain-event-rejected",groupId:n,reason:"missing-publisher-key",eventId:e.eventId,publisherId:s}),!1}let f=Rc(e,{signingPublicKey:a});if(!f.ok)return this.emit("warning",{type:"domain-event-rejected",groupId:n,reason:f.reason,eventId:e.eventId}),!1;if(this.securityService.options.signingEnabled&&f.unsigned)return this.emit("warning",{type:"domain-event-rejected",groupId:n,reason:"unsigned-event",eventId:e.eventId}),!1;let l=this.domainEventLogs.get(n)||[];if(l.some(y=>y.eventId===e.eventId))return!1;let p=l.length>0?l[l.length-1].eventHash:null;if(e.prevHash!==p)return this.emit("chainbroken",{groupId:n,expectedPrev:p,actualPrev:e.prevHash,eventId:e.eventId}),!1;if(l.push(e),this.domainEventLogs.set(n,l),this.lastEventHashByGroup.set(n,e.eventHash),!i.commandCapable){let y=this.replicaViews.get(n)||to();Ac(y,e),this.replicaViews.set(n,y)}return this.emit("domainevent",e),!0}async publishRecordToPeerGroup(e,t,n,i={}){let a=this.getCollection(t).get(n);if(!a||a.deletedAt)throw new Error(`Object ${n} does not exist in ${t}`);let f=this.normalizeRecord(a);return this.publishToPeerGroup(e,"record:snapshot",{collectionName:t,record:f},i)}async handlePeerGroupGossip(e){let t=e.payload||{},{groupId:n,gossipId:i,publisherId:s=e.senderId,hop:a=0,maxHop:f,innerMessageType:l,innerPayload:p}=t;if(!n||!l||!i||!this.peerGroups.has(n)||this.hasSeenGossip(i))return;this.markSeenGossip(i),await this.dispatchPeerGroupInnerMessage(l,p,{groupId:n,senderId:e.senderId,publisherId:s});let y=this.peerGroups.get(n),x=t.deliveryTier||"live";if(y&&y.tiered&&y.peerGroupTier==="bulk"&&x!=="bulk")return;let E=y?y.maxHops:this.defaultGossipMaxHops,G=typeof f=="number"?Math.min(f,E):E;if(!y||y.relayEnabled===!1||a>=G)return;let W={};y.tiered&&(W.tier=x==="bulk"?"bulk":"live",x==="bulk"&&(W.bulkRelayOnly=!0));let ie=this.selectPeerGroupFanout(n,y.fanout,[e.senderId,this.nodeId],W);ie.length!==0&&(await this.ensureConnectedToPeers(ie.slice(0,y.maxActivePeers)),await this.enforceConnectionBudget(),await this.broadcastMessage("peer-group:gossip",{groupId:n,gossipId:i,publisherId:s,hop:a+1,maxHop:G,deliveryTier:x,innerMessageType:l,innerPayload:p},{broadcastScope:this.peerGroupScopeFor(n),fanoutPeerIds:ie}))}normalizeGossipOperation(e,t){if(!e||!t)return null;if(e.actorId&&e.actorId!==t)return this.emit("warning",{type:"gossip-operation-actor-mismatch",publisherId:t,actorId:e.actorId,kind:e.kind,collection:e.collectionName,id:e.id}),null;let n={...e,actorId:t};return n.kind==="create"&&(n.ownerId=t),n}async dispatchPeerGroupInnerMessage(e,t,n={}){if(e==="operation"){let i=this.normalizeGossipOperation(t,n.publisherId||n.senderId);i&&this.applyOperation(i);return}if(e==="domain:event"){this.ingestRemoteDomainEvent(t,n);return}if(e==="domain:checkpoint"){this.emit("peergroupmessage",{groupId:n.groupId,senderId:n.senderId,type:"domain:checkpoint",payload:t});return}if(e==="record:snapshot"){let{collectionName:i,record:s}=t||{};i&&s&&this.restoreRecord(i,s,{rejectOnHashMismatch:!0,rejectOnOwnershipMismatch:!0,via:"peer-group"})&&this.emit("change",{kind:"snapshot",collection:i,id:s.id,via:"peer-group",groupId:n.groupId});return}this.emit("peergroupmessage",{groupId:n.groupId,senderId:n.senderId,type:e,payload:t})}getPresenceMap(e){return this.presenceByScope.has(e)||this.presenceByScope.set(e,new Map),this.presenceByScope.get(e)}upsertPresence(e,t,n,i,s){let a=this.getPresenceMap(e),f=a.get(t),l={peerId:t,scope:e,metadata:n?{...n}:{},lastSeenAt:s,expiresAt:s+i};a.set(t,l),this.trustPeerFromMetadata(t,l.metadata);let p=Ec(e);return p&&this.peerGroups.has(p)&&(this.refreshBulkRelays(p),t!==this.nodeId&&this.recalculateOwnPeerGroupTier(p)),f||this.emit("peerdiscovered",{scope:e,peerId:t,metadata:l.metadata}),l}prunePresence(e){let t=this.presenceByScope.get(e);if(!t)return;let n=this.now();for(let[i,s]of t.entries())s.expiresAt<=n&&(t.delete(i),this.emit("peerleft",{scope:e,peerId:i,reason:"timeout"}))}async joinDiscovery(e="main",t={}){let n=e||"main",i=t.heartbeatIntervalMs||this.defaultDiscoveryHeartbeatMs,s=t.ttlMs||this.defaultPresenceTtlMs,a={publicKey:this.getPublicKey(),...t.metadata||{}},f=Array.isArray(t.bootstrapPeerIds)?[...new Set(t.bootstrapPeerIds.filter(Boolean))]:[],l=this.discoveryRooms.get(n);l&&l.timer&&clearInterval(l.timer),f.length>0&&await this.ensureConnectedToPeers(f);let p=setInterval(()=>{this.announcePresence(n).catch(y=>{this.emit("warning",{type:"presence-heartbeat-failed",scope:n,error:y})})},i);this.discoveryRooms.set(n,{metadata:a,bootstrapPeerIds:f,heartbeatIntervalMs:i,ttlMs:s,timer:p}),this.upsertPresence(n,this.nodeId,a,s,this.now()),await this.announcePresence(n)}async announcePresence(e="main",t=null){let n=e||"main",i=this.discoveryRooms.get(n);if(!i)throw new Error(`Scope ${n} has not been joined for discovery`);let s=t||i.metadata||{},a=this.now();this.upsertPresence(n,this.nodeId,s,i.ttlMs,a),await this.broadcastMessage("presence:announce",{scope:n,peerId:this.nodeId,metadata:s,ttlMs:i.ttlMs,announcedAt:a},{broadcastScope:n})}async leaveDiscovery(e="main"){let t=e||"main",n=this.discoveryRooms.get(t);if(!n)return;n.timer&&clearInterval(n.timer),this.discoveryRooms.delete(t);let i=this.presenceByScope.get(t);i&&i.delete(this.nodeId),await this.broadcastMessage("presence:leave",{scope:t,peerId:this.nodeId,leftAt:this.now()},{broadcastScope:t})}listPeers(e="main",t={}){let n=e||"main",i=t.includeSelf!==!1;this.prunePresence(n);let s=this.presenceByScope.get(n);return s?Array.from(s.values()).filter(a=>i||a.peerId!==this.nodeId).map(a=>({peerId:a.peerId,scope:a.scope,metadata:{...a.metadata},lastSeenAt:a.lastSeenAt,expiresAt:a.expiresAt})):[]}async handleIncomingMessage(e){if(e&&e.opId&&e.kind){if(this.securityService.options.enabled){this.emit("messageignored",{reason:"raw-operation-rejected",hint:"Unsigned raw operations are disabled when security is enabled"});return}this.applyOperation(e);return}if(e&&e.senderId&&this.isPeerBanned(e.senderId)){this.emit("messageignored",{senderId:e.senderId,reason:"peer-banned"});return}let t;try{t=await this.securityService.decryptIncomingMessage(e)}catch(n){let i=e?e.senderId:null;i&&(n.code==="INVALID_SIGNATURE"||n.code==="INVALID_POW")&&this.banPeer(i,this.peerBanDurationMs,n.code),this.emit("securityerror",{senderId:i,error:n});return}if(!(!t||t.ignored)){if(t.messageType==="identity:rotate"){let n=t.senderId||t.payload?.username;if(n&&t.payload){let i=this.applyPeerIdentityRotation(n,t.payload);i.applied||this.emit("warning",{type:"identity-rotation-ignored",peerId:n,reason:i.reason})}return}if(t.messageType==="identity:cold-enroll"){let n=t.senderId||t.payload?.username;if(n&&t.payload)try{this.applyPeerColdRecoveryEnrollment(n,t.payload)}catch(i){this.emit("warning",{type:"cold-recovery-enrollment-rejected",peerId:n,error:i})}return}if(e&&e.senderId&&e.senderPublicKey&&this.trustPeerPublicKey(e.senderId,e.senderPublicKey),t.messageType==="operation"){this.applyOperation(t.payload);return}if(t.messageType==="record:snapshot"){let n=t.payload||{},{collectionName:i,record:s}=n;i&&s&&this.restoreRecord(i,s,{rejectOnHashMismatch:!0,via:"direct-mesh"})&&this.emit("change",{kind:"snapshot",collection:i,id:s.id});return}if(t.messageType==="presence:announce"){let n=t.payload||{},i=n.scope||"main",s=n.peerId||t.senderId;if(!s||s!==t.senderId||!this.discoveryRooms.has(i))return;let a=this.discoveryRooms.get(i),l=!this.getPresenceMap(i).has(s),p=typeof n.ttlMs=="number"?n.ttlMs:a.ttlMs,y=Math.min(p,a.ttlMs);this.upsertPresence(i,s,n.metadata||{},y,this.now()),n.metadata&&n.metadata.publicKey&&this.trustPeerPublicKey(s,n.metadata.publicKey),l&&s!==this.nodeId&&this.discoveryRooms.has(i)&&(typeof this.networkAdapter.connectToPeer=="function"&&Promise.resolve(this.connectToPeer(s)).catch(x=>{this.emit("warning",{type:"peer-connect-failed",scope:i,peerId:s,error:x})}),this.announcePresence(i).catch(x=>{this.emit("warning",{type:"presence-handshake-failed",scope:i,error:x})}));return}if(t.messageType==="presence:leave"){let n=t.payload||{},i=n.scope||"main",s=n.peerId||t.senderId;if(!s||s!==t.senderId)return;let a=this.presenceByScope.get(i);a&&s&&a.has(s)&&(a.delete(s),this.emit("peerleft",{scope:i,peerId:s,reason:"leave"}));return}if(t.messageType==="peer-group:gossip"){await this.handlePeerGroupGossip(t);return}this.emit("message",{senderId:t.senderId,targetId:t.targetId,type:t.messageType,payload:t.payload})}}banPeer(e,t=this.peerBanDurationMs,n="manual"){if(!e)return;let i=this.now()+Math.max(1,t);this.bannedPeers.set(e,{peerId:e,reason:n,bannedAt:this.now(),bannedUntil:i}),this.emit("peerbanned",{peerId:e,reason:n,bannedUntil:i})}unbanPeer(e){this.bannedPeers.delete(e),this.emit("peerunbanned",{peerId:e})}getBanInfo(e){let t=this.bannedPeers.get(e);return t?t.bannedUntil<=this.now()?(this.bannedPeers.delete(e),null):{...t}:null}isPeerBanned(e){return this.getBanInfo(e)!==null}emitConflict(e){this.emit("conflict",e)}restoreRecord(e,t,n={}){if(!t||!t.id)return!1;let i=this.getCollection(e),s=i.get(t.id);if(s&&s.version>=t.version)return!1;let a={...t.data||{}},f=Gt(a),l=n.rejectOnHashMismatch===!0;if(n.rejectOnOwnershipMismatch===!0&&s&&t.ownerId&&s.ownerId!==t.ownerId)return this.emit("warning",{type:"ownership-mismatch",collection:e,id:t.id,currentOwnerId:s.ownerId,advertisedOwnerId:t.ownerId,via:n.via||null}),!1;if(t.hash){if(t.hash!==f&&(this.emit("warning",{type:"content-hash-mismatch",collection:e,id:t.id,advertisedHash:t.hash,computedHash:f,via:n.via||null}),l))return!1}else{let y={type:"content-hash-missing",collection:e,id:t.id,via:n.via||null};if(this.emit("warning",y),l)return!1}return i.set(t.id,{id:t.id,ownerId:t.ownerId,collaboratorIds:this.normalizeCollaboratorIds(t.collaboratorIds),data:a,hash:f,createdAt:t.createdAt,updatedAt:t.updatedAt,deletedAt:t.deletedAt||null,version:t.version}),!0}async pushRecordSnapshot(e,t,n={}){let s=this.getCollection(e).get(t);if(!s||s.deletedAt)throw new Error(`Object ${t} does not exist in ${e}`);let a={id:s.id,ownerId:s.ownerId,collaboratorIds:Array.isArray(s.collaboratorIds)?[...s.collaboratorIds]:[],data:{...s.data||{}},hash:s.hash||Gt(s.data||{}),createdAt:s.createdAt,updatedAt:s.updatedAt,deletedAt:s.deletedAt||null,version:s.version};return await this.broadcastMessage("record:snapshot",{collectionName:e,record:a},{broadcastScope:n.broadcastScope||this.resolveBroadcastScope({messageType:"record:snapshot",collectionName:e,id:t}),connectToPeers:this.resolveReplicationPeers(e,t,n,{fromRecord:s})}),a}pruneAppliedOperations(){for(;this.appliedOperations.size>this.maxAppliedOperations;){let e=this.appliedOperations.keys().next().value;if(!e)break;this.appliedOperations.delete(e)}}applyOperation(e){if(!e||!e.opId||this.appliedOperations.has(e.opId))return!1;let t=this.getCollection(e.collectionName),n=t.get(e.id);if(e.kind==="create")return n&&!n.deletedAt?!1:(t.set(e.id,{id:e.id,ownerId:e.ownerId,collaboratorIds:this.normalizeCollaboratorIds(e.collaboratorIds),data:{...e.payload||{}},hash:Gt(e.payload||{}),createdAt:e.timestamp,updatedAt:e.timestamp,deletedAt:null,version:1}),this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"create",collection:e.collectionName,id:e.id}),!0);if(!n||n.deletedAt)return e.kind!=="create"&&this.emit("warning",{type:"orphan-operation",kind:e.kind,collection:e.collectionName,id:e.id,actorId:e.actorId,hint:"Peer is missing the record; pushRecordSnapshot from the owner to catch up."}),!1;if(e.kind==="transfer-ownership"){if(e.actorId!==n.ownerId)return!1;if(typeof e.baseVersion=="number"&&e.baseVersion!==n.version)return this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:n.version,phase:"remote",operation:e}),!1;let i=n.ownerId;if(n.ownerId=e.newOwnerId,e.keepPreviousOwnerAsCollaborator!==!1){let s=this.normalizeCollaboratorIds(n.collaboratorIds);s.includes(i)||s.push(i),n.collaboratorIds=s.filter(a=>a!==e.newOwnerId)}return n.updatedAt=e.timestamp,n.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"transfer-ownership",collection:e.collectionName,id:e.id,previousOwnerId:i,newOwnerId:e.newOwnerId}),!0}return e.kind==="delete"?e.actorId!==n.ownerId?!1:typeof e.baseVersion=="number"&&e.baseVersion!==n.version?(this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:n.version,phase:"remote",operation:e}),!1):(n.deletedAt=e.timestamp,n.updatedAt=e.timestamp,n.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"delete",collection:e.collectionName,id:e.id}),!0):this.canUpdateRecord(n,e.actorId)?typeof e.baseVersion=="number"&&e.baseVersion!==n.version?(this.emitConflict({kind:e.kind,collection:e.collectionName,id:e.id,expectedVersion:e.baseVersion,currentVersion:n.version,phase:"remote",operation:e}),!1):e.kind==="update"?(n.data={...n.data,...e.payload},n.hash=Gt(n.data),Array.isArray(e.collaboratorIds)&&e.actorId===n.ownerId&&(n.collaboratorIds=this.normalizeCollaboratorIds(e.collaboratorIds)),n.updatedAt=e.timestamp,n.version+=1,this.appliedOperations.set(e.opId,this.now()),this.pruneAppliedOperations(),this.emit("change",{kind:"update",collection:e.collectionName,id:e.id}),!0):!1:!1}};no.exports=Wn});var Jn=K((Ul,so)=>{var Yn=class{constructor(e=[]){this.providers=[...e],this.activeProvider=null}registerProvider(e){this.providers.push(e)}getProvidersByPriority(){return[...this.providers].sort((e,t)=>(e.priority||0)-(t.priority||0))}async connect(e=new Set){let t=this.getProvidersByPriority().filter(i=>!e.has(i.id)),n;for(let i of t)try{return await i.connect(),this.activeProvider=i,i}catch(s){n=s}throw n||new Error("No signaling provider could connect")}async send(e){this.activeProvider||await this.connect();try{await this.activeProvider.send(e)}catch(t){this.activeProvider&&typeof this.activeProvider.disconnect=="function"&&await this.activeProvider.disconnect();let n=this.activeProvider?this.activeProvider.id:null;this.activeProvider=null;let i=n?new Set([n]):new Set;return await this.connect(i),await this.activeProvider.send(e),t}return null}onMessage(e){for(let t of this.providers)typeof t.onMessage=="function"&&t.onMessage(e)}async disconnect(){let e=this.providers.filter(t=>typeof t.disconnect=="function").map(t=>t.disconnect());await Promise.all(e),this.activeProvider=null}};so.exports=Yn});var Mr=K((Bl,ao)=>{function oo(r){let e="";for(;e.length<r;){let t=Math.random().toString(36).slice(2);e+=t.length>0?t:"0"}return e.slice(0,r)}var Xn=class{constructor({id:e,url:t,WebSocketImpl:n,priority:i=0}){if(!t)throw new Error("WebSocket signaling provider requires a url");this.id=e||t,this.url=t,this.priority=i,this.WebSocketImpl=n||globalThis.WebSocket,this.socket=null,this.messageHandlers=new Set}async connect(){if(!this.WebSocketImpl)throw new Error("WebSocket implementation is not available");await new Promise((e,t)=>{let n=new this.WebSocketImpl(this.buildConnectionUrl());n.onopen=()=>{this.socket=n,e()},n.onerror=()=>{t(new Error(`Unable to connect to signaling url ${this.url}`))},n.onmessage=i=>{let s=i.data;try{s=JSON.parse(i.data)}catch{s=i.data}for(let a of this.messageHandlers)a(s)}})}buildConnectionUrl(){if(!/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(this.url))return this.url;let t=`dignityjs_${oo(10)}`,n=oo(10),i=this.url.includes("?"),s=/[?&]id=/.test(this.url),a=/[?&]token=/.test(this.url),f=this.url;return s||(f+=`${i?"&":"?"}id=${t}`),a||(f+=`${f.includes("?")?"&":"?"}token=${n}`),f}onMessage(e){this.messageHandlers.add(e)}async send(e){if(!this.socket||this.socket.readyState!==1)throw new Error(`Signaling socket is not open for ${this.url}`);this.socket.send(JSON.stringify(e))}async disconnect(){this.socket&&(this.socket.close(),this.socket=null)}};ao.exports=Xn});var Dr=K((Ll,co)=>{function Lc(r){let e=new URL(r),t=e.protocol==="wss:",n=e.hostname,i=e.port?Number(e.port):t?443:80,s=e.searchParams.get("key")||"peerjs",a=e.pathname||"/";return a.endsWith("/peerjs")&&(a=a.slice(0,-7)||"/"),a!=="/"&&!a.endsWith("/")&&(a+="/"),{secure:t,host:n,port:i,path:a,key:s}}co.exports=Lc});var fo=K((jl,Ur)=>{function ei(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}ei(Ur.exports,"unpack",()=>Gc);ei(Ur.exports,"pack",()=>Fc);ei(Ur.exports,"Packer",()=>Or);var Zn=class{constructor(){this.encoder=new TextEncoder,this._pieces=[],this._parts=[]}append_buffer(e){this.flush(),this._parts.push(e)}append(e){this._pieces.push(e)}flush(){if(this._pieces.length>0){let e=new Uint8Array(this._pieces);this._parts.push(e),this._pieces=[]}}toArrayBuffer(){let e=[];for(let t of this._parts)e.push(t);return jc(e).buffer}};function jc(r){let e=0;for(let i of r)e+=i.byteLength;let t=new Uint8Array(e),n=0;for(let i of r){let s=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);t.set(s,n),n+=i.byteLength}return t}function Gc(r){return new Qn(r).unpack()}function Fc(r){let e=new Or,t=e.pack(r);return t instanceof Promise?t.then(()=>e.getBuffer()):e.getBuffer()}var Qn=class{constructor(e){this.index=0,this.dataBuffer=e,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}unpack(){let e=this.unpack_uint8();if(e<128)return e;if((e^224)<32)return(e^224)-32;let t;if((t=e^160)<=15)return this.unpack_raw(t);if((t=e^176)<=15)return this.unpack_string(t);if((t=e^144)<=15)return this.unpack_array(t);if((t=e^128)<=15)return this.unpack_map(t);switch(e){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return t=this.unpack_uint16(),this.unpack_string(t);case 217:return t=this.unpack_uint32(),this.unpack_string(t);case 218:return t=this.unpack_uint16(),this.unpack_raw(t);case 219:return t=this.unpack_uint32(),this.unpack_raw(t);case 220:return t=this.unpack_uint16(),this.unpack_array(t);case 221:return t=this.unpack_uint32(),this.unpack_array(t);case 222:return t=this.unpack_uint16(),this.unpack_map(t);case 223:return t=this.unpack_uint32(),this.unpack_map(t)}}unpack_uint8(){let e=this.dataView[this.index]&255;return this.index++,e}unpack_uint16(){let e=this.read(2),t=(e[0]&255)*256+(e[1]&255);return this.index+=2,t}unpack_uint32(){let e=this.read(4),t=((e[0]*256+e[1])*256+e[2])*256+e[3];return this.index+=4,t}unpack_uint64(){let e=this.read(8),t=((((((e[0]*256+e[1])*256+e[2])*256+e[3])*256+e[4])*256+e[5])*256+e[6])*256+e[7];return this.index+=8,t}unpack_int8(){let e=this.unpack_uint8();return e<128?e:e-256}unpack_int16(){let e=this.unpack_uint16();return e<32768?e:e-65536}unpack_int32(){let e=this.unpack_uint32();return e<2**31?e:e-2**32}unpack_int64(){let e=this.unpack_uint64();return e<2**63?e:e-2**64}unpack_raw(e){if(this.length<this.index+e)throw new Error(`BinaryPackFailure: index is out of range ${this.index} ${e} ${this.length}`);let t=this.dataBuffer.slice(this.index,this.index+e);return this.index+=e,t}unpack_string(e){let t=this.read(e),n=0,i="",s,a;for(;n<e;)s=t[n],s<160?(a=s,n++):(s^192)<32?(a=(s&31)<<6|t[n+1]&63,n+=2):(s^224)<16?(a=(s&15)<<12|(t[n+1]&63)<<6|t[n+2]&63,n+=3):(a=(s&7)<<18|(t[n+1]&63)<<12|(t[n+2]&63)<<6|t[n+3]&63,n+=4),i+=String.fromCodePoint(a);return this.index+=e,i}unpack_array(e){let t=new Array(e);for(let n=0;n<e;n++)t[n]=this.unpack();return t}unpack_map(e){let t={};for(let n=0;n<e;n++){let i=this.unpack();t[i]=this.unpack()}return t}unpack_float(){let e=this.unpack_uint32(),t=e>>31,n=(e>>23&255)-127,i=e&8388607|8388608;return(t===0?1:-1)*i*2**(n-23)}unpack_double(){let e=this.unpack_uint32(),t=this.unpack_uint32(),n=e>>31,i=(e>>20&2047)-1023,a=(e&1048575|1048576)*2**(i-20)+t*2**(i-52);return(n===0?1:-1)*a}read(e){let t=this.index;if(t+e<=this.length)return this.dataView.subarray(t,t+e);throw new Error("BinaryPackFailure: read index out of range")}},Or=class{getBuffer(){return this._bufferBuilder.toArrayBuffer()}pack(e){if(typeof e=="string")this.pack_string(e);else if(typeof e=="number")Math.floor(e)===e?this.pack_integer(e):this.pack_double(e);else if(typeof e=="boolean")e===!0?this._bufferBuilder.append(195):e===!1&&this._bufferBuilder.append(194);else if(e===void 0)this._bufferBuilder.append(192);else if(typeof e=="object")if(e===null)this._bufferBuilder.append(192);else{let t=e.constructor;if(e instanceof Array){let n=this.pack_array(e);if(n instanceof Promise)return n.then(()=>this._bufferBuilder.flush())}else if(e instanceof ArrayBuffer)this.pack_bin(new Uint8Array(e));else if("BYTES_PER_ELEMENT"in e){let n=e;this.pack_bin(new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}else if(e instanceof Date)this.pack_string(e.toString());else{if(e instanceof Blob)return e.arrayBuffer().then(n=>{this.pack_bin(new Uint8Array(n)),this._bufferBuilder.flush()});if(t==Object||t.toString().startsWith("class")){let n=this.pack_object(e);if(n instanceof Promise)return n.then(()=>this._bufferBuilder.flush())}else throw new Error(`Type "${t.toString()}" not yet supported`)}}else throw new Error(`Type "${typeof e}" not yet supported`);this._bufferBuilder.flush()}pack_bin(e){let t=e.length;if(t<=15)this.pack_uint8(160+t);else if(t<=65535)this._bufferBuilder.append(218),this.pack_uint16(t);else if(t<=4294967295)this._bufferBuilder.append(219),this.pack_uint32(t);else throw new Error("Invalid length");this._bufferBuilder.append_buffer(e)}pack_string(e){let t=this._textEncoder.encode(e),n=t.length;if(n<=15)this.pack_uint8(176+n);else if(n<=65535)this._bufferBuilder.append(216),this.pack_uint16(n);else if(n<=4294967295)this._bufferBuilder.append(217),this.pack_uint32(n);else throw new Error("Invalid length");this._bufferBuilder.append_buffer(t)}pack_array(e){let t=e.length;if(t<=15)this.pack_uint8(144+t);else if(t<=65535)this._bufferBuilder.append(220),this.pack_uint16(t);else if(t<=4294967295)this._bufferBuilder.append(221),this.pack_uint32(t);else throw new Error("Invalid length");let n=i=>{if(i<t){let s=this.pack(e[i]);return s instanceof Promise?s.then(()=>n(i+1)):n(i+1)}};return n(0)}pack_integer(e){if(e>=-32&&e<=127)this._bufferBuilder.append(e&255);else if(e>=0&&e<=255)this._bufferBuilder.append(204),this.pack_uint8(e);else if(e>=-128&&e<=127)this._bufferBuilder.append(208),this.pack_int8(e);else if(e>=0&&e<=65535)this._bufferBuilder.append(205),this.pack_uint16(e);else if(e>=-32768&&e<=32767)this._bufferBuilder.append(209),this.pack_int16(e);else if(e>=0&&e<=4294967295)this._bufferBuilder.append(206),this.pack_uint32(e);else if(e>=-2147483648&&e<=2147483647)this._bufferBuilder.append(210),this.pack_int32(e);else if(e>=-9223372036854776e3&&e<=9223372036854776e3)this._bufferBuilder.append(211),this.pack_int64(e);else if(e>=0&&e<=18446744073709552e3)this._bufferBuilder.append(207),this.pack_uint64(e);else throw new Error("Invalid integer")}pack_double(e){let t=0;e<0&&(t=1,e=-e);let n=Math.floor(Math.log(e)/Math.LN2),i=e/2**n-1,s=Math.floor(i*2**52),a=2**32,f=t<<31|n+1023<<20|s/a&1048575,l=s%a;this._bufferBuilder.append(203),this.pack_int32(f),this.pack_int32(l)}pack_object(e){let t=Object.keys(e),n=t.length;if(n<=15)this.pack_uint8(128+n);else if(n<=65535)this._bufferBuilder.append(222),this.pack_uint16(n);else if(n<=4294967295)this._bufferBuilder.append(223),this.pack_uint32(n);else throw new Error("Invalid length");let i=s=>{if(s<t.length){let a=t[s];if(e.hasOwnProperty(a)){this.pack(a);let f=this.pack(e[a]);if(f instanceof Promise)return f.then(()=>i(s+1))}return i(s+1)}};return i(0)}pack_uint8(e){this._bufferBuilder.append(e)}pack_uint16(e){this._bufferBuilder.append(e>>8),this._bufferBuilder.append(e&255)}pack_uint32(e){let t=e&4294967295;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255)}pack_uint64(e){let t=e/4294967296,n=e%2**32;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255),this._bufferBuilder.append((n&4278190080)>>>24),this._bufferBuilder.append((n&16711680)>>>16),this._bufferBuilder.append((n&65280)>>>8),this._bufferBuilder.append(n&255)}pack_int8(e){this._bufferBuilder.append(e&255)}pack_int16(e){this._bufferBuilder.append((e&65280)>>8),this._bufferBuilder.append(e&255)}pack_int32(e){this._bufferBuilder.append(e>>>24&255),this._bufferBuilder.append((e&16711680)>>>16),this._bufferBuilder.append((e&65280)>>>8),this._bufferBuilder.append(e&255)}pack_int64(e){let t=Math.floor(e/4294967296),n=e%2**32;this._bufferBuilder.append((t&4278190080)>>>24),this._bufferBuilder.append((t&16711680)>>>16),this._bufferBuilder.append((t&65280)>>>8),this._bufferBuilder.append(t&255),this._bufferBuilder.append((n&4278190080)>>>24),this._bufferBuilder.append((n&16711680)>>>16),this._bufferBuilder.append((n&65280)>>>8),this._bufferBuilder.append(n&255)}constructor(){this._bufferBuilder=new Zn,this._textEncoder=new TextEncoder}}});var it=K(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.compactObject=po;je.deprecated=Wc;je.detectBrowser=Yc;je.disableLog=zc;je.disableWarnings=Vc;je.extractVersion=Ft;je.filterStats=Jc;je.log=Hc;je.walkStats=Br;je.wrapPeerConnectionEvent=qc;function Kc(r,e,t){return(e=Nc(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function Nc(r){var e=$c(r,"string");return nt(e)=="symbol"?e:e+""}function $c(r,e){if(nt(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(nt(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function nt(r){"@babel/helpers - typeof";return nt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},nt(r)}var lo=!0,ho=!0;function Ft(r,e,t){var n=r.match(e);return n&&n.length>=t&&parseFloat(n[t],10)}function qc(r,e,t){if(r.RTCPeerConnection){var n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,f){if(a!==e)return i.apply(this,arguments);var l=function(y){var x=t(y);x&&(f.handleEvent?f.handleEvent(x):f(x))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(f,l),i.apply(this,[a,l])};var s=n.removeEventListener;n.removeEventListener=function(a,f){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(f))return s.apply(this,arguments);var l=this._eventMap[e].get(f);return this._eventMap[e].delete(f),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,l])},Object.defineProperty(n,"on"+e,{get:function(){return this["_on"+e]},set:function(f){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),f&&this.addEventListener(e,this["_on"+e]=f)},enumerable:!0,configurable:!0})}}function zc(r){return typeof r!="boolean"?new Error("Argument type: "+nt(r)+". Please use a boolean."):(lo=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function Vc(r){return typeof r!="boolean"?new Error("Argument type: "+nt(r)+". Please use a boolean."):(ho=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function Hc(){if((typeof window>"u"?"undefined":nt(window))==="object"){if(lo)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Wc(r,e){ho&&console.warn(r+" is deprecated, please use "+e+" instead.")}function Yc(r){var e={browser:null,version:null};if(typeof r>"u"||!r.navigator||!r.navigator.userAgent)return e.browser="Not a browser.",e;var t=r.navigator;if(t.userAgentData&&t.userAgentData.brands){var n=t.userAgentData.brands.find(function(i){return i.brand==="Chromium"});if(n)return{browser:"chrome",version:parseInt(n.version,10)}}if(t.mozGetUserMedia)e.browser="firefox",e.version=parseInt(Ft(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Ft(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Ft(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype,e._safariVersion=Ft(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function uo(r){return Object.prototype.toString.call(r)==="[object Object]"}function po(r){return uo(r)?Object.keys(r).reduce(function(e,t){var n=uo(r[t]),i=n?po(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,Kc({},t,i))},{}):r}function Br(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(function(n){n.endsWith("Id")?Br(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(function(i){Br(r,r.get(i),t)})}))}function Jc(r,e,t){var n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;var s=[];return r.forEach(function(a){a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(function(a){r.forEach(function(f){f.type===n&&f.trackId===a.id&&Br(r,f,i)})}),i}});var go=K(ti=>{"use strict";Object.defineProperty(ti,"__esModule",{value:!0});ti.shimGetUserMedia=Zc;var Xc=mo(it());function mo(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(mo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||st(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function st(r){"@babel/helpers - typeof";return st=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},st(r)}var yo=Xc.log;function Zc(r,e){var t=r&&r.navigator;if(t.mediaDevices){var n=function(p){if(st(p)!=="object"||p.mandatory||p.optional)return p;var y={};return Object.keys(p).forEach(function(x){if(!(x==="require"||x==="advanced"||x==="mediaSource")){var E=st(p[x])==="object"?p[x]:{ideal:p[x]};E.exact!==void 0&&typeof E.exact=="number"&&(E.min=E.max=E.exact);var G=function(ue,be){return ue?ue+be.charAt(0).toUpperCase()+be.slice(1):be==="deviceId"?"sourceId":be};if(E.ideal!==void 0){y.optional=y.optional||[];var W={};typeof E.ideal=="number"?(W[G("min",x)]=E.ideal,y.optional.push(W),W={},W[G("max",x)]=E.ideal,y.optional.push(W)):(W[G("",x)]=E.ideal,y.optional.push(W))}E.exact!==void 0&&typeof E.exact!="number"?(y.mandatory=y.mandatory||{},y.mandatory[G("",x)]=E.exact):["min","max"].forEach(function(ie){E[ie]!==void 0&&(y.mandatory=y.mandatory||{},y.mandatory[G(ie,x)]=E[ie])})}}),p.advanced&&(y.optional=(y.optional||[]).concat(p.advanced)),y},i=function(p,y){if(e.version>=61)return y(p);if(p=JSON.parse(JSON.stringify(p)),p&&st(p.audio)==="object"){var x=function(ue,be,bt){be in ue&&!(bt in ue)&&(ue[bt]=ue[be],delete ue[be])};p=JSON.parse(JSON.stringify(p)),x(p.audio,"autoGainControl","googAutoGainControl"),x(p.audio,"noiseSuppression","googNoiseSuppression"),p.audio=n(p.audio)}if(p&&st(p.video)==="object"){var E=p.video.facingMode;E=E&&(st(E)==="object"?E:{ideal:E});var G=e.version<66;if(E&&(E.exact==="user"||E.exact==="environment"||E.ideal==="user"||E.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!G)){delete p.video.facingMode;var W;if(E.exact==="environment"||E.ideal==="environment"?W=["back","rear"]:(E.exact==="user"||E.ideal==="user")&&(W=["front"]),W)return t.mediaDevices.enumerateDevices().then(function(ie){ie=ie.filter(function(be){return be.kind==="videoinput"});var ue=ie.find(function(be){return W.some(function(bt){return be.label.toLowerCase().includes(bt)})});return!ue&&ie.length&&W.includes("back")&&(ue=ie[ie.length-1]),ue&&(p.video.deviceId=E.exact?{exact:ue.deviceId}:{ideal:ue.deviceId}),p.video=n(p.video),yo("chrome: "+JSON.stringify(p)),y(p)})}p.video=n(p.video)}return yo("chrome: "+JSON.stringify(p)),y(p)},s=function(p){return e.version>=64?p:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[p.name]||p.name,message:p.message,constraint:p.constraint||p.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}},a=function(p,y,x){i(p,function(E){t.webkitGetUserMedia(E,y,function(G){x&&x(s(G))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){var f=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(l){return i(l,function(p){return f(p).then(function(y){if(p.audio&&!y.getAudioTracks().length||p.video&&!y.getVideoTracks().length)throw y.getTracks().forEach(function(x){x.stop()}),new DOMException("","NotFoundError");return y},function(y){return Promise.reject(s(y))})})}}}}});var _o=K(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.fixNegotiationNeeded=ff;Ne.shimAddTrackRemoveTrack=af;Ne.shimAddTrackRemoveTrackWithNative=vo;Ne.shimGetSendersWithDtmf=sf;Object.defineProperty(Ne,"shimGetUserMedia",{enumerable:!0,get:function(){return Qc.shimGetUserMedia}});Ne.shimMediaStream=rf;Ne.shimOnTrack=nf;Ne.shimPeerConnection=cf;Ne.shimSenderReceiverGetStats=of;var Kt=xo(it()),Qc=go();function xo(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(xo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||He(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function bo(r,e,t){return(e=ef(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function ef(r){var e=tf(r,"string");return He(e)=="symbol"?e:e+""}function tf(r,e){if(He(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(He(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function He(r){"@babel/helpers - typeof";return He=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},He(r)}function rf(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function nf(r){if(He(r)==="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(n){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=n)},enumerable:!0,configurable:!0});var e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._ontrackpoly||(this._ontrackpoly=function(i){i.stream.addEventListener("addtrack",function(s){var a;r.RTCPeerConnection.prototype.getReceivers?a=n.getReceivers().find(function(l){return l.track&&l.track.id===s.track.id}):a={track:s.track};var f=new Event("track");f.track=s.track,f.receiver=a,f.transceiver={receiver:a},f.streams=[i.stream],n.dispatchEvent(f)}),i.stream.getTracks().forEach(function(s){var a;r.RTCPeerConnection.prototype.getReceivers?a=n.getReceivers().find(function(l){return l.track&&l.track.id===s.id}):a={track:s};var f=new Event("track");f.track=s,f.receiver=a,f.transceiver={receiver:a},f.streams=[i.stream],n.dispatchEvent(f)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else Kt.wrapPeerConnectionEvent(r,"track",function(t){return t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t})}function sf(r){if(He(r)==="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){var e=function(l,p){return{track:p,get dtmf(){return this._dtmf===void 0&&(p.kind==="audio"?this._dtmf=l.createDTMFSender(p):this._dtmf=null),this._dtmf},_pc:l}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var t=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(l,p){var y=t.apply(this,arguments);return y||(y=e(this,l),this._senders.push(y)),y};var n=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(l){n.apply(this,arguments);var p=this._senders.indexOf(l);p!==-1&&this._senders.splice(p,1)}}var i=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(l){var p=this;this._senders=this._senders||[],i.apply(this,[l]),l.getTracks().forEach(function(y){p._senders.push(e(p,y))})};var s=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(l){var p=this;this._senders=this._senders||[],s.apply(this,[l]),l.getTracks().forEach(function(y){var x=p._senders.find(function(E){return E.track===y});x&&p._senders.splice(p._senders.indexOf(x),1)})}}else if(He(r)==="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){var a=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){var l=this,p=a.apply(this,[]);return p.forEach(function(y){return y._pc=l}),p},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get:function(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function of(r){if(He(r)==="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver){if(!("getStats"in r.RTCRtpSender.prototype)){var e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){var a=this,f=e.apply(this,[]);return f.forEach(function(l){return l._pc=a}),f});var t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){var a=t.apply(this,arguments);return a._pc=this,a}),r.RTCRtpSender.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(f){return Kt.filterStats(f,a.track,!0)})}}if(!("getStats"in r.RTCRtpReceiver.prototype)){var n=r.RTCPeerConnection.prototype.getReceivers;n&&(r.RTCPeerConnection.prototype.getReceivers=function(){var a=this,f=n.apply(this,[]);return f.forEach(function(l){return l._pc=a}),f}),Kt.wrapPeerConnectionEvent(r,"track",function(s){return s.receiver._pc=s.srcElement,s}),r.RTCRtpReceiver.prototype.getStats=function(){var a=this;return this._pc.getStats().then(function(f){return Kt.filterStats(f,a.track,!1)})}}if("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype){var i=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){var a=arguments[0],f,l,p;return this.getSenders().forEach(function(y){y.track===a&&(f?p=!0:f=y)}),this.getReceivers().forEach(function(y){return y.track===a&&(l?p=!0:l=y),y.track===a}),p||f&&l?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):f?f.getStats():l?l.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function vo(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){var a=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(f){return a._shimmedLocalStreams[f][0]})};var e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,f){if(!f)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var l=e.apply(this,arguments);return this._shimmedLocalStreams[f.id]?this._shimmedLocalStreams[f.id].indexOf(l)===-1&&this._shimmedLocalStreams[f.id].push(l):this._shimmedLocalStreams[f.id]=[f,l],l};var t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(a){var f=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(function(y){var x=f.getSenders().find(function(E){return E.track===y});if(x)throw new DOMException("Track already exists.","InvalidAccessError")});var l=this.getSenders();t.apply(this,arguments);var p=this.getSenders().filter(function(y){return l.indexOf(y)===-1});this._shimmedLocalStreams[a.id]=[a].concat(p)};var n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],n.apply(this,arguments)};var i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){var f=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(function(l){var p=f._shimmedLocalStreams[l].indexOf(a);p!==-1&&f._shimmedLocalStreams[l].splice(p,1),f._shimmedLocalStreams[l].length===1&&delete f._shimmedLocalStreams[l]}),i.apply(this,arguments)}}function af(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return vo(r);var t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){var y=this,x=t.apply(this);return this._reverseStreams=this._reverseStreams||{},x.map(function(E){return y._reverseStreams[E.id]})};var n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(y){var x=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},y.getTracks().forEach(function(G){var W=x.getSenders().find(function(ie){return ie.track===G});if(W)throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[y.id]){var E=new r.MediaStream(y.getTracks());this._streams[y.id]=E,this._reverseStreams[E.id]=y,y=E}n.apply(this,[y])};var i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(y){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[y.id]||y]),delete this._reverseStreams[this._streams[y.id]?this._streams[y.id].id:y.id],delete this._streams[y.id]},r.RTCPeerConnection.prototype.addTrack=function(y,x){var E=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var G=[].slice.call(arguments,1);if(G.length!==1||!G[0].getTracks().find(function(be){return be===y}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var W=this.getSenders().find(function(be){return be.track===y});if(W)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var ie=this._streams[x.id];if(ie)ie.addTrack(y),Promise.resolve().then(function(){E.dispatchEvent(new Event("negotiationneeded"))});else{var ue=new r.MediaStream([y]);this._streams[x.id]=ue,this._reverseStreams[ue.id]=x,this.addStream(ue)}return this.getSenders().find(function(be){return be.track===y})};function s(p,y){var x=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var G=p._reverseStreams[E],W=p._streams[G.id];x=x.replace(new RegExp(W.id,"g"),G.id)}),new RTCSessionDescription({type:y.type,sdp:x})}function a(p,y){var x=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var G=p._reverseStreams[E],W=p._streams[G.id];x=x.replace(new RegExp(G.id,"g"),W.id)}),new RTCSessionDescription({type:y.type,sdp:x})}["createOffer","createAnswer"].forEach(function(p){var y=r.RTCPeerConnection.prototype[p],x=bo({},p,function(){var E=this,G=arguments,W=arguments.length&&typeof arguments[0]=="function";return W?y.apply(this,[function(ie){var ue=s(E,ie);G[0].apply(null,[ue])},function(ie){G[1]&&G[1].apply(null,ie)},arguments[2]]):y.apply(this,arguments).then(function(ie){return s(E,ie)})});r.RTCPeerConnection.prototype[p]=x[p]});var f=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?f.apply(this,arguments):(arguments[0]=a(this,arguments[0]),f.apply(this,arguments))};var l=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get:function(){var y=l.get.apply(this);return y.type===""?y:s(this,y)}}),r.RTCPeerConnection.prototype.removeTrack=function(y){var x=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!y._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");var E=y._pc===this;if(!E)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};var G;Object.keys(this._streams).forEach(function(W){var ie=x._streams[W].getTracks().find(function(ue){return y.track===ue});ie&&(G=x._streams[W])}),G&&(G.getTracks().length===1?this.removeStream(this._reverseStreams[G.id]):G.removeTrack(y.track),this.dispatchEvent(new Event("negotiationneeded")))}}function cf(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){var n=r.RTCPeerConnection.prototype[t],i=bo({},t,function(){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)});r.RTCPeerConnection.prototype[t]=i[t]})}function ff(r,e){Kt.wrapPeerConnectionEvent(r,"negotiationneeded",function(t){var n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}});var So=K(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.shimGetUserMedia=uf;var df=Po(it());function Po(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(Po=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||It(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function It(r){"@babel/helpers - typeof";return It=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},It(r)}function uf(r,e){var t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(l,p,y){df.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(l).then(p,y)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){var i=function(p,y,x){y in p&&!(x in p)&&(p[x]=p[y],delete p[y])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(l){return It(l)==="object"&&It(l.audio)==="object"&&(l=JSON.parse(JSON.stringify(l)),i(l.audio,"autoGainControl","mozAutoGainControl"),i(l.audio,"noiseSuppression","mozNoiseSuppression")),s(l)},n&&n.prototype.getSettings){var a=n.prototype.getSettings;n.prototype.getSettings=function(){var l=a.apply(this,arguments);return i(l,"mozAutoGainControl","autoGainControl"),i(l,"mozNoiseSuppression","noiseSuppression"),l}}if(n&&n.prototype.applyConstraints){var f=n.prototype.applyConstraints;n.prototype.applyConstraints=function(l){return this.kind==="audio"&&It(l)==="object"&&(l=JSON.parse(JSON.stringify(l)),i(l,"autoGainControl","mozAutoGainControl"),i(l,"noiseSuppression","mozNoiseSuppression")),f.apply(this,[l])}}}}});var wo=K(ni=>{"use strict";Object.defineProperty(ni,"__esModule",{value:!0});ni.shimGetDisplayMedia=lf;function lf(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){var i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:e}:n.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(n)})}});var Io=K(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.shimAddTransceiver=kf;Oe.shimCreateAnswer=Mf;Oe.shimCreateOffer=Af;Object.defineProperty(Oe,"shimGetDisplayMedia",{enumerable:!0,get:function(){return pf.shimGetDisplayMedia}});Oe.shimGetParameters=Rf;Object.defineProperty(Oe,"shimGetUserMedia",{enumerable:!0,get:function(){return hf.shimGetUserMedia}});Oe.shimOnTrack=Sf;Oe.shimPeerConnection=wf;Oe.shimRTCDataChannel=Tf;Oe.shimReceiverGetStats=Ef;Oe.shimRemoveStream=If;Oe.shimSenderGetStats=Cf;var Co=Eo(it()),hf=So(),pf=wo();function Eo(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(Eo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||De(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function yf(r){return bf(r)||xf(r)||gf(r)||mf()}function mf(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gf(r,e){if(r){if(typeof r=="string")return ii(r,e);var t={}.toString.call(r).slice(8,-1);return t==="Object"&&r.constructor&&(t=r.constructor.name),t==="Map"||t==="Set"?Array.from(r):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?ii(r,e):void 0}}function xf(r){if(typeof Symbol<"u"&&r[Symbol.iterator]!=null||r["@@iterator"]!=null)return Array.from(r)}function bf(r){if(Array.isArray(r))return ii(r)}function ii(r,e){(e==null||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t<e;t++)n[t]=r[t];return n}function vf(r,e,t){return(e=_f(e))in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function _f(r){var e=Pf(r,"string");return De(e)=="symbol"?e:e+""}function Pf(r,e){if(De(r)!="object"||!r)return r;var t=r[Symbol.toPrimitive];if(t!==void 0){var n=t.call(r,e||"default");if(De(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(r)}function De(r){"@babel/helpers - typeof";return De=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},De(r)}function Sf(r){De(r)==="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function wf(r,e){if(!(De(r)!=="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))){!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){var s=r.RTCPeerConnection.prototype[i],a=vf({},i,function(){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)});r.RTCPeerConnection.prototype[i]=a[i]});var t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){var s=Array.prototype.slice.call(arguments),a=s[0],f=s[1],l=s[2];return n.apply(this,[a||null]).then(function(p){if(e.version<53&&!f)try{p.forEach(function(y){y.type=t[y.type]||y.type})}catch(y){if(y.name!=="TypeError")throw y;p.forEach(function(x,E){p.set(E,Object.assign({},x,{type:t[x.type]||x.type}))})}return p}).then(f,l)}}}function Cf(r){if(De(r)==="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&!(r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)){var e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){var i=this,s=e.apply(this,[]);return s.forEach(function(a){return a._pc=i}),s});var t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){var i=t.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}}function Ef(r){if(De(r)==="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&!(r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)){var e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){var n=this,i=e.apply(this,[]);return i.forEach(function(s){return s._pc=n}),i}),Co.wrapPeerConnectionEvent(r,"track",function(t){return t.receiver._pc=t.srcElement,t}),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function If(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){var n=this;Co.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&t.getTracks().includes(i.track)&&n.removeTrack(i)})})}function Tf(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function kf(r){if(De(r)==="object"&&r.RTCPeerConnection){var e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];var n=arguments[1]&&arguments[1].sendEncodings;n===void 0&&(n=[]),n=yf(n);var i=n.length>0;i&&n.forEach(function(l){if("rid"in l){var p=/^[a-z0-9]{0,16}$/i;if(!p.test(l.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in l&&!(parseFloat(l.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in l&&!(parseFloat(l.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var s=e.apply(this,arguments);if(i){var a=s.sender,f=a.getParameters();(!("encodings"in f)||f.encodings.length===1&&Object.keys(f.encodings[0]).length===0)&&(f.encodings=n,a.sendEncodings=n,this.setParametersPromises.push(a.setParameters(f).then(function(){delete a.sendEncodings}).catch(function(){delete a.sendEncodings})))}return s})}}function Rf(r){if(De(r)==="object"&&r.RTCRtpSender){var e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){var n=e.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}}function Af(r){if(De(r)==="object"&&r.RTCPeerConnection){var e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){var n=arguments,i=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return e.apply(i,n)}).finally(function(){i.setParametersPromises=[]}):e.apply(this,arguments)}}}function Mf(r){if(De(r)==="object"&&r.RTCPeerConnection){var e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){var n=arguments,i=this;return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(function(){return e.apply(i,n)}).finally(function(){i.setParametersPromises=[]}):e.apply(this,arguments)}}}});var Ao=K($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.shimAudioContext=Ff;$e.shimCallbacksAPI=Uf;$e.shimConstraints=Ro;$e.shimCreateOfferLegacy=Gf;$e.shimGetUserMedia=Bf;$e.shimLocalStreamsAPI=Df;$e.shimRTCIceServerUrls=Lf;$e.shimRemoteStreamsAPI=Of;$e.shimTrackEventTransceiver=jf;var To=ko(it());function ko(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(ko=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||ot(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function ot(r){"@babel/helpers - typeof";return ot=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ot(r)}function Df(r){if(!(ot(r)!=="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){var e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(n){var i=this;this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(function(s){return e.call(i,s,n)}),n.getVideoTracks().forEach(function(s){return e.call(i,s,n)})},r.RTCPeerConnection.prototype.addTrack=function(n){for(var i=this,s=arguments.length,a=new Array(s>1?s-1:0),f=1;f<s;f++)a[f-1]=arguments[f];return a&&a.forEach(function(l){i._localStreams?i._localStreams.includes(l)||i._localStreams.push(l):i._localStreams=[l]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(n){var i=this;this._localStreams||(this._localStreams=[]);var s=this._localStreams.indexOf(n);if(s!==-1){this._localStreams.splice(s,1);var a=n.getTracks();this.getSenders().forEach(function(f){a.includes(f.track)&&i.removeTrack(f)})}})}}function Of(r){if(!(ot(r)!=="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(n){var i=this;this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=n),this.addEventListener("track",this._onaddstreampoly=function(s){s.streams.forEach(function(a){if(i._remoteStreams||(i._remoteStreams=[]),!i._remoteStreams.includes(a)){i._remoteStreams.push(a);var f=new Event("addstream");f.stream=a,i.dispatchEvent(f)}})})}});var e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(function(s){if(n._remoteStreams||(n._remoteStreams=[]),!(n._remoteStreams.indexOf(s)>=0)){n._remoteStreams.push(s);var a=new Event("addstream");a.stream=s,n.dispatchEvent(a)}})}),e.apply(n,arguments)}}}function Uf(r){if(!(ot(r)!=="object"||!r.RTCPeerConnection)){var e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(p,y){var x=arguments.length>=2?arguments[2]:arguments[0],E=t.apply(this,[x]);return y?(E.then(p,y),Promise.resolve()):E},e.createAnswer=function(p,y){var x=arguments.length>=2?arguments[2]:arguments[0],E=n.apply(this,[x]);return y?(E.then(p,y),Promise.resolve()):E};var f=function(p,y,x){var E=i.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E};e.setLocalDescription=f,f=function(p,y,x){var E=s.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E},e.setRemoteDescription=f,f=function(p,y,x){var E=a.apply(this,[p]);return x?(E.then(y,x),Promise.resolve()):E},e.addIceCandidate=f}}function Bf(r){var e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){var t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=function(i){return n(Ro(i))}}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(s,a,f){e.mediaDevices.getUserMedia(s).then(a,f)}.bind(e))}function Ro(r){return r&&r.video!==void 0?Object.assign({},r,{video:To.compactObject(r.video)}):r}function Lf(r){if(r.RTCPeerConnection){var e=r.RTCPeerConnection;r.RTCPeerConnection=function(n,i){if(n&&n.iceServers){for(var s=[],a=0;a<n.iceServers.length;a++){var f=n.iceServers[a];f.urls===void 0&&f.url?(To.deprecated("RTCIceServer.url","RTCIceServer.urls"),f=JSON.parse(JSON.stringify(f)),f.urls=f.url,delete f.url,s.push(f)):s.push(n.iceServers[a])}n.iceServers=s}return new e(n,i)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get:function(){return e.generateCertificate}})}}function jf(r){ot(r)==="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})}function Gf(r){var e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);var i=this.getTransceivers().find(function(a){return a.receiver.track.kind==="audio"});n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio",{direction:"recvonly"}),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);var s=this.getTransceivers().find(function(a){return a.receiver.track.kind==="video"});n.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):n.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video",{direction:"recvonly"})}return e.apply(this,arguments)}}function Ff(r){ot(r)!=="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}});var oi=K((Vl,si)=>{"use strict";var I={};I.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};I.localCName=I.generateIdentifier();I.splitLines=function(r){return r.trim().split(`
3
+ `).map(e=>e.trim())};I.splitSections=function(r){return r.split(`
4
+ m=`).map((t,n)=>(n>0?"m="+t:t).trim()+`\r
5
+ `)};I.getDescription=function(r){let e=I.splitSections(r);return e&&e[0]};I.getMediaSections=function(r){let e=I.splitSections(r);return e.shift(),e};I.matchPrefix=function(r,e){return I.splitLines(r).filter(t=>t.indexOf(e)===0)};I.parseCandidate=function(r){let e;r.indexOf("a=candidate:")===0?e=r.substring(12).split(" "):e=r.substring(10).split(" ");let t={foundation:e[0],component:{1:"rtp",2:"rtcp"}[e[1]]||e[1],protocol:e[2].toLowerCase(),priority:parseInt(e[3],10),ip:e[4],address:e[4],port:parseInt(e[5],10),type:e[7]};for(let n=8;n<e.length;n+=2)switch(e[n]){case"raddr":t.relatedAddress=e[n+1];break;case"rport":t.relatedPort=parseInt(e[n+1],10);break;case"tcptype":t.tcpType=e[n+1];break;case"ufrag":t.ufrag=e[n+1],t.usernameFragment=e[n+1];break;default:t[e[n]]===void 0&&(t[e[n]]=e[n+1]);break}return t};I.writeCandidate=function(r){let e=[];e.push(r.foundation);let t=r.component;t==="rtp"?e.push(1):t==="rtcp"?e.push(2):e.push(t),e.push(r.protocol.toUpperCase()),e.push(r.priority),e.push(r.address||r.ip),e.push(r.port);let n=r.type;return e.push("typ"),e.push(n),n!=="host"&&r.relatedAddress&&r.relatedPort!==void 0&&(e.push("raddr"),e.push(r.relatedAddress),e.push("rport"),e.push(r.relatedPort)),r.tcpType&&r.protocol.toLowerCase()==="tcp"&&(e.push("tcptype"),e.push(r.tcpType)),(r.usernameFragment||r.ufrag)&&(e.push("ufrag"),e.push(r.usernameFragment||r.ufrag)),"candidate:"+e.join(" ")};I.parseIceOptions=function(r){return r.substring(14).split(" ")};I.parseRtpMap=function(r){let e=r.substring(9).split(" "),t={payloadType:parseInt(e.shift(),10)};return e=e[0].split("/"),t.name=e[0],t.clockRate=parseInt(e[1],10),t.channels=e.length===3?parseInt(e[2],10):1,t.numChannels=t.channels,t};I.writeRtpMap=function(r){let e=r.payloadType;r.preferredPayloadType!==void 0&&(e=r.preferredPayloadType);let t=r.channels||r.numChannels||1;return"a=rtpmap:"+e+" "+r.name+"/"+r.clockRate+(t!==1?"/"+t:"")+`\r
6
+ `};I.parseExtmap=function(r){let e=r.substring(9).split(" ");return{id:parseInt(e[0],10),direction:e[0].indexOf("/")>0?e[0].split("/")[1]:"sendrecv",uri:e[1],attributes:e.slice(2).join(" ")}};I.writeExtmap=function(r){return"a=extmap:"+(r.id||r.preferredId)+(r.direction&&r.direction!=="sendrecv"?"/"+r.direction:"")+" "+r.uri+(r.attributes?" "+r.attributes:"")+`\r
7
+ `};I.parseFmtp=function(r){let e={},t,n=r.substring(r.indexOf(" ")+1).split(";");for(let i=0;i<n.length;i++)t=n[i].trim().split("="),e[t[0].trim()]=t[1];return e};I.writeFmtp=function(r){let e="",t=r.payloadType;if(r.preferredPayloadType!==void 0&&(t=r.preferredPayloadType),r.parameters&&Object.keys(r.parameters).length){let n=[];Object.keys(r.parameters).forEach(i=>{r.parameters[i]!==void 0?n.push(i+"="+r.parameters[i]):n.push(i)}),e+="a=fmtp:"+t+" "+n.join(";")+`\r
8
+ `}return e};I.parseRtcpFb=function(r){let e=r.substring(r.indexOf(" ")+1).split(" ");return{type:e.shift(),parameter:e.join(" ")}};I.writeRtcpFb=function(r){let e="",t=r.payloadType;return r.preferredPayloadType!==void 0&&(t=r.preferredPayloadType),r.rtcpFeedback&&r.rtcpFeedback.length&&r.rtcpFeedback.forEach(n=>{e+="a=rtcp-fb:"+t+" "+n.type+(n.parameter&&n.parameter.length?" "+n.parameter:"")+`\r
9
+ `}),e};I.parseSsrcMedia=function(r){let e=r.indexOf(" "),t={ssrc:parseInt(r.substring(7,e),10)},n=r.indexOf(":",e);return n>-1?(t.attribute=r.substring(e+1,n),t.value=r.substring(n+1)):t.attribute=r.substring(e+1),t};I.parseSsrcGroup=function(r){let e=r.substring(13).split(" ");return{semantics:e.shift(),ssrcs:e.map(t=>parseInt(t,10))}};I.getMid=function(r){let e=I.matchPrefix(r,"a=mid:")[0];if(e)return e.substring(6)};I.parseFingerprint=function(r){let e=r.substring(14).split(" ");return{algorithm:e[0].toLowerCase(),value:e[1].toUpperCase()}};I.getDtlsParameters=function(r,e){return{role:"auto",fingerprints:I.matchPrefix(r+e,"a=fingerprint:").map(I.parseFingerprint)}};I.writeDtlsParameters=function(r,e){let t="a=setup:"+e+`\r
10
+ `;return r.fingerprints.forEach(n=>{t+="a=fingerprint:"+n.algorithm+" "+n.value+`\r
11
+ `}),t};I.parseCryptoLine=function(r){let e=r.substring(9).split(" ");return{tag:parseInt(e[0],10),cryptoSuite:e[1],keyParams:e[2],sessionParams:e.slice(3)}};I.writeCryptoLine=function(r){return"a=crypto:"+r.tag+" "+r.cryptoSuite+" "+(typeof r.keyParams=="object"?I.writeCryptoKeyParams(r.keyParams):r.keyParams)+(r.sessionParams?" "+r.sessionParams.join(" "):"")+`\r
12
+ `};I.parseCryptoKeyParams=function(r){if(r.indexOf("inline:")!==0)return null;let e=r.substring(7).split("|");return{keyMethod:"inline",keySalt:e[0],lifeTime:e[1],mkiValue:e[2]?e[2].split(":")[0]:void 0,mkiLength:e[2]?e[2].split(":")[1]:void 0}};I.writeCryptoKeyParams=function(r){return r.keyMethod+":"+r.keySalt+(r.lifeTime?"|"+r.lifeTime:"")+(r.mkiValue&&r.mkiLength?"|"+r.mkiValue+":"+r.mkiLength:"")};I.getCryptoParameters=function(r,e){return I.matchPrefix(r+e,"a=crypto:").map(I.parseCryptoLine)};I.getIceParameters=function(r,e){let t=I.matchPrefix(r+e,"a=ice-ufrag:")[0],n=I.matchPrefix(r+e,"a=ice-pwd:")[0];return t&&n?{usernameFragment:t.substring(12),password:n.substring(10)}:null};I.writeIceParameters=function(r){let e="a=ice-ufrag:"+r.usernameFragment+`\r
13
+ a=ice-pwd:`+r.password+`\r
14
+ `;return r.iceLite&&(e+=`a=ice-lite\r
15
+ `),e};I.parseRtpParameters=function(r){let e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=I.splitLines(r)[0].split(" ");e.profile=n[2];for(let s=3;s<n.length;s++){let a=n[s],f=I.matchPrefix(r,"a=rtpmap:"+a+" ")[0];if(f){let l=I.parseRtpMap(f),p=I.matchPrefix(r,"a=fmtp:"+a+" ");switch(l.parameters=p.length?I.parseFmtp(p[0]):{},l.rtcpFeedback=I.matchPrefix(r,"a=rtcp-fb:"+a+" ").map(I.parseRtcpFb),e.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":e.fecMechanisms.push(l.name.toUpperCase());break;default:break}}}I.matchPrefix(r,"a=extmap:").forEach(s=>{e.headerExtensions.push(I.parseExtmap(s))});let i=I.matchPrefix(r,"a=rtcp-fb:* ").map(I.parseRtcpFb);return e.codecs.forEach(s=>{i.forEach(a=>{s.rtcpFeedback.find(l=>l.type===a.type&&l.parameter===a.parameter)||s.rtcpFeedback.push(a)})}),e};I.writeRtpDescription=function(r,e){let t="";t+="m="+r+" ",t+=e.codecs.length>0?"9":"0",t+=" "+(e.profile||"UDP/TLS/RTP/SAVPF")+" ",t+=e.codecs.map(i=>i.preferredPayloadType!==void 0?i.preferredPayloadType:i.payloadType).join(" ")+`\r
16
16
  `,t+=`c=IN IP4 0.0.0.0\r
17
17
  `,t+=`a=rtcp:9 IN IP4 0.0.0.0\r
18
- `,e.codecs.forEach(i=>{t+=I.writeRtpMap(i),t+=I.writeFmtp(i),t+=I.writeRtcpFb(i)});let r=0;return e.codecs.forEach(i=>{i.maxptime>r&&(r=i.maxptime)}),r>0&&(t+="a=maxptime:"+r+`\r
19
- `),e.headerExtensions&&e.headerExtensions.forEach(i=>{t+=I.writeExtmap(i)}),t};I.parseRtpEncodingParameters=function(n){let e=[],t=I.parseRtpParameters(n),r=t.fecMechanisms.indexOf("RED")!==-1,i=t.fecMechanisms.indexOf("ULPFEC")!==-1,s=I.matchPrefix(n,"a=ssrc:").map(y=>I.parseSsrcMedia(y)).filter(y=>y.attribute==="cname"),a=s.length>0&&s[0].ssrc,f,l=I.matchPrefix(n,"a=ssrc-group:FID").map(y=>y.substring(17).split(" ").map(E=>parseInt(E,10)));l.length>0&&l[0].length>1&&l[0][0]===a&&(f=l[0][1]),t.codecs.forEach(y=>{if(y.name.toUpperCase()==="RTX"&&y.parameters.apt){let x={ssrc:a,codecPayloadType:parseInt(y.parameters.apt,10)};a&&f&&(x.rtx={ssrc:f}),e.push(x),r&&(x=JSON.parse(JSON.stringify(x)),x.fec={ssrc:a,mechanism:i?"red+ulpfec":"red"},e.push(x))}}),e.length===0&&a&&e.push({ssrc:a});let p=I.matchPrefix(n,"b=");return p.length&&(p[0].indexOf("b=TIAS:")===0?p=parseInt(p[0].substring(7),10):p[0].indexOf("b=AS:")===0?p=parseInt(p[0].substring(5),10)*1e3*.95-2e3*8:p=void 0,e.forEach(y=>{y.maxBitrate=p})),e};I.parseRtcpParameters=function(n){let e={},t=I.matchPrefix(n,"a=ssrc:").map(s=>I.parseSsrcMedia(s)).filter(s=>s.attribute==="cname")[0];t&&(e.cname=t.value,e.ssrc=t.ssrc);let r=I.matchPrefix(n,"a=rtcp-rsize");e.reducedSize=r.length>0,e.compound=r.length===0;let i=I.matchPrefix(n,"a=rtcp-mux");return e.mux=i.length>0,e};I.writeRtcpParameters=function(n){let e="";return n.reducedSize&&(e+=`a=rtcp-rsize\r
20
- `),n.mux&&(e+=`a=rtcp-mux\r
21
- `),n.ssrc!==void 0&&n.cname&&(e+="a=ssrc:"+n.ssrc+" cname:"+n.cname+`\r
22
- `),e};I.parseMsid=function(n){let e,t=I.matchPrefix(n,"a=msid:");if(t.length===1)return e=t[0].substring(7).split(" "),{stream:e[0],track:e[1]};let r=I.matchPrefix(n,"a=ssrc:").map(i=>I.parseSsrcMedia(i)).filter(i=>i.attribute==="msid");if(r.length>0)return e=r[0].value.split(" "),{stream:e[0],track:e[1]}};I.parseSctpDescription=function(n){let e=I.parseMLine(n),t=I.matchPrefix(n,"a=max-message-size:"),r;t.length>0&&(r=parseInt(t[0].substring(19),10)),isNaN(r)&&(r=65536);let i=I.matchPrefix(n,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:e.fmt,maxMessageSize:r};let s=I.matchPrefix(n,"a=sctpmap:");if(s.length>0){let a=s[0].substring(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:r}}};I.writeSctpDescription=function(n,e){let t=[];return n.protocol!=="DTLS/SCTP"?t=["m="+n.kind+" 9 "+n.protocol+" "+e.protocol+`\r
18
+ `,e.codecs.forEach(i=>{t+=I.writeRtpMap(i),t+=I.writeFmtp(i),t+=I.writeRtcpFb(i)});let n=0;return e.codecs.forEach(i=>{i.maxptime>n&&(n=i.maxptime)}),n>0&&(t+="a=maxptime:"+n+`\r
19
+ `),e.headerExtensions&&e.headerExtensions.forEach(i=>{t+=I.writeExtmap(i)}),t};I.parseRtpEncodingParameters=function(r){let e=[],t=I.parseRtpParameters(r),n=t.fecMechanisms.indexOf("RED")!==-1,i=t.fecMechanisms.indexOf("ULPFEC")!==-1,s=I.matchPrefix(r,"a=ssrc:").map(y=>I.parseSsrcMedia(y)).filter(y=>y.attribute==="cname"),a=s.length>0&&s[0].ssrc,f,l=I.matchPrefix(r,"a=ssrc-group:FID").map(y=>y.substring(17).split(" ").map(E=>parseInt(E,10)));l.length>0&&l[0].length>1&&l[0][0]===a&&(f=l[0][1]),t.codecs.forEach(y=>{if(y.name.toUpperCase()==="RTX"&&y.parameters.apt){let x={ssrc:a,codecPayloadType:parseInt(y.parameters.apt,10)};a&&f&&(x.rtx={ssrc:f}),e.push(x),n&&(x=JSON.parse(JSON.stringify(x)),x.fec={ssrc:a,mechanism:i?"red+ulpfec":"red"},e.push(x))}}),e.length===0&&a&&e.push({ssrc:a});let p=I.matchPrefix(r,"b=");return p.length&&(p[0].indexOf("b=TIAS:")===0?p=parseInt(p[0].substring(7),10):p[0].indexOf("b=AS:")===0?p=parseInt(p[0].substring(5),10)*1e3*.95-2e3*8:p=void 0,e.forEach(y=>{y.maxBitrate=p})),e};I.parseRtcpParameters=function(r){let e={},t=I.matchPrefix(r,"a=ssrc:").map(s=>I.parseSsrcMedia(s)).filter(s=>s.attribute==="cname")[0];t&&(e.cname=t.value,e.ssrc=t.ssrc);let n=I.matchPrefix(r,"a=rtcp-rsize");e.reducedSize=n.length>0,e.compound=n.length===0;let i=I.matchPrefix(r,"a=rtcp-mux");return e.mux=i.length>0,e};I.writeRtcpParameters=function(r){let e="";return r.reducedSize&&(e+=`a=rtcp-rsize\r
20
+ `),r.mux&&(e+=`a=rtcp-mux\r
21
+ `),r.ssrc!==void 0&&r.cname&&(e+="a=ssrc:"+r.ssrc+" cname:"+r.cname+`\r
22
+ `),e};I.parseMsid=function(r){let e,t=I.matchPrefix(r,"a=msid:");if(t.length===1)return e=t[0].substring(7).split(" "),{stream:e[0],track:e[1]};let n=I.matchPrefix(r,"a=ssrc:").map(i=>I.parseSsrcMedia(i)).filter(i=>i.attribute==="msid");if(n.length>0)return e=n[0].value.split(" "),{stream:e[0],track:e[1]}};I.parseSctpDescription=function(r){let e=I.parseMLine(r),t=I.matchPrefix(r,"a=max-message-size:"),n;t.length>0&&(n=parseInt(t[0].substring(19),10)),isNaN(n)&&(n=65536);let i=I.matchPrefix(r,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:e.fmt,maxMessageSize:n};let s=I.matchPrefix(r,"a=sctpmap:");if(s.length>0){let a=s[0].substring(10).split(" ");return{port:parseInt(a[0],10),protocol:a[1],maxMessageSize:n}}};I.writeSctpDescription=function(r,e){let t=[];return r.protocol!=="DTLS/SCTP"?t=["m="+r.kind+" 9 "+r.protocol+" "+e.protocol+`\r
23
23
  `,`c=IN IP4 0.0.0.0\r
24
24
  `,"a=sctp-port:"+e.port+`\r
25
- `]:t=["m="+n.kind+" 9 "+n.protocol+" "+e.port+`\r
25
+ `]:t=["m="+r.kind+" 9 "+r.protocol+" "+e.port+`\r
26
26
  `,`c=IN IP4 0.0.0.0\r
27
27
  `,"a=sctpmap:"+e.port+" "+e.protocol+` 65535\r
28
28
  `],e.maxMessageSize!==void 0&&t.push("a=max-message-size:"+e.maxMessageSize+`\r
29
- `),t.join("")};I.generateSessionId=function(){return Math.random().toString().substr(2,22)};I.writeSessionBoilerplate=function(n,e,t){let r,i=e!==void 0?e:2;return n?r=n:r=I.generateSessionId(),`v=0\r
30
- o=`+(t||"thisisadapterortc")+" "+r+" "+i+` IN IP4 127.0.0.1\r
29
+ `),t.join("")};I.generateSessionId=function(){return Math.random().toString().substr(2,22)};I.writeSessionBoilerplate=function(r,e,t){let n,i=e!==void 0?e:2;return r?n=r:n=I.generateSessionId(),`v=0\r
30
+ o=`+(t||"thisisadapterortc")+" "+n+" "+i+` IN IP4 127.0.0.1\r
31
31
  s=-\r
32
32
  t=0 0\r
33
- `};I.getDirection=function(n,e){let t=I.splitLines(n);for(let r=0;r<t.length;r++)switch(t[r]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return t[r].substring(2);default:}return e?I.getDirection(e):"sendrecv"};I.getKind=function(n){return I.splitLines(n)[0].split(" ")[0].substring(2)};I.isRejected=function(n){return n.split(" ",2)[1]==="0"};I.parseMLine=function(n){let t=I.splitLines(n)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}};I.parseOLine=function(n){let t=I.matchPrefix(n,"o=")[0].substring(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}};I.isValidSDP=function(n){if(typeof n!="string"||n.length===0)return!1;let e=I.splitLines(n);for(let t=0;t<e.length;t++)if(e[t].length<2||e[t].charAt(1)!=="=")return!1;return!0};typeof ii=="object"&&(ii.exports=I)});var Mo=F(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.removeExtmapAllowMixed=zf;Ve.shimAddIceCandidateNullOrEmpty=qf;Ve.shimConnectionState=Nf;Ve.shimMaxMessageSize=Kf;Ve.shimParameterlessSetLocalDescription=$f;Ve.shimRTCIceCandidate=jf;Ve.shimRTCIceCandidateRelayProtocol=Gf;Ve.shimSendThrowTypeError=Ff;var Ft=Lf(si()),oi=Ao(nt());function Ao(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Ao=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||Nt(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function Lf(n){return n&&n.__esModule?n:{default:n}}function Nt(n){"@babel/helpers - typeof";return Nt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Nt(n)}function jf(n){if(!(!n.RTCIceCandidate||n.RTCIceCandidate&&"foundation"in n.RTCIceCandidate.prototype)){var e=n.RTCIceCandidate;n.RTCIceCandidate=function(r){if(Nt(r)==="object"&&r.candidate&&r.candidate.indexOf("a=")===0&&(r=JSON.parse(JSON.stringify(r)),r.candidate=r.candidate.substring(2)),r.candidate&&r.candidate.length){var i=new e(r),s=Ft.default.parseCandidate(r.candidate);for(var a in s)a in i||Object.defineProperty(i,a,{value:s[a]});return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new e(r)},n.RTCIceCandidate.prototype=e.prototype,oi.wrapPeerConnectionEvent(n,"icecandidate",function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new n.RTCIceCandidate(t.candidate),writable:"false"}),t})}}function Gf(n){!n.RTCIceCandidate||n.RTCIceCandidate&&"relayProtocol"in n.RTCIceCandidate.prototype||oi.wrapPeerConnectionEvent(n,"icecandidate",function(e){if(e.candidate){var t=Ft.default.parseCandidate(e.candidate.candidate);t.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e})}function Kf(n,e){if(n.RTCPeerConnection){"sctp"in n.RTCPeerConnection.prototype||Object.defineProperty(n.RTCPeerConnection.prototype,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp}});var t=function(l){if(!l||!l.sdp)return!1;var p=Ft.default.splitSections(l.sdp);return p.shift(),p.some(function(y){var x=Ft.default.parseMLine(y);return x&&x.kind==="application"&&x.protocol.indexOf("SCTP")!==-1})},r=function(l){var p=l.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(p===null||p.length<2)return-1;var y=parseInt(p[1],10);return y!==y?-1:y},i=function(l){var p=65536;return e.browser==="firefox"&&(e.version<57?l===-1?p=16384:p=2147483637:e.version<60?p=e.version===57?65535:65536:p=2147483637),p},s=function(l,p){var y=65536;e.browser==="firefox"&&e.version===57&&(y=65535);var x=Ft.default.matchPrefix(l.sdp,"a=max-message-size:");return x.length>0?y=parseInt(x[0].substring(19),10):e.browser==="firefox"&&p!==-1&&(y=2147483637),y},a=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){var l=this.getConfiguration(),p=l.sdpSemantics;p==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){var y=r(arguments[0]),x=i(y),E=s(arguments[0],y),G;x===0&&E===0?G=Number.POSITIVE_INFINITY:x===0||E===0?G=Math.max(x,E):G=Math.min(x,E);var W={};Object.defineProperty(W,"maxMessageSize",{get:function(){return G}}),this._sctp=W}return a.apply(this,arguments)}}}function Ff(n){if(!(n.RTCPeerConnection&&"createDataChannel"in n.RTCPeerConnection.prototype))return;function e(r,i){var s=r.send;r.send=function(){var f=arguments[0],l=f.length||f.size||f.byteLength;if(r.readyState==="open"&&i.sctp&&l>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(r,arguments)}}var t=n.RTCPeerConnection.prototype.createDataChannel;n.RTCPeerConnection.prototype.createDataChannel=function(){var i=t.apply(this,arguments);return e(i,this),i},oi.wrapPeerConnectionEvent(n,"datachannel",function(r){return e(r.channel,r.target),r})}function Nf(n){if(!(!n.RTCPeerConnection||"connectionState"in n.RTCPeerConnection.prototype)){var e=n.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(r){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),r&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=r)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(t){var r=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(i){var s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;var a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}})}}function zf(n,e){if(n.RTCPeerConnection&&!(e.browser==="chrome"&&e.version>=71)&&!(e.browser==="safari"&&e._safariVersion>=13.1)){var t=n.RTCPeerConnection.prototype.setRemoteDescription;n.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(`
33
+ `};I.getDirection=function(r,e){let t=I.splitLines(r);for(let n=0;n<t.length;n++)switch(t[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return t[n].substring(2);default:}return e?I.getDirection(e):"sendrecv"};I.getKind=function(r){return I.splitLines(r)[0].split(" ")[0].substring(2)};I.isRejected=function(r){return r.split(" ",2)[1]==="0"};I.parseMLine=function(r){let t=I.splitLines(r)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}};I.parseOLine=function(r){let t=I.matchPrefix(r,"o=")[0].substring(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}};I.isValidSDP=function(r){if(typeof r!="string"||r.length===0)return!1;let e=I.splitLines(r);for(let t=0;t<e.length;t++)if(e[t].length<2||e[t].charAt(1)!=="=")return!1;return!0};typeof si=="object"&&(si.exports=I)});var Do=K(We=>{"use strict";Object.defineProperty(We,"__esModule",{value:!0});We.removeExtmapAllowMixed=Hf;We.shimAddIceCandidateNullOrEmpty=Wf;We.shimConnectionState=Vf;We.shimMaxMessageSize=qf;We.shimParameterlessSetLocalDescription=Yf;We.shimRTCIceCandidate=Nf;We.shimRTCIceCandidateRelayProtocol=$f;We.shimSendThrowTypeError=zf;var Nt=Kf(oi()),ai=Mo(it());function Mo(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(Mo=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||$t(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function Kf(r){return r&&r.__esModule?r:{default:r}}function $t(r){"@babel/helpers - typeof";return $t=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$t(r)}function Nf(r){if(!(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)){var e=r.RTCIceCandidate;r.RTCIceCandidate=function(n){if($t(n)==="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substring(2)),n.candidate&&n.candidate.length){var i=new e(n),s=Nt.default.parseCandidate(n.candidate);for(var a in s)a in i||Object.defineProperty(i,a,{value:s[a]});return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new e(n)},r.RTCIceCandidate.prototype=e.prototype,ai.wrapPeerConnectionEvent(r,"icecandidate",function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t})}}function $f(r){!r.RTCIceCandidate||r.RTCIceCandidate&&"relayProtocol"in r.RTCIceCandidate.prototype||ai.wrapPeerConnectionEvent(r,"icecandidate",function(e){if(e.candidate){var t=Nt.default.parseCandidate(e.candidate.candidate);t.type==="relay"&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e})}function qf(r,e){if(r.RTCPeerConnection){"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp}});var t=function(l){if(!l||!l.sdp)return!1;var p=Nt.default.splitSections(l.sdp);return p.shift(),p.some(function(y){var x=Nt.default.parseMLine(y);return x&&x.kind==="application"&&x.protocol.indexOf("SCTP")!==-1})},n=function(l){var p=l.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(p===null||p.length<2)return-1;var y=parseInt(p[1],10);return y!==y?-1:y},i=function(l){var p=65536;return e.browser==="firefox"&&(e.version<57?l===-1?p=16384:p=2147483637:e.version<60?p=e.version===57?65535:65536:p=2147483637),p},s=function(l,p){var y=65536;e.browser==="firefox"&&e.version===57&&(y=65535);var x=Nt.default.matchPrefix(l.sdp,"a=max-message-size:");return x.length>0?y=parseInt(x[0].substring(19),10):e.browser==="firefox"&&p!==-1&&(y=2147483637),y},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){var l=this.getConfiguration(),p=l.sdpSemantics;p==="plan-b"&&Object.defineProperty(this,"sctp",{get:function(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){var y=n(arguments[0]),x=i(y),E=s(arguments[0],y),G;x===0&&E===0?G=Number.POSITIVE_INFINITY:x===0||E===0?G=Math.max(x,E):G=Math.min(x,E);var W={};Object.defineProperty(W,"maxMessageSize",{get:function(){return G}}),this._sctp=W}return a.apply(this,arguments)}}}function zf(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){var s=n.send;n.send=function(){var f=arguments[0],l=f.length||f.size||f.byteLength;if(n.readyState==="open"&&i.sctp&&l>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}var t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){var i=t.apply(this,arguments);return e(i,this),i},ai.wrapPeerConnectionEvent(r,"datachannel",function(n){return e(n.channel,n.target),n})}function Vf(r){if(!(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)){var e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get:function(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get:function(){return this._onconnectionstatechange||null},set:function(n){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),n&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=n)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(function(t){var n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=function(i){var s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;var a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}}function Hf(r,e){if(r.RTCPeerConnection&&!(e.browser==="chrome"&&e.version>=71)&&!(e.browser==="safari"&&e._safariVersion>=13.1)){var t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(i){if(i&&i.sdp&&i.sdp.indexOf(`
34
34
  a=extmap-allow-mixed`)!==-1){var s=i.sdp.split(`
35
35
  `).filter(function(a){return a.trim()!=="a=extmap-allow-mixed"}).join(`
36
- `);n.RTCSessionDescription&&i instanceof n.RTCSessionDescription?arguments[0]=new n.RTCSessionDescription({type:i.type,sdp:s}):i.sdp=s}return t.apply(this,arguments)}}}function qf(n,e){if(n.RTCPeerConnection&&n.RTCPeerConnection.prototype){var t=n.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(n.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}function $f(n,e){if(n.RTCPeerConnection&&n.RTCPeerConnection.prototype){var t=n.RTCPeerConnection.prototype.setLocalDescription;!t||t.length===0||(n.RTCPeerConnection.prototype.setLocalDescription=function(){var i=this,s=arguments[0]||{};if(Nt(s)!=="object"||s.type&&s.sdp)return t.apply(this,arguments);if(s={type:s.type,sdp:s.sdp},!s.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":s.type="offer";break;default:s.type="answer";break}if(s.sdp||s.type!=="offer"&&s.type!=="answer")return t.apply(this,[s]);var a=s.type==="offer"?this.createOffer:this.createAnswer;return a.apply(this).then(function(f){return t.apply(i,[f])})})}}});var Do=F(ci=>{"use strict";function ai(n){"@babel/helpers - typeof";return ai=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ai(n)}Object.defineProperty(ci,"__esModule",{value:!0});ci.adapterFactory=Vf;var zt=pt(nt()),qe=pt(vo()),Ue=pt(Eo()),We=pt(Ro()),me=pt(Mo()),Hf=pt(si());function pt(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(pt=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||ai(s)!="object"&&typeof s!="function")return p;if(f=a?r:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(n,e)}function Vf(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=n.window,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},r=zt.log,i=zt.detectBrowser(e),s={browserDetails:i,commonShim:me,extractVersion:zt.extractVersion,disableLog:zt.disableLog,disableWarnings:zt.disableWarnings,sdp:Hf};switch(i.browser){case"chrome":if(!qe||!qe.shimPeerConnection||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),s;if(i.version===null)return r("Chrome shim can not determine version, not shimming."),s;r("adapter.js shimming chrome."),s.browserShim=qe,me.shimAddIceCandidateNullOrEmpty(e,i),me.shimParameterlessSetLocalDescription(e,i),qe.shimGetUserMedia(e,i),qe.shimMediaStream(e,i),qe.shimPeerConnection(e,i),qe.shimOnTrack(e,i),qe.shimAddTrackRemoveTrack(e,i),qe.shimGetSendersWithDtmf(e,i),qe.shimSenderReceiverGetStats(e,i),qe.fixNegotiationNeeded(e,i),me.shimRTCIceCandidate(e,i),me.shimRTCIceCandidateRelayProtocol(e,i),me.shimConnectionState(e,i),me.shimMaxMessageSize(e,i),me.shimSendThrowTypeError(e,i),me.removeExtmapAllowMixed(e,i);break;case"firefox":if(!Ue||!Ue.shimPeerConnection||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=Ue,me.shimAddIceCandidateNullOrEmpty(e,i),me.shimParameterlessSetLocalDescription(e,i),Ue.shimGetUserMedia(e,i),Ue.shimPeerConnection(e,i),Ue.shimOnTrack(e,i),Ue.shimRemoveStream(e,i),Ue.shimSenderGetStats(e,i),Ue.shimReceiverGetStats(e,i),Ue.shimRTCDataChannel(e,i),Ue.shimAddTransceiver(e,i),Ue.shimGetParameters(e,i),Ue.shimCreateOffer(e,i),Ue.shimCreateAnswer(e,i),me.shimRTCIceCandidate(e,i),me.shimConnectionState(e,i),me.shimMaxMessageSize(e,i),me.shimSendThrowTypeError(e,i);break;case"safari":if(!We||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=We,me.shimAddIceCandidateNullOrEmpty(e,i),me.shimParameterlessSetLocalDescription(e,i),We.shimRTCIceServerUrls(e,i),We.shimCreateOfferLegacy(e,i),We.shimCallbacksAPI(e,i),We.shimLocalStreamsAPI(e,i),We.shimRemoteStreamsAPI(e,i),We.shimTrackEventTransceiver(e,i),We.shimGetUserMedia(e,i),We.shimAudioContext(e,i),me.shimRTCIceCandidate(e,i),me.shimRTCIceCandidateRelayProtocol(e,i),me.shimMaxMessageSize(e,i),me.shimSendThrowTypeError(e,i),me.removeExtmapAllowMixed(e,i);break;default:r("Unsupported browser!");break}return s}});var Oo=F(Br=>{"use strict";Object.defineProperty(Br,"__esModule",{value:!0});Br.default=void 0;var Wf=Do(),Yf=(0,Wf.adapterFactory)({window:typeof window>"u"?void 0:window}),Ll=Br.default=Yf});var Bo=F((Gl,fi)=>{"use strict";var Jf=Object.prototype.hasOwnProperty,ke="~";function qt(){}Object.create&&(qt.prototype=Object.create(null),new qt().__proto__||(ke=!1));function Xf(n,e,t){this.fn=n,this.context=e,this.once=t||!1}function Uo(n,e,t,r,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new Xf(t,r||n,i),a=ke?ke+e:e;return n._events[a]?n._events[a].fn?n._events[a]=[n._events[a],s]:n._events[a].push(s):(n._events[a]=s,n._eventsCount++),n}function Lr(n,e){--n._eventsCount===0?n._events=new qt:delete n._events[e]}function Ee(){this._events=new qt,this._eventsCount=0}Ee.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)Jf.call(t,r)&&e.push(ke?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ee.prototype.listeners=function(e){var t=ke?ke+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var i=0,s=r.length,a=new Array(s);i<s;i++)a[i]=r[i].fn;return a};Ee.prototype.listenerCount=function(e){var t=ke?ke+e:e,r=this._events[t];return r?r.fn?1:r.length:0};Ee.prototype.emit=function(e,t,r,i,s,a){var f=ke?ke+e:e;if(!this._events[f])return!1;var l=this._events[f],p=arguments.length,y,x;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),p){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,r),!0;case 4:return l.fn.call(l.context,t,r,i),!0;case 5:return l.fn.call(l.context,t,r,i,s),!0;case 6:return l.fn.call(l.context,t,r,i,s,a),!0}for(x=1,y=new Array(p-1);x<p;x++)y[x-1]=arguments[x];l.fn.apply(l.context,y)}else{var E=l.length,G;for(x=0;x<E;x++)switch(l[x].once&&this.removeListener(e,l[x].fn,void 0,!0),p){case 1:l[x].fn.call(l[x].context);break;case 2:l[x].fn.call(l[x].context,t);break;case 3:l[x].fn.call(l[x].context,t,r);break;case 4:l[x].fn.call(l[x].context,t,r,i);break;default:if(!y)for(G=1,y=new Array(p-1);G<p;G++)y[G-1]=arguments[G];l[x].fn.apply(l[x].context,y)}}return!0};Ee.prototype.on=function(e,t,r){return Uo(this,e,t,r,!1)};Ee.prototype.once=function(e,t,r){return Uo(this,e,t,r,!0)};Ee.prototype.removeListener=function(e,t,r,i){var s=ke?ke+e:e;if(!this._events[s])return this;if(!t)return Lr(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!r||a.context===r)&&Lr(this,s);else{for(var f=0,l=[],p=a.length;f<p;f++)(a[f].fn!==t||i&&!a[f].once||r&&a[f].context!==r)&&l.push(a[f]);l.length?this._events[s]=l.length===1?l[0]:l:Lr(this,s)}return this};Ee.prototype.removeAllListeners=function(e){var t;return e?(t=ke?ke+e:e,this._events[t]&&Lr(this,t)):(this._events=new qt,this._eventsCount=0),this};Ee.prototype.off=Ee.prototype.removeListener;Ee.prototype.addListener=Ee.prototype.on;Ee.prefixed=ke;Ee.EventEmitter=Ee;typeof fi<"u"&&(fi.exports=Ee)});var $t=F(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.getUint64=Ge.getInt64=Ge.setInt64=Ge.setUint64=Ge.UINT32_MAX=void 0;Ge.UINT32_MAX=4294967295;function Zf(n,e,t){let r=t/4294967296,i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Ge.setUint64=Zf;function Qf(n,e,t){let r=Math.floor(t/4294967296),i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Ge.setInt64=Qf;function ed(n,e){let t=n.getInt32(e),r=n.getUint32(e+4);return t*4294967296+r}Ge.getInt64=ed;function td(n,e){let t=n.getUint32(e),r=n.getUint32(e+4);return t*4294967296+r}Ge.getUint64=td});var Gr=F(Ie=>{"use strict";var di,ui,li;Object.defineProperty(Ie,"__esModule",{value:!0});Ie.utf8DecodeTD=Ie.TEXT_DECODER_THRESHOLD=Ie.utf8DecodeJs=Ie.utf8EncodeTE=Ie.TEXT_ENCODER_THRESHOLD=Ie.utf8EncodeJs=Ie.utf8Count=void 0;var Lo=$t(),jr=(typeof process>"u"||((di=process==null?void 0:process.env)===null||di===void 0?void 0:di.TEXT_ENCODING)!=="never")&&typeof TextEncoder<"u"&&typeof TextDecoder<"u";function rd(n){let e=n.length,t=0,r=0;for(;r<e;){let i=n.charCodeAt(r++);if((i&4294967168)===0){t++;continue}else if((i&4294965248)===0)t+=2;else{if(i>=55296&&i<=56319&&r<e){let s=n.charCodeAt(r);(s&64512)===56320&&(++r,i=((i&1023)<<10)+(s&1023)+65536)}(i&4294901760)===0?t+=3:t+=4}}return t}Ie.utf8Count=rd;function nd(n,e,t){let r=n.length,i=t,s=0;for(;s<r;){let a=n.charCodeAt(s++);if((a&4294967168)===0){e[i++]=a;continue}else if((a&4294965248)===0)e[i++]=a>>6&31|192;else{if(a>=55296&&a<=56319&&s<r){let f=n.charCodeAt(s);(f&64512)===56320&&(++s,a=((a&1023)<<10)+(f&1023)+65536)}(a&4294901760)===0?(e[i++]=a>>12&15|224,e[i++]=a>>6&63|128):(e[i++]=a>>18&7|240,e[i++]=a>>12&63|128,e[i++]=a>>6&63|128)}e[i++]=a&63|128}}Ie.utf8EncodeJs=nd;var Ht=jr?new TextEncoder:void 0;Ie.TEXT_ENCODER_THRESHOLD=jr?typeof process<"u"&&((ui=process==null?void 0:process.env)===null||ui===void 0?void 0:ui.TEXT_ENCODING)!=="force"?200:0:Lo.UINT32_MAX;function id(n,e,t){e.set(Ht.encode(n),t)}function sd(n,e,t){Ht.encodeInto(n,e.subarray(t))}Ie.utf8EncodeTE=Ht?.encodeInto?sd:id;var od=4096;function ad(n,e,t){let r=e,i=r+t,s=[],a="";for(;r<i;){let f=n[r++];if((f&128)===0)s.push(f);else if((f&224)===192){let l=n[r++]&63;s.push((f&31)<<6|l)}else if((f&240)===224){let l=n[r++]&63,p=n[r++]&63;s.push((f&31)<<12|l<<6|p)}else if((f&248)===240){let l=n[r++]&63,p=n[r++]&63,y=n[r++]&63,x=(f&7)<<18|l<<12|p<<6|y;x>65535&&(x-=65536,s.push(x>>>10&1023|55296),x=56320|x&1023),s.push(x)}else s.push(f);s.length>=od&&(a+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(a+=String.fromCharCode(...s)),a}Ie.utf8DecodeJs=ad;var cd=jr?new TextDecoder:null;Ie.TEXT_DECODER_THRESHOLD=jr?typeof process<"u"&&((li=process==null?void 0:process.env)===null||li===void 0?void 0:li.TEXT_DECODER)!=="force"?200:0:Lo.UINT32_MAX;function fd(n,e,t){let r=n.subarray(e,e+t);return cd.decode(r)}Ie.utf8DecodeTD=fd});var pi=F(Kr=>{"use strict";Object.defineProperty(Kr,"__esModule",{value:!0});Kr.ExtData=void 0;var hi=class{constructor(e,t){this.type=e,this.data=t}};Kr.ExtData=hi});var Nr=F(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.DecodeError=void 0;var yi=class n extends Error{constructor(e){super(e);let t=Object.create(n.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:n.name})}};Fr.DecodeError=yi});var gi=F(Pe=>{"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});Pe.timestampExtension=Pe.decodeTimestampExtension=Pe.decodeTimestampToTimeSpec=Pe.encodeTimestampExtension=Pe.encodeDateToTimeSpec=Pe.encodeTimeSpecToTimestamp=Pe.EXT_TIMESTAMP=void 0;var dd=Nr(),jo=$t();Pe.EXT_TIMESTAMP=-1;var ud=4294967296-1,ld=17179869184-1;function Go({sec:n,nsec:e}){if(n>=0&&e>=0&&n<=ld)if(e===0&&n<=ud){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,n),t}else{let t=n/4294967296,r=n&4294967295,i=new Uint8Array(8),s=new DataView(i.buffer);return s.setUint32(0,e<<2|t&3),s.setUint32(4,r),i}else{let t=new Uint8Array(12),r=new DataView(t.buffer);return r.setUint32(0,e),(0,jo.setInt64)(r,4,n),t}}Pe.encodeTimeSpecToTimestamp=Go;function Ko(n){let e=n.getTime(),t=Math.floor(e/1e3),r=(e-t*1e3)*1e6,i=Math.floor(r/1e9);return{sec:t+i,nsec:r-i*1e9}}Pe.encodeDateToTimeSpec=Ko;function Fo(n){if(n instanceof Date){let e=Ko(n);return Go(e)}else return null}Pe.encodeTimestampExtension=Fo;function No(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength);switch(n.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),r=e.getUint32(4),i=(t&3)*4294967296+r,s=t>>>2;return{sec:i,nsec:s}}case 12:{let t=(0,jo.getInt64)(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new dd.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${n.length}`)}}Pe.decodeTimestampToTimeSpec=No;function zo(n){let e=No(n);return new Date(e.sec*1e3+e.nsec/1e6)}Pe.decodeTimestampExtension=zo;Pe.timestampExtension={type:Pe.EXT_TIMESTAMP,encode:Fo,decode:zo}});var $r=F(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.ExtensionCodec=void 0;var zr=pi(),hd=gi(),Vt=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(hd.timestampExtension)}register({type:e,encode:t,decode:r}){if(e>=0)this.encoders[e]=t,this.decoders[e]=r;else{let i=1+e;this.builtInEncoders[i]=t,this.builtInDecoders[i]=r}}tryToEncode(e,t){for(let r=0;r<this.builtInEncoders.length;r++){let i=this.builtInEncoders[r];if(i!=null){let s=i(e,t);if(s!=null){let a=-1-r;return new zr.ExtData(a,s)}}}for(let r=0;r<this.encoders.length;r++){let i=this.encoders[r];if(i!=null){let s=i(e,t);if(s!=null){let a=r;return new zr.ExtData(a,s)}}}return e instanceof zr.ExtData?e:null}decode(e,t,r){let i=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return i?i(e,t,r):new zr.ExtData(t,e)}};qr.ExtensionCodec=Vt;Vt.defaultCodec=new Vt});var mi=F(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.createDataView=It.ensureUint8Array=void 0;function qo(n){return n instanceof Uint8Array?n:ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):n instanceof ArrayBuffer?new Uint8Array(n):Uint8Array.from(n)}It.ensureUint8Array=qo;function pd(n){if(n instanceof ArrayBuffer)return new DataView(n);let e=qo(n);return new DataView(e.buffer,e.byteOffset,e.byteLength)}It.createDataView=pd});var bi=F(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.Encoder=Ye.DEFAULT_INITIAL_BUFFER_SIZE=Ye.DEFAULT_MAX_DEPTH=void 0;var Wt=Gr(),yd=$r(),$o=$t(),gd=mi();Ye.DEFAULT_MAX_DEPTH=100;Ye.DEFAULT_INITIAL_BUFFER_SIZE=2048;var xi=class{constructor(e=yd.ExtensionCodec.defaultCodec,t=void 0,r=Ye.DEFAULT_MAX_DEPTH,i=Ye.DEFAULT_INITIAL_BUFFER_SIZE,s=!1,a=!1,f=!1,l=!1){this.extensionCodec=e,this.context=t,this.maxDepth=r,this.initialBufferSize=i,this.sortKeys=s,this.forceFloat32=a,this.ignoreUndefined=f,this.forceIntegerToFloat=l,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}reinitializeState(){this.pos=0}encodeSharedRef(e){return this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}encode(e){return this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),r=new Uint8Array(t),i=new DataView(t);r.set(this.bytes),this.view=i,this.bytes=r}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){Number.isSafeInteger(e)&&!this.forceIntegerToFloat?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){if(e.length>Wt.TEXT_ENCODER_THRESHOLD){let i=(0,Wt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Wt.utf8EncodeTE)(e,this.bytes,this.pos),this.pos+=i}else{let i=(0,Wt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Wt.utf8EncodeJs)(e,this.bytes,this.pos),this.pos+=i}}encodeObject(e,t){let r=this.extensionCodec.tryToEncode(e,this.context);if(r!=null)this.encodeExtension(r);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let r=(0,gd.ensureUint8Array)(e);this.writeU8a(r)}encodeArray(e,t){let r=e.length;if(r<16)this.writeU8(144+r);else if(r<65536)this.writeU8(220),this.writeU16(r);else if(r<4294967296)this.writeU8(221),this.writeU32(r);else throw new Error(`Too large array: ${r}`);for(let i of e)this.doEncode(i,t+1)}countWithoutUndefined(e,t){let r=0;for(let i of t)e[i]!==void 0&&r++;return r}encodeMap(e,t){let r=Object.keys(e);this.sortKeys&&r.sort();let i=this.ignoreUndefined?this.countWithoutUndefined(e,r):r.length;if(i<16)this.writeU8(128+i);else if(i<65536)this.writeU8(222),this.writeU16(i);else if(i<4294967296)this.writeU8(223),this.writeU32(i);else throw new Error(`Too large map object: ${i}`);for(let s of r){let a=e[s];this.ignoreUndefined&&a===void 0||(this.encodeString(s),this.doEncode(a,t+1))}}encodeExtension(e){let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,$o.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,$o.setInt64)(this.view,this.pos,e),this.pos+=8}};Ye.Encoder=xi});var Ho=F(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.encode=void 0;var md=bi(),xd={};function bd(n,e=xd){return new md.Encoder(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat).encodeSharedRef(n)}Hr.encode=bd});var Vo=F(Vr=>{"use strict";Object.defineProperty(Vr,"__esModule",{value:!0});Vr.prettyByte=void 0;function vd(n){return`${n<0?"-":""}0x${Math.abs(n).toString(16).padStart(2,"0")}`}Vr.prettyByte=vd});var Wo=F(Wr=>{"use strict";Object.defineProperty(Wr,"__esModule",{value:!0});Wr.CachedKeyDecoder=void 0;var _d=Gr(),Pd=16,wd=16,vi=class{constructor(e=Pd,t=wd){this.maxKeyLength=e,this.maxLengthPerKey=t,this.hit=0,this.miss=0,this.caches=[];for(let r=0;r<this.maxKeyLength;r++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,r){let i=this.caches[r-1];e:for(let s of i){let a=s.bytes;for(let f=0;f<r;f++)if(a[f]!==e[t+f])continue e;return s.str}return null}store(e,t){let r=this.caches[e.length-1],i={bytes:e,str:t};r.length>=this.maxLengthPerKey?r[Math.random()*r.length|0]=i:r.push(i)}decode(e,t,r){let i=this.find(e,t,r);if(i!=null)return this.hit++,i;this.miss++;let s=(0,_d.utf8DecodeJs)(e,t,r),a=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(a,s),s}};Wr.CachedKeyDecoder=vi});var Yr=F(tt=>{"use strict";Object.defineProperty(tt,"__esModule",{value:!0});tt.Decoder=tt.DataViewIndexOutOfBoundsError=void 0;var _i=Vo(),Sd=$r(),yt=$t(),Pi=Gr(),wi=mi(),Cd=Wo(),et=Nr(),Ed=n=>{let e=typeof n;return e==="string"||e==="number"},Yt=-1,Ci=new DataView(new ArrayBuffer(0)),Id=new Uint8Array(Ci.buffer);tt.DataViewIndexOutOfBoundsError=(()=>{try{Ci.getInt8(0)}catch(n){return n.constructor}throw new Error("never reached")})();var Yo=new tt.DataViewIndexOutOfBoundsError("Insufficient data"),Td=new Cd.CachedKeyDecoder,Si=class{constructor(e=Sd.ExtensionCodec.defaultCodec,t=void 0,r=yt.UINT32_MAX,i=yt.UINT32_MAX,s=yt.UINT32_MAX,a=yt.UINT32_MAX,f=yt.UINT32_MAX,l=Td){this.extensionCodec=e,this.context=t,this.maxStrLength=r,this.maxBinLength=i,this.maxArrayLength=s,this.maxMapLength=a,this.maxExtLength=f,this.keyDecoder=l,this.totalPos=0,this.pos=0,this.view=Ci,this.bytes=Id,this.headByte=Yt,this.stack=[]}reinitializeState(){this.totalPos=0,this.headByte=Yt,this.stack.length=0}setBuffer(e){this.bytes=(0,wi.ensureUint8Array)(e),this.view=(0,wi.createDataView)(this.bytes),this.pos=0}appendBuffer(e){if(this.headByte===Yt&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=(0,wi.ensureUint8Array)(e),i=new Uint8Array(t.length+r.length);i.set(t),i.set(r,t.length),this.setBuffer(i)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:r}=this;return new RangeError(`Extra ${t.byteLength-r} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}*decodeMulti(e){for(this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}async decodeAsync(e){let t=!1,r;for await(let f of e){if(t)throw this.createExtraByteError(this.totalPos);this.appendBuffer(f);try{r=this.doDecodeSync(),t=!0}catch(l){if(!(l instanceof tt.DataViewIndexOutOfBoundsError))throw l}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return r}let{headByte:i,pos:s,totalPos:a}=this;throw new RangeError(`Insufficient data in parsing ${(0,_i.prettyByte)(i)} at ${a} (${s} in the current buffer)`)}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){let r=t,i=-1;for await(let s of e){if(t&&i===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),r&&(i=this.readArraySize(),r=!1,this.complete());try{for(;yield this.doDecodeSync(),--i!==0;);}catch(a){if(!(a instanceof tt.DataViewIndexOutOfBoundsError))throw a}this.totalPos+=this.pos}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let i=e-128;if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e<160){let i=e-144;if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else{let i=e-160;t=this.decodeUtf8String(i,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)t=this.readI64();else if(e===217){let i=this.lookU8();t=this.decodeUtf8String(i,1)}else if(e===218){let i=this.lookU16();t=this.decodeUtf8String(i,2)}else if(e===219){let i=this.lookU32();t=this.decodeUtf8String(i,4)}else if(e===220){let i=this.readU16();if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else if(e===221){let i=this.readU32();if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else if(e===222){let i=this.readU16();if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e===223){let i=this.readU32();if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e===196){let i=this.lookU8();t=this.decodeBinary(i,1)}else if(e===197){let i=this.lookU16();t=this.decodeBinary(i,2)}else if(e===198){let i=this.lookU32();t=this.decodeBinary(i,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let i=this.lookU8();t=this.decodeExtension(i,1)}else if(e===200){let i=this.lookU16();t=this.decodeExtension(i,2)}else if(e===201){let i=this.lookU32();t=this.decodeExtension(i,4)}else throw new et.DecodeError(`Unrecognized type byte: ${(0,_i.prettyByte)(e)}`);this.complete();let r=this.stack;for(;r.length>0;){let i=r[r.length-1];if(i.type===0)if(i.array[i.position]=t,i.position++,i.position===i.size)r.pop(),t=i.array;else continue e;else if(i.type===1){if(!Ed(t))throw new et.DecodeError("The type of key must be string or number but "+typeof t);if(t==="__proto__")throw new et.DecodeError("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}else if(i.map[i.key]=t,i.readCount++,i.readCount===i.size)r.pop(),t=i.map;else{i.key=null,i.type=1;continue e}}return t}}readHeadByte(){return this.headByte===Yt&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Yt}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new et.DecodeError(`Unrecognized array type byte: ${(0,_i.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new et.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})}pushArrayState(e){if(e>this.maxArrayLength)throw new et.DecodeError(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.push({type:0,size:e,array:new Array(e),position:0})}decodeUtf8String(e,t){var r;if(e>this.maxStrLength)throw new et.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw Yo;let i=this.pos+t,s;return this.stateIsMapKey()&&(!((r=this.keyDecoder)===null||r===void 0)&&r.canBeCached(e))?s=this.keyDecoder.decode(this.bytes,i,e):e>Pi.TEXT_DECODER_THRESHOLD?s=(0,Pi.utf8DecodeTD)(this.bytes,i,e):s=(0,Pi.utf8DecodeJs)(this.bytes,i,e),this.pos+=t+e,s}stateIsMapKey(){return this.stack.length>0?this.stack[this.stack.length-1].type===1:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new et.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw Yo;let r=this.pos+t,i=this.bytes.subarray(r,r+e);return this.pos+=t+e,i}decodeExtension(e,t){if(e>this.maxExtLength)throw new et.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let r=this.view.getInt8(this.pos+t),i=this.decodeBinary(e,t+1);return this.extensionCodec.decode(i,r,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,yt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,yt.getInt64)(this.view,this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};tt.Decoder=Si});var Ei=F(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.decodeMulti=Je.decode=Je.defaultDecodeOptions=void 0;var Jo=Yr();Je.defaultDecodeOptions={};function kd(n,e=Je.defaultDecodeOptions){return new Jo.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decode(n)}Je.decode=kd;function Rd(n,e=Je.defaultDecodeOptions){return new Jo.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeMulti(n)}Je.decodeMulti=Rd});var Qo=F(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.ensureAsyncIterable=ot.asyncIterableFromStream=ot.isAsyncIterable=void 0;function Xo(n){return n[Symbol.asyncIterator]!=null}ot.isAsyncIterable=Xo;function Ad(n){if(n==null)throw new Error("Assertion Failure: value must not be null nor undefined")}async function*Zo(n){let e=n.getReader();try{for(;;){let{done:t,value:r}=await e.read();if(t)return;Ad(r),yield r}}finally{e.releaseLock()}}ot.asyncIterableFromStream=Zo;function Md(n){return Xo(n)?n:Zo(n)}ot.ensureAsyncIterable=Md});var ta=F(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.decodeStream=Xe.decodeMultiStream=Xe.decodeArrayStream=Xe.decodeAsync=void 0;var Ii=Yr(),Ti=Qo(),Jr=Ei();async function Dd(n,e=Jr.defaultDecodeOptions){let t=(0,Ti.ensureAsyncIterable)(n);return new Ii.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeAsync(t)}Xe.decodeAsync=Dd;function Od(n,e=Jr.defaultDecodeOptions){let t=(0,Ti.ensureAsyncIterable)(n);return new Ii.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeArrayStream(t)}Xe.decodeArrayStream=Od;function ea(n,e=Jr.defaultDecodeOptions){let t=(0,Ti.ensureAsyncIterable)(n);return new Ii.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeStream(t)}Xe.decodeMultiStream=ea;function Ud(n,e=Jr.defaultDecodeOptions){return ea(n,e)}Xe.decodeStream=Ud});var ia=F(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.decodeTimestampExtension=te.encodeTimestampExtension=te.decodeTimestampToTimeSpec=te.encodeTimeSpecToTimestamp=te.encodeDateToTimeSpec=te.EXT_TIMESTAMP=te.ExtData=te.ExtensionCodec=te.Encoder=te.DataViewIndexOutOfBoundsError=te.DecodeError=te.Decoder=te.decodeStream=te.decodeMultiStream=te.decodeArrayStream=te.decodeAsync=te.decodeMulti=te.decode=te.encode=void 0;var Bd=Ho();Object.defineProperty(te,"encode",{enumerable:!0,get:function(){return Bd.encode}});var ra=Ei();Object.defineProperty(te,"decode",{enumerable:!0,get:function(){return ra.decode}});Object.defineProperty(te,"decodeMulti",{enumerable:!0,get:function(){return ra.decodeMulti}});var Xr=ta();Object.defineProperty(te,"decodeAsync",{enumerable:!0,get:function(){return Xr.decodeAsync}});Object.defineProperty(te,"decodeArrayStream",{enumerable:!0,get:function(){return Xr.decodeArrayStream}});Object.defineProperty(te,"decodeMultiStream",{enumerable:!0,get:function(){return Xr.decodeMultiStream}});Object.defineProperty(te,"decodeStream",{enumerable:!0,get:function(){return Xr.decodeStream}});var na=Yr();Object.defineProperty(te,"Decoder",{enumerable:!0,get:function(){return na.Decoder}});Object.defineProperty(te,"DataViewIndexOutOfBoundsError",{enumerable:!0,get:function(){return na.DataViewIndexOutOfBoundsError}});var Ld=Nr();Object.defineProperty(te,"DecodeError",{enumerable:!0,get:function(){return Ld.DecodeError}});var jd=bi();Object.defineProperty(te,"Encoder",{enumerable:!0,get:function(){return jd.Encoder}});var Gd=$r();Object.defineProperty(te,"ExtensionCodec",{enumerable:!0,get:function(){return Gd.ExtensionCodec}});var Kd=pi();Object.defineProperty(te,"ExtData",{enumerable:!0,get:function(){return Kd.ExtData}});var Tt=gi();Object.defineProperty(te,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Tt.EXT_TIMESTAMP}});Object.defineProperty(te,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Tt.encodeDateToTimeSpec}});Object.defineProperty(te,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Tt.encodeTimeSpecToTimestamp}});Object.defineProperty(te,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Tt.decodeTimestampToTimeSpec}});Object.defineProperty(te,"encodeTimestampExtension",{enumerable:!0,get:function(){return Tt.encodeTimestampExtension}});Object.defineProperty(te,"decodeTimestampExtension",{enumerable:!0,get:function(){return Tt.decodeTimestampExtension}})});var zi=F((rh,$e)=>{var Zr=co(),sa=Oo(),fa=Bo(),oa=ia();function Fd(n){Object.defineProperty(n,"__esModule",{value:!0,configurable:!0})}function Nd(n,e){return Object.keys(e).forEach(function(t){t==="default"||t==="__esModule"||Object.prototype.hasOwnProperty.call(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:function(){return e[t]}})}),n}function Ae(n,e,t,r){Object.defineProperty(n,e,{get:t,set:r,enumerable:!0,configurable:!0})}function aa(n){return n&&n.__esModule?n.default:n}Fd($e.exports);Ae($e.exports,"default",()=>Hd);Ae($e.exports,"util",()=>Re);Ae($e.exports,"BufferedConnection",()=>kt);Ae($e.exports,"StreamConnection",()=>on);Ae($e.exports,"MsgPack",()=>tr);Ae($e.exports,"Peer",()=>er);Ae($e.exports,"MsgPackPeer",()=>Li);Ae($e.exports,"PeerError",()=>rn);var Qr=class{constructor(){this.chunkedMTU=16300,this._dataCount=1,this.chunk=e=>{let t=[],r=e.byteLength,i=Math.ceil(r/this.chunkedMTU),s=0,a=0;for(;a<r;){let f=Math.min(r,a+this.chunkedMTU),l=e.slice(a,f),p={__peerData:this._dataCount,n:s,data:l,total:i};t.push(p),a=f,s++}return this._dataCount++,t}}};function zd(n){let e=0;for(let i of n)e+=i.byteLength;let t=new Uint8Array(e),r=0;for(let i of n)t.set(i,r),r+=i.byteLength;return t}var ki=aa(sa).default||aa(sa),Jt=new class{isWebRTCSupported(){return typeof RTCPeerConnection<"u"}isBrowserSupported(){let n=this.getBrowser(),e=this.getVersion();return this.supportedBrowsers.includes(n)?n==="chrome"?e>=this.minChromeVersion:n==="firefox"?e>=this.minFirefoxVersion:n==="safari"?!this.isIOS&&e>=this.minSafariVersion:!1:!1}getBrowser(){return ki.browserDetails.browser}getVersion(){return ki.browserDetails.version||0}isUnifiedPlanSupported(){let n=this.getBrowser(),e=ki.browserDetails.version||0;if(n==="chrome"&&e<this.minChromeVersion)return!1;if(n==="firefox"&&e>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let t,r=!1;try{t=new RTCPeerConnection,t.addTransceiver("audio"),r=!0}catch{}finally{t&&t.close()}return r}toString(){return`Supports:
36
+ `);r.RTCSessionDescription&&i instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:i.type,sdp:s}):i.sdp=s}return t.apply(this,arguments)}}}function Wf(r,e){if(r.RTCPeerConnection&&r.RTCPeerConnection.prototype){var t=r.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(r.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}}function Yf(r,e){if(r.RTCPeerConnection&&r.RTCPeerConnection.prototype){var t=r.RTCPeerConnection.prototype.setLocalDescription;!t||t.length===0||(r.RTCPeerConnection.prototype.setLocalDescription=function(){var i=this,s=arguments[0]||{};if($t(s)!=="object"||s.type&&s.sdp)return t.apply(this,arguments);if(s={type:s.type,sdp:s.sdp},!s.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":s.type="offer";break;default:s.type="answer";break}if(s.sdp||s.type!=="offer"&&s.type!=="answer")return t.apply(this,[s]);var a=s.type==="offer"?this.createOffer:this.createAnswer;return a.apply(this).then(function(f){return t.apply(i,[f])})})}}});var Oo=K(fi=>{"use strict";function ci(r){"@babel/helpers - typeof";return ci=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ci(r)}Object.defineProperty(fi,"__esModule",{value:!0});fi.adapterFactory=Xf;var qt=yt(it()),qe=yt(_o()),Ue=yt(Io()),Ye=yt(Ao()),ge=yt(Do()),Jf=yt(oi());function yt(r,e){if(typeof WeakMap=="function")var t=new WeakMap,n=new WeakMap;return(yt=function(s,a){if(!a&&s&&s.__esModule)return s;var f,l,p={__proto__:null,default:s};if(s===null||ci(s)!="object"&&typeof s!="function")return p;if(f=a?n:t){if(f.has(s))return f.get(s);f.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((l=(f=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(l.get||l.set)?f(p,y,l):p[y]=s[y]);return p})(r,e)}function Xf(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=r.window,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0},n=qt.log,i=qt.detectBrowser(e),s={browserDetails:i,commonShim:ge,extractVersion:qt.extractVersion,disableLog:qt.disableLog,disableWarnings:qt.disableWarnings,sdp:Jf};switch(i.browser){case"chrome":if(!qe||!qe.shimPeerConnection||!t.shimChrome)return n("Chrome shim is not included in this adapter release."),s;if(i.version===null)return n("Chrome shim can not determine version, not shimming."),s;n("adapter.js shimming chrome."),s.browserShim=qe,ge.shimAddIceCandidateNullOrEmpty(e,i),ge.shimParameterlessSetLocalDescription(e,i),qe.shimGetUserMedia(e,i),qe.shimMediaStream(e,i),qe.shimPeerConnection(e,i),qe.shimOnTrack(e,i),qe.shimAddTrackRemoveTrack(e,i),qe.shimGetSendersWithDtmf(e,i),qe.shimSenderReceiverGetStats(e,i),qe.fixNegotiationNeeded(e,i),ge.shimRTCIceCandidate(e,i),ge.shimRTCIceCandidateRelayProtocol(e,i),ge.shimConnectionState(e,i),ge.shimMaxMessageSize(e,i),ge.shimSendThrowTypeError(e,i),ge.removeExtmapAllowMixed(e,i);break;case"firefox":if(!Ue||!Ue.shimPeerConnection||!t.shimFirefox)return n("Firefox shim is not included in this adapter release."),s;n("adapter.js shimming firefox."),s.browserShim=Ue,ge.shimAddIceCandidateNullOrEmpty(e,i),ge.shimParameterlessSetLocalDescription(e,i),Ue.shimGetUserMedia(e,i),Ue.shimPeerConnection(e,i),Ue.shimOnTrack(e,i),Ue.shimRemoveStream(e,i),Ue.shimSenderGetStats(e,i),Ue.shimReceiverGetStats(e,i),Ue.shimRTCDataChannel(e,i),Ue.shimAddTransceiver(e,i),Ue.shimGetParameters(e,i),Ue.shimCreateOffer(e,i),Ue.shimCreateAnswer(e,i),ge.shimRTCIceCandidate(e,i),ge.shimConnectionState(e,i),ge.shimMaxMessageSize(e,i),ge.shimSendThrowTypeError(e,i);break;case"safari":if(!Ye||!t.shimSafari)return n("Safari shim is not included in this adapter release."),s;n("adapter.js shimming safari."),s.browserShim=Ye,ge.shimAddIceCandidateNullOrEmpty(e,i),ge.shimParameterlessSetLocalDescription(e,i),Ye.shimRTCIceServerUrls(e,i),Ye.shimCreateOfferLegacy(e,i),Ye.shimCallbacksAPI(e,i),Ye.shimLocalStreamsAPI(e,i),Ye.shimRemoteStreamsAPI(e,i),Ye.shimTrackEventTransceiver(e,i),Ye.shimGetUserMedia(e,i),Ye.shimAudioContext(e,i),ge.shimRTCIceCandidate(e,i),ge.shimRTCIceCandidateRelayProtocol(e,i),ge.shimMaxMessageSize(e,i),ge.shimSendThrowTypeError(e,i),ge.removeExtmapAllowMixed(e,i);break;default:n("Unsupported browser!");break}return s}});var Uo=K(Lr=>{"use strict";Object.defineProperty(Lr,"__esModule",{value:!0});Lr.default=void 0;var Zf=Oo(),Qf=(0,Zf.adapterFactory)({window:typeof window>"u"?void 0:window}),Yl=Lr.default=Qf});var Lo=K((Xl,di)=>{"use strict";var ed=Object.prototype.hasOwnProperty,ke="~";function zt(){}Object.create&&(zt.prototype=Object.create(null),new zt().__proto__||(ke=!1));function td(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Bo(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new td(t,n||r,i),a=ke?ke+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function jr(r,e){--r._eventsCount===0?r._events=new zt:delete r._events[e]}function Ee(){this._events=new zt,this._eventsCount=0}Ee.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)ed.call(t,n)&&e.push(ke?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ee.prototype.listeners=function(e){var t=ke?ke+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,a=new Array(s);i<s;i++)a[i]=n[i].fn;return a};Ee.prototype.listenerCount=function(e){var t=ke?ke+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ee.prototype.emit=function(e,t,n,i,s,a){var f=ke?ke+e:e;if(!this._events[f])return!1;var l=this._events[f],p=arguments.length,y,x;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),p){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,n),!0;case 4:return l.fn.call(l.context,t,n,i),!0;case 5:return l.fn.call(l.context,t,n,i,s),!0;case 6:return l.fn.call(l.context,t,n,i,s,a),!0}for(x=1,y=new Array(p-1);x<p;x++)y[x-1]=arguments[x];l.fn.apply(l.context,y)}else{var E=l.length,G;for(x=0;x<E;x++)switch(l[x].once&&this.removeListener(e,l[x].fn,void 0,!0),p){case 1:l[x].fn.call(l[x].context);break;case 2:l[x].fn.call(l[x].context,t);break;case 3:l[x].fn.call(l[x].context,t,n);break;case 4:l[x].fn.call(l[x].context,t,n,i);break;default:if(!y)for(G=1,y=new Array(p-1);G<p;G++)y[G-1]=arguments[G];l[x].fn.apply(l[x].context,y)}}return!0};Ee.prototype.on=function(e,t,n){return Bo(this,e,t,n,!1)};Ee.prototype.once=function(e,t,n){return Bo(this,e,t,n,!0)};Ee.prototype.removeListener=function(e,t,n,i){var s=ke?ke+e:e;if(!this._events[s])return this;if(!t)return jr(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!n||a.context===n)&&jr(this,s);else{for(var f=0,l=[],p=a.length;f<p;f++)(a[f].fn!==t||i&&!a[f].once||n&&a[f].context!==n)&&l.push(a[f]);l.length?this._events[s]=l.length===1?l[0]:l:jr(this,s)}return this};Ee.prototype.removeAllListeners=function(e){var t;return e?(t=ke?ke+e:e,this._events[t]&&jr(this,t)):(this._events=new zt,this._eventsCount=0),this};Ee.prototype.off=Ee.prototype.removeListener;Ee.prototype.addListener=Ee.prototype.on;Ee.prefixed=ke;Ee.EventEmitter=Ee;typeof di<"u"&&(di.exports=Ee)});var Vt=K(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.getUint64=Ge.getInt64=Ge.setInt64=Ge.setUint64=Ge.UINT32_MAX=void 0;Ge.UINT32_MAX=4294967295;function rd(r,e,t){let n=t/4294967296,i=t;r.setUint32(e,n),r.setUint32(e+4,i)}Ge.setUint64=rd;function nd(r,e,t){let n=Math.floor(t/4294967296),i=t;r.setUint32(e,n),r.setUint32(e+4,i)}Ge.setInt64=nd;function id(r,e){let t=r.getInt32(e),n=r.getUint32(e+4);return t*4294967296+n}Ge.getInt64=id;function sd(r,e){let t=r.getUint32(e),n=r.getUint32(e+4);return t*4294967296+n}Ge.getUint64=sd});var Fr=K(Ie=>{"use strict";var ui,li,hi;Object.defineProperty(Ie,"__esModule",{value:!0});Ie.utf8DecodeTD=Ie.TEXT_DECODER_THRESHOLD=Ie.utf8DecodeJs=Ie.utf8EncodeTE=Ie.TEXT_ENCODER_THRESHOLD=Ie.utf8EncodeJs=Ie.utf8Count=void 0;var jo=Vt(),Gr=(typeof process>"u"||((ui=process==null?void 0:process.env)===null||ui===void 0?void 0:ui.TEXT_ENCODING)!=="never")&&typeof TextEncoder<"u"&&typeof TextDecoder<"u";function od(r){let e=r.length,t=0,n=0;for(;n<e;){let i=r.charCodeAt(n++);if((i&4294967168)===0){t++;continue}else if((i&4294965248)===0)t+=2;else{if(i>=55296&&i<=56319&&n<e){let s=r.charCodeAt(n);(s&64512)===56320&&(++n,i=((i&1023)<<10)+(s&1023)+65536)}(i&4294901760)===0?t+=3:t+=4}}return t}Ie.utf8Count=od;function ad(r,e,t){let n=r.length,i=t,s=0;for(;s<n;){let a=r.charCodeAt(s++);if((a&4294967168)===0){e[i++]=a;continue}else if((a&4294965248)===0)e[i++]=a>>6&31|192;else{if(a>=55296&&a<=56319&&s<n){let f=r.charCodeAt(s);(f&64512)===56320&&(++s,a=((a&1023)<<10)+(f&1023)+65536)}(a&4294901760)===0?(e[i++]=a>>12&15|224,e[i++]=a>>6&63|128):(e[i++]=a>>18&7|240,e[i++]=a>>12&63|128,e[i++]=a>>6&63|128)}e[i++]=a&63|128}}Ie.utf8EncodeJs=ad;var Ht=Gr?new TextEncoder:void 0;Ie.TEXT_ENCODER_THRESHOLD=Gr?typeof process<"u"&&((li=process==null?void 0:process.env)===null||li===void 0?void 0:li.TEXT_ENCODING)!=="force"?200:0:jo.UINT32_MAX;function cd(r,e,t){e.set(Ht.encode(r),t)}function fd(r,e,t){Ht.encodeInto(r,e.subarray(t))}Ie.utf8EncodeTE=Ht?.encodeInto?fd:cd;var dd=4096;function ud(r,e,t){let n=e,i=n+t,s=[],a="";for(;n<i;){let f=r[n++];if((f&128)===0)s.push(f);else if((f&224)===192){let l=r[n++]&63;s.push((f&31)<<6|l)}else if((f&240)===224){let l=r[n++]&63,p=r[n++]&63;s.push((f&31)<<12|l<<6|p)}else if((f&248)===240){let l=r[n++]&63,p=r[n++]&63,y=r[n++]&63,x=(f&7)<<18|l<<12|p<<6|y;x>65535&&(x-=65536,s.push(x>>>10&1023|55296),x=56320|x&1023),s.push(x)}else s.push(f);s.length>=dd&&(a+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(a+=String.fromCharCode(...s)),a}Ie.utf8DecodeJs=ud;var ld=Gr?new TextDecoder:null;Ie.TEXT_DECODER_THRESHOLD=Gr?typeof process<"u"&&((hi=process==null?void 0:process.env)===null||hi===void 0?void 0:hi.TEXT_DECODER)!=="force"?200:0:jo.UINT32_MAX;function hd(r,e,t){let n=r.subarray(e,e+t);return ld.decode(n)}Ie.utf8DecodeTD=hd});var yi=K(Kr=>{"use strict";Object.defineProperty(Kr,"__esModule",{value:!0});Kr.ExtData=void 0;var pi=class{constructor(e,t){this.type=e,this.data=t}};Kr.ExtData=pi});var $r=K(Nr=>{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});Nr.DecodeError=void 0;var mi=class r extends Error{constructor(e){super(e);let t=Object.create(r.prototype);Object.setPrototypeOf(this,t),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:r.name})}};Nr.DecodeError=mi});var gi=K(Pe=>{"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});Pe.timestampExtension=Pe.decodeTimestampExtension=Pe.decodeTimestampToTimeSpec=Pe.encodeTimestampExtension=Pe.encodeDateToTimeSpec=Pe.encodeTimeSpecToTimestamp=Pe.EXT_TIMESTAMP=void 0;var pd=$r(),Go=Vt();Pe.EXT_TIMESTAMP=-1;var yd=4294967296-1,md=17179869184-1;function Fo({sec:r,nsec:e}){if(r>=0&&e>=0&&r<=md)if(e===0&&r<=yd){let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,r),t}else{let t=r/4294967296,n=r&4294967295,i=new Uint8Array(8),s=new DataView(i.buffer);return s.setUint32(0,e<<2|t&3),s.setUint32(4,n),i}else{let t=new Uint8Array(12),n=new DataView(t.buffer);return n.setUint32(0,e),(0,Go.setInt64)(n,4,r),t}}Pe.encodeTimeSpecToTimestamp=Fo;function Ko(r){let e=r.getTime(),t=Math.floor(e/1e3),n=(e-t*1e3)*1e6,i=Math.floor(n/1e9);return{sec:t+i,nsec:n-i*1e9}}Pe.encodeDateToTimeSpec=Ko;function No(r){if(r instanceof Date){let e=Ko(r);return Fo(e)}else return null}Pe.encodeTimestampExtension=No;function $o(r){let e=new DataView(r.buffer,r.byteOffset,r.byteLength);switch(r.byteLength){case 4:return{sec:e.getUint32(0),nsec:0};case 8:{let t=e.getUint32(0),n=e.getUint32(4),i=(t&3)*4294967296+n,s=t>>>2;return{sec:i,nsec:s}}case 12:{let t=(0,Go.getInt64)(e,4),n=e.getUint32(0);return{sec:t,nsec:n}}default:throw new pd.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${r.length}`)}}Pe.decodeTimestampToTimeSpec=$o;function qo(r){let e=$o(r);return new Date(e.sec*1e3+e.nsec/1e6)}Pe.decodeTimestampExtension=qo;Pe.timestampExtension={type:Pe.EXT_TIMESTAMP,encode:No,decode:qo}});var Vr=K(zr=>{"use strict";Object.defineProperty(zr,"__esModule",{value:!0});zr.ExtensionCodec=void 0;var qr=yi(),gd=gi(),Wt=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(gd.timestampExtension)}register({type:e,encode:t,decode:n}){if(e>=0)this.encoders[e]=t,this.decoders[e]=n;else{let i=1+e;this.builtInEncoders[i]=t,this.builtInDecoders[i]=n}}tryToEncode(e,t){for(let n=0;n<this.builtInEncoders.length;n++){let i=this.builtInEncoders[n];if(i!=null){let s=i(e,t);if(s!=null){let a=-1-n;return new qr.ExtData(a,s)}}}for(let n=0;n<this.encoders.length;n++){let i=this.encoders[n];if(i!=null){let s=i(e,t);if(s!=null){let a=n;return new qr.ExtData(a,s)}}}return e instanceof qr.ExtData?e:null}decode(e,t,n){let i=t<0?this.builtInDecoders[-1-t]:this.decoders[t];return i?i(e,t,n):new qr.ExtData(t,e)}};zr.ExtensionCodec=Wt;Wt.defaultCodec=new Wt});var xi=K(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.createDataView=Tt.ensureUint8Array=void 0;function zo(r){return r instanceof Uint8Array?r:ArrayBuffer.isView(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r instanceof ArrayBuffer?new Uint8Array(r):Uint8Array.from(r)}Tt.ensureUint8Array=zo;function xd(r){if(r instanceof ArrayBuffer)return new DataView(r);let e=zo(r);return new DataView(e.buffer,e.byteOffset,e.byteLength)}Tt.createDataView=xd});var vi=K(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.Encoder=Je.DEFAULT_INITIAL_BUFFER_SIZE=Je.DEFAULT_MAX_DEPTH=void 0;var Yt=Fr(),bd=Vr(),Vo=Vt(),vd=xi();Je.DEFAULT_MAX_DEPTH=100;Je.DEFAULT_INITIAL_BUFFER_SIZE=2048;var bi=class{constructor(e=bd.ExtensionCodec.defaultCodec,t=void 0,n=Je.DEFAULT_MAX_DEPTH,i=Je.DEFAULT_INITIAL_BUFFER_SIZE,s=!1,a=!1,f=!1,l=!1){this.extensionCodec=e,this.context=t,this.maxDepth=n,this.initialBufferSize=i,this.sortKeys=s,this.forceFloat32=a,this.ignoreUndefined=f,this.forceIntegerToFloat=l,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}reinitializeState(){this.pos=0}encodeSharedRef(e){return this.reinitializeState(),this.doEncode(e,1),this.bytes.subarray(0,this.pos)}encode(e){return this.reinitializeState(),this.doEncode(e,1),this.bytes.slice(0,this.pos)}doEncode(e,t){if(t>this.maxDepth)throw new Error(`Too deep objects in depth ${t}`);e==null?this.encodeNil():typeof e=="boolean"?this.encodeBoolean(e):typeof e=="number"?this.encodeNumber(e):typeof e=="string"?this.encodeString(e):this.encodeObject(e,t)}ensureBufferSizeToWrite(e){let t=this.pos+e;this.view.byteLength<t&&this.resizeBuffer(t*2)}resizeBuffer(e){let t=new ArrayBuffer(e),n=new Uint8Array(t),i=new DataView(t);n.set(this.bytes),this.view=i,this.bytes=n}encodeNil(){this.writeU8(192)}encodeBoolean(e){e===!1?this.writeU8(194):this.writeU8(195)}encodeNumber(e){Number.isSafeInteger(e)&&!this.forceIntegerToFloat?e>=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))}writeStringHeader(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else if(e<4294967296)this.writeU8(219),this.writeU32(e);else throw new Error(`Too long string: ${e} bytes in UTF-8`)}encodeString(e){if(e.length>Yt.TEXT_ENCODER_THRESHOLD){let i=(0,Yt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Yt.utf8EncodeTE)(e,this.bytes,this.pos),this.pos+=i}else{let i=(0,Yt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Yt.utf8EncodeJs)(e,this.bytes,this.pos),this.pos+=i}}encodeObject(e,t){let n=this.extensionCodec.tryToEncode(e,this.context);if(n!=null)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else if(typeof e=="object")this.encodeMap(e,t);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(e)}`)}encodeBinary(e){let t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else if(t<4294967296)this.writeU8(198),this.writeU32(t);else throw new Error(`Too large binary: ${t}`);let n=(0,vd.ensureUint8Array)(e);this.writeU8a(n)}encodeArray(e,t){let n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else if(n<4294967296)this.writeU8(221),this.writeU32(n);else throw new Error(`Too large array: ${n}`);for(let i of e)this.doEncode(i,t+1)}countWithoutUndefined(e,t){let n=0;for(let i of t)e[i]!==void 0&&n++;return n}encodeMap(e,t){let n=Object.keys(e);this.sortKeys&&n.sort();let i=this.ignoreUndefined?this.countWithoutUndefined(e,n):n.length;if(i<16)this.writeU8(128+i);else if(i<65536)this.writeU8(222),this.writeU16(i);else if(i<4294967296)this.writeU8(223),this.writeU32(i);else throw new Error(`Too large map object: ${i}`);for(let s of n){let a=e[s];this.ignoreUndefined&&a===void 0||(this.encodeString(s),this.doEncode(a,t+1))}}encodeExtension(e){let t=e.data.length;if(t===1)this.writeU8(212);else if(t===2)this.writeU8(213);else if(t===4)this.writeU8(214);else if(t===8)this.writeU8(215);else if(t===16)this.writeU8(216);else if(t<256)this.writeU8(199),this.writeU8(t);else if(t<65536)this.writeU8(200),this.writeU16(t);else if(t<4294967296)this.writeU8(201),this.writeU32(t);else throw new Error(`Too large extension object: ${t}`);this.writeI8(e.type),this.writeU8a(e.data)}writeU8(e){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,e),this.pos++}writeU8a(e){let t=e.length;this.ensureBufferSizeToWrite(t),this.bytes.set(e,this.pos),this.pos+=t}writeI8(e){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,e),this.pos++}writeU16(e){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,e),this.pos+=2}writeI16(e){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,e),this.pos+=2}writeU32(e){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,e),this.pos+=4}writeI32(e){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,e),this.pos+=4}writeF32(e){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,e),this.pos+=4}writeF64(e){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,e),this.pos+=8}writeU64(e){this.ensureBufferSizeToWrite(8),(0,Vo.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,Vo.setInt64)(this.view,this.pos,e),this.pos+=8}};Je.Encoder=bi});var Ho=K(Hr=>{"use strict";Object.defineProperty(Hr,"__esModule",{value:!0});Hr.encode=void 0;var _d=vi(),Pd={};function Sd(r,e=Pd){return new _d.Encoder(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat).encodeSharedRef(r)}Hr.encode=Sd});var Wo=K(Wr=>{"use strict";Object.defineProperty(Wr,"__esModule",{value:!0});Wr.prettyByte=void 0;function wd(r){return`${r<0?"-":""}0x${Math.abs(r).toString(16).padStart(2,"0")}`}Wr.prettyByte=wd});var Yo=K(Yr=>{"use strict";Object.defineProperty(Yr,"__esModule",{value:!0});Yr.CachedKeyDecoder=void 0;var Cd=Fr(),Ed=16,Id=16,_i=class{constructor(e=Ed,t=Id){this.maxKeyLength=e,this.maxLengthPerKey=t,this.hit=0,this.miss=0,this.caches=[];for(let n=0;n<this.maxKeyLength;n++)this.caches.push([])}canBeCached(e){return e>0&&e<=this.maxKeyLength}find(e,t,n){let i=this.caches[n-1];e:for(let s of i){let a=s.bytes;for(let f=0;f<n;f++)if(a[f]!==e[t+f])continue e;return s.str}return null}store(e,t){let n=this.caches[e.length-1],i={bytes:e,str:t};n.length>=this.maxLengthPerKey?n[Math.random()*n.length|0]=i:n.push(i)}decode(e,t,n){let i=this.find(e,t,n);if(i!=null)return this.hit++,i;this.miss++;let s=(0,Cd.utf8DecodeJs)(e,t,n),a=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(a,s),s}};Yr.CachedKeyDecoder=_i});var Jr=K(rt=>{"use strict";Object.defineProperty(rt,"__esModule",{value:!0});rt.Decoder=rt.DataViewIndexOutOfBoundsError=void 0;var Pi=Wo(),Td=Vr(),mt=Vt(),Si=Fr(),wi=xi(),kd=Yo(),tt=$r(),Rd=r=>{let e=typeof r;return e==="string"||e==="number"},Jt=-1,Ei=new DataView(new ArrayBuffer(0)),Ad=new Uint8Array(Ei.buffer);rt.DataViewIndexOutOfBoundsError=(()=>{try{Ei.getInt8(0)}catch(r){return r.constructor}throw new Error("never reached")})();var Jo=new rt.DataViewIndexOutOfBoundsError("Insufficient data"),Md=new kd.CachedKeyDecoder,Ci=class{constructor(e=Td.ExtensionCodec.defaultCodec,t=void 0,n=mt.UINT32_MAX,i=mt.UINT32_MAX,s=mt.UINT32_MAX,a=mt.UINT32_MAX,f=mt.UINT32_MAX,l=Md){this.extensionCodec=e,this.context=t,this.maxStrLength=n,this.maxBinLength=i,this.maxArrayLength=s,this.maxMapLength=a,this.maxExtLength=f,this.keyDecoder=l,this.totalPos=0,this.pos=0,this.view=Ei,this.bytes=Ad,this.headByte=Jt,this.stack=[]}reinitializeState(){this.totalPos=0,this.headByte=Jt,this.stack.length=0}setBuffer(e){this.bytes=(0,wi.ensureUint8Array)(e),this.view=(0,wi.createDataView)(this.bytes),this.pos=0}appendBuffer(e){if(this.headByte===Jt&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),n=(0,wi.ensureUint8Array)(e),i=new Uint8Array(t.length+n.length);i.set(t),i.set(n,t.length),this.setBuffer(i)}}hasRemaining(e){return this.view.byteLength-this.pos>=e}createExtraByteError(e){let{view:t,pos:n}=this;return new RangeError(`Extra ${t.byteLength-n} of ${t.byteLength} byte(s) found at buffer[${e}]`)}decode(e){this.reinitializeState(),this.setBuffer(e);let t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t}*decodeMulti(e){for(this.reinitializeState(),this.setBuffer(e);this.hasRemaining(1);)yield this.doDecodeSync()}async decodeAsync(e){let t=!1,n;for await(let f of e){if(t)throw this.createExtraByteError(this.totalPos);this.appendBuffer(f);try{n=this.doDecodeSync(),t=!0}catch(l){if(!(l instanceof rt.DataViewIndexOutOfBoundsError))throw l}this.totalPos+=this.pos}if(t){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return n}let{headByte:i,pos:s,totalPos:a}=this;throw new RangeError(`Insufficient data in parsing ${(0,Pi.prettyByte)(i)} at ${a} (${s} in the current buffer)`)}decodeArrayStream(e){return this.decodeMultiAsync(e,!0)}decodeStream(e){return this.decodeMultiAsync(e,!1)}async*decodeMultiAsync(e,t){let n=t,i=-1;for await(let s of e){if(t&&i===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(i=this.readArraySize(),n=!1,this.complete());try{for(;yield this.doDecodeSync(),--i!==0;);}catch(a){if(!(a instanceof rt.DataViewIndexOutOfBoundsError))throw a}this.totalPos+=this.pos}}doDecodeSync(){e:for(;;){let e=this.readHeadByte(),t;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){let i=e-128;if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e<160){let i=e-144;if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else{let i=e-160;t=this.decodeUtf8String(i,0)}else if(e===192)t=null;else if(e===194)t=!1;else if(e===195)t=!0;else if(e===202)t=this.readF32();else if(e===203)t=this.readF64();else if(e===204)t=this.readU8();else if(e===205)t=this.readU16();else if(e===206)t=this.readU32();else if(e===207)t=this.readU64();else if(e===208)t=this.readI8();else if(e===209)t=this.readI16();else if(e===210)t=this.readI32();else if(e===211)t=this.readI64();else if(e===217){let i=this.lookU8();t=this.decodeUtf8String(i,1)}else if(e===218){let i=this.lookU16();t=this.decodeUtf8String(i,2)}else if(e===219){let i=this.lookU32();t=this.decodeUtf8String(i,4)}else if(e===220){let i=this.readU16();if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else if(e===221){let i=this.readU32();if(i!==0){this.pushArrayState(i),this.complete();continue e}else t=[]}else if(e===222){let i=this.readU16();if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e===223){let i=this.readU32();if(i!==0){this.pushMapState(i),this.complete();continue e}else t={}}else if(e===196){let i=this.lookU8();t=this.decodeBinary(i,1)}else if(e===197){let i=this.lookU16();t=this.decodeBinary(i,2)}else if(e===198){let i=this.lookU32();t=this.decodeBinary(i,4)}else if(e===212)t=this.decodeExtension(1,0);else if(e===213)t=this.decodeExtension(2,0);else if(e===214)t=this.decodeExtension(4,0);else if(e===215)t=this.decodeExtension(8,0);else if(e===216)t=this.decodeExtension(16,0);else if(e===199){let i=this.lookU8();t=this.decodeExtension(i,1)}else if(e===200){let i=this.lookU16();t=this.decodeExtension(i,2)}else if(e===201){let i=this.lookU32();t=this.decodeExtension(i,4)}else throw new tt.DecodeError(`Unrecognized type byte: ${(0,Pi.prettyByte)(e)}`);this.complete();let n=this.stack;for(;n.length>0;){let i=n[n.length-1];if(i.type===0)if(i.array[i.position]=t,i.position++,i.position===i.size)n.pop(),t=i.array;else continue e;else if(i.type===1){if(!Rd(t))throw new tt.DecodeError("The type of key must be string or number but "+typeof t);if(t==="__proto__")throw new tt.DecodeError("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}else if(i.map[i.key]=t,i.readCount++,i.readCount===i.size)n.pop(),t=i.map;else{i.key=null,i.type=1;continue e}}return t}}readHeadByte(){return this.headByte===Jt&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Jt}readArraySize(){let e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:{if(e<160)return e-144;throw new tt.DecodeError(`Unrecognized array type byte: ${(0,Pi.prettyByte)(e)}`)}}}pushMapState(e){if(e>this.maxMapLength)throw new tt.DecodeError(`Max length exceeded: map length (${e}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})}pushArrayState(e){if(e>this.maxArrayLength)throw new tt.DecodeError(`Max length exceeded: array length (${e}) > maxArrayLength (${this.maxArrayLength})`);this.stack.push({type:0,size:e,array:new Array(e),position:0})}decodeUtf8String(e,t){var n;if(e>this.maxStrLength)throw new tt.DecodeError(`Max length exceeded: UTF-8 byte length (${e}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+t+e)throw Jo;let i=this.pos+t,s;return this.stateIsMapKey()&&(!((n=this.keyDecoder)===null||n===void 0)&&n.canBeCached(e))?s=this.keyDecoder.decode(this.bytes,i,e):e>Si.TEXT_DECODER_THRESHOLD?s=(0,Si.utf8DecodeTD)(this.bytes,i,e):s=(0,Si.utf8DecodeJs)(this.bytes,i,e),this.pos+=t+e,s}stateIsMapKey(){return this.stack.length>0?this.stack[this.stack.length-1].type===1:!1}decodeBinary(e,t){if(e>this.maxBinLength)throw new tt.DecodeError(`Max length exceeded: bin length (${e}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(e+t))throw Jo;let n=this.pos+t,i=this.bytes.subarray(n,n+e);return this.pos+=t+e,i}decodeExtension(e,t){if(e>this.maxExtLength)throw new tt.DecodeError(`Max length exceeded: ext length (${e}) > maxExtLength (${this.maxExtLength})`);let n=this.view.getInt8(this.pos+t),i=this.decodeBinary(e,t+1);return this.extensionCodec.decode(i,n,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let e=this.view.getUint8(this.pos);return this.pos++,e}readI8(){let e=this.view.getInt8(this.pos);return this.pos++,e}readU16(){let e=this.view.getUint16(this.pos);return this.pos+=2,e}readI16(){let e=this.view.getInt16(this.pos);return this.pos+=2,e}readU32(){let e=this.view.getUint32(this.pos);return this.pos+=4,e}readI32(){let e=this.view.getInt32(this.pos);return this.pos+=4,e}readU64(){let e=(0,mt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,mt.getInt64)(this.view,this.pos);return this.pos+=8,e}readF32(){let e=this.view.getFloat32(this.pos);return this.pos+=4,e}readF64(){let e=this.view.getFloat64(this.pos);return this.pos+=8,e}};rt.Decoder=Ci});var Ii=K(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.decodeMulti=Xe.decode=Xe.defaultDecodeOptions=void 0;var Xo=Jr();Xe.defaultDecodeOptions={};function Dd(r,e=Xe.defaultDecodeOptions){return new Xo.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decode(r)}Xe.decode=Dd;function Od(r,e=Xe.defaultDecodeOptions){return new Xo.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeMulti(r)}Xe.decodeMulti=Od});var ea=K(at=>{"use strict";Object.defineProperty(at,"__esModule",{value:!0});at.ensureAsyncIterable=at.asyncIterableFromStream=at.isAsyncIterable=void 0;function Zo(r){return r[Symbol.asyncIterator]!=null}at.isAsyncIterable=Zo;function Ud(r){if(r==null)throw new Error("Assertion Failure: value must not be null nor undefined")}async function*Qo(r){let e=r.getReader();try{for(;;){let{done:t,value:n}=await e.read();if(t)return;Ud(n),yield n}}finally{e.releaseLock()}}at.asyncIterableFromStream=Qo;function Bd(r){return Zo(r)?r:Qo(r)}at.ensureAsyncIterable=Bd});var ra=K(Ze=>{"use strict";Object.defineProperty(Ze,"__esModule",{value:!0});Ze.decodeStream=Ze.decodeMultiStream=Ze.decodeArrayStream=Ze.decodeAsync=void 0;var Ti=Jr(),ki=ea(),Xr=Ii();async function Ld(r,e=Xr.defaultDecodeOptions){let t=(0,ki.ensureAsyncIterable)(r);return new Ti.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeAsync(t)}Ze.decodeAsync=Ld;function jd(r,e=Xr.defaultDecodeOptions){let t=(0,ki.ensureAsyncIterable)(r);return new Ti.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeArrayStream(t)}Ze.decodeArrayStream=jd;function ta(r,e=Xr.defaultDecodeOptions){let t=(0,ki.ensureAsyncIterable)(r);return new Ti.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeStream(t)}Ze.decodeMultiStream=ta;function Gd(r,e=Xr.defaultDecodeOptions){return ta(r,e)}Ze.decodeStream=Gd});var sa=K(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.decodeTimestampExtension=te.encodeTimestampExtension=te.decodeTimestampToTimeSpec=te.encodeTimeSpecToTimestamp=te.encodeDateToTimeSpec=te.EXT_TIMESTAMP=te.ExtData=te.ExtensionCodec=te.Encoder=te.DataViewIndexOutOfBoundsError=te.DecodeError=te.Decoder=te.decodeStream=te.decodeMultiStream=te.decodeArrayStream=te.decodeAsync=te.decodeMulti=te.decode=te.encode=void 0;var Fd=Ho();Object.defineProperty(te,"encode",{enumerable:!0,get:function(){return Fd.encode}});var na=Ii();Object.defineProperty(te,"decode",{enumerable:!0,get:function(){return na.decode}});Object.defineProperty(te,"decodeMulti",{enumerable:!0,get:function(){return na.decodeMulti}});var Zr=ra();Object.defineProperty(te,"decodeAsync",{enumerable:!0,get:function(){return Zr.decodeAsync}});Object.defineProperty(te,"decodeArrayStream",{enumerable:!0,get:function(){return Zr.decodeArrayStream}});Object.defineProperty(te,"decodeMultiStream",{enumerable:!0,get:function(){return Zr.decodeMultiStream}});Object.defineProperty(te,"decodeStream",{enumerable:!0,get:function(){return Zr.decodeStream}});var ia=Jr();Object.defineProperty(te,"Decoder",{enumerable:!0,get:function(){return ia.Decoder}});Object.defineProperty(te,"DataViewIndexOutOfBoundsError",{enumerable:!0,get:function(){return ia.DataViewIndexOutOfBoundsError}});var Kd=$r();Object.defineProperty(te,"DecodeError",{enumerable:!0,get:function(){return Kd.DecodeError}});var Nd=vi();Object.defineProperty(te,"Encoder",{enumerable:!0,get:function(){return Nd.Encoder}});var $d=Vr();Object.defineProperty(te,"ExtensionCodec",{enumerable:!0,get:function(){return $d.ExtensionCodec}});var qd=yi();Object.defineProperty(te,"ExtData",{enumerable:!0,get:function(){return qd.ExtData}});var kt=gi();Object.defineProperty(te,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return kt.EXT_TIMESTAMP}});Object.defineProperty(te,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return kt.encodeDateToTimeSpec}});Object.defineProperty(te,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return kt.encodeTimeSpecToTimestamp}});Object.defineProperty(te,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return kt.decodeTimestampToTimeSpec}});Object.defineProperty(te,"encodeTimestampExtension",{enumerable:!0,get:function(){return kt.encodeTimestampExtension}});Object.defineProperty(te,"decodeTimestampExtension",{enumerable:!0,get:function(){return kt.decodeTimestampExtension}})});var qi=K((ph,ze)=>{var Qr=fo(),oa=Uo(),da=Lo(),aa=sa();function zd(r){Object.defineProperty(r,"__esModule",{value:!0,configurable:!0})}function Vd(r,e){return Object.keys(e).forEach(function(t){t==="default"||t==="__esModule"||Object.prototype.hasOwnProperty.call(r,t)||Object.defineProperty(r,t,{enumerable:!0,get:function(){return e[t]}})}),r}function Ae(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}function ca(r){return r&&r.__esModule?r.default:r}zd(ze.exports);Ae(ze.exports,"default",()=>Jd);Ae(ze.exports,"util",()=>Re);Ae(ze.exports,"BufferedConnection",()=>Rt);Ae(ze.exports,"StreamConnection",()=>an);Ae(ze.exports,"MsgPack",()=>rr);Ae(ze.exports,"Peer",()=>tr);Ae(ze.exports,"MsgPackPeer",()=>ji);Ae(ze.exports,"PeerError",()=>nn);var en=class{constructor(){this.chunkedMTU=16300,this._dataCount=1,this.chunk=e=>{let t=[],n=e.byteLength,i=Math.ceil(n/this.chunkedMTU),s=0,a=0;for(;a<n;){let f=Math.min(n,a+this.chunkedMTU),l=e.slice(a,f),p={__peerData:this._dataCount,n:s,data:l,total:i};t.push(p),a=f,s++}return this._dataCount++,t}}};function Hd(r){let e=0;for(let i of r)e+=i.byteLength;let t=new Uint8Array(e),n=0;for(let i of r)t.set(i,n),n+=i.byteLength;return t}var Ri=ca(oa).default||ca(oa),Xt=new class{isWebRTCSupported(){return typeof RTCPeerConnection<"u"}isBrowserSupported(){let r=this.getBrowser(),e=this.getVersion();return this.supportedBrowsers.includes(r)?r==="chrome"?e>=this.minChromeVersion:r==="firefox"?e>=this.minFirefoxVersion:r==="safari"?!this.isIOS&&e>=this.minSafariVersion:!1:!1}getBrowser(){return Ri.browserDetails.browser}getVersion(){return Ri.browserDetails.version||0}isUnifiedPlanSupported(){let r=this.getBrowser(),e=Ri.browserDetails.version||0;if(r==="chrome"&&e<this.minChromeVersion)return!1;if(r==="firefox"&&e>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let t,n=!1;try{t=new RTCPeerConnection,t.addTransceiver("audio"),n=!0}catch{}finally{t&&t.close()}return n}toString(){return`Supports:
37
37
  browser:${this.getBrowser()}
38
38
  version:${this.getVersion()}
39
39
  isIOS:${this.isIOS}
40
40
  isWebRTCSupported:${this.isWebRTCSupported()}
41
41
  isBrowserSupported:${this.isBrowserSupported()}
42
- isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`}constructor(){this.isIOS=typeof navigator<"u"?["iPad","iPhone","iPod"].includes(navigator.platform):!1,this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}},qd=n=>!n||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(n),da=()=>Math.random().toString(36).slice(2),ca={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},Ri=class extends Qr{noop(){}blobToArrayBuffer(e,t){let r=new FileReader;return r.onload=function(i){i.target&&t(i.target.result)},r.readAsArrayBuffer(e),r}binaryStringToArrayBuffer(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++)t[r]=e.charCodeAt(r)&255;return t.buffer}isSecure(){return location.protocol==="https:"}constructor(...e){super(...e),this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.defaultConfig=ca,this.browser=Jt.getBrowser(),this.browserVersion=Jt.getVersion(),this.pack=Zr.pack,this.unpack=Zr.unpack,this.supports=(function(){let t={browser:Jt.isBrowserSupported(),webRTC:Jt.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!t.webRTC)return t;let r;try{r=new RTCPeerConnection(ca),t.audioVideo=!0;let i;try{i=r.createDataChannel("_PEERJSTEST",{ordered:!0}),t.data=!0,t.reliable=!!i.ordered;try{i.binaryType="blob",t.binaryBlob=!Jt.isIOS}catch{}}catch{}finally{i&&i.close()}}catch{}finally{r&&r.close()}return t})(),this.validateId=qd,this.randomToken=da}},Re=new Ri,$d="PeerJS: ",Ai=class{get logLevel(){return this._logLevel}set logLevel(e){this._logLevel=e}log(...e){this._logLevel>=3&&this._print(3,...e)}warn(...e){this._logLevel>=2&&this._print(2,...e)}error(...e){this._logLevel>=1&&this._print(1,...e)}setLogFunction(e){this._print=e}_print(e,...t){let r=[$d,...t];for(let i in r)r[i]instanceof Error&&(r[i]="("+r[i].name+") "+r[i].message);e>=3?console.log(...r):e>=2?console.warn("WARNING",...r):e>=1&&console.error("ERROR",...r)}constructor(){this._logLevel=0}},B=new Ai,ft={};Ae(ft,"ConnectionType",()=>ct);Ae(ft,"PeerErrorType",()=>ve);Ae(ft,"BaseConnectionErrorType",()=>Mi);Ae(ft,"DataConnectionErrorType",()=>Ni);Ae(ft,"SerializationType",()=>an);Ae(ft,"SocketEventType",()=>at);Ae(ft,"ServerMessageType",()=>Te);var ct=(function(n){return n.Data="data",n.Media="media",n})({}),ve=(function(n){return n.BrowserIncompatible="browser-incompatible",n.Disconnected="disconnected",n.InvalidID="invalid-id",n.InvalidKey="invalid-key",n.Network="network",n.PeerUnavailable="peer-unavailable",n.SslUnavailable="ssl-unavailable",n.ServerError="server-error",n.SocketError="socket-error",n.SocketClosed="socket-closed",n.UnavailableID="unavailable-id",n.WebRTC="webrtc",n})({}),Mi=(function(n){return n.NegotiationFailed="negotiation-failed",n.ConnectionClosed="connection-closed",n})({}),Ni=(function(n){return n.NotOpenYet="not-open-yet",n.MessageToBig="message-too-big",n})({}),an=(function(n){return n.Binary="binary",n.BinaryUTF8="binary-utf8",n.JSON="json",n.None="raw",n})({}),at=(function(n){return n.Message="message",n.Disconnected="disconnected",n.Error="error",n.Close="close",n})({}),Te=(function(n){return n.Heartbeat="HEARTBEAT",n.Candidate="CANDIDATE",n.Offer="OFFER",n.Answer="ANSWER",n.Open="OPEN",n.Error="ERROR",n.IdTaken="ID-TAKEN",n.InvalidKey="INVALID-KEY",n.Leave="LEAVE",n.Expire="EXPIRE",n})({}),ua="1.5.5",Di=class extends fa.EventEmitter{constructor(e,t,r,i,s,a=5e3){super(),this.pingInterval=a,this._disconnected=!0,this._messagesQueue=[];let f=e?"wss://":"ws://";this._baseUrl=f+t+":"+r+i+"peerjs?key="+s}start(e,t){this._id=e;let r=`${this._baseUrl}&id=${e}&token=${t}`;this._socket||!this._disconnected||(this._socket=new WebSocket(r+"&version="+ua),this._disconnected=!1,this._socket.onmessage=i=>{let s;try{s=JSON.parse(i.data),B.log("Server message received:",s)}catch{B.log("Invalid server message",i.data);return}this.emit(at.Message,s)},this._socket.onclose=i=>{this._disconnected||(B.log("Socket closed.",i),this._cleanup(),this._disconnected=!0,this.emit(at.Disconnected))},this._socket.onopen=()=>{this._disconnected||(this._sendQueuedMessages(),B.log("Socket open"),this._scheduleHeartbeat())})}_scheduleHeartbeat(){this._wsPingTimer=setTimeout(()=>{this._sendHeartbeat()},this.pingInterval)}_sendHeartbeat(){if(!this._wsOpen()){B.log("Cannot send heartbeat, because socket closed");return}let e=JSON.stringify({type:Te.Heartbeat});this._socket.send(e),this._scheduleHeartbeat()}_wsOpen(){return!!this._socket&&this._socket.readyState===1}_sendQueuedMessages(){let e=[...this._messagesQueue];this._messagesQueue=[];for(let t of e)this.send(t)}send(e){if(this._disconnected)return;if(!this._id){this._messagesQueue.push(e);return}if(!e.type){this.emit(at.Error,"Invalid message");return}if(!this._wsOpen())return;let t=JSON.stringify(e);this._socket.send(t)}close(){this._disconnected||(this._cleanup(),this._disconnected=!0)}_cleanup(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)}},en=class{constructor(e){this.connection=e}startConnection(e){let t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===ct.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){let r=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(r.label,i);r._initializeDataChannel(s),this._makeOffer()}else this.handleSDP("OFFER",e.sdp)}_startPeerConnection(){B.log("Creating RTCPeerConnection.");let e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e}_setupListeners(e){let t=this.connection.peer,r=this.connection.connectionId,i=this.connection.type,s=this.connection.provider;B.log("Listening for ICE candidates."),e.onicecandidate=a=>{!a.candidate||!a.candidate.candidate||(B.log(`Received ICE candidates for ${t}:`,a.candidate),s.socket.send({type:Te.Candidate,payload:{candidate:a.candidate,type:i,connectionId:r},dst:t}))},e.oniceconnectionstatechange=()=>{switch(e.iceConnectionState){case"failed":B.log("iceConnectionState is failed, closing connections to "+t),this.connection.emitError(Mi.NegotiationFailed,"Negotiation of connection to "+t+" failed."),this.connection.close();break;case"closed":B.log("iceConnectionState is closed, closing connections to "+t),this.connection.emitError(Mi.ConnectionClosed,"Connection to "+t+" closed."),this.connection.close();break;case"disconnected":B.log("iceConnectionState changed to disconnected on the connection with "+t);break;case"completed":e.onicecandidate=()=>{};break}this.connection.emit("iceStateChanged",e.iceConnectionState)},B.log("Listening for data channel"),e.ondatachannel=a=>{B.log("Received data channel");let f=a.channel;s.getConnection(t,r)._initializeDataChannel(f)},B.log("Listening for remote stream"),e.ontrack=a=>{B.log("Received remote stream");let f=a.streams[0],l=s.getConnection(t,r);if(l.type===ct.Media){let p=l;this._addStreamToMediaConnection(f,p)}}}cleanup(){B.log("Cleaning up PeerConnection to "+this.connection.peer);let e=this.connection.peerConnection;if(!e)return;this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=()=>{};let t=e.signalingState!=="closed",r=!1,i=this.connection.dataChannel;i&&(r=!!i.readyState&&i.readyState!=="closed"),(t||r)&&e.close()}async _makeOffer(){let e=this.connection.peerConnection,t=this.connection.provider;try{let r=await e.createOffer(this.connection.options.constraints);B.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(r.sdp=this.connection.options.sdpTransform(r.sdp)||r.sdp);try{await e.setLocalDescription(r),B.log("Set localDescription:",r,`for:${this.connection.peer}`);let i={sdp:r,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata};if(this.connection.type===ct.Data){let s=this.connection;i={...i,label:s.label,reliable:s.reliable,serialization:s.serialization}}t.socket.send({type:Te.Offer,payload:i,dst:this.connection.peer})}catch(i){i!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(ve.WebRTC,i),B.log("Failed to setLocalDescription, ",i))}}catch(r){t.emitError(ve.WebRTC,r),B.log("Failed to createOffer, ",r)}}async _makeAnswer(){let e=this.connection.peerConnection,t=this.connection.provider;try{let r=await e.createAnswer();B.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(r.sdp=this.connection.options.sdpTransform(r.sdp)||r.sdp);try{await e.setLocalDescription(r),B.log("Set localDescription:",r,`for:${this.connection.peer}`),t.socket.send({type:Te.Answer,payload:{sdp:r,type:this.connection.type,connectionId:this.connection.connectionId},dst:this.connection.peer})}catch(i){t.emitError(ve.WebRTC,i),B.log("Failed to setLocalDescription, ",i)}}catch(r){t.emitError(ve.WebRTC,r),B.log("Failed to create answer, ",r)}}async handleSDP(e,t){t=new RTCSessionDescription(t);let r=this.connection.peerConnection,i=this.connection.provider;B.log("Setting remote description",t);let s=this;try{await r.setRemoteDescription(t),B.log(`Set remoteDescription:${e} for:${this.connection.peer}`),e==="OFFER"&&await s._makeAnswer()}catch(a){i.emitError(ve.WebRTC,a),B.log("Failed to setRemoteDescription, ",a)}}async handleCandidate(e){B.log("handleCandidate:",e);try{await this.connection.peerConnection.addIceCandidate(e),B.log(`Added ICE candidate for:${this.connection.peer}`)}catch(t){this.connection.provider.emitError(ve.WebRTC,t),B.log("Failed to handleCandidate, ",t)}}_addTracksToConnection(e,t){if(B.log(`add tracks from stream ${e.id} to peer connection`),!t.addTrack)return B.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(r=>{t.addTrack(r,e)})}_addStreamToMediaConnection(e,t){B.log(`add stream ${e.id} to media connection ${t.connectionId}`),t.addStream(e)}},tn=class extends fa.EventEmitter{emitError(e,t){B.error("Error:",t),this.emit("error",new rn(`${e}`,t))}},rn=class extends Error{constructor(e,t){typeof t=="string"?super(t):(super(),Object.assign(this,t)),this.type=e}},nn=class extends tn{get open(){return this._open}constructor(e,t,r){super(),this.peer=e,this.provider=t,this.options=r,this._open=!1,this.metadata=r.metadata}},ji,Zt=class Zt extends nn{get type(){return ct.Media}get localStream(){return this._localStream}get remoteStream(){return this._remoteStream}constructor(e,t,r){super(e,t,r),this._localStream=this.options._stream,this.connectionId=this.options.connectionId||Zt.ID_PREFIX+Re.randomToken(),this._negotiator=new en(this),this._localStream&&this._negotiator.startConnection({_stream:this._localStream,originator:!0})}_initializeDataChannel(e){this.dataChannel=e,this.dataChannel.onopen=()=>{B.log(`DC#${this.connectionId} dc connection success`),this.emit("willCloseOnRemote")},this.dataChannel.onclose=()=>{B.log(`DC#${this.connectionId} dc closed for:`,this.peer),this.close()}}addStream(e){B.log("Receiving stream",e),this._remoteStream=e,super.emit("stream",e)}handleMessage(e){let t=e.type,r=e.payload;switch(e.type){case Te.Answer:this._negotiator.handleSDP(t,r.sdp),this._open=!0;break;case Te.Candidate:this._negotiator.handleCandidate(r.candidate);break;default:B.warn(`Unrecognized message type:${t} from peer:${this.peer}`);break}}answer(e,t={}){if(this._localStream){B.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=e,t&&t.sdpTransform&&(this.options.sdpTransform=t.sdpTransform),this._negotiator.startConnection({...this.options._payload,_stream:e});let r=this.provider._getMessages(this.connectionId);for(let i of r)this.handleMessage(i);this._open=!0}close(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,super.emit("close"))}};ji=new WeakMap,Ot(Zt,ji,Zt.ID_PREFIX="mc_");var sn=Zt,Oi=class{constructor(e){this._options=e}_buildRequest(e){let t=this._options.secure?"https":"http",{host:r,port:i,path:s,key:a}=this._options,f=new URL(`${t}://${r}:${i}${s}${a}/${e}`);return f.searchParams.set("ts",`${Date.now()}${Math.random()}`),f.searchParams.set("version",ua),fetch(f.href,{referrerPolicy:this._options.referrerPolicy})}async retrieveId(){try{let e=await this._buildRequest("id");if(e.status!==200)throw new Error(`Error. Status:${e.status}`);return e.text()}catch(e){B.error("Error retrieving ID",e);let t="";throw this._options.path==="/"&&this._options.host!==Re.CLOUD_HOST&&(t=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+t)}}async listAllPeers(){try{let e=await this._buildRequest("peers");if(e.status!==200){if(e.status===401){let t="";throw this._options.host===Re.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)}throw new Error(`Error. Status:${e.status}`)}return e.json()}catch(e){throw B.error("Error retrieving list peers",e),new Error("Could not get list peers from the server."+e)}}},Gi,Ki,gt=class gt extends nn{get type(){return ct.Data}constructor(e,t,r){super(e,t,r),this.connectionId=this.options.connectionId||gt.ID_PREFIX+da(),this.label=this.options.label||this.connectionId,this.reliable=!!this.options.reliable,this._negotiator=new en(this),this._negotiator.startConnection(this.options._payload||{originator:!0,reliable:this.reliable})}_initializeDataChannel(e){this.dataChannel=e,this.dataChannel.onopen=()=>{B.log(`DC#${this.connectionId} dc connection success`),this._open=!0,this.emit("open")},this.dataChannel.onmessage=t=>{B.log(`DC#${this.connectionId} dc onmessage:`,t.data)},this.dataChannel.onclose=()=>{B.log(`DC#${this.connectionId} dc closed for:`,this.peer),this.close()}}close(e){if(e?.flush){this.send({__peerData:{type:"close"}});return}this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this.dataChannel=null),this.open&&(this._open=!1,super.emit("close"))}send(e,t=!1){if(!this.open){this.emitError(Ni.NotOpenYet,"Connection is not open. You should listen for the `open` event before sending messages.");return}return this._send(e,t)}async handleMessage(e){let t=e.payload;switch(e.type){case Te.Answer:await this._negotiator.handleSDP(e.type,t.sdp);break;case Te.Candidate:await this._negotiator.handleCandidate(t.candidate);break;default:B.warn("Unrecognized message type:",e.type,"from peer:",this.peer);break}}};Gi=new WeakMap,Ki=new WeakMap,Ot(gt,Gi,gt.ID_PREFIX="dc_"),Ot(gt,Ki,gt.MAX_BUFFERED_AMOUNT=8388608);var mt=gt,kt=class extends mt{get bufferSize(){return this._bufferSize}_initializeDataChannel(e){super._initializeDataChannel(e),this.dataChannel.binaryType="arraybuffer",this.dataChannel.addEventListener("message",t=>this._handleDataMessage(t))}_bufferedSend(e){(this._buffering||!this._trySend(e))&&(this._buffer.push(e),this._bufferSize=this._buffer.length)}_trySend(e){if(!this.open)return!1;if(this.dataChannel.bufferedAmount>mt.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(()=>{this._buffering=!1,this._tryBuffer()},50),!1;try{this.dataChannel.send(e)}catch(t){return B.error(`DC#:${this.connectionId} Error when sending:`,t),this._buffering=!0,this.close(),!1}return!0}_tryBuffer(){if(!this.open||this._buffer.length===0)return;let e=this._buffer[0];this._trySend(e)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}close(e){if(e?.flush){this.send({__peerData:{type:"close"}});return}this._buffer=[],this._bufferSize=0,super.close()}constructor(...e){super(...e),this._buffer=[],this._bufferSize=0,this._buffering=!1}},Xt=class extends kt{close(e){super.close(e),this._chunkedData={}}constructor(e,t,r){super(e,t,r),this.chunker=new Qr,this.serialization=an.Binary,this._chunkedData={}}_handleDataMessage({data:e}){let t=(0,Zr.unpack)(e),r=t.__peerData;if(r){if(r.type==="close"){this.close();return}this._handleChunk(t);return}this.emit("data",t)}_handleChunk(e){let t=e.__peerData,r=this._chunkedData[t]||{data:[],count:0,total:e.total};if(r.data[e.n]=new Uint8Array(e.data),r.count++,this._chunkedData[t]=r,r.total===r.count){delete this._chunkedData[t];let i=zd(r.data);this._handleDataMessage({data:i})}}_send(e,t){let r=(0,Zr.pack)(e);if(r instanceof Promise)return this._send_blob(r);if(!t&&r.byteLength>this.chunker.chunkedMTU){this._sendChunks(r);return}this._bufferedSend(r)}async _send_blob(e){let t=await e;if(t.byteLength>this.chunker.chunkedMTU){this._sendChunks(t);return}this._bufferedSend(t)}_sendChunks(e){let t=this.chunker.chunk(e);B.log(`DC#${this.connectionId} Try to send ${t.length} chunks...`);for(let r of t)this.send(r,!0)}},Ui=class extends kt{_handleDataMessage({data:e}){super.emit("data",e)}_send(e,t){this._bufferedSend(e)}constructor(...e){super(...e),this.serialization=an.None}},Bi=class extends kt{_handleDataMessage({data:e}){let t=this.parse(this.decoder.decode(e)),r=t.__peerData;if(r&&r.type==="close"){this.close();return}this.emit("data",t)}_send(e,t){let r=this.encoder.encode(this.stringify(e));if(r.byteLength>=Re.chunkedMTU){this.emitError(Ni.MessageToBig,"Message too big for JSON channel");return}this._bufferedSend(r)}constructor(...e){super(...e),this.serialization=an.JSON,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.stringify=JSON.stringify,this.parse=JSON.parse}},Fi,Qt=class Qt extends tn{get id(){return this._id}get options(){return this._options}get open(){return this._open}get socket(){return this._socket}get connections(){let e=Object.create(null);for(let[t,r]of this._connections)e[t]=r;return e}get destroyed(){return this._destroyed}get disconnected(){return this._disconnected}constructor(e,t){super(),this._serializers={raw:Ui,json:Bi,binary:Xt,"binary-utf8":Xt,default:Xt},this._id=null,this._lastServerId=null,this._destroyed=!1,this._disconnected=!1,this._open=!1,this._connections=new Map,this._lostMessages=new Map;let r;if(e&&e.constructor==Object?t=e:e&&(r=e.toString()),t={debug:0,host:Re.CLOUD_HOST,port:Re.CLOUD_PORT,path:"/",key:Qt.DEFAULT_KEY,token:Re.randomToken(),config:Re.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin",serializers:{},...t},this._options=t,this._serializers={...this._serializers,...this.options.serializers},this._options.host==="/"&&(this._options.host=window.location.hostname),this._options.path&&(this._options.path[0]!=="/"&&(this._options.path="/"+this._options.path),this._options.path[this._options.path.length-1]!=="/"&&(this._options.path+="/")),this._options.secure===void 0&&this._options.host!==Re.CLOUD_HOST?this._options.secure=Re.isSecure():this._options.host==Re.CLOUD_HOST&&(this._options.secure=!0),this._options.logFunction&&B.setLogFunction(this._options.logFunction),B.logLevel=this._options.debug||0,this._api=new Oi(t),this._socket=this._createServerConnection(),!Re.supports.audioVideo&&!Re.supports.data){this._delayedAbort(ve.BrowserIncompatible,"The current browser does not support WebRTC");return}if(r&&!Re.validateId(r)){this._delayedAbort(ve.InvalidID,`ID "${r}" is invalid`);return}r?this._initialize(r):this._api.retrieveId().then(i=>this._initialize(i)).catch(i=>this._abort(ve.ServerError,i))}_createServerConnection(){let e=new Di(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return e.on(at.Message,t=>{this._handleMessage(t)}),e.on(at.Error,t=>{this._abort(ve.SocketError,t)}),e.on(at.Disconnected,()=>{this.disconnected||(this.emitError(ve.Network,"Lost connection to server."),this.disconnect())}),e.on(at.Close,()=>{this.disconnected||this._abort(ve.SocketClosed,"Underlying socket is already closed.")}),e}_initialize(e){this._id=e,this.socket.start(e,this._options.token)}_handleMessage(e){let t=e.type,r=e.payload,i=e.src;switch(t){case Te.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Te.Error:this._abort(ve.ServerError,r.msg);break;case Te.IdTaken:this._abort(ve.UnavailableID,`ID "${this.id}" is taken`);break;case Te.InvalidKey:this._abort(ve.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case Te.Leave:B.log(`Received leave message from ${i}`),this._cleanupPeer(i),this._connections.delete(i);break;case Te.Expire:this.emitError(ve.PeerUnavailable,`Could not connect to peer ${i}`);break;case Te.Offer:{let s=r.connectionId,a=this.getConnection(i,s);if(a&&(a.close(),B.warn(`Offer received for existing Connection ID:${s}`)),r.type===ct.Media){let l=new sn(i,this,{connectionId:s,_payload:r,metadata:r.metadata});a=l,this._addConnection(i,a),this.emit("call",l)}else if(r.type===ct.Data){let l=new this._serializers[r.serialization](i,this,{connectionId:s,_payload:r,metadata:r.metadata,label:r.label,serialization:r.serialization,reliable:r.reliable});a=l,this._addConnection(i,a),this.emit("connection",l)}else{B.warn(`Received malformed connection type:${r.type}`);return}let f=this._getMessages(s);for(let l of f)a.handleMessage(l);break}default:{if(!r){B.warn(`You received a malformed message from ${i} of type ${t}`);return}let s=r.connectionId,a=this.getConnection(i,s);a&&a.peerConnection?a.handleMessage(e):s?this._storeMessage(s,e):B.warn("You received an unrecognized message:",e);break}}}_storeMessage(e,t){this._lostMessages.has(e)||this._lostMessages.set(e,[]),this._lostMessages.get(e).push(t)}_getMessages(e){let t=this._lostMessages.get(e);return t?(this._lostMessages.delete(e),t):[]}connect(e,t={}){if(t={serialization:"default",...t},this.disconnected){B.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(ve.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}let r=new this._serializers[t.serialization](e,this,t);return this._addConnection(e,r),r}call(e,t,r={}){if(this.disconnected){B.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(ve.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!t){B.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}let i=new sn(e,this,{...r,_stream:t});return this._addConnection(e,i),i}_addConnection(e,t){B.log(`add connection ${t.type}:${t.connectionId} to peerId:${e}`),this._connections.has(e)||this._connections.set(e,[]),this._connections.get(e).push(t)}_removeConnection(e){let t=this._connections.get(e.peer);if(t){let r=t.indexOf(e);r!==-1&&t.splice(r,1)}this._lostMessages.delete(e.connectionId)}getConnection(e,t){let r=this._connections.get(e);if(!r)return null;for(let i of r)if(i.connectionId===t)return i;return null}_delayedAbort(e,t){setTimeout(()=>{this._abort(e,t)},0)}_abort(e,t){B.error("Aborting!"),this.emitError(e,t),this._lastServerId?this.disconnect():this.destroy()}destroy(){this.destroyed||(B.log(`Destroy peer with ID:${this.id}`),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))}_cleanup(){for(let e of this._connections.keys())this._cleanupPeer(e),this._connections.delete(e);this.socket.removeAllListeners()}_cleanupPeer(e){let t=this._connections.get(e);if(t)for(let r of t)r.close()}disconnect(){if(this.disconnected)return;let e=this.id;B.log(`Disconnect peer with ID:${e}`),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=e,this._id=null,this.emit("disconnected",e)}reconnect(){if(this.disconnected&&!this.destroyed)B.log(`Attempting reconnection to server with ID ${this._lastServerId}`),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)B.error("In a hurry? We're still trying to make the initial connection!");else throw new Error(`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`)}}listAllPeers(e=t=>{}){this._api.listAllPeers().then(t=>e(t)).catch(t=>this._abort(ve.ServerError,t))}};Fi=new WeakMap,Ot(Qt,Fi,Qt.DEFAULT_KEY="peerjs");var er=Qt,on=class extends mt{constructor(e,t,r){super(e,t,{...r,reliable:!0}),this._CHUNK_SIZE=32768,this._splitStream=new TransformStream({transform:(i,s)=>{for(let a=0;a<i.length;a+=this._CHUNK_SIZE)s.enqueue(i.subarray(a,a+this._CHUNK_SIZE))}}),this._rawSendStream=new WritableStream({write:async(i,s)=>{let a=new Promise(f=>this.dataChannel.addEventListener("bufferedamountlow",f,{once:!0}));await(this.dataChannel.bufferedAmount<=mt.MAX_BUFFERED_AMOUNT-i.byteLength||a);try{this.dataChannel.send(i)}catch(f){B.error(`DC#:${this.connectionId} Error when sending:`,f),s.error(f),this.close()}}}),this.writer=this._splitStream.writable.getWriter(),this._rawReadStream=new ReadableStream({start:i=>{this.once("open",()=>{this.dataChannel.addEventListener("message",s=>{i.enqueue(s.data)})})}}),this._splitStream.readable.pipeTo(this._rawSendStream)}_initializeDataChannel(e){super._initializeDataChannel(e),this.dataChannel.binaryType="arraybuffer",this.dataChannel.bufferedAmountLowThreshold=mt.MAX_BUFFERED_AMOUNT/2}},tr=class extends on{constructor(e,t,r){super(e,t,r),this.serialization="MsgPack",this._encoder=new oa.Encoder,(async()=>{for await(let i of(0,oa.decodeMultiStream)(this._rawReadStream)){if(i.__peerData?.type==="close"){this.close();return}this.emit("data",i)}})()}_send(e){return this.writer.write(this._encoder.encode(e))}},Li=class extends er{constructor(...e){super(...e),this._serializers={MsgPack:tr,default:tr}}},Hd=er;Nd($e.exports,ft)});var $i=F((sh,la)=>{var Vd=Ar(),Wd=Mr(),qi=class{constructor({id:e,url:t,PeerImpl:r,WebSocketImpl:i,priority:s=0,connectTimeoutMs:a=1e4}){if(!t)throw new Error("PeerJS signaling provider requires a url");this.id=e||t,this.url=t,this.priority=s,this.isCustomPeerImpl=!!r,this.PeerImpl=r||this.resolvePeerImplementation(),this.WebSocketImpl=i,this.connectTimeoutMs=a,this.peer=null,this.peerId=null,this.connections=new Map,this.messageHandlers=new Set,this.fallbackProvider=null}resolvePeerImplementation(){try{let e=zi();return e.Peer||e}catch{return null}}parsePeerJsServerUrl(){return Wd(this.url)}shouldUseWebSocketFallback(){return!this.isCustomPeerImpl&&typeof globalThis.RTCPeerConnection!="function"}useWebSocketFallback(){return this.fallbackProvider||(this.fallbackProvider=new Vd({id:`${this.id}-ws-fallback`,url:this.url,WebSocketImpl:this.WebSocketImpl,priority:this.priority})),this.fallbackProvider}async connect(){if(this.shouldUseWebSocketFallback()){await this.useWebSocketFallback().connect();return}if(!this.PeerImpl)throw new Error("PeerJS implementation is not available");let e=this.parsePeerJsServerUrl(),t=`dignityjs_${Math.random().toString(36).slice(2,12)}`;await new Promise((r,i)=>{let s=new this.PeerImpl(t,{host:e.host,port:e.port,path:e.path,secure:e.secure,key:e.key}),a=setTimeout(()=>{i(new Error(`Unable to connect to signaling url ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(a),this.peer=s,this.peerId=t,r()}),s.on("connection",f=>{this.attachConnectionHandlers(f)}),s.on("error",async f=>{if(clearTimeout(a),f&&f.type==="browser-incompatible")try{await this.useWebSocketFallback().connect(),r();return}catch{i(new Error(`Unable to connect to signaling url ${this.url}`));return}i(new Error(`Unable to connect to signaling url ${this.url}`))})})}attachConnectionHandlers(e){let t=e.peer;this.connections.set(t,e),e.on("data",r=>{for(let i of this.messageHandlers)i(r)}),e.on("close",()=>{this.connections.delete(t)})}async openConnection(e){if(!this.peer)throw new Error("PeerJS is not connected");let t=this.connections.get(e);return t&&t.open?t:await new Promise((r,i)=>{let s=this.peer.connect(e,{reliable:!0,serialization:"json"}),a=setTimeout(()=>{i(new Error(`Unable to connect peer ${e} via ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(a),this.attachConnectionHandlers(s),r(s)}),s.on("error",()=>{clearTimeout(a),i(new Error(`Unable to connect peer ${e} via ${this.url}`))})})}onMessage(e){if(this.fallbackProvider){this.fallbackProvider.onMessage(e);return}this.messageHandlers.add(e)}async send(e){if(this.fallbackProvider){await this.fallbackProvider.send(e);return}if(!this.peer)throw new Error(`Signaling socket is not open for ${this.url}`);if(e&&e.to){(await this.openConnection(e.to)).send(e);return}for(let t of this.connections.values())t.open&&t.send(e)}async disconnect(){if(this.fallbackProvider){await this.fallbackProvider.disconnect(),this.fallbackProvider=null;return}for(let e of this.connections.values())typeof e.close=="function"&&e.close();this.connections.clear(),this.peer&&typeof this.peer.destroy=="function"&&this.peer.destroy(),this.peer=null,this.peerId=null}};la.exports=qi});var cn=F((oh,ha)=>{var Yd=["wss://peerjs.92k.de/peerjs?key=peerjs","wss://0.peerjs.com/peerjs?key=peerjs"],Jd=["wss://relay.dignity.dev/signaling","wss://backup-relay.dignity.dev/signaling"];ha.exports={DEFAULT_CLOUDFLARE_SIGNALING_URLS:Yd,DEFAULT_SIGNALING_FALLBACK_URLS:Jd}});var ga=F((ah,ya)=>{var Xd=Yn(),pa=Ar(),Zd=$i(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:Qd,DEFAULT_SIGNALING_FALLBACK_URLS:eu}=cn();function tu(n={}){let e=n.cloudflareUrls||Qd,t=n.fallbackUrls||eu,r=n.WebSocketImpl,i=[];return e.forEach((s,a)=>{let l=/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(s)?Zd:pa;i.push(new l({id:`cloudflare-${a+1}`,url:s,WebSocketImpl:r,priority:a}))}),t.forEach((s,a)=>{i.push(new pa({id:`fallback-${a+1}`,url:s,WebSocketImpl:r,priority:e.length+a}))}),Array.isArray(n.customProviders)&&i.push(...n.customProviders),new Xd(i)}ya.exports=tu});var xa=F((ch,ma)=>{var Hi=class{constructor(){this.adapters=new Map}register(e){this.adapters.set(e.nodeId,e)}unregister(e){this.adapters.delete(e)}async broadcast(e,t){let r=[];for(let[i,s]of this.adapters.entries())i!==e&&r.push(s.receive(t));await Promise.all(r)}async sendToPeers(e,t,r=[]){let i=new Set((r||[]).filter(a=>a&&a!==e)),s=[];for(let[a,f]of this.adapters.entries())a!==e&&i.has(a)&&s.push(f.receive(t));await Promise.all(s)}},Vi=class{constructor(e){if(!e)throw new Error("InMemoryNetworkAdapter requires an InMemoryNetworkHub");this.hub=e,this.nodeId=null,this.messageHandlers=new Set,this.connectedPeers=new Set}async start(e){this.nodeId=e,this.hub.register(this)}async stop(){this.nodeId&&this.hub.unregister(this.nodeId),this.nodeId=null,this.connectedPeers.clear()}async connectToPeer(e){!e||e===this.nodeId||this.connectedPeers.add(e)}async broadcast(e){if(!this.nodeId)throw new Error("Network adapter has not been started");await this.hub.broadcast(this.nodeId,e)}async sendToPeers(e,t=[]){if(!this.nodeId)throw new Error("Network adapter has not been started");await this.hub.sendToPeers(this.nodeId,e,t)}listOpenPeerIds(){return[...this.connectedPeers]}getOpenConnectionCount(){return this.connectedPeers.size}isConnectedTo(e){return this.connectedPeers.has(e)}onMessage(e){this.messageHandlers.add(e)}offMessage(e){this.messageHandlers.delete(e)}async receive(e){let t=[];for(let r of this.messageHandlers)t.push(r(e));await Promise.all(t)}};ma.exports={InMemoryNetworkHub:Hi,InMemoryNetworkAdapter:Vi}});var _a=F((fh,va)=>{var{DEFAULT_CLOUDFLARE_SIGNALING_URLS:ru}=cn(),ba=Mr();function nu(n){if(n)return n;try{let e=zi();return e.Peer||e}catch{return null}}var fn=class{constructor({url:e,urls:t,PeerImpl:r,connectTimeoutMs:i=12e3}={}){this.urls=t||(e?[e]:[...ru]),this.url=this.urls[0],this.PeerImpl=nu(r),this.connectTimeoutMs=i,this.nodeId=null,this.peer=null,this.connections=new Map,this.pendingConnections=new Map,this.messageHandlers=new Set}async start(e){if(!e)throw new Error("PeerJSNetworkAdapter requires nodeId on start");if(!this.PeerImpl)throw new Error("PeerJS implementation is not available");this.peer&&await this.stop();let t;for(let r of this.urls)try{await this.startWithUrl(e,r),this.url=r;return}catch(i){t=i}throw t||new Error("Unable to connect PeerJS network adapter")}async startWithUrl(e,t){this.nodeId=e;let r=ba(t);await new Promise((i,s)=>{let a=new this.PeerImpl(e,{host:r.host,port:r.port,path:r.path,secure:r.secure,key:r.key}),f=setTimeout(()=>{a.destroy?.(),s(new Error(`Unable to connect PeerJS network adapter to ${t}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(f),this.peer=a,i()}),a.on("connection",l=>{this.attachConnectionHandlers(l)}),a.on("error",l=>{clearTimeout(f),a.destroy?.(),s(l||new Error(`Unable to connect PeerJS network adapter to ${t}`))})})}attachConnectionHandlers(e){let t=e.peer;t&&(this.connections.set(t,e),e.on("data",r=>{let i=[];for(let s of this.messageHandlers)i.push(s(r));return Promise.all(i)}),e.on("close",()=>{this.connections.delete(t)}))}async connectToPeer(e){if(!e||e===this.nodeId)return null;let t=this.connections.get(e);if(t&&t.open)return t;if(this.pendingConnections.has(e))return this.pendingConnections.get(e);if(!this.peer)throw new Error("PeerJS network adapter has not been started");let r=new Promise((i,s)=>{let a=this.peer.connect(e,{reliable:!0,serialization:"json"}),f=setTimeout(()=>{s(new Error(`Unable to connect to peer ${e}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(f),this.attachConnectionHandlers(a),i(a)}),a.on("error",()=>{clearTimeout(f),s(new Error(`Unable to connect to peer ${e}`))})}).finally(()=>{this.pendingConnections.delete(e)});return this.pendingConnections.set(e,r),r}onMessage(e){this.messageHandlers.add(e)}offMessage(e){this.messageHandlers.delete(e)}async broadcast(e){if(!this.peer)throw new Error("PeerJS network adapter has not been started");let t=[];for(let r of this.connections.values())r.open&&t.push(r.send(e));await Promise.all(t)}async sendToPeers(e,t=[]){if(!this.peer)throw new Error("PeerJS network adapter has not been started");let r=new Set((t||[]).filter(Boolean));if(r.size===0)return;let i=[];for(let[s,a]of this.connections.entries())r.has(s)&&a.open&&i.push(a.send(e));await Promise.all(i)}async disconnectPeer(e){let t=this.connections.get(e);t&&typeof t.close=="function"&&t.close(),this.connections.delete(e)}getOpenConnectionCount(){return this.listOpenPeerIds().length}listOpenPeerIds(){let e=[];for(let[t,r]of this.connections.entries())r.open&&e.push(t);return e}isConnectedTo(e){let t=this.connections.get(e);return!!(t&&t.open)}async stop(){for(let e of this.connections.values())typeof e.close=="function"&&e.close();this.connections.clear(),this.pendingConnections.clear(),this.peer&&typeof this.peer.destroy=="function"&&this.peer.destroy(),this.peer=null,this.nodeId=null}};function iu(n={}){return new fn(n)}va.exports={PeerJSNetworkAdapter:fn,createPeerJSNetworkAdapter:iu,parsePeerJsServerUrl:ba}});var wa=F((dh,Pa)=>{var Wi=class{constructor({dbName:e="dignity",storeName:t="records",collections:r=null,indexedDB:i=typeof globalThis<"u"?globalThis.indexedDB:null}={}){this.dbName=e,this.storeName=t,this.collections=r,this.indexedDB=i,this.node=null,this.changeHandler=null}recordKey(e,t){return`${e}:${t}`}shouldPersist(e){return this.collections?this.collections.includes(e):!0}openDb(){return this.indexedDB?new Promise((e,t)=>{let r=this.indexedDB.open(this.dbName,1);r.onupgradeneeded=()=>{let i=r.result;i.objectStoreNames.contains(this.storeName)||i.createObjectStore(this.storeName,{keyPath:"key"})},r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error||new Error("Unable to open IndexedDB"))}):Promise.reject(new Error("IndexedDB is not available"))}runTransaction(e,t){return this.openDb().then(r=>new Promise((i,s)=>{let a=r.transaction(this.storeName,e),f=a.objectStore(this.storeName);Promise.resolve(t(f)).then(i).catch(s),a.oncomplete=()=>r.close(),a.onerror=()=>s(a.error||new Error("IndexedDB transaction failed")),a.onabort=()=>s(a.error||new Error("IndexedDB transaction aborted"))}))}serializeRecord(e,t){let r=this.node.getCollection(e).get(t);return r?{key:this.recordKey(e,t),collection:e,id:t,ownerId:r.ownerId,collaboratorIds:Array.isArray(r.collaboratorIds)?[...r.collaboratorIds]:[],data:{...r.data},hash:r.hash||null,createdAt:r.createdAt,updatedAt:r.updatedAt,deletedAt:r.deletedAt,version:r.version}:null}async persistRecord(e,t){if(!this.node||!this.shouldPersist(e))return;let r=this.serializeRecord(e,t),i=this.recordKey(e,t);if(!r){await this.runTransaction("readwrite",s=>new Promise((a,f)=>{let l=s.delete(i);l.onsuccess=()=>a(),l.onerror=()=>f(l.error)}));return}await this.runTransaction("readwrite",s=>new Promise((a,f)=>{let l=s.put(r);l.onsuccess=()=>a(),l.onerror=()=>f(l.error)}))}persistChange(e){!e||!e.collection||!e.id||this.persistRecord(e.collection,e.id).catch(t=>{this.node.emit("warning",{type:"persistence-failed",collection:e.collection,id:e.id,error:t})})}async loadAllRecords(){return this.runTransaction("readonly",e=>new Promise((t,r)=>{let i=e.getAll();i.onsuccess=()=>t(i.result||[]),i.onerror=()=>r(i.error)}))}async hydrate(){if(!this.node)throw new Error("IndexedDBPersistence requires an attached node before hydrate");let e=await this.loadAllRecords();for(let t of e)this.shouldPersist(t.collection)&&this.node.restoreRecord(t.collection,{id:t.id,ownerId:t.ownerId,collaboratorIds:t.collaboratorIds,data:t.data,hash:t.hash||null,createdAt:t.createdAt,updatedAt:t.updatedAt,deletedAt:t.deletedAt,version:t.version})}async attach(e){if(!e)throw new Error("IndexedDBPersistence.attach requires a DignityP2P node");this.node=e,await this.hydrate(),this.changeHandler=t=>this.persistChange(t),e.on("change",this.changeHandler)}async detach(){this.node&&this.changeHandler&&this.node.off("change",this.changeHandler),this.changeHandler=null,this.node=null}async clear(){await this.runTransaction("readwrite",e=>new Promise((t,r)=>{let i=e.clear();i.onsuccess=()=>t(),i.onerror=()=>r(i.error)}))}};Pa.exports=Wi});var Ca=F((uh,Sa)=>{var su=Tn(),{createEmptyView:ou,applyDomainEventToView:au,verifyEventChain:cu,verifyDomainEvent:fu,DOMAIN_EVENT_SCHEMA_VERSION:du}=Tr(),Yi=class extends su{constructor(e,{groupId:t,collections:r=[],tierMode:i="auto",publisherId:s=null}={}){if(super(),!e)throw new Error("DignityQueryReplica requires dignityP2P");if(!t)throw new Error("DignityQueryReplica requires groupId");this.dignity=e,this.groupId=t,this.collections=[...r],this.tierMode=i,this.publisherId=s,this.view=ou(this.collections),this.eventLog=[],this.started=!1,this.boundDomainHandler=this.handleDomainEvent.bind(this),this.boundPeerGroupHandler=this.handlePeerGroupMessage.bind(this)}async start(e={}){return this.started?this:(await this.dignity.joinPeerGroup(this.groupId,{tierMode:this.tierMode,role:"subscriber",commandCapable:!1,domainEvents:!0,publisherId:this.publisherId,liveCap:e.liveCap,bulkIntervalMs:e.bulkIntervalMs,bootstrapPeerIds:e.bootstrapPeerIds,metadata:{role:"subscriber",replica:!0}}),this.dignity.on("domainevent",this.boundDomainHandler),this.dignity.on("peergroupmessage",this.boundPeerGroupHandler),this.started=!0,this.emit("started",{groupId:this.groupId}),this)}async stop(){this.started&&(this.dignity.off("domainevent",this.boundDomainHandler),this.dignity.off("peergroupmessage",this.boundPeerGroupHandler),await this.dignity.leavePeerGroup(this.groupId),this.started=!1,this.emit("stopped",{groupId:this.groupId}))}handleDomainEvent(e){!e||e.groupId!==this.groupId||this.publisherId&&e.publisherId!==this.publisherId||this.ingestEvent(e)}handlePeerGroupMessage(e){!e||e.groupId!==this.groupId||e.type==="domain:checkpoint"&&this.emit("checkpoint",e.payload)}ingestEvent(e,{skipChainCheck:t=!1}={}){let r=fu(e,{supportedVersions:[du]});if(!r.ok)return this.emit("warning",{type:"domain-event-rejected",reason:r.reason,event:e}),!1;if(!t&&this.eventLog.length>0){let a=this.eventLog[this.eventLog.length-1].eventHash;if(e.prevHash!==a)return this.emit("chainbroken",{groupId:this.groupId,expectedPrev:a,actualPrev:e.prevHash,eventId:e.eventId}),!1}else if(!t&&this.eventLog.length===0&&e.prevHash)return this.emit("chainbroken",{groupId:this.groupId,expectedPrev:null,actualPrev:e.prevHash,eventId:e.eventId}),!1;if(this.eventLog.some(a=>a.eventId===e.eventId))return!1;let s=au(this.view,e,{collectionsFilter:this.collections.length>0?this.collections:null});return s.applied||s.reason==="collection-filtered"?(this.eventLog.push({...e}),this.emit("change",{event:e,result:s}),!0):(this.emit("warning",{type:"domain-event-not-applied",reason:s.reason,event:e}),!1)}read(e,t){let r=this.view.get(e);if(!r)return null;let i=r.get(t);return!i||i.deletedAt?null:{...i,data:{...i.data}}}list(e,t={}){let r=this.view.get(e);if(!r)return[];let i=t.includeDeleted||!1,s=[];for(let a of r.values())if(!(a.deletedAt&&!i)){if(a.deletedAt&&i){s.push({id:a.id,ownerId:a.ownerId,deletedAt:a.deletedAt,version:a.version});continue}s.push({...a,data:{...a.data}})}return s}verifyChain(){let e=cu(this.eventLog);return e.ok||this.emit("chainbroken",{groupId:this.groupId,...e}),e}getViewStats(){let e={groupId:this.groupId,eventCount:this.eventLog.length,collections:{}};for(let[t,r]of this.view.entries()){let i=0,s=0;for(let a of r.values())a.deletedAt?s+=1:i+=1;e.collections[t]={active:i,deleted:s}}return e}};Sa.exports=Yi});var sl=F((lh,Ea)=>{var uu=no(),lu=ga(),hu=Yn(),pu=Ar(),yu=$i(),{InMemoryNetworkHub:gu,InMemoryNetworkAdapter:mu}=xa(),{PeerJSNetworkAdapter:xu,createPeerJSNetworkAdapter:bu}=_a(),vu=wa(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:_u,DEFAULT_SIGNALING_FALLBACK_URLS:Pu}=cn(),wu=Mn(),Su=Rn(),{MessageSecurityService:Cu,DEFAULT_SECURITY_OPTIONS:Eu,DEFAULT_APP_PASSWORD:Iu}=Ct(),{deriveKeyPairFromCredentials:Tu,keyPairToPublicBundle:ku,deriveColdRecoverySigningKey:Ru}=mr(),{createIdentityRotation:Au,verifyIdentityRotation:Mu,revokeAndRotateIdentity:Du,rotateIdentityPassword:Ou,enrollColdRecoveryPassword:Uu,verifyColdRecoveryEnrollment:Bu,shouldApplyIdentityRotation:Lu}=Ut(),ju=Mr(),{PEER_GROUP_SCOPE_PREFIX:Gu,DEFAULT_PEER_GROUP_OPTIONS:Ku,peerGroupScope:Fu,parsePeerGroupScope:Nu,selectFanoutPeers:zu}=Nn(),{DOMAIN_EVENT_SCHEMA_VERSION:qu,operationToDomainEvent:$u,signDomainEvent:Hu,verifyDomainEvent:Vu,verifyEventChain:Wu,buildCheckpoint:Yu,createEmptyView:Ju,applyDomainEventToView:Xu}=Tr(),{DEFAULT_LIVE_CAP:Zu,DEFAULT_BULK_INTERVAL_MS:Qu,assignPeerGroupTier:el,filterPeersByTier:tl}=Rr(),{electBulkRelays:rl,DEFAULT_BULK_RELAY_COUNT:nl}=qn(),il=Ca();Ea.exports={DignityP2P:uu,createDefaultSignalingPool:lu,SignalingPool:hu,WebSocketSignalingProvider:pu,PeerJSSignalingProvider:yu,InMemoryNetworkHub:gu,InMemoryNetworkAdapter:mu,PeerJSNetworkAdapter:xu,createPeerJSNetworkAdapter:bu,IndexedDBPersistence:vu,DEFAULT_CLOUDFLARE_SIGNALING_URLS:_u,DEFAULT_SIGNALING_FALLBACK_URLS:Pu,VDF:wu,SlothPermutation:Su,MessageSecurityService:Cu,DEFAULT_SECURITY_OPTIONS:Eu,DEFAULT_APP_PASSWORD:Iu,deriveKeyPairFromCredentials:Tu,deriveColdRecoverySigningKey:Ru,keyPairToPublicBundle:ku,createIdentityRotation:Au,verifyIdentityRotation:Mu,revokeAndRotateIdentity:Du,rotateIdentityPassword:Ou,enrollColdRecoveryPassword:Uu,verifyColdRecoveryEnrollment:Bu,shouldApplyIdentityRotation:Lu,parsePeerJsServerUrl:ju,PEER_GROUP_SCOPE_PREFIX:Gu,DEFAULT_PEER_GROUP_OPTIONS:Ku,peerGroupScope:Fu,parsePeerGroupScope:Nu,selectFanoutPeers:zu,DOMAIN_EVENT_SCHEMA_VERSION:qu,operationToDomainEvent:$u,signDomainEvent:Hu,verifyDomainEvent:Vu,verifyEventChain:Wu,buildCheckpoint:Yu,createEmptyView:Ju,applyDomainEventToView:Xu,DEFAULT_LIVE_CAP:Zu,DEFAULT_BULK_INTERVAL_MS:Qu,assignPeerGroupTier:el,filterPeersByTier:tl,electBulkRelays:rl,DEFAULT_BULK_RELAY_COUNT:nl,DignityQueryReplica:il}});return sl();})();
42
+ isUnifiedPlanSupported:${this.isUnifiedPlanSupported()}`}constructor(){this.isIOS=typeof navigator<"u"?["iPad","iPhone","iPod"].includes(navigator.platform):!1,this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}},Wd=r=>!r||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(r),ua=()=>Math.random().toString(36).slice(2),fa={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},Ai=class extends en{noop(){}blobToArrayBuffer(e,t){let n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n}binaryStringToArrayBuffer(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer}isSecure(){return location.protocol==="https:"}constructor(...e){super(...e),this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.defaultConfig=fa,this.browser=Xt.getBrowser(),this.browserVersion=Xt.getVersion(),this.pack=Qr.pack,this.unpack=Qr.unpack,this.supports=(function(){let t={browser:Xt.isBrowserSupported(),webRTC:Xt.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!t.webRTC)return t;let n;try{n=new RTCPeerConnection(fa),t.audioVideo=!0;let i;try{i=n.createDataChannel("_PEERJSTEST",{ordered:!0}),t.data=!0,t.reliable=!!i.ordered;try{i.binaryType="blob",t.binaryBlob=!Xt.isIOS}catch{}}catch{}finally{i&&i.close()}}catch{}finally{n&&n.close()}return t})(),this.validateId=Wd,this.randomToken=ua}},Re=new Ai,Yd="PeerJS: ",Mi=class{get logLevel(){return this._logLevel}set logLevel(e){this._logLevel=e}log(...e){this._logLevel>=3&&this._print(3,...e)}warn(...e){this._logLevel>=2&&this._print(2,...e)}error(...e){this._logLevel>=1&&this._print(1,...e)}setLogFunction(e){this._print=e}_print(e,...t){let n=[Yd,...t];for(let i in n)n[i]instanceof Error&&(n[i]="("+n[i].name+") "+n[i].message);e>=3?console.log(...n):e>=2?console.warn("WARNING",...n):e>=1&&console.error("ERROR",...n)}constructor(){this._logLevel=0}},B=new Mi,dt={};Ae(dt,"ConnectionType",()=>ft);Ae(dt,"PeerErrorType",()=>ve);Ae(dt,"BaseConnectionErrorType",()=>Di);Ae(dt,"DataConnectionErrorType",()=>$i);Ae(dt,"SerializationType",()=>cn);Ae(dt,"SocketEventType",()=>ct);Ae(dt,"ServerMessageType",()=>Te);var ft=(function(r){return r.Data="data",r.Media="media",r})({}),ve=(function(r){return r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc",r})({}),Di=(function(r){return r.NegotiationFailed="negotiation-failed",r.ConnectionClosed="connection-closed",r})({}),$i=(function(r){return r.NotOpenYet="not-open-yet",r.MessageToBig="message-too-big",r})({}),cn=(function(r){return r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json",r.None="raw",r})({}),ct=(function(r){return r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close",r})({}),Te=(function(r){return r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE",r})({}),la="1.5.5",Oi=class extends da.EventEmitter{constructor(e,t,n,i,s,a=5e3){super(),this.pingInterval=a,this._disconnected=!0,this._messagesQueue=[];let f=e?"wss://":"ws://";this._baseUrl=f+t+":"+n+i+"peerjs?key="+s}start(e,t){this._id=e;let n=`${this._baseUrl}&id=${e}&token=${t}`;this._socket||!this._disconnected||(this._socket=new WebSocket(n+"&version="+la),this._disconnected=!1,this._socket.onmessage=i=>{let s;try{s=JSON.parse(i.data),B.log("Server message received:",s)}catch{B.log("Invalid server message",i.data);return}this.emit(ct.Message,s)},this._socket.onclose=i=>{this._disconnected||(B.log("Socket closed.",i),this._cleanup(),this._disconnected=!0,this.emit(ct.Disconnected))},this._socket.onopen=()=>{this._disconnected||(this._sendQueuedMessages(),B.log("Socket open"),this._scheduleHeartbeat())})}_scheduleHeartbeat(){this._wsPingTimer=setTimeout(()=>{this._sendHeartbeat()},this.pingInterval)}_sendHeartbeat(){if(!this._wsOpen()){B.log("Cannot send heartbeat, because socket closed");return}let e=JSON.stringify({type:Te.Heartbeat});this._socket.send(e),this._scheduleHeartbeat()}_wsOpen(){return!!this._socket&&this._socket.readyState===1}_sendQueuedMessages(){let e=[...this._messagesQueue];this._messagesQueue=[];for(let t of e)this.send(t)}send(e){if(this._disconnected)return;if(!this._id){this._messagesQueue.push(e);return}if(!e.type){this.emit(ct.Error,"Invalid message");return}if(!this._wsOpen())return;let t=JSON.stringify(e);this._socket.send(t)}close(){this._disconnected||(this._cleanup(),this._disconnected=!0)}_cleanup(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)}},tn=class{constructor(e){this.connection=e}startConnection(e){let t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===ft.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){let n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n._initializeDataChannel(s),this._makeOffer()}else this.handleSDP("OFFER",e.sdp)}_startPeerConnection(){B.log("Creating RTCPeerConnection.");let e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e}_setupListeners(e){let t=this.connection.peer,n=this.connection.connectionId,i=this.connection.type,s=this.connection.provider;B.log("Listening for ICE candidates."),e.onicecandidate=a=>{!a.candidate||!a.candidate.candidate||(B.log(`Received ICE candidates for ${t}:`,a.candidate),s.socket.send({type:Te.Candidate,payload:{candidate:a.candidate,type:i,connectionId:n},dst:t}))},e.oniceconnectionstatechange=()=>{switch(e.iceConnectionState){case"failed":B.log("iceConnectionState is failed, closing connections to "+t),this.connection.emitError(Di.NegotiationFailed,"Negotiation of connection to "+t+" failed."),this.connection.close();break;case"closed":B.log("iceConnectionState is closed, closing connections to "+t),this.connection.emitError(Di.ConnectionClosed,"Connection to "+t+" closed."),this.connection.close();break;case"disconnected":B.log("iceConnectionState changed to disconnected on the connection with "+t);break;case"completed":e.onicecandidate=()=>{};break}this.connection.emit("iceStateChanged",e.iceConnectionState)},B.log("Listening for data channel"),e.ondatachannel=a=>{B.log("Received data channel");let f=a.channel;s.getConnection(t,n)._initializeDataChannel(f)},B.log("Listening for remote stream"),e.ontrack=a=>{B.log("Received remote stream");let f=a.streams[0],l=s.getConnection(t,n);if(l.type===ft.Media){let p=l;this._addStreamToMediaConnection(f,p)}}}cleanup(){B.log("Cleaning up PeerConnection to "+this.connection.peer);let e=this.connection.peerConnection;if(!e)return;this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=()=>{};let t=e.signalingState!=="closed",n=!1,i=this.connection.dataChannel;i&&(n=!!i.readyState&&i.readyState!=="closed"),(t||n)&&e.close()}async _makeOffer(){let e=this.connection.peerConnection,t=this.connection.provider;try{let n=await e.createOffer(this.connection.options.constraints);B.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp);try{await e.setLocalDescription(n),B.log("Set localDescription:",n,`for:${this.connection.peer}`);let i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata};if(this.connection.type===ft.Data){let s=this.connection;i={...i,label:s.label,reliable:s.reliable,serialization:s.serialization}}t.socket.send({type:Te.Offer,payload:i,dst:this.connection.peer})}catch(i){i!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(ve.WebRTC,i),B.log("Failed to setLocalDescription, ",i))}}catch(n){t.emitError(ve.WebRTC,n),B.log("Failed to createOffer, ",n)}}async _makeAnswer(){let e=this.connection.peerConnection,t=this.connection.provider;try{let n=await e.createAnswer();B.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp);try{await e.setLocalDescription(n),B.log("Set localDescription:",n,`for:${this.connection.peer}`),t.socket.send({type:Te.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId},dst:this.connection.peer})}catch(i){t.emitError(ve.WebRTC,i),B.log("Failed to setLocalDescription, ",i)}}catch(n){t.emitError(ve.WebRTC,n),B.log("Failed to create answer, ",n)}}async handleSDP(e,t){t=new RTCSessionDescription(t);let n=this.connection.peerConnection,i=this.connection.provider;B.log("Setting remote description",t);let s=this;try{await n.setRemoteDescription(t),B.log(`Set remoteDescription:${e} for:${this.connection.peer}`),e==="OFFER"&&await s._makeAnswer()}catch(a){i.emitError(ve.WebRTC,a),B.log("Failed to setRemoteDescription, ",a)}}async handleCandidate(e){B.log("handleCandidate:",e);try{await this.connection.peerConnection.addIceCandidate(e),B.log(`Added ICE candidate for:${this.connection.peer}`)}catch(t){this.connection.provider.emitError(ve.WebRTC,t),B.log("Failed to handleCandidate, ",t)}}_addTracksToConnection(e,t){if(B.log(`add tracks from stream ${e.id} to peer connection`),!t.addTrack)return B.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(n=>{t.addTrack(n,e)})}_addStreamToMediaConnection(e,t){B.log(`add stream ${e.id} to media connection ${t.connectionId}`),t.addStream(e)}},rn=class extends da.EventEmitter{emitError(e,t){B.error("Error:",t),this.emit("error",new nn(`${e}`,t))}},nn=class extends Error{constructor(e,t){typeof t=="string"?super(t):(super(),Object.assign(this,t)),this.type=e}},sn=class extends rn{get open(){return this._open}constructor(e,t,n){super(),this.peer=e,this.provider=t,this.options=n,this._open=!1,this.metadata=n.metadata}},Gi,Qt=class Qt extends sn{get type(){return ft.Media}get localStream(){return this._localStream}get remoteStream(){return this._remoteStream}constructor(e,t,n){super(e,t,n),this._localStream=this.options._stream,this.connectionId=this.options.connectionId||Qt.ID_PREFIX+Re.randomToken(),this._negotiator=new tn(this),this._localStream&&this._negotiator.startConnection({_stream:this._localStream,originator:!0})}_initializeDataChannel(e){this.dataChannel=e,this.dataChannel.onopen=()=>{B.log(`DC#${this.connectionId} dc connection success`),this.emit("willCloseOnRemote")},this.dataChannel.onclose=()=>{B.log(`DC#${this.connectionId} dc closed for:`,this.peer),this.close()}}addStream(e){B.log("Receiving stream",e),this._remoteStream=e,super.emit("stream",e)}handleMessage(e){let t=e.type,n=e.payload;switch(e.type){case Te.Answer:this._negotiator.handleSDP(t,n.sdp),this._open=!0;break;case Te.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:B.warn(`Unrecognized message type:${t} from peer:${this.peer}`);break}}answer(e,t={}){if(this._localStream){B.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=e,t&&t.sdpTransform&&(this.options.sdpTransform=t.sdpTransform),this._negotiator.startConnection({...this.options._payload,_stream:e});let n=this.provider._getMessages(this.connectionId);for(let i of n)this.handleMessage(i);this._open=!0}close(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,super.emit("close"))}};Gi=new WeakMap,Ut(Qt,Gi,Qt.ID_PREFIX="mc_");var on=Qt,Ui=class{constructor(e){this._options=e}_buildRequest(e){let t=this._options.secure?"https":"http",{host:n,port:i,path:s,key:a}=this._options,f=new URL(`${t}://${n}:${i}${s}${a}/${e}`);return f.searchParams.set("ts",`${Date.now()}${Math.random()}`),f.searchParams.set("version",la),fetch(f.href,{referrerPolicy:this._options.referrerPolicy})}async retrieveId(){try{let e=await this._buildRequest("id");if(e.status!==200)throw new Error(`Error. Status:${e.status}`);return e.text()}catch(e){B.error("Error retrieving ID",e);let t="";throw this._options.path==="/"&&this._options.host!==Re.CLOUD_HOST&&(t=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+t)}}async listAllPeers(){try{let e=await this._buildRequest("peers");if(e.status!==200){if(e.status===401){let t="";throw this._options.host===Re.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)}throw new Error(`Error. Status:${e.status}`)}return e.json()}catch(e){throw B.error("Error retrieving list peers",e),new Error("Could not get list peers from the server."+e)}}},Fi,Ki,gt=class gt extends sn{get type(){return ft.Data}constructor(e,t,n){super(e,t,n),this.connectionId=this.options.connectionId||gt.ID_PREFIX+ua(),this.label=this.options.label||this.connectionId,this.reliable=!!this.options.reliable,this._negotiator=new tn(this),this._negotiator.startConnection(this.options._payload||{originator:!0,reliable:this.reliable})}_initializeDataChannel(e){this.dataChannel=e,this.dataChannel.onopen=()=>{B.log(`DC#${this.connectionId} dc connection success`),this._open=!0,this.emit("open")},this.dataChannel.onmessage=t=>{B.log(`DC#${this.connectionId} dc onmessage:`,t.data)},this.dataChannel.onclose=()=>{B.log(`DC#${this.connectionId} dc closed for:`,this.peer),this.close()}}close(e){if(e?.flush){this.send({__peerData:{type:"close"}});return}this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this.dataChannel=null),this.open&&(this._open=!1,super.emit("close"))}send(e,t=!1){if(!this.open){this.emitError($i.NotOpenYet,"Connection is not open. You should listen for the `open` event before sending messages.");return}return this._send(e,t)}async handleMessage(e){let t=e.payload;switch(e.type){case Te.Answer:await this._negotiator.handleSDP(e.type,t.sdp);break;case Te.Candidate:await this._negotiator.handleCandidate(t.candidate);break;default:B.warn("Unrecognized message type:",e.type,"from peer:",this.peer);break}}};Fi=new WeakMap,Ki=new WeakMap,Ut(gt,Fi,gt.ID_PREFIX="dc_"),Ut(gt,Ki,gt.MAX_BUFFERED_AMOUNT=8388608);var xt=gt,Rt=class extends xt{get bufferSize(){return this._bufferSize}_initializeDataChannel(e){super._initializeDataChannel(e),this.dataChannel.binaryType="arraybuffer",this.dataChannel.addEventListener("message",t=>this._handleDataMessage(t))}_bufferedSend(e){(this._buffering||!this._trySend(e))&&(this._buffer.push(e),this._bufferSize=this._buffer.length)}_trySend(e){if(!this.open)return!1;if(this.dataChannel.bufferedAmount>xt.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(()=>{this._buffering=!1,this._tryBuffer()},50),!1;try{this.dataChannel.send(e)}catch(t){return B.error(`DC#:${this.connectionId} Error when sending:`,t),this._buffering=!0,this.close(),!1}return!0}_tryBuffer(){if(!this.open||this._buffer.length===0)return;let e=this._buffer[0];this._trySend(e)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}close(e){if(e?.flush){this.send({__peerData:{type:"close"}});return}this._buffer=[],this._bufferSize=0,super.close()}constructor(...e){super(...e),this._buffer=[],this._bufferSize=0,this._buffering=!1}},Zt=class extends Rt{close(e){super.close(e),this._chunkedData={}}constructor(e,t,n){super(e,t,n),this.chunker=new en,this.serialization=cn.Binary,this._chunkedData={}}_handleDataMessage({data:e}){let t=(0,Qr.unpack)(e),n=t.__peerData;if(n){if(n.type==="close"){this.close();return}this._handleChunk(t);return}this.emit("data",t)}_handleChunk(e){let t=e.__peerData,n=this._chunkedData[t]||{data:[],count:0,total:e.total};if(n.data[e.n]=new Uint8Array(e.data),n.count++,this._chunkedData[t]=n,n.total===n.count){delete this._chunkedData[t];let i=Hd(n.data);this._handleDataMessage({data:i})}}_send(e,t){let n=(0,Qr.pack)(e);if(n instanceof Promise)return this._send_blob(n);if(!t&&n.byteLength>this.chunker.chunkedMTU){this._sendChunks(n);return}this._bufferedSend(n)}async _send_blob(e){let t=await e;if(t.byteLength>this.chunker.chunkedMTU){this._sendChunks(t);return}this._bufferedSend(t)}_sendChunks(e){let t=this.chunker.chunk(e);B.log(`DC#${this.connectionId} Try to send ${t.length} chunks...`);for(let n of t)this.send(n,!0)}},Bi=class extends Rt{_handleDataMessage({data:e}){super.emit("data",e)}_send(e,t){this._bufferedSend(e)}constructor(...e){super(...e),this.serialization=cn.None}},Li=class extends Rt{_handleDataMessage({data:e}){let t=this.parse(this.decoder.decode(e)),n=t.__peerData;if(n&&n.type==="close"){this.close();return}this.emit("data",t)}_send(e,t){let n=this.encoder.encode(this.stringify(e));if(n.byteLength>=Re.chunkedMTU){this.emitError($i.MessageToBig,"Message too big for JSON channel");return}this._bufferedSend(n)}constructor(...e){super(...e),this.serialization=cn.JSON,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.stringify=JSON.stringify,this.parse=JSON.parse}},Ni,er=class er extends rn{get id(){return this._id}get options(){return this._options}get open(){return this._open}get socket(){return this._socket}get connections(){let e=Object.create(null);for(let[t,n]of this._connections)e[t]=n;return e}get destroyed(){return this._destroyed}get disconnected(){return this._disconnected}constructor(e,t){super(),this._serializers={raw:Bi,json:Li,binary:Zt,"binary-utf8":Zt,default:Zt},this._id=null,this._lastServerId=null,this._destroyed=!1,this._disconnected=!1,this._open=!1,this._connections=new Map,this._lostMessages=new Map;let n;if(e&&e.constructor==Object?t=e:e&&(n=e.toString()),t={debug:0,host:Re.CLOUD_HOST,port:Re.CLOUD_PORT,path:"/",key:er.DEFAULT_KEY,token:Re.randomToken(),config:Re.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin",serializers:{},...t},this._options=t,this._serializers={...this._serializers,...this.options.serializers},this._options.host==="/"&&(this._options.host=window.location.hostname),this._options.path&&(this._options.path[0]!=="/"&&(this._options.path="/"+this._options.path),this._options.path[this._options.path.length-1]!=="/"&&(this._options.path+="/")),this._options.secure===void 0&&this._options.host!==Re.CLOUD_HOST?this._options.secure=Re.isSecure():this._options.host==Re.CLOUD_HOST&&(this._options.secure=!0),this._options.logFunction&&B.setLogFunction(this._options.logFunction),B.logLevel=this._options.debug||0,this._api=new Ui(t),this._socket=this._createServerConnection(),!Re.supports.audioVideo&&!Re.supports.data){this._delayedAbort(ve.BrowserIncompatible,"The current browser does not support WebRTC");return}if(n&&!Re.validateId(n)){this._delayedAbort(ve.InvalidID,`ID "${n}" is invalid`);return}n?this._initialize(n):this._api.retrieveId().then(i=>this._initialize(i)).catch(i=>this._abort(ve.ServerError,i))}_createServerConnection(){let e=new Oi(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return e.on(ct.Message,t=>{this._handleMessage(t)}),e.on(ct.Error,t=>{this._abort(ve.SocketError,t)}),e.on(ct.Disconnected,()=>{this.disconnected||(this.emitError(ve.Network,"Lost connection to server."),this.disconnect())}),e.on(ct.Close,()=>{this.disconnected||this._abort(ve.SocketClosed,"Underlying socket is already closed.")}),e}_initialize(e){this._id=e,this.socket.start(e,this._options.token)}_handleMessage(e){let t=e.type,n=e.payload,i=e.src;switch(t){case Te.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Te.Error:this._abort(ve.ServerError,n.msg);break;case Te.IdTaken:this._abort(ve.UnavailableID,`ID "${this.id}" is taken`);break;case Te.InvalidKey:this._abort(ve.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case Te.Leave:B.log(`Received leave message from ${i}`),this._cleanupPeer(i),this._connections.delete(i);break;case Te.Expire:this.emitError(ve.PeerUnavailable,`Could not connect to peer ${i}`);break;case Te.Offer:{let s=n.connectionId,a=this.getConnection(i,s);if(a&&(a.close(),B.warn(`Offer received for existing Connection ID:${s}`)),n.type===ft.Media){let l=new on(i,this,{connectionId:s,_payload:n,metadata:n.metadata});a=l,this._addConnection(i,a),this.emit("call",l)}else if(n.type===ft.Data){let l=new this._serializers[n.serialization](i,this,{connectionId:s,_payload:n,metadata:n.metadata,label:n.label,serialization:n.serialization,reliable:n.reliable});a=l,this._addConnection(i,a),this.emit("connection",l)}else{B.warn(`Received malformed connection type:${n.type}`);return}let f=this._getMessages(s);for(let l of f)a.handleMessage(l);break}default:{if(!n){B.warn(`You received a malformed message from ${i} of type ${t}`);return}let s=n.connectionId,a=this.getConnection(i,s);a&&a.peerConnection?a.handleMessage(e):s?this._storeMessage(s,e):B.warn("You received an unrecognized message:",e);break}}}_storeMessage(e,t){this._lostMessages.has(e)||this._lostMessages.set(e,[]),this._lostMessages.get(e).push(t)}_getMessages(e){let t=this._lostMessages.get(e);return t?(this._lostMessages.delete(e),t):[]}connect(e,t={}){if(t={serialization:"default",...t},this.disconnected){B.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(ve.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}let n=new this._serializers[t.serialization](e,this,t);return this._addConnection(e,n),n}call(e,t,n={}){if(this.disconnected){B.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(ve.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!t){B.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}let i=new on(e,this,{...n,_stream:t});return this._addConnection(e,i),i}_addConnection(e,t){B.log(`add connection ${t.type}:${t.connectionId} to peerId:${e}`),this._connections.has(e)||this._connections.set(e,[]),this._connections.get(e).push(t)}_removeConnection(e){let t=this._connections.get(e.peer);if(t){let n=t.indexOf(e);n!==-1&&t.splice(n,1)}this._lostMessages.delete(e.connectionId)}getConnection(e,t){let n=this._connections.get(e);if(!n)return null;for(let i of n)if(i.connectionId===t)return i;return null}_delayedAbort(e,t){setTimeout(()=>{this._abort(e,t)},0)}_abort(e,t){B.error("Aborting!"),this.emitError(e,t),this._lastServerId?this.disconnect():this.destroy()}destroy(){this.destroyed||(B.log(`Destroy peer with ID:${this.id}`),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))}_cleanup(){for(let e of this._connections.keys())this._cleanupPeer(e),this._connections.delete(e);this.socket.removeAllListeners()}_cleanupPeer(e){let t=this._connections.get(e);if(t)for(let n of t)n.close()}disconnect(){if(this.disconnected)return;let e=this.id;B.log(`Disconnect peer with ID:${e}`),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=e,this._id=null,this.emit("disconnected",e)}reconnect(){if(this.disconnected&&!this.destroyed)B.log(`Attempting reconnection to server with ID ${this._lastServerId}`),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)B.error("In a hurry? We're still trying to make the initial connection!");else throw new Error(`Peer ${this.id} cannot reconnect because it is not disconnected from the server!`)}}listAllPeers(e=t=>{}){this._api.listAllPeers().then(t=>e(t)).catch(t=>this._abort(ve.ServerError,t))}};Ni=new WeakMap,Ut(er,Ni,er.DEFAULT_KEY="peerjs");var tr=er,an=class extends xt{constructor(e,t,n){super(e,t,{...n,reliable:!0}),this._CHUNK_SIZE=32768,this._splitStream=new TransformStream({transform:(i,s)=>{for(let a=0;a<i.length;a+=this._CHUNK_SIZE)s.enqueue(i.subarray(a,a+this._CHUNK_SIZE))}}),this._rawSendStream=new WritableStream({write:async(i,s)=>{let a=new Promise(f=>this.dataChannel.addEventListener("bufferedamountlow",f,{once:!0}));await(this.dataChannel.bufferedAmount<=xt.MAX_BUFFERED_AMOUNT-i.byteLength||a);try{this.dataChannel.send(i)}catch(f){B.error(`DC#:${this.connectionId} Error when sending:`,f),s.error(f),this.close()}}}),this.writer=this._splitStream.writable.getWriter(),this._rawReadStream=new ReadableStream({start:i=>{this.once("open",()=>{this.dataChannel.addEventListener("message",s=>{i.enqueue(s.data)})})}}),this._splitStream.readable.pipeTo(this._rawSendStream)}_initializeDataChannel(e){super._initializeDataChannel(e),this.dataChannel.binaryType="arraybuffer",this.dataChannel.bufferedAmountLowThreshold=xt.MAX_BUFFERED_AMOUNT/2}},rr=class extends an{constructor(e,t,n){super(e,t,n),this.serialization="MsgPack",this._encoder=new aa.Encoder,(async()=>{for await(let i of(0,aa.decodeMultiStream)(this._rawReadStream)){if(i.__peerData?.type==="close"){this.close();return}this.emit("data",i)}})()}_send(e){return this.writer.write(this._encoder.encode(e))}},ji=class extends tr{constructor(...e){super(...e),this._serializers={MsgPack:rr,default:rr}}},Jd=tr;Vd(ze.exports,dt)});var Vi=K((gh,ha)=>{var Xd=Mr(),Zd=Dr(),zi=class{constructor({id:e,url:t,PeerImpl:n,WebSocketImpl:i,priority:s=0,connectTimeoutMs:a=1e4}){if(!t)throw new Error("PeerJS signaling provider requires a url");this.id=e||t,this.url=t,this.priority=s,this.isCustomPeerImpl=!!n,this.PeerImpl=n||this.resolvePeerImplementation(),this.WebSocketImpl=i,this.connectTimeoutMs=a,this.peer=null,this.peerId=null,this.connections=new Map,this.messageHandlers=new Set,this.fallbackProvider=null}resolvePeerImplementation(){try{let e=qi();return e.Peer||e}catch{return null}}parsePeerJsServerUrl(){return Zd(this.url)}shouldUseWebSocketFallback(){return!this.isCustomPeerImpl&&typeof globalThis.RTCPeerConnection!="function"}useWebSocketFallback(){return this.fallbackProvider||(this.fallbackProvider=new Xd({id:`${this.id}-ws-fallback`,url:this.url,WebSocketImpl:this.WebSocketImpl,priority:this.priority})),this.fallbackProvider}async connect(){if(this.shouldUseWebSocketFallback()){await this.useWebSocketFallback().connect();return}if(!this.PeerImpl)throw new Error("PeerJS implementation is not available");let e=this.parsePeerJsServerUrl(),t=`dignityjs_${Math.random().toString(36).slice(2,12)}`;await new Promise((n,i)=>{let s=new this.PeerImpl(t,{host:e.host,port:e.port,path:e.path,secure:e.secure,key:e.key}),a=setTimeout(()=>{i(new Error(`Unable to connect to signaling url ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(a),this.peer=s,this.peerId=t,n()}),s.on("connection",f=>{this.attachConnectionHandlers(f)}),s.on("error",async f=>{if(clearTimeout(a),f&&f.type==="browser-incompatible")try{await this.useWebSocketFallback().connect(),n();return}catch{i(new Error(`Unable to connect to signaling url ${this.url}`));return}i(new Error(`Unable to connect to signaling url ${this.url}`))})})}attachConnectionHandlers(e){let t=e.peer;this.connections.set(t,e),e.on("data",n=>{for(let i of this.messageHandlers)i(n)}),e.on("close",()=>{this.connections.delete(t)})}async openConnection(e){if(!this.peer)throw new Error("PeerJS is not connected");let t=this.connections.get(e);return t&&t.open?t:await new Promise((n,i)=>{let s=this.peer.connect(e,{reliable:!0,serialization:"json"}),a=setTimeout(()=>{i(new Error(`Unable to connect peer ${e} via ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(a),this.attachConnectionHandlers(s),n(s)}),s.on("error",()=>{clearTimeout(a),i(new Error(`Unable to connect peer ${e} via ${this.url}`))})})}onMessage(e){if(this.fallbackProvider){this.fallbackProvider.onMessage(e);return}this.messageHandlers.add(e)}async send(e){if(this.fallbackProvider){await this.fallbackProvider.send(e);return}if(!this.peer)throw new Error(`Signaling socket is not open for ${this.url}`);if(e&&e.to){(await this.openConnection(e.to)).send(e);return}for(let t of this.connections.values())t.open&&t.send(e)}async disconnect(){if(this.fallbackProvider){await this.fallbackProvider.disconnect(),this.fallbackProvider=null;return}for(let e of this.connections.values())typeof e.close=="function"&&e.close();this.connections.clear(),this.peer&&typeof this.peer.destroy=="function"&&this.peer.destroy(),this.peer=null,this.peerId=null}};ha.exports=zi});var fn=K((xh,pa)=>{var Qd=["wss://peerjs.92k.de/peerjs?key=peerjs","wss://0.peerjs.com/peerjs?key=peerjs"],eu=["wss://relay.dignity.dev/signaling","wss://backup-relay.dignity.dev/signaling"];pa.exports={DEFAULT_CLOUDFLARE_SIGNALING_URLS:Qd,DEFAULT_SIGNALING_FALLBACK_URLS:eu}});var ga=K((bh,ma)=>{var tu=Jn(),ya=Mr(),ru=Vi(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:nu,DEFAULT_SIGNALING_FALLBACK_URLS:iu}=fn();function su(r={}){let e=r.cloudflareUrls||nu,t=r.fallbackUrls||iu,n=r.WebSocketImpl,i=[];return e.forEach((s,a)=>{let l=/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(s)?ru:ya;i.push(new l({id:`cloudflare-${a+1}`,url:s,WebSocketImpl:n,priority:a}))}),t.forEach((s,a)=>{i.push(new ya({id:`fallback-${a+1}`,url:s,WebSocketImpl:n,priority:e.length+a}))}),Array.isArray(r.customProviders)&&i.push(...r.customProviders),new tu(i)}ma.exports=su});var ba=K((vh,xa)=>{var Hi=class{constructor(){this.adapters=new Map}register(e){this.adapters.set(e.nodeId,e)}unregister(e){this.adapters.delete(e)}async broadcast(e,t){let n=[];for(let[i,s]of this.adapters.entries())i!==e&&n.push(s.receive(t));await Promise.all(n)}async sendToPeers(e,t,n=[]){let i=new Set((n||[]).filter(a=>a&&a!==e)),s=[];for(let[a,f]of this.adapters.entries())a!==e&&i.has(a)&&s.push(f.receive(t));await Promise.all(s)}},Wi=class{constructor(e){if(!e)throw new Error("InMemoryNetworkAdapter requires an InMemoryNetworkHub");this.hub=e,this.nodeId=null,this.messageHandlers=new Set,this.connectedPeers=new Set}async start(e){this.nodeId=e,this.hub.register(this)}async stop(){this.nodeId&&this.hub.unregister(this.nodeId),this.nodeId=null,this.connectedPeers.clear()}async connectToPeer(e){!e||e===this.nodeId||this.connectedPeers.add(e)}async broadcast(e){if(!this.nodeId)throw new Error("Network adapter has not been started");await this.hub.broadcast(this.nodeId,e)}async sendToPeers(e,t=[]){if(!this.nodeId)throw new Error("Network adapter has not been started");await this.hub.sendToPeers(this.nodeId,e,t)}listOpenPeerIds(){return[...this.connectedPeers]}getOpenConnectionCount(){return this.connectedPeers.size}isConnectedTo(e){return this.connectedPeers.has(e)}onMessage(e){this.messageHandlers.add(e)}offMessage(e){this.messageHandlers.delete(e)}async receive(e){let t=[];for(let n of this.messageHandlers)t.push(n(e));await Promise.all(t)}};xa.exports={InMemoryNetworkHub:Hi,InMemoryNetworkAdapter:Wi}});var Pa=K((_h,_a)=>{var{DEFAULT_CLOUDFLARE_SIGNALING_URLS:ou}=fn(),va=Dr();function au(r){if(r)return r;try{let e=qi();return e.Peer||e}catch{return null}}var dn=class{constructor({url:e,urls:t,PeerImpl:n,connectTimeoutMs:i=12e3}={}){this.urls=t||(e?[e]:[...ou]),this.url=this.urls[0],this.PeerImpl=au(n),this.connectTimeoutMs=i,this.nodeId=null,this.peer=null,this.connections=new Map,this.pendingConnections=new Map,this.messageHandlers=new Set}async start(e){if(!e)throw new Error("PeerJSNetworkAdapter requires nodeId on start");if(!this.PeerImpl)throw new Error("PeerJS implementation is not available");this.peer&&await this.stop();let t;for(let n of this.urls)try{await this.startWithUrl(e,n),this.url=n;return}catch(i){t=i}throw t||new Error("Unable to connect PeerJS network adapter")}async startWithUrl(e,t){this.nodeId=e;let n=va(t);await new Promise((i,s)=>{let a=new this.PeerImpl(e,{host:n.host,port:n.port,path:n.path,secure:n.secure,key:n.key}),f=setTimeout(()=>{a.destroy?.(),s(new Error(`Unable to connect PeerJS network adapter to ${t}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(f),this.peer=a,i()}),a.on("connection",l=>{this.attachConnectionHandlers(l)}),a.on("error",l=>{clearTimeout(f),a.destroy?.(),s(l||new Error(`Unable to connect PeerJS network adapter to ${t}`))})})}attachConnectionHandlers(e){let t=e.peer;t&&(this.connections.set(t,e),e.on("data",n=>{let i=[];for(let s of this.messageHandlers)i.push(s(n));return Promise.all(i)}),e.on("close",()=>{this.connections.delete(t)}))}async connectToPeer(e){if(!e||e===this.nodeId)return null;let t=this.connections.get(e);if(t&&t.open)return t;if(this.pendingConnections.has(e))return this.pendingConnections.get(e);if(!this.peer)throw new Error("PeerJS network adapter has not been started");let n=new Promise((i,s)=>{let a=this.peer.connect(e,{reliable:!0,serialization:"json"}),f=setTimeout(()=>{s(new Error(`Unable to connect to peer ${e}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(f),this.attachConnectionHandlers(a),i(a)}),a.on("error",()=>{clearTimeout(f),s(new Error(`Unable to connect to peer ${e}`))})}).finally(()=>{this.pendingConnections.delete(e)});return this.pendingConnections.set(e,n),n}onMessage(e){this.messageHandlers.add(e)}offMessage(e){this.messageHandlers.delete(e)}async broadcast(e){if(!this.peer)throw new Error("PeerJS network adapter has not been started");let t=[];for(let n of this.connections.values())n.open&&t.push(n.send(e));await Promise.all(t)}async sendToPeers(e,t=[]){if(!this.peer)throw new Error("PeerJS network adapter has not been started");let n=new Set((t||[]).filter(Boolean));if(n.size===0)return;let i=[];for(let[s,a]of this.connections.entries())n.has(s)&&a.open&&i.push(a.send(e));await Promise.all(i)}async disconnectPeer(e){let t=this.connections.get(e);t&&typeof t.close=="function"&&t.close(),this.connections.delete(e)}getOpenConnectionCount(){return this.listOpenPeerIds().length}listOpenPeerIds(){let e=[];for(let[t,n]of this.connections.entries())n.open&&e.push(t);return e}isConnectedTo(e){let t=this.connections.get(e);return!!(t&&t.open)}async stop(){for(let e of this.connections.values())typeof e.close=="function"&&e.close();this.connections.clear(),this.pendingConnections.clear(),this.peer&&typeof this.peer.destroy=="function"&&this.peer.destroy(),this.peer=null,this.nodeId=null}};function cu(r={}){return new dn(r)}_a.exports={PeerJSNetworkAdapter:dn,createPeerJSNetworkAdapter:cu,parsePeerJsServerUrl:va}});var wa=K((Ph,Sa)=>{var Yi=class{constructor({dbName:e="dignity",storeName:t="records",collections:n=null,indexedDB:i=typeof globalThis<"u"?globalThis.indexedDB:null}={}){this.dbName=e,this.storeName=t,this.collections=n,this.indexedDB=i,this.node=null,this.changeHandler=null}recordKey(e,t){return`${e}:${t}`}shouldPersist(e){return this.collections?this.collections.includes(e):!0}openDb(){return this.indexedDB?new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let i=n.result;i.objectStoreNames.contains(this.storeName)||i.createObjectStore(this.storeName,{keyPath:"key"})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error||new Error("Unable to open IndexedDB"))}):Promise.reject(new Error("IndexedDB is not available"))}runTransaction(e,t){return this.openDb().then(n=>new Promise((i,s)=>{let a=n.transaction(this.storeName,e),f=a.objectStore(this.storeName);Promise.resolve(t(f)).then(i).catch(s),a.oncomplete=()=>n.close(),a.onerror=()=>s(a.error||new Error("IndexedDB transaction failed")),a.onabort=()=>s(a.error||new Error("IndexedDB transaction aborted"))}))}serializeRecord(e,t){let n=this.node.getCollection(e).get(t);return n?{key:this.recordKey(e,t),collection:e,id:t,ownerId:n.ownerId,collaboratorIds:Array.isArray(n.collaboratorIds)?[...n.collaboratorIds]:[],data:{...n.data},hash:n.hash||null,createdAt:n.createdAt,updatedAt:n.updatedAt,deletedAt:n.deletedAt,version:n.version}:null}async persistRecord(e,t){if(!this.node||!this.shouldPersist(e))return;let n=this.serializeRecord(e,t),i=this.recordKey(e,t);if(!n){await this.runTransaction("readwrite",s=>new Promise((a,f)=>{let l=s.delete(i);l.onsuccess=()=>a(),l.onerror=()=>f(l.error)}));return}await this.runTransaction("readwrite",s=>new Promise((a,f)=>{let l=s.put(n);l.onsuccess=()=>a(),l.onerror=()=>f(l.error)}))}persistChange(e){!e||!e.collection||!e.id||this.persistRecord(e.collection,e.id).catch(t=>{this.node.emit("warning",{type:"persistence-failed",collection:e.collection,id:e.id,error:t})})}async loadAllRecords(){return this.runTransaction("readonly",e=>new Promise((t,n)=>{let i=e.getAll();i.onsuccess=()=>t(i.result||[]),i.onerror=()=>n(i.error)}))}async hydrate(){if(!this.node)throw new Error("IndexedDBPersistence requires an attached node before hydrate");let e=await this.loadAllRecords();for(let t of e)this.shouldPersist(t.collection)&&this.node.restoreRecord(t.collection,{id:t.id,ownerId:t.ownerId,collaboratorIds:t.collaboratorIds,data:t.data,hash:t.hash||null,createdAt:t.createdAt,updatedAt:t.updatedAt,deletedAt:t.deletedAt,version:t.version})}async attach(e){if(!e)throw new Error("IndexedDBPersistence.attach requires a DignityP2P node");this.node=e,await this.hydrate(),this.changeHandler=t=>this.persistChange(t),e.on("change",this.changeHandler)}async detach(){this.node&&this.changeHandler&&this.node.off("change",this.changeHandler),this.changeHandler=null,this.node=null}async clear(){await this.runTransaction("readwrite",e=>new Promise((t,n)=>{let i=e.clear();i.onsuccess=()=>t(),i.onerror=()=>n(i.error)}))}};Sa.exports=Yi});var Ea=K((Sh,Ca)=>{var fu=kn(),{createEmptyView:du,applyDomainEventToView:uu,verifyEventChain:lu,verifyDomainEvent:hu,DOMAIN_EVENT_SCHEMA_VERSION:pu}=kr(),Ji=class extends fu{constructor(e,{groupId:t,collections:n=[],tierMode:i="auto",publisherId:s=null}={}){if(super(),!e)throw new Error("DignityQueryReplica requires dignityP2P");if(!t)throw new Error("DignityQueryReplica requires groupId");this.dignity=e,this.groupId=t,this.collections=[...n],this.tierMode=i,this.publisherId=s,this.view=du(this.collections),this.eventLog=[],this.started=!1,this.boundDomainHandler=this.handleDomainEvent.bind(this),this.boundPeerGroupHandler=this.handlePeerGroupMessage.bind(this)}async start(e={}){return this.started?this:(await this.dignity.joinPeerGroup(this.groupId,{tierMode:this.tierMode,role:"subscriber",commandCapable:!1,domainEvents:!0,publisherId:this.publisherId,liveCap:e.liveCap,bulkIntervalMs:e.bulkIntervalMs,bootstrapPeerIds:e.bootstrapPeerIds,metadata:{role:"subscriber",replica:!0}}),this.dignity.on("domainevent",this.boundDomainHandler),this.dignity.on("peergroupmessage",this.boundPeerGroupHandler),this.started=!0,this.emit("started",{groupId:this.groupId}),this)}async stop(){this.started&&(this.dignity.off("domainevent",this.boundDomainHandler),this.dignity.off("peergroupmessage",this.boundPeerGroupHandler),await this.dignity.leavePeerGroup(this.groupId),this.started=!1,this.emit("stopped",{groupId:this.groupId}))}handleDomainEvent(e){!e||e.groupId!==this.groupId||this.publisherId&&e.publisherId!==this.publisherId||this.ingestEvent(e)}handlePeerGroupMessage(e){!e||e.groupId!==this.groupId||e.type==="domain:checkpoint"&&this.emit("checkpoint",e.payload)}ingestEvent(e,{skipChainCheck:t=!1}={}){let n=hu(e,{supportedVersions:[pu]});if(!n.ok)return this.emit("warning",{type:"domain-event-rejected",reason:n.reason,event:e}),!1;if(!t&&this.eventLog.length>0){let a=this.eventLog[this.eventLog.length-1].eventHash;if(e.prevHash!==a)return this.emit("chainbroken",{groupId:this.groupId,expectedPrev:a,actualPrev:e.prevHash,eventId:e.eventId}),!1}else if(!t&&this.eventLog.length===0&&e.prevHash)return this.emit("chainbroken",{groupId:this.groupId,expectedPrev:null,actualPrev:e.prevHash,eventId:e.eventId}),!1;if(this.eventLog.some(a=>a.eventId===e.eventId))return!1;let s=uu(this.view,e,{collectionsFilter:this.collections.length>0?this.collections:null});return s.applied||s.reason==="collection-filtered"?(this.eventLog.push({...e}),this.emit("change",{event:e,result:s}),!0):(this.emit("warning",{type:"domain-event-not-applied",reason:s.reason,event:e}),!1)}read(e,t){let n=this.view.get(e);if(!n)return null;let i=n.get(t);return!i||i.deletedAt?null:{...i,data:{...i.data}}}list(e,t={}){let n=this.view.get(e);if(!n)return[];let i=t.includeDeleted||!1,s=[];for(let a of n.values())if(!(a.deletedAt&&!i)){if(a.deletedAt&&i){s.push({id:a.id,ownerId:a.ownerId,deletedAt:a.deletedAt,version:a.version});continue}s.push({...a,data:{...a.data}})}return s}verifyChain(){let e=lu(this.eventLog);return e.ok||this.emit("chainbroken",{groupId:this.groupId,...e}),e}getViewStats(){let e={groupId:this.groupId,eventCount:this.eventLog.length,collections:{}};for(let[t,n]of this.view.entries()){let i=0,s=0;for(let a of n.values())a.deletedAt?s+=1:i+=1;e.collections[t]={active:i,deleted:s}}return e}};Ca.exports=Ji});var ka=K((wh,Ta)=>{var Ia=/^[a-z0-9][a-z0-9._-]{0,63}$/;function Ve(r){return typeof r=="string"&&r.trim().length>0}function yu(r,e){let t=`storedCommands[${e}]`;return!r||typeof r!="object"?{ok:!1,reason:`${t} must be an object`}:Ve(r.id)?Ve(r.collection)?["create","update","delete"].includes(r.kind)?r.allowedFields!==void 0&&(!Array.isArray(r.allowedFields)||r.allowedFields.some(n=>!Ve(n)))?{ok:!1,reason:`${t}.allowedFields must be a string array`}:{ok:!0}:{ok:!1,reason:`${t}.kind must be create, update, or delete`}:{ok:!1,reason:`${t}.collection is required`}:{ok:!1,reason:`${t}.id is required`}}function mu(r){if(!r||typeof r!="object")return{ok:!1,reason:"manifest must be an object"};if(r.schemaVersion!==void 0&&r.schemaVersion!==1)return{ok:!1,reason:`unsupported schemaVersion: ${r.schemaVersion}`};if(!Ve(r.id)||!Ia.test(r.id))return{ok:!1,reason:"id must match [a-z0-9][a-z0-9._-]{0,63}"};if(!Ve(r.title))return{ok:!1,reason:"title is required"};if(!Array.isArray(r.collections)||r.collections.length===0)return{ok:!1,reason:"collections must be a non-empty string array"};let e=[];for(let s of r.collections){if(!Ve(s))return{ok:!1,reason:"collections entries must be non-empty strings"};if(e.includes(s))return{ok:!1,reason:`duplicate collection: ${s}`};e.push(s.trim())}let t=Array.isArray(r.storedCommands)?r.storedCommands:[];for(let s=0;s<t.length;s+=1){let a=yu(t[s],s);if(!a.ok)return a;let f=t[s].collection;if(!e.includes(f))return{ok:!1,reason:`storedCommands[${s}] references undeclared collection: ${f}`}}let n=Array.isArray(r.allowedCspOrigins)?r.allowedCspOrigins:[];for(let s of n){if(!Ve(s)||!s.startsWith("https://"))return{ok:!1,reason:"allowedCspOrigins entries must be https:// URLs"};if(/localhost|127\.0\.0\.1/i.test(s))return{ok:!1,reason:"localhost origins are not allowed in allowedCspOrigins"}}return{ok:!0,manifest:{schemaVersion:1,id:r.id.trim(),title:r.title.trim(),description:Ve(r.description)?r.description.trim():"",collections:e,peerGroupId:Ve(r.peerGroupId)?r.peerGroupId.trim():null,publisherId:Ve(r.publisherId)?r.publisherId.trim():null,storedCommands:t.map(s=>({id:s.id.trim(),collection:s.collection.trim(),kind:s.kind,allowedFields:Array.isArray(s.allowedFields)?[...s.allowedFields]:null,requiresRole:Ve(s.requiresRole)?s.requiresRole.trim():null})),allowedCspOrigins:n.map(s=>s.trim()),readOnly:t.length===0}}}function gu(r,e){return r&&Array.isArray(r.collections)&&r.collections.includes(e)}function xu(r,e){return!r||!Array.isArray(r.storedCommands)?null:r.storedCommands.find(t=>t.id===e)||null}Ta.exports={MANIFEST_SCHEMA_VERSION:1,ID_PATTERN:Ia,validateDignityAppManifest:mu,collectionAllowed:gu,getStoredCommand:xu}});var gl=K((Ch,Ra)=>{var bu=io(),vu=ga(),_u=Jn(),Pu=Mr(),Su=Vi(),{InMemoryNetworkHub:wu,InMemoryNetworkAdapter:Cu}=ba(),{PeerJSNetworkAdapter:Eu,createPeerJSNetworkAdapter:Iu}=Pa(),Tu=wa(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:ku,DEFAULT_SIGNALING_FALLBACK_URLS:Ru}=fn(),Au=Dn(),Mu=An(),{MessageSecurityService:Du,DEFAULT_SECURITY_OPTIONS:Ou,DEFAULT_APP_PASSWORD:Uu}=Et(),{deriveKeyPairFromCredentials:Bu,keyPairToPublicBundle:Lu,deriveColdRecoverySigningKey:ju}=xr(),{createIdentityRotation:Gu,verifyIdentityRotation:Fu,revokeAndRotateIdentity:Ku,rotateIdentityPassword:Nu,enrollColdRecoveryPassword:$u,verifyColdRecoveryEnrollment:qu,shouldApplyIdentityRotation:zu}=Bt(),Vu=Dr(),{PEER_GROUP_SCOPE_PREFIX:Hu,DEFAULT_PEER_GROUP_OPTIONS:Wu,peerGroupScope:Yu,parsePeerGroupScope:Ju,selectFanoutPeers:Xu}=$n(),{DOMAIN_EVENT_SCHEMA_VERSION:Zu,operationToDomainEvent:Qu,signDomainEvent:el,verifyDomainEvent:tl,verifyEventChain:rl,buildCheckpoint:nl,createEmptyView:il,applyDomainEventToView:sl}=kr(),{DEFAULT_LIVE_CAP:ol,DEFAULT_BULK_INTERVAL_MS:al,assignPeerGroupTier:cl,filterPeersByTier:fl}=Ar(),{electBulkRelays:dl,DEFAULT_BULK_RELAY_COUNT:ul}=zn(),ll=Ea(),{MANIFEST_SCHEMA_VERSION:hl,validateDignityAppManifest:pl,collectionAllowed:yl,getStoredCommand:ml}=ka();Ra.exports={DignityP2P:bu,createDefaultSignalingPool:vu,SignalingPool:_u,WebSocketSignalingProvider:Pu,PeerJSSignalingProvider:Su,InMemoryNetworkHub:wu,InMemoryNetworkAdapter:Cu,PeerJSNetworkAdapter:Eu,createPeerJSNetworkAdapter:Iu,IndexedDBPersistence:Tu,DEFAULT_CLOUDFLARE_SIGNALING_URLS:ku,DEFAULT_SIGNALING_FALLBACK_URLS:Ru,VDF:Au,SlothPermutation:Mu,MessageSecurityService:Du,DEFAULT_SECURITY_OPTIONS:Ou,DEFAULT_APP_PASSWORD:Uu,deriveKeyPairFromCredentials:Bu,deriveColdRecoverySigningKey:ju,keyPairToPublicBundle:Lu,createIdentityRotation:Gu,verifyIdentityRotation:Fu,revokeAndRotateIdentity:Ku,rotateIdentityPassword:Nu,enrollColdRecoveryPassword:$u,verifyColdRecoveryEnrollment:qu,shouldApplyIdentityRotation:zu,parsePeerJsServerUrl:Vu,PEER_GROUP_SCOPE_PREFIX:Hu,DEFAULT_PEER_GROUP_OPTIONS:Wu,peerGroupScope:Yu,parsePeerGroupScope:Ju,selectFanoutPeers:Xu,DOMAIN_EVENT_SCHEMA_VERSION:Zu,operationToDomainEvent:Qu,signDomainEvent:el,verifyDomainEvent:tl,verifyEventChain:rl,buildCheckpoint:nl,createEmptyView:il,applyDomainEventToView:sl,DEFAULT_LIVE_CAP:ol,DEFAULT_BULK_INTERVAL_MS:al,assignPeerGroupTier:cl,filterPeersByTier:fl,electBulkRelays:dl,DEFAULT_BULK_RELAY_COUNT:ul,DignityQueryReplica:ll,DIGNITY_APP_MANIFEST_SCHEMA_VERSION:hl,validateDignityAppManifest:pl,collectionAllowed:yl,getStoredCommand:ml}});return gl();})();