dignity.js 0.6.0 → 0.7.1
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.
- package/README.md +97 -1
- package/dist/dignity.cjs.js +802 -16
- package/dist/dignity.cjs.js.map +4 -4
- package/dist/dignity.esm.js +795 -9
- package/dist/dignity.esm.js.map +3 -3
- package/dist/dignity.min.js +9 -9
- package/docs/assets/dignity.esm.js +928 -30
- package/docs/assets/playground-demos.js +342 -0
- package/docs/assets/playground.css +277 -0
- package/docs/assets/playground.js +248 -0
- package/docs/assets/styles.css +18 -2
- package/docs/index.html +23 -3
- package/docs/openapi-like.json +1 -1
- package/package.json +5 -3
- package/src/core/dignity-p2p.js +229 -4
- package/src/index.js +25 -1
- package/src/security/derive-key-pair.js +147 -0
- package/src/security/identity-rotation.js +427 -0
- package/src/security/message-security-service.js +94 -4
package/dist/dignity.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var DignityJS=(()=>{var Mo=Object.defineProperty;var Do=n=>{throw TypeError(n)};var Oo=(n,e,t)=>e in n?Mo(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var cn=(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 $=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var cr=(n,e,t)=>Oo(n,typeof e!="symbol"?e+"":e,t);var Rt=(n,e,t)=>e.has(n)?Do("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t);var qi=$(()=>{});var fn=$((Nf,fr)=>{(function(n){"use strict";var e=function(a){var d,f=new Float64Array(16);if(a)for(d=0;d<a.length;d++)f[d]=a[d];return f},t=function(){throw new Error("no PRNG")},r=new Uint8Array(16),i=new Uint8Array(32);i[0]=9;var s=e(),c=e([1]),u=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]),m=e([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),b=e([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),I=e([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function z(a,d,f,o){a[d]=f>>24&255,a[d+1]=f>>16&255,a[d+2]=f>>8&255,a[d+3]=f&255,a[d+4]=o>>24&255,a[d+5]=o>>16&255,a[d+6]=o>>8&255,a[d+7]=o&255}function re(a,d,f,o,h){var g,x=0;for(g=0;g<h;g++)x|=a[d+g]^f[o+g];return(1&x-1>>>8)-1}function fe(a,d,f,o){return re(a,d,f,o,16)}function ue(a,d,f,o){return re(a,d,f,o,32)}function be(a,d,f,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,g=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,x=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,C=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,k=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,oe=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,D=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,N=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,Y=f[16]&255|(f[17]&255)<<8|(f[18]&255)<<16|(f[19]&255)<<24,W=f[20]&255|(f[21]&255)<<8|(f[22]&255)<<16|(f[23]&255)<<24,K=f[24]&255|(f[25]&255)<<8|(f[26]&255)<<16|(f[27]&255)<<24,V=f[28]&255|(f[29]&255)<<8|(f[30]&255)<<16|(f[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,F=g,M=x,U=C,L=k,R=j,v=A,_=oe,w=D,S=N,P=q,E=Y,G=W,J=K,Z=V,X=H,y,te=0;te<20;te+=2)y=O+G|0,L^=y<<7|y>>>25,y=L+O|0,w^=y<<9|y>>>23,y=w+L|0,G^=y<<13|y>>>19,y=G+w|0,O^=y<<18|y>>>14,y=R+F|0,S^=y<<7|y>>>25,y=S+R|0,J^=y<<9|y>>>23,y=J+S|0,F^=y<<13|y>>>19,y=F+J|0,R^=y<<18|y>>>14,y=P+v|0,Z^=y<<7|y>>>25,y=Z+P|0,M^=y<<9|y>>>23,y=M+Z|0,v^=y<<13|y>>>19,y=v+M|0,P^=y<<18|y>>>14,y=X+E|0,U^=y<<7|y>>>25,y=U+X|0,_^=y<<9|y>>>23,y=_+U|0,E^=y<<13|y>>>19,y=E+_|0,X^=y<<18|y>>>14,y=O+U|0,F^=y<<7|y>>>25,y=F+O|0,M^=y<<9|y>>>23,y=M+F|0,U^=y<<13|y>>>19,y=U+M|0,O^=y<<18|y>>>14,y=R+L|0,v^=y<<7|y>>>25,y=v+R|0,_^=y<<9|y>>>23,y=_+v|0,L^=y<<13|y>>>19,y=L+_|0,R^=y<<18|y>>>14,y=P+S|0,E^=y<<7|y>>>25,y=E+P|0,w^=y<<9|y>>>23,y=w+E|0,S^=y<<13|y>>>19,y=S+w|0,P^=y<<18|y>>>14,y=X+Z|0,G^=y<<7|y>>>25,y=G+X|0,J^=y<<9|y>>>23,y=J+G|0,Z^=y<<13|y>>>19,y=Z+J|0,X^=y<<18|y>>>14;O=O+h|0,F=F+g|0,M=M+x|0,U=U+C|0,L=L+k|0,R=R+j|0,v=v+A|0,_=_+oe|0,w=w+D|0,S=S+N|0,P=P+q|0,E=E+Y|0,G=G+W|0,J=J+K|0,Z=Z+V|0,X=X+H|0,a[0]=O>>>0&255,a[1]=O>>>8&255,a[2]=O>>>16&255,a[3]=O>>>24&255,a[4]=F>>>0&255,a[5]=F>>>8&255,a[6]=F>>>16&255,a[7]=F>>>24&255,a[8]=M>>>0&255,a[9]=M>>>8&255,a[10]=M>>>16&255,a[11]=M>>>24&255,a[12]=U>>>0&255,a[13]=U>>>8&255,a[14]=U>>>16&255,a[15]=U>>>24&255,a[16]=L>>>0&255,a[17]=L>>>8&255,a[18]=L>>>16&255,a[19]=L>>>24&255,a[20]=R>>>0&255,a[21]=R>>>8&255,a[22]=R>>>16&255,a[23]=R>>>24&255,a[24]=v>>>0&255,a[25]=v>>>8&255,a[26]=v>>>16&255,a[27]=v>>>24&255,a[28]=_>>>0&255,a[29]=_>>>8&255,a[30]=_>>>16&255,a[31]=_>>>24&255,a[32]=w>>>0&255,a[33]=w>>>8&255,a[34]=w>>>16&255,a[35]=w>>>24&255,a[36]=S>>>0&255,a[37]=S>>>8&255,a[38]=S>>>16&255,a[39]=S>>>24&255,a[40]=P>>>0&255,a[41]=P>>>8&255,a[42]=P>>>16&255,a[43]=P>>>24&255,a[44]=E>>>0&255,a[45]=E>>>8&255,a[46]=E>>>16&255,a[47]=E>>>24&255,a[48]=G>>>0&255,a[49]=G>>>8&255,a[50]=G>>>16&255,a[51]=G>>>24&255,a[52]=J>>>0&255,a[53]=J>>>8&255,a[54]=J>>>16&255,a[55]=J>>>24&255,a[56]=Z>>>0&255,a[57]=Z>>>8&255,a[58]=Z>>>16&255,a[59]=Z>>>24&255,a[60]=X>>>0&255,a[61]=X>>>8&255,a[62]=X>>>16&255,a[63]=X>>>24&255}function gt(a,d,f,o){for(var h=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,g=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,x=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,C=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,k=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,oe=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,D=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,N=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,q=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,Y=f[16]&255|(f[17]&255)<<8|(f[18]&255)<<16|(f[19]&255)<<24,W=f[20]&255|(f[21]&255)<<8|(f[22]&255)<<16|(f[23]&255)<<24,K=f[24]&255|(f[25]&255)<<8|(f[26]&255)<<16|(f[27]&255)<<24,V=f[28]&255|(f[29]&255)<<8|(f[30]&255)<<16|(f[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=h,F=g,M=x,U=C,L=k,R=j,v=A,_=oe,w=D,S=N,P=q,E=Y,G=W,J=K,Z=V,X=H,y,te=0;te<20;te+=2)y=O+G|0,L^=y<<7|y>>>25,y=L+O|0,w^=y<<9|y>>>23,y=w+L|0,G^=y<<13|y>>>19,y=G+w|0,O^=y<<18|y>>>14,y=R+F|0,S^=y<<7|y>>>25,y=S+R|0,J^=y<<9|y>>>23,y=J+S|0,F^=y<<13|y>>>19,y=F+J|0,R^=y<<18|y>>>14,y=P+v|0,Z^=y<<7|y>>>25,y=Z+P|0,M^=y<<9|y>>>23,y=M+Z|0,v^=y<<13|y>>>19,y=v+M|0,P^=y<<18|y>>>14,y=X+E|0,U^=y<<7|y>>>25,y=U+X|0,_^=y<<9|y>>>23,y=_+U|0,E^=y<<13|y>>>19,y=E+_|0,X^=y<<18|y>>>14,y=O+U|0,F^=y<<7|y>>>25,y=F+O|0,M^=y<<9|y>>>23,y=M+F|0,U^=y<<13|y>>>19,y=U+M|0,O^=y<<18|y>>>14,y=R+L|0,v^=y<<7|y>>>25,y=v+R|0,_^=y<<9|y>>>23,y=_+v|0,L^=y<<13|y>>>19,y=L+_|0,R^=y<<18|y>>>14,y=P+S|0,E^=y<<7|y>>>25,y=E+P|0,w^=y<<9|y>>>23,y=w+E|0,S^=y<<13|y>>>19,y=S+w|0,P^=y<<18|y>>>14,y=X+Z|0,G^=y<<7|y>>>25,y=G+X|0,J^=y<<9|y>>>23,y=J+G|0,Z^=y<<13|y>>>19,y=Z+J|0,X^=y<<18|y>>>14;a[0]=O>>>0&255,a[1]=O>>>8&255,a[2]=O>>>16&255,a[3]=O>>>24&255,a[4]=R>>>0&255,a[5]=R>>>8&255,a[6]=R>>>16&255,a[7]=R>>>24&255,a[8]=P>>>0&255,a[9]=P>>>8&255,a[10]=P>>>16&255,a[11]=P>>>24&255,a[12]=X>>>0&255,a[13]=X>>>8&255,a[14]=X>>>16&255,a[15]=X>>>24&255,a[16]=v>>>0&255,a[17]=v>>>8&255,a[18]=v>>>16&255,a[19]=v>>>24&255,a[20]=_>>>0&255,a[21]=_>>>8&255,a[22]=_>>>16&255,a[23]=_>>>24&255,a[24]=w>>>0&255,a[25]=w>>>8&255,a[26]=w>>>16&255,a[27]=w>>>24&255,a[28]=S>>>0&255,a[29]=S>>>8&255,a[30]=S>>>16&255,a[31]=S>>>24&255}function Xt(a,d,f,o){be(a,d,f,o)}function Zt(a,d,f,o){gt(a,d,f,o)}var dt=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ei(a,d,f,o,h,g,x){var C=new Uint8Array(16),k=new Uint8Array(64),j,A;for(A=0;A<16;A++)C[A]=0;for(A=0;A<8;A++)C[A]=g[A];for(;h>=64;){for(Xt(k,C,x,dt),A=0;A<64;A++)a[d+A]=f[o+A]^k[A];for(j=1,A=8;A<16;A++)j=j+(C[A]&255)|0,C[A]=j&255,j>>>=8;h-=64,d+=64,o+=64}if(h>0)for(Xt(k,C,x,dt),A=0;A<h;A++)a[d+A]=f[o+A]^k[A];return 0}function Ii(a,d,f,o,h){var g=new Uint8Array(16),x=new Uint8Array(64),C,k;for(k=0;k<16;k++)g[k]=0;for(k=0;k<8;k++)g[k]=o[k];for(;f>=64;){for(Xt(x,g,h,dt),k=0;k<64;k++)a[d+k]=x[k];for(C=1,k=8;k<16;k++)C=C+(g[k]&255)|0,g[k]=C&255,C>>>=8;f-=64,d+=64}if(f>0)for(Xt(x,g,h,dt),k=0;k<f;k++)a[d+k]=x[k];return 0}function ki(a,d,f,o,h){var g=new Uint8Array(32);Zt(g,o,h,dt);for(var x=new Uint8Array(8),C=0;C<8;C++)x[C]=o[C+16];return Ii(a,d,f,x,g)}function Kr(a,d,f,o,h,g,x){var C=new Uint8Array(32);Zt(C,g,x,dt);for(var k=new Uint8Array(8),j=0;j<8;j++)k[j]=g[j+16];return Ei(a,d,f,o,h,k,C)}var Qt=function(a){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 d,f,o,h,g,x,C,k;d=a[0]&255|(a[1]&255)<<8,this.r[0]=d&8191,f=a[2]&255|(a[3]&255)<<8,this.r[1]=(d>>>13|f<<3)&8191,o=a[4]&255|(a[5]&255)<<8,this.r[2]=(f>>>10|o<<6)&7939,h=a[6]&255|(a[7]&255)<<8,this.r[3]=(o>>>7|h<<9)&8191,g=a[8]&255|(a[9]&255)<<8,this.r[4]=(h>>>4|g<<12)&255,this.r[5]=g>>>1&8190,x=a[10]&255|(a[11]&255)<<8,this.r[6]=(g>>>14|x<<2)&8191,C=a[12]&255|(a[13]&255)<<8,this.r[7]=(x>>>11|C<<5)&8065,k=a[14]&255|(a[15]&255)<<8,this.r[8]=(C>>>8|k<<8)&8191,this.r[9]=k>>>5&127,this.pad[0]=a[16]&255|(a[17]&255)<<8,this.pad[1]=a[18]&255|(a[19]&255)<<8,this.pad[2]=a[20]&255|(a[21]&255)<<8,this.pad[3]=a[22]&255|(a[23]&255)<<8,this.pad[4]=a[24]&255|(a[25]&255)<<8,this.pad[5]=a[26]&255|(a[27]&255)<<8,this.pad[6]=a[28]&255|(a[29]&255)<<8,this.pad[7]=a[30]&255|(a[31]&255)<<8};Qt.prototype.blocks=function(a,d,f){for(var o=this.fin?0:2048,h,g,x,C,k,j,A,oe,D,N,q,Y,W,K,V,H,O,F,M,U=this.h[0],L=this.h[1],R=this.h[2],v=this.h[3],_=this.h[4],w=this.h[5],S=this.h[6],P=this.h[7],E=this.h[8],G=this.h[9],J=this.r[0],Z=this.r[1],X=this.r[2],y=this.r[3],te=this.r[4],ae=this.r[5],ce=this.r[6],Q=this.r[7],ie=this.r[8],se=this.r[9];f>=16;)h=a[d+0]&255|(a[d+1]&255)<<8,U+=h&8191,g=a[d+2]&255|(a[d+3]&255)<<8,L+=(h>>>13|g<<3)&8191,x=a[d+4]&255|(a[d+5]&255)<<8,R+=(g>>>10|x<<6)&8191,C=a[d+6]&255|(a[d+7]&255)<<8,v+=(x>>>7|C<<9)&8191,k=a[d+8]&255|(a[d+9]&255)<<8,_+=(C>>>4|k<<12)&8191,w+=k>>>1&8191,j=a[d+10]&255|(a[d+11]&255)<<8,S+=(k>>>14|j<<2)&8191,A=a[d+12]&255|(a[d+13]&255)<<8,P+=(j>>>11|A<<5)&8191,oe=a[d+14]&255|(a[d+15]&255)<<8,E+=(A>>>8|oe<<8)&8191,G+=oe>>>5|o,D=0,N=D,N+=U*J,N+=L*(5*se),N+=R*(5*ie),N+=v*(5*Q),N+=_*(5*ce),D=N>>>13,N&=8191,N+=w*(5*ae),N+=S*(5*te),N+=P*(5*y),N+=E*(5*X),N+=G*(5*Z),D+=N>>>13,N&=8191,q=D,q+=U*Z,q+=L*J,q+=R*(5*se),q+=v*(5*ie),q+=_*(5*Q),D=q>>>13,q&=8191,q+=w*(5*ce),q+=S*(5*ae),q+=P*(5*te),q+=E*(5*y),q+=G*(5*X),D+=q>>>13,q&=8191,Y=D,Y+=U*X,Y+=L*Z,Y+=R*J,Y+=v*(5*se),Y+=_*(5*ie),D=Y>>>13,Y&=8191,Y+=w*(5*Q),Y+=S*(5*ce),Y+=P*(5*ae),Y+=E*(5*te),Y+=G*(5*y),D+=Y>>>13,Y&=8191,W=D,W+=U*y,W+=L*X,W+=R*Z,W+=v*J,W+=_*(5*se),D=W>>>13,W&=8191,W+=w*(5*ie),W+=S*(5*Q),W+=P*(5*ce),W+=E*(5*ae),W+=G*(5*te),D+=W>>>13,W&=8191,K=D,K+=U*te,K+=L*y,K+=R*X,K+=v*Z,K+=_*J,D=K>>>13,K&=8191,K+=w*(5*se),K+=S*(5*ie),K+=P*(5*Q),K+=E*(5*ce),K+=G*(5*ae),D+=K>>>13,K&=8191,V=D,V+=U*ae,V+=L*te,V+=R*y,V+=v*X,V+=_*Z,D=V>>>13,V&=8191,V+=w*J,V+=S*(5*se),V+=P*(5*ie),V+=E*(5*Q),V+=G*(5*ce),D+=V>>>13,V&=8191,H=D,H+=U*ce,H+=L*ae,H+=R*te,H+=v*y,H+=_*X,D=H>>>13,H&=8191,H+=w*Z,H+=S*J,H+=P*(5*se),H+=E*(5*ie),H+=G*(5*Q),D+=H>>>13,H&=8191,O=D,O+=U*Q,O+=L*ce,O+=R*ae,O+=v*te,O+=_*y,D=O>>>13,O&=8191,O+=w*X,O+=S*Z,O+=P*J,O+=E*(5*se),O+=G*(5*ie),D+=O>>>13,O&=8191,F=D,F+=U*ie,F+=L*Q,F+=R*ce,F+=v*ae,F+=_*te,D=F>>>13,F&=8191,F+=w*y,F+=S*X,F+=P*Z,F+=E*J,F+=G*(5*se),D+=F>>>13,F&=8191,M=D,M+=U*se,M+=L*ie,M+=R*Q,M+=v*ce,M+=_*ae,D=M>>>13,M&=8191,M+=w*te,M+=S*y,M+=P*X,M+=E*Z,M+=G*J,D+=M>>>13,M&=8191,D=(D<<2)+D|0,D=D+N|0,N=D&8191,D=D>>>13,q+=D,U=N,L=q,R=Y,v=W,_=K,w=V,S=H,P=O,E=F,G=M,d+=16,f-=16;this.h[0]=U,this.h[1]=L,this.h[2]=R,this.h[3]=v,this.h[4]=_,this.h[5]=w,this.h[6]=S,this.h[7]=P,this.h[8]=E,this.h[9]=G},Qt.prototype.finish=function(a,d){var f=new Uint16Array(10),o,h,g,x;if(this.leftover){for(x=this.leftover,this.buffer[x++]=1;x<16;x++)this.buffer[x]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,x=2;x<10;x++)this.h[x]+=o,o=this.h[x]>>>13,this.h[x]&=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,f[0]=this.h[0]+5,o=f[0]>>>13,f[0]&=8191,x=1;x<10;x++)f[x]=this.h[x]+o,o=f[x]>>>13,f[x]&=8191;for(f[9]-=8192,h=(o^1)-1,x=0;x<10;x++)f[x]&=h;for(h=~h,x=0;x<10;x++)this.h[x]=this.h[x]&h|f[x];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,x=1;x<8;x++)g=(this.h[x]+this.pad[x]|0)+(g>>>16)|0,this.h[x]=g&65535;a[d+0]=this.h[0]>>>0&255,a[d+1]=this.h[0]>>>8&255,a[d+2]=this.h[1]>>>0&255,a[d+3]=this.h[1]>>>8&255,a[d+4]=this.h[2]>>>0&255,a[d+5]=this.h[2]>>>8&255,a[d+6]=this.h[3]>>>0&255,a[d+7]=this.h[3]>>>8&255,a[d+8]=this.h[4]>>>0&255,a[d+9]=this.h[4]>>>8&255,a[d+10]=this.h[5]>>>0&255,a[d+11]=this.h[5]>>>8&255,a[d+12]=this.h[6]>>>0&255,a[d+13]=this.h[6]>>>8&255,a[d+14]=this.h[7]>>>0&255,a[d+15]=this.h[7]>>>8&255},Qt.prototype.update=function(a,d,f){var o,h;if(this.leftover){for(h=16-this.leftover,h>f&&(h=f),o=0;o<h;o++)this.buffer[this.leftover+o]=a[d+o];if(f-=h,d+=h,this.leftover+=h,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(f>=16&&(h=f-f%16,this.blocks(a,d,h),d+=h,f-=h),f){for(o=0;o<f;o++)this.buffer[this.leftover+o]=a[d+o];this.leftover+=f}};function Hr(a,d,f,o,h,g){var x=new Qt(g);return x.update(f,o,h),x.finish(a,d),0}function Ri(a,d,f,o,h,g){var x=new Uint8Array(16);return Hr(x,0,f,o,h,g),fe(a,d,x,0)}function Vr(a,d,f,o,h){var g;if(f<32)return-1;for(Kr(a,0,d,0,f,o,h),Hr(a,16,a,32,f-32,a),g=0;g<16;g++)a[g]=0;return 0}function Wr(a,d,f,o,h){var g,x=new Uint8Array(32);if(f<32||(ki(x,0,32,o,h),Ri(d,16,d,32,f-32,x)!==0))return-1;for(Kr(a,0,d,0,f,o,h),g=0;g<32;g++)a[g]=0;return 0}function Ze(a,d){var f;for(f=0;f<16;f++)a[f]=d[f]|0}function Yr(a){var d,f,o=1;for(d=0;d<16;d++)f=a[d]+o+65535,o=Math.floor(f/65536),a[d]=f-o*65536;a[0]+=o-1+37*(o-1)}function xt(a,d,f){for(var o,h=~(f-1),g=0;g<16;g++)o=h&(a[g]^d[g]),a[g]^=o,d[g]^=o}function bt(a,d){var f,o,h,g=e(),x=e();for(f=0;f<16;f++)x[f]=d[f];for(Yr(x),Yr(x),Yr(x),o=0;o<2;o++){for(g[0]=x[0]-65517,f=1;f<15;f++)g[f]=x[f]-65535-(g[f-1]>>16&1),g[f-1]&=65535;g[15]=x[15]-32767-(g[14]>>16&1),h=g[15]>>16&1,g[14]&=65535,xt(x,g,1-h)}for(f=0;f<16;f++)a[2*f]=x[f]&255,a[2*f+1]=x[f]>>8}function Ai(a,d){var f=new Uint8Array(32),o=new Uint8Array(32);return bt(f,a),bt(o,d),ue(f,0,o,0)}function Mi(a){var d=new Uint8Array(32);return bt(d,a),d[0]&1}function Jr(a,d){var f;for(f=0;f<16;f++)a[f]=d[2*f]+(d[2*f+1]<<8);a[15]&=32767}function ze(a,d,f){for(var o=0;o<16;o++)a[o]=d[o]+f[o]}function Ge(a,d,f){for(var o=0;o<16;o++)a[o]=d[o]-f[o]}function ne(a,d,f){var o,h,g=0,x=0,C=0,k=0,j=0,A=0,oe=0,D=0,N=0,q=0,Y=0,W=0,K=0,V=0,H=0,O=0,F=0,M=0,U=0,L=0,R=0,v=0,_=0,w=0,S=0,P=0,E=0,G=0,J=0,Z=0,X=0,y=f[0],te=f[1],ae=f[2],ce=f[3],Q=f[4],ie=f[5],se=f[6],xe=f[7],de=f[8],he=f[9],le=f[10],pe=f[11],_e=f[12],Ce=f[13],Pe=f[14],we=f[15];o=d[0],g+=o*y,x+=o*te,C+=o*ae,k+=o*ce,j+=o*Q,A+=o*ie,oe+=o*se,D+=o*xe,N+=o*de,q+=o*he,Y+=o*le,W+=o*pe,K+=o*_e,V+=o*Ce,H+=o*Pe,O+=o*we,o=d[1],x+=o*y,C+=o*te,k+=o*ae,j+=o*ce,A+=o*Q,oe+=o*ie,D+=o*se,N+=o*xe,q+=o*de,Y+=o*he,W+=o*le,K+=o*pe,V+=o*_e,H+=o*Ce,O+=o*Pe,F+=o*we,o=d[2],C+=o*y,k+=o*te,j+=o*ae,A+=o*ce,oe+=o*Q,D+=o*ie,N+=o*se,q+=o*xe,Y+=o*de,W+=o*he,K+=o*le,V+=o*pe,H+=o*_e,O+=o*Ce,F+=o*Pe,M+=o*we,o=d[3],k+=o*y,j+=o*te,A+=o*ae,oe+=o*ce,D+=o*Q,N+=o*ie,q+=o*se,Y+=o*xe,W+=o*de,K+=o*he,V+=o*le,H+=o*pe,O+=o*_e,F+=o*Ce,M+=o*Pe,U+=o*we,o=d[4],j+=o*y,A+=o*te,oe+=o*ae,D+=o*ce,N+=o*Q,q+=o*ie,Y+=o*se,W+=o*xe,K+=o*de,V+=o*he,H+=o*le,O+=o*pe,F+=o*_e,M+=o*Ce,U+=o*Pe,L+=o*we,o=d[5],A+=o*y,oe+=o*te,D+=o*ae,N+=o*ce,q+=o*Q,Y+=o*ie,W+=o*se,K+=o*xe,V+=o*de,H+=o*he,O+=o*le,F+=o*pe,M+=o*_e,U+=o*Ce,L+=o*Pe,R+=o*we,o=d[6],oe+=o*y,D+=o*te,N+=o*ae,q+=o*ce,Y+=o*Q,W+=o*ie,K+=o*se,V+=o*xe,H+=o*de,O+=o*he,F+=o*le,M+=o*pe,U+=o*_e,L+=o*Ce,R+=o*Pe,v+=o*we,o=d[7],D+=o*y,N+=o*te,q+=o*ae,Y+=o*ce,W+=o*Q,K+=o*ie,V+=o*se,H+=o*xe,O+=o*de,F+=o*he,M+=o*le,U+=o*pe,L+=o*_e,R+=o*Ce,v+=o*Pe,_+=o*we,o=d[8],N+=o*y,q+=o*te,Y+=o*ae,W+=o*ce,K+=o*Q,V+=o*ie,H+=o*se,O+=o*xe,F+=o*de,M+=o*he,U+=o*le,L+=o*pe,R+=o*_e,v+=o*Ce,_+=o*Pe,w+=o*we,o=d[9],q+=o*y,Y+=o*te,W+=o*ae,K+=o*ce,V+=o*Q,H+=o*ie,O+=o*se,F+=o*xe,M+=o*de,U+=o*he,L+=o*le,R+=o*pe,v+=o*_e,_+=o*Ce,w+=o*Pe,S+=o*we,o=d[10],Y+=o*y,W+=o*te,K+=o*ae,V+=o*ce,H+=o*Q,O+=o*ie,F+=o*se,M+=o*xe,U+=o*de,L+=o*he,R+=o*le,v+=o*pe,_+=o*_e,w+=o*Ce,S+=o*Pe,P+=o*we,o=d[11],W+=o*y,K+=o*te,V+=o*ae,H+=o*ce,O+=o*Q,F+=o*ie,M+=o*se,U+=o*xe,L+=o*de,R+=o*he,v+=o*le,_+=o*pe,w+=o*_e,S+=o*Ce,P+=o*Pe,E+=o*we,o=d[12],K+=o*y,V+=o*te,H+=o*ae,O+=o*ce,F+=o*Q,M+=o*ie,U+=o*se,L+=o*xe,R+=o*de,v+=o*he,_+=o*le,w+=o*pe,S+=o*_e,P+=o*Ce,E+=o*Pe,G+=o*we,o=d[13],V+=o*y,H+=o*te,O+=o*ae,F+=o*ce,M+=o*Q,U+=o*ie,L+=o*se,R+=o*xe,v+=o*de,_+=o*he,w+=o*le,S+=o*pe,P+=o*_e,E+=o*Ce,G+=o*Pe,J+=o*we,o=d[14],H+=o*y,O+=o*te,F+=o*ae,M+=o*ce,U+=o*Q,L+=o*ie,R+=o*se,v+=o*xe,_+=o*de,w+=o*he,S+=o*le,P+=o*pe,E+=o*_e,G+=o*Ce,J+=o*Pe,Z+=o*we,o=d[15],O+=o*y,F+=o*te,M+=o*ae,U+=o*ce,L+=o*Q,R+=o*ie,v+=o*se,_+=o*xe,w+=o*de,S+=o*he,P+=o*le,E+=o*pe,G+=o*_e,J+=o*Ce,Z+=o*Pe,X+=o*we,g+=38*F,x+=38*M,C+=38*U,k+=38*L,j+=38*R,A+=38*v,oe+=38*_,D+=38*w,N+=38*S,q+=38*P,Y+=38*E,W+=38*G,K+=38*J,V+=38*Z,H+=38*X,h=1,o=g+h+65535,h=Math.floor(o/65536),g=o-h*65536,o=x+h+65535,h=Math.floor(o/65536),x=o-h*65536,o=C+h+65535,h=Math.floor(o/65536),C=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=oe+h+65535,h=Math.floor(o/65536),oe=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=N+h+65535,h=Math.floor(o/65536),N=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=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=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,g+=h-1+37*(h-1),h=1,o=g+h+65535,h=Math.floor(o/65536),g=o-h*65536,o=x+h+65535,h=Math.floor(o/65536),x=o-h*65536,o=C+h+65535,h=Math.floor(o/65536),C=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=oe+h+65535,h=Math.floor(o/65536),oe=o-h*65536,o=D+h+65535,h=Math.floor(o/65536),D=o-h*65536,o=N+h+65535,h=Math.floor(o/65536),N=o-h*65536,o=q+h+65535,h=Math.floor(o/65536),q=o-h*65536,o=Y+h+65535,h=Math.floor(o/65536),Y=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=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,g+=h-1+37*(h-1),a[0]=g,a[1]=x,a[2]=C,a[3]=k,a[4]=j,a[5]=A,a[6]=oe,a[7]=D,a[8]=N,a[9]=q,a[10]=Y,a[11]=W,a[12]=K,a[13]=V,a[14]=H,a[15]=O}function Le(a,d){ne(a,d,d)}function Di(a,d){var f=e(),o;for(o=0;o<16;o++)f[o]=d[o];for(o=253;o>=0;o--)Le(f,f),o!==2&&o!==4&&ne(f,f,d);for(o=0;o<16;o++)a[o]=f[o]}function Oi(a,d){var f=e(),o;for(o=0;o<16;o++)f[o]=d[o];for(o=250;o>=0;o--)Le(f,f),o!==1&&ne(f,f,d);for(o=0;o<16;o++)a[o]=f[o]}function er(a,d,f){var o=new Uint8Array(32),h=new Float64Array(80),g,x,C=e(),k=e(),j=e(),A=e(),oe=e(),D=e();for(x=0;x<31;x++)o[x]=d[x];for(o[31]=d[31]&127|64,o[0]&=248,Jr(h,f),x=0;x<16;x++)k[x]=h[x],A[x]=C[x]=j[x]=0;for(C[0]=A[0]=1,x=254;x>=0;--x)g=o[x>>>3]>>>(x&7)&1,xt(C,k,g),xt(j,A,g),ze(oe,C,j),Ge(C,C,j),ze(j,k,A),Ge(k,k,A),Le(A,oe),Le(D,C),ne(C,j,C),ne(j,k,oe),ze(oe,C,j),Ge(C,C,j),Le(k,C),Ge(j,A,D),ne(C,j,u),ze(C,C,A),ne(j,j,C),ne(C,A,D),ne(A,k,h),Le(k,oe),xt(C,k,g),xt(j,A,g);for(x=0;x<16;x++)h[x+16]=C[x],h[x+32]=j[x],h[x+48]=k[x],h[x+64]=A[x];var N=h.subarray(32),q=h.subarray(16);return Di(N,N),ne(q,q,N),bt(a,q),0}function tr(a,d){return er(a,d,i)}function Ui(a,d){return t(d,32),tr(a,d)}function rr(a,d,f){var o=new Uint8Array(32);return er(o,f,d),Zt(a,r,o,dt)}var Bi=Vr,wo=Wr;function To(a,d,f,o,h,g){var x=new Uint8Array(32);return rr(x,h,g),Bi(a,d,f,o,x)}function Eo(a,d,f,o,h,g){var x=new Uint8Array(32);return rr(x,h,g),wo(a,d,f,o,x)}var Li=[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 ji(a,d,f,o){for(var h=new Int32Array(16),g=new Int32Array(16),x,C,k,j,A,oe,D,N,q,Y,W,K,V,H,O,F,M,U,L,R,v,_,w,S,P,E,G=a[0],J=a[1],Z=a[2],X=a[3],y=a[4],te=a[5],ae=a[6],ce=a[7],Q=d[0],ie=d[1],se=d[2],xe=d[3],de=d[4],he=d[5],le=d[6],pe=d[7],_e=0;o>=128;){for(L=0;L<16;L++)R=8*L+_e,h[L]=f[R+0]<<24|f[R+1]<<16|f[R+2]<<8|f[R+3],g[L]=f[R+4]<<24|f[R+5]<<16|f[R+6]<<8|f[R+7];for(L=0;L<80;L++)if(x=G,C=J,k=Z,j=X,A=y,oe=te,D=ae,N=ce,q=Q,Y=ie,W=se,K=xe,V=de,H=he,O=le,F=pe,v=ce,_=pe,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=(y>>>14|de<<18)^(y>>>18|de<<14)^(de>>>9|y<<23),_=(de>>>14|y<<18)^(de>>>18|y<<14)^(y>>>9|de<<23),w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,v=y&te^~y&ae,_=de&he^~de&le,w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,v=Li[L*2],_=Li[L*2+1],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,v=h[L%16],_=g[L%16],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,M=P&65535|E<<16,U=w&65535|S<<16,v=M,_=U,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=(G>>>28|Q<<4)^(Q>>>2|G<<30)^(Q>>>7|G<<25),_=(Q>>>28|G<<4)^(G>>>2|Q<<30)^(G>>>7|Q<<25),w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,v=G&J^G&Z^J&Z,_=Q&ie^Q&se^ie&se,w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,N=P&65535|E<<16,F=w&65535|S<<16,v=j,_=K,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=M,_=U,w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,j=P&65535|E<<16,K=w&65535|S<<16,J=x,Z=C,X=k,y=j,te=A,ae=oe,ce=D,G=N,ie=q,se=Y,xe=W,de=K,he=V,le=H,pe=O,Q=F,L%16===15)for(R=0;R<16;R++)v=h[R],_=g[R],w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=h[(R+9)%16],_=g[(R+9)%16],w+=_&65535,S+=_>>>16,P+=v&65535,E+=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),w+=_&65535,S+=_>>>16,P+=v&65535,E+=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),w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,h[R]=P&65535|E<<16,g[R]=w&65535|S<<16;v=G,_=Q,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[0],_=d[0],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[0]=G=P&65535|E<<16,d[0]=Q=w&65535|S<<16,v=J,_=ie,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[1],_=d[1],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[1]=J=P&65535|E<<16,d[1]=ie=w&65535|S<<16,v=Z,_=se,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[2],_=d[2],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[2]=Z=P&65535|E<<16,d[2]=se=w&65535|S<<16,v=X,_=xe,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[3],_=d[3],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[3]=X=P&65535|E<<16,d[3]=xe=w&65535|S<<16,v=y,_=de,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[4],_=d[4],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[4]=y=P&65535|E<<16,d[4]=de=w&65535|S<<16,v=te,_=he,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[5],_=d[5],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[5]=te=P&65535|E<<16,d[5]=he=w&65535|S<<16,v=ae,_=le,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[6],_=d[6],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[6]=ae=P&65535|E<<16,d[6]=le=w&65535|S<<16,v=ce,_=pe,w=_&65535,S=_>>>16,P=v&65535,E=v>>>16,v=a[7],_=d[7],w+=_&65535,S+=_>>>16,P+=v&65535,E+=v>>>16,S+=w>>>16,P+=S>>>16,E+=P>>>16,a[7]=ce=P&65535|E<<16,d[7]=pe=w&65535|S<<16,_e+=128,o-=128}return o}function ut(a,d,f){var o=new Int32Array(8),h=new Int32Array(8),g=new Uint8Array(256),x,C=f;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,ji(o,h,d,f),f%=128,x=0;x<f;x++)g[x]=d[C-f+x];for(g[f]=128,f=256-128*(f<112?1:0),g[f-9]=0,z(g,f-8,C/536870912|0,C<<3),ji(o,h,g,f),x=0;x<8;x++)z(a,8*x,o[x],h[x]);return 0}function nr(a,d){var f=e(),o=e(),h=e(),g=e(),x=e(),C=e(),k=e(),j=e(),A=e();Ge(f,a[1],a[0]),Ge(A,d[1],d[0]),ne(f,f,A),ze(o,a[0],a[1]),ze(A,d[0],d[1]),ne(o,o,A),ne(h,a[3],d[3]),ne(h,h,p),ne(g,a[2],d[2]),ze(g,g,g),Ge(x,o,f),Ge(C,g,h),ze(k,g,h),ze(j,o,f),ne(a[0],x,C),ne(a[1],j,k),ne(a[2],k,C),ne(a[3],x,j)}function Fi(a,d,f){var o;for(o=0;o<4;o++)xt(a[o],d[o],f)}function Xr(a,d){var f=e(),o=e(),h=e();Di(h,d[2]),ne(f,d[0],h),ne(o,d[1],h),bt(a,o),a[31]^=Mi(f)<<7}function Zr(a,d,f){var o,h;for(Ze(a[0],s),Ze(a[1],c),Ze(a[2],c),Ze(a[3],s),h=255;h>=0;--h)o=f[h/8|0]>>(h&7)&1,Fi(a,d,o),nr(d,a),nr(a,a),Fi(a,d,o)}function ir(a,d){var f=[e(),e(),e(),e()];Ze(f[0],m),Ze(f[1],b),Ze(f[2],c),ne(f[3],m,b),Zr(a,f,d)}function Qr(a,d,f){var o=new Uint8Array(64),h=[e(),e(),e(),e()],g;for(f||t(d,32),ut(o,d,32),o[0]&=248,o[31]&=127,o[31]|=64,ir(h,o),Xr(a,h),g=0;g<32;g++)d[g+32]=a[g];return 0}var sr=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 en(a,d){var f,o,h,g;for(o=63;o>=32;--o){for(f=0,h=o-32,g=o-12;h<g;++h)d[h]+=f-16*d[o]*sr[h-(o-32)],f=Math.floor((d[h]+128)/256),d[h]-=f*256;d[h]+=f,d[o]=0}for(f=0,h=0;h<32;h++)d[h]+=f-(d[31]>>4)*sr[h],f=d[h]>>8,d[h]&=255;for(h=0;h<32;h++)d[h]-=f*sr[h];for(o=0;o<32;o++)d[o+1]+=d[o]>>8,a[o]=d[o]&255}function tn(a){var d=new Float64Array(64),f;for(f=0;f<64;f++)d[f]=a[f];for(f=0;f<64;f++)a[f]=0;en(a,d)}function zi(a,d,f,o){var h=new Uint8Array(64),g=new Uint8Array(64),x=new Uint8Array(64),C,k,j=new Float64Array(64),A=[e(),e(),e(),e()];ut(h,o,32),h[0]&=248,h[31]&=127,h[31]|=64;var oe=f+64;for(C=0;C<f;C++)a[64+C]=d[C];for(C=0;C<32;C++)a[32+C]=h[32+C];for(ut(x,a.subarray(32),f+32),tn(x),ir(A,x),Xr(a,A),C=32;C<64;C++)a[C]=o[C];for(ut(g,a,f+64),tn(g),C=0;C<64;C++)j[C]=0;for(C=0;C<32;C++)j[C]=x[C];for(C=0;C<32;C++)for(k=0;k<32;k++)j[C+k]+=g[C]*h[k];return en(a.subarray(32),j),oe}function Io(a,d){var f=e(),o=e(),h=e(),g=e(),x=e(),C=e(),k=e();return Ze(a[2],c),Jr(a[1],d),Le(h,a[1]),ne(g,h,l),Ge(h,h,a[2]),ze(g,a[2],g),Le(x,g),Le(C,x),ne(k,C,x),ne(f,k,h),ne(f,f,g),Oi(f,f),ne(f,f,h),ne(f,f,g),ne(f,f,g),ne(a[0],f,g),Le(o,a[0]),ne(o,o,g),Ai(o,h)&&ne(a[0],a[0],I),Le(o,a[0]),ne(o,o,g),Ai(o,h)?-1:(Mi(a[0])===d[31]>>7&&Ge(a[0],s,a[0]),ne(a[3],a[0],a[1]),0)}function rn(a,d,f,o){var h,g=new Uint8Array(32),x=new Uint8Array(64),C=[e(),e(),e(),e()],k=[e(),e(),e(),e()];if(f<64||Io(k,o))return-1;for(h=0;h<f;h++)a[h]=d[h];for(h=0;h<32;h++)a[h+32]=o[h];if(ut(x,a,f),tn(x),Zr(C,k,x),ir(k,d.subarray(32)),nr(C,k),Xr(g,C),f-=64,ue(d,0,g,0)){for(h=0;h<f;h++)a[h]=0;return-1}for(h=0;h<f;h++)a[h]=d[h+64];return f}var nn=32,or=24,Tt=32,vt=16,Et=32,ar=32,It=32,kt=32,sn=32,Gi=or,ko=Tt,Ro=vt,Qe=64,ht=32,_t=64,on=32,an=64;n.lowlevel={crypto_core_hsalsa20:Zt,crypto_stream_xor:Kr,crypto_stream:ki,crypto_stream_salsa20_xor:Ei,crypto_stream_salsa20:Ii,crypto_onetimeauth:Hr,crypto_onetimeauth_verify:Ri,crypto_verify_16:fe,crypto_verify_32:ue,crypto_secretbox:Vr,crypto_secretbox_open:Wr,crypto_scalarmult:er,crypto_scalarmult_base:tr,crypto_box_beforenm:rr,crypto_box_afternm:Bi,crypto_box:To,crypto_box_open:Eo,crypto_box_keypair:Ui,crypto_hash:ut,crypto_sign:zi,crypto_sign_keypair:Qr,crypto_sign_open:rn,crypto_secretbox_KEYBYTES:nn,crypto_secretbox_NONCEBYTES:or,crypto_secretbox_ZEROBYTES:Tt,crypto_secretbox_BOXZEROBYTES:vt,crypto_scalarmult_BYTES:Et,crypto_scalarmult_SCALARBYTES:ar,crypto_box_PUBLICKEYBYTES:It,crypto_box_SECRETKEYBYTES:kt,crypto_box_BEFORENMBYTES:sn,crypto_box_NONCEBYTES:Gi,crypto_box_ZEROBYTES:ko,crypto_box_BOXZEROBYTES:Ro,crypto_sign_BYTES:Qe,crypto_sign_PUBLICKEYBYTES:ht,crypto_sign_SECRETKEYBYTES:_t,crypto_sign_SEEDBYTES:on,crypto_hash_BYTES:an,gf:e,D:l,L:sr,pack25519:bt,unpack25519:Jr,M:ne,A:ze,S:Le,Z:Ge,pow2523:Oi,add:nr,set25519:Ze,modL:en,scalarmult:Zr,scalarbase:ir};function $i(a,d){if(a.length!==nn)throw new Error("bad key size");if(d.length!==or)throw new Error("bad nonce size")}function Ao(a,d){if(a.length!==It)throw new Error("bad public key size");if(d.length!==kt)throw new Error("bad secret key size")}function Be(){for(var a=0;a<arguments.length;a++)if(!(arguments[a]instanceof Uint8Array))throw new TypeError("unexpected type, use Uint8Array")}function Ni(a){for(var d=0;d<a.length;d++)a[d]=0}n.randomBytes=function(a){var d=new Uint8Array(a);return t(d,a),d},n.secretbox=function(a,d,f){Be(a,d,f),$i(f,d);for(var o=new Uint8Array(Tt+a.length),h=new Uint8Array(o.length),g=0;g<a.length;g++)o[g+Tt]=a[g];return Vr(h,o,o.length,d,f),h.subarray(vt)},n.secretbox.open=function(a,d,f){Be(a,d,f),$i(f,d);for(var o=new Uint8Array(vt+a.length),h=new Uint8Array(o.length),g=0;g<a.length;g++)o[g+vt]=a[g];return o.length<32||Wr(h,o,o.length,d,f)!==0?null:h.subarray(Tt)},n.secretbox.keyLength=nn,n.secretbox.nonceLength=or,n.secretbox.overheadLength=vt,n.scalarMult=function(a,d){if(Be(a,d),a.length!==ar)throw new Error("bad n size");if(d.length!==Et)throw new Error("bad p size");var f=new Uint8Array(Et);return er(f,a,d),f},n.scalarMult.base=function(a){if(Be(a),a.length!==ar)throw new Error("bad n size");var d=new Uint8Array(Et);return tr(d,a),d},n.scalarMult.scalarLength=ar,n.scalarMult.groupElementLength=Et,n.box=function(a,d,f,o){var h=n.box.before(f,o);return n.secretbox(a,d,h)},n.box.before=function(a,d){Be(a,d),Ao(a,d);var f=new Uint8Array(sn);return rr(f,a,d),f},n.box.after=n.secretbox,n.box.open=function(a,d,f,o){var h=n.box.before(f,o);return n.secretbox.open(a,d,h)},n.box.open.after=n.secretbox.open,n.box.keyPair=function(){var a=new Uint8Array(It),d=new Uint8Array(kt);return Ui(a,d),{publicKey:a,secretKey:d}},n.box.keyPair.fromSecretKey=function(a){if(Be(a),a.length!==kt)throw new Error("bad secret key size");var d=new Uint8Array(It);return tr(d,a),{publicKey:d,secretKey:new Uint8Array(a)}},n.box.publicKeyLength=It,n.box.secretKeyLength=kt,n.box.sharedKeyLength=sn,n.box.nonceLength=Gi,n.box.overheadLength=n.secretbox.overheadLength,n.sign=function(a,d){if(Be(a,d),d.length!==_t)throw new Error("bad secret key size");var f=new Uint8Array(Qe+a.length);return zi(f,a,a.length,d),f},n.sign.open=function(a,d){if(Be(a,d),d.length!==ht)throw new Error("bad public key size");var f=new Uint8Array(a.length),o=rn(f,a,a.length,d);if(o<0)return null;for(var h=new Uint8Array(o),g=0;g<h.length;g++)h[g]=f[g];return h},n.sign.detached=function(a,d){for(var f=n.sign(a,d),o=new Uint8Array(Qe),h=0;h<o.length;h++)o[h]=f[h];return o},n.sign.detached.verify=function(a,d,f){if(Be(a,d,f),d.length!==Qe)throw new Error("bad signature size");if(f.length!==ht)throw new Error("bad public key size");var o=new Uint8Array(Qe+a.length),h=new Uint8Array(Qe+a.length),g;for(g=0;g<Qe;g++)o[g]=d[g];for(g=0;g<a.length;g++)o[g+Qe]=a[g];return rn(h,o,o.length,f)>=0},n.sign.keyPair=function(){var a=new Uint8Array(ht),d=new Uint8Array(_t);return Qr(a,d),{publicKey:a,secretKey:d}},n.sign.keyPair.fromSecretKey=function(a){if(Be(a),a.length!==_t)throw new Error("bad secret key size");for(var d=new Uint8Array(ht),f=0;f<d.length;f++)d[f]=a[32+f];return{publicKey:d,secretKey:new Uint8Array(a)}},n.sign.keyPair.fromSeed=function(a){if(Be(a),a.length!==on)throw new Error("bad seed size");for(var d=new Uint8Array(ht),f=new Uint8Array(_t),o=0;o<32;o++)f[o]=a[o];return Qr(d,f,!0),{publicKey:d,secretKey:f}},n.sign.publicKeyLength=ht,n.sign.secretKeyLength=_t,n.sign.seedLength=on,n.sign.signatureLength=Qe,n.hash=function(a){Be(a);var d=new Uint8Array(an);return ut(d,a,a.length),d},n.hash.hashLength=an,n.verify=function(a,d){return Be(a,d),a.length===0||d.length===0||a.length!==d.length?!1:re(a,0,d,0,a.length)===0},n.setPRNG=function(a){t=a},(function(){var a=typeof self<"u"?self.crypto||self.msCrypto:null;if(a&&a.getRandomValues){var d=65536;n.setPRNG(function(f,o){var h,g=new Uint8Array(o);for(h=0;h<o;h+=d)a.getRandomValues(g.subarray(h,h+Math.min(o-h,d)));for(h=0;h<o;h++)f[h]=g[h];Ni(g)})}else typeof cn<"u"&&(a=qi(),a&&a.randomBytes&&n.setPRNG(function(f,o){var h,g=a.randomBytes(o);for(h=0;h<o;h++)f[h]=g[h];Ni(g)}))})()})(typeof fr<"u"&&fr.exports?fr.exports:self.nacl=self.nacl||{})});var dn=$((Ki,dr)=>{(function(n,e){"use strict";typeof dr<"u"&&dr.exports?dr.exports=e():(n.nacl||(n.nacl={}),n.nacl.util=e())})(Ki,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 Vi=$((Kf,Hi)=>{var un=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)}};Hi.exports=un});var ln=$((Hf,Wi)=>{var ye=class ye{fastPow(e,t,r){if(r===BigInt(1))return BigInt(0);let i=BigInt(1),s=e%r,c=t;for(;c>0;)(c&BigInt(1))===BigInt(1)&&(i=i*s%r),c=c>>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 c=BigInt(0);c<r;c+=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)}};cr(ye,"p",BigInt("170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979")),cr(ye,"pHalf",ye.p-BigInt(1)>>BigInt(1)),cr(ye,"pQuarter",ye.p+BigInt(1)>>BigInt(2));var hn=ye;Wi.exports=hn});var yn=$((Wf,Ji)=>{var Yi=ln(),pn=class{static async compute(e,t){let r=new Yi,i=BigInt(`0x${e}`);return r.generateProofVDF(t,i).toString(16)}static async verify(e,t,r){let i=new Yi,s=BigInt(`0x${e}`),c=BigInt(`0x${r}`);return i.verifyProofVDF(t,s,c)}};Ji.exports=pn});var vn=$((Yf,es)=>{var Me=fn(),me=dn(),mn=yn(),ur={enabled:!0,signingEnabled:!0,encryptionEnabled:!0,powEnabled:!0,powTargetMs:1e3,appPassword:"change-this-app-password",broadcastPasswords:{},resolveBroadcastPassword:null,powSteps:22,trustedPeerKeys:{},kdfIterations:1e5};function At(n){return n===null||typeof n!="object"?JSON.stringify(n):Array.isArray(n)?`[${n.map(t=>At(t)).join(",")}]`:`{${Object.keys(n).sort().map(t=>`${JSON.stringify(t)}:${At(n[t])}`).join(",")}}`}function Zi(n,e){let t=new Uint8Array(n.length+e.length);return t.set(n,0),t.set(e,n.length),t}function hr(n){return Me.hash(n).slice(0,32)}function Xi(n){return Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")}function Mt(n){return me.decodeUTF8(n)}async function xn(n,e,t){let r=globalThis.crypto&&globalThis.crypto.subtle;if(r){let i=await r.importKey("raw",Mt(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}=cn("crypto");return new Uint8Array(i(n,Buffer.from(e),t,32,"sha256"))}catch{return hr(Zi(Mt(n),e))}}function Qi(n,e){return hr(Zi(Mt(n),e))}function gn(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 bn=class{constructor({nodeId:e,options:t={},now:r}={}){if(!e)throw new Error("MessageSecurityService requires nodeId");this.nodeId=e,this.options={...ur,...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:me.encodeBase64(this.signingPublicKey),encryptionPublicKey:me.encodeBase64(this.encryptionPublicKey)},this.peerPublicKeys=new Map;for(let[s,c]of Object.entries(this.options.trustedPeerKeys||{}))this.peerPublicKeys.set(s,gn(c));this.calibratedPowSteps=this.options.powSteps}getPublicKey(){return{...this.publicKeyBundle}}registerPeerPublicKey(e,t){this.peerPublicKeys.set(e,gn(t))}resolvePeerPublicKey(e,t){let r=this.peerPublicKeys.get(e),i=t?gn(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}),c=await this.encryptPayload({payload:t,targetId:r,securityContext:i});if(s.payload=c.payload,s.security={encryption:c.security,signing:{enabled:!1},pow:{enabled:!1}},this.options.powEnabled){let u=await this.generatePow(s);s.security.pow={enabled:!0,messageHash:u.messageHash,challenge:u.challenge,proof:u.proof,steps:u.steps,durationMs:u.durationMs}}if(this.options.signingEnabled){let u=this.canonicalSigningInput(s),l=Me.sign.detached(me.decodeUTF8(u),this.signingSecretKey);s.security.signing={enabled:!0,algorithm:"ed25519",signature:me.encodeBase64(l)}}return s}canonicalSigningInput(e){return At({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 At({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 Xi(hr(Mt(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=me.decodeUTF8(JSON.stringify(e));if(t){let I=this.resolvePeerPublicKey(t,null);if(!I)throw new Error(`Missing public key for target peer ${t}`);let z=Me.randomBytes(Me.box.nonceLength),re=Me.box(i,z,me.decodeBase64(I.encryptionPublicKey),this.encryptionSecretKey);return{payload:me.encodeBase64(re),security:{enabled:!0,mode:"direct",nonce:me.encodeBase64(z),senderEncryptionPublicKey:this.publicKeyBundle.encryptionPublicKey}}}let s=r.broadcastScope||"default",c=Me.randomBytes(Me.secretbox.nonceLength),u=Me.randomBytes(16),l=this.resolveBroadcastPassword(s),p=this.options.kdfIterations||ur.kdfIterations,m=await xn(l,u,p),b=Me.secretbox(i,c,m);return{payload:me.encodeBase64(b),security:{enabled:!0,mode:"broadcast",scope:s,nonce:me.encodeBase64(c),salt:me.encodeBase64(u),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=me.decodeBase64(e.payload);if(t.mode==="broadcast"){let i=t.scope||"default",s=this.resolveBroadcastPassword(i),c=me.decodeBase64(t.salt),u=me.decodeBase64(t.nonce),l;if(t.kdf==="pbkdf2"){let m=this.options.kdfIterations||ur.kdfIterations,b=t.kdfIterations||m,I=Math.max(1e3,Math.floor(m*.1)),z=m*2;if(b<I||b>z)throw new Error(`Invalid kdfIterations: ${b}`);l=await xn(s,c,b)}else l=Qi(s,c);let p=Me.secretbox.open(r,u,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),c=Me.box.open(r,s,i,this.encryptionSecretKey);if(!c)throw new Error("Unable to decrypt direct payload");return JSON.parse(me.encodeUTF8(c))}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(me.decodeUTF8(r),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=Xi(hr(Mt(`probe:${this.nodeId}:${this.now()}`))),r=BigInt(2),i=this.now();await mn.compute(t,r);let s=Math.max(1,this.now()-i),c=Math.max(1,Math.round(e/s*Number(r)));return this.calibratedPowSteps=BigInt(c),this.calibratedPowSteps}async generatePow(e){let t=this.computePowMessageHash(e),r=t,i=await this.determinePowSteps(),s=this.now(),c=await mn.compute(r,i),u=this.now()-s;return{messageHash:t,challenge:r,proof:c,steps:i.toString(),durationMs:u}}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 mn.verify(r.messageHash,BigInt(r.steps),r.proof)){let s=new Error("PoW verification failed");throw s.code="INVALID_POW",s}return!0}};es.exports={MessageSecurityService:bn,stableStringify:At,deriveBroadcastKey:xn,legacyBroadcastKey:Qi,DEFAULT_SECURITY_OPTIONS:ur}});var Sn=$((Jf,ts)=>{var lr="gossip:",Uo={fanout:3,maxActivePeers:8,maxHops:6,relayEnabled:!0};function Bo(n){if(!n)throw new Error("peerGroupScope requires groupId");return`${lr}${n}`}function Lo(n){return!n||!n.startsWith(lr)?null:n.slice(lr.length)}function _n(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 jo({peers:n,count:e,excludePeerIds:t=[],connectedPeerIds:r=[],randomFn:i=Math.random}){let s=new Set(t.filter(Boolean)),c=n.map(b=>b.peerId||b).filter(b=>b&&!s.has(b)),u=new Set(r.filter(Boolean)),l=c.filter(b=>u.has(b)),p=c.filter(b=>!u.has(b));return[..._n(l,i),..._n(p,i)].slice(0,Math.max(0,e))}ts.exports={PEER_GROUP_SCOPE_PREFIX:lr,DEFAULT_PEER_GROUP_OPTIONS:Uo,peerGroupScope:Bo,parsePeerGroupScope:Lo,shufflePeerIds:_n,selectFanoutPeers:jo}});var ns=$((Xf,rs)=>{var Fo=fn(),zo=dn(),Go=Vi(),{MessageSecurityService:$o,stableStringify:No}=vn(),{DEFAULT_PEER_GROUP_OPTIONS:Cn,peerGroupScope:qo,selectFanoutPeers:Ko}=Sn();function Dt(n){let e=No(n||{}),t=zo.decodeUTF8(e),r=Fo.hash(t);return`sha512:${Array.from(r,s=>s.toString(16).padStart(2,"0")).join("")}`}var Pn=class extends Go{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 $o({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:Cn.fanout,this.defaultPeerGroupMaxActivePeers=s&&typeof s.peerGroupMaxActivePeers=="number"?s.peerGroupMaxActivePeers:Cn.maxActivePeers,this.defaultGossipMaxHops=s&&typeof s.gossipMaxHops=="number"?s.gossipMaxHops:Cn.maxHops,this.globalMaxOpenConnections=s&&typeof s.globalMaxOpenConnections=="number"?s.globalMaxOpenConnections:32,this.gossipIdTtlMs=s&&typeof s.gossipIdTtlMs=="number"?s.gossipIdTtlMs:300*1e3,this.maxAppliedOperations=s&&typeof s.maxAppliedOperations=="number"?s.maxAppliedOperations:5e4,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)}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||Dt(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,c=[i.ownerId,...i.collaboratorIds||[]];return[...new Set(c.filter(Boolean).filter(u=>s||u!==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 c of this.getRecordPeerIds(e,t,{fromRecord:i.fromRecord,includeSelf:!0}))s.add(c);else if(t)for(let c of this.getRecordPeerIds(e,t,{includeSelf:!0}))s.add(c);if(Array.isArray(r.collaborators))for(let c of this.normalizeCollaboratorIds(r.collaborators))s.add(c);if(Array.isArray(i.extraPeerIds))for(let c of i.extraPeerIds)c&&s.add(c);return[...s].filter(c=>c&&c!==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 c=this.now(),u=this.normalizeCollaboratorIds(r.collaborators),l={opId:this.idGenerator(),kind:"create",collectionName:e,id:s,actorId:this.nodeId,ownerId:this.nodeId,collaboratorIds:u,timestamp:c,payload:{...t||{}}};return this.applyOperation(l),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 c of r.values())if(!(c.deletedAt&&!i)){if(c.deletedAt&&i){s.push({id:c.id,ownerId:c.ownerId,deletedAt:c.deletedAt,version:c.version});continue}s.push(this.normalizeRecord(c))}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 u=new Error(`Version conflict on ${e}/${t}: expected ${i.expectedVersion}, current ${s.version}`);throw u.code="VERSION_CONFLICT",u}let c={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&&(c.collaboratorIds=this.normalizeCollaboratorIds(i.collaborators)),this.applyOperation(c),await this.broadcastMessage("operation",c,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:c,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 c=0;c<s;c+=1){let u=this.read(e,t);if(!u)throw new Error(`Object ${t} does not exist in ${e}`);let l=await r(u);try{return await this.update(e,t,l,{...i,expectedVersion:u.version})}catch(p){if(p.code!=="VERSION_CONFLICT"||c===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 c={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(c),await this.broadcastMessage("operation",c,{broadcastScope:i.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:c,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.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){this.securityService.registerPeerPublicKey(e,t)}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}),c=r.fanoutPeerIds;if(Array.isArray(c)&&c.length>0&&typeof this.networkAdapter.sendToPeers=="function"){await this.networkAdapter.sendToPeers(s,c);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 qo(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)}hasSeenGossip(e){return e?(this.pruneSeenGossip(),this.seenGossipIds.has(e)):!1}markSeenGossip(e){e&&this.seenGossipIds.set(e,this.now()+this.gossipIdTtlMs)}listConnectedPeerIds(){return typeof this.networkAdapter.listOpenPeerIds=="function"?this.networkAdapter.listOpenPeerIds():[]}selectPeerGroupFanout(e,t,r=[]){let i=this.peerGroupScopeFor(e),s=this.listPeers(i,{includeSelf:!1});return Ko({peers:s,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(c){this.emit("warning",{type:"peer-disconnect-failed",peerId:s,error:c})}}async joinPeerGroup(e,t={}){if(!e)throw new Error("joinPeerGroup requires groupId");let r=this.peerGroupScopeFor(e),i={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};return await this.joinDiscovery(r,{metadata:{peerGroup:e,...t.metadata||{}},bootstrapPeerIds:t.bootstrapPeerIds,heartbeatIntervalMs:t.heartbeatIntervalMs,ttlMs:t.ttlMs}),this.peerGroups.set(e,i),this.emit("peergroupjoined",{groupId:e,config:i}),i}async leavePeerGroup(e){if(!e)return;let t=this.peerGroupScopeFor(e);await this.leaveDiscovery(t),this.peerGroups.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`);let c=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,u=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,l=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p=this.selectPeerGroupFanout(e,c,[this.nodeId]);p.length>0&&(await this.ensureConnectedToPeers(p.slice(0,u)),await this.enforceConnectionBudget());let m=i.gossipId||this.idGenerator();return this.markSeenGossip(m),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:m,publisherId:this.nodeId,hop:0,maxHop:l,innerMessageType:t,innerPayload:r},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:p}),{gossipId:m,fanoutPeerIds:p}}async publishRecordToPeerGroup(e,t,r,i={}){let c=this.getCollection(t).get(r);if(!c||c.deletedAt)throw new Error(`Object ${r} does not exist in ${t}`);let u=this.normalizeRecord(c);return this.publishToPeerGroup(e,"record:snapshot",{collectionName:t,record:u},i)}async handlePeerGroupGossip(e){let t=e.payload||{},{groupId:r,gossipId:i,publisherId:s=e.senderId,hop:c=0,maxHop:u,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 m=this.peerGroups.get(r),b=m?m.maxHops:this.defaultGossipMaxHops,I=typeof u=="number"?Math.min(u,b):b;if(!m||m.relayEnabled===!1||c>=I)return;let z=this.selectPeerGroupFanout(r,m.fanout,[e.senderId,this.nodeId]);z.length!==0&&(await this.ensureConnectedToPeers(z.slice(0,m.maxActivePeers)),await this.enforceConnectionBudget(),await this.broadcastMessage("peer-group:gossip",{groupId:r,gossipId:i,publisherId:s,hop:c+1,maxHop:I,innerMessageType:l,innerPayload:p},{broadcastScope:this.peerGroupScopeFor(r),fanoutPeerIds:z}))}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==="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 c=this.getPresenceMap(e),u=c.get(t),l={peerId:t,scope:e,metadata:r?{...r}:{},lastSeenAt:s,expiresAt:s+i};return c.set(t,l),this.trustPeerFromMetadata(t,l.metadata),u||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,c={publicKey:this.getPublicKey(),...t.metadata||{}},u=Array.isArray(t.bootstrapPeerIds)?[...new Set(t.bootstrapPeerIds.filter(Boolean))]:[],l=this.discoveryRooms.get(r);l&&l.timer&&clearInterval(l.timer),u.length>0&&await this.ensureConnectedToPeers(u);let p=setInterval(()=>{this.announcePresence(r).catch(m=>{this.emit("warning",{type:"presence-heartbeat-failed",scope:r,error:m})})},i);this.discoveryRooms.set(r,{metadata:c,bootstrapPeerIds:u,heartbeatIntervalMs:i,ttlMs:s,timer:p}),this.upsertPresence(r,this.nodeId,c,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||{},c=this.now();this.upsertPresence(r,this.nodeId,s,i.ttlMs,c),await this.broadcastMessage("presence:announce",{scope:r,peerId:this.nodeId,metadata:s,ttlMs:i.ttlMs,announcedAt:c},{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(c=>i||c.peerId!==this.nodeId).map(c=>({peerId:c.peerId,scope:c.scope,metadata:{...c.metadata},lastSeenAt:c.lastSeenAt,expiresAt:c.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(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)&&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 c=this.discoveryRooms.get(i),l=!this.getPresenceMap(i).has(s),p=typeof r.ttlMs=="number"?r.ttlMs:c.ttlMs,m=Math.min(p,c.ttlMs);this.upsertPresence(i,s,r.metadata||{},m,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(b=>{this.emit("warning",{type:"peer-connect-failed",scope:i,peerId:s,error:b})}),this.announcePresence(i).catch(b=>{this.emit("warning",{type:"presence-handshake-failed",scope:i,error:b})}));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 c=this.presenceByScope.get(i);c&&s&&c.has(s)&&(c.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 c={...t.data||{}},u=Dt(c),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!==u&&(this.emit("warning",{type:"content-hash-mismatch",collection:e,id:t.id,advertisedHash:t.hash,computedHash:u,via:r.via||null}),l))return!1}else{let m={type:"content-hash-missing",collection:e,id:t.id,via:r.via||null};if(this.emit("warning",m),l)return!1}return i.set(t.id,{id:t.id,ownerId:t.ownerId,collaboratorIds:this.normalizeCollaboratorIds(t.collaboratorIds),data:c,hash:u,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 c={id:s.id,ownerId:s.ownerId,collaboratorIds:Array.isArray(s.collaboratorIds)?[...s.collaboratorIds]:[],data:{...s.data||{}},hash:s.hash||Dt(s.data||{}),createdAt:s.createdAt,updatedAt:s.updatedAt,deletedAt:s.deletedAt||null,version:s.version};return await this.broadcastMessage("record:snapshot",{collectionName:e,record:c},{broadcastScope:r.broadcastScope||this.resolveBroadcastScope({messageType:"record:snapshot",collectionName:e,id:t}),connectToPeers:this.resolveReplicationPeers(e,t,r,{fromRecord:s})}),c}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:Dt(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(c=>c!==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=Dt(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}};rs.exports=Pn});var Tn=$((Zf,is)=>{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}};is.exports=wn});var pr=$((Qf,os)=>{function ss(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 En=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 c of this.messageHandlers)c(s)}})}buildConnectionUrl(){if(!/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(this.url))return this.url;let t=`dignityjs_${ss(10)}`,r=ss(10),i=this.url.includes("?"),s=/[?&]id=/.test(this.url),c=/[?&]token=/.test(this.url),u=this.url;return s||(u+=`${i?"&":"?"}id=${t}`),c||(u+=`${u.includes("?")?"&":"?"}token=${r}`),u}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)}};os.exports=En});var In=$((ed,as)=>{function Ho(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",c=e.pathname||"/";return c.endsWith("/peerjs")&&(c=c.slice(0,-7)||"/"),c!=="/"&&!c.endsWith("/")&&(c+="/"),{secure:t,host:r,port:i,path:c,key:s}}as.exports=Ho});var cs=$((td,mr)=>{function An(n,e,t,r){Object.defineProperty(n,e,{get:t,set:r,enumerable:!0,configurable:!0})}An(mr.exports,"unpack",()=>Wo);An(mr.exports,"pack",()=>Yo);An(mr.exports,"Packer",()=>yr);var kn=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 Vo(e).buffer}};function Vo(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 Wo(n){return new Rn(n).unpack()}function Yo(n){let e=new yr,t=e.pack(n);return t instanceof Promise?t.then(()=>e.getBuffer()):e.getBuffer()}var Rn=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,c;for(;r<e;)s=t[r],s<160?(c=s,r++):(s^192)<32?(c=(s&31)<<6|t[r+1]&63,r+=2):(s^224)<16?(c=(s&15)<<12|(t[r+1]&63)<<6|t[r+2]&63,r+=3):(c=(s&7)<<18|(t[r+1]&63)<<12|(t[r+2]&63)<<6|t[r+3]&63,r+=4),i+=String.fromCodePoint(c);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,c=(e&1048575|1048576)*2**(i-20)+t*2**(i-52);return(r===0?1:-1)*c}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")}},yr=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),c=2**32,u=t<<31|r+1023<<20|s/c&1048575,l=s%c;this._bufferBuilder.append(203),this.pack_int32(u),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 c=t[s];if(e.hasOwnProperty(c)){this.pack(c);let u=this.pack(e[c]);if(u instanceof Promise)return u.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 kn,this._textEncoder=new TextEncoder}}});var nt=$(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.compactObject=hs;je.deprecated=na;je.detectBrowser=ia;je.disableLog=ea;je.disableWarnings=ta;je.extractVersion=Ot;je.filterStats=sa;je.log=ra;je.walkStats=gr;je.wrapPeerConnectionEvent=Qo;function Jo(n,e,t){return(e=Xo(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Xo(n){var e=Zo(n,"string");return rt(e)=="symbol"?e:e+""}function Zo(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 ds=!0,us=!0;function Ot(n,e,t){var r=n.match(e);return r&&r.length>=t&&parseFloat(r[t],10)}function Qo(n,e,t){if(n.RTCPeerConnection){var r=n.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(c,u){if(c!==e)return i.apply(this,arguments);var l=function(m){var b=t(m);b&&(u.handleEvent?u.handleEvent(b):u(b))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(u,l),i.apply(this,[c,l])};var s=r.removeEventListener;r.removeEventListener=function(c,u){if(c!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(u))return s.apply(this,arguments);var l=this._eventMap[e].get(u);return this._eventMap[e].delete(u),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[c,l])},Object.defineProperty(r,"on"+e,{get:function(){return this["_on"+e]},set:function(u){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),u&&this.addEventListener(e,this["_on"+e]=u)},enumerable:!0,configurable:!0})}}function ea(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):(ds=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function ta(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):(us=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function ra(){if((typeof window>"u"?"undefined":rt(window))==="object"){if(ds)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function na(n,e){us&&console.warn(n+" is deprecated, please use "+e+" instead.")}function ia(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(Ot(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(Ot(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(Ot(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=Ot(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function fs(n){return Object.prototype.toString.call(n)==="[object Object]"}function hs(n){return fs(n)?Object.keys(n).reduce(function(e,t){var r=fs(n[t]),i=r?hs(n[t]):n[t],s=r&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,Jo({},t,i))},{}):n}function gr(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(function(r){r.endsWith("Id")?gr(n,n.get(e[r]),t):r.endsWith("Ids")&&e[r].forEach(function(i){gr(n,n.get(i),t)})}))}function sa(n,e,t){var r=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;var s=[];return n.forEach(function(c){c.type==="track"&&c.trackIdentifier===e.id&&s.push(c)}),s.forEach(function(c){n.forEach(function(u){u.type===r&&u.trackId===c.id&&gr(n,u,i)})}),i}});var ys=$(Mn=>{"use strict";Object.defineProperty(Mn,"__esModule",{value:!0});Mn.shimGetUserMedia=aa;var oa=ps(nt());function ps(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(ps=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||it(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);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 ls=oa.log;function aa(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 m={};return Object.keys(p).forEach(function(b){if(!(b==="require"||b==="advanced"||b==="mediaSource")){var I=it(p[b])==="object"?p[b]:{ideal:p[b]};I.exact!==void 0&&typeof I.exact=="number"&&(I.min=I.max=I.exact);var z=function(ue,be){return ue?ue+be.charAt(0).toUpperCase()+be.slice(1):be==="deviceId"?"sourceId":be};if(I.ideal!==void 0){m.optional=m.optional||[];var re={};typeof I.ideal=="number"?(re[z("min",b)]=I.ideal,m.optional.push(re),re={},re[z("max",b)]=I.ideal,m.optional.push(re)):(re[z("",b)]=I.ideal,m.optional.push(re))}I.exact!==void 0&&typeof I.exact!="number"?(m.mandatory=m.mandatory||{},m.mandatory[z("",b)]=I.exact):["min","max"].forEach(function(fe){I[fe]!==void 0&&(m.mandatory=m.mandatory||{},m.mandatory[z(fe,b)]=I[fe])})}}),p.advanced&&(m.optional=(m.optional||[]).concat(p.advanced)),m},i=function(p,m){if(e.version>=61)return m(p);if(p=JSON.parse(JSON.stringify(p)),p&&it(p.audio)==="object"){var b=function(ue,be,gt){be in ue&&!(gt in ue)&&(ue[gt]=ue[be],delete ue[be])};p=JSON.parse(JSON.stringify(p)),b(p.audio,"autoGainControl","googAutoGainControl"),b(p.audio,"noiseSuppression","googNoiseSuppression"),p.audio=r(p.audio)}if(p&&it(p.video)==="object"){var I=p.video.facingMode;I=I&&(it(I)==="object"?I:{ideal:I});var z=e.version<66;if(I&&(I.exact==="user"||I.exact==="environment"||I.ideal==="user"||I.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!z)){delete p.video.facingMode;var re;if(I.exact==="environment"||I.ideal==="environment"?re=["back","rear"]:(I.exact==="user"||I.ideal==="user")&&(re=["front"]),re)return t.mediaDevices.enumerateDevices().then(function(fe){fe=fe.filter(function(be){return be.kind==="videoinput"});var ue=fe.find(function(be){return re.some(function(gt){return be.label.toLowerCase().includes(gt)})});return!ue&&fe.length&&re.includes("back")&&(ue=fe[fe.length-1]),ue&&(p.video.deviceId=I.exact?{exact:ue.deviceId}:{ideal:ue.deviceId}),p.video=r(p.video),ls("chrome: "+JSON.stringify(p)),m(p)})}p.video=r(p.video)}return ls("chrome: "+JSON.stringify(p)),m(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}}},c=function(p,m,b){i(p,function(I){t.webkitGetUserMedia(I,m,function(z){b&&b(s(z))})})};if(t.getUserMedia=c.bind(t),t.mediaDevices.getUserMedia){var u=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(l){return i(l,function(p){return u(p).then(function(m){if(p.audio&&!m.getAudioTracks().length||p.video&&!m.getVideoTracks().length)throw m.getTracks().forEach(function(b){b.stop()}),new DOMException("","NotFoundError");return m},function(m){return Promise.reject(s(m))})})}}}}});var bs=$($e=>{"use strict";Object.defineProperty($e,"__esModule",{value:!0});$e.fixNegotiationNeeded=ga;$e.shimAddTrackRemoveTrack=ya;$e.shimAddTrackRemoveTrackWithNative=xs;$e.shimGetSendersWithDtmf=la;Object.defineProperty($e,"shimGetUserMedia",{enumerable:!0,get:function(){return ca.shimGetUserMedia}});$e.shimMediaStream=ua;$e.shimOnTrack=ha;$e.shimPeerConnection=ma;$e.shimSenderReceiverGetStats=pa;var Ut=ms(nt()),ca=ys();function ms(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(ms=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||He(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);return p})(n,e)}function gs(n,e,t){return(e=fa(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function fa(n){var e=da(n,"string");return He(e)=="symbol"?e:e+""}function da(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 ua(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function ha(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 c;n.RTCPeerConnection.prototype.getReceivers?c=r.getReceivers().find(function(l){return l.track&&l.track.id===s.track.id}):c={track:s.track};var u=new Event("track");u.track=s.track,u.receiver=c,u.transceiver={receiver:c},u.streams=[i.stream],r.dispatchEvent(u)}),i.stream.getTracks().forEach(function(s){var c;n.RTCPeerConnection.prototype.getReceivers?c=r.getReceivers().find(function(l){return l.track&&l.track.id===s.id}):c={track:s};var u=new Event("track");u.track=s,u.receiver=c,u.transceiver={receiver:c},u.streams=[i.stream],r.dispatchEvent(u)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else Ut.wrapPeerConnectionEvent(n,"track",function(t){return t.transceiver||Object.defineProperty(t,"transceiver",{value:{receiver:t.receiver}}),t})}function la(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 m=t.apply(this,arguments);return m||(m=e(this,l),this._senders.push(m)),m};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(m){p._senders.push(e(p,m))})};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(m){var b=p._senders.find(function(I){return I.track===m});b&&p._senders.splice(p._senders.indexOf(b),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 c=n.RTCPeerConnection.prototype.getSenders;n.RTCPeerConnection.prototype.getSenders=function(){var l=this,p=c.apply(this,[]);return p.forEach(function(m){return m._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 pa(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 c=this,u=e.apply(this,[]);return u.forEach(function(l){return l._pc=c}),u});var t=n.RTCPeerConnection.prototype.addTrack;t&&(n.RTCPeerConnection.prototype.addTrack=function(){var c=t.apply(this,arguments);return c._pc=this,c}),n.RTCRtpSender.prototype.getStats=function(){var c=this;return this._pc.getStats().then(function(u){return Ut.filterStats(u,c.track,!0)})}}if(!("getStats"in n.RTCRtpReceiver.prototype)){var r=n.RTCPeerConnection.prototype.getReceivers;r&&(n.RTCPeerConnection.prototype.getReceivers=function(){var c=this,u=r.apply(this,[]);return u.forEach(function(l){return l._pc=c}),u}),Ut.wrapPeerConnectionEvent(n,"track",function(s){return s.receiver._pc=s.srcElement,s}),n.RTCRtpReceiver.prototype.getStats=function(){var c=this;return this._pc.getStats().then(function(u){return Ut.filterStats(u,c.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 c=arguments[0],u,l,p;return this.getSenders().forEach(function(m){m.track===c&&(u?p=!0:u=m)}),this.getReceivers().forEach(function(m){return m.track===c&&(l?p=!0:l=m),m.track===c}),p||u&&l?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):u?u.getStats():l?l.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function xs(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){var c=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(u){return c._shimmedLocalStreams[u][0]})};var e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(c,u){if(!u)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var l=e.apply(this,arguments);return this._shimmedLocalStreams[u.id]?this._shimmedLocalStreams[u.id].indexOf(l)===-1&&this._shimmedLocalStreams[u.id].push(l):this._shimmedLocalStreams[u.id]=[u,l],l};var t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(c){var u=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},c.getTracks().forEach(function(m){var b=u.getSenders().find(function(I){return I.track===m});if(b)throw new DOMException("Track already exists.","InvalidAccessError")});var l=this.getSenders();t.apply(this,arguments);var p=this.getSenders().filter(function(m){return l.indexOf(m)===-1});this._shimmedLocalStreams[c.id]=[c].concat(p)};var r=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(c){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[c.id],r.apply(this,arguments)};var i=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(c){var u=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},c&&Object.keys(this._shimmedLocalStreams).forEach(function(l){var p=u._shimmedLocalStreams[l].indexOf(c);p!==-1&&u._shimmedLocalStreams[l].splice(p,1),u._shimmedLocalStreams[l].length===1&&delete u._shimmedLocalStreams[l]}),i.apply(this,arguments)}}function ya(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return xs(n);var t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){var m=this,b=t.apply(this);return this._reverseStreams=this._reverseStreams||{},b.map(function(I){return m._reverseStreams[I.id]})};var r=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(m){var b=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},m.getTracks().forEach(function(z){var re=b.getSenders().find(function(fe){return fe.track===z});if(re)throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[m.id]){var I=new n.MediaStream(m.getTracks());this._streams[m.id]=I,this._reverseStreams[I.id]=m,m=I}r.apply(this,[m])};var i=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(m){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[m.id]||m]),delete this._reverseStreams[this._streams[m.id]?this._streams[m.id].id:m.id],delete this._streams[m.id]},n.RTCPeerConnection.prototype.addTrack=function(m,b){var I=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var z=[].slice.call(arguments,1);if(z.length!==1||!z[0].getTracks().find(function(be){return be===m}))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");var re=this.getSenders().find(function(be){return be.track===m});if(re)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var fe=this._streams[b.id];if(fe)fe.addTrack(m),Promise.resolve().then(function(){I.dispatchEvent(new Event("negotiationneeded"))});else{var ue=new n.MediaStream([m]);this._streams[b.id]=ue,this._reverseStreams[ue.id]=b,this.addStream(ue)}return this.getSenders().find(function(be){return be.track===m})};function s(p,m){var b=m.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(I){var z=p._reverseStreams[I],re=p._streams[z.id];b=b.replace(new RegExp(re.id,"g"),z.id)}),new RTCSessionDescription({type:m.type,sdp:b})}function c(p,m){var b=m.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(I){var z=p._reverseStreams[I],re=p._streams[z.id];b=b.replace(new RegExp(z.id,"g"),re.id)}),new RTCSessionDescription({type:m.type,sdp:b})}["createOffer","createAnswer"].forEach(function(p){var m=n.RTCPeerConnection.prototype[p],b=gs({},p,function(){var I=this,z=arguments,re=arguments.length&&typeof arguments[0]=="function";return re?m.apply(this,[function(fe){var ue=s(I,fe);z[0].apply(null,[ue])},function(fe){z[1]&&z[1].apply(null,fe)},arguments[2]]):m.apply(this,arguments).then(function(fe){return s(I,fe)})});n.RTCPeerConnection.prototype[p]=b[p]});var u=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?u.apply(this,arguments):(arguments[0]=c(this,arguments[0]),u.apply(this,arguments))};var l=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get:function(){var m=l.get.apply(this);return m.type===""?m:s(this,m)}}),n.RTCPeerConnection.prototype.removeTrack=function(m){var b=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!m._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");var I=m._pc===this;if(!I)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};var z;Object.keys(this._streams).forEach(function(re){var fe=b._streams[re].getTracks().find(function(ue){return m.track===ue});fe&&(z=b._streams[re])}),z&&(z.getTracks().length===1?this.removeStream(this._reverseStreams[z.id]):z.removeTrack(m.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ma(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=gs({},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 ga(n,e){Ut.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 _s=$(Dn=>{"use strict";Object.defineProperty(Dn,"__esModule",{value:!0});Dn.shimGetUserMedia=ba;var xa=vs(nt());function vs(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(vs=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||St(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);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 ba(n,e){var t=n&&n.navigator,r=n&&n.MediaStreamTrack;if(t.getUserMedia=function(l,p,m){xa.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(l).then(p,m)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){var i=function(p,m,b){m in p&&!(b in p)&&(p[b]=p[m],delete p[m])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(l){return St(l)==="object"&&St(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 c=r.prototype.getSettings;r.prototype.getSettings=function(){var l=c.apply(this,arguments);return i(l,"mozAutoGainControl","autoGainControl"),i(l,"mozNoiseSuppression","noiseSuppression"),l}}if(r&&r.prototype.applyConstraints){var u=r.prototype.applyConstraints;r.prototype.applyConstraints=function(l){return this.kind==="audio"&&St(l)==="object"&&(l=JSON.parse(JSON.stringify(l)),i(l,"autoGainControl","mozAutoGainControl"),i(l,"noiseSuppression","mozNoiseSuppression")),u.apply(this,[l])}}}}});var Ss=$(On=>{"use strict";Object.defineProperty(On,"__esModule",{value:!0});On.shimGetDisplayMedia=va;function va(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 ws=$(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.shimAddTransceiver=La;Oe.shimCreateAnswer=za;Oe.shimCreateOffer=Fa;Object.defineProperty(Oe,"shimGetDisplayMedia",{enumerable:!0,get:function(){return Sa.shimGetDisplayMedia}});Oe.shimGetParameters=ja;Object.defineProperty(Oe,"shimGetUserMedia",{enumerable:!0,get:function(){return _a.shimGetUserMedia}});Oe.shimOnTrack=Aa;Oe.shimPeerConnection=Ma;Oe.shimRTCDataChannel=Ba;Oe.shimReceiverGetStats=Oa;Oe.shimRemoveStream=Ua;Oe.shimSenderGetStats=Da;var Cs=Ps(nt()),_a=_s(),Sa=Ss();function Ps(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Ps=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||De(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);return p})(n,e)}function Ca(n){return Ea(n)||Ta(n)||wa(n)||Pa()}function Pa(){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 wa(n,e){if(n){if(typeof n=="string")return Un(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)?Un(n,e):void 0}}function Ta(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function Ea(n){if(Array.isArray(n))return Un(n)}function Un(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 Ia(n,e,t){return(e=ka(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function ka(n){var e=Ra(n,"string");return De(e)=="symbol"?e:e+""}function Ra(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 Aa(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 Ma(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],c=Ia({},i,function(){return arguments[0]=new(i==="addIceCandidate"?n.RTCIceCandidate:n.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)});n.RTCPeerConnection.prototype[i]=c[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),c=s[0],u=s[1],l=s[2];return r.apply(this,[c||null]).then(function(p){if(e.version<53&&!u)try{p.forEach(function(m){m.type=t[m.type]||m.type})}catch(m){if(m.name!=="TypeError")throw m;p.forEach(function(b,I){p.set(I,Object.assign({},b,{type:t[b.type]||b.type}))})}return p}).then(u,l)}}}function Da(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(c){return c._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 Oa(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}),Cs.wrapPeerConnectionEvent(n,"track",function(t){return t.receiver._pc=t.srcElement,t}),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function Ua(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){var r=this;Cs.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&t.getTracks().includes(i.track)&&r.removeTrack(i)})})}function Ba(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function La(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=Ca(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 c=s.sender,u=c.getParameters();(!("encodings"in u)||u.encodings.length===1&&Object.keys(u.encodings[0]).length===0)&&(u.encodings=r,c.sendEncodings=r,this.setParametersPromises.push(c.setParameters(u).then(function(){delete c.sendEncodings}).catch(function(){delete c.sendEncodings})))}return s})}}function ja(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 Fa(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 za(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 ks=$(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.shimAudioContext=Wa;Ne.shimCallbacksAPI=Na;Ne.shimConstraints=Is;Ne.shimCreateOfferLegacy=Va;Ne.shimGetUserMedia=qa;Ne.shimLocalStreamsAPI=Ga;Ne.shimRTCIceServerUrls=Ka;Ne.shimRemoteStreamsAPI=$a;Ne.shimTrackEventTransceiver=Ha;var Ts=Es(nt());function Es(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Es=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||st(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);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 Ga(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,c=new Array(s>1?s-1:0),u=1;u<s;u++)c[u-1]=arguments[u];return c&&c.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 c=r.getTracks();this.getSenders().forEach(function(u){c.includes(u.track)&&i.removeTrack(u)})}})}}function $a(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(c){if(i._remoteStreams||(i._remoteStreams=[]),!i._remoteStreams.includes(c)){i._remoteStreams.push(c);var u=new Event("addstream");u.stream=c,i.dispatchEvent(u)}})})}});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 c=new Event("addstream");c.stream=s,r.dispatchEvent(c)}})}),e.apply(r,arguments)}}}function Na(n){if(!(st(n)!=="object"||!n.RTCPeerConnection)){var e=n.RTCPeerConnection.prototype,t=e.createOffer,r=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,c=e.addIceCandidate;e.createOffer=function(p,m){var b=arguments.length>=2?arguments[2]:arguments[0],I=t.apply(this,[b]);return m?(I.then(p,m),Promise.resolve()):I},e.createAnswer=function(p,m){var b=arguments.length>=2?arguments[2]:arguments[0],I=r.apply(this,[b]);return m?(I.then(p,m),Promise.resolve()):I};var u=function(p,m,b){var I=i.apply(this,[p]);return b?(I.then(m,b),Promise.resolve()):I};e.setLocalDescription=u,u=function(p,m,b){var I=s.apply(this,[p]);return b?(I.then(m,b),Promise.resolve()):I},e.setRemoteDescription=u,u=function(p,m,b){var I=c.apply(this,[p]);return b?(I.then(m,b),Promise.resolve()):I},e.addIceCandidate=u}}function qa(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(Is(i))}}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(s,c,u){e.mediaDevices.getUserMedia(s).then(c,u)}.bind(e))}function Is(n){return n&&n.video!==void 0?Object.assign({},n,{video:Ts.compactObject(n.video)}):n}function Ka(n){if(n.RTCPeerConnection){var e=n.RTCPeerConnection;n.RTCPeerConnection=function(r,i){if(r&&r.iceServers){for(var s=[],c=0;c<r.iceServers.length;c++){var u=r.iceServers[c];u.urls===void 0&&u.url?(Ts.deprecated("RTCIceServer.url","RTCIceServer.urls"),u=JSON.parse(JSON.stringify(u)),u.urls=u.url,delete u.url,s.push(u)):s.push(r.iceServers[c])}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 Ha(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 Va(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(c){return c.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(c){return c.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 Wa(n){st(n)!=="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}});var Ln=$((fd,Bn)=>{"use strict";var T={};T.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};T.localCName=T.generateIdentifier();T.splitLines=function(n){return n.trim().split(`
|
|
1
|
+
var DignityJS=(()=>{var la=Object.defineProperty;var ha=n=>{throw TypeError(n)};var pa=(n,e,t)=>e in n?la(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var bn=(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 z=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var lr=(n,e,t)=>pa(n,typeof e!="symbol"?e+"":e,t);var kt=(n,e,t)=>e.has(n)?ha("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t);var rs=z(()=>{});var At=z((Wd,hr)=>{(function(n){"use strict";var e=function(c){var d,f=new Float64Array(16);if(c)for(d=0;d<c.length;d++)f[d]=c[d];return f},t=function(){throw new Error("no PRNG")},r=new Uint8Array(16),i=new Uint8Array(32);i[0]=9;var s=e(),a=e([1]),u=e([56129,1]),h=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]),b=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 K(c,d,f,o){c[d]=f>>24&255,c[d+1]=f>>16&255,c[d+2]=f>>8&255,c[d+3]=f&255,c[d+4]=o>>24&255,c[d+5]=o>>16&255,c[d+6]=o>>8&255,c[d+7]=o&255}function re(c,d,f,o,l){var m,x=0;for(m=0;m<l;m++)x|=c[d+m]^f[o+m];return(1&x-1>>>8)-1}function fe(c,d,f,o){return re(c,d,f,o,16)}function ue(c,d,f,o){return re(c,d,f,o,32)}function be(c,d,f,o){for(var l=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,m=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,x=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,S=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,R=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,oe=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,D=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,N=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,$=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,Y=f[16]&255|(f[17]&255)<<8|(f[18]&255)<<16|(f[19]&255)<<24,W=f[20]&255|(f[21]&255)<<8|(f[22]&255)<<16|(f[23]&255)<<24,q=f[24]&255|(f[25]&255)<<8|(f[26]&255)<<16|(f[27]&255)<<24,V=f[28]&255|(f[29]&255)<<8|(f[30]&255)<<16|(f[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=l,F=m,M=x,U=S,L=R,k=j,v=A,_=oe,C=D,P=N,w=$,I=Y,G=W,J=q,Z=V,X=H,g,te=0;te<20;te+=2)g=O+G|0,L^=g<<7|g>>>25,g=L+O|0,C^=g<<9|g>>>23,g=C+L|0,G^=g<<13|g>>>19,g=G+C|0,O^=g<<18|g>>>14,g=k+F|0,P^=g<<7|g>>>25,g=P+k|0,J^=g<<9|g>>>23,g=J+P|0,F^=g<<13|g>>>19,g=F+J|0,k^=g<<18|g>>>14,g=w+v|0,Z^=g<<7|g>>>25,g=Z+w|0,M^=g<<9|g>>>23,g=M+Z|0,v^=g<<13|g>>>19,g=v+M|0,w^=g<<18|g>>>14,g=X+I|0,U^=g<<7|g>>>25,g=U+X|0,_^=g<<9|g>>>23,g=_+U|0,I^=g<<13|g>>>19,g=I+_|0,X^=g<<18|g>>>14,g=O+U|0,F^=g<<7|g>>>25,g=F+O|0,M^=g<<9|g>>>23,g=M+F|0,U^=g<<13|g>>>19,g=U+M|0,O^=g<<18|g>>>14,g=k+L|0,v^=g<<7|g>>>25,g=v+k|0,_^=g<<9|g>>>23,g=_+v|0,L^=g<<13|g>>>19,g=L+_|0,k^=g<<18|g>>>14,g=w+P|0,I^=g<<7|g>>>25,g=I+w|0,C^=g<<9|g>>>23,g=C+I|0,P^=g<<13|g>>>19,g=P+C|0,w^=g<<18|g>>>14,g=X+Z|0,G^=g<<7|g>>>25,g=G+X|0,J^=g<<9|g>>>23,g=J+G|0,Z^=g<<13|g>>>19,g=Z+J|0,X^=g<<18|g>>>14;O=O+l|0,F=F+m|0,M=M+x|0,U=U+S|0,L=L+R|0,k=k+j|0,v=v+A|0,_=_+oe|0,C=C+D|0,P=P+N|0,w=w+$|0,I=I+Y|0,G=G+W|0,J=J+q|0,Z=Z+V|0,X=X+H|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]=k>>>0&255,c[21]=k>>>8&255,c[22]=k>>>16&255,c[23]=k>>>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]=I>>>0&255,c[45]=I>>>8&255,c[46]=I>>>16&255,c[47]=I>>>24&255,c[48]=G>>>0&255,c[49]=G>>>8&255,c[50]=G>>>16&255,c[51]=G>>>24&255,c[52]=J>>>0&255,c[53]=J>>>8&255,c[54]=J>>>16&255,c[55]=J>>>24&255,c[56]=Z>>>0&255,c[57]=Z>>>8&255,c[58]=Z>>>16&255,c[59]=Z>>>24&255,c[60]=X>>>0&255,c[61]=X>>>8&255,c[62]=X>>>16&255,c[63]=X>>>24&255}function mt(c,d,f,o){for(var l=o[0]&255|(o[1]&255)<<8|(o[2]&255)<<16|(o[3]&255)<<24,m=f[0]&255|(f[1]&255)<<8|(f[2]&255)<<16|(f[3]&255)<<24,x=f[4]&255|(f[5]&255)<<8|(f[6]&255)<<16|(f[7]&255)<<24,S=f[8]&255|(f[9]&255)<<8|(f[10]&255)<<16|(f[11]&255)<<24,R=f[12]&255|(f[13]&255)<<8|(f[14]&255)<<16|(f[15]&255)<<24,j=o[4]&255|(o[5]&255)<<8|(o[6]&255)<<16|(o[7]&255)<<24,A=d[0]&255|(d[1]&255)<<8|(d[2]&255)<<16|(d[3]&255)<<24,oe=d[4]&255|(d[5]&255)<<8|(d[6]&255)<<16|(d[7]&255)<<24,D=d[8]&255|(d[9]&255)<<8|(d[10]&255)<<16|(d[11]&255)<<24,N=d[12]&255|(d[13]&255)<<8|(d[14]&255)<<16|(d[15]&255)<<24,$=o[8]&255|(o[9]&255)<<8|(o[10]&255)<<16|(o[11]&255)<<24,Y=f[16]&255|(f[17]&255)<<8|(f[18]&255)<<16|(f[19]&255)<<24,W=f[20]&255|(f[21]&255)<<8|(f[22]&255)<<16|(f[23]&255)<<24,q=f[24]&255|(f[25]&255)<<8|(f[26]&255)<<16|(f[27]&255)<<24,V=f[28]&255|(f[29]&255)<<8|(f[30]&255)<<16|(f[31]&255)<<24,H=o[12]&255|(o[13]&255)<<8|(o[14]&255)<<16|(o[15]&255)<<24,O=l,F=m,M=x,U=S,L=R,k=j,v=A,_=oe,C=D,P=N,w=$,I=Y,G=W,J=q,Z=V,X=H,g,te=0;te<20;te+=2)g=O+G|0,L^=g<<7|g>>>25,g=L+O|0,C^=g<<9|g>>>23,g=C+L|0,G^=g<<13|g>>>19,g=G+C|0,O^=g<<18|g>>>14,g=k+F|0,P^=g<<7|g>>>25,g=P+k|0,J^=g<<9|g>>>23,g=J+P|0,F^=g<<13|g>>>19,g=F+J|0,k^=g<<18|g>>>14,g=w+v|0,Z^=g<<7|g>>>25,g=Z+w|0,M^=g<<9|g>>>23,g=M+Z|0,v^=g<<13|g>>>19,g=v+M|0,w^=g<<18|g>>>14,g=X+I|0,U^=g<<7|g>>>25,g=U+X|0,_^=g<<9|g>>>23,g=_+U|0,I^=g<<13|g>>>19,g=I+_|0,X^=g<<18|g>>>14,g=O+U|0,F^=g<<7|g>>>25,g=F+O|0,M^=g<<9|g>>>23,g=M+F|0,U^=g<<13|g>>>19,g=U+M|0,O^=g<<18|g>>>14,g=k+L|0,v^=g<<7|g>>>25,g=v+k|0,_^=g<<9|g>>>23,g=_+v|0,L^=g<<13|g>>>19,g=L+_|0,k^=g<<18|g>>>14,g=w+P|0,I^=g<<7|g>>>25,g=I+w|0,C^=g<<9|g>>>23,g=C+I|0,P^=g<<13|g>>>19,g=P+C|0,w^=g<<18|g>>>14,g=X+Z|0,G^=g<<7|g>>>25,g=G+X|0,J^=g<<9|g>>>23,g=J+G|0,Z^=g<<13|g>>>19,g=Z+J|0,X^=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]=k>>>0&255,c[5]=k>>>8&255,c[6]=k>>>16&255,c[7]=k>>>24&255,c[8]=w>>>0&255,c[9]=w>>>8&255,c[10]=w>>>16&255,c[11]=w>>>24&255,c[12]=X>>>0&255,c[13]=X>>>8&255,c[14]=X>>>16&255,c[15]=X>>>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 tr(c,d,f,o){be(c,d,f,o)}function rr(c,d,f,o){mt(c,d,f,o)}var dt=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ki(c,d,f,o,l,m,x){var S=new Uint8Array(16),R=new Uint8Array(64),j,A;for(A=0;A<16;A++)S[A]=0;for(A=0;A<8;A++)S[A]=m[A];for(;l>=64;){for(tr(R,S,x,dt),A=0;A<64;A++)c[d+A]=f[o+A]^R[A];for(j=1,A=8;A<16;A++)j=j+(S[A]&255)|0,S[A]=j&255,j>>>=8;l-=64,d+=64,o+=64}if(l>0)for(tr(R,S,x,dt),A=0;A<l;A++)c[d+A]=f[o+A]^R[A];return 0}function Fi(c,d,f,o,l){var m=new Uint8Array(16),x=new Uint8Array(64),S,R;for(R=0;R<16;R++)m[R]=0;for(R=0;R<8;R++)m[R]=o[R];for(;f>=64;){for(tr(x,m,l,dt),R=0;R<64;R++)c[d+R]=x[R];for(S=1,R=8;R<16;R++)S=S+(m[R]&255)|0,m[R]=S&255,S>>>=8;f-=64,d+=64}if(f>0)for(tr(x,m,l,dt),R=0;R<f;R++)c[d+R]=x[R];return 0}function Gi(c,d,f,o,l){var m=new Uint8Array(32);rr(m,o,l,dt);for(var x=new Uint8Array(8),S=0;S<8;S++)x[S]=o[S+16];return Fi(c,d,f,x,m)}function rn(c,d,f,o,l,m,x){var S=new Uint8Array(32);rr(S,m,x,dt);for(var R=new Uint8Array(8),j=0;j<8;j++)R[j]=m[j+16];return Ki(c,d,f,o,l,R,S)}var nr=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 d,f,o,l,m,x,S,R;d=c[0]&255|(c[1]&255)<<8,this.r[0]=d&8191,f=c[2]&255|(c[3]&255)<<8,this.r[1]=(d>>>13|f<<3)&8191,o=c[4]&255|(c[5]&255)<<8,this.r[2]=(f>>>10|o<<6)&7939,l=c[6]&255|(c[7]&255)<<8,this.r[3]=(o>>>7|l<<9)&8191,m=c[8]&255|(c[9]&255)<<8,this.r[4]=(l>>>4|m<<12)&255,this.r[5]=m>>>1&8190,x=c[10]&255|(c[11]&255)<<8,this.r[6]=(m>>>14|x<<2)&8191,S=c[12]&255|(c[13]&255)<<8,this.r[7]=(x>>>11|S<<5)&8065,R=c[14]&255|(c[15]&255)<<8,this.r[8]=(S>>>8|R<<8)&8191,this.r[9]=R>>>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};nr.prototype.blocks=function(c,d,f){for(var o=this.fin?0:2048,l,m,x,S,R,j,A,oe,D,N,$,Y,W,q,V,H,O,F,M,U=this.h[0],L=this.h[1],k=this.h[2],v=this.h[3],_=this.h[4],C=this.h[5],P=this.h[6],w=this.h[7],I=this.h[8],G=this.h[9],J=this.r[0],Z=this.r[1],X=this.r[2],g=this.r[3],te=this.r[4],ae=this.r[5],ce=this.r[6],Q=this.r[7],ie=this.r[8],se=this.r[9];f>=16;)l=c[d+0]&255|(c[d+1]&255)<<8,U+=l&8191,m=c[d+2]&255|(c[d+3]&255)<<8,L+=(l>>>13|m<<3)&8191,x=c[d+4]&255|(c[d+5]&255)<<8,k+=(m>>>10|x<<6)&8191,S=c[d+6]&255|(c[d+7]&255)<<8,v+=(x>>>7|S<<9)&8191,R=c[d+8]&255|(c[d+9]&255)<<8,_+=(S>>>4|R<<12)&8191,C+=R>>>1&8191,j=c[d+10]&255|(c[d+11]&255)<<8,P+=(R>>>14|j<<2)&8191,A=c[d+12]&255|(c[d+13]&255)<<8,w+=(j>>>11|A<<5)&8191,oe=c[d+14]&255|(c[d+15]&255)<<8,I+=(A>>>8|oe<<8)&8191,G+=oe>>>5|o,D=0,N=D,N+=U*J,N+=L*(5*se),N+=k*(5*ie),N+=v*(5*Q),N+=_*(5*ce),D=N>>>13,N&=8191,N+=C*(5*ae),N+=P*(5*te),N+=w*(5*g),N+=I*(5*X),N+=G*(5*Z),D+=N>>>13,N&=8191,$=D,$+=U*Z,$+=L*J,$+=k*(5*se),$+=v*(5*ie),$+=_*(5*Q),D=$>>>13,$&=8191,$+=C*(5*ce),$+=P*(5*ae),$+=w*(5*te),$+=I*(5*g),$+=G*(5*X),D+=$>>>13,$&=8191,Y=D,Y+=U*X,Y+=L*Z,Y+=k*J,Y+=v*(5*se),Y+=_*(5*ie),D=Y>>>13,Y&=8191,Y+=C*(5*Q),Y+=P*(5*ce),Y+=w*(5*ae),Y+=I*(5*te),Y+=G*(5*g),D+=Y>>>13,Y&=8191,W=D,W+=U*g,W+=L*X,W+=k*Z,W+=v*J,W+=_*(5*se),D=W>>>13,W&=8191,W+=C*(5*ie),W+=P*(5*Q),W+=w*(5*ce),W+=I*(5*ae),W+=G*(5*te),D+=W>>>13,W&=8191,q=D,q+=U*te,q+=L*g,q+=k*X,q+=v*Z,q+=_*J,D=q>>>13,q&=8191,q+=C*(5*se),q+=P*(5*ie),q+=w*(5*Q),q+=I*(5*ce),q+=G*(5*ae),D+=q>>>13,q&=8191,V=D,V+=U*ae,V+=L*te,V+=k*g,V+=v*X,V+=_*Z,D=V>>>13,V&=8191,V+=C*J,V+=P*(5*se),V+=w*(5*ie),V+=I*(5*Q),V+=G*(5*ce),D+=V>>>13,V&=8191,H=D,H+=U*ce,H+=L*ae,H+=k*te,H+=v*g,H+=_*X,D=H>>>13,H&=8191,H+=C*Z,H+=P*J,H+=w*(5*se),H+=I*(5*ie),H+=G*(5*Q),D+=H>>>13,H&=8191,O=D,O+=U*Q,O+=L*ce,O+=k*ae,O+=v*te,O+=_*g,D=O>>>13,O&=8191,O+=C*X,O+=P*Z,O+=w*J,O+=I*(5*se),O+=G*(5*ie),D+=O>>>13,O&=8191,F=D,F+=U*ie,F+=L*Q,F+=k*ce,F+=v*ae,F+=_*te,D=F>>>13,F&=8191,F+=C*g,F+=P*X,F+=w*Z,F+=I*J,F+=G*(5*se),D+=F>>>13,F&=8191,M=D,M+=U*se,M+=L*ie,M+=k*Q,M+=v*ce,M+=_*ae,D=M>>>13,M&=8191,M+=C*te,M+=P*g,M+=w*X,M+=I*Z,M+=G*J,D+=M>>>13,M&=8191,D=(D<<2)+D|0,D=D+N|0,N=D&8191,D=D>>>13,$+=D,U=N,L=$,k=Y,v=W,_=q,C=V,P=H,w=O,I=F,G=M,d+=16,f-=16;this.h[0]=U,this.h[1]=L,this.h[2]=k,this.h[3]=v,this.h[4]=_,this.h[5]=C,this.h[6]=P,this.h[7]=w,this.h[8]=I,this.h[9]=G},nr.prototype.finish=function(c,d){var f=new Uint16Array(10),o,l,m,x;if(this.leftover){for(x=this.leftover,this.buffer[x++]=1;x<16;x++)this.buffer[x]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(o=this.h[1]>>>13,this.h[1]&=8191,x=2;x<10;x++)this.h[x]+=o,o=this.h[x]>>>13,this.h[x]&=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,f[0]=this.h[0]+5,o=f[0]>>>13,f[0]&=8191,x=1;x<10;x++)f[x]=this.h[x]+o,o=f[x]>>>13,f[x]&=8191;for(f[9]-=8192,l=(o^1)-1,x=0;x<10;x++)f[x]&=l;for(l=~l,x=0;x<10;x++)this.h[x]=this.h[x]&l|f[x];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,x=1;x<8;x++)m=(this.h[x]+this.pad[x]|0)+(m>>>16)|0,this.h[x]=m&65535;c[d+0]=this.h[0]>>>0&255,c[d+1]=this.h[0]>>>8&255,c[d+2]=this.h[1]>>>0&255,c[d+3]=this.h[1]>>>8&255,c[d+4]=this.h[2]>>>0&255,c[d+5]=this.h[2]>>>8&255,c[d+6]=this.h[3]>>>0&255,c[d+7]=this.h[3]>>>8&255,c[d+8]=this.h[4]>>>0&255,c[d+9]=this.h[4]>>>8&255,c[d+10]=this.h[5]>>>0&255,c[d+11]=this.h[5]>>>8&255,c[d+12]=this.h[6]>>>0&255,c[d+13]=this.h[6]>>>8&255,c[d+14]=this.h[7]>>>0&255,c[d+15]=this.h[7]>>>8&255},nr.prototype.update=function(c,d,f){var o,l;if(this.leftover){for(l=16-this.leftover,l>f&&(l=f),o=0;o<l;o++)this.buffer[this.leftover+o]=c[d+o];if(f-=l,d+=l,this.leftover+=l,this.leftover<16)return;this.blocks(this.buffer,0,16),this.leftover=0}if(f>=16&&(l=f-f%16,this.blocks(c,d,l),d+=l,f-=l),f){for(o=0;o<f;o++)this.buffer[this.leftover+o]=c[d+o];this.leftover+=f}};function nn(c,d,f,o,l,m){var x=new nr(m);return x.update(f,o,l),x.finish(c,d),0}function zi(c,d,f,o,l,m){var x=new Uint8Array(16);return nn(x,0,f,o,l,m),fe(c,d,x,0)}function sn(c,d,f,o,l){var m;if(f<32)return-1;for(rn(c,0,d,0,f,o,l),nn(c,16,c,32,f-32,c),m=0;m<16;m++)c[m]=0;return 0}function on(c,d,f,o,l){var m,x=new Uint8Array(32);if(f<32||(Gi(x,0,32,o,l),zi(d,16,d,32,f-32,x)!==0))return-1;for(rn(c,0,d,0,f,o,l),m=0;m<32;m++)c[m]=0;return 0}function Ze(c,d){var f;for(f=0;f<16;f++)c[f]=d[f]|0}function an(c){var d,f,o=1;for(d=0;d<16;d++)f=c[d]+o+65535,o=Math.floor(f/65536),c[d]=f-o*65536;c[0]+=o-1+37*(o-1)}function xt(c,d,f){for(var o,l=~(f-1),m=0;m<16;m++)o=l&(c[m]^d[m]),c[m]^=o,d[m]^=o}function bt(c,d){var f,o,l,m=e(),x=e();for(f=0;f<16;f++)x[f]=d[f];for(an(x),an(x),an(x),o=0;o<2;o++){for(m[0]=x[0]-65517,f=1;f<15;f++)m[f]=x[f]-65535-(m[f-1]>>16&1),m[f-1]&=65535;m[15]=x[15]-32767-(m[14]>>16&1),l=m[15]>>16&1,m[14]&=65535,xt(x,m,1-l)}for(f=0;f<16;f++)c[2*f]=x[f]&255,c[2*f+1]=x[f]>>8}function Ni(c,d){var f=new Uint8Array(32),o=new Uint8Array(32);return bt(f,c),bt(o,d),ue(f,0,o,0)}function $i(c){var d=new Uint8Array(32);return bt(d,c),d[0]&1}function cn(c,d){var f;for(f=0;f<16;f++)c[f]=d[2*f]+(d[2*f+1]<<8);c[15]&=32767}function Fe(c,d,f){for(var o=0;o<16;o++)c[o]=d[o]+f[o]}function Ge(c,d,f){for(var o=0;o<16;o++)c[o]=d[o]-f[o]}function ne(c,d,f){var o,l,m=0,x=0,S=0,R=0,j=0,A=0,oe=0,D=0,N=0,$=0,Y=0,W=0,q=0,V=0,H=0,O=0,F=0,M=0,U=0,L=0,k=0,v=0,_=0,C=0,P=0,w=0,I=0,G=0,J=0,Z=0,X=0,g=f[0],te=f[1],ae=f[2],ce=f[3],Q=f[4],ie=f[5],se=f[6],xe=f[7],de=f[8],le=f[9],he=f[10],pe=f[11],_e=f[12],Se=f[13],we=f[14],Ce=f[15];o=d[0],m+=o*g,x+=o*te,S+=o*ae,R+=o*ce,j+=o*Q,A+=o*ie,oe+=o*se,D+=o*xe,N+=o*de,$+=o*le,Y+=o*he,W+=o*pe,q+=o*_e,V+=o*Se,H+=o*we,O+=o*Ce,o=d[1],x+=o*g,S+=o*te,R+=o*ae,j+=o*ce,A+=o*Q,oe+=o*ie,D+=o*se,N+=o*xe,$+=o*de,Y+=o*le,W+=o*he,q+=o*pe,V+=o*_e,H+=o*Se,O+=o*we,F+=o*Ce,o=d[2],S+=o*g,R+=o*te,j+=o*ae,A+=o*ce,oe+=o*Q,D+=o*ie,N+=o*se,$+=o*xe,Y+=o*de,W+=o*le,q+=o*he,V+=o*pe,H+=o*_e,O+=o*Se,F+=o*we,M+=o*Ce,o=d[3],R+=o*g,j+=o*te,A+=o*ae,oe+=o*ce,D+=o*Q,N+=o*ie,$+=o*se,Y+=o*xe,W+=o*de,q+=o*le,V+=o*he,H+=o*pe,O+=o*_e,F+=o*Se,M+=o*we,U+=o*Ce,o=d[4],j+=o*g,A+=o*te,oe+=o*ae,D+=o*ce,N+=o*Q,$+=o*ie,Y+=o*se,W+=o*xe,q+=o*de,V+=o*le,H+=o*he,O+=o*pe,F+=o*_e,M+=o*Se,U+=o*we,L+=o*Ce,o=d[5],A+=o*g,oe+=o*te,D+=o*ae,N+=o*ce,$+=o*Q,Y+=o*ie,W+=o*se,q+=o*xe,V+=o*de,H+=o*le,O+=o*he,F+=o*pe,M+=o*_e,U+=o*Se,L+=o*we,k+=o*Ce,o=d[6],oe+=o*g,D+=o*te,N+=o*ae,$+=o*ce,Y+=o*Q,W+=o*ie,q+=o*se,V+=o*xe,H+=o*de,O+=o*le,F+=o*he,M+=o*pe,U+=o*_e,L+=o*Se,k+=o*we,v+=o*Ce,o=d[7],D+=o*g,N+=o*te,$+=o*ae,Y+=o*ce,W+=o*Q,q+=o*ie,V+=o*se,H+=o*xe,O+=o*de,F+=o*le,M+=o*he,U+=o*pe,L+=o*_e,k+=o*Se,v+=o*we,_+=o*Ce,o=d[8],N+=o*g,$+=o*te,Y+=o*ae,W+=o*ce,q+=o*Q,V+=o*ie,H+=o*se,O+=o*xe,F+=o*de,M+=o*le,U+=o*he,L+=o*pe,k+=o*_e,v+=o*Se,_+=o*we,C+=o*Ce,o=d[9],$+=o*g,Y+=o*te,W+=o*ae,q+=o*ce,V+=o*Q,H+=o*ie,O+=o*se,F+=o*xe,M+=o*de,U+=o*le,L+=o*he,k+=o*pe,v+=o*_e,_+=o*Se,C+=o*we,P+=o*Ce,o=d[10],Y+=o*g,W+=o*te,q+=o*ae,V+=o*ce,H+=o*Q,O+=o*ie,F+=o*se,M+=o*xe,U+=o*de,L+=o*le,k+=o*he,v+=o*pe,_+=o*_e,C+=o*Se,P+=o*we,w+=o*Ce,o=d[11],W+=o*g,q+=o*te,V+=o*ae,H+=o*ce,O+=o*Q,F+=o*ie,M+=o*se,U+=o*xe,L+=o*de,k+=o*le,v+=o*he,_+=o*pe,C+=o*_e,P+=o*Se,w+=o*we,I+=o*Ce,o=d[12],q+=o*g,V+=o*te,H+=o*ae,O+=o*ce,F+=o*Q,M+=o*ie,U+=o*se,L+=o*xe,k+=o*de,v+=o*le,_+=o*he,C+=o*pe,P+=o*_e,w+=o*Se,I+=o*we,G+=o*Ce,o=d[13],V+=o*g,H+=o*te,O+=o*ae,F+=o*ce,M+=o*Q,U+=o*ie,L+=o*se,k+=o*xe,v+=o*de,_+=o*le,C+=o*he,P+=o*pe,w+=o*_e,I+=o*Se,G+=o*we,J+=o*Ce,o=d[14],H+=o*g,O+=o*te,F+=o*ae,M+=o*ce,U+=o*Q,L+=o*ie,k+=o*se,v+=o*xe,_+=o*de,C+=o*le,P+=o*he,w+=o*pe,I+=o*_e,G+=o*Se,J+=o*we,Z+=o*Ce,o=d[15],O+=o*g,F+=o*te,M+=o*ae,U+=o*ce,L+=o*Q,k+=o*ie,v+=o*se,_+=o*xe,C+=o*de,P+=o*le,w+=o*he,I+=o*pe,G+=o*_e,J+=o*Se,Z+=o*we,X+=o*Ce,m+=38*F,x+=38*M,S+=38*U,R+=38*L,j+=38*k,A+=38*v,oe+=38*_,D+=38*C,N+=38*P,$+=38*w,Y+=38*I,W+=38*G,q+=38*J,V+=38*Z,H+=38*X,l=1,o=m+l+65535,l=Math.floor(o/65536),m=o-l*65536,o=x+l+65535,l=Math.floor(o/65536),x=o-l*65536,o=S+l+65535,l=Math.floor(o/65536),S=o-l*65536,o=R+l+65535,l=Math.floor(o/65536),R=o-l*65536,o=j+l+65535,l=Math.floor(o/65536),j=o-l*65536,o=A+l+65535,l=Math.floor(o/65536),A=o-l*65536,o=oe+l+65535,l=Math.floor(o/65536),oe=o-l*65536,o=D+l+65535,l=Math.floor(o/65536),D=o-l*65536,o=N+l+65535,l=Math.floor(o/65536),N=o-l*65536,o=$+l+65535,l=Math.floor(o/65536),$=o-l*65536,o=Y+l+65535,l=Math.floor(o/65536),Y=o-l*65536,o=W+l+65535,l=Math.floor(o/65536),W=o-l*65536,o=q+l+65535,l=Math.floor(o/65536),q=o-l*65536,o=V+l+65535,l=Math.floor(o/65536),V=o-l*65536,o=H+l+65535,l=Math.floor(o/65536),H=o-l*65536,o=O+l+65535,l=Math.floor(o/65536),O=o-l*65536,m+=l-1+37*(l-1),l=1,o=m+l+65535,l=Math.floor(o/65536),m=o-l*65536,o=x+l+65535,l=Math.floor(o/65536),x=o-l*65536,o=S+l+65535,l=Math.floor(o/65536),S=o-l*65536,o=R+l+65535,l=Math.floor(o/65536),R=o-l*65536,o=j+l+65535,l=Math.floor(o/65536),j=o-l*65536,o=A+l+65535,l=Math.floor(o/65536),A=o-l*65536,o=oe+l+65535,l=Math.floor(o/65536),oe=o-l*65536,o=D+l+65535,l=Math.floor(o/65536),D=o-l*65536,o=N+l+65535,l=Math.floor(o/65536),N=o-l*65536,o=$+l+65535,l=Math.floor(o/65536),$=o-l*65536,o=Y+l+65535,l=Math.floor(o/65536),Y=o-l*65536,o=W+l+65535,l=Math.floor(o/65536),W=o-l*65536,o=q+l+65535,l=Math.floor(o/65536),q=o-l*65536,o=V+l+65535,l=Math.floor(o/65536),V=o-l*65536,o=H+l+65535,l=Math.floor(o/65536),H=o-l*65536,o=O+l+65535,l=Math.floor(o/65536),O=o-l*65536,m+=l-1+37*(l-1),c[0]=m,c[1]=x,c[2]=S,c[3]=R,c[4]=j,c[5]=A,c[6]=oe,c[7]=D,c[8]=N,c[9]=$,c[10]=Y,c[11]=W,c[12]=q,c[13]=V,c[14]=H,c[15]=O}function Le(c,d){ne(c,d,d)}function qi(c,d){var f=e(),o;for(o=0;o<16;o++)f[o]=d[o];for(o=253;o>=0;o--)Le(f,f),o!==2&&o!==4&&ne(f,f,d);for(o=0;o<16;o++)c[o]=f[o]}function Hi(c,d){var f=e(),o;for(o=0;o<16;o++)f[o]=d[o];for(o=250;o>=0;o--)Le(f,f),o!==1&&ne(f,f,d);for(o=0;o<16;o++)c[o]=f[o]}function ir(c,d,f){var o=new Uint8Array(32),l=new Float64Array(80),m,x,S=e(),R=e(),j=e(),A=e(),oe=e(),D=e();for(x=0;x<31;x++)o[x]=d[x];for(o[31]=d[31]&127|64,o[0]&=248,cn(l,f),x=0;x<16;x++)R[x]=l[x],A[x]=S[x]=j[x]=0;for(S[0]=A[0]=1,x=254;x>=0;--x)m=o[x>>>3]>>>(x&7)&1,xt(S,R,m),xt(j,A,m),Fe(oe,S,j),Ge(S,S,j),Fe(j,R,A),Ge(R,R,A),Le(A,oe),Le(D,S),ne(S,j,S),ne(j,R,oe),Fe(oe,S,j),Ge(S,S,j),Le(R,S),Ge(j,A,D),ne(S,j,u),Fe(S,S,A),ne(j,j,S),ne(S,A,D),ne(A,R,l),Le(R,oe),xt(S,R,m),xt(j,A,m);for(x=0;x<16;x++)l[x+16]=S[x],l[x+32]=j[x],l[x+48]=R[x],l[x+64]=A[x];var N=l.subarray(32),$=l.subarray(16);return qi(N,N),ne($,$,N),bt(c,$),0}function sr(c,d){return ir(c,d,i)}function Vi(c,d){return t(d,32),sr(c,d)}function or(c,d,f){var o=new Uint8Array(32);return ir(o,f,d),rr(c,r,o,dt)}var Wi=sn,sa=on;function oa(c,d,f,o,l,m){var x=new Uint8Array(32);return or(x,l,m),Wi(c,d,f,o,x)}function aa(c,d,f,o,l,m){var x=new Uint8Array(32);return or(x,l,m),sa(c,d,f,o,x)}var Yi=[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 Ji(c,d,f,o){for(var l=new Int32Array(16),m=new Int32Array(16),x,S,R,j,A,oe,D,N,$,Y,W,q,V,H,O,F,M,U,L,k,v,_,C,P,w,I,G=c[0],J=c[1],Z=c[2],X=c[3],g=c[4],te=c[5],ae=c[6],ce=c[7],Q=d[0],ie=d[1],se=d[2],xe=d[3],de=d[4],le=d[5],he=d[6],pe=d[7],_e=0;o>=128;){for(L=0;L<16;L++)k=8*L+_e,l[L]=f[k+0]<<24|f[k+1]<<16|f[k+2]<<8|f[k+3],m[L]=f[k+4]<<24|f[k+5]<<16|f[k+6]<<8|f[k+7];for(L=0;L<80;L++)if(x=G,S=J,R=Z,j=X,A=g,oe=te,D=ae,N=ce,$=Q,Y=ie,W=se,q=xe,V=de,H=le,O=he,F=pe,v=ce,_=pe,C=_&65535,P=_>>>16,w=v&65535,I=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,w+=v&65535,I+=v>>>16,v=g&te^~g&ae,_=de&le^~de&he,C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,v=Yi[L*2],_=Yi[L*2+1],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,v=l[L%16],_=m[L%16],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,M=w&65535|I<<16,U=C&65535|P<<16,v=M,_=U,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=(G>>>28|Q<<4)^(Q>>>2|G<<30)^(Q>>>7|G<<25),_=(Q>>>28|G<<4)^(G>>>2|Q<<30)^(G>>>7|Q<<25),C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,v=G&J^G&Z^J&Z,_=Q&ie^Q&se^ie&se,C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,N=w&65535|I<<16,F=C&65535|P<<16,v=j,_=q,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=M,_=U,C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,j=w&65535|I<<16,q=C&65535|P<<16,J=x,Z=S,X=R,g=j,te=A,ae=oe,ce=D,G=N,ie=$,se=Y,xe=W,de=q,le=V,he=H,pe=O,Q=F,L%16===15)for(k=0;k<16;k++)v=l[k],_=m[k],C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=l[(k+9)%16],_=m[(k+9)%16],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,M=l[(k+1)%16],U=m[(k+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,I+=v>>>16,M=l[(k+14)%16],U=m[(k+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,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,l[k]=w&65535|I<<16,m[k]=C&65535|P<<16;v=G,_=Q,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[0],_=d[0],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[0]=G=w&65535|I<<16,d[0]=Q=C&65535|P<<16,v=J,_=ie,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[1],_=d[1],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[1]=J=w&65535|I<<16,d[1]=ie=C&65535|P<<16,v=Z,_=se,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[2],_=d[2],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[2]=Z=w&65535|I<<16,d[2]=se=C&65535|P<<16,v=X,_=xe,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[3],_=d[3],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[3]=X=w&65535|I<<16,d[3]=xe=C&65535|P<<16,v=g,_=de,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[4],_=d[4],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[4]=g=w&65535|I<<16,d[4]=de=C&65535|P<<16,v=te,_=le,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[5],_=d[5],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[5]=te=w&65535|I<<16,d[5]=le=C&65535|P<<16,v=ae,_=he,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[6],_=d[6],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[6]=ae=w&65535|I<<16,d[6]=he=C&65535|P<<16,v=ce,_=pe,C=_&65535,P=_>>>16,w=v&65535,I=v>>>16,v=c[7],_=d[7],C+=_&65535,P+=_>>>16,w+=v&65535,I+=v>>>16,P+=C>>>16,w+=P>>>16,I+=w>>>16,c[7]=ce=w&65535|I<<16,d[7]=pe=C&65535|P<<16,_e+=128,o-=128}return o}function ut(c,d,f){var o=new Int32Array(8),l=new Int32Array(8),m=new Uint8Array(256),x,S=f;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,l[0]=4089235720,l[1]=2227873595,l[2]=4271175723,l[3]=1595750129,l[4]=2917565137,l[5]=725511199,l[6]=4215389547,l[7]=327033209,Ji(o,l,d,f),f%=128,x=0;x<f;x++)m[x]=d[S-f+x];for(m[f]=128,f=256-128*(f<112?1:0),m[f-9]=0,K(m,f-8,S/536870912|0,S<<3),Ji(o,l,m,f),x=0;x<8;x++)K(c,8*x,o[x],l[x]);return 0}function ar(c,d){var f=e(),o=e(),l=e(),m=e(),x=e(),S=e(),R=e(),j=e(),A=e();Ge(f,c[1],c[0]),Ge(A,d[1],d[0]),ne(f,f,A),Fe(o,c[0],c[1]),Fe(A,d[0],d[1]),ne(o,o,A),ne(l,c[3],d[3]),ne(l,l,p),ne(m,c[2],d[2]),Fe(m,m,m),Ge(x,o,f),Ge(S,m,l),Fe(R,m,l),Fe(j,o,f),ne(c[0],x,S),ne(c[1],j,R),ne(c[2],R,S),ne(c[3],x,j)}function Xi(c,d,f){var o;for(o=0;o<4;o++)xt(c[o],d[o],f)}function fn(c,d){var f=e(),o=e(),l=e();qi(l,d[2]),ne(f,d[0],l),ne(o,d[1],l),bt(c,o),c[31]^=$i(f)<<7}function dn(c,d,f){var o,l;for(Ze(c[0],s),Ze(c[1],a),Ze(c[2],a),Ze(c[3],s),l=255;l>=0;--l)o=f[l/8|0]>>(l&7)&1,Xi(c,d,o),ar(d,c),ar(c,c),Xi(c,d,o)}function cr(c,d){var f=[e(),e(),e(),e()];Ze(f[0],y),Ze(f[1],b),Ze(f[2],a),ne(f[3],y,b),dn(c,f,d)}function un(c,d,f){var o=new Uint8Array(64),l=[e(),e(),e(),e()],m;for(f||t(d,32),ut(o,d,32),o[0]&=248,o[31]&=127,o[31]|=64,cr(l,o),fn(c,l),m=0;m<32;m++)d[m+32]=c[m];return 0}var fr=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 ln(c,d){var f,o,l,m;for(o=63;o>=32;--o){for(f=0,l=o-32,m=o-12;l<m;++l)d[l]+=f-16*d[o]*fr[l-(o-32)],f=Math.floor((d[l]+128)/256),d[l]-=f*256;d[l]+=f,d[o]=0}for(f=0,l=0;l<32;l++)d[l]+=f-(d[31]>>4)*fr[l],f=d[l]>>8,d[l]&=255;for(l=0;l<32;l++)d[l]-=f*fr[l];for(o=0;o<32;o++)d[o+1]+=d[o]>>8,c[o]=d[o]&255}function hn(c){var d=new Float64Array(64),f;for(f=0;f<64;f++)d[f]=c[f];for(f=0;f<64;f++)c[f]=0;ln(c,d)}function Zi(c,d,f,o){var l=new Uint8Array(64),m=new Uint8Array(64),x=new Uint8Array(64),S,R,j=new Float64Array(64),A=[e(),e(),e(),e()];ut(l,o,32),l[0]&=248,l[31]&=127,l[31]|=64;var oe=f+64;for(S=0;S<f;S++)c[64+S]=d[S];for(S=0;S<32;S++)c[32+S]=l[32+S];for(ut(x,c.subarray(32),f+32),hn(x),cr(A,x),fn(c,A),S=32;S<64;S++)c[S]=o[S];for(ut(m,c,f+64),hn(m),S=0;S<64;S++)j[S]=0;for(S=0;S<32;S++)j[S]=x[S];for(S=0;S<32;S++)for(R=0;R<32;R++)j[S+R]+=m[S]*l[R];return ln(c.subarray(32),j),oe}function ca(c,d){var f=e(),o=e(),l=e(),m=e(),x=e(),S=e(),R=e();return Ze(c[2],a),cn(c[1],d),Le(l,c[1]),ne(m,l,h),Ge(l,l,c[2]),Fe(m,c[2],m),Le(x,m),Le(S,x),ne(R,S,x),ne(f,R,l),ne(f,f,m),Hi(f,f),ne(f,f,l),ne(f,f,m),ne(f,f,m),ne(c[0],f,m),Le(o,c[0]),ne(o,o,m),Ni(o,l)&&ne(c[0],c[0],E),Le(o,c[0]),ne(o,o,m),Ni(o,l)?-1:($i(c[0])===d[31]>>7&&Ge(c[0],s,c[0]),ne(c[3],c[0],c[1]),0)}function pn(c,d,f,o){var l,m=new Uint8Array(32),x=new Uint8Array(64),S=[e(),e(),e(),e()],R=[e(),e(),e(),e()];if(f<64||ca(R,o))return-1;for(l=0;l<f;l++)c[l]=d[l];for(l=0;l<32;l++)c[l+32]=o[l];if(ut(x,c,f),hn(x),dn(S,R,x),cr(R,d.subarray(32)),ar(S,R),fn(m,S),f-=64,ue(d,0,m,0)){for(l=0;l<f;l++)c[l]=0;return-1}for(l=0;l<f;l++)c[l]=d[l+64];return f}var yn=32,dr=24,Tt=32,vt=16,Et=32,ur=32,It=32,Rt=32,gn=32,Qi=dr,fa=Tt,da=vt,Qe=64,lt=32,_t=64,mn=32,xn=64;n.lowlevel={crypto_core_hsalsa20:rr,crypto_stream_xor:rn,crypto_stream:Gi,crypto_stream_salsa20_xor:Ki,crypto_stream_salsa20:Fi,crypto_onetimeauth:nn,crypto_onetimeauth_verify:zi,crypto_verify_16:fe,crypto_verify_32:ue,crypto_secretbox:sn,crypto_secretbox_open:on,crypto_scalarmult:ir,crypto_scalarmult_base:sr,crypto_box_beforenm:or,crypto_box_afternm:Wi,crypto_box:oa,crypto_box_open:aa,crypto_box_keypair:Vi,crypto_hash:ut,crypto_sign:Zi,crypto_sign_keypair:un,crypto_sign_open:pn,crypto_secretbox_KEYBYTES:yn,crypto_secretbox_NONCEBYTES:dr,crypto_secretbox_ZEROBYTES:Tt,crypto_secretbox_BOXZEROBYTES:vt,crypto_scalarmult_BYTES:Et,crypto_scalarmult_SCALARBYTES:ur,crypto_box_PUBLICKEYBYTES:It,crypto_box_SECRETKEYBYTES:Rt,crypto_box_BEFORENMBYTES:gn,crypto_box_NONCEBYTES:Qi,crypto_box_ZEROBYTES:fa,crypto_box_BOXZEROBYTES:da,crypto_sign_BYTES:Qe,crypto_sign_PUBLICKEYBYTES:lt,crypto_sign_SECRETKEYBYTES:_t,crypto_sign_SEEDBYTES:mn,crypto_hash_BYTES:xn,gf:e,D:h,L:fr,pack25519:bt,unpack25519:cn,M:ne,A:Fe,S:Le,Z:Ge,pow2523:Hi,add:ar,set25519:Ze,modL:ln,scalarmult:dn,scalarbase:cr};function es(c,d){if(c.length!==yn)throw new Error("bad key size");if(d.length!==dr)throw new Error("bad nonce size")}function ua(c,d){if(c.length!==It)throw new Error("bad public key size");if(d.length!==Rt)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 ts(c){for(var d=0;d<c.length;d++)c[d]=0}n.randomBytes=function(c){var d=new Uint8Array(c);return t(d,c),d},n.secretbox=function(c,d,f){Be(c,d,f),es(f,d);for(var o=new Uint8Array(Tt+c.length),l=new Uint8Array(o.length),m=0;m<c.length;m++)o[m+Tt]=c[m];return sn(l,o,o.length,d,f),l.subarray(vt)},n.secretbox.open=function(c,d,f){Be(c,d,f),es(f,d);for(var o=new Uint8Array(vt+c.length),l=new Uint8Array(o.length),m=0;m<c.length;m++)o[m+vt]=c[m];return o.length<32||on(l,o,o.length,d,f)!==0?null:l.subarray(Tt)},n.secretbox.keyLength=yn,n.secretbox.nonceLength=dr,n.secretbox.overheadLength=vt,n.scalarMult=function(c,d){if(Be(c,d),c.length!==ur)throw new Error("bad n size");if(d.length!==Et)throw new Error("bad p size");var f=new Uint8Array(Et);return ir(f,c,d),f},n.scalarMult.base=function(c){if(Be(c),c.length!==ur)throw new Error("bad n size");var d=new Uint8Array(Et);return sr(d,c),d},n.scalarMult.scalarLength=ur,n.scalarMult.groupElementLength=Et,n.box=function(c,d,f,o){var l=n.box.before(f,o);return n.secretbox(c,d,l)},n.box.before=function(c,d){Be(c,d),ua(c,d);var f=new Uint8Array(gn);return or(f,c,d),f},n.box.after=n.secretbox,n.box.open=function(c,d,f,o){var l=n.box.before(f,o);return n.secretbox.open(c,d,l)},n.box.open.after=n.secretbox.open,n.box.keyPair=function(){var c=new Uint8Array(It),d=new Uint8Array(Rt);return Vi(c,d),{publicKey:c,secretKey:d}},n.box.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==Rt)throw new Error("bad secret key size");var d=new Uint8Array(It);return sr(d,c),{publicKey:d,secretKey:new Uint8Array(c)}},n.box.publicKeyLength=It,n.box.secretKeyLength=Rt,n.box.sharedKeyLength=gn,n.box.nonceLength=Qi,n.box.overheadLength=n.secretbox.overheadLength,n.sign=function(c,d){if(Be(c,d),d.length!==_t)throw new Error("bad secret key size");var f=new Uint8Array(Qe+c.length);return Zi(f,c,c.length,d),f},n.sign.open=function(c,d){if(Be(c,d),d.length!==lt)throw new Error("bad public key size");var f=new Uint8Array(c.length),o=pn(f,c,c.length,d);if(o<0)return null;for(var l=new Uint8Array(o),m=0;m<l.length;m++)l[m]=f[m];return l},n.sign.detached=function(c,d){for(var f=n.sign(c,d),o=new Uint8Array(Qe),l=0;l<o.length;l++)o[l]=f[l];return o},n.sign.detached.verify=function(c,d,f){if(Be(c,d,f),d.length!==Qe)throw new Error("bad signature size");if(f.length!==lt)throw new Error("bad public key size");var o=new Uint8Array(Qe+c.length),l=new Uint8Array(Qe+c.length),m;for(m=0;m<Qe;m++)o[m]=d[m];for(m=0;m<c.length;m++)o[m+Qe]=c[m];return pn(l,o,o.length,f)>=0},n.sign.keyPair=function(){var c=new Uint8Array(lt),d=new Uint8Array(_t);return un(c,d),{publicKey:c,secretKey:d}},n.sign.keyPair.fromSecretKey=function(c){if(Be(c),c.length!==_t)throw new Error("bad secret key size");for(var d=new Uint8Array(lt),f=0;f<d.length;f++)d[f]=c[32+f];return{publicKey:d,secretKey:new Uint8Array(c)}},n.sign.keyPair.fromSeed=function(c){if(Be(c),c.length!==mn)throw new Error("bad seed size");for(var d=new Uint8Array(lt),f=new Uint8Array(_t),o=0;o<32;o++)f[o]=c[o];return un(d,f,!0),{publicKey:d,secretKey:f}},n.sign.publicKeyLength=lt,n.sign.secretKeyLength=_t,n.sign.seedLength=mn,n.sign.signatureLength=Qe,n.hash=function(c){Be(c);var d=new Uint8Array(xn);return ut(d,c,c.length),d},n.hash.hashLength=xn,n.verify=function(c,d){return Be(c,d),c.length===0||d.length===0||c.length!==d.length?!1:re(c,0,d,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 d=65536;n.setPRNG(function(f,o){var l,m=new Uint8Array(o);for(l=0;l<o;l+=d)c.getRandomValues(m.subarray(l,l+Math.min(o-l,d)));for(l=0;l<o;l++)f[l]=m[l];ts(m)})}else typeof bn<"u"&&(c=rs(),c&&c.randomBytes&&n.setPRNG(function(f,o){var l,m=c.randomBytes(o);for(l=0;l<o;l++)f[l]=m[l];ts(m)}))})()})(typeof hr<"u"&&hr.exports?hr.exports:self.nacl=self.nacl||{})});var Mt=z((ns,pr)=>{(function(n,e){"use strict";typeof pr<"u"&&pr.exports?pr.exports=e():(n.nacl||(n.nacl={}),n.nacl.util=e())})(ns,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 ss=z((Jd,is)=>{var vn=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)}};is.exports=vn});var Pn=z((Xd,os)=>{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)}};lr(ye,"p",BigInt("170082004324204494273811327264862981553264701145937538369570764779791492622392118654022654452947093285873855529044371650895045691292912712699015605832276411308653107069798639938826015099738961427172366594187783204437869906954750443653318078358839409699824714551430573905637228307966826784684174483831608534979")),lr(ye,"pHalf",ye.p-BigInt(1)>>BigInt(1)),lr(ye,"pQuarter",ye.p+BigInt(1)>>BigInt(2));var _n=ye;os.exports=_n});var wn=z((Qd,cs)=>{var as=Pn(),Sn=class{static async compute(e,t){let r=new as,i=BigInt(`0x${e}`);return r.generateProofVDF(t,i).toString(16)}static async verify(e,t,r){let i=new as,s=BigInt(`0x${e}`),a=BigInt(`0x${r}`);return i.verifyProofVDF(t,s,a)}};cs.exports=Sn});var gr=z((eu,xs)=>{var Cn=At(),yr=Mt(),{deriveBroadcastKey:ds,DEFAULT_SECURITY_OPTIONS:us}=Dt(),ls="dignity-signing-v1",hs="dignity-encryption-v1",ps="dignity-cold-recovery-v1";function ys(n){return yr.decodeUTF8(n)}function ya(...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 gs(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,ps),ys(t.join("\0"))}async function ga({username:n,coldPassword:e,pepper:t="",kdfIterations:r}={}){if(!e||typeof e!="string")throw new Error("deriveColdRecoverySigningKey requires coldPassword");let i=gs(n,t),s=typeof r=="number"?r:us.kdfIterations,a=await ds(e,i,s),u=Cn.sign.keyPair.fromSeed(a);return{signing:u,recoveryPublicKey:yr.encodeBase64(u.publicKey)}}function ms(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),ys(s.join("\0"))}async function fs({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=ms(e,t,r,i),u=typeof s=="number"?s:us.kdfIterations;return ds(n,a,u)}async function ma({username:n,password:e,pepper:t="",generation:r=1,kdfIterations:i}={}){let s=await fs({password:e,username:n,info:ls,pepper:t,generation:r,kdfIterations:i}),a=await fs({password:e,username:n,info:hs,pepper:t,generation:r,kdfIterations:i});return{signing:Cn.sign.keyPair.fromSeed(s),encryption:Cn.box.keyPair.fromSecretKey(a),generation:r}}function xa(n){return{signingPublicKey:yr.encodeBase64(n.signing.publicKey),encryptionPublicKey:yr.encodeBase64(n.encryption.publicKey)}}xs.exports={deriveKeyPairFromCredentials:ma,deriveColdRecoverySigningKey:ga,keyPairToPublicBundle:xa,buildIdentitySalt:ms,buildColdRecoverySalt:gs,SIGNING_INFO:ls,ENCRYPTION_INFO:hs,COLD_RECOVERY_INFO:ps,concatBytes:ya}});var Ot=z((tu,Rs)=>{var vs=At(),mr=Mt(),{stableStringify:_s}=Dt(),{deriveKeyPairFromCredentials:xr,deriveColdRecoverySigningKey:Ps,keyPairToPublicBundle:vr}=gr(),Tn=new Set(["compromise-recovery","password-change"]);function Ss(n){return mr.decodeUTF8(n)}function bs(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 ws({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextPublicKey:i,rotationKind:s,reason:a,timestamp:u}){if(!n)throw new Error("Identity rotation requires username");if(!Tn.has(s))throw new Error(`Identity rotation kind must be one of: ${[...Tn].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:bs(r),nextPublicKey:bs(i),rotationKind:s,reason:a||"",timestamp:typeof u=="number"?u:Date.now()}}function br(n,e){let t=Ss(_s(n)),r=vs.sign.detached(t,e);return mr.encodeBase64(r)}function En(n,e,t){let r=Ss(_s(n)),i=mr.decodeBase64(e),s=mr.decodeBase64(t);return vs.sign.detached.verify(r,i,s)}function In({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextKeyPair:i,rotationKind:s,reason:a,timestamp:u,coldRecoverySigningSecretKey:h}){if(!i||!i.signing||!i.signing.secretKey)throw new Error("Identity rotation requires nextKeyPair with signing secret");let p=ws({username:n,fromGeneration:e,toGeneration:t,previousPublicKey:r,nextPublicKey:vr(i),rotationKind:s,reason:a,timestamp:u}),y={...p,signature:br(p,i.signing.secretKey)};return h&&(y.recoverySignature=br(p,h)),y}function Cs({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 Ts({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=Cs({username:n,recoveryPublicKey:t,timestamp:r});return{...i,signature:br(i,e)}}function ba(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 En(t,e,n.recoveryPublicKey)?{ok:!0,enrollment:n}:{ok:!1,error:"invalid-enrollment-signature"}}function Es(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(!Tn.has(n.rotationKind))return{ok:!1,error:"invalid-rotation-kind"};let{signature:t,recoverySignature:r,...i}=n;if(!En(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(!En(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 Is({username:n,coldPassword:e,pepper:t,kdfIterations:r}){return e?(await Ps({username:n,coldPassword:e,pepper:t,kdfIterations:r})).signing.secretKey:null}async function va({username:n,password:e,coldPassword:t,currentGeneration:r=1,reason:i="compromise-recovery",pepper:s="",kdfIterations:a,timestamp:u}={}){let h=await xr({username:n,password:e,generation:r,pepper:s,kdfIterations:a}),p=r+1,y=await xr({username:n,password:e,generation:p,pepper:s,kdfIterations:a}),b=await Is({username:n,coldPassword:t,pepper:s,kdfIterations:a});return{rotation:In({username:n,fromGeneration:r,toGeneration:p,previousPublicKey:vr(h),nextKeyPair:y,rotationKind:"compromise-recovery",reason:i,timestamp:u,coldRecoverySigningSecretKey:b}),currentKeyPair:h,nextKeyPair:y,nextGeneration:p,coldRecoveryUsed:!!b}}async function _a({username:n,currentPassword:e,newPassword:t,coldPassword:r,currentGeneration:i=1,reason:s="password-change",pepper:a="",kdfIterations:u,timestamp:h}={}){let p=await xr({username:n,password:e,generation:i,pepper:a,kdfIterations:u}),y=i+1,b=await xr({username:n,password:t,generation:y,pepper:a,kdfIterations:u}),E=await Is({username:n,coldPassword:r,pepper:a,kdfIterations:u});return{rotation:In({username:n,fromGeneration:i,toGeneration:y,previousPublicKey:vr(p),nextKeyPair:b,rotationKind:"password-change",reason:s,timestamp:h,coldRecoverySigningSecretKey:E}),currentKeyPair:p,nextKeyPair:b,nextGeneration:y,coldRecoveryUsed:!!E}}async function Pa({username:n,coldPassword:e,pepper:t="",kdfIterations:r,timestamp:i}={}){let s=await Ps({username:n,coldPassword:e,pepper:t,kdfIterations:r});return{enrollment:Ts({username:n,coldRecoverySigningSecretKey:s.signing.secretKey,recoveryPublicKey:s.recoveryPublicKey,timestamp:i}),recoveryPublicKey:s.recoveryPublicKey,coldRecovery:s}}function Sa(n,e,t={}){let r=t.enrolledRecoveryPublicKey||n&&n.recoveryPublicKey||null,i=Es(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}}Rs.exports={createIdentityRotation:In,createColdRecoveryEnrollment:Ts,verifyIdentityRotation:Es,verifyColdRecoveryEnrollment:ba,revokeAndRotateIdentity:va,rotateIdentityPassword:_a,enrollColdRecoveryPassword:Pa,shouldApplyIdentityRotation:Sa,keyPairToPublicBundle:vr,buildIdentityRotationPayload:ws,buildColdRecoveryEnrollmentPayload:Cs,signIdentityRotationPayload:br}});var Dt=z((ru,Os)=>{var Me=At(),ge=Mt(),Rn=wn(),As="change-this-app-password",_r={enabled:!0,signingEnabled:!0,encryptionEnabled:!0,powEnabled:!0,powTargetMs:1e3,appPassword:As,broadcastPasswords:{},resolveBroadcastPassword:null,powSteps:22,trustedPeerKeys:{},kdfIterations:1e5};function Ut(n){return n===null||typeof n!="object"?JSON.stringify(n):Array.isArray(n)?`[${n.map(t=>Ut(t)).join(",")}]`:`{${Object.keys(n).sort().map(t=>`${JSON.stringify(t)}:${Ut(n[t])}`).join(",")}}`}function Ms(n,e){let t=new Uint8Array(n.length+e.length);return t.set(n,0),t.set(e,n.length),t}function Pr(n){return Me.hash(n).slice(0,32)}function ks(n){return Array.from(n,e=>e.toString(16).padStart(2,"0")).join("")}function Bt(n){return ge.decodeUTF8(n)}async function An(n,e,t){let r=globalThis.crypto&&globalThis.crypto.subtle;if(r){let i=await r.importKey("raw",Bt(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}=bn("crypto");return new Uint8Array(i(n,Buffer.from(e),t,32,"sha256"))}catch{return Pr(Ms(Bt(n),e))}}function Ds(n,e){return Pr(Ms(Bt(n),e))}function kn(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 Mn=class{constructor({nodeId:e,options:t={},now:r}={}){if(!e)throw new Error("MessageSecurityService requires nodeId");this.nodeId=e,this.options={..._r,...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,kn(a)),this.peerIdentityGenerations.set(s,1);this.calibratedPowSteps=this.options.powSteps}getPublicKey(){return{...this.publicKeyBundle}}registerPeerPublicKey(e,t,r={}){let i=kn(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}=Ot(),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}=Ot(),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?kn(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 u=await this.generatePow(s);s.security.pow={enabled:!0,messageHash:u.messageHash,challenge:u.challenge,proof:u.proof,steps:u.steps,durationMs:u.durationMs}}if(this.options.signingEnabled){let u=this.canonicalSigningInput(s),h=Me.sign.detached(ge.decodeUTF8(u),this.signingSecretKey);s.security.signing={enabled:!0,algorithm:"ed25519",signature:ge.encodeBase64(h)}}return s}canonicalSigningInput(e){return Ut({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 Ut({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(Pr(Bt(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 K=Me.randomBytes(Me.box.nonceLength),re=Me.box(i,K,ge.decodeBase64(E.encryptionPublicKey),this.encryptionSecretKey);return{payload:ge.encodeBase64(re),security:{enabled:!0,mode:"direct",nonce:ge.encodeBase64(K),senderEncryptionPublicKey:this.publicKeyBundle.encryptionPublicKey}}}let s=r.broadcastScope||"default",a=Me.randomBytes(Me.secretbox.nonceLength),u=Me.randomBytes(16),h=this.resolveBroadcastPassword(s),p=this.options.kdfIterations||_r.kdfIterations,y=await An(h,u,p),b=Me.secretbox(i,a,y);return{payload:ge.encodeBase64(b),security:{enabled:!0,mode:"broadcast",scope:s,nonce:ge.encodeBase64(a),salt:ge.encodeBase64(u),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),u=ge.decodeBase64(t.nonce),h;if(t.kdf==="pbkdf2"){let y=this.options.kdfIterations||_r.kdfIterations,b=t.kdfIterations||y,E=Math.max(1e3,Math.floor(y*.1)),K=y*2;if(b<E||b>K)throw new Error(`Invalid kdfIterations: ${b}`);h=await An(s,a,b)}else h=Ds(s,a);let p=Me.secretbox.open(r,u,h);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(Pr(Bt(`probe:${this.nodeId}:${this.now()}`))),r=BigInt(2),i=this.now();await Rn.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 Rn.compute(r,i),u=this.now()-s;return{messageHash:t,challenge:r,proof:a,steps:i.toString(),durationMs:u}}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 Rn.verify(r.messageHash,BigInt(r.steps),r.proof)){let s=new Error("PoW verification failed");throw s.code="INVALID_POW",s}return!0}};Os.exports={MessageSecurityService:Mn,stableStringify:Ut,deriveBroadcastKey:An,legacyBroadcastKey:Ds,DEFAULT_SECURITY_OPTIONS:_r,DEFAULT_APP_PASSWORD:As}});var On=z((nu,Us)=>{var Sr="gossip:",wa={fanout:3,maxActivePeers:8,maxHops:6,relayEnabled:!0};function Ca(n){if(!n)throw new Error("peerGroupScope requires groupId");return`${Sr}${n}`}function Ta(n){return!n||!n.startsWith(Sr)?null:n.slice(Sr.length)}function Dn(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 Ea({peers:n,count:e,excludePeerIds:t=[],connectedPeerIds:r=[],randomFn:i=Math.random}){let s=new Set(t.filter(Boolean)),a=n.map(b=>b.peerId||b).filter(b=>b&&!s.has(b)),u=new Set(r.filter(Boolean)),h=a.filter(b=>u.has(b)),p=a.filter(b=>!u.has(b));return[...Dn(h,i),...Dn(p,i)].slice(0,Math.max(0,e))}Us.exports={PEER_GROUP_SCOPE_PREFIX:Sr,DEFAULT_PEER_GROUP_OPTIONS:wa,peerGroupScope:Ca,parsePeerGroupScope:Ta,shufflePeerIds:Dn,selectFanoutPeers:Ea}});var Ls=z((iu,Bs)=>{var Ia=At(),Bn=Mt(),Ra=ss(),{MessageSecurityService:ka,stableStringify:Aa,DEFAULT_APP_PASSWORD:Ma}=Dt(),{revokeAndRotateIdentity:Da,rotateIdentityPassword:Oa,enrollColdRecoveryPassword:Ua}=Ot(),{deriveKeyPairFromCredentials:Ba}=gr(),{DEFAULT_PEER_GROUP_OPTIONS:Un,peerGroupScope:La,selectFanoutPeers:ja}=On();function Lt(n){let e=Aa(n||{}),t=Bn.decodeUTF8(e),r=Ia.hash(t);return`sha512:${Array.from(r,s=>s.toString(16).padStart(2,"0")).join("")}`}var Ln=class extends Ra{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 ka({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:Un.fanout,this.defaultPeerGroupMaxActivePeers=s&&typeof s.peerGroupMaxActivePeers=="number"?s.peerGroupMaxActivePeers:Un.maxActivePeers,this.defaultGossipMaxHops=s&&typeof s.gossipMaxHops=="number"?s.gossipMaxHops:Un.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.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===Ma)&&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||Lt(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(u=>s||u!==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(),u=this.normalizeCollaboratorIds(r.collaborators),h={opId:this.idGenerator(),kind:"create",collectionName:e,id:s,actorId:this.nodeId,ownerId:this.nodeId,collaboratorIds:u,timestamp:a,payload:{...t||{}}};return this.applyOperation(h),await this.broadcastMessage("operation",h,{broadcastScope:r.broadcastScope||this.resolveBroadcastScope({messageType:"operation",operation:h,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 u=new Error(`Version conflict on ${e}/${t}: expected ${i.expectedVersion}, current ${s.version}`);throw u.code="VERSION_CONFLICT",u}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.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 u=this.read(e,t);if(!u)throw new Error(`Object ${t} does not exist in ${e}`);let h=await r(u);try{return await this.update(e,t,h,{...i,expectedVersion:u.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.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.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 Ua({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:u,broadcast:h=!1,broadcastOptions:p={}}={}){let y=await Da({username:e,password:t,coldPassword:r,currentGeneration:i,reason:s,pepper:a,kdfIterations:u});return h&&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:u="",kdfIterations:h,broadcast:p=!1,broadcastOptions:y={}}={}){let b=await Oa({username:e,currentPassword:t,newPassword:r,coldPassword:i,currentGeneration:s,reason:a,pepper:u,kdfIterations:h});return p&&await this.broadcastIdentityRotation(b.rotation,y),b}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:Bn.encodeBase64(e.signing.publicKey),encryptionPublicKey:Bn.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 Ba({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 La(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=[]){let i=this.peerGroupScopeFor(e),s=this.listPeers(i,{includeSelf:!1});return ja({peers:s,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={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};return await this.joinDiscovery(r,{metadata:{peerGroup:e,...t.metadata||{}},bootstrapPeerIds:t.bootstrapPeerIds,heartbeatIntervalMs:t.heartbeatIntervalMs,ttlMs:t.ttlMs}),this.peerGroups.set(e,i),this.emit("peergroupjoined",{groupId:e,config:i}),i}async leavePeerGroup(e){if(!e)return;let t=this.peerGroupScopeFor(e);await this.leaveDiscovery(t),this.peerGroups.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 b=this.lastGossipPublishAt.get(e)||0;if(this.now()-b<this.gossipPublishMinIntervalMs){let K=new Error(`Gossip publish rate limit exceeded for group ${e}`);throw K.code="GOSSIP_RATE_LIMIT",K}}let a=typeof i.fanout=="number"?i.fanout:s?s.fanout:this.defaultPeerGroupFanout,u=s?s.maxActivePeers:this.defaultPeerGroupMaxActivePeers,h=typeof i.maxHops=="number"?i.maxHops:s?s.maxHops:this.defaultGossipMaxHops,p=this.selectPeerGroupFanout(e,a,[this.nodeId]);p.length>0&&(await this.ensureConnectedToPeers(p.slice(0,u)),await this.enforceConnectionBudget());let y=i.gossipId||this.idGenerator();return this.markSeenGossip(y),this.lastGossipPublishAt.set(e,this.now()),await this.broadcastMessage("peer-group:gossip",{groupId:e,gossipId:y,publisherId:this.nodeId,hop:0,maxHop:h,innerMessageType:t,innerPayload:r},{broadcastScope:this.peerGroupScopeFor(e),fanoutPeerIds:p}),{gossipId:y,fanoutPeerIds:p}}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 u=this.normalizeRecord(a);return this.publishToPeerGroup(e,"record:snapshot",{collectionName:t,record:u},i)}async handlePeerGroupGossip(e){let t=e.payload||{},{groupId:r,gossipId:i,publisherId:s=e.senderId,hop:a=0,maxHop:u,innerMessageType:h,innerPayload:p}=t;if(!r||!h||!i||!this.peerGroups.has(r)||this.hasSeenGossip(i))return;this.markSeenGossip(i),await this.dispatchPeerGroupInnerMessage(h,p,{groupId:r,senderId:e.senderId,publisherId:s});let y=this.peerGroups.get(r),b=y?y.maxHops:this.defaultGossipMaxHops,E=typeof u=="number"?Math.min(u,b):b;if(!y||y.relayEnabled===!1||a>=E)return;let K=this.selectPeerGroupFanout(r,y.fanout,[e.senderId,this.nodeId]);K.length!==0&&(await this.ensureConnectedToPeers(K.slice(0,y.maxActivePeers)),await this.enforceConnectionBudget(),await this.broadcastMessage("peer-group:gossip",{groupId:r,gossipId:i,publisherId:s,hop:a+1,maxHop:E,innerMessageType:h,innerPayload:p},{broadcastScope:this.peerGroupScopeFor(r),fanoutPeerIds:K}))}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==="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),u=a.get(t),h={peerId:t,scope:e,metadata:r?{...r}:{},lastSeenAt:s,expiresAt:s+i};return a.set(t,h),this.trustPeerFromMetadata(t,h.metadata),u||this.emit("peerdiscovered",{scope:e,peerId:t,metadata:h.metadata}),h}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||{}},u=Array.isArray(t.bootstrapPeerIds)?[...new Set(t.bootstrapPeerIds.filter(Boolean))]:[],h=this.discoveryRooms.get(r);h&&h.timer&&clearInterval(h.timer),u.length>0&&await this.ensureConnectedToPeers(u);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:u,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),h=!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),h&&s!==this.nodeId&&this.discoveryRooms.has(i)&&(typeof this.networkAdapter.connectToPeer=="function"&&Promise.resolve(this.connectToPeer(s)).catch(b=>{this.emit("warning",{type:"peer-connect-failed",scope:i,peerId:s,error:b})}),this.announcePresence(i).catch(b=>{this.emit("warning",{type:"presence-handshake-failed",scope:i,error:b})}));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||{}},u=Lt(a),h=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!==u&&(this.emit("warning",{type:"content-hash-mismatch",collection:e,id:t.id,advertisedHash:t.hash,computedHash:u,via:r.via||null}),h))return!1}else{let y={type:"content-hash-missing",collection:e,id:t.id,via:r.via||null};if(this.emit("warning",y),h)return!1}return i.set(t.id,{id:t.id,ownerId:t.ownerId,collaboratorIds:this.normalizeCollaboratorIds(t.collaboratorIds),data:a,hash:u,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||Lt(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:Lt(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=Lt(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}};Bs.exports=Ln});var Kn=z((su,js)=>{var jn=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}};js.exports=jn});var wr=z((ou,Fs)=>{function Ks(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 Fn=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_${Ks(10)}`,r=Ks(10),i=this.url.includes("?"),s=/[?&]id=/.test(this.url),a=/[?&]token=/.test(this.url),u=this.url;return s||(u+=`${i?"&":"?"}id=${t}`),a||(u+=`${u.includes("?")?"&":"?"}token=${r}`),u}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)}};Fs.exports=Fn});var Cr=z((au,Gs)=>{function Ka(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}}Gs.exports=Ka});var zs=z((cu,Er)=>{function Nn(n,e,t,r){Object.defineProperty(n,e,{get:t,set:r,enumerable:!0,configurable:!0})}Nn(Er.exports,"unpack",()=>Ga);Nn(Er.exports,"pack",()=>za);Nn(Er.exports,"Packer",()=>Tr);var Gn=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 Fa(e).buffer}};function Fa(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 Ga(n){return new zn(n).unpack()}function za(n){let e=new Tr,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")}},Tr=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,u=t<<31|r+1023<<20|s/a&1048575,h=s%a;this._bufferBuilder.append(203),this.pack_int32(u),this.pack_int32(h)}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 u=this.pack(e[a]);if(u instanceof Promise)return u.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 Gn,this._textEncoder=new TextEncoder}}});var nt=z(je=>{"use strict";Object.defineProperty(je,"__esModule",{value:!0});je.compactObject=Hs;je.deprecated=Ja;je.detectBrowser=Xa;je.disableLog=Va;je.disableWarnings=Wa;je.extractVersion=jt;je.filterStats=Za;je.log=Ya;je.walkStats=Ir;je.wrapPeerConnectionEvent=Ha;function Na(n,e,t){return(e=$a(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function $a(n){var e=qa(n,"string");return rt(e)=="symbol"?e:e+""}function qa(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 $s=!0,qs=!0;function jt(n,e,t){var r=n.match(e);return r&&r.length>=t&&parseFloat(r[t],10)}function Ha(n,e,t){if(n.RTCPeerConnection){var r=n.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(a,u){if(a!==e)return i.apply(this,arguments);var h=function(y){var b=t(y);b&&(u.handleEvent?u.handleEvent(b):u(b))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(u,h),i.apply(this,[a,h])};var s=r.removeEventListener;r.removeEventListener=function(a,u){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(u))return s.apply(this,arguments);var h=this._eventMap[e].get(u);return this._eventMap[e].delete(u),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,h])},Object.defineProperty(r,"on"+e,{get:function(){return this["_on"+e]},set:function(u){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),u&&this.addEventListener(e,this["_on"+e]=u)},enumerable:!0,configurable:!0})}}function Va(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):($s=n,n?"adapter.js logging disabled":"adapter.js logging enabled")}function Wa(n){return typeof n!="boolean"?new Error("Argument type: "+rt(n)+". Please use a boolean."):(qs=!n,"adapter.js deprecation warnings "+(n?"disabled":"enabled"))}function Ya(){if((typeof window>"u"?"undefined":rt(window))==="object"){if($s)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ja(n,e){qs&&console.warn(n+" is deprecated, please use "+e+" instead.")}function Xa(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(jt(t.userAgent,/Firefox\/(\d+)\./,1));else if(t.webkitGetUserMedia||n.isSecureContext===!1&&n.webkitRTCPeerConnection)e.browser="chrome",e.version=parseInt(jt(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2))||null;else if(n.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=parseInt(jt(t.userAgent,/AppleWebKit\/(\d+)\./,1)),e.supportsUnifiedPlan=n.RTCRtpTransceiver&&"currentDirection"in n.RTCRtpTransceiver.prototype,e._safariVersion=jt(t.userAgent,/Version\/(\d+(\.?\d+))/,1);else return e.browser="Not a supported browser.",e;return e}function Ns(n){return Object.prototype.toString.call(n)==="[object Object]"}function Hs(n){return Ns(n)?Object.keys(n).reduce(function(e,t){var r=Ns(n[t]),i=r?Hs(n[t]):n[t],s=r&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,Na({},t,i))},{}):n}function Ir(n,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(function(r){r.endsWith("Id")?Ir(n,n.get(e[r]),t):r.endsWith("Ids")&&e[r].forEach(function(i){Ir(n,n.get(i),t)})}))}function Za(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(u){u.type===r&&u.trackId===a.id&&Ir(n,u,i)})}),i}});var Ys=z($n=>{"use strict";Object.defineProperty($n,"__esModule",{value:!0});$n.shimGetUserMedia=ec;var Qa=Ws(nt());function Ws(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Ws=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||it(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):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 Vs=Qa.log;function ec(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(b){if(!(b==="require"||b==="advanced"||b==="mediaSource")){var E=it(p[b])==="object"?p[b]:{ideal:p[b]};E.exact!==void 0&&typeof E.exact=="number"&&(E.min=E.max=E.exact);var K=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 re={};typeof E.ideal=="number"?(re[K("min",b)]=E.ideal,y.optional.push(re),re={},re[K("max",b)]=E.ideal,y.optional.push(re)):(re[K("",b)]=E.ideal,y.optional.push(re))}E.exact!==void 0&&typeof E.exact!="number"?(y.mandatory=y.mandatory||{},y.mandatory[K("",b)]=E.exact):["min","max"].forEach(function(fe){E[fe]!==void 0&&(y.mandatory=y.mandatory||{},y.mandatory[K(fe,b)]=E[fe])})}}),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 b=function(ue,be,mt){be in ue&&!(mt in ue)&&(ue[mt]=ue[be],delete ue[be])};p=JSON.parse(JSON.stringify(p)),b(p.audio,"autoGainControl","googAutoGainControl"),b(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 K=e.version<66;if(E&&(E.exact==="user"||E.exact==="environment"||E.ideal==="user"||E.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!K)){delete p.video.facingMode;var re;if(E.exact==="environment"||E.ideal==="environment"?re=["back","rear"]:(E.exact==="user"||E.ideal==="user")&&(re=["front"]),re)return t.mediaDevices.enumerateDevices().then(function(fe){fe=fe.filter(function(be){return be.kind==="videoinput"});var ue=fe.find(function(be){return re.some(function(mt){return be.label.toLowerCase().includes(mt)})});return!ue&&fe.length&&re.includes("back")&&(ue=fe[fe.length-1]),ue&&(p.video.deviceId=E.exact?{exact:ue.deviceId}:{ideal:ue.deviceId}),p.video=r(p.video),Vs("chrome: "+JSON.stringify(p)),y(p)})}p.video=r(p.video)}return Vs("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,b){i(p,function(E){t.webkitGetUserMedia(E,y,function(K){b&&b(s(K))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){var u=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(h){return i(h,function(p){return u(p).then(function(y){if(p.audio&&!y.getAudioTracks().length||p.video&&!y.getVideoTracks().length)throw y.getTracks().forEach(function(b){b.stop()}),new DOMException("","NotFoundError");return y},function(y){return Promise.reject(s(y))})})}}}}});var Qs=z(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.fixNegotiationNeeded=dc;ze.shimAddTrackRemoveTrack=cc;ze.shimAddTrackRemoveTrackWithNative=Zs;ze.shimGetSendersWithDtmf=oc;Object.defineProperty(ze,"shimGetUserMedia",{enumerable:!0,get:function(){return tc.shimGetUserMedia}});ze.shimMediaStream=ic;ze.shimOnTrack=sc;ze.shimPeerConnection=fc;ze.shimSenderReceiverGetStats=ac;var Kt=Js(nt()),tc=Ys();function Js(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(Js=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||He(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):p[y]=s[y]);return p})(n,e)}function Xs(n,e,t){return(e=rc(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function rc(n){var e=nc(n,"string");return He(e)=="symbol"?e:e+""}function nc(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 ic(n){n.MediaStream=n.MediaStream||n.webkitMediaStream}function sc(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(h){return h.track&&h.track.id===s.track.id}):a={track:s.track};var u=new Event("track");u.track=s.track,u.receiver=a,u.transceiver={receiver:a},u.streams=[i.stream],r.dispatchEvent(u)}),i.stream.getTracks().forEach(function(s){var a;n.RTCPeerConnection.prototype.getReceivers?a=r.getReceivers().find(function(h){return h.track&&h.track.id===s.id}):a={track:s};var u=new Event("track");u.track=s,u.receiver=a,u.transceiver={receiver:a},u.streams=[i.stream],r.dispatchEvent(u)})},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 oc(n){if(He(n)==="object"&&n.RTCPeerConnection&&!("getSenders"in n.RTCPeerConnection.prototype)&&"createDTMFSender"in n.RTCPeerConnection.prototype){var e=function(h,p){return{track:p,get dtmf(){return this._dtmf===void 0&&(p.kind==="audio"?this._dtmf=h.createDTMFSender(p):this._dtmf=null),this._dtmf},_pc:h}};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(h,p){var y=t.apply(this,arguments);return y||(y=e(this,h),this._senders.push(y)),y};var r=n.RTCPeerConnection.prototype.removeTrack;n.RTCPeerConnection.prototype.removeTrack=function(h){r.apply(this,arguments);var p=this._senders.indexOf(h);p!==-1&&this._senders.splice(p,1)}}var i=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(h){var p=this;this._senders=this._senders||[],i.apply(this,[h]),h.getTracks().forEach(function(y){p._senders.push(e(p,y))})};var s=n.RTCPeerConnection.prototype.removeStream;n.RTCPeerConnection.prototype.removeStream=function(h){var p=this;this._senders=this._senders||[],s.apply(this,[h]),h.getTracks().forEach(function(y){var b=p._senders.find(function(E){return E.track===y});b&&p._senders.splice(p._senders.indexOf(b),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 h=this,p=a.apply(this,[]);return p.forEach(function(y){return y._pc=h}),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 ac(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,u=e.apply(this,[]);return u.forEach(function(h){return h._pc=a}),u});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(u){return Kt.filterStats(u,a.track,!0)})}}if(!("getStats"in n.RTCRtpReceiver.prototype)){var r=n.RTCPeerConnection.prototype.getReceivers;r&&(n.RTCPeerConnection.prototype.getReceivers=function(){var a=this,u=r.apply(this,[]);return u.forEach(function(h){return h._pc=a}),u}),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(u){return Kt.filterStats(u,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],u,h,p;return this.getSenders().forEach(function(y){y.track===a&&(u?p=!0:u=y)}),this.getReceivers().forEach(function(y){return y.track===a&&(h?p=!0:h=y),y.track===a}),p||u&&h?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):u?u.getStats():h?h.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return i.apply(this,arguments)}}}}function Zs(n){n.RTCPeerConnection.prototype.getLocalStreams=function(){var a=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(function(u){return a._shimmedLocalStreams[u][0]})};var e=n.RTCPeerConnection.prototype.addTrack;n.RTCPeerConnection.prototype.addTrack=function(a,u){if(!u)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var h=e.apply(this,arguments);return this._shimmedLocalStreams[u.id]?this._shimmedLocalStreams[u.id].indexOf(h)===-1&&this._shimmedLocalStreams[u.id].push(h):this._shimmedLocalStreams[u.id]=[u,h],h};var t=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(a){var u=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(function(y){var b=u.getSenders().find(function(E){return E.track===y});if(b)throw new DOMException("Track already exists.","InvalidAccessError")});var h=this.getSenders();t.apply(this,arguments);var p=this.getSenders().filter(function(y){return h.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 u=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(function(h){var p=u._shimmedLocalStreams[h].indexOf(a);p!==-1&&u._shimmedLocalStreams[h].splice(p,1),u._shimmedLocalStreams[h].length===1&&delete u._shimmedLocalStreams[h]}),i.apply(this,arguments)}}function cc(n,e){if(!n.RTCPeerConnection)return;if(n.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Zs(n);var t=n.RTCPeerConnection.prototype.getLocalStreams;n.RTCPeerConnection.prototype.getLocalStreams=function(){var y=this,b=t.apply(this);return this._reverseStreams=this._reverseStreams||{},b.map(function(E){return y._reverseStreams[E.id]})};var r=n.RTCPeerConnection.prototype.addStream;n.RTCPeerConnection.prototype.addStream=function(y){var b=this;if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},y.getTracks().forEach(function(K){var re=b.getSenders().find(function(fe){return fe.track===K});if(re)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,b){var E=this;if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var K=[].slice.call(arguments,1);if(K.length!==1||!K[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 re=this.getSenders().find(function(be){return be.track===y});if(re)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};var fe=this._streams[b.id];if(fe)fe.addTrack(y),Promise.resolve().then(function(){E.dispatchEvent(new Event("negotiationneeded"))});else{var ue=new n.MediaStream([y]);this._streams[b.id]=ue,this._reverseStreams[ue.id]=b,this.addStream(ue)}return this.getSenders().find(function(be){return be.track===y})};function s(p,y){var b=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var K=p._reverseStreams[E],re=p._streams[K.id];b=b.replace(new RegExp(re.id,"g"),K.id)}),new RTCSessionDescription({type:y.type,sdp:b})}function a(p,y){var b=y.sdp;return Object.keys(p._reverseStreams||[]).forEach(function(E){var K=p._reverseStreams[E],re=p._streams[K.id];b=b.replace(new RegExp(K.id,"g"),re.id)}),new RTCSessionDescription({type:y.type,sdp:b})}["createOffer","createAnswer"].forEach(function(p){var y=n.RTCPeerConnection.prototype[p],b=Xs({},p,function(){var E=this,K=arguments,re=arguments.length&&typeof arguments[0]=="function";return re?y.apply(this,[function(fe){var ue=s(E,fe);K[0].apply(null,[ue])},function(fe){K[1]&&K[1].apply(null,fe)},arguments[2]]):y.apply(this,arguments).then(function(fe){return s(E,fe)})});n.RTCPeerConnection.prototype[p]=b[p]});var u=n.RTCPeerConnection.prototype.setLocalDescription;n.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?u.apply(this,arguments):(arguments[0]=a(this,arguments[0]),u.apply(this,arguments))};var h=Object.getOwnPropertyDescriptor(n.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(n.RTCPeerConnection.prototype,"localDescription",{get:function(){var y=h.get.apply(this);return y.type===""?y:s(this,y)}}),n.RTCPeerConnection.prototype.removeTrack=function(y){var b=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 K;Object.keys(this._streams).forEach(function(re){var fe=b._streams[re].getTracks().find(function(ue){return y.track===ue});fe&&(K=b._streams[re])}),K&&(K.getTracks().length===1?this.removeStream(this._reverseStreams[K.id]):K.removeTrack(y.track),this.dispatchEvent(new Event("negotiationneeded")))}}function fc(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=Xs({},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 dc(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 to=z(qn=>{"use strict";Object.defineProperty(qn,"__esModule",{value:!0});qn.shimGetUserMedia=lc;var uc=eo(nt());function eo(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(eo=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||Pt(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):p[y]=s[y]);return p})(n,e)}function Pt(n){"@babel/helpers - typeof";return Pt=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},Pt(n)}function lc(n,e){var t=n&&n.navigator,r=n&&n.MediaStreamTrack;if(t.getUserMedia=function(h,p,y){uc.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(h).then(p,y)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){var i=function(p,y,b){y in p&&!(b in p)&&(p[b]=p[y],delete p[y])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(t.mediaDevices.getUserMedia=function(h){return Pt(h)==="object"&&Pt(h.audio)==="object"&&(h=JSON.parse(JSON.stringify(h)),i(h.audio,"autoGainControl","mozAutoGainControl"),i(h.audio,"noiseSuppression","mozNoiseSuppression")),s(h)},r&&r.prototype.getSettings){var a=r.prototype.getSettings;r.prototype.getSettings=function(){var h=a.apply(this,arguments);return i(h,"mozAutoGainControl","autoGainControl"),i(h,"mozNoiseSuppression","noiseSuppression"),h}}if(r&&r.prototype.applyConstraints){var u=r.prototype.applyConstraints;r.prototype.applyConstraints=function(h){return this.kind==="audio"&&Pt(h)==="object"&&(h=JSON.parse(JSON.stringify(h)),i(h,"autoGainControl","mozAutoGainControl"),i(h,"noiseSuppression","mozNoiseSuppression")),u.apply(this,[h])}}}}});var ro=z(Hn=>{"use strict";Object.defineProperty(Hn,"__esModule",{value:!0});Hn.shimGetDisplayMedia=hc;function hc(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 so=z(Oe=>{"use strict";Object.defineProperty(Oe,"__esModule",{value:!0});Oe.shimAddTransceiver=kc;Oe.shimCreateAnswer=Dc;Oe.shimCreateOffer=Mc;Object.defineProperty(Oe,"shimGetDisplayMedia",{enumerable:!0,get:function(){return yc.shimGetDisplayMedia}});Oe.shimGetParameters=Ac;Object.defineProperty(Oe,"shimGetUserMedia",{enumerable:!0,get:function(){return pc.shimGetUserMedia}});Oe.shimOnTrack=wc;Oe.shimPeerConnection=Cc;Oe.shimRTCDataChannel=Rc;Oe.shimReceiverGetStats=Ec;Oe.shimRemoveStream=Ic;Oe.shimSenderGetStats=Tc;var no=io(nt()),pc=to(),yc=ro();function io(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(io=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||De(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):p[y]=s[y]);return p})(n,e)}function gc(n){return vc(n)||bc(n)||xc(n)||mc()}function mc(){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 xc(n,e){if(n){if(typeof n=="string")return Vn(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)?Vn(n,e):void 0}}function bc(n){if(typeof Symbol<"u"&&n[Symbol.iterator]!=null||n["@@iterator"]!=null)return Array.from(n)}function vc(n){if(Array.isArray(n))return Vn(n)}function Vn(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 _c(n,e,t){return(e=Pc(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function Pc(n){var e=Sc(n,"string");return De(e)=="symbol"?e:e+""}function Sc(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 wc(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 Cc(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=_c({},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],u=s[1],h=s[2];return r.apply(this,[a||null]).then(function(p){if(e.version<53&&!u)try{p.forEach(function(y){y.type=t[y.type]||y.type})}catch(y){if(y.name!=="TypeError")throw y;p.forEach(function(b,E){p.set(E,Object.assign({},b,{type:t[b.type]||b.type}))})}return p}).then(u,h)}}}function Tc(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 Ec(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}),no.wrapPeerConnectionEvent(n,"track",function(t){return t.receiver._pc=t.srcElement,t}),n.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}}function Ic(n){!n.RTCPeerConnection||"removeStream"in n.RTCPeerConnection.prototype||(n.RTCPeerConnection.prototype.removeStream=function(t){var r=this;no.deprecated("removeStream","removeTrack"),this.getSenders().forEach(function(i){i.track&&t.getTracks().includes(i.track)&&r.removeTrack(i)})})}function Rc(n){n.DataChannel&&!n.RTCDataChannel&&(n.RTCDataChannel=n.DataChannel)}function kc(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=gc(r);var i=r.length>0;i&&r.forEach(function(h){if("rid"in h){var p=/^[a-z0-9]{0,16}$/i;if(!p.test(h.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in h&&!(parseFloat(h.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in h&&!(parseFloat(h.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});var s=e.apply(this,arguments);if(i){var a=s.sender,u=a.getParameters();(!("encodings"in u)||u.encodings.length===1&&Object.keys(u.encodings[0]).length===0)&&(u.encodings=r,a.sendEncodings=r,this.setParametersPromises.push(a.setParameters(u).then(function(){delete a.sendEncodings}).catch(function(){delete a.sendEncodings})))}return s})}}function Ac(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 Mc(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 Dc(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 fo=z(Ne=>{"use strict";Object.defineProperty(Ne,"__esModule",{value:!0});Ne.shimAudioContext=Gc;Ne.shimCallbacksAPI=Bc;Ne.shimConstraints=co;Ne.shimCreateOfferLegacy=Fc;Ne.shimGetUserMedia=Lc;Ne.shimLocalStreamsAPI=Oc;Ne.shimRTCIceServerUrls=jc;Ne.shimRemoteStreamsAPI=Uc;Ne.shimTrackEventTransceiver=Kc;var oo=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 u,h,p={__proto__:null,default:s};if(s===null||st(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):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 Oc(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),u=1;u<s;u++)a[u-1]=arguments[u];return a&&a.forEach(function(h){i._localStreams?i._localStreams.includes(h)||i._localStreams.push(h):i._localStreams=[h]}),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(u){a.includes(u.track)&&i.removeTrack(u)})}})}}function Uc(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 u=new Event("addstream");u.stream=a,i.dispatchEvent(u)}})})}});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 Bc(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 b=arguments.length>=2?arguments[2]:arguments[0],E=t.apply(this,[b]);return y?(E.then(p,y),Promise.resolve()):E},e.createAnswer=function(p,y){var b=arguments.length>=2?arguments[2]:arguments[0],E=r.apply(this,[b]);return y?(E.then(p,y),Promise.resolve()):E};var u=function(p,y,b){var E=i.apply(this,[p]);return b?(E.then(y,b),Promise.resolve()):E};e.setLocalDescription=u,u=function(p,y,b){var E=s.apply(this,[p]);return b?(E.then(y,b),Promise.resolve()):E},e.setRemoteDescription=u,u=function(p,y,b){var E=a.apply(this,[p]);return b?(E.then(y,b),Promise.resolve()):E},e.addIceCandidate=u}}function Lc(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(co(i))}}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(s,a,u){e.mediaDevices.getUserMedia(s).then(a,u)}.bind(e))}function co(n){return n&&n.video!==void 0?Object.assign({},n,{video:oo.compactObject(n.video)}):n}function jc(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 u=r.iceServers[a];u.urls===void 0&&u.url?(oo.deprecated("RTCIceServer.url","RTCIceServer.urls"),u=JSON.parse(JSON.stringify(u)),u.urls=u.url,delete u.url,s.push(u)):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 Kc(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 Fc(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 Gc(n){st(n)!=="object"||n.AudioContext||(n.AudioContext=n.webkitAudioContext)}});var Yn=z((gu,Wn)=>{"use strict";var T={};T.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)};T.localCName=T.generateIdentifier();T.splitLines=function(n){return n.trim().split(`
|
|
3
3
|
`).map(e=>e.trim())};T.splitSections=function(n){return n.split(`
|
|
4
4
|
m=`).map((t,r)=>(r>0?"m="+t:t).trim()+`\r
|
|
5
5
|
`)};T.getDescription=function(n){let e=T.splitSections(n);return e&&e[0]};T.getMediaSections=function(n){let e=T.splitSections(n);return e.shift(),e};T.matchPrefix=function(n,e){return T.splitLines(n).filter(t=>t.indexOf(e)===0)};T.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};T.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(" ")};T.parseIceOptions=function(n){return n.substring(14).split(" ")};T.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};T.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
|
|
@@ -12,14 +12,14 @@ m=`).map((t,r)=>(r>0?"m="+t:t).trim()+`\r
|
|
|
12
12
|
`};T.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}};T.writeCryptoKeyParams=function(n){return n.keyMethod+":"+n.keySalt+(n.lifeTime?"|"+n.lifeTime:"")+(n.mkiValue&&n.mkiLength?"|"+n.mkiValue+":"+n.mkiLength:"")};T.getCryptoParameters=function(n,e){return T.matchPrefix(n+e,"a=crypto:").map(T.parseCryptoLine)};T.getIceParameters=function(n,e){let t=T.matchPrefix(n+e,"a=ice-ufrag:")[0],r=T.matchPrefix(n+e,"a=ice-pwd:")[0];return t&&r?{usernameFragment:t.substring(12),password:r.substring(10)}:null};T.writeIceParameters=function(n){let e="a=ice-ufrag:"+n.usernameFragment+`\r
|
|
13
13
|
a=ice-pwd:`+n.password+`\r
|
|
14
14
|
`;return n.iceLite&&(e+=`a=ice-lite\r
|
|
15
|
-
`),e};T.parseRtpParameters=function(n){let e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=T.splitLines(n)[0].split(" ");e.profile=r[2];for(let s=3;s<r.length;s++){let
|
|
15
|
+
`),e};T.parseRtpParameters=function(n){let e={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=T.splitLines(n)[0].split(" ");e.profile=r[2];for(let s=3;s<r.length;s++){let a=r[s],u=T.matchPrefix(n,"a=rtpmap:"+a+" ")[0];if(u){let h=T.parseRtpMap(u),p=T.matchPrefix(n,"a=fmtp:"+a+" ");switch(h.parameters=p.length?T.parseFmtp(p[0]):{},h.rtcpFeedback=T.matchPrefix(n,"a=rtcp-fb:"+a+" ").map(T.parseRtcpFb),e.codecs.push(h),h.name.toUpperCase()){case"RED":case"ULPFEC":e.fecMechanisms.push(h.name.toUpperCase());break;default:break}}}T.matchPrefix(n,"a=extmap:").forEach(s=>{e.headerExtensions.push(T.parseExtmap(s))});let i=T.matchPrefix(n,"a=rtcp-fb:* ").map(T.parseRtcpFb);return e.codecs.forEach(s=>{i.forEach(a=>{s.rtcpFeedback.find(h=>h.type===a.type&&h.parameter===a.parameter)||s.rtcpFeedback.push(a)})}),e};T.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
|
|
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
18
|
`,e.codecs.forEach(i=>{t+=T.writeRtpMap(i),t+=T.writeFmtp(i),t+=T.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+=T.writeExtmap(i)}),t};T.parseRtpEncodingParameters=function(n){let e=[],t=T.parseRtpParameters(n),r=t.fecMechanisms.indexOf("RED")!==-1,i=t.fecMechanisms.indexOf("ULPFEC")!==-1,s=T.matchPrefix(n,"a=ssrc:").map(
|
|
19
|
+
`),e.headerExtensions&&e.headerExtensions.forEach(i=>{t+=T.writeExtmap(i)}),t};T.parseRtpEncodingParameters=function(n){let e=[],t=T.parseRtpParameters(n),r=t.fecMechanisms.indexOf("RED")!==-1,i=t.fecMechanisms.indexOf("ULPFEC")!==-1,s=T.matchPrefix(n,"a=ssrc:").map(y=>T.parseSsrcMedia(y)).filter(y=>y.attribute==="cname"),a=s.length>0&&s[0].ssrc,u,h=T.matchPrefix(n,"a=ssrc-group:FID").map(y=>y.substring(17).split(" ").map(E=>parseInt(E,10)));h.length>0&&h[0].length>1&&h[0][0]===a&&(u=h[0][1]),t.codecs.forEach(y=>{if(y.name.toUpperCase()==="RTX"&&y.parameters.apt){let b={ssrc:a,codecPayloadType:parseInt(y.parameters.apt,10)};a&&u&&(b.rtx={ssrc:u}),e.push(b),r&&(b=JSON.parse(JSON.stringify(b)),b.fec={ssrc:a,mechanism:i?"red+ulpfec":"red"},e.push(b))}}),e.length===0&&a&&e.push({ssrc:a});let p=T.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};T.parseRtcpParameters=function(n){let e={},t=T.matchPrefix(n,"a=ssrc:").map(s=>T.parseSsrcMedia(s)).filter(s=>s.attribute==="cname")[0];t&&(e.cname=t.value,e.ssrc=t.ssrc);let r=T.matchPrefix(n,"a=rtcp-rsize");e.reducedSize=r.length>0,e.compound=r.length===0;let i=T.matchPrefix(n,"a=rtcp-mux");return e.mux=i.length>0,e};T.writeRtcpParameters=function(n){let e="";return n.reducedSize&&(e+=`a=rtcp-rsize\r
|
|
20
20
|
`),n.mux&&(e+=`a=rtcp-mux\r
|
|
21
21
|
`),n.ssrc!==void 0&&n.cname&&(e+="a=ssrc:"+n.ssrc+" cname:"+n.cname+`\r
|
|
22
|
-
`),e};T.parseMsid=function(n){let e,t=T.matchPrefix(n,"a=msid:");if(t.length===1)return e=t[0].substring(7).split(" "),{stream:e[0],track:e[1]};let r=T.matchPrefix(n,"a=ssrc:").map(i=>T.parseSsrcMedia(i)).filter(i=>i.attribute==="msid");if(r.length>0)return e=r[0].value.split(" "),{stream:e[0],track:e[1]}};T.parseSctpDescription=function(n){let e=T.parseMLine(n),t=T.matchPrefix(n,"a=max-message-size:"),r;t.length>0&&(r=parseInt(t[0].substring(19),10)),isNaN(r)&&(r=65536);let i=T.matchPrefix(n,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:e.fmt,maxMessageSize:r};let s=T.matchPrefix(n,"a=sctpmap:");if(s.length>0){let
|
|
22
|
+
`),e};T.parseMsid=function(n){let e,t=T.matchPrefix(n,"a=msid:");if(t.length===1)return e=t[0].substring(7).split(" "),{stream:e[0],track:e[1]};let r=T.matchPrefix(n,"a=ssrc:").map(i=>T.parseSsrcMedia(i)).filter(i=>i.attribute==="msid");if(r.length>0)return e=r[0].value.split(" "),{stream:e[0],track:e[1]}};T.parseSctpDescription=function(n){let e=T.parseMLine(n),t=T.matchPrefix(n,"a=max-message-size:"),r;t.length>0&&(r=parseInt(t[0].substring(19),10)),isNaN(r)&&(r=65536);let i=T.matchPrefix(n,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:e.fmt,maxMessageSize:r};let s=T.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}}};T.writeSctpDescription=function(n,e){let t=[];return n.protocol!=="DTLS/SCTP"?t=["m="+n.kind+" 9 "+n.protocol+" "+e.protocol+`\r
|
|
23
23
|
`,`c=IN IP4 0.0.0.0\r
|
|
24
24
|
`,"a=sctp-port:"+e.port+`\r
|
|
25
25
|
`]:t=["m="+n.kind+" 9 "+n.protocol+" "+e.port+`\r
|
|
@@ -30,13 +30,13 @@ a=ice-pwd:`+n.password+`\r
|
|
|
30
30
|
o=`+(t||"thisisadapterortc")+" "+r+" "+i+` IN IP4 127.0.0.1\r
|
|
31
31
|
s=-\r
|
|
32
32
|
t=0 0\r
|
|
33
|
-
`};T.getDirection=function(n,e){let t=T.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?T.getDirection(e):"sendrecv"};T.getKind=function(n){return T.splitLines(n)[0].split(" ")[0].substring(2)};T.isRejected=function(n){return n.split(" ",2)[1]==="0"};T.parseMLine=function(n){let t=T.splitLines(n)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}};T.parseOLine=function(n){let t=T.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]}};T.isValidSDP=function(n){if(typeof n!="string"||n.length===0)return!1;let e=T.splitLines(n);for(let t=0;t<e.length;t++)if(e[t].length<2||e[t].charAt(1)!=="=")return!1;return!0};typeof
|
|
33
|
+
`};T.getDirection=function(n,e){let t=T.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?T.getDirection(e):"sendrecv"};T.getKind=function(n){return T.splitLines(n)[0].split(" ")[0].substring(2)};T.isRejected=function(n){return n.split(" ",2)[1]==="0"};T.parseMLine=function(n){let t=T.splitLines(n)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}};T.parseOLine=function(n){let t=T.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]}};T.isValidSDP=function(n){if(typeof n!="string"||n.length===0)return!1;let e=T.splitLines(n);for(let t=0;t<e.length;t++)if(e[t].length<2||e[t].charAt(1)!=="=")return!1;return!0};typeof Wn=="object"&&(Wn.exports=T)});var lo=z(Ve=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.removeExtmapAllowMixed=Wc;Ve.shimAddIceCandidateNullOrEmpty=Yc;Ve.shimConnectionState=Vc;Ve.shimMaxMessageSize=qc;Ve.shimParameterlessSetLocalDescription=Jc;Ve.shimRTCIceCandidate=Nc;Ve.shimRTCIceCandidateRelayProtocol=$c;Ve.shimSendThrowTypeError=Hc;var Ft=zc(Yn()),Jn=uo(nt());function uo(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(uo=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||Gt(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):p[y]=s[y]);return p})(n,e)}function zc(n){return n&&n.__esModule?n:{default:n}}function Gt(n){"@babel/helpers - typeof";return Gt=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},Gt(n)}function Nc(n){if(!(!n.RTCIceCandidate||n.RTCIceCandidate&&"foundation"in n.RTCIceCandidate.prototype)){var e=n.RTCIceCandidate;n.RTCIceCandidate=function(r){if(Gt(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,Jn.wrapPeerConnectionEvent(n,"icecandidate",function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new n.RTCIceCandidate(t.candidate),writable:"false"}),t})}}function $c(n){!n.RTCIceCandidate||n.RTCIceCandidate&&"relayProtocol"in n.RTCIceCandidate.prototype||Jn.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 qc(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(h){if(!h||!h.sdp)return!1;var p=Ft.default.splitSections(h.sdp);return p.shift(),p.some(function(y){var b=Ft.default.parseMLine(y);return b&&b.kind==="application"&&b.protocol.indexOf("SCTP")!==-1})},r=function(h){var p=h.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(h){var p=65536;return e.browser==="firefox"&&(e.version<57?h===-1?p=16384:p=2147483637:e.version<60?p=e.version===57?65535:65536:p=2147483637),p},s=function(h,p){var y=65536;e.browser==="firefox"&&e.version===57&&(y=65535);var b=Ft.default.matchPrefix(h.sdp,"a=max-message-size:");return b.length>0?y=parseInt(b[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 h=this.getConfiguration(),p=h.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]),b=i(y),E=s(arguments[0],y),K;b===0&&E===0?K=Number.POSITIVE_INFINITY:b===0||E===0?K=Math.max(b,E):K=Math.min(b,E);var re={};Object.defineProperty(re,"maxMessageSize",{get:function(){return K}}),this._sctp=re}return a.apply(this,arguments)}}}function Hc(n){if(!(n.RTCPeerConnection&&"createDataChannel"in n.RTCPeerConnection.prototype))return;function e(r,i){var s=r.send;r.send=function(){var u=arguments[0],h=u.length||u.size||u.byteLength;if(r.readyState==="open"&&i.sctp&&h>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},Jn.wrapPeerConnectionEvent(n,"datachannel",function(r){return e(r.channel,r.target),r})}function Vc(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 Wc(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(`
|
|
34
34
|
a=extmap-allow-mixed`)!==-1){var s=i.sdp.split(`
|
|
35
|
-
`).filter(function(
|
|
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 rc(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 nc(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(Lt(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 c=s.type==="offer"?this.createOffer:this.createAnswer;return c.apply(this).then(function(u){return t.apply(i,[u])})})}}});var Ms=$(zn=>{"use strict";function Fn(n){"@babel/helpers - typeof";return Fn=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},Fn(n)}Object.defineProperty(zn,"__esModule",{value:!0});zn.adapterFactory=sc;var jt=lt(nt()),qe=lt(bs()),Ue=lt(ws()),We=lt(ks()),ge=lt(As()),ic=lt(Ln());function lt(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(lt=function(s,c){if(!c&&s&&s.__esModule)return s;var u,l,p={__proto__:null,default:s};if(s===null||Fn(s)!="object"&&typeof s!="function")return p;if(u=c?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var m in s)m!=="default"&&{}.hasOwnProperty.call(s,m)&&((l=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,m))&&(l.get||l.set)?u(p,m,l):p[m]=s[m]);return p})(n,e)}function sc(){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=jt.log,i=jt.detectBrowser(e),s={browserDetails:i,commonShim:ge,extractVersion:jt.extractVersion,disableLog:jt.disableLog,disableWarnings:jt.disableWarnings,sdp:ic};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,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 r("Firefox shim is not included in this adapter release."),s;r("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(!We||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=We,ge.shimAddIceCandidateNullOrEmpty(e,i),ge.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),ge.shimRTCIceCandidate(e,i),ge.shimRTCIceCandidateRelayProtocol(e,i),ge.shimMaxMessageSize(e,i),ge.shimSendThrowTypeError(e,i),ge.removeExtmapAllowMixed(e,i);break;default:r("Unsupported browser!");break}return s}});var Ds=$(xr=>{"use strict";Object.defineProperty(xr,"__esModule",{value:!0});xr.default=void 0;var oc=Ms(),ac=(0,oc.adapterFactory)({window:typeof window>"u"?void 0:window}),hd=xr.default=ac});var Us=$((pd,Gn)=>{"use strict";var cc=Object.prototype.hasOwnProperty,ke="~";function Ft(){}Object.create&&(Ft.prototype=Object.create(null),new Ft().__proto__||(ke=!1));function fc(n,e,t){this.fn=n,this.context=e,this.once=t||!1}function Os(n,e,t,r,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new fc(t,r||n,i),c=ke?ke+e:e;return n._events[c]?n._events[c].fn?n._events[c]=[n._events[c],s]:n._events[c].push(s):(n._events[c]=s,n._eventsCount++),n}function br(n,e){--n._eventsCount===0?n._events=new Ft:delete n._events[e]}function Te(){this._events=new Ft,this._eventsCount=0}Te.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)cc.call(t,r)&&e.push(ke?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Te.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,c=new Array(s);i<s;i++)c[i]=r[i].fn;return c};Te.prototype.listenerCount=function(e){var t=ke?ke+e:e,r=this._events[t];return r?r.fn?1:r.length:0};Te.prototype.emit=function(e,t,r,i,s,c){var u=ke?ke+e:e;if(!this._events[u])return!1;var l=this._events[u],p=arguments.length,m,b;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,c),!0}for(b=1,m=new Array(p-1);b<p;b++)m[b-1]=arguments[b];l.fn.apply(l.context,m)}else{var I=l.length,z;for(b=0;b<I;b++)switch(l[b].once&&this.removeListener(e,l[b].fn,void 0,!0),p){case 1:l[b].fn.call(l[b].context);break;case 2:l[b].fn.call(l[b].context,t);break;case 3:l[b].fn.call(l[b].context,t,r);break;case 4:l[b].fn.call(l[b].context,t,r,i);break;default:if(!m)for(z=1,m=new Array(p-1);z<p;z++)m[z-1]=arguments[z];l[b].fn.apply(l[b].context,m)}}return!0};Te.prototype.on=function(e,t,r){return Os(this,e,t,r,!1)};Te.prototype.once=function(e,t,r){return Os(this,e,t,r,!0)};Te.prototype.removeListener=function(e,t,r,i){var s=ke?ke+e:e;if(!this._events[s])return this;if(!t)return br(this,s),this;var c=this._events[s];if(c.fn)c.fn===t&&(!i||c.once)&&(!r||c.context===r)&&br(this,s);else{for(var u=0,l=[],p=c.length;u<p;u++)(c[u].fn!==t||i&&!c[u].once||r&&c[u].context!==r)&&l.push(c[u]);l.length?this._events[s]=l.length===1?l[0]:l:br(this,s)}return this};Te.prototype.removeAllListeners=function(e){var t;return e?(t=ke?ke+e:e,this._events[t]&&br(this,t)):(this._events=new Ft,this._eventsCount=0),this};Te.prototype.off=Te.prototype.removeListener;Te.prototype.addListener=Te.prototype.on;Te.prefixed=ke;Te.EventEmitter=Te;typeof Gn<"u"&&(Gn.exports=Te)});var zt=$(Fe=>{"use strict";Object.defineProperty(Fe,"__esModule",{value:!0});Fe.getUint64=Fe.getInt64=Fe.setInt64=Fe.setUint64=Fe.UINT32_MAX=void 0;Fe.UINT32_MAX=4294967295;function dc(n,e,t){let r=t/4294967296,i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Fe.setUint64=dc;function uc(n,e,t){let r=Math.floor(t/4294967296),i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Fe.setInt64=uc;function hc(n,e){let t=n.getInt32(e),r=n.getUint32(e+4);return t*4294967296+r}Fe.getInt64=hc;function lc(n,e){let t=n.getUint32(e),r=n.getUint32(e+4);return t*4294967296+r}Fe.getUint64=lc});var _r=$(Ee=>{"use strict";var $n,Nn,qn;Object.defineProperty(Ee,"__esModule",{value:!0});Ee.utf8DecodeTD=Ee.TEXT_DECODER_THRESHOLD=Ee.utf8DecodeJs=Ee.utf8EncodeTE=Ee.TEXT_ENCODER_THRESHOLD=Ee.utf8EncodeJs=Ee.utf8Count=void 0;var Bs=zt(),vr=(typeof process>"u"||(($n=process==null?void 0:process.env)===null||$n===void 0?void 0:$n.TEXT_ENCODING)!=="never")&&typeof TextEncoder<"u"&&typeof TextDecoder<"u";function pc(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}Ee.utf8Count=pc;function yc(n,e,t){let r=n.length,i=t,s=0;for(;s<r;){let c=n.charCodeAt(s++);if((c&4294967168)===0){e[i++]=c;continue}else if((c&4294965248)===0)e[i++]=c>>6&31|192;else{if(c>=55296&&c<=56319&&s<r){let u=n.charCodeAt(s);(u&64512)===56320&&(++s,c=((c&1023)<<10)+(u&1023)+65536)}(c&4294901760)===0?(e[i++]=c>>12&15|224,e[i++]=c>>6&63|128):(e[i++]=c>>18&7|240,e[i++]=c>>12&63|128,e[i++]=c>>6&63|128)}e[i++]=c&63|128}}Ee.utf8EncodeJs=yc;var Gt=vr?new TextEncoder:void 0;Ee.TEXT_ENCODER_THRESHOLD=vr?typeof process<"u"&&((Nn=process==null?void 0:process.env)===null||Nn===void 0?void 0:Nn.TEXT_ENCODING)!=="force"?200:0:Bs.UINT32_MAX;function mc(n,e,t){e.set(Gt.encode(n),t)}function gc(n,e,t){Gt.encodeInto(n,e.subarray(t))}Ee.utf8EncodeTE=Gt?.encodeInto?gc:mc;var xc=4096;function bc(n,e,t){let r=e,i=r+t,s=[],c="";for(;r<i;){let u=n[r++];if((u&128)===0)s.push(u);else if((u&224)===192){let l=n[r++]&63;s.push((u&31)<<6|l)}else if((u&240)===224){let l=n[r++]&63,p=n[r++]&63;s.push((u&31)<<12|l<<6|p)}else if((u&248)===240){let l=n[r++]&63,p=n[r++]&63,m=n[r++]&63,b=(u&7)<<18|l<<12|p<<6|m;b>65535&&(b-=65536,s.push(b>>>10&1023|55296),b=56320|b&1023),s.push(b)}else s.push(u);s.length>=xc&&(c+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(c+=String.fromCharCode(...s)),c}Ee.utf8DecodeJs=bc;var vc=vr?new TextDecoder:null;Ee.TEXT_DECODER_THRESHOLD=vr?typeof process<"u"&&((qn=process==null?void 0:process.env)===null||qn===void 0?void 0:qn.TEXT_DECODER)!=="force"?200:0:Bs.UINT32_MAX;function _c(n,e,t){let r=n.subarray(e,e+t);return vc.decode(r)}Ee.utf8DecodeTD=_c});var Hn=$(Sr=>{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});Sr.ExtData=void 0;var Kn=class{constructor(e,t){this.type=e,this.data=t}};Sr.ExtData=Kn});var Pr=$(Cr=>{"use strict";Object.defineProperty(Cr,"__esModule",{value:!0});Cr.DecodeError=void 0;var Vn=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})}};Cr.DecodeError=Vn});var Wn=$(Se=>{"use strict";Object.defineProperty(Se,"__esModule",{value:!0});Se.timestampExtension=Se.decodeTimestampExtension=Se.decodeTimestampToTimeSpec=Se.encodeTimestampExtension=Se.encodeDateToTimeSpec=Se.encodeTimeSpecToTimestamp=Se.EXT_TIMESTAMP=void 0;var Sc=Pr(),Ls=zt();Se.EXT_TIMESTAMP=-1;var Cc=4294967296-1,Pc=17179869184-1;function js({sec:n,nsec:e}){if(n>=0&&e>=0&&n<=Pc)if(e===0&&n<=Cc){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,Ls.setInt64)(r,4,n),t}}Se.encodeTimeSpecToTimestamp=js;function Fs(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}}Se.encodeDateToTimeSpec=Fs;function zs(n){if(n instanceof Date){let e=Fs(n);return js(e)}else return null}Se.encodeTimestampExtension=zs;function Gs(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,Ls.getInt64)(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new Sc.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${n.length}`)}}Se.decodeTimestampToTimeSpec=Gs;function $s(n){let e=Gs(n);return new Date(e.sec*1e3+e.nsec/1e6)}Se.decodeTimestampExtension=$s;Se.timestampExtension={type:Se.EXT_TIMESTAMP,encode:zs,decode:$s}});var Er=$(Tr=>{"use strict";Object.defineProperty(Tr,"__esModule",{value:!0});Tr.ExtensionCodec=void 0;var wr=Hn(),wc=Wn(),$t=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(wc.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 c=-1-r;return new wr.ExtData(c,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 c=r;return new wr.ExtData(c,s)}}}return e instanceof wr.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 wr.ExtData(t,e)}};Tr.ExtensionCodec=$t;$t.defaultCodec=new $t});var Yn=$(Ct=>{"use strict";Object.defineProperty(Ct,"__esModule",{value:!0});Ct.createDataView=Ct.ensureUint8Array=void 0;function Ns(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)}Ct.ensureUint8Array=Ns;function Tc(n){if(n instanceof ArrayBuffer)return new DataView(n);let e=Ns(n);return new DataView(e.buffer,e.byteOffset,e.byteLength)}Ct.createDataView=Tc});var Xn=$(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.Encoder=Ye.DEFAULT_INITIAL_BUFFER_SIZE=Ye.DEFAULT_MAX_DEPTH=void 0;var Nt=_r(),Ec=Er(),qs=zt(),Ic=Yn();Ye.DEFAULT_MAX_DEPTH=100;Ye.DEFAULT_INITIAL_BUFFER_SIZE=2048;var Jn=class{constructor(e=Ec.ExtensionCodec.defaultCodec,t=void 0,r=Ye.DEFAULT_MAX_DEPTH,i=Ye.DEFAULT_INITIAL_BUFFER_SIZE,s=!1,c=!1,u=!1,l=!1){this.extensionCodec=e,this.context=t,this.maxDepth=r,this.initialBufferSize=i,this.sortKeys=s,this.forceFloat32=c,this.ignoreUndefined=u,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>Nt.TEXT_ENCODER_THRESHOLD){let i=(0,Nt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Nt.utf8EncodeTE)(e,this.bytes,this.pos),this.pos+=i}else{let i=(0,Nt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Nt.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,Ic.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 c=e[s];this.ignoreUndefined&&c===void 0||(this.encodeString(s),this.doEncode(c,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,qs.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,qs.setInt64)(this.view,this.pos,e),this.pos+=8}};Ye.Encoder=Jn});var Ks=$(Ir=>{"use strict";Object.defineProperty(Ir,"__esModule",{value:!0});Ir.encode=void 0;var kc=Xn(),Rc={};function Ac(n,e=Rc){return new kc.Encoder(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat).encodeSharedRef(n)}Ir.encode=Ac});var Hs=$(kr=>{"use strict";Object.defineProperty(kr,"__esModule",{value:!0});kr.prettyByte=void 0;function Mc(n){return`${n<0?"-":""}0x${Math.abs(n).toString(16).padStart(2,"0")}`}kr.prettyByte=Mc});var Vs=$(Rr=>{"use strict";Object.defineProperty(Rr,"__esModule",{value:!0});Rr.CachedKeyDecoder=void 0;var Dc=_r(),Oc=16,Uc=16,Zn=class{constructor(e=Oc,t=Uc){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 c=s.bytes;for(let u=0;u<r;u++)if(c[u]!==e[t+u])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,Dc.utf8DecodeJs)(e,t,r),c=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(c,s),s}};Rr.CachedKeyDecoder=Zn});var Ar=$(tt=>{"use strict";Object.defineProperty(tt,"__esModule",{value:!0});tt.Decoder=tt.DataViewIndexOutOfBoundsError=void 0;var Qn=Hs(),Bc=Er(),pt=zt(),ei=_r(),ti=Yn(),Lc=Vs(),et=Pr(),jc=n=>{let e=typeof n;return e==="string"||e==="number"},qt=-1,ni=new DataView(new ArrayBuffer(0)),Fc=new Uint8Array(ni.buffer);tt.DataViewIndexOutOfBoundsError=(()=>{try{ni.getInt8(0)}catch(n){return n.constructor}throw new Error("never reached")})();var Ws=new tt.DataViewIndexOutOfBoundsError("Insufficient data"),zc=new Lc.CachedKeyDecoder,ri=class{constructor(e=Bc.ExtensionCodec.defaultCodec,t=void 0,r=pt.UINT32_MAX,i=pt.UINT32_MAX,s=pt.UINT32_MAX,c=pt.UINT32_MAX,u=pt.UINT32_MAX,l=zc){this.extensionCodec=e,this.context=t,this.maxStrLength=r,this.maxBinLength=i,this.maxArrayLength=s,this.maxMapLength=c,this.maxExtLength=u,this.keyDecoder=l,this.totalPos=0,this.pos=0,this.view=ni,this.bytes=Fc,this.headByte=qt,this.stack=[]}reinitializeState(){this.totalPos=0,this.headByte=qt,this.stack.length=0}setBuffer(e){this.bytes=(0,ti.ensureUint8Array)(e),this.view=(0,ti.createDataView)(this.bytes),this.pos=0}appendBuffer(e){if(this.headByte===qt&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=(0,ti.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 u of e){if(t)throw this.createExtraByteError(this.totalPos);this.appendBuffer(u);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:c}=this;throw new RangeError(`Insufficient data in parsing ${(0,Qn.prettyByte)(i)} at ${c} (${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(c){if(!(c instanceof tt.DataViewIndexOutOfBoundsError))throw c}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,Qn.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(!jc(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===qt&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=qt}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,Qn.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 Ws;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>ei.TEXT_DECODER_THRESHOLD?s=(0,ei.utf8DecodeTD)(this.bytes,i,e):s=(0,ei.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 Ws;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,pt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,pt.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=ri});var ii=$(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.decodeMulti=Je.decode=Je.defaultDecodeOptions=void 0;var Ys=Ar();Je.defaultDecodeOptions={};function Gc(n,e=Je.defaultDecodeOptions){return new Ys.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decode(n)}Je.decode=Gc;function $c(n,e=Je.defaultDecodeOptions){return new Ys.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeMulti(n)}Je.decodeMulti=$c});var Zs=$(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.ensureAsyncIterable=ot.asyncIterableFromStream=ot.isAsyncIterable=void 0;function Js(n){return n[Symbol.asyncIterator]!=null}ot.isAsyncIterable=Js;function Nc(n){if(n==null)throw new Error("Assertion Failure: value must not be null nor undefined")}async function*Xs(n){let e=n.getReader();try{for(;;){let{done:t,value:r}=await e.read();if(t)return;Nc(r),yield r}}finally{e.releaseLock()}}ot.asyncIterableFromStream=Xs;function qc(n){return Js(n)?n:Xs(n)}ot.ensureAsyncIterable=qc});var eo=$(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.decodeStream=Xe.decodeMultiStream=Xe.decodeArrayStream=Xe.decodeAsync=void 0;var si=Ar(),oi=Zs(),Mr=ii();async function Kc(n,e=Mr.defaultDecodeOptions){let t=(0,oi.ensureAsyncIterable)(n);return new si.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeAsync(t)}Xe.decodeAsync=Kc;function Hc(n,e=Mr.defaultDecodeOptions){let t=(0,oi.ensureAsyncIterable)(n);return new si.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeArrayStream(t)}Xe.decodeArrayStream=Hc;function Qs(n,e=Mr.defaultDecodeOptions){let t=(0,oi.ensureAsyncIterable)(n);return new si.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeStream(t)}Xe.decodeMultiStream=Qs;function Vc(n,e=Mr.defaultDecodeOptions){return Qs(n,e)}Xe.decodeStream=Vc});var no=$(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.decodeTimestampExtension=ee.encodeTimestampExtension=ee.decodeTimestampToTimeSpec=ee.encodeTimeSpecToTimestamp=ee.encodeDateToTimeSpec=ee.EXT_TIMESTAMP=ee.ExtData=ee.ExtensionCodec=ee.Encoder=ee.DataViewIndexOutOfBoundsError=ee.DecodeError=ee.Decoder=ee.decodeStream=ee.decodeMultiStream=ee.decodeArrayStream=ee.decodeAsync=ee.decodeMulti=ee.decode=ee.encode=void 0;var Wc=Ks();Object.defineProperty(ee,"encode",{enumerable:!0,get:function(){return Wc.encode}});var to=ii();Object.defineProperty(ee,"decode",{enumerable:!0,get:function(){return to.decode}});Object.defineProperty(ee,"decodeMulti",{enumerable:!0,get:function(){return to.decodeMulti}});var Dr=eo();Object.defineProperty(ee,"decodeAsync",{enumerable:!0,get:function(){return Dr.decodeAsync}});Object.defineProperty(ee,"decodeArrayStream",{enumerable:!0,get:function(){return Dr.decodeArrayStream}});Object.defineProperty(ee,"decodeMultiStream",{enumerable:!0,get:function(){return Dr.decodeMultiStream}});Object.defineProperty(ee,"decodeStream",{enumerable:!0,get:function(){return Dr.decodeStream}});var ro=Ar();Object.defineProperty(ee,"Decoder",{enumerable:!0,get:function(){return ro.Decoder}});Object.defineProperty(ee,"DataViewIndexOutOfBoundsError",{enumerable:!0,get:function(){return ro.DataViewIndexOutOfBoundsError}});var Yc=Pr();Object.defineProperty(ee,"DecodeError",{enumerable:!0,get:function(){return Yc.DecodeError}});var Jc=Xn();Object.defineProperty(ee,"Encoder",{enumerable:!0,get:function(){return Jc.Encoder}});var Xc=Er();Object.defineProperty(ee,"ExtensionCodec",{enumerable:!0,get:function(){return Xc.ExtensionCodec}});var Zc=Hn();Object.defineProperty(ee,"ExtData",{enumerable:!0,get:function(){return Zc.ExtData}});var Pt=Wn();Object.defineProperty(ee,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return Pt.EXT_TIMESTAMP}});Object.defineProperty(ee,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return Pt.encodeDateToTimeSpec}});Object.defineProperty(ee,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return Pt.encodeTimeSpecToTimestamp}});Object.defineProperty(ee,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return Pt.decodeTimestampToTimeSpec}});Object.defineProperty(ee,"encodeTimestampExtension",{enumerable:!0,get:function(){return Pt.encodeTimestampExtension}});Object.defineProperty(ee,"decodeTimestampExtension",{enumerable:!0,get:function(){return Pt.decodeTimestampExtension}})});var _i=$((Ad,Ke)=>{var Or=cs(),io=Ds(),co=Us(),so=no();function Qc(n){Object.defineProperty(n,"__esModule",{value:!0,configurable:!0})}function ef(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 oo(n){return n&&n.__esModule?n.default:n}Qc(Ke.exports);Ae(Ke.exports,"default",()=>sf);Ae(Ke.exports,"util",()=>Re);Ae(Ke.exports,"BufferedConnection",()=>wt);Ae(Ke.exports,"StreamConnection",()=>Gr);Ae(Ke.exports,"MsgPack",()=>Jt);Ae(Ke.exports,"Peer",()=>Yt);Ae(Ke.exports,"MsgPackPeer",()=>yi);Ae(Ke.exports,"PeerError",()=>jr);var Ur=class{constructor(){this.chunkedMTU=16300,this._dataCount=1,this.chunk=e=>{let t=[],r=e.byteLength,i=Math.ceil(r/this.chunkedMTU),s=0,c=0;for(;c<r;){let u=Math.min(r,c+this.chunkedMTU),l=e.slice(c,u),p={__peerData:this._dataCount,n:s,data:l,total:i};t.push(p),c=u,s++}return this._dataCount++,t}}};function tf(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 ai=oo(io).default||oo(io),Kt=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 ai.browserDetails.browser}getVersion(){return ai.browserDetails.version||0}isUnifiedPlanSupported(){let n=this.getBrowser(),e=ai.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:
|
|
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 Yc(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 Jc(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(Gt(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(u){return t.apply(i,[u])})})}}});var ho=z(Zn=>{"use strict";function Xn(n){"@babel/helpers - typeof";return Xn=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},Xn(n)}Object.defineProperty(Zn,"__esModule",{value:!0});Zn.adapterFactory=Zc;var zt=ht(nt()),$e=ht(Qs()),Ue=ht(so()),We=ht(fo()),me=ht(lo()),Xc=ht(Yn());function ht(n,e){if(typeof WeakMap=="function")var t=new WeakMap,r=new WeakMap;return(ht=function(s,a){if(!a&&s&&s.__esModule)return s;var u,h,p={__proto__:null,default:s};if(s===null||Xn(s)!="object"&&typeof s!="function")return p;if(u=a?r:t){if(u.has(s))return u.get(s);u.set(s,p)}for(var y in s)y!=="default"&&{}.hasOwnProperty.call(s,y)&&((h=(u=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,y))&&(h.get||h.set)?u(p,y,h):p[y]=s[y]);return p})(n,e)}function Zc(){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:Xc};switch(i.browser){case"chrome":if(!$e||!$e.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=$e,me.shimAddIceCandidateNullOrEmpty(e,i),me.shimParameterlessSetLocalDescription(e,i),$e.shimGetUserMedia(e,i),$e.shimMediaStream(e,i),$e.shimPeerConnection(e,i),$e.shimOnTrack(e,i),$e.shimAddTrackRemoveTrack(e,i),$e.shimGetSendersWithDtmf(e,i),$e.shimSenderReceiverGetStats(e,i),$e.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 po=z(Rr=>{"use strict";Object.defineProperty(Rr,"__esModule",{value:!0});Rr.default=void 0;var Qc=ho(),ef=(0,Qc.adapterFactory)({window:typeof window>"u"?void 0:window}),bu=Rr.default=ef});var go=z((_u,Qn)=>{"use strict";var tf=Object.prototype.hasOwnProperty,Re="~";function Nt(){}Object.create&&(Nt.prototype=Object.create(null),new Nt().__proto__||(Re=!1));function rf(n,e,t){this.fn=n,this.context=e,this.once=t||!1}function yo(n,e,t,r,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new rf(t,r||n,i),a=Re?Re+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 kr(n,e){--n._eventsCount===0?n._events=new Nt:delete n._events[e]}function Te(){this._events=new Nt,this._eventsCount=0}Te.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)tf.call(t,r)&&e.push(Re?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Te.prototype.listeners=function(e){var t=Re?Re+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};Te.prototype.listenerCount=function(e){var t=Re?Re+e:e,r=this._events[t];return r?r.fn?1:r.length:0};Te.prototype.emit=function(e,t,r,i,s,a){var u=Re?Re+e:e;if(!this._events[u])return!1;var h=this._events[u],p=arguments.length,y,b;if(h.fn){switch(h.once&&this.removeListener(e,h.fn,void 0,!0),p){case 1:return h.fn.call(h.context),!0;case 2:return h.fn.call(h.context,t),!0;case 3:return h.fn.call(h.context,t,r),!0;case 4:return h.fn.call(h.context,t,r,i),!0;case 5:return h.fn.call(h.context,t,r,i,s),!0;case 6:return h.fn.call(h.context,t,r,i,s,a),!0}for(b=1,y=new Array(p-1);b<p;b++)y[b-1]=arguments[b];h.fn.apply(h.context,y)}else{var E=h.length,K;for(b=0;b<E;b++)switch(h[b].once&&this.removeListener(e,h[b].fn,void 0,!0),p){case 1:h[b].fn.call(h[b].context);break;case 2:h[b].fn.call(h[b].context,t);break;case 3:h[b].fn.call(h[b].context,t,r);break;case 4:h[b].fn.call(h[b].context,t,r,i);break;default:if(!y)for(K=1,y=new Array(p-1);K<p;K++)y[K-1]=arguments[K];h[b].fn.apply(h[b].context,y)}}return!0};Te.prototype.on=function(e,t,r){return yo(this,e,t,r,!1)};Te.prototype.once=function(e,t,r){return yo(this,e,t,r,!0)};Te.prototype.removeListener=function(e,t,r,i){var s=Re?Re+e:e;if(!this._events[s])return this;if(!t)return kr(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!r||a.context===r)&&kr(this,s);else{for(var u=0,h=[],p=a.length;u<p;u++)(a[u].fn!==t||i&&!a[u].once||r&&a[u].context!==r)&&h.push(a[u]);h.length?this._events[s]=h.length===1?h[0]:h:kr(this,s)}return this};Te.prototype.removeAllListeners=function(e){var t;return e?(t=Re?Re+e:e,this._events[t]&&kr(this,t)):(this._events=new Nt,this._eventsCount=0),this};Te.prototype.off=Te.prototype.removeListener;Te.prototype.addListener=Te.prototype.on;Te.prefixed=Re;Te.EventEmitter=Te;typeof Qn<"u"&&(Qn.exports=Te)});var $t=z(Ke=>{"use strict";Object.defineProperty(Ke,"__esModule",{value:!0});Ke.getUint64=Ke.getInt64=Ke.setInt64=Ke.setUint64=Ke.UINT32_MAX=void 0;Ke.UINT32_MAX=4294967295;function nf(n,e,t){let r=t/4294967296,i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Ke.setUint64=nf;function sf(n,e,t){let r=Math.floor(t/4294967296),i=t;n.setUint32(e,r),n.setUint32(e+4,i)}Ke.setInt64=sf;function of(n,e){let t=n.getInt32(e),r=n.getUint32(e+4);return t*4294967296+r}Ke.getInt64=of;function af(n,e){let t=n.getUint32(e),r=n.getUint32(e+4);return t*4294967296+r}Ke.getUint64=af});var Mr=z(Ee=>{"use strict";var ei,ti,ri;Object.defineProperty(Ee,"__esModule",{value:!0});Ee.utf8DecodeTD=Ee.TEXT_DECODER_THRESHOLD=Ee.utf8DecodeJs=Ee.utf8EncodeTE=Ee.TEXT_ENCODER_THRESHOLD=Ee.utf8EncodeJs=Ee.utf8Count=void 0;var mo=$t(),Ar=(typeof process>"u"||((ei=process==null?void 0:process.env)===null||ei===void 0?void 0:ei.TEXT_ENCODING)!=="never")&&typeof TextEncoder<"u"&&typeof TextDecoder<"u";function cf(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}Ee.utf8Count=cf;function ff(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 u=n.charCodeAt(s);(u&64512)===56320&&(++s,a=((a&1023)<<10)+(u&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}}Ee.utf8EncodeJs=ff;var qt=Ar?new TextEncoder:void 0;Ee.TEXT_ENCODER_THRESHOLD=Ar?typeof process<"u"&&((ti=process==null?void 0:process.env)===null||ti===void 0?void 0:ti.TEXT_ENCODING)!=="force"?200:0:mo.UINT32_MAX;function df(n,e,t){e.set(qt.encode(n),t)}function uf(n,e,t){qt.encodeInto(n,e.subarray(t))}Ee.utf8EncodeTE=qt?.encodeInto?uf:df;var lf=4096;function hf(n,e,t){let r=e,i=r+t,s=[],a="";for(;r<i;){let u=n[r++];if((u&128)===0)s.push(u);else if((u&224)===192){let h=n[r++]&63;s.push((u&31)<<6|h)}else if((u&240)===224){let h=n[r++]&63,p=n[r++]&63;s.push((u&31)<<12|h<<6|p)}else if((u&248)===240){let h=n[r++]&63,p=n[r++]&63,y=n[r++]&63,b=(u&7)<<18|h<<12|p<<6|y;b>65535&&(b-=65536,s.push(b>>>10&1023|55296),b=56320|b&1023),s.push(b)}else s.push(u);s.length>=lf&&(a+=String.fromCharCode(...s),s.length=0)}return s.length>0&&(a+=String.fromCharCode(...s)),a}Ee.utf8DecodeJs=hf;var pf=Ar?new TextDecoder:null;Ee.TEXT_DECODER_THRESHOLD=Ar?typeof process<"u"&&((ri=process==null?void 0:process.env)===null||ri===void 0?void 0:ri.TEXT_DECODER)!=="force"?200:0:mo.UINT32_MAX;function yf(n,e,t){let r=n.subarray(e,e+t);return pf.decode(r)}Ee.utf8DecodeTD=yf});var ii=z(Dr=>{"use strict";Object.defineProperty(Dr,"__esModule",{value:!0});Dr.ExtData=void 0;var ni=class{constructor(e,t){this.type=e,this.data=t}};Dr.ExtData=ni});var Ur=z(Or=>{"use strict";Object.defineProperty(Or,"__esModule",{value:!0});Or.DecodeError=void 0;var si=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})}};Or.DecodeError=si});var oi=z(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 gf=Ur(),xo=$t();Pe.EXT_TIMESTAMP=-1;var mf=4294967296-1,xf=17179869184-1;function bo({sec:n,nsec:e}){if(n>=0&&e>=0&&n<=xf)if(e===0&&n<=mf){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,xo.setInt64)(r,4,n),t}}Pe.encodeTimeSpecToTimestamp=bo;function vo(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=vo;function _o(n){if(n instanceof Date){let e=vo(n);return bo(e)}else return null}Pe.encodeTimestampExtension=_o;function Po(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,xo.getInt64)(e,4),r=e.getUint32(0);return{sec:t,nsec:r}}default:throw new gf.DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${n.length}`)}}Pe.decodeTimestampToTimeSpec=Po;function So(n){let e=Po(n);return new Date(e.sec*1e3+e.nsec/1e6)}Pe.decodeTimestampExtension=So;Pe.timestampExtension={type:Pe.EXT_TIMESTAMP,encode:_o,decode:So}});var jr=z(Lr=>{"use strict";Object.defineProperty(Lr,"__esModule",{value:!0});Lr.ExtensionCodec=void 0;var Br=ii(),bf=oi(),Ht=class{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(bf.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 Br.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 Br.ExtData(a,s)}}}return e instanceof Br.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 Br.ExtData(t,e)}};Lr.ExtensionCodec=Ht;Ht.defaultCodec=new Ht});var ai=z(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.createDataView=St.ensureUint8Array=void 0;function wo(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)}St.ensureUint8Array=wo;function vf(n){if(n instanceof ArrayBuffer)return new DataView(n);let e=wo(n);return new DataView(e.buffer,e.byteOffset,e.byteLength)}St.createDataView=vf});var fi=z(Ye=>{"use strict";Object.defineProperty(Ye,"__esModule",{value:!0});Ye.Encoder=Ye.DEFAULT_INITIAL_BUFFER_SIZE=Ye.DEFAULT_MAX_DEPTH=void 0;var Vt=Mr(),_f=jr(),Co=$t(),Pf=ai();Ye.DEFAULT_MAX_DEPTH=100;Ye.DEFAULT_INITIAL_BUFFER_SIZE=2048;var ci=class{constructor(e=_f.ExtensionCodec.defaultCodec,t=void 0,r=Ye.DEFAULT_MAX_DEPTH,i=Ye.DEFAULT_INITIAL_BUFFER_SIZE,s=!1,a=!1,u=!1,h=!1){this.extensionCodec=e,this.context=t,this.maxDepth=r,this.initialBufferSize=i,this.sortKeys=s,this.forceFloat32=a,this.ignoreUndefined=u,this.forceIntegerToFloat=h,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>Vt.TEXT_ENCODER_THRESHOLD){let i=(0,Vt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Vt.utf8EncodeTE)(e,this.bytes,this.pos),this.pos+=i}else{let i=(0,Vt.utf8Count)(e);this.ensureBufferSizeToWrite(5+i),this.writeStringHeader(i),(0,Vt.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,Pf.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,Co.setUint64)(this.view,this.pos,e),this.pos+=8}writeI64(e){this.ensureBufferSizeToWrite(8),(0,Co.setInt64)(this.view,this.pos,e),this.pos+=8}};Ye.Encoder=ci});var To=z(Kr=>{"use strict";Object.defineProperty(Kr,"__esModule",{value:!0});Kr.encode=void 0;var Sf=fi(),wf={};function Cf(n,e=wf){return new Sf.Encoder(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat).encodeSharedRef(n)}Kr.encode=Cf});var Eo=z(Fr=>{"use strict";Object.defineProperty(Fr,"__esModule",{value:!0});Fr.prettyByte=void 0;function Tf(n){return`${n<0?"-":""}0x${Math.abs(n).toString(16).padStart(2,"0")}`}Fr.prettyByte=Tf});var Io=z(Gr=>{"use strict";Object.defineProperty(Gr,"__esModule",{value:!0});Gr.CachedKeyDecoder=void 0;var Ef=Mr(),If=16,Rf=16,di=class{constructor(e=If,t=Rf){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 u=0;u<r;u++)if(a[u]!==e[t+u])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,Ef.utf8DecodeJs)(e,t,r),a=Uint8Array.prototype.slice.call(e,t,t+r);return this.store(a,s),s}};Gr.CachedKeyDecoder=di});var zr=z(tt=>{"use strict";Object.defineProperty(tt,"__esModule",{value:!0});tt.Decoder=tt.DataViewIndexOutOfBoundsError=void 0;var ui=Eo(),kf=jr(),pt=$t(),li=Mr(),hi=ai(),Af=Io(),et=Ur(),Mf=n=>{let e=typeof n;return e==="string"||e==="number"},Wt=-1,yi=new DataView(new ArrayBuffer(0)),Df=new Uint8Array(yi.buffer);tt.DataViewIndexOutOfBoundsError=(()=>{try{yi.getInt8(0)}catch(n){return n.constructor}throw new Error("never reached")})();var Ro=new tt.DataViewIndexOutOfBoundsError("Insufficient data"),Of=new Af.CachedKeyDecoder,pi=class{constructor(e=kf.ExtensionCodec.defaultCodec,t=void 0,r=pt.UINT32_MAX,i=pt.UINT32_MAX,s=pt.UINT32_MAX,a=pt.UINT32_MAX,u=pt.UINT32_MAX,h=Of){this.extensionCodec=e,this.context=t,this.maxStrLength=r,this.maxBinLength=i,this.maxArrayLength=s,this.maxMapLength=a,this.maxExtLength=u,this.keyDecoder=h,this.totalPos=0,this.pos=0,this.view=yi,this.bytes=Df,this.headByte=Wt,this.stack=[]}reinitializeState(){this.totalPos=0,this.headByte=Wt,this.stack.length=0}setBuffer(e){this.bytes=(0,hi.ensureUint8Array)(e),this.view=(0,hi.createDataView)(this.bytes),this.pos=0}appendBuffer(e){if(this.headByte===Wt&&!this.hasRemaining(1))this.setBuffer(e);else{let t=this.bytes.subarray(this.pos),r=(0,hi.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 u of e){if(t)throw this.createExtraByteError(this.totalPos);this.appendBuffer(u);try{r=this.doDecodeSync(),t=!0}catch(h){if(!(h instanceof tt.DataViewIndexOutOfBoundsError))throw h}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,ui.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,ui.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(!Mf(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===Wt&&(this.headByte=this.readU8()),this.headByte}complete(){this.headByte=Wt}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,ui.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 Ro;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>li.TEXT_DECODER_THRESHOLD?s=(0,li.utf8DecodeTD)(this.bytes,i,e):s=(0,li.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 Ro;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,pt.getUint64)(this.view,this.pos);return this.pos+=8,e}readI64(){let e=(0,pt.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=pi});var gi=z(Je=>{"use strict";Object.defineProperty(Je,"__esModule",{value:!0});Je.decodeMulti=Je.decode=Je.defaultDecodeOptions=void 0;var ko=zr();Je.defaultDecodeOptions={};function Uf(n,e=Je.defaultDecodeOptions){return new ko.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decode(n)}Je.decode=Uf;function Bf(n,e=Je.defaultDecodeOptions){return new ko.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeMulti(n)}Je.decodeMulti=Bf});var Do=z(ot=>{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});ot.ensureAsyncIterable=ot.asyncIterableFromStream=ot.isAsyncIterable=void 0;function Ao(n){return n[Symbol.asyncIterator]!=null}ot.isAsyncIterable=Ao;function Lf(n){if(n==null)throw new Error("Assertion Failure: value must not be null nor undefined")}async function*Mo(n){let e=n.getReader();try{for(;;){let{done:t,value:r}=await e.read();if(t)return;Lf(r),yield r}}finally{e.releaseLock()}}ot.asyncIterableFromStream=Mo;function jf(n){return Ao(n)?n:Mo(n)}ot.ensureAsyncIterable=jf});var Uo=z(Xe=>{"use strict";Object.defineProperty(Xe,"__esModule",{value:!0});Xe.decodeStream=Xe.decodeMultiStream=Xe.decodeArrayStream=Xe.decodeAsync=void 0;var mi=zr(),xi=Do(),Nr=gi();async function Kf(n,e=Nr.defaultDecodeOptions){let t=(0,xi.ensureAsyncIterable)(n);return new mi.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeAsync(t)}Xe.decodeAsync=Kf;function Ff(n,e=Nr.defaultDecodeOptions){let t=(0,xi.ensureAsyncIterable)(n);return new mi.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeArrayStream(t)}Xe.decodeArrayStream=Ff;function Oo(n,e=Nr.defaultDecodeOptions){let t=(0,xi.ensureAsyncIterable)(n);return new mi.Decoder(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength).decodeStream(t)}Xe.decodeMultiStream=Oo;function Gf(n,e=Nr.defaultDecodeOptions){return Oo(n,e)}Xe.decodeStream=Gf});var jo=z(ee=>{"use strict";Object.defineProperty(ee,"__esModule",{value:!0});ee.decodeTimestampExtension=ee.encodeTimestampExtension=ee.decodeTimestampToTimeSpec=ee.encodeTimeSpecToTimestamp=ee.encodeDateToTimeSpec=ee.EXT_TIMESTAMP=ee.ExtData=ee.ExtensionCodec=ee.Encoder=ee.DataViewIndexOutOfBoundsError=ee.DecodeError=ee.Decoder=ee.decodeStream=ee.decodeMultiStream=ee.decodeArrayStream=ee.decodeAsync=ee.decodeMulti=ee.decode=ee.encode=void 0;var zf=To();Object.defineProperty(ee,"encode",{enumerable:!0,get:function(){return zf.encode}});var Bo=gi();Object.defineProperty(ee,"decode",{enumerable:!0,get:function(){return Bo.decode}});Object.defineProperty(ee,"decodeMulti",{enumerable:!0,get:function(){return Bo.decodeMulti}});var $r=Uo();Object.defineProperty(ee,"decodeAsync",{enumerable:!0,get:function(){return $r.decodeAsync}});Object.defineProperty(ee,"decodeArrayStream",{enumerable:!0,get:function(){return $r.decodeArrayStream}});Object.defineProperty(ee,"decodeMultiStream",{enumerable:!0,get:function(){return $r.decodeMultiStream}});Object.defineProperty(ee,"decodeStream",{enumerable:!0,get:function(){return $r.decodeStream}});var Lo=zr();Object.defineProperty(ee,"Decoder",{enumerable:!0,get:function(){return Lo.Decoder}});Object.defineProperty(ee,"DataViewIndexOutOfBoundsError",{enumerable:!0,get:function(){return Lo.DataViewIndexOutOfBoundsError}});var Nf=Ur();Object.defineProperty(ee,"DecodeError",{enumerable:!0,get:function(){return Nf.DecodeError}});var $f=fi();Object.defineProperty(ee,"Encoder",{enumerable:!0,get:function(){return $f.Encoder}});var qf=jr();Object.defineProperty(ee,"ExtensionCodec",{enumerable:!0,get:function(){return qf.ExtensionCodec}});var Hf=ii();Object.defineProperty(ee,"ExtData",{enumerable:!0,get:function(){return Hf.ExtData}});var wt=oi();Object.defineProperty(ee,"EXT_TIMESTAMP",{enumerable:!0,get:function(){return wt.EXT_TIMESTAMP}});Object.defineProperty(ee,"encodeDateToTimeSpec",{enumerable:!0,get:function(){return wt.encodeDateToTimeSpec}});Object.defineProperty(ee,"encodeTimeSpecToTimestamp",{enumerable:!0,get:function(){return wt.encodeTimeSpecToTimestamp}});Object.defineProperty(ee,"decodeTimestampToTimeSpec",{enumerable:!0,get:function(){return wt.decodeTimestampToTimeSpec}});Object.defineProperty(ee,"encodeTimestampExtension",{enumerable:!0,get:function(){return wt.encodeTimestampExtension}});Object.defineProperty(ee,"decodeTimestampExtension",{enumerable:!0,get:function(){return wt.decodeTimestampExtension}})});var Di=z((ju,qe)=>{var qr=zs(),Ko=po(),No=go(),Fo=jo();function Vf(n){Object.defineProperty(n,"__esModule",{value:!0,configurable:!0})}function Wf(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 Go(n){return n&&n.__esModule?n.default:n}Vf(qe.exports);Ae(qe.exports,"default",()=>Zf);Ae(qe.exports,"util",()=>ke);Ae(qe.exports,"BufferedConnection",()=>Ct);Ae(qe.exports,"StreamConnection",()=>Zr);Ae(qe.exports,"MsgPack",()=>er);Ae(qe.exports,"Peer",()=>Qt);Ae(qe.exports,"MsgPackPeer",()=>Ei);Ae(qe.exports,"PeerError",()=>Yr);var Hr=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 u=Math.min(r,a+this.chunkedMTU),h=e.slice(a,u),p={__peerData:this._dataCount,n:s,data:h,total:i};t.push(p),a=u,s++}return this._dataCount++,t}}};function Yf(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 bi=Go(Ko).default||Go(Ko),Yt=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 bi.browserDetails.browser}getVersion(){return bi.browserDetails.version||0}isUnifiedPlanSupported(){let n=this.getBrowser(),e=bi.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:
|
|
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}},rf=n=>!n||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(n),fo=()=>Math.random().toString(36).slice(2),ao={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"},ci=class extends Ur{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=ao,this.browser=Kt.getBrowser(),this.browserVersion=Kt.getVersion(),this.pack=Or.pack,this.unpack=Or.unpack,this.supports=(function(){let t={browser:Kt.isBrowserSupported(),webRTC:Kt.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!t.webRTC)return t;let r;try{r=new RTCPeerConnection(ao),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=!Kt.isIOS}catch{}}catch{}finally{i&&i.close()}}catch{}finally{r&&r.close()}return t})(),this.validateId=rf,this.randomToken=fo}},Re=new ci,nf="PeerJS: ",fi=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=[nf,...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 fi,ft={};Ae(ft,"ConnectionType",()=>ct);Ae(ft,"PeerErrorType",()=>ve);Ae(ft,"BaseConnectionErrorType",()=>di);Ae(ft,"DataConnectionErrorType",()=>vi);Ae(ft,"SerializationType",()=>$r);Ae(ft,"SocketEventType",()=>at);Ae(ft,"ServerMessageType",()=>Ie);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})({}),di=(function(n){return n.NegotiationFailed="negotiation-failed",n.ConnectionClosed="connection-closed",n})({}),vi=(function(n){return n.NotOpenYet="not-open-yet",n.MessageToBig="message-too-big",n})({}),$r=(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})({}),Ie=(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})({}),uo="1.5.5",ui=class extends co.EventEmitter{constructor(e,t,r,i,s,c=5e3){super(),this.pingInterval=c,this._disconnected=!0,this._messagesQueue=[];let u=e?"wss://":"ws://";this._baseUrl=u+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="+uo),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:Ie.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)}},Br=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=c=>{!c.candidate||!c.candidate.candidate||(B.log(`Received ICE candidates for ${t}:`,c.candidate),s.socket.send({type:Ie.Candidate,payload:{candidate:c.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(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=c=>{B.log("Received data channel");let u=c.channel;s.getConnection(t,r)._initializeDataChannel(u)},B.log("Listening for remote stream"),e.ontrack=c=>{B.log("Received remote stream");let u=c.streams[0],l=s.getConnection(t,r);if(l.type===ct.Media){let p=l;this._addStreamToMediaConnection(u,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:Ie.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:Ie.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(c){i.emitError(ve.WebRTC,c),B.log("Failed to setRemoteDescription, ",c)}}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)}},Lr=class extends co.EventEmitter{emitError(e,t){B.error("Error:",t),this.emit("error",new jr(`${e}`,t))}},jr=class extends Error{constructor(e,t){typeof t=="string"?super(t):(super(),Object.assign(this,t)),this.type=e}},Fr=class extends Lr{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}},mi,Vt=class Vt extends Fr{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||Vt.ID_PREFIX+Re.randomToken(),this._negotiator=new Br(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 Ie.Answer:this._negotiator.handleSDP(t,r.sdp),this._open=!0;break;case Ie.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"))}};mi=new WeakMap,Rt(Vt,mi,Vt.ID_PREFIX="mc_");var zr=Vt,hi=class{constructor(e){this._options=e}_buildRequest(e){let t=this._options.secure?"https":"http",{host:r,port:i,path:s,key:c}=this._options,u=new URL(`${t}://${r}:${i}${s}${c}/${e}`);return u.searchParams.set("ts",`${Date.now()}${Math.random()}`),u.searchParams.set("version",uo),fetch(u.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,xi,yt=class yt extends Fr{get type(){return ct.Data}constructor(e,t,r){super(e,t,r),this.connectionId=this.options.connectionId||yt.ID_PREFIX+fo(),this.label=this.options.label||this.connectionId,this.reliable=!!this.options.reliable,this._negotiator=new Br(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(vi.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 Ie.Answer:await this._negotiator.handleSDP(e.type,t.sdp);break;case Ie.Candidate:await this._negotiator.handleCandidate(t.candidate);break;default:B.warn("Unrecognized message type:",e.type,"from peer:",this.peer);break}}};gi=new WeakMap,xi=new WeakMap,Rt(yt,gi,yt.ID_PREFIX="dc_"),Rt(yt,xi,yt.MAX_BUFFERED_AMOUNT=8388608);var mt=yt,wt=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}},Ht=class extends wt{close(e){super.close(e),this._chunkedData={}}constructor(e,t,r){super(e,t,r),this.chunker=new Ur,this.serialization=$r.Binary,this._chunkedData={}}_handleDataMessage({data:e}){let t=(0,Or.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=tf(r.data);this._handleDataMessage({data:i})}}_send(e,t){let r=(0,Or.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)}},li=class extends wt{_handleDataMessage({data:e}){super.emit("data",e)}_send(e,t){this._bufferedSend(e)}constructor(...e){super(...e),this.serialization=$r.None}},pi=class extends wt{_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(vi.MessageToBig,"Message too big for JSON channel");return}this._bufferedSend(r)}constructor(...e){super(...e),this.serialization=$r.JSON,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.stringify=JSON.stringify,this.parse=JSON.parse}},bi,Wt=class Wt extends Lr{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:li,json:pi,binary:Ht,"binary-utf8":Ht,default:Ht},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:Wt.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 hi(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 ui(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 Ie.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Ie.Error:this._abort(ve.ServerError,r.msg);break;case Ie.IdTaken:this._abort(ve.UnavailableID,`ID "${this.id}" is taken`);break;case Ie.InvalidKey:this._abort(ve.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case Ie.Leave:B.log(`Received leave message from ${i}`),this._cleanupPeer(i),this._connections.delete(i);break;case Ie.Expire:this.emitError(ve.PeerUnavailable,`Could not connect to peer ${i}`);break;case Ie.Offer:{let s=r.connectionId,c=this.getConnection(i,s);if(c&&(c.close(),B.warn(`Offer received for existing Connection ID:${s}`)),r.type===ct.Media){let l=new zr(i,this,{connectionId:s,_payload:r,metadata:r.metadata});c=l,this._addConnection(i,c),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});c=l,this._addConnection(i,c),this.emit("connection",l)}else{B.warn(`Received malformed connection type:${r.type}`);return}let u=this._getMessages(s);for(let l of u)c.handleMessage(l);break}default:{if(!r){B.warn(`You received a malformed message from ${i} of type ${t}`);return}let s=r.connectionId,c=this.getConnection(i,s);c&&c.peerConnection?c.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 zr(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))}};bi=new WeakMap,Rt(Wt,bi,Wt.DEFAULT_KEY="peerjs");var Yt=Wt,Gr=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 c=0;c<i.length;c+=this._CHUNK_SIZE)s.enqueue(i.subarray(c,c+this._CHUNK_SIZE))}}),this._rawSendStream=new WritableStream({write:async(i,s)=>{let c=new Promise(u=>this.dataChannel.addEventListener("bufferedamountlow",u,{once:!0}));await(this.dataChannel.bufferedAmount<=mt.MAX_BUFFERED_AMOUNT-i.byteLength||c);try{this.dataChannel.send(i)}catch(u){B.error(`DC#:${this.connectionId} Error when sending:`,u),s.error(u),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}},Jt=class extends Gr{constructor(e,t,r){super(e,t,r),this.serialization="MsgPack",this._encoder=new so.Encoder,(async()=>{for await(let i of(0,so.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))}},yi=class extends Yt{constructor(...e){super(...e),this._serializers={MsgPack:Jt,default:Jt}}},sf=Yt;ef(Ke.exports,ft)});var Ci=$((Od,ho)=>{var of=pr(),af=In(),Si=class{constructor({id:e,url:t,PeerImpl:r,WebSocketImpl:i,priority:s=0,connectTimeoutMs:c=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=c,this.peer=null,this.peerId=null,this.connections=new Map,this.messageHandlers=new Set,this.fallbackProvider=null}resolvePeerImplementation(){try{let e=_i();return e.Peer||e}catch{return null}}parsePeerJsServerUrl(){return af(this.url)}shouldUseWebSocketFallback(){return!this.isCustomPeerImpl&&typeof globalThis.RTCPeerConnection!="function"}useWebSocketFallback(){return this.fallbackProvider||(this.fallbackProvider=new of({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}),c=setTimeout(()=>{i(new Error(`Unable to connect to signaling url ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(c),this.peer=s,this.peerId=t,r()}),s.on("connection",u=>{this.attachConnectionHandlers(u)}),s.on("error",async u=>{if(clearTimeout(c),u&&u.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"}),c=setTimeout(()=>{i(new Error(`Unable to connect peer ${e} via ${this.url}`))},this.connectTimeoutMs);s.on("open",()=>{clearTimeout(c),this.attachConnectionHandlers(s),r(s)}),s.on("error",()=>{clearTimeout(c),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}};ho.exports=Si});var Nr=$((Ud,lo)=>{var cf=["wss://peerjs.92k.de/peerjs?key=peerjs","wss://0.peerjs.com/peerjs?key=peerjs"],ff=["wss://relay.dignity.dev/signaling","wss://backup-relay.dignity.dev/signaling"];lo.exports={DEFAULT_CLOUDFLARE_SIGNALING_URLS:cf,DEFAULT_SIGNALING_FALLBACK_URLS:ff}});var mo=$((Bd,yo)=>{var df=Tn(),po=pr(),uf=Ci(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:hf,DEFAULT_SIGNALING_FALLBACK_URLS:lf}=Nr();function pf(n={}){let e=n.cloudflareUrls||hf,t=n.fallbackUrls||lf,r=n.WebSocketImpl,i=[];return e.forEach((s,c)=>{let l=/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(s)?uf:po;i.push(new l({id:`cloudflare-${c+1}`,url:s,WebSocketImpl:r,priority:c}))}),t.forEach((s,c)=>{i.push(new po({id:`fallback-${c+1}`,url:s,WebSocketImpl:r,priority:e.length+c}))}),Array.isArray(n.customProviders)&&i.push(...n.customProviders),new df(i)}yo.exports=pf});var xo=$((Ld,go)=>{var Pi=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(c=>c&&c!==e)),s=[];for(let[c,u]of this.adapters.entries())c!==e&&i.has(c)&&s.push(u.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 r of this.messageHandlers)t.push(r(e));await Promise.all(t)}};go.exports={InMemoryNetworkHub:Pi,InMemoryNetworkAdapter:wi}});var _o=$((jd,vo)=>{var{DEFAULT_CLOUDFLARE_SIGNALING_URLS:yf}=Nr(),bo=In();function mf(n){if(n)return n;try{let e=_i();return e.Peer||e}catch{return null}}var qr=class{constructor({url:e,urls:t,PeerImpl:r,connectTimeoutMs:i=12e3}={}){this.urls=t||(e?[e]:[...yf]),this.url=this.urls[0],this.PeerImpl=mf(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=bo(t);await new Promise((i,s)=>{let c=new this.PeerImpl(e,{host:r.host,port:r.port,path:r.path,secure:r.secure,key:r.key}),u=setTimeout(()=>{c.destroy?.(),s(new Error(`Unable to connect PeerJS network adapter to ${t}`))},this.connectTimeoutMs);c.on("open",()=>{clearTimeout(u),this.peer=c,i()}),c.on("connection",l=>{this.attachConnectionHandlers(l)}),c.on("error",l=>{clearTimeout(u),c.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 c=this.peer.connect(e,{reliable:!0,serialization:"json"}),u=setTimeout(()=>{s(new Error(`Unable to connect to peer ${e}`))},this.connectTimeoutMs);c.on("open",()=>{clearTimeout(u),this.attachConnectionHandlers(c),i(c)}),c.on("error",()=>{clearTimeout(u),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,c]of this.connections.entries())r.has(s)&&c.open&&i.push(c.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 gf(n={}){return new qr(n)}vo.exports={PeerJSNetworkAdapter:qr,createPeerJSNetworkAdapter:gf,parsePeerJsServerUrl:bo}});var Co=$((Fd,So)=>{var Ti=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 c=r.transaction(this.storeName,e),u=c.objectStore(this.storeName);Promise.resolve(t(u)).then(i).catch(s),c.oncomplete=()=>r.close(),c.onerror=()=>s(c.error||new Error("IndexedDB transaction failed")),c.onabort=()=>s(c.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((c,u)=>{let l=s.delete(i);l.onsuccess=()=>c(),l.onerror=()=>u(l.error)}));return}await this.runTransaction("readwrite",s=>new Promise((c,u)=>{let l=s.put(r);l.onsuccess=()=>c(),l.onerror=()=>u(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)}))}};So.exports=Ti});var Ff=$((zd,Po)=>{var xf=ns(),bf=mo(),vf=Tn(),_f=pr(),Sf=Ci(),{InMemoryNetworkHub:Cf,InMemoryNetworkAdapter:Pf}=xo(),{PeerJSNetworkAdapter:wf,createPeerJSNetworkAdapter:Tf}=_o(),Ef=Co(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:If,DEFAULT_SIGNALING_FALLBACK_URLS:kf}=Nr(),Rf=yn(),Af=ln(),{MessageSecurityService:Mf,DEFAULT_SECURITY_OPTIONS:Df}=vn(),{PEER_GROUP_SCOPE_PREFIX:Of,DEFAULT_PEER_GROUP_OPTIONS:Uf,peerGroupScope:Bf,parsePeerGroupScope:Lf,selectFanoutPeers:jf}=Sn();Po.exports={DignityP2P:xf,createDefaultSignalingPool:bf,SignalingPool:vf,WebSocketSignalingProvider:_f,PeerJSSignalingProvider:Sf,InMemoryNetworkHub:Cf,InMemoryNetworkAdapter:Pf,PeerJSNetworkAdapter:wf,createPeerJSNetworkAdapter:Tf,IndexedDBPersistence:Ef,DEFAULT_CLOUDFLARE_SIGNALING_URLS:If,DEFAULT_SIGNALING_FALLBACK_URLS:kf,VDF:Rf,SlothPermutation:Af,MessageSecurityService:Mf,DEFAULT_SECURITY_OPTIONS:Df,PEER_GROUP_SCOPE_PREFIX:Of,DEFAULT_PEER_GROUP_OPTIONS:Uf,peerGroupScope:Bf,parsePeerGroupScope:Lf,selectFanoutPeers:jf}});return Ff();})();
|
|
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}},Jf=n=>!n||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(n),$o=()=>Math.random().toString(36).slice(2),zo={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"},vi=class extends Hr{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=zo,this.browser=Yt.getBrowser(),this.browserVersion=Yt.getVersion(),this.pack=qr.pack,this.unpack=qr.unpack,this.supports=(function(){let t={browser:Yt.isBrowserSupported(),webRTC:Yt.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!t.webRTC)return t;let r;try{r=new RTCPeerConnection(zo),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=!Yt.isIOS}catch{}}catch{}finally{i&&i.close()}}catch{}finally{r&&r.close()}return t})(),this.validateId=Jf,this.randomToken=$o}},ke=new vi,Xf="PeerJS: ",_i=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=[Xf,...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 _i,ft={};Ae(ft,"ConnectionType",()=>ct);Ae(ft,"PeerErrorType",()=>ve);Ae(ft,"BaseConnectionErrorType",()=>Pi);Ae(ft,"DataConnectionErrorType",()=>Mi);Ae(ft,"SerializationType",()=>Qr);Ae(ft,"SocketEventType",()=>at);Ae(ft,"ServerMessageType",()=>Ie);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})({}),Pi=(function(n){return n.NegotiationFailed="negotiation-failed",n.ConnectionClosed="connection-closed",n})({}),Mi=(function(n){return n.NotOpenYet="not-open-yet",n.MessageToBig="message-too-big",n})({}),Qr=(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})({}),Ie=(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})({}),qo="1.5.5",Si=class extends No.EventEmitter{constructor(e,t,r,i,s,a=5e3){super(),this.pingInterval=a,this._disconnected=!0,this._messagesQueue=[];let u=e?"wss://":"ws://";this._baseUrl=u+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="+qo),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:Ie.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)}},Vr=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:Ie.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(Pi.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(Pi.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 u=a.channel;s.getConnection(t,r)._initializeDataChannel(u)},B.log("Listening for remote stream"),e.ontrack=a=>{B.log("Received remote stream");let u=a.streams[0],h=s.getConnection(t,r);if(h.type===ct.Media){let p=h;this._addStreamToMediaConnection(u,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:Ie.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:Ie.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)}},Wr=class extends No.EventEmitter{emitError(e,t){B.error("Error:",t),this.emit("error",new Yr(`${e}`,t))}},Yr=class extends Error{constructor(e,t){typeof t=="string"?super(t):(super(),Object.assign(this,t)),this.type=e}},Jr=class extends Wr{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}},Ii,Xt=class Xt extends Jr{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||Xt.ID_PREFIX+ke.randomToken(),this._negotiator=new Vr(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 Ie.Answer:this._negotiator.handleSDP(t,r.sdp),this._open=!0;break;case Ie.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"))}};Ii=new WeakMap,kt(Xt,Ii,Xt.ID_PREFIX="mc_");var Xr=Xt,wi=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,u=new URL(`${t}://${r}:${i}${s}${a}/${e}`);return u.searchParams.set("ts",`${Date.now()}${Math.random()}`),u.searchParams.set("version",qo),fetch(u.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!==ke.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===ke.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)}}},Ri,ki,yt=class yt extends Jr{get type(){return ct.Data}constructor(e,t,r){super(e,t,r),this.connectionId=this.options.connectionId||yt.ID_PREFIX+$o(),this.label=this.options.label||this.connectionId,this.reliable=!!this.options.reliable,this._negotiator=new Vr(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(Mi.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 Ie.Answer:await this._negotiator.handleSDP(e.type,t.sdp);break;case Ie.Candidate:await this._negotiator.handleCandidate(t.candidate);break;default:B.warn("Unrecognized message type:",e.type,"from peer:",this.peer);break}}};Ri=new WeakMap,ki=new WeakMap,kt(yt,Ri,yt.ID_PREFIX="dc_"),kt(yt,ki,yt.MAX_BUFFERED_AMOUNT=8388608);var gt=yt,Ct=class extends gt{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>gt.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}},Jt=class extends Ct{close(e){super.close(e),this._chunkedData={}}constructor(e,t,r){super(e,t,r),this.chunker=new Hr,this.serialization=Qr.Binary,this._chunkedData={}}_handleDataMessage({data:e}){let t=(0,qr.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=Yf(r.data);this._handleDataMessage({data:i})}}_send(e,t){let r=(0,qr.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)}},Ci=class extends Ct{_handleDataMessage({data:e}){super.emit("data",e)}_send(e,t){this._bufferedSend(e)}constructor(...e){super(...e),this.serialization=Qr.None}},Ti=class extends Ct{_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>=ke.chunkedMTU){this.emitError(Mi.MessageToBig,"Message too big for JSON channel");return}this._bufferedSend(r)}constructor(...e){super(...e),this.serialization=Qr.JSON,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.stringify=JSON.stringify,this.parse=JSON.parse}},Ai,Zt=class Zt extends Wr{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:Ci,json:Ti,binary:Jt,"binary-utf8":Jt,default:Jt},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:ke.CLOUD_HOST,port:ke.CLOUD_PORT,path:"/",key:Zt.DEFAULT_KEY,token:ke.randomToken(),config:ke.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!==ke.CLOUD_HOST?this._options.secure=ke.isSecure():this._options.host==ke.CLOUD_HOST&&(this._options.secure=!0),this._options.logFunction&&B.setLogFunction(this._options.logFunction),B.logLevel=this._options.debug||0,this._api=new wi(t),this._socket=this._createServerConnection(),!ke.supports.audioVideo&&!ke.supports.data){this._delayedAbort(ve.BrowserIncompatible,"The current browser does not support WebRTC");return}if(r&&!ke.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 Si(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 Ie.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Ie.Error:this._abort(ve.ServerError,r.msg);break;case Ie.IdTaken:this._abort(ve.UnavailableID,`ID "${this.id}" is taken`);break;case Ie.InvalidKey:this._abort(ve.InvalidKey,`API KEY "${this._options.key}" is invalid`);break;case Ie.Leave:B.log(`Received leave message from ${i}`),this._cleanupPeer(i),this._connections.delete(i);break;case Ie.Expire:this.emitError(ve.PeerUnavailable,`Could not connect to peer ${i}`);break;case Ie.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 h=new Xr(i,this,{connectionId:s,_payload:r,metadata:r.metadata});a=h,this._addConnection(i,a),this.emit("call",h)}else if(r.type===ct.Data){let h=new this._serializers[r.serialization](i,this,{connectionId:s,_payload:r,metadata:r.metadata,label:r.label,serialization:r.serialization,reliable:r.reliable});a=h,this._addConnection(i,a),this.emit("connection",h)}else{B.warn(`Received malformed connection type:${r.type}`);return}let u=this._getMessages(s);for(let h of u)a.handleMessage(h);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 Xr(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))}};Ai=new WeakMap,kt(Zt,Ai,Zt.DEFAULT_KEY="peerjs");var Qt=Zt,Zr=class extends gt{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(u=>this.dataChannel.addEventListener("bufferedamountlow",u,{once:!0}));await(this.dataChannel.bufferedAmount<=gt.MAX_BUFFERED_AMOUNT-i.byteLength||a);try{this.dataChannel.send(i)}catch(u){B.error(`DC#:${this.connectionId} Error when sending:`,u),s.error(u),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=gt.MAX_BUFFERED_AMOUNT/2}},er=class extends Zr{constructor(e,t,r){super(e,t,r),this.serialization="MsgPack",this._encoder=new Fo.Encoder,(async()=>{for await(let i of(0,Fo.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))}},Ei=class extends Qt{constructor(...e){super(...e),this._serializers={MsgPack:er,default:er}}},Zf=Qt;Wf(qe.exports,ft)});var Ui=z((Gu,Ho)=>{var Qf=wr(),ed=Cr(),Oi=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=Di();return e.Peer||e}catch{return null}}parsePeerJsServerUrl(){return ed(this.url)}shouldUseWebSocketFallback(){return!this.isCustomPeerImpl&&typeof globalThis.RTCPeerConnection!="function"}useWebSocketFallback(){return this.fallbackProvider||(this.fallbackProvider=new Qf({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",u=>{this.attachConnectionHandlers(u)}),s.on("error",async u=>{if(clearTimeout(a),u&&u.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}};Ho.exports=Oi});var en=z((zu,Vo)=>{var td=["wss://peerjs.92k.de/peerjs?key=peerjs","wss://0.peerjs.com/peerjs?key=peerjs"],rd=["wss://relay.dignity.dev/signaling","wss://backup-relay.dignity.dev/signaling"];Vo.exports={DEFAULT_CLOUDFLARE_SIGNALING_URLS:td,DEFAULT_SIGNALING_FALLBACK_URLS:rd}});var Jo=z((Nu,Yo)=>{var nd=Kn(),Wo=wr(),id=Ui(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:sd,DEFAULT_SIGNALING_FALLBACK_URLS:od}=en();function ad(n={}){let e=n.cloudflareUrls||sd,t=n.fallbackUrls||od,r=n.WebSocketImpl,i=[];return e.forEach((s,a)=>{let h=/^wss:\/\/(peerjs\.92k\.de|0\.peerjs\.com)(\/|$)/.test(s)?id:Wo;i.push(new h({id:`cloudflare-${a+1}`,url:s,WebSocketImpl:r,priority:a}))}),t.forEach((s,a)=>{i.push(new Wo({id:`fallback-${a+1}`,url:s,WebSocketImpl:r,priority:e.length+a}))}),Array.isArray(n.customProviders)&&i.push(...n.customProviders),new nd(i)}Yo.exports=ad});var Zo=z(($u,Xo)=>{var Bi=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,u]of this.adapters.entries())a!==e&&i.has(a)&&s.push(u.receive(t));await Promise.all(s)}},Li=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)}};Xo.exports={InMemoryNetworkHub:Bi,InMemoryNetworkAdapter:Li}});var ta=z((qu,ea)=>{var{DEFAULT_CLOUDFLARE_SIGNALING_URLS:cd}=en(),Qo=Cr();function fd(n){if(n)return n;try{let e=Di();return e.Peer||e}catch{return null}}var tn=class{constructor({url:e,urls:t,PeerImpl:r,connectTimeoutMs:i=12e3}={}){this.urls=t||(e?[e]:[...cd]),this.url=this.urls[0],this.PeerImpl=fd(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=Qo(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}),u=setTimeout(()=>{a.destroy?.(),s(new Error(`Unable to connect PeerJS network adapter to ${t}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(u),this.peer=a,i()}),a.on("connection",h=>{this.attachConnectionHandlers(h)}),a.on("error",h=>{clearTimeout(u),a.destroy?.(),s(h||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"}),u=setTimeout(()=>{s(new Error(`Unable to connect to peer ${e}`))},this.connectTimeoutMs);a.on("open",()=>{clearTimeout(u),this.attachConnectionHandlers(a),i(a)}),a.on("error",()=>{clearTimeout(u),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 dd(n={}){return new tn(n)}ea.exports={PeerJSNetworkAdapter:tn,createPeerJSNetworkAdapter:dd,parsePeerJsServerUrl:Qo}});var na=z((Hu,ra)=>{var ji=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),u=a.objectStore(this.storeName);Promise.resolve(t(u)).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,u)=>{let h=s.delete(i);h.onsuccess=()=>a(),h.onerror=()=>u(h.error)}));return}await this.runTransaction("readwrite",s=>new Promise((a,u)=>{let h=s.put(r);h.onsuccess=()=>a(),h.onerror=()=>u(h.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)}))}};ra.exports=ji});var $d=z((Vu,ia)=>{var ud=Ls(),ld=Jo(),hd=Kn(),pd=wr(),yd=Ui(),{InMemoryNetworkHub:gd,InMemoryNetworkAdapter:md}=Zo(),{PeerJSNetworkAdapter:xd,createPeerJSNetworkAdapter:bd}=ta(),vd=na(),{DEFAULT_CLOUDFLARE_SIGNALING_URLS:_d,DEFAULT_SIGNALING_FALLBACK_URLS:Pd}=en(),Sd=wn(),wd=Pn(),{MessageSecurityService:Cd,DEFAULT_SECURITY_OPTIONS:Td,DEFAULT_APP_PASSWORD:Ed}=Dt(),{deriveKeyPairFromCredentials:Id,keyPairToPublicBundle:Rd,deriveColdRecoverySigningKey:kd}=gr(),{createIdentityRotation:Ad,verifyIdentityRotation:Md,revokeAndRotateIdentity:Dd,rotateIdentityPassword:Od,enrollColdRecoveryPassword:Ud,verifyColdRecoveryEnrollment:Bd,shouldApplyIdentityRotation:Ld}=Ot(),jd=Cr(),{PEER_GROUP_SCOPE_PREFIX:Kd,DEFAULT_PEER_GROUP_OPTIONS:Fd,peerGroupScope:Gd,parsePeerGroupScope:zd,selectFanoutPeers:Nd}=On();ia.exports={DignityP2P:ud,createDefaultSignalingPool:ld,SignalingPool:hd,WebSocketSignalingProvider:pd,PeerJSSignalingProvider:yd,InMemoryNetworkHub:gd,InMemoryNetworkAdapter:md,PeerJSNetworkAdapter:xd,createPeerJSNetworkAdapter:bd,IndexedDBPersistence:vd,DEFAULT_CLOUDFLARE_SIGNALING_URLS:_d,DEFAULT_SIGNALING_FALLBACK_URLS:Pd,VDF:Sd,SlothPermutation:wd,MessageSecurityService:Cd,DEFAULT_SECURITY_OPTIONS:Td,DEFAULT_APP_PASSWORD:Ed,deriveKeyPairFromCredentials:Id,deriveColdRecoverySigningKey:kd,keyPairToPublicBundle:Rd,createIdentityRotation:Ad,verifyIdentityRotation:Md,revokeAndRotateIdentity:Dd,rotateIdentityPassword:Od,enrollColdRecoveryPassword:Ud,verifyColdRecoveryEnrollment:Bd,shouldApplyIdentityRotation:Ld,parsePeerJsServerUrl:jd,PEER_GROUP_SCOPE_PREFIX:Kd,DEFAULT_PEER_GROUP_OPTIONS:Fd,peerGroupScope:Gd,parsePeerGroupScope:zd,selectFanoutPeers:Nd}});return $d();})();
|