| var log=(()=>{const n=()=>{};return new Proxy(console,{get:(c,m)=>globalThis.__gdbDebug?c[m].bind(c):n})})(); | ||
| var u$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function F$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function A$($,...Q){if(!F$($))throw Error("Uint8Array expected");if(Q.length>0&&!Q.includes($.length))throw Error("Uint8Array expected of length "+Q+", got length="+$.length)}function x0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");q0($.outputLen),q0($.blockLen)}function i$($,Q=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(Q&&$.finished)throw Error("Hash#digest() has already been called")}function T8($,Q){A$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function m$(...$){for(let Q=0;Q<$.length;Q++)$[Q].fill(0)}function A0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function R$($,Q){return $<<32-Q|$>>>Q}var L8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),cQ=Array.from({length:256},($,Q)=>Q.toString(16).padStart(2,"0"));function C$($){if(A$($),L8)return $.toHex();let Q="";for(let q=0;q<$.length;q++)Q+=cQ[$[q]];return Q}var w$={_0:48,_9:57,A:65,F:70,a:97,f:102};function R8($){if($>=w$._0&&$<=w$._9)return $-w$._0;if($>=w$.A&&$<=w$.F)return $-(w$.A-10);if($>=w$.a&&$<=w$.f)return $-(w$.a-10);return}function h$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(L8)return Uint8Array.fromHex($);let Q=$.length,q=Q/2;if(Q%2)throw Error("hex string expected, got unpadded hex of length "+Q);let J=new Uint8Array(q);for(let G=0,z=0;G<q;G++,z+=2){let Y=R8($.charCodeAt(z)),U=R8($.charCodeAt(z+1));if(Y===void 0||U===void 0){let Z=$[z]+$[z+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+z)}J[G]=Y*16+U}return J}function R0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function G0($){if(typeof $==="string")$=R0($);return A$($),$}function W$(...$){let Q=0;for(let J=0;J<$.length;J++){let G=$[J];A$(G),Q+=G.length}let q=new Uint8Array(Q);for(let J=0,G=0;J<$.length;J++){let z=$[J];q.set(z,G),G+=z.length}return q}class z0{}function w8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function c$($=32){if(u$&&typeof u$.getRandomValues==="function")return u$.getRandomValues(new Uint8Array($));if(u$&&typeof u$.randomBytes==="function")return Uint8Array.from(u$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function lQ($,Q,q,J){if(typeof $.setBigUint64==="function")return $.setBigUint64(Q,q,J);let G=BigInt(32),z=BigInt(4294967295),Y=Number(q>>G&z),U=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,Y,J),$.setUint32(Q+D,U,J)}function C8($,Q,q){return $&Q^~$&q}function k8($,Q,q){return $&Q^$&q^Q&q}class o0 extends z0{constructor($,Q,q,J){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=Q,this.padOffset=q,this.isLE=J,this.buffer=new Uint8Array($),this.view=A0(this.buffer)}update($){i$(this),$=G0($),A$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let Y=Math.min(J-this.pos,G-z);if(Y===J){let U=A0($);for(;J<=G-z;z+=J)this.process(U,z);continue}if(q.set($.subarray(z,z+Y),this.pos),this.pos+=Y,z+=Y,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){i$(this),T8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,m$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let H=z;H<J;H++)Q[H]=0;lQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let Y=A0($),U=this.outputLen;if(U%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=U/4,D=this.get();if(Z>D.length)throw Error("_sha2: outputLen bigger than state");for(let H=0;H<Z;H++)Y.setUint32(4*H,D[H],G)}digest(){let{buffer:$,outputLen:Q}=this;this.digestInto($);let q=$.slice(0,Q);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:Q,buffer:q,length:J,finished:G,destroyed:z,pos:Y}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=Y,J%Q)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var k$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var dQ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),v$=new Uint32Array(64);class S8 extends o0{constructor($=32){super(64,$,8,!1);this.A=k$[0]|0,this.B=k$[1]|0,this.C=k$[2]|0,this.D=k$[3]|0,this.E=k$[4]|0,this.F=k$[5]|0,this.G=k$[6]|0,this.H=k$[7]|0}get(){let{A:$,B:Q,C:q,D:J,E:G,F:z,G:Y,H:U}=this;return[$,Q,q,J,G,z,Y,U]}set($,Q,q,J,G,z,Y,U){this.A=$|0,this.B=Q|0,this.C=q|0,this.D=J|0,this.E=G|0,this.F=z|0,this.G=Y|0,this.H=U|0}process($,Q){for(let H=0;H<16;H++,Q+=4)v$[H]=$.getUint32(Q,!1);for(let H=16;H<64;H++){let R=v$[H-15],X=v$[H-2],K=R$(R,7)^R$(R,18)^R>>>3,A=R$(X,17)^R$(X,19)^X>>>10;v$[H]=A+v$[H-7]+K+v$[H-16]|0}let{A:q,B:J,C:G,D:z,E:Y,F:U,G:Z,H:D}=this;for(let H=0;H<64;H++){let R=R$(Y,6)^R$(Y,11)^R$(Y,25),X=D+R+C8(Y,U,Z)+dQ[H]+v$[H]|0,A=(R$(q,2)^R$(q,13)^R$(q,22))+k8(q,J,G)|0;D=Z,Z=U,U=Y,Y=z+X|0,z=G,G=J,J=q,q=X+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,Y=Y+this.E|0,U=U+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,Y,U,Z,D)}roundClean(){m$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),m$(this.buffer)}}var T0=w8(()=>new S8);class i0 extends z0{constructor($,Q){super();this.finished=!1,this.destroyed=!1,x0($);let q=G0(Q);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let J=this.blockLen,G=new Uint8Array(J);G.set(q.length>J?$.create().update(q).digest():q);for(let z=0;z<G.length;z++)G[z]^=54;this.iHash.update(G),this.oHash=$.create();for(let z=0;z<G.length;z++)G[z]^=106;this.oHash.update(G),m$(G)}update($){return i$(this),this.iHash.update($),this}digestInto($){i$(this),A$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:Q,iHash:q,finished:J,destroyed:G,blockLen:z,outputLen:Y}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=Y,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var r0=($,Q,q)=>new i0($,Q).update(q).digest();r0.create=($,Q)=>new i0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s0=BigInt(0),n0=BigInt(1);function Y0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=F$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let Y=q&&`"${q}" `,U=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(Y+"expected Uint8Array"+U+", got "+Z)}return $}function X0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function P8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?s0:BigInt("0x"+$)}function S$($){return P8(C$($))}function t0($){return A$($),P8(C$(Uint8Array.from($).reverse()))}function r$($,Q){return h$($.toString(16).padStart(Q*2,"0"))}function e0($,Q){return r$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=h$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(F$(Q))J=Uint8Array.from(Q);else throw Error($+" must be hex string or Uint8Array");let G=J.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return J}var a0=($)=>typeof $==="bigint"&&s0<=$;function Z0($,Q,q){return a0($)&&a0(Q)&&a0(q)&&Q<=$&&$<q}function I8($,Q,q,J){if(!Z0(Q,q,J))throw Error("expected valid "+$+": "+q+" <= n < "+J+", got "+Q)}function L0($){let Q;for(Q=0;$>s0;$>>=n0,Q+=1);return Q}var b$=($)=>(n0<<BigInt($))-n0;function E8($,Q,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof Q!=="number"||Q<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let J=(K)=>new Uint8Array(K),G=(K)=>Uint8Array.of(K),z=J($),Y=J($),U=0,Z=()=>{z.fill(1),Y.fill(0),U=0},D=(...K)=>q(Y,z,...K),H=(K=J(0))=>{if(Y=D(G(0),K),z=D(),K.length===0)return;Y=D(G(1),K),z=D()},R=()=>{if(U++>=1000)throw Error("drbg: tried 1000 values");let K=0,A=[];while(K<Q){z=D();let _=z.slice();A.push(_),K+=z.length}return W$(...A)};return(K,A)=>{Z(),H(K);let _=void 0;while(!(_=A(R())))H();return Z(),_}}function K0($,Q,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function J(G,z,Y){let U=$[G];if(Y&&U===void 0)return;let Z=typeof U;if(Z!==z||U===null)throw Error(`param "${G}" is invalid: expected ${z}, got ${Z}`)}Object.entries(Q).forEach(([G,z])=>J(G,z,!1)),Object.entries(q).forEach(([G,z])=>J(G,z,!0))}function $8($){let Q=new WeakMap;return(q,...J)=>{let G=Q.get(q);if(G!==void 0)return G;let z=$(q,...J);return Q.set(q,z),z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var U$=BigInt(0),X$=BigInt(1),l$=BigInt(2),b8=BigInt(3),f8=BigInt(4),y8=BigInt(5),pQ=BigInt(7),g8=BigInt(8),oQ=BigInt(9),u8=BigInt(16);function M$($,Q){let q=$%Q;return q>=U$?q:Q+q}function V$($,Q,q){let J=$;while(Q-- >U$)J*=J,J%=q;return J}function v8($,Q){if($===U$)throw Error("invert: expected non-zero number");if(Q<=U$)throw Error("invert: expected positive modulus, got "+Q);let q=M$($,Q),J=Q,G=U$,z=X$,Y=X$,U=U$;while(q!==U$){let D=J/q,H=J%q,R=G-Y*D,X=z-U*D;J=q,q=H,G=Y,z=U,Y=R,U=X}if(J!==X$)throw Error("invert: does not exist");return M$(G,Q)}function Q8($,Q,q){if(!$.eql($.sqr(Q),q))throw Error("Cannot find square root")}function F8($,Q){let q=($.ORDER+X$)/f8,J=$.pow(Q,q);return Q8($,J,Q),J}function iQ($,Q){let q=($.ORDER-y8)/g8,J=$.mul(Q,l$),G=$.pow(J,q),z=$.mul(Q,G),Y=$.mul($.mul(z,l$),G),U=$.mul(z,$.sub(Y,$.ONE));return Q8($,U,Q),U}function rQ($){let Q=f$($),q=m8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),Y=($+pQ)/u8;return(U,Z)=>{let D=U.pow(Z,Y),H=U.mul(D,J),R=U.mul(D,G),X=U.mul(D,z),K=U.eql(U.sqr(H),Z),A=U.eql(U.sqr(R),Z);D=U.cmov(D,H,K),H=U.cmov(X,R,A);let _=U.eql(U.sqr(H),Z),y=U.cmov(D,H,_);return Q8(U,y,Z),y}}function m8($){if($<b8)throw Error("sqrt is not defined for small field");let Q=$-X$,q=0;while(Q%l$===U$)Q/=l$,q++;let J=l$,G=f$($);while(_8(G,J)===1)if(J++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return F8;let z=G.pow(J,Q),Y=(Q+X$)/l$;return function(Z,D){if(Z.is0(D))return D;if(_8(Z,D)!==1)throw Error("Cannot find square root");let H=q,R=Z.mul(Z.ONE,z),X=Z.pow(D,Q),K=Z.pow(D,Y);while(!Z.eql(X,Z.ONE)){if(Z.is0(X))return Z.ZERO;let A=1,_=Z.sqr(X);while(!Z.eql(_,Z.ONE))if(A++,_=Z.sqr(_),A===H)throw Error("Cannot find square root");let y=X$<<BigInt(H-A-1),u=Z.pow(R,y);H=A,R=Z.sqr(u),X=Z.mul(X,R),K=Z.mul(K,u)}return K}}function aQ($){if($%f8===b8)return F8;if($%g8===y8)return iQ;if($%u8===oQ)return rQ($);return m8($)}var nQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function J8($){let Q={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=nQ.reduce((J,G)=>{return J[G]="function",J},Q);return K0($,q),$}function sQ($,Q,q){if(q<U$)throw Error("invalid exponent, negatives unsupported");if(q===U$)return $.ONE;if(q===X$)return Q;let J=$.ONE,G=Q;while(q>U$){if(q&X$)J=$.mul(J,G);G=$.sqr(G),q>>=X$}return J}function w0($,Q,q=!1){let J=Array(Q.length).fill(q?$.ZERO:void 0),G=Q.reduce((Y,U,Z)=>{if($.is0(U))return Y;return J[Z]=Y,$.mul(Y,U)},$.ONE),z=$.inv(G);return Q.reduceRight((Y,U,Z)=>{if($.is0(U))return Y;return J[Z]=$.mul(Y,J[Z]),$.mul(Y,U)},z),J}function _8($,Q){let q=($.ORDER-X$)/l$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),Y=$.eql(J,$.neg($.ONE));if(!G&&!z&&!Y)throw Error("invalid Legendre symbol result");return G?1:z?0:-1}function C0($,Q){if(Q!==void 0)q0(Q);let q=Q!==void 0?Q:$.toString(2).length,J=Math.ceil(q/8);return{nBitLength:q,nByteLength:J}}function f$($,Q,q=!1,J={}){if($<=U$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,z=void 0,Y=!1,U=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let X=Q;if(X.BITS)G=X.BITS;if(X.sqrt)z=X.sqrt;if(typeof X.isLE==="boolean")q=X.isLE;if(typeof X.modFromBytes==="boolean")Y=X.modFromBytes;U=X.allowedLengths}else{if(typeof Q==="number")G=Q;if(J.sqrt)z=J.sqrt}let{nBitLength:Z,nByteLength:D}=C0($,G);if(D>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let H,R=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:D,MASK:b$(Z),ZERO:U$,ONE:X$,allowedLengths:U,create:(X)=>M$(X,$),isValid:(X)=>{if(typeof X!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof X);return U$<=X&&X<$},is0:(X)=>X===U$,isValidNot0:(X)=>!R.is0(X)&&R.isValid(X),isOdd:(X)=>(X&X$)===X$,neg:(X)=>M$(-X,$),eql:(X,K)=>X===K,sqr:(X)=>M$(X*X,$),add:(X,K)=>M$(X+K,$),sub:(X,K)=>M$(X-K,$),mul:(X,K)=>M$(X*K,$),pow:(X,K)=>sQ(R,X,K),div:(X,K)=>M$(X*v8(K,$),$),sqrN:(X)=>X*X,addN:(X,K)=>X+K,subN:(X,K)=>X-K,mulN:(X,K)=>X*K,inv:(X)=>v8(X,$),sqrt:z||((X)=>{if(!H)H=aQ($);return H(R,X)}),toBytes:(X)=>q?e0(X,D):r$(X,D),fromBytes:(X,K=!0)=>{if(U){if(!U.includes(X.length)||X.length>D)throw Error("Field.fromBytes: expected "+U+" bytes, got "+X.length);let _=new Uint8Array(D);_.set(X,q?0:_.length-X.length),X=_}if(X.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+X.length);let A=q?t0(X):S$(X);if(Y)A=M$(A,$);if(!K){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(X)=>w0(R,X),cmov:(X,K,A)=>A?K:X});return Object.freeze(R)}function h8($){if(typeof $!=="bigint")throw Error("field order must be bigint");let Q=$.toString(2).length;return Math.ceil(Q/8)}function q8($){let Q=h8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=h8(Q),z=q8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let Y=q?t0($):S$($),U=M$(Y,Q-X$)+X$;return q?e0(U,G):r$(U,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var a$=BigInt(0),d$=BigInt(1);function U0($,Q){let q=Q.negate();return $?q:Q}function S0($,Q){let q=w0($.Fp,Q.map((J)=>J.Z));return Q.map((J,G)=>$.fromAffine(J.toAffine(q[G])))}function p8($,Q){if(!Number.isSafeInteger($)||$<=0||$>Q)throw Error("invalid window size, expected [1.."+Q+"], got W="+$)}function G8($,Q){p8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),Y=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:Y}}function c8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:Y}=q,U=Number($&G),Z=$>>Y;if(U>J)U-=z,Z+=d$;let D=Q*J,H=D+Math.abs(U)-1,R=U===0,X=U<0,K=Q%2!==0;return{nextN:Z,offset:H,isZero:R,isNeg:X,isNegF:K,offsetF:D}}function tQ($,Q){if(!Array.isArray($))throw Error("array expected");$.forEach((q,J)=>{if(!(q instanceof Q))throw Error("invalid point at index "+J)})}function eQ($,Q){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,J)=>{if(!Q.isValid(q))throw Error("invalid scalar at index "+J)})}var z8=new WeakMap,o8=new WeakMap;function Y8($){return o8.get($)||1}function l8($){if($!==a$)throw Error("invalid wNAF")}class X8{constructor($,Q){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=Q}_unsafeLadder($,Q,q=this.ZERO){let J=$;while(Q>a$){if(Q&d$)q=q.add(J);J=J.double(),Q>>=d$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=G8(Q,this.bits),G=[],z=$,Y=z;for(let U=0;U<q;U++){Y=z,G.push(Y);for(let Z=1;Z<J;Z++)Y=Y.add(z),G.push(Y);z=Y.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=G8($,this.bits);for(let Y=0;Y<z.windows;Y++){let{nextN:U,offset:Z,isZero:D,isNeg:H,isNegF:R,offsetF:X}=c8(q,Y,z);if(q=U,D)G=G.add(U0(R,Q[X]));else J=J.add(U0(H,Q[Z]))}return l8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=G8($,this.bits);for(let z=0;z<G.windows;z++){if(q===a$)break;let{nextN:Y,offset:U,isZero:Z,isNeg:D}=c8(q,z,G);if(q=Y,Z)continue;else{let H=Q[U];J=J.add(D?H.negate():H)}}return l8(q),J}getPrecomputes($,Q,q){let J=z8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);z8.set(Q,J)}}return J}cached($,Q,q){let J=Y8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=Y8($);if(G===1)return this._unsafeLadder($,Q,J);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),Q,J)}createCache($,Q){p8(Q,this.bits),o8.set($,Q),z8.delete($)}hasCache($){return Y8($)!==1}}function i8($,Q,q,J){let G=Q,z=$.ZERO,Y=$.ZERO;while(q>a$||J>a$){if(q&d$)z=z.add(G);if(J&d$)Y=Y.add(G);G=G.double(),q>>=d$,J>>=d$}return{p1:z,p2:Y}}function r8($,Q,q,J){tQ(q,$),eQ(J,Q);let G=q.length,z=J.length;if(G!==z)throw Error("arrays of points and scalars must have equal length");let Y=$.ZERO,U=L0(BigInt(G)),Z=1;if(U>12)Z=U-3;else if(U>4)Z=U-2;else if(U>0)Z=2;let D=b$(Z),H=Array(Number(D)+1).fill(Y),R=Math.floor((Q.BITS-1)/Z)*Z,X=Y;for(let K=R;K>=0;K-=Z){H.fill(Y);for(let _=0;_<z;_++){let y=J[_],u=Number(y>>BigInt(K)&D);H[u]=H[u].add(q[_])}let A=Y;for(let _=H.length-1,y=Y;_>0;_--)y=y.add(H[_]),A=A.add(y);if(X=X.add(A),K!==0)for(let _=0;_<Z;_++)X=X.double()}return X}function d8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return J8(Q),Q}else return f$($,{isLE:q})}function a8($,Q,q={},J){if(J===void 0)J=$==="edwards";if(!Q||typeof Q!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let D=Q[Z];if(!(typeof D==="bigint"&&D>a$))throw Error(`CURVE.${Z} must be positive bigint`)}let G=d8(Q.p,q.Fp,J),z=d8(Q.n,q.Fn,J),U=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of U)if(!G.isValid(Q[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return Q=Object.freeze(Object.assign({},Q)),{CURVE:Q,Fp:G,Fn:z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var n8=($,Q)=>($+($>=0?Q:-Q)/t8)/Q;function $J($,Q,q){let[[J,G],[z,Y]]=Q,U=n8(Y*$,q),Z=n8(-G*$,q),D=$-U*J-Z*z,H=-U*G-Z*Y,R=D<I$,X=H<I$;if(R)D=-D;if(X)H=-H;let K=b$(Math.ceil(L0(q)/2))+n$;if(D<I$||D>=K||H<I$||H>=K)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:X,k2:H}}function K8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Z8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(Y0(q.lowS,"lowS"),Y0(q.prehash,"prehash"),q.format!==void 0)K8(q.format);return q}class s8 extends Error{constructor($=""){super($)}}var P$={Err:s8,_tlv:{encode:($,Q)=>{let{Err:q}=P$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length&1)throw new q("tlv.encode: unpadded data");let J=Q.length/2,G=X0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?X0(G.length/2|128):"";return X0($)+z+G+Q},decode($,Q){let{Err:q}=P$,J=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length<2||Q[J++]!==$)throw new q("tlv.decode: wrong tlv");let G=Q[J++],z=!!(G&128),Y=0;if(!z)Y=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let D=Q.subarray(J,J+Z);if(D.length!==Z)throw new q("tlv.decode: length bytes not complete");if(D[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let H of D)Y=Y<<8|H;if(J+=Z,Y<128)throw new q("tlv.decode(long): not minimal encoding")}let U=Q.subarray(J,J+Y);if(U.length!==Y)throw new q("tlv.decode: wrong value length");return{v:U,l:Q.subarray(J+Y)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=X0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new Q("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:Q}=P$;if($[0]&128)throw new Q("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new Q("invalid signature integer: unnecessary leading zero");return S$($)}},toSig($){let{Err:Q,_int:q,_tlv:J}=P$,G=n("signature",$),{v:z,l:Y}=J.decode(48,G);if(Y.length)throw new Q("invalid signature: left bytes after parsing");let{v:U,l:Z}=J.decode(2,z),{v:D,l:H}=J.decode(2,Z);if(H.length)throw new Q("invalid signature: left bytes after parsing");return{r:q.decode(U),s:q.decode(D)}},hexFromSig($){let{_tlv:Q,_int:q}=P$,J=Q.encode(2,q.encode($.r)),G=Q.encode(2,q.encode($.s)),z=J+G;return Q.encode(48,z)}},I$=BigInt(0),n$=BigInt(1),t8=BigInt(2),P0=BigInt(3),QJ=BigInt(4);function y$($,Q){let{BYTES:q}=$,J;if(typeof Q==="bigint")J=Q;else{let G=n("private key",Q);try{J=$.fromBytes(G)}catch(z){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof Q}`)}}if(!$.isValidNot0(J))throw Error("invalid private key: out of range [1..N-1]");return J}function JJ($,Q={}){let q=a8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:Y,n:U}=z;K0(Q,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=Q;if(Z){if(!J.is0(z.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let D=$Q(J,G);function H(){if(!J.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function R(O,S,W){let{x:B,y:k}=S.toAffine(),v=J.toBytes(B);if(Y0(W,"isCompressed"),W){H();let P=!J.isOdd(k);return W$(e8(P),v)}else return W$(Uint8Array.of(4),v,J.toBytes(k))}function X(O){_$(O,void 0,"Point");let{publicKey:S,publicKeyUncompressed:W}=D,B=O.length,k=O[0],v=O.subarray(1);if(B===S&&(k===2||k===3)){let P=J.fromBytes(v);if(!J.isValid(P))throw Error("bad point: is not on curve, wrong x");let I=_(P),N;try{N=J.sqrt(I)}catch(V){let w=V instanceof Error?": "+V.message:"";throw Error("bad point: is not on curve, sqrt error"+w)}H();let T=J.isOdd(N);if((k&1)===1!==T)N=J.neg(N);return{x:P,y:N}}else if(B===W&&k===4){let P=J.BYTES,I=J.fromBytes(v.subarray(0,P)),N=J.fromBytes(v.subarray(P,P*2));if(!y(I,N))throw Error("bad point: is not on curve");return{x:I,y:N}}else throw Error(`bad point: got length ${B}, expected compressed=${S} or uncompressed=${W}`)}let K=Q.toBytes||R,A=Q.fromBytes||X;function _(O){let S=J.sqr(O),W=J.mul(S,O);return J.add(J.add(W,J.mul(O,z.a)),z.b)}function y(O,S){let W=J.sqr(S),B=_(O);return J.eql(W,B)}if(!y(z.Gx,z.Gy))throw Error("bad curve params: generator point");let u=J.mul(J.pow(z.a,P0),QJ),s=J.mul(J.sqr(z.b),BigInt(27));if(J.is0(J.add(u,s)))throw Error("bad curve params: a or b");function h(O,S,W=!1){if(!J.isValid(S)||W&&J.is0(S))throw Error(`bad point coordinate ${O}`);return S}function e(O){if(!(O instanceof g))throw Error("ProjectivePoint expected")}function $$(O){if(!Z||!Z.basises)throw Error("no endo");return $J(O,Z.basises,G.ORDER)}let Q$=$8((O,S)=>{let{X:W,Y:B,Z:k}=O;if(J.eql(k,J.ONE))return{x:W,y:B};let v=O.is0();if(S==null)S=v?J.ONE:J.inv(k);let P=J.mul(W,S),I=J.mul(B,S),N=J.mul(k,S);if(v)return{x:J.ZERO,y:J.ZERO};if(!J.eql(N,J.ONE))throw Error("invZ was invalid");return{x:P,y:I}}),z$=$8((O)=>{if(O.is0()){if(Q.allowInfinityPoint&&!J.is0(O.Y))return;throw Error("bad point: ZERO")}let{x:S,y:W}=O.toAffine();if(!J.isValid(S)||!J.isValid(W))throw Error("bad point: x or y not field elements");if(!y(S,W))throw Error("bad point: equation left != right");if(!O.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function Z$(O,S,W,B,k){return W=new g(J.mul(W.X,O),W.Y,W.Z),S=U0(B,S),W=U0(k,W),S.add(W)}class g{constructor(O,S,W){this.X=h("x",O),this.Y=h("y",S,!0),this.Z=h("z",W),Object.freeze(this)}static CURVE(){return z}static fromAffine(O){let{x:S,y:W}=O||{};if(!O||!J.isValid(S)||!J.isValid(W))throw Error("invalid affine point");if(O instanceof g)throw Error("projective point not allowed");if(J.is0(S)&&J.is0(W))return g.ZERO;return new g(S,W,J.ONE)}static fromBytes(O){let S=g.fromAffine(A(_$(O,void 0,"point")));return S.assertValidity(),S}static fromHex(O){return g.fromBytes(n("pointHex",O))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(O=8,S=!0){if(j$.createCache(this,O),!S)this.multiply(P0);return this}assertValidity(){z$(this)}hasEvenY(){let{y:O}=this.toAffine();if(!J.isOdd)throw Error("Field doesn't support isOdd");return!J.isOdd(O)}equals(O){e(O);let{X:S,Y:W,Z:B}=this,{X:k,Y:v,Z:P}=O,I=J.eql(J.mul(S,P),J.mul(k,B)),N=J.eql(J.mul(W,P),J.mul(v,B));return I&&N}negate(){return new g(this.X,J.neg(this.Y),this.Z)}double(){let{a:O,b:S}=z,W=J.mul(S,P0),{X:B,Y:k,Z:v}=this,P=J.ZERO,I=J.ZERO,N=J.ZERO,T=J.mul(B,B),j=J.mul(k,k),V=J.mul(v,v),w=J.mul(B,k);return w=J.add(w,w),N=J.mul(B,v),N=J.add(N,N),P=J.mul(O,N),I=J.mul(W,V),I=J.add(P,I),P=J.sub(j,I),I=J.add(j,I),I=J.mul(P,I),P=J.mul(w,P),N=J.mul(W,N),V=J.mul(O,V),w=J.sub(T,V),w=J.mul(O,w),w=J.add(w,N),N=J.add(T,T),T=J.add(N,T),T=J.add(T,V),T=J.mul(T,w),I=J.add(I,T),V=J.mul(k,v),V=J.add(V,V),T=J.mul(V,w),P=J.sub(P,T),N=J.mul(V,j),N=J.add(N,N),N=J.add(N,N),new g(P,I,N)}add(O){e(O);let{X:S,Y:W,Z:B}=this,{X:k,Y:v,Z:P}=O,I=J.ZERO,N=J.ZERO,T=J.ZERO,j=z.a,V=J.mul(z.b,P0),w=J.mul(S,k),C=J.mul(W,v),x=J.mul(B,P),m=J.add(S,W),l=J.add(k,v);m=J.mul(m,l),l=J.add(w,C),m=J.sub(m,l),l=J.add(S,B);let d=J.add(k,P);return l=J.mul(l,d),d=J.add(w,x),l=J.sub(l,d),d=J.add(W,B),I=J.add(v,P),d=J.mul(d,I),I=J.add(C,x),d=J.sub(d,I),T=J.mul(j,l),I=J.mul(V,x),T=J.add(I,T),I=J.sub(C,T),T=J.add(C,T),N=J.mul(I,T),C=J.add(w,w),C=J.add(C,w),x=J.mul(j,x),l=J.mul(V,l),C=J.add(C,x),x=J.sub(w,x),x=J.mul(j,x),l=J.add(l,x),w=J.mul(C,l),N=J.add(N,w),w=J.mul(d,l),I=J.mul(m,I),I=J.sub(I,w),w=J.mul(m,C),T=J.mul(d,T),T=J.add(T,w),new g(I,N,T)}subtract(O){return this.add(O.negate())}is0(){return this.equals(g.ZERO)}multiply(O){let{endo:S}=Q;if(!G.isValidNot0(O))throw Error("invalid scalar: out of range");let W,B,k=(v)=>j$.cached(this,v,(P)=>S0(g,P));if(S){let{k1neg:v,k1:P,k2neg:I,k2:N}=$$(O),{p:T,f:j}=k(P),{p:V,f:w}=k(N);B=j.add(w),W=Z$(S.beta,T,V,v,I)}else{let{p:v,f:P}=k(O);W=v,B=P}return S0(g,[W,B])[0]}multiplyUnsafe(O){let{endo:S}=Q,W=this;if(!G.isValid(O))throw Error("invalid scalar: out of range");if(O===I$||W.is0())return g.ZERO;if(O===n$)return W;if(j$.hasCache(this))return this.multiply(O);if(S){let{k1neg:B,k1:k,k2neg:v,k2:P}=$$(O),{p1:I,p2:N}=i8(g,W,k,P);return Z$(S.beta,I,N,B,v)}else return j$.unsafe(W,O)}multiplyAndAddUnsafe(O,S,W){let B=this.multiplyUnsafe(S).add(O.multiplyUnsafe(W));return B.is0()?void 0:B}toAffine(O){return Q$(this,O)}isTorsionFree(){let{isTorsionFree:O}=Q;if(Y===n$)return!0;if(O)return O(g,this);return j$.unsafe(this,U).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(Y===n$)return this;if(O)return O(g,this);return this.multiplyUnsafe(Y)}isSmallOrder(){return this.multiplyUnsafe(Y).is0()}toBytes(O=!0){return Y0(O,"isCompressed"),this.assertValidity(),K(g,this,O)}toHex(O=!0){return C$(this.toBytes(O))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(O=!0){return this.toBytes(O)}_setWindowSize(O){this.precompute(O)}static normalizeZ(O){return S0(g,O)}static msm(O,S){return r8(g,G,O,S)}static fromPrivateKey(O){return g.BASE.multiply(y$(G,O))}}g.BASE=new g(z.Gx,z.Gy,J.ONE),g.ZERO=new g(J.ZERO,J.ONE,J.ZERO),g.Fp=J,g.Fn=G;let H$=G.BITS,j$=new X8(g,Q.endo?Math.ceil(H$/2):H$);return g.BASE.precompute(8),g}function e8($){return Uint8Array.of($?2:3)}function $Q($,Q){return{secretKey:Q.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*Q.BYTES}}function qJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||c$,G=Object.assign($Q($.Fp,q),{seed:q8(q.ORDER)});function z(K){try{return!!y$(q,K)}catch(A){return!1}}function Y(K,A){let{publicKey:_,publicKeyUncompressed:y}=G;try{let u=K.length;if(A===!0&&u!==_)return!1;if(A===!1&&u!==y)return!1;return!!$.fromBytes(K)}catch(u){return!1}}function U(K=J(G.seed)){return k0(_$(K,G.seed,"seed"),q.ORDER)}function Z(K,A=!0){return $.BASE.multiply(y$(q,K)).toBytes(A)}function D(K){let A=U(K);return{secretKey:A,publicKey:Z(A)}}function H(K){if(typeof K==="bigint")return!1;if(K instanceof $)return!0;let{secretKey:A,publicKey:_,publicKeyUncompressed:y}=G;if(q.allowedLengths||A===_)return;let u=n("key",K).length;return u===_||u===y}function R(K,A,_=!0){if(H(K)===!0)throw Error("first arg must be private key");if(H(A)===!1)throw Error("second arg must be public key");let y=y$(q,K);return $.fromHex(A).multiply(y).toBytes(_)}return Object.freeze({getPublicKey:Z,getSharedSecret:R,keygen:D,Point:$,utils:{isValidSecretKey:z,isValidPublicKey:Y,randomSecretKey:U,isValidPrivateKey:z,randomPrivateKey:U,normPrivateKeyToScalar:(K)=>y$(q,K),precompute(K=8,A=$.BASE){return A.precompute(K,!1)}},lengths:G})}function GJ($,Q,q={}){x0(Q),K0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let J=q.randomBytes||c$,G=q.hmac||((W,...B)=>r0(Q,W,W$(...B))),{Fp:z,Fn:Y}=$,{ORDER:U,BITS:Z}=Y,{keygen:D,getPublicKey:H,getSharedSecret:R,utils:X,lengths:K}=qJ($,q),A={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},_="compact";function y(W){let B=U>>n$;return W>B}function u(W,B){if(!Y.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function s(W,B){K8(B);let k=K.signature,v=B==="compact"?k:B==="recovered"?k+1:void 0;return _$(W,v,`${B} signature`)}class h{constructor(W,B,k){if(this.r=u("r",W),this.s=u("s",B),k!=null)this.recovery=k;Object.freeze(this)}static fromBytes(W,B=_){s(W,B);let k;if(B==="der"){let{r:N,s:T}=P$.toSig(_$(W));return new h(N,T)}if(B==="recovered")k=W[0],B="compact",W=W.subarray(1);let v=Y.BYTES,P=W.subarray(0,v),I=W.subarray(v,v*2);return new h(Y.fromBytes(P),Y.fromBytes(I),k)}static fromHex(W,B){return this.fromBytes(h$(W),B)}addRecoveryBit(W){return new h(this.r,this.s,W)}recoverPublicKey(W){let B=z.ORDER,{r:k,s:v,recovery:P}=this;if(P==null||![0,1,2,3].includes(P))throw Error("recovery id invalid");if(U*t8<B&&P>1)throw Error("recovery id is ambiguous for h>1 curve");let N=P===2||P===3?k+U:k;if(!z.isValid(N))throw Error("recovery id 2 or 3 invalid");let T=z.toBytes(N),j=$.fromBytes(W$(e8((P&1)===0),T)),V=Y.inv(N),w=$$(n("msgHash",W)),C=Y.create(-w*V),x=Y.create(v*V),m=$.BASE.multiplyUnsafe(C).add(j.multiplyUnsafe(x));if(m.is0())throw Error("point at infinify");return m.assertValidity(),m}hasHighS(){return y(this.s)}toBytes(W=_){if(K8(W),W==="der")return h$(P$.hexFromSig(this));let B=Y.toBytes(this.r),k=Y.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return W$(Uint8Array.of(this.recovery),B,k)}return W$(B,k)}toHex(W){return C$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return h.fromBytes(n("sig",W),"compact")}static fromDER(W){return h.fromBytes(n("sig",W),"der")}normalizeS(){return this.hasHighS()?new h(this.r,Y.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return C$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return C$(this.toBytes("compact"))}}let e=q.bits2int||function(B){if(B.length>8192)throw Error("input is too large");let k=S$(B),v=B.length*8-Z;return v>0?k>>BigInt(v):k},$$=q.bits2int_modN||function(B){return Y.create(e(B))},Q$=b$(Z);function z$(W){return I8("num < 2^"+Z,W,I$,Q$),Y.toBytes(W)}function Z$(W,B){return _$(W,void 0,"message"),B?_$(Q(W),void 0,"prehashed message"):W}function g(W,B,k){if(["recovered","canonical"].some((x)=>(x in k)))throw Error("sign() legacy options not supported");let{lowS:v,prehash:P,extraEntropy:I}=Z8(k,A);W=Z$(W,P);let N=$$(W),T=y$(Y,B),j=[z$(T),z$(N)];if(I!=null&&I!==!1){let x=I===!0?J(K.secretKey):I;j.push(n("extraEntropy",x))}let V=W$(...j),w=N;function C(x){let m=e(x);if(!Y.isValidNot0(m))return;let l=Y.inv(m),d=$.BASE.multiply(m).toAffine(),K$=Y.create(d.x);if(K$===I$)return;let b=Y.create(l*Y.create(w+K$*T));if(b===I$)return;let G$=(d.x===K$?0:2)|Number(d.y&n$),r=b;if(v&&y(b))r=Y.neg(b),G$^=1;return new h(K$,r,G$)}return{seed:V,k2sig:C}}function H$(W,B,k={}){W=n("message",W);let{seed:v,k2sig:P}=g(W,B,k);return E8(Q.outputLen,Y.BYTES,G)(v,P)}function j$(W){let B=void 0,k=typeof W==="string"||F$(W),v=!k&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!k&&!v)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(v)B=new h(W.r,W.s);else if(k){try{B=h.fromBytes(n("sig",W),"der")}catch(P){if(!(P instanceof P$.Err))throw P}if(!B)try{B=h.fromBytes(n("sig",W),"compact")}catch(P){return!1}}if(!B)return!1;return B}function O(W,B,k,v={}){let{lowS:P,prehash:I,format:N}=Z8(v,A);if(k=n("publicKey",k),B=Z$(n("message",B),I),"strict"in v)throw Error("options.strict was renamed to lowS");let T=N===void 0?j$(W):h.fromBytes(n("sig",W),N);if(T===!1)return!1;try{let j=$.fromBytes(k);if(P&&T.hasHighS())return!1;let{r:V,s:w}=T,C=$$(B),x=Y.inv(w),m=Y.create(C*x),l=Y.create(V*x),d=$.BASE.multiplyUnsafe(m).add(j.multiplyUnsafe(l));if(d.is0())return!1;return Y.create(d.x)===V}catch(j){return!1}}function S(W,B,k={}){let{prehash:v}=Z8(k,A);return B=Z$(B,v),h.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:H,getSharedSecret:R,utils:X,lengths:K,Point:$,sign:H$,verify:O,recoverPublicKey:S,Signature:h,hash:Q})}function zJ($){let Q={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,J=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((Y)=>Math.ceil(Y/2)))):void 0,G=f$(Q.n,{BITS:$.nBitLength,allowedLengths:J,modFromBytes:$.wrapPrivateKey}),z={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:Q,curveOpts:z}}function YJ($){let{CURVE:Q,curveOpts:q}=zJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function XJ($,Q){let q=Q.Point;return Object.assign({},Q,{ProjectivePoint:q,CURVE:Object.assign({},$,C0(q.Fn.ORDER,q.Fn.BITS))})}function QQ($){let{CURVE:Q,curveOpts:q,hash:J,ecdsaOpts:G}=YJ($),z=JJ(Q,q),Y=GJ(z,J,G);return XJ($,Y)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function JQ($,Q){let q=(J)=>QQ({...$,hash:J});return{...q(Q),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s$={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},ZJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},KJ=BigInt(0),qQ=BigInt(1),U8=BigInt(2);function UJ($){let Q=s$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),Y=BigInt(23),U=BigInt(44),Z=BigInt(88),D=$*$*$%Q,H=D*D*$%Q,R=V$(H,q,Q)*H%Q,X=V$(R,q,Q)*H%Q,K=V$(X,U8,Q)*D%Q,A=V$(K,G,Q)*K%Q,_=V$(A,z,Q)*A%Q,y=V$(_,U,Q)*_%Q,u=V$(y,Z,Q)*y%Q,s=V$(u,U,Q)*_%Q,h=V$(s,q,Q)*H%Q,e=V$(h,Y,Q)*A%Q,$$=V$(e,J,Q)*D%Q,Q$=V$($$,U8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(s$.p,{sqrt:UJ}),YQ=JQ({...s$,Fp:I0,lowS:!0,endo:ZJ},T0),GQ={};function E0($,...Q){let q=GQ[$];if(q===void 0){let J=T0(R0($));q=W$(J,J),GQ[$]=q}return T0(W$(q,...Q))}var W8=($)=>$.toBytes(!0).slice(1),t$=(()=>YQ.Point)(),D8=($)=>$%U8===KJ;function j8($){let{Fn:Q,BASE:q}=t$,J=y$(Q,$),G=q.multiply(J);return{scalar:D8(G.y)?J:Q.neg(J),bytes:W8(G)}}function XQ($){let Q=I0;if(!Q.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=Q.create($*$),J=Q.create(q*$+BigInt(7)),G=Q.sqrt(J);if(!D8(G))G=Q.neg(G);let z=t$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function ZQ(...$){return t$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function zQ($){return j8($).bytes}function jJ($,Q,q=c$(32)){let{Fn:J}=t$,G=n("message",$),{bytes:z,scalar:Y}=j8(Q),U=n("auxRand",q,32),Z=J.toBytes(Y^j0(E0("BIP0340/aux",U))),D=E0("BIP0340/nonce",Z,z,G),{bytes:H,scalar:R}=j8(D),X=ZQ(H,z,G),K=new Uint8Array(64);if(K.set(H,0),K.set(J.toBytes(J.create(R+X*Y)),32),!KQ(K,G,z))throw Error("sign: Invalid signature produced");return K}function KQ($,Q,q){let{Fn:J,BASE:G}=t$,z=n("signature",$,64),Y=n("message",Q),U=n("publicKey",q,32);try{let Z=XQ(j0(U)),D=j0(z.subarray(0,32));if(!Z0(D,qQ,s$.p))return!1;let H=j0(z.subarray(32,64));if(!Z0(H,qQ,s$.n))return!1;let R=ZQ(J.toBytes(D),W8(Z),Y),X=G.multiplyUnsafe(H).add(Z.multiplyUnsafe(J.neg(R))),{x:K,y:A}=X.toAffine();if(X.is0()||!D8(A)||K!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=c$(48))=>{return k0(G,s$.n)};YQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:zQ(z)}}return{keygen:J,getPublicKey:zQ,sign:jJ,verify:KQ,Point:t$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:XQ,pointToBytes:W8,numberToBytesBE:r$,bytesToNumberBE:S$,mod:M$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var WJ=new TextEncoder,DJ=new TextDecoder,L$=($)=>WJ.encode($),p$=($)=>DJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),N$=JSON.stringify,o$=JSON.parse,b0=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",MJ={},UQ="$",jQ=",",VJ=($)=>{let Q=new Uint8Array($),q=32768,J="";for(let G=0;G<Q.length;G+=32768)J+=String.fromCharCode(...Q.subarray(G,G+32768));return btoa(J)},NJ=($)=>Uint8Array.from(atob($),(Q)=>Q.charCodeAt(0)).buffer,W0=($)=>MJ[$]??=crypto.subtle.digest("SHA-1",L$($)).then((Q)=>{let q=new Uint8Array(Q),J="";for(let G of q)J+=G.toString(36);return J}),WQ=async($,Q,q)=>{let J=await crypto.subtle.digest("SHA-256",L$(`${$}:${Q}:${q}`));return crypto.subtle.importKey("raw",J,{name:M8},!1,["encrypt","decrypt"])},DQ=async($,Q)=>{let q=crypto.getRandomValues(new Uint8Array(12)),J=await $,G=await crypto.subtle.encrypt({name:M8,iv:q},J,L$(Q));return`${q.join(jQ)}${UQ}${VJ(G)}`},MQ=async($,Q)=>{let[q,J]=Q.split(UQ);if(!q||!J)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(jQ),Number),z=await $,Y=await crypto.subtle.decrypt({name:M8,iv:G},z,NJ(J));return p$(Y)};var D$="GenosRTC",$0=($,Q)=>Array.from({length:$},Q);var e$=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=e$(20):e$(20),E$=Promise.all.bind(Promise),VQ=typeof window<"u",{entries:NQ,fromEntries:f0,keys:y9}=Object,HQ=()=>{},T$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@"),OQ=($,Q)=>{let q=[...$],J=q.length,G=()=>{let z=Math.sin(Q++)*1e4;return z-Math.floor(z)};while(J){let z=Math.floor(G()*J--);[q[J],q[z]]=[q[z],q[J]]}return q};var HJ=5000,BQ="icegatheringstatechange",xQ="offer",OJ="answer",BJ=[...$0(3,($,Q)=>`stun:stun${Q||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),V8=($,{rtcConfig:Q,rtcPolyfill:q,turnConfig:J})=>{let G=new(q||RTCPeerConnection)({iceServers:[...BJ,...J||[]],...Q}),z={},Y=!1,U=!1,Z,D=(X)=>Object.assign(X,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(K)=>z.data?.(K.data),onopen:()=>z.connect?.(),onclose:()=>z.close?.(),onerror:(K)=>!K?.error?.message?.includes("User-Initiated Abort")&&z.error?.(K)}),H=()=>Promise.race([new Promise((X)=>{let K=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(BQ,K),X()};G.addEventListener(BQ,K),K()}),new Promise((X)=>setTimeout(X,HJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?D(Z=G.createDataChannel("data")):G.ondatachannel=({channel:X})=>D(Z=X),G.onnegotiationneeded=async()=>{try{Y=!0,await G.setLocalDescription(),z.signal?.(await H())}catch(X){z.error?.(X)}finally{Y=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(X)=>{z.track?.(X.track,X.streams[0]),z.stream?.(X.streams[0])},G.onremovestream=(X)=>z.stream?.(X.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let R=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(X){if(Z?.readyState==="open"&&!X.sdp?.includes("a=rtpmap"))return;try{if(X.type===xQ){if(Y||G.signalingState!=="stable"&&!U){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(X)])}else await G.setRemoteDescription(X);await G.setLocalDescription();let K=await H();return z.signal?.(K),K}if(X.type===OJ){U=!0;try{await G.setRemoteDescription(X)}finally{U=!1}}}catch(K){z.error?.(K)}},sendData:(X)=>{if(Z?.readyState==="open")Z.send(X)},destroy:()=>{Z?.close(),G.close(),Y=U=!1},setHandlers:(X)=>Object.assign(z,X),offerPromise:$?new Promise((X)=>z.signal=(K)=>K.type===xQ&&X(K)):Promise.resolve(),addStream:(X)=>X.getTracks().forEach((K)=>G.addTrack(K,X)),removeStream:(X)=>R().filter((K)=>X.getTracks().includes(K.track)).forEach((K)=>G.removeTrack(K)),addTrack:(X,K)=>G.addTrack(X,K),removeTrack:(X)=>{let K=R().find((A)=>A.track===X);if(K)G.removeTrack(K)},replaceTrack:(X,K)=>R().find((A)=>A.track===X)?.replaceTrack(K)}};var xJ=Object.getPrototypeOf(Uint8Array),g0=12,TQ=0,u0=TQ+g0,F0=u0+1,V0=F0+1,N0=V0+1,M0=16384-N0,y0=255,N8="bufferedamountlow",Q0=($)=>`@_${$}`,AQ=Q0("ping"),H8=100,AJ=3,RJ=200,TJ=512,RQ=($,Q)=>new Response(new Blob([$]).stream().pipeThrough(new Q("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),LQ=($,Q,q,J)=>{let G=new Map,z=new Map,Y=new Map,U={},Z={},D={},H={},R=new Map,X=new Map,K=Promise.resolve(),A=(j,V)=>{if(!R.has(j))R.set(j,new Set);R.get(j).add(V)},_=(j,V)=>R.get(j)?.delete(V),y=(j,...V)=>R.get(j)?.forEach((w)=>w(...V)),u=(j,V)=>{let w=j?Array.isArray(j)?j:[j]:G.keys();return Array.from(w,(C)=>{let x=G.get(C);if(!x)return console.warn(`${D$}: no peer with id ${C}`),null;return V(C,x)}).filter(Boolean)},s=(j)=>{if(!G.has(j))return;G.delete(j),X.delete(j),N.delete(j),delete U[j],delete Z[j],delete D[j],delete H[j],y("peer:leave",j),Q(j)},h=(j)=>new Promise((V,w)=>{let C=setTimeout(()=>{j.removeEventListener(N8,x),w(Error(`${D$}: bufferLow timeout`))},5000);function x(){clearTimeout(C),j.removeEventListener(N8,x),V()}j.addEventListener(N8,x)}),e=(j)=>{if(Y.has(j))return Y.get(j);if(!j)throw T$("action type is required");let V=L$(j);if(V.byteLength>g0)throw T$(`❌ "${j}" exceeds ${g0} bytes. Use a shorter name.`);let w=new Uint8Array(g0).map((b,G$)=>V[G$]||0),C=0,x=new Map([["message",new Set],["progress",new Set]]),m=(b,G$)=>x.get(b)?.add(G$),l=(b,G$)=>x.get(b)?.delete(G$),d=async(b,G$,r,J$)=>{if(r&&typeof r!=="object")throw T$("meta must be object");if(b===void 0)throw T$("data cannot be undefined");let M=b instanceof Blob,L=M||b instanceof ArrayBuffer||b instanceof xJ,E=typeof b!=="string";if(r&&!L)throw T$("meta only allowed with binary");let F=L?new Uint8Array(M?await b.arrayBuffer():b):L$(E?N$(b):b),i=0;if(!L&&F.byteLength>=TJ){let O$=await RQ(F,CompressionStream);if(O$.byteLength<F.byteLength)F=O$,i=1}let c=r?L$(N$(r)):null,o=Math.ceil(F.byteLength/M0)+(r?1:0)||1;if(o>H8)throw T$(`Message too large, exceeds max chunks ${H8}`);let q$=$0(o,(O$,a)=>{let B$=a===o-1,f=r&&a===0,t=f?c:F.subarray(r?(a-1)*M0:a*M0,r?a*M0:(a+1)*M0),Y$=new Uint8Array(N0+t.byteLength);return Y$.set(w),Y$.set([C],u0),Y$.set([B$|f<<1|L<<2|E<<3|i<<4],F0),Y$.set([Math.round((a+1)/o*y0)],V0),Y$.set(t,N0),Y$});return C=C+1&y0,E$(u(G$,async(O$,a)=>{let{channel:B$}=a;for(let f=0;f<o;f++){let t=0;while(B$.bufferedAmount>B$.bufferedAmountLowThreshold){if(t++>AJ)throw T$(`${D$}: send buffer full, max retries reached for peer ${O$}`);try{await h(B$)}catch(Y$){console.warn(Y$.message),await new Promise((x$)=>setTimeout(x$,RJ))}}if(!G.has(O$))break;a.sendData(q$[f]),J$?.(q$[f][V0]/y0,O$,r)}}))};z.set(j,{listeners:x,send:d});let K$={send:d,on:m,off:l};return Y.set(j,K$),K$},$$=(j,V)=>{try{X.set(j,Date.now()),N.delete(j);let w=new Uint8Array(V),C=p$(w.subarray(TQ,u0)).replace(/\x00/g,"");if(!z.has(C))return console.warn(`${D$}: unregistered type (${C})`);if(C===AQ){Z$("",j).catch(()=>{});return}let[x]=w.subarray(u0,F0),[m]=w.subarray(F0,V0),[l]=w.subarray(V0,N0),d=w.subarray(N0),K$=Boolean(m&1),b=Boolean(m&2),G$=Boolean(m&4),r=Boolean(m&8),J$=Boolean(m&16),M=z.get(C),L=(U[j]||={})[C]||={};if(L[x]?.chunks?.length>H8){console.warn(`${D$}: peer ${j} sent too many chunks for nonce ${x}, ignoring.`);return}let E=L[x]||={chunks:[]};if(b)try{E.meta=o$(p$(d))}catch{console.warn(`${D$}: failed to parse meta from peer ${j} for type ${C}`);return}else E.chunks.push(d);if(M.listeners.get("progress").forEach((i)=>{try{i(l/y0,j,E.meta)}catch(c){console.error(c)}}),!K$)return;let F=new Uint8Array(E.chunks.reduce((i,c)=>i+c.byteLength,0));E.chunks.reduce((i,c)=>(F.set(c,i),i+c.byteLength),0),delete L[x],K=K.then(async()=>{let i=J$?await RQ(F,DecompressionStream):F,c;if(G$)c=i;else if(r)try{c=o$(p$(i))}catch{console.warn(`${D$}: failed to parse JSON message data from peer ${j} for type ${C}`);return}else c=p$(i);M.listeners.get("message").forEach((o)=>{try{o(c,j,E.meta)}catch(q$){console.error(q$)}})}).catch((i)=>console.error(`${D$}: dispatch error from peer ${j}:`,i))}catch(w){console.error(`${D$}: error handling data from peer ${j}:`,w)}},Q$=async()=>{try{await k(""),await new Promise((j)=>setTimeout(j,99))}catch(j){console.warn(`${D$}: error sending leave`,j)}for(let[j,V]of G){try{V.destroy()}catch{}G.delete(j)}clearInterval(T),q()},{send:z$}=e(AQ),{send:Z$,on:g}=e(Q0("pong")),{send:H$,on:j$}=e(Q0("signal")),{send:O,on:S}=e(Q0("stream")),{send:W,on:B}=e(Q0("track")),{send:k,on:v}=e(Q0("leave"));$((j,V)=>{let w=G.get(V);if(w===j)return;if(w){let C=()=>{};w.setHandlers({data:C,stream:C,track:C,signal:C,close:C,error:C})}G.set(V,j),X.set(V,Date.now()),N.delete(V),j.setHandlers({data:(C)=>$$(V,C),stream:(C)=>{y("stream:add",C,V,D[V]),delete D[V]},track:(C,x)=>{y("track:add",C,x,V,H[V]),delete H[V]},signal:(C)=>H$(C,V),close:()=>s(V),error:(C)=>{console.error(`${D$}: peer error for ${V}`,C),s(V)}}),y("peer:join",V,J?.(V))}),g("message",(j,V)=>{Z[V]?.(),delete Z[V]}),j$("message",(j,V)=>G.get(V)?.signal(j)),S("message",(j,V)=>D[V]=j),B("message",(j,V)=>H[V]=j),v("message",(j,V)=>s(V));let P=1e4,I=20000,N=new Map,T=setInterval(()=>{let j=Date.now();for(let[V,w]of G){if(j-(X.get(V)??j)<=P)continue;let x=N.get(V);if(x===void 0)N.set(V,j),z$("",V).catch(()=>{});else if(j-x>I){N.delete(V);try{w.destroy()}catch{}s(V)}}},5000);if(VQ)addEventListener("beforeunload",Q$);return{on:A,off:_,channel:e,leave:Q$,ping:async(j)=>{if(!j)throw T$("ping() requires target peer ID");let V=Date.now();return z$("",j),await new Promise((w)=>Z[j]=w),Date.now()-V},getPeers:()=>f0(Array.from(G,([j,V])=>[j,V.connection])),addStream:(j,V,w)=>u(V,async(C,x)=>{if(w)await O(w,C);x.addStream(j)}),removeStream:(j,V)=>u(V,(w,C)=>C.removeStream(j)),addTrack:(j,V,w,C)=>u(w,async(x,m)=>{if(C)await W(C,x);m.addTrack(j,V)}),removeTrack:(j,V)=>u(V,(w,C)=>C.removeTrack(j)),replaceTrack:(j,V,w,C)=>u(w,async(x,m)=>{if(C)await W(C,x);m.replaceTrack(j,V)})}};var LJ=5,wJ=10,CJ=2500,m0=57333,wQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,Y,U;return(Z,D,H)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw T$(!Z?"config required":!D?"roomId required":"appId missing");let X=HQ;if(!z){let N=$(Z);U=$0(LJ,()=>{try{return V8(!0,Z)}catch{return null}}).filter(Boolean),Y=Array.isArray(N)?N:[N];let T=setInterval(()=>{U=U.filter((j)=>{let V=Date.now()-j.created<m0;if(!V)j.destroy();return V})},m0);G.offerCleanupTimer||=T,z=!0}let K={},A={},_=new Map,y=new Map,u=new Map,s={},h=D0(D$,R,D),e=W0(h),$$=W0(D0(h,p)),Q$=WQ(Z.password||"",R,D),z$=(N)=>async(T)=>({type:T.type,sdp:await N(Q$,T.sdp)}),Z$=z$(MQ),g=z$(DQ),H$=(N)=>{return setTimeout(()=>{if(!N.isDead&&!Object.values(A).includes(N))N.destroy()},m0),N},j$=(N)=>{try{return H$(V8(N,Z))}catch{return null}},O=(N,T)=>{if(A[T]===N)return;N.connectedAt=Date.now(),A[T]?.destroy(),A[T]=N,X(N,T),K[T]?.forEach((j)=>j!==N&&j.destroy()),delete K[T]},S=(N,T)=>{if(A[T]===N)delete A[T]},W=(N)=>async(T,j,V)=>{let[w,C]=await E$([e,$$]);if(T!==w&&T!==C)return;let{peerId:x,offer:m,answer:l,type:d,bye:K$}=typeof j==="string"?o$(j):j;if(K$){if(x&&x!==p)y.delete(x),u.set(x,Date.now()),delete s[x];return}if(x&&x!==p)y.set(x,Date.now()),u.delete(x);if(d&&x)s[x]=d;if(x===p)return;if(A[x]){let b=A[x].channel?.readyState==="open";if(!m||b||Date.now()-A[x].connectedAt<2000)return;A[x].destroy(),delete A[x]}if(Z.admit&&!Z.admit(x))return;if(m){if(K[x]?.[N]&&p>x)return;let b=j$(!1);if(!b)return;b.setHandlers({connect:()=>O(b,x),close:()=>S(b,x)});try{let G$=await Z$(m);if(b.isDead)return;let[r,J$]=await E$([W0(D0(h,x)),b.signal(G$).then(g)]);V(r,N$({peerId:p,answer:J$,...Z.type&&{type:Z.type}}))}catch{H?.({error:"decryption failed (offer)",appId:R,peerId:x,roomId:D})}}else if(l){let b=K[x]?.[N];if(!b||b.isDead)return;b.setHandlers({connect:()=>O(b,x),close:()=>S(b,x)});try{b.signal(await Z$(l))}catch{H?.({error:"decryption failed (answer)",appId:R,peerId:x,roomId:D})}}else{let b=K[x]||=[];if(b.forEach((M,L)=>{if(M&&(M.isDead||Date.now()-(M.dialedAt??M.created)>m0)){if(M.isDead)_.set(x,Date.now()+30000);M.destroy(),delete b[L]}}),b[N]||b.filter(Boolean).length>=2||_.get(x)>Date.now())return;if(Object.values(K).reduce((M,L)=>M+L.filter((E)=>E&&!E.isDead).length,0)>=wJ)return;let r=U.pop(),J$=r?H$(r):j$(!0);if(!J$){_.set(x,Date.now()+30000);return}J$.dialedAt=Date.now(),b[N]=J$;try{let[M,{offer:L}]=await E$([W0(D0(h,x)),J$.offerPromise.then(g).then((E)=>({offer:E}))]);J$.setHandlers({connect:()=>O(J$,x),close:()=>S(J$,x)}),V(M,N$({peerId:p,offer:L,peer:J$,...Z.type&&{type:Z.type}}))}catch{if(b[N]===J$)delete b[N];J$.destroy()}}},B=[],k=[],v=[],P=()=>v.forEach(({relay:N,rootTopic:T})=>J?.(N,T));Y.forEach(async(N,T)=>{let j=await N;if(!j)return;let[V,w]=await E$([e,$$]);k[T]=Q(j,V,w,W(T)),v.push({relay:j,rootTopic:V});let C=async()=>{let x=await q(j,V,w);B[T]=setTimeout(C,typeof x==="number"?x:CJ)};C()}),G[R]||={};let I=LQ((N)=>X=N,(N)=>delete A[N],()=>I.onCleanup?.(),(N)=>s[N]);if(typeof window<"u")window.addEventListener("pagehide",P);return I.onCleanup=()=>{if(P(),typeof window<"u")window.removeEventListener("pagehide",P);if(delete G[R][D],B.forEach(clearTimeout),k.forEach((N)=>N?.()),Object.keys(G).length===0)clearInterval(G.offerCleanupTimer),delete G.offerCleanupTimer},I._census=()=>{for(let T of Object.keys(A))y.set(T,Date.now());let N=Date.now()-120000;for(let[T,j]of y)if(j<N)y.delete(T);return[...y.keys()]},I._gone=()=>{let N=Date.now()-60000;for(let[T,j]of u)if(j<N)u.delete(T);return[...u.keys()]},G[R][D]=I}};var CQ=3333,kJ=30000,H0={},kQ={},SQ=($,Q)=>{let q={},J=null;q.reopenHandlers=new Set;let G=()=>{if(J)clearTimeout(J),J=null;if(q.socket)q.socket.onclose=null,q.socket.close();let z=new WebSocket($);z.onclose=()=>{H0[$]??=CQ,J=setTimeout(G,H0[$]),H0[$]=Math.min(H0[$]*2,kJ)},z.onmessage=(Y)=>Q(Y.data),q.socket=z,q.url=z.url,q.ready=new Promise((Y)=>{z.onopen=()=>{H0[$]=CQ,Y(q),q.reopenHandlers.forEach((U)=>U())}}),q.send=(Y)=>{if(z.readyState===1)z.send(Y)}};return q.forceReconnect=G,G(),kQ[$]=q,q};if(typeof window<"u"){let $=(Q)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(kQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(Q||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var PQ=($)=>()=>f0(NQ($).map(([Q,q])=>[Q,q.socket])),IQ=($,Q,q,J)=>($.relayUrls??(J?OQ(Q,b0($.appId)):Q)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var EQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var J0={},PJ=10,bQ="x",fQ="EVENT",IJ=/pow:\s*(\d+)\s*bits needed\.?/i,h0=new Set,yQ=v0.utils.randomSecretKey(),EJ=_0(v0.getPublicKey(yQ)),B8={},O0={},vJ={},gQ=()=>Math.floor(Date.now()/1000),uQ=($)=>vJ[$]??=b0($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),_J=($,Q)=>{let[q,J,G,z]=o$(Q);if(q===fQ)return O0[J]?.(B8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(IJ)?.[1]??0)>0){let U=B0($);h0.add(U),J0[U]?.close?.(),delete J0[U]}}},bJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=SQ(Q,(J)=>_J(Q,J));return J0[Q]=q},O8=async($,Q)=>{let q={kind:uQ($),content:Q,pubkey:EJ,created_at:gQ(),tags:[[bQ,$]]},J=L$(N$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",J)),z=v0.sign(G,yQ);return N$([fQ,{...q,id:_0(G),sig:_0(z)}])},vQ=($,Q)=>{return B8[$]=Q,N$(["REQ",$,{kinds:[uQ(Q)],since:gQ(),["#"+bQ]:[Q]}])},_Q=($)=>{return delete B8[$],N$(["CLOSE",$])},c0=wQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??EQ;return IQ($,q,PJ,!1).map(bJ).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,Q,q,J)=>{let G=e$(64),z=e$(64);O0[G]=O0[z]=(U,Z)=>J(U,Z,async(D,H)=>{if(h0.has(B0($.url)))return;$.send(await O8(D,H))});let Y=()=>{$.send(vQ(G,Q)),$.send(vQ(z,q))};return Y(),$.reopenHandlers.add(Y),()=>{$.reopenHandlers.delete(Y),$.send(_Q(G)),$.send(_Q(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await O8(Q,N$({peerId:p})))},bye:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await O8(Q,N$({peerId:p,bye:1})))}}),FQ=PQ(J0);var fJ={cellSize:10},yJ=5000,gJ=3000,uJ=2000,FJ=2000,mJ=1e4,hJ=30000,cJ=5000,lJ=30000,d0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},x8=($,Q)=>{let q=d0($);if(q==null)return[];let J=[];for(let G=1;G<Q;G*=2){if(q-G>=0)J.push(`cell-${q-G}`);if(q+G<Q)J.push(`cell-${q+G}`)}return J},l0=($)=>`c${(d0($)||0).toString(36)}`,dJ=10,pJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:dJ;return Math.max(1,Math.ceil($/q))},mQ=($)=>{let Q=0;for(let q=0;q<$.length;q++)Q=Math.imul(Q^$.charCodeAt(q),2654435761);return Q>>>0},g$=($,Q)=>{let q=0,J=-1;for(let G=0;G<Q;G++){let z=mQ(`${$}:${G}`);if(z>J)J=z,q=G}return q};function oJ($,Q={},q={}){let J={...fJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},Y={cellId:null},U=0,Z=0,D="",H=0,R=0,X=0,K=null,A=null,_=null,y=new Map,u=new Set,s=new Map,h=new Set,e=0,$$=new Set,Q$=new Map,z$=()=>Math.min(150,Math.ceil(Math.log2(z.C+1))*2+3),Z$=(M)=>x8(M,z.C),g=$.on?.bind($),H$=$.off?.bind($);if(g)$.on=(M,L)=>String(M).startsWith("mesh:")?S(M,L):g(M,L);if(H$)$.off=(M,L)=>String(M).startsWith("mesh:")?s.get(M)?.delete(L):H$(M,L);let j$=(M)=>(u.add(M),()=>u.delete(M)),O=(M,L)=>{for(let E of u)try{E(M,L)}catch(F){log.error("\uD83D\uDD78️ [Cells] Error in deliver handler:",F)}},S=(M,L)=>{if(!s.has(M))s.set(M,new Set);return s.get(M).add(L),()=>s.get(M)?.delete(L)},W=(M,...L)=>{let E=s.get(M);if(E)for(let F of E)try{F(...L)}catch{}},B=(M)=>{try{return typeof M==="string"?JSON.parse(M):M}catch{return null}},k=()=>`${p}:${Date.now().toString(36)}:${(e++&65535).toString(36)}`,v=()=>{if(h.size>yJ)h.delete(h.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),I=(M,L,E)=>L.filter((F)=>g$(F,E)===M),N=(M,L,E)=>{if(M==null)return null;let F=(o)=>mQ(`${o}@${M}`),i=null,c=-1;for(let o of I(M,L,E)){let q$=F(o);if(q$>c)c=q$,i=o}return i},T=(M)=>{let L=z.audience?.get(M);if(!L)return[];return Object.keys($.getPeers?.()||{}).filter((E)=>L.has(E))},j=(M,L)=>{if(M!==A&&!(z.isBridge&&z.bridges.some((f)=>l0(f)===M)))return;let E=B(L);if(!E?.id||!E?.t)return;if(h.has(E.id))return;h.add(E.id),v();let{t:F,id:i,ttl:c,data:o,origin:q$,originCell:O$}=E,a=z.cellId;if(F==="ping"&&o?.pingId&&o.target===p&&q$!==p){let f={t:"pong",id:k(),ttl:z$(),data:{pingId:o.pingId,receivedAt:Date.now()},origin:p,originCell:a},t=$.getPeers?.()?.[q$]?[q$]:T(a);K?.send(JSON.stringify(f),t)}if(F==="pong"&&o?.pingId){let f=Q$.get(o.pingId);if(f)clearTimeout(f.timeout),f.resolve(Date.now()-f.start),Q$.delete(o.pingId)}if(F==="msg"&&q$!==p)O(o,q$);if(!z.isBridge)return;if((c??0)<=0)return;let B$=(f,t,Y$=null)=>{if(!f||!t.length)return;let x$={t:F,id:i,ttl:Y$??(c??z$())-1,data:o,origin:q$||p,originCell:O$||a};f.send(JSON.stringify(x$),t)};if(M===A){for(let f of Z$(a))B$(V(f),T(f));return}B$(K,T(a));for(let f of Z$(a))if(l0(f)!==M)B$(V(f),T(f))},V=(M)=>{let L=l0(M),E=$.channel(L);if(!$$.has(L))$$.add(L),E.on("message",(F)=>j(L,F));return E},w=()=>{if(!z.cellId)return;if(A=l0(z.cellId),K=$.channel(A),!$$.has(A))$$.add(A),K.on("message",(M)=>j(A,M));if(z.isBridge)for(let M of Z$(z.cellId))V(M)},C=(M,L)=>{if(!M.cellId||!M.set.has(L))return!1;let E=`cell-${g$(L,M.C)}`;return E===M.cellId||M.bridges.includes(E)||x8(E,M.C).includes(M.cellId)&&N(g$(L,M.C),M.roster,M.C)===L},x=(M)=>C(z,M)||Date.now()<U&&C(Y,M),m=()=>{let M=$.getPeers?.()||{};for(let L of Object.keys(M))if(!x(L))M[L].close?.()};q.admit=x;let l=()=>({epoch:z.epoch,cellId:z.cellId,isBridge:z.isBridge,bridges:z.bridges,roster:[...z.roster],cellSize:G,dynamicTTL:z$(),totalCells:z.C}),d=()=>{R=Date.now();for(let[M,L]of y){if(M===p)continue;W("mesh:peer-state",{id:M,cell:L.cell,bridges:L.bridges,timestamp:R})}},K$=(M)=>{let L=pJ(M.length,J);G=Math.ceil(M.length/L);let E=`cell-${g$(p,L)}`,F=new Map,i=new Set,c=new Map,o=(f)=>c.get(f)??c.set(f,new Set).get(f);for(let f of M)o(`cell-${g$(f,L)}`).add(f);let q$=new Map,O$=(f)=>q$.has(f)?q$.get(f):q$.set(f,N(f,M,L)).get(f);for(let f of new Set(M.map((t)=>g$(t,L)))){let t=`cell-${f}`;for(let Y$ of x8(t,L)){if(d0(Y$)<f)continue;for(let x$ of[O$(f),O$(d0(Y$))]){if(!x$)continue;let A8=`cell-${g$(x$,L)}`===t?Y$:t,p0=F.get(x$)??[];if(!p0.includes(A8))p0.push(A8);if(F.set(x$,p0),o(t).add(x$),o(Y$).add(x$),t===E||Y$===E)i.add(x$)}}}let a=F.get(p)??[],B$=z.cellId!==E||String(z.bridges)!==String(a);Y=z,z={epoch:z.epoch+1,roster:M,set:new Set(M),key:M.join("|"),C:L,cellId:E,isBridge:a.length>0,bridges:a,edgeBridges:[...i],audience:c},X=Date.now(),y.clear();for(let f of M){let t=F.get(f)??[];y.set(f,{cell:`cell-${g$(f,L)}`,isBridge:t.length>0,bridges:t})}if(U=Date.now()+cJ,B$)w();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:a,C:L,roster:M.length}),d(),W("mesh:state",l())},b=()=>{let M=P(),L=M.join("|");if(L===z.key)Z=0;else{let E=Date.now();if(Z||=E,L!==D)D=L,H=E;if(M.some((c)=>!z.set.has(c))||z.edgeBridges.some((c)=>!M.includes(c))||($._gone?.()??[]).some((c)=>z.set.has(c))?E-H>=FJ||E-Z>=mJ:E-Z>=hJ)Z=0,K$(M)}if(U&&Date.now()>=U)U=0,m()},G$=()=>{if(_)return;_=setInterval(()=>{if(b(),Date.now()-R>=lJ)d()},uJ)},r=()=>{if(_)clearInterval(_),_=null},J$=(M)=>{return new Promise((L,E)=>{let F=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=Date.now(),c=setTimeout(()=>{Q$.delete(F),E(Error("Ping timeout"))},gJ);Q$.set(F,{start:i,resolve:L,reject:E,timeout:c,peerId:M});let o={t:"ping",id:k(),ttl:z$(),data:{pingId:F,target:M},origin:p,originCell:z.cellId};K?.send(JSON.stringify(o),T(z.cellId))})};return $.on?.("peer:join",()=>b()),$.on?.("peer:leave",()=>b()),K$(P()),G$(),{send:(M)=>{let L={t:"msg",id:k(),ttl:z$(),data:M,origin:p,originCell:z.cellId},E=JSON.stringify(L);K.send(E,T(z.cellId)),j(A,E)},on:(M,L)=>M==="message"?j$(L):void 0,ping:J$,getState:()=>({...l(),knownCells:new Set([...y.values()].map((M)=>M.cell)).size}),getPeerInfo:()=>new Map(y),getStableRoster:()=>[...z.roster],getKnownCells:()=>{let M=new Map;for(let[L,{cell:E}]of y)if(!M.has(E))M.set(E,{lastSeen:X,peerId:L});return M},getCellSize:()=>G,destroy:()=>{r(),Q$.forEach((M)=>clearTimeout(M.timeout)),Q$.clear()}}}function hQ($,Q,q){let J={},G=c0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},Y=oJ(G,z,J),U=new Map;return{on:(Z,D)=>G.on(Z,D),off:(Z,D)=>G.off?.(Z,D),channel:(Z)=>{if(U.has(Z))return U.get(Z);let D=G.channel(Z),H={send:(R,X)=>{if(X){let K=[].concat(X),A=G.getPeers?.()||{};if(K.every((_)=>A[_]))return D.send(R,X)}Y.send({_ch:Z,_d:R,_t:X})},on:(R,X)=>{if(R==="message")Y.on("message",(K,A)=>{if(K?._ch!==Z)return;if(K._t&&![].concat(K._t).includes(p))return;X(K._d,A)}),D.on(R,X);else D.on(R,X)},off:(R,X)=>D.off?.(R,X),_original:D};return U.set(Z,H),H},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:Y,_room:G,getState:()=>Y.getState(),getPeerInfo:()=>Y.getPeerInfo(),ping:(Z)=>Y.ping(Z),leave:()=>{Y.destroy(),U.clear(),G.leave()},destroy:()=>{Y.destroy(),U.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?hQ($,Q,q):c0($,Q,q);export{p as selfId,Uq as join,FQ as getRelaySockets}; | ||
| var u$=typeof globalThis==="object"&&"crypto"in globalThis?globalThis.crypto:void 0;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function F$($){return $ instanceof Uint8Array||ArrayBuffer.isView($)&&$.constructor.name==="Uint8Array"}function q0($){if(!Number.isSafeInteger($)||$<0)throw Error("positive integer expected, got "+$)}function x$($,...Q){if(!F$($))throw Error("Uint8Array expected");if(Q.length>0&&!Q.includes($.length))throw Error("Uint8Array expected of length "+Q+", got length="+$.length)}function x0($){if(typeof $!=="function"||typeof $.create!=="function")throw Error("Hash should be wrapped by utils.createHasher");q0($.outputLen),q0($.blockLen)}function i$($,Q=!0){if($.destroyed)throw Error("Hash instance has been destroyed");if(Q&&$.finished)throw Error("Hash#digest() has already been called")}function w8($,Q){x$($);let q=Q.outputLen;if($.length<q)throw Error("digestInto() expects output buffer of length at least "+q)}function m$(...$){for(let Q=0;Q<$.length;Q++)$[Q].fill(0)}function A0($){return new DataView($.buffer,$.byteOffset,$.byteLength)}function A$($,Q){return $<<32-Q|$>>>Q}var C8=(()=>typeof Uint8Array.from([]).toHex==="function"&&typeof Uint8Array.fromHex==="function")(),lQ=Array.from({length:256},($,Q)=>Q.toString(16).padStart(2,"0"));function C$($){if(x$($),C8)return $.toHex();let Q="";for(let q=0;q<$.length;q++)Q+=lQ[$[q]];return Q}var w$={_0:48,_9:57,A:65,F:70,a:97,f:102};function L8($){if($>=w$._0&&$<=w$._9)return $-w$._0;if($>=w$.A&&$<=w$.F)return $-(w$.A-10);if($>=w$.a&&$<=w$.f)return $-(w$.a-10);return}function h$($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);if(C8)return Uint8Array.fromHex($);let Q=$.length,q=Q/2;if(Q%2)throw Error("hex string expected, got unpadded hex of length "+Q);let J=new Uint8Array(q);for(let G=0,z=0;G<q;G++,z+=2){let Y=L8($.charCodeAt(z)),K=L8($.charCodeAt(z+1));if(Y===void 0||K===void 0){let Z=$[z]+$[z+1];throw Error('hex string expected, got non-hex character "'+Z+'" at index '+z)}J[G]=Y*16+K}return J}function R0($){if(typeof $!=="string")throw Error("string expected");return new Uint8Array(new TextEncoder().encode($))}function G0($){if(typeof $==="string")$=R0($);return x$($),$}function D$(...$){let Q=0;for(let J=0;J<$.length;J++){let G=$[J];x$(G),Q+=G.length}let q=new Uint8Array(Q);for(let J=0,G=0;J<$.length;J++){let z=$[J];q.set(z,G),G+=z.length}return q}class z0{}function k8($){let Q=(J)=>$().update(G0(J)).digest(),q=$();return Q.outputLen=q.outputLen,Q.blockLen=q.blockLen,Q.create=()=>$(),Q}function c$($=32){if(u$&&typeof u$.getRandomValues==="function")return u$.getRandomValues(new Uint8Array($));if(u$&&typeof u$.randomBytes==="function")return Uint8Array.from(u$.randomBytes($));throw Error("crypto.getRandomValues must be defined")}function dQ($,Q,q,J){if(typeof $.setBigUint64==="function")return $.setBigUint64(Q,q,J);let G=BigInt(32),z=BigInt(4294967295),Y=Number(q>>G&z),K=Number(q&z),Z=J?4:0,D=J?0:4;$.setUint32(Q+Z,Y,J),$.setUint32(Q+D,K,J)}function S8($,Q,q){return $&Q^~$&q}function P8($,Q,q){return $&Q^$&q^Q&q}class o0 extends z0{constructor($,Q,q,J){super();this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=$,this.outputLen=Q,this.padOffset=q,this.isLE=J,this.buffer=new Uint8Array($),this.view=A0(this.buffer)}update($){i$(this),$=G0($),x$($);let{view:Q,buffer:q,blockLen:J}=this,G=$.length;for(let z=0;z<G;){let Y=Math.min(J-this.pos,G-z);if(Y===J){let K=A0($);for(;J<=G-z;z+=J)this.process(K,z);continue}if(q.set($.subarray(z,z+Y),this.pos),this.pos+=Y,z+=Y,this.pos===J)this.process(Q,0),this.pos=0}return this.length+=$.length,this.roundClean(),this}digestInto($){i$(this),w8($,this),this.finished=!0;let{buffer:Q,view:q,blockLen:J,isLE:G}=this,{pos:z}=this;if(Q[z++]=128,m$(this.buffer.subarray(z)),this.padOffset>J-z)this.process(q,0),z=0;for(let N=z;N<J;N++)Q[N]=0;dQ(q,J-8,BigInt(this.length*8),G),this.process(q,0);let Y=A0($),K=this.outputLen;if(K%4)throw Error("_sha2: outputLen should be aligned to 32bit");let Z=K/4,D=this.get();if(Z>D.length)throw Error("_sha2: outputLen bigger than state");for(let N=0;N<Z;N++)Y.setUint32(4*N,D[N],G)}digest(){let{buffer:$,outputLen:Q}=this;this.digestInto($);let q=$.slice(0,Q);return this.destroy(),q}_cloneInto($){$||($=new this.constructor),$.set(...this.get());let{blockLen:Q,buffer:q,length:J,finished:G,destroyed:z,pos:Y}=this;if($.destroyed=z,$.finished=G,$.length=J,$.pos=Y,J%Q)$.buffer.set(q);return $}clone(){return this._cloneInto()}}var k$=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var pQ=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),v$=new Uint32Array(64);class I8 extends o0{constructor($=32){super(64,$,8,!1);this.A=k$[0]|0,this.B=k$[1]|0,this.C=k$[2]|0,this.D=k$[3]|0,this.E=k$[4]|0,this.F=k$[5]|0,this.G=k$[6]|0,this.H=k$[7]|0}get(){let{A:$,B:Q,C:q,D:J,E:G,F:z,G:Y,H:K}=this;return[$,Q,q,J,G,z,Y,K]}set($,Q,q,J,G,z,Y,K){this.A=$|0,this.B=Q|0,this.C=q|0,this.D=J|0,this.E=G|0,this.F=z|0,this.G=Y|0,this.H=K|0}process($,Q){for(let N=0;N<16;N++,Q+=4)v$[N]=$.getUint32(Q,!1);for(let N=16;N<64;N++){let R=v$[N-15],X=v$[N-2],U=A$(R,7)^A$(R,18)^R>>>3,A=A$(X,17)^A$(X,19)^X>>>10;v$[N]=A+v$[N-7]+U+v$[N-16]|0}let{A:q,B:J,C:G,D:z,E:Y,F:K,G:Z,H:D}=this;for(let N=0;N<64;N++){let R=A$(Y,6)^A$(Y,11)^A$(Y,25),X=D+R+S8(Y,K,Z)+pQ[N]+v$[N]|0,A=(A$(q,2)^A$(q,13)^A$(q,22))+P8(q,J,G)|0;D=Z,Z=K,K=Y,Y=z+X|0,z=G,G=J,J=q,q=X+A|0}q=q+this.A|0,J=J+this.B|0,G=G+this.C|0,z=z+this.D|0,Y=Y+this.E|0,K=K+this.F|0,Z=Z+this.G|0,D=D+this.H|0,this.set(q,J,G,z,Y,K,Z,D)}roundClean(){m$(v$)}destroy(){this.set(0,0,0,0,0,0,0,0),m$(this.buffer)}}var T0=k8(()=>new I8);class i0 extends z0{constructor($,Q){super();this.finished=!1,this.destroyed=!1,x0($);let q=G0(Q);if(this.iHash=$.create(),typeof this.iHash.update!=="function")throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let J=this.blockLen,G=new Uint8Array(J);G.set(q.length>J?$.create().update(q).digest():q);for(let z=0;z<G.length;z++)G[z]^=54;this.iHash.update(G),this.oHash=$.create();for(let z=0;z<G.length;z++)G[z]^=106;this.oHash.update(G),m$(G)}update($){return i$(this),this.iHash.update($),this}digestInto($){i$(this),x$($,this.outputLen),this.finished=!0,this.iHash.digestInto($),this.oHash.update($),this.oHash.digestInto($),this.destroy()}digest(){let $=new Uint8Array(this.oHash.outputLen);return this.digestInto($),$}_cloneInto($){$||($=Object.create(Object.getPrototypeOf(this),{}));let{oHash:Q,iHash:q,finished:J,destroyed:G,blockLen:z,outputLen:Y}=this;return $=$,$.finished=J,$.destroyed=G,$.blockLen=z,$.outputLen=Y,$.oHash=Q._cloneInto($.oHash),$.iHash=q._cloneInto($.iHash),$}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}}var a0=($,Q,q)=>new i0($,Q).update(q).digest();a0.create=($,Q)=>new i0($,Q);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s0=BigInt(0),n0=BigInt(1);function Y0($,Q=""){if(typeof $!=="boolean"){let q=Q&&`"${Q}"`;throw Error(q+"expected boolean, got type="+typeof $)}return $}function _$($,Q,q=""){let J=F$($),G=$?.length,z=Q!==void 0;if(!J||z&&G!==Q){let Y=q&&`"${q}" `,K=z?` of length ${Q}`:"",Z=J?`length=${G}`:`type=${typeof $}`;throw Error(Y+"expected Uint8Array"+K+", got "+Z)}return $}function X0($){let Q=$.toString(16);return Q.length&1?"0"+Q:Q}function E8($){if(typeof $!=="string")throw Error("hex string expected, got "+typeof $);return $===""?s0:BigInt("0x"+$)}function S$($){return E8(C$($))}function t0($){return x$($),E8(C$(Uint8Array.from($).reverse()))}function a$($,Q){return h$($.toString(16).padStart(Q*2,"0"))}function e0($,Q){return a$($,Q).reverse()}function n($,Q,q){let J;if(typeof Q==="string")try{J=h$(Q)}catch(z){throw Error($+" must be hex string or Uint8Array, cause: "+z)}else if(F$(Q))J=Uint8Array.from(Q);else throw Error($+" must be hex string or Uint8Array");let G=J.length;if(typeof q==="number"&&G!==q)throw Error($+" of length "+q+" expected, got "+G);return J}var r0=($)=>typeof $==="bigint"&&s0<=$;function Z0($,Q,q){return r0($)&&r0(Q)&&r0(q)&&Q<=$&&$<q}function v8($,Q,q,J){if(!Z0(Q,q,J))throw Error("expected valid "+$+": "+q+" <= n < "+J+", got "+Q)}function L0($){let Q;for(Q=0;$>s0;$>>=n0,Q+=1);return Q}var b$=($)=>(n0<<BigInt($))-n0;function _8($,Q,q){if(typeof $!=="number"||$<2)throw Error("hashLen must be a number");if(typeof Q!=="number"||Q<2)throw Error("qByteLen must be a number");if(typeof q!=="function")throw Error("hmacFn must be a function");let J=(U)=>new Uint8Array(U),G=(U)=>Uint8Array.of(U),z=J($),Y=J($),K=0,Z=()=>{z.fill(1),Y.fill(0),K=0},D=(...U)=>q(Y,z,...U),N=(U=J(0))=>{if(Y=D(G(0),U),z=D(),U.length===0)return;Y=D(G(1),U),z=D()},R=()=>{if(K++>=1000)throw Error("drbg: tried 1000 values");let U=0,A=[];while(U<Q){z=D();let C=z.slice();A.push(C),U+=z.length}return D$(...A)};return(U,A)=>{Z(),N(U);let C=void 0;while(!(C=A(R())))N();return Z(),C}}function K0($,Q,q={}){if(!$||typeof $!=="object")throw Error("expected valid options object");function J(G,z,Y){let K=$[G];if(Y&&K===void 0)return;let Z=typeof K;if(Z!==z||K===null)throw Error(`param "${G}" is invalid: expected ${z}, got ${Z}`)}Object.entries(Q).forEach(([G,z])=>J(G,z,!1)),Object.entries(q).forEach(([G,z])=>J(G,z,!0))}function $8($){let Q=new WeakMap;return(q,...J)=>{let G=Q.get(q);if(G!==void 0)return G;let z=$(q,...J);return Q.set(q,z),z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var j$=BigInt(0),Z$=BigInt(1),l$=BigInt(2),y8=BigInt(3),g8=BigInt(4),u8=BigInt(5),oQ=BigInt(7),F8=BigInt(8),iQ=BigInt(9),m8=BigInt(16);function V$($,Q){let q=$%Q;return q>=j$?q:Q+q}function N$($,Q,q){let J=$;while(Q-- >j$)J*=J,J%=q;return J}function b8($,Q){if($===j$)throw Error("invert: expected non-zero number");if(Q<=j$)throw Error("invert: expected positive modulus, got "+Q);let q=V$($,Q),J=Q,G=j$,z=Z$,Y=Z$,K=j$;while(q!==j$){let D=J/q,N=J%q,R=G-Y*D,X=z-K*D;J=q,q=N,G=Y,z=K,Y=R,K=X}if(J!==Z$)throw Error("invert: does not exist");return V$(G,Q)}function Q8($,Q,q){if(!$.eql($.sqr(Q),q))throw Error("Cannot find square root")}function h8($,Q){let q=($.ORDER+Z$)/g8,J=$.pow(Q,q);return Q8($,J,Q),J}function aQ($,Q){let q=($.ORDER-u8)/F8,J=$.mul(Q,l$),G=$.pow(J,q),z=$.mul(Q,G),Y=$.mul($.mul(z,l$),G),K=$.mul(z,$.sub(Y,$.ONE));return Q8($,K,Q),K}function rQ($){let Q=f$($),q=c8($),J=q(Q,Q.neg(Q.ONE)),G=q(Q,J),z=q(Q,Q.neg(J)),Y=($+oQ)/m8;return(K,Z)=>{let D=K.pow(Z,Y),N=K.mul(D,J),R=K.mul(D,G),X=K.mul(D,z),U=K.eql(K.sqr(N),Z),A=K.eql(K.sqr(R),Z);D=K.cmov(D,N,U),N=K.cmov(X,R,A);let C=K.eql(K.sqr(N),Z),u=K.cmov(D,N,C);return Q8(K,u,Z),u}}function c8($){if($<y8)throw Error("sqrt is not defined for small field");let Q=$-Z$,q=0;while(Q%l$===j$)Q/=l$,q++;let J=l$,G=f$($);while(f8(G,J)===1)if(J++>1000)throw Error("Cannot find square root: probably non-prime P");if(q===1)return h8;let z=G.pow(J,Q),Y=(Q+Z$)/l$;return function(Z,D){if(Z.is0(D))return D;if(f8(Z,D)!==1)throw Error("Cannot find square root");let N=q,R=Z.mul(Z.ONE,z),X=Z.pow(D,Q),U=Z.pow(D,Y);while(!Z.eql(X,Z.ONE)){if(Z.is0(X))return Z.ZERO;let A=1,C=Z.sqr(X);while(!Z.eql(C,Z.ONE))if(A++,C=Z.sqr(C),A===N)throw Error("Cannot find square root");let u=Z$<<BigInt(N-A-1),h=Z.pow(R,u);N=A,R=Z.sqr(h),X=Z.mul(X,R),U=Z.mul(U,h)}return U}}function nQ($){if($%g8===y8)return h8;if($%F8===u8)return aQ;if($%m8===iQ)return rQ($);return c8($)}var sQ=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function J8($){let Q={ORDER:"bigint",MASK:"bigint",BYTES:"number",BITS:"number"},q=sQ.reduce((J,G)=>{return J[G]="function",J},Q);return K0($,q),$}function tQ($,Q,q){if(q<j$)throw Error("invalid exponent, negatives unsupported");if(q===j$)return $.ONE;if(q===Z$)return Q;let J=$.ONE,G=Q;while(q>j$){if(q&Z$)J=$.mul(J,G);G=$.sqr(G),q>>=Z$}return J}function w0($,Q,q=!1){let J=Array(Q.length).fill(q?$.ZERO:void 0),G=Q.reduce((Y,K,Z)=>{if($.is0(K))return Y;return J[Z]=Y,$.mul(Y,K)},$.ONE),z=$.inv(G);return Q.reduceRight((Y,K,Z)=>{if($.is0(K))return Y;return J[Z]=$.mul(Y,J[Z]),$.mul(Y,K)},z),J}function f8($,Q){let q=($.ORDER-Z$)/l$,J=$.pow(Q,q),G=$.eql(J,$.ONE),z=$.eql(J,$.ZERO),Y=$.eql(J,$.neg($.ONE));if(!G&&!z&&!Y)throw Error("invalid Legendre symbol result");return G?1:z?0:-1}function C0($,Q){if(Q!==void 0)q0(Q);let q=Q!==void 0?Q:$.toString(2).length,J=Math.ceil(q/8);return{nBitLength:q,nByteLength:J}}function f$($,Q,q=!1,J={}){if($<=j$)throw Error("invalid field: expected ORDER > 0, got "+$);let G=void 0,z=void 0,Y=!1,K=void 0;if(typeof Q==="object"&&Q!=null){if(J.sqrt||q)throw Error("cannot specify opts in two arguments");let X=Q;if(X.BITS)G=X.BITS;if(X.sqrt)z=X.sqrt;if(typeof X.isLE==="boolean")q=X.isLE;if(typeof X.modFromBytes==="boolean")Y=X.modFromBytes;K=X.allowedLengths}else{if(typeof Q==="number")G=Q;if(J.sqrt)z=J.sqrt}let{nBitLength:Z,nByteLength:D}=C0($,G);if(D>2048)throw Error("invalid field: expected ORDER of <= 2048 bytes");let N,R=Object.freeze({ORDER:$,isLE:q,BITS:Z,BYTES:D,MASK:b$(Z),ZERO:j$,ONE:Z$,allowedLengths:K,create:(X)=>V$(X,$),isValid:(X)=>{if(typeof X!=="bigint")throw Error("invalid field element: expected bigint, got "+typeof X);return j$<=X&&X<$},is0:(X)=>X===j$,isValidNot0:(X)=>!R.is0(X)&&R.isValid(X),isOdd:(X)=>(X&Z$)===Z$,neg:(X)=>V$(-X,$),eql:(X,U)=>X===U,sqr:(X)=>V$(X*X,$),add:(X,U)=>V$(X+U,$),sub:(X,U)=>V$(X-U,$),mul:(X,U)=>V$(X*U,$),pow:(X,U)=>tQ(R,X,U),div:(X,U)=>V$(X*b8(U,$),$),sqrN:(X)=>X*X,addN:(X,U)=>X+U,subN:(X,U)=>X-U,mulN:(X,U)=>X*U,inv:(X)=>b8(X,$),sqrt:z||((X)=>{if(!N)N=nQ($);return N(R,X)}),toBytes:(X)=>q?e0(X,D):a$(X,D),fromBytes:(X,U=!0)=>{if(K){if(!K.includes(X.length)||X.length>D)throw Error("Field.fromBytes: expected "+K+" bytes, got "+X.length);let C=new Uint8Array(D);C.set(X,q?0:C.length-X.length),X=C}if(X.length!==D)throw Error("Field.fromBytes: expected "+D+" bytes, got "+X.length);let A=q?t0(X):S$(X);if(Y)A=V$(A,$);if(!U){if(!R.isValid(A))throw Error("invalid field element: outside of range 0..ORDER")}return A},invertBatch:(X)=>w0(R,X),cmov:(X,U,A)=>A?U:X});return Object.freeze(R)}function l8($){if(typeof $!=="bigint")throw Error("field order must be bigint");let Q=$.toString(2).length;return Math.ceil(Q/8)}function q8($){let Q=l8($);return Q+Math.ceil(Q/2)}function k0($,Q,q=!1){let J=$.length,G=l8(Q),z=q8(Q);if(J<16||J<z||J>1024)throw Error("expected "+z+"-1024 bytes of input, got "+J);let Y=q?t0($):S$($),K=V$(Y,Q-Z$)+Z$;return q?e0(K,G):a$(K,G)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var r$=BigInt(0),d$=BigInt(1);function U0($,Q){let q=Q.negate();return $?q:Q}function S0($,Q){let q=w0($.Fp,Q.map((J)=>J.Z));return Q.map((J,G)=>$.fromAffine(J.toAffine(q[G])))}function i8($,Q){if(!Number.isSafeInteger($)||$<=0||$>Q)throw Error("invalid window size, expected [1.."+Q+"], got W="+$)}function G8($,Q){i8($,Q);let q=Math.ceil(Q/$)+1,J=2**($-1),G=2**$,z=b$($),Y=BigInt($);return{windows:q,windowSize:J,mask:z,maxNumber:G,shiftBy:Y}}function d8($,Q,q){let{windowSize:J,mask:G,maxNumber:z,shiftBy:Y}=q,K=Number($&G),Z=$>>Y;if(K>J)K-=z,Z+=d$;let D=Q*J,N=D+Math.abs(K)-1,R=K===0,X=K<0,U=Q%2!==0;return{nextN:Z,offset:N,isZero:R,isNeg:X,isNegF:U,offsetF:D}}function eQ($,Q){if(!Array.isArray($))throw Error("array expected");$.forEach((q,J)=>{if(!(q instanceof Q))throw Error("invalid point at index "+J)})}function $J($,Q){if(!Array.isArray($))throw Error("array of scalars expected");$.forEach((q,J)=>{if(!Q.isValid(q))throw Error("invalid scalar at index "+J)})}var z8=new WeakMap,a8=new WeakMap;function Y8($){return a8.get($)||1}function p8($){if($!==r$)throw Error("invalid wNAF")}class X8{constructor($,Q){this.BASE=$.BASE,this.ZERO=$.ZERO,this.Fn=$.Fn,this.bits=Q}_unsafeLadder($,Q,q=this.ZERO){let J=$;while(Q>r$){if(Q&d$)q=q.add(J);J=J.double(),Q>>=d$}return q}precomputeWindow($,Q){let{windows:q,windowSize:J}=G8(Q,this.bits),G=[],z=$,Y=z;for(let K=0;K<q;K++){Y=z,G.push(Y);for(let Z=1;Z<J;Z++)Y=Y.add(z),G.push(Y);z=Y.double()}return G}wNAF($,Q,q){if(!this.Fn.isValid(q))throw Error("invalid scalar");let J=this.ZERO,G=this.BASE,z=G8($,this.bits);for(let Y=0;Y<z.windows;Y++){let{nextN:K,offset:Z,isZero:D,isNeg:N,isNegF:R,offsetF:X}=d8(q,Y,z);if(q=K,D)G=G.add(U0(R,Q[X]));else J=J.add(U0(N,Q[Z]))}return p8(q),{p:J,f:G}}wNAFUnsafe($,Q,q,J=this.ZERO){let G=G8($,this.bits);for(let z=0;z<G.windows;z++){if(q===r$)break;let{nextN:Y,offset:K,isZero:Z,isNeg:D}=d8(q,z,G);if(q=Y,Z)continue;else{let N=Q[K];J=J.add(D?N.negate():N)}}return p8(q),J}getPrecomputes($,Q,q){let J=z8.get(Q);if(!J){if(J=this.precomputeWindow(Q,$),$!==1){if(typeof q==="function")J=q(J);z8.set(Q,J)}}return J}cached($,Q,q){let J=Y8($);return this.wNAF(J,this.getPrecomputes(J,$,q),Q)}unsafe($,Q,q,J){let G=Y8($);if(G===1)return this._unsafeLadder($,Q,J);return this.wNAFUnsafe(G,this.getPrecomputes(G,$,q),Q,J)}createCache($,Q){i8(Q,this.bits),a8.set($,Q),z8.delete($)}hasCache($){return Y8($)!==1}}function r8($,Q,q,J){let G=Q,z=$.ZERO,Y=$.ZERO;while(q>r$||J>r$){if(q&d$)z=z.add(G);if(J&d$)Y=Y.add(G);G=G.double(),q>>=d$,J>>=d$}return{p1:z,p2:Y}}function n8($,Q,q,J){eQ(q,$),$J(J,Q);let G=q.length,z=J.length;if(G!==z)throw Error("arrays of points and scalars must have equal length");let Y=$.ZERO,K=L0(BigInt(G)),Z=1;if(K>12)Z=K-3;else if(K>4)Z=K-2;else if(K>0)Z=2;let D=b$(Z),N=Array(Number(D)+1).fill(Y),R=Math.floor((Q.BITS-1)/Z)*Z,X=Y;for(let U=R;U>=0;U-=Z){N.fill(Y);for(let C=0;C<z;C++){let u=J[C],h=Number(u>>BigInt(U)&D);N[h]=N[h].add(q[C])}let A=Y;for(let C=N.length-1,u=Y;C>0;C--)u=u.add(N[C]),A=A.add(u);if(X=X.add(A),U!==0)for(let C=0;C<Z;C++)X=X.double()}return X}function o8($,Q,q){if(Q){if(Q.ORDER!==$)throw Error("Field.ORDER must match order: Fp == p, Fn == n");return J8(Q),Q}else return f$($,{isLE:q})}function s8($,Q,q={},J){if(J===void 0)J=$==="edwards";if(!Q||typeof Q!=="object")throw Error(`expected valid ${$} CURVE object`);for(let Z of["p","n","h"]){let D=Q[Z];if(!(typeof D==="bigint"&&D>r$))throw Error(`CURVE.${Z} must be positive bigint`)}let G=o8(Q.p,q.Fp,J),z=o8(Q.n,q.Fn,J),K=["Gx","Gy","a",$==="weierstrass"?"b":"d"];for(let Z of K)if(!G.isValid(Q[Z]))throw Error(`CURVE.${Z} must be valid field element of CURVE.Fp`);return Q=Object.freeze(Object.assign({},Q)),{CURVE:Q,Fp:G,Fn:z}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var t8=($,Q)=>($+($>=0?Q:-Q)/$Q)/Q;function QJ($,Q,q){let[[J,G],[z,Y]]=Q,K=t8(Y*$,q),Z=t8(-G*$,q),D=$-K*J-Z*z,N=-K*G-Z*Y,R=D<I$,X=N<I$;if(R)D=-D;if(X)N=-N;let U=b$(Math.ceil(L0(q)/2))+n$;if(D<I$||D>=U||N<I$||N>=U)throw Error("splitScalar (endomorphism): failed, k="+$);return{k1neg:R,k1:D,k2neg:X,k2:N}}function K8($){if(!["compact","recovered","der"].includes($))throw Error('Signature format must be "compact", "recovered", or "der"');return $}function Z8($,Q){let q={};for(let J of Object.keys(Q))q[J]=$[J]===void 0?Q[J]:$[J];if(Y0(q.lowS,"lowS"),Y0(q.prehash,"prehash"),q.format!==void 0)K8(q.format);return q}class e8 extends Error{constructor($=""){super($)}}var P$={Err:e8,_tlv:{encode:($,Q)=>{let{Err:q}=P$;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length&1)throw new q("tlv.encode: unpadded data");let J=Q.length/2,G=X0(J);if(G.length/2&128)throw new q("tlv.encode: long form length too big");let z=J>127?X0(G.length/2|128):"";return X0($)+z+G+Q},decode($,Q){let{Err:q}=P$,J=0;if($<0||$>256)throw new q("tlv.encode: wrong tag");if(Q.length<2||Q[J++]!==$)throw new q("tlv.decode: wrong tlv");let G=Q[J++],z=!!(G&128),Y=0;if(!z)Y=G;else{let Z=G&127;if(!Z)throw new q("tlv.decode(long): indefinite length not supported");if(Z>4)throw new q("tlv.decode(long): byte length is too big");let D=Q.subarray(J,J+Z);if(D.length!==Z)throw new q("tlv.decode: length bytes not complete");if(D[0]===0)throw new q("tlv.decode(long): zero leftmost byte");for(let N of D)Y=Y<<8|N;if(J+=Z,Y<128)throw new q("tlv.decode(long): not minimal encoding")}let K=Q.subarray(J,J+Y);if(K.length!==Y)throw new q("tlv.decode: wrong value length");return{v:K,l:Q.subarray(J+Y)}}},_int:{encode($){let{Err:Q}=P$;if($<I$)throw new Q("integer: negative integers are not allowed");let q=X0($);if(Number.parseInt(q[0],16)&8)q="00"+q;if(q.length&1)throw new Q("unexpected DER parsing assertion: unpadded hex");return q},decode($){let{Err:Q}=P$;if($[0]&128)throw new Q("invalid signature integer: negative");if($[0]===0&&!($[1]&128))throw new Q("invalid signature integer: unnecessary leading zero");return S$($)}},toSig($){let{Err:Q,_int:q,_tlv:J}=P$,G=n("signature",$),{v:z,l:Y}=J.decode(48,G);if(Y.length)throw new Q("invalid signature: left bytes after parsing");let{v:K,l:Z}=J.decode(2,z),{v:D,l:N}=J.decode(2,Z);if(N.length)throw new Q("invalid signature: left bytes after parsing");return{r:q.decode(K),s:q.decode(D)}},hexFromSig($){let{_tlv:Q,_int:q}=P$,J=Q.encode(2,q.encode($.r)),G=Q.encode(2,q.encode($.s)),z=J+G;return Q.encode(48,z)}},I$=BigInt(0),n$=BigInt(1),$Q=BigInt(2),P0=BigInt(3),JJ=BigInt(4);function y$($,Q){let{BYTES:q}=$,J;if(typeof Q==="bigint")J=Q;else{let G=n("private key",Q);try{J=$.fromBytes(G)}catch(z){throw Error(`invalid private key: expected ui8a of size ${q}, got ${typeof Q}`)}}if(!$.isValidNot0(J))throw Error("invalid private key: out of range [1..N-1]");return J}function qJ($,Q={}){let q=s8("weierstrass",$,Q),{Fp:J,Fn:G}=q,z=q.CURVE,{h:Y,n:K}=z;K0(Q,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object",wrapPrivateKey:"boolean"});let{endo:Z}=Q;if(Z){if(!J.is0(z.a)||typeof Z.beta!=="bigint"||!Array.isArray(Z.basises))throw Error('invalid endo: expected "beta": bigint and "basises": array')}let D=JQ(J,G);function N(){if(!J.isOdd)throw Error("compression is not supported: Field does not have .isOdd()")}function R(O,k,W){let{x:B,y:w}=k.toAffine(),v=J.toBytes(B);if(Y0(W,"isCompressed"),W){N();let P=!J.isOdd(w);return D$(QQ(P),v)}else return D$(Uint8Array.of(4),v,J.toBytes(w))}function X(O){_$(O,void 0,"Point");let{publicKey:k,publicKeyUncompressed:W}=D,B=O.length,w=O[0],v=O.subarray(1);if(B===k&&(w===2||w===3)){let P=J.fromBytes(v);if(!J.isValid(P))throw Error("bad point: is not on curve, wrong x");let _=C(P),S;try{S=J.sqrt(_)}catch(j){let M=j instanceof Error?": "+j.message:"";throw Error("bad point: is not on curve, sqrt error"+M)}N();let H=J.isOdd(S);if((w&1)===1!==H)S=J.neg(S);return{x:P,y:S}}else if(B===W&&w===4){let P=J.BYTES,_=J.fromBytes(v.subarray(0,P)),S=J.fromBytes(v.subarray(P,P*2));if(!u(_,S))throw Error("bad point: is not on curve");return{x:_,y:S}}else throw Error(`bad point: got length ${B}, expected compressed=${k} or uncompressed=${W}`)}let U=Q.toBytes||R,A=Q.fromBytes||X;function C(O){let k=J.sqr(O),W=J.mul(k,O);return J.add(J.add(W,J.mul(O,z.a)),z.b)}function u(O,k){let W=J.sqr(k),B=C(O);return J.eql(W,B)}if(!u(z.Gx,z.Gy))throw Error("bad curve params: generator point");let h=J.mul(J.pow(z.a,P0),JJ),i=J.mul(J.sqr(z.b),BigInt(27));if(J.is0(J.add(h,i)))throw Error("bad curve params: a or b");function c(O,k,W=!1){if(!J.isValid(k)||W&&J.is0(k))throw Error(`bad point coordinate ${O}`);return k}function z$(O){if(!(O instanceof g))throw Error("ProjectivePoint expected")}function a(O){if(!Z||!Z.basises)throw Error("no endo");return QJ(O,Z.basises,G.ORDER)}let Q$=$8((O,k)=>{let{X:W,Y:B,Z:w}=O;if(J.eql(w,J.ONE))return{x:W,y:B};let v=O.is0();if(k==null)k=v?J.ONE:J.inv(w);let P=J.mul(W,k),_=J.mul(B,k),S=J.mul(w,k);if(v)return{x:J.ZERO,y:J.ZERO};if(!J.eql(S,J.ONE))throw Error("invZ was invalid");return{x:P,y:_}}),K$=$8((O)=>{if(O.is0()){if(Q.allowInfinityPoint&&!J.is0(O.Y))return;throw Error("bad point: ZERO")}let{x:k,y:W}=O.toAffine();if(!J.isValid(k)||!J.isValid(W))throw Error("bad point: x or y not field elements");if(!u(k,W))throw Error("bad point: equation left != right");if(!O.isTorsionFree())throw Error("bad point: not in prime-order subgroup");return!0});function Y$(O,k,W,B,w){return W=new g(J.mul(W.X,O),W.Y,W.Z),k=U0(B,k),W=U0(w,W),k.add(W)}class g{constructor(O,k,W){this.X=c("x",O),this.Y=c("y",k,!0),this.Z=c("z",W),Object.freeze(this)}static CURVE(){return z}static fromAffine(O){let{x:k,y:W}=O||{};if(!O||!J.isValid(k)||!J.isValid(W))throw Error("invalid affine point");if(O instanceof g)throw Error("projective point not allowed");if(J.is0(k)&&J.is0(W))return g.ZERO;return new g(k,W,J.ONE)}static fromBytes(O){let k=g.fromAffine(A(_$(O,void 0,"point")));return k.assertValidity(),k}static fromHex(O){return g.fromBytes(n("pointHex",O))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(O=8,k=!0){if(W$.createCache(this,O),!k)this.multiply(P0);return this}assertValidity(){K$(this)}hasEvenY(){let{y:O}=this.toAffine();if(!J.isOdd)throw Error("Field doesn't support isOdd");return!J.isOdd(O)}equals(O){z$(O);let{X:k,Y:W,Z:B}=this,{X:w,Y:v,Z:P}=O,_=J.eql(J.mul(k,P),J.mul(w,B)),S=J.eql(J.mul(W,P),J.mul(v,B));return _&&S}negate(){return new g(this.X,J.neg(this.Y),this.Z)}double(){let{a:O,b:k}=z,W=J.mul(k,P0),{X:B,Y:w,Z:v}=this,P=J.ZERO,_=J.ZERO,S=J.ZERO,H=J.mul(B,B),b=J.mul(w,w),j=J.mul(v,v),M=J.mul(B,w);return M=J.add(M,M),S=J.mul(B,v),S=J.add(S,S),P=J.mul(O,S),_=J.mul(W,j),_=J.add(P,_),P=J.sub(b,_),_=J.add(b,_),_=J.mul(P,_),P=J.mul(M,P),S=J.mul(W,S),j=J.mul(O,j),M=J.sub(H,j),M=J.mul(O,M),M=J.add(M,S),S=J.add(H,H),H=J.add(S,H),H=J.add(H,j),H=J.mul(H,M),_=J.add(_,H),j=J.mul(w,v),j=J.add(j,j),H=J.mul(j,M),P=J.sub(P,H),S=J.mul(j,b),S=J.add(S,S),S=J.add(S,S),new g(P,_,S)}add(O){z$(O);let{X:k,Y:W,Z:B}=this,{X:w,Y:v,Z:P}=O,_=J.ZERO,S=J.ZERO,H=J.ZERO,b=z.a,j=J.mul(z.b,P0),M=J.mul(k,w),I=J.mul(W,v),T=J.mul(B,P),x=J.add(k,W),m=J.add(w,v);x=J.mul(x,m),m=J.add(M,I),x=J.sub(x,m),m=J.add(k,B);let o=J.add(w,P);return m=J.mul(m,o),o=J.add(M,T),m=J.sub(m,o),o=J.add(W,B),_=J.add(v,P),o=J.mul(o,_),_=J.add(I,T),o=J.sub(o,_),H=J.mul(b,m),_=J.mul(j,T),H=J.add(_,H),_=J.sub(I,H),H=J.add(I,H),S=J.mul(_,H),I=J.add(M,M),I=J.add(I,M),T=J.mul(b,T),m=J.mul(j,m),I=J.add(I,T),T=J.sub(M,T),T=J.mul(b,T),m=J.add(m,T),M=J.mul(I,m),S=J.add(S,M),M=J.mul(o,m),_=J.mul(x,_),_=J.sub(_,M),M=J.mul(x,I),H=J.mul(o,H),H=J.add(H,M),new g(_,S,H)}subtract(O){return this.add(O.negate())}is0(){return this.equals(g.ZERO)}multiply(O){let{endo:k}=Q;if(!G.isValidNot0(O))throw Error("invalid scalar: out of range");let W,B,w=(v)=>W$.cached(this,v,(P)=>S0(g,P));if(k){let{k1neg:v,k1:P,k2neg:_,k2:S}=a(O),{p:H,f:b}=w(P),{p:j,f:M}=w(S);B=b.add(M),W=Y$(k.beta,H,j,v,_)}else{let{p:v,f:P}=w(O);W=v,B=P}return S0(g,[W,B])[0]}multiplyUnsafe(O){let{endo:k}=Q,W=this;if(!G.isValid(O))throw Error("invalid scalar: out of range");if(O===I$||W.is0())return g.ZERO;if(O===n$)return W;if(W$.hasCache(this))return this.multiply(O);if(k){let{k1neg:B,k1:w,k2neg:v,k2:P}=a(O),{p1:_,p2:S}=r8(g,W,w,P);return Y$(k.beta,_,S,B,v)}else return W$.unsafe(W,O)}multiplyAndAddUnsafe(O,k,W){let B=this.multiplyUnsafe(k).add(O.multiplyUnsafe(W));return B.is0()?void 0:B}toAffine(O){return Q$(this,O)}isTorsionFree(){let{isTorsionFree:O}=Q;if(Y===n$)return!0;if(O)return O(g,this);return W$.unsafe(this,K).is0()}clearCofactor(){let{clearCofactor:O}=Q;if(Y===n$)return this;if(O)return O(g,this);return this.multiplyUnsafe(Y)}isSmallOrder(){return this.multiplyUnsafe(Y).is0()}toBytes(O=!0){return Y0(O,"isCompressed"),this.assertValidity(),U(g,this,O)}toHex(O=!0){return C$(this.toBytes(O))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}get px(){return this.X}get py(){return this.X}get pz(){return this.Z}toRawBytes(O=!0){return this.toBytes(O)}_setWindowSize(O){this.precompute(O)}static normalizeZ(O){return S0(g,O)}static msm(O,k){return n8(g,G,O,k)}static fromPrivateKey(O){return g.BASE.multiply(y$(G,O))}}g.BASE=new g(z.Gx,z.Gy,J.ONE),g.ZERO=new g(J.ZERO,J.ONE,J.ZERO),g.Fp=J,g.Fn=G;let O$=G.BITS,W$=new X8(g,Q.endo?Math.ceil(O$/2):O$);return g.BASE.precompute(8),g}function QQ($){return Uint8Array.of($?2:3)}function JQ($,Q){return{secretKey:Q.BYTES,publicKey:1+$.BYTES,publicKeyUncompressed:1+2*$.BYTES,publicKeyHasPrefix:!0,signature:2*Q.BYTES}}function GJ($,Q={}){let{Fn:q}=$,J=Q.randomBytes||c$,G=Object.assign(JQ($.Fp,q),{seed:q8(q.ORDER)});function z(U){try{return!!y$(q,U)}catch(A){return!1}}function Y(U,A){let{publicKey:C,publicKeyUncompressed:u}=G;try{let h=U.length;if(A===!0&&h!==C)return!1;if(A===!1&&h!==u)return!1;return!!$.fromBytes(U)}catch(h){return!1}}function K(U=J(G.seed)){return k0(_$(U,G.seed,"seed"),q.ORDER)}function Z(U,A=!0){return $.BASE.multiply(y$(q,U)).toBytes(A)}function D(U){let A=K(U);return{secretKey:A,publicKey:Z(A)}}function N(U){if(typeof U==="bigint")return!1;if(U instanceof $)return!0;let{secretKey:A,publicKey:C,publicKeyUncompressed:u}=G;if(q.allowedLengths||A===C)return;let h=n("key",U).length;return h===C||h===u}function R(U,A,C=!0){if(N(U)===!0)throw Error("first arg must be private key");if(N(A)===!1)throw Error("second arg must be public key");let u=y$(q,U);return $.fromHex(A).multiply(u).toBytes(C)}return Object.freeze({getPublicKey:Z,getSharedSecret:R,keygen:D,Point:$,utils:{isValidSecretKey:z,isValidPublicKey:Y,randomSecretKey:K,isValidPrivateKey:z,randomPrivateKey:K,normPrivateKeyToScalar:(U)=>y$(q,U),precompute(U=8,A=$.BASE){return A.precompute(U,!1)}},lengths:G})}function zJ($,Q,q={}){x0(Q),K0(q,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"});let J=q.randomBytes||c$,G=q.hmac||((W,...B)=>a0(Q,W,D$(...B))),{Fp:z,Fn:Y}=$,{ORDER:K,BITS:Z}=Y,{keygen:D,getPublicKey:N,getSharedSecret:R,utils:X,lengths:U}=GJ($,q),A={prehash:!1,lowS:typeof q.lowS==="boolean"?q.lowS:!1,format:void 0,extraEntropy:!1},C="compact";function u(W){let B=K>>n$;return W>B}function h(W,B){if(!Y.isValidNot0(B))throw Error(`invalid signature ${W}: out of range 1..Point.Fn.ORDER`);return B}function i(W,B){K8(B);let w=U.signature,v=B==="compact"?w:B==="recovered"?w+1:void 0;return _$(W,v,`${B} signature`)}class c{constructor(W,B,w){if(this.r=h("r",W),this.s=h("s",B),w!=null)this.recovery=w;Object.freeze(this)}static fromBytes(W,B=C){i(W,B);let w;if(B==="der"){let{r:S,s:H}=P$.toSig(_$(W));return new c(S,H)}if(B==="recovered")w=W[0],B="compact",W=W.subarray(1);let v=Y.BYTES,P=W.subarray(0,v),_=W.subarray(v,v*2);return new c(Y.fromBytes(P),Y.fromBytes(_),w)}static fromHex(W,B){return this.fromBytes(h$(W),B)}addRecoveryBit(W){return new c(this.r,this.s,W)}recoverPublicKey(W){let B=z.ORDER,{r:w,s:v,recovery:P}=this;if(P==null||![0,1,2,3].includes(P))throw Error("recovery id invalid");if(K*$Q<B&&P>1)throw Error("recovery id is ambiguous for h>1 curve");let S=P===2||P===3?w+K:w;if(!z.isValid(S))throw Error("recovery id 2 or 3 invalid");let H=z.toBytes(S),b=$.fromBytes(D$(QQ((P&1)===0),H)),j=Y.inv(S),M=a(n("msgHash",W)),I=Y.create(-M*j),T=Y.create(v*j),x=$.BASE.multiplyUnsafe(I).add(b.multiplyUnsafe(T));if(x.is0())throw Error("point at infinify");return x.assertValidity(),x}hasHighS(){return u(this.s)}toBytes(W=C){if(K8(W),W==="der")return h$(P$.hexFromSig(this));let B=Y.toBytes(this.r),w=Y.toBytes(this.s);if(W==="recovered"){if(this.recovery==null)throw Error("recovery bit must be present");return D$(Uint8Array.of(this.recovery),B,w)}return D$(B,w)}toHex(W){return C$(this.toBytes(W))}assertValidity(){}static fromCompact(W){return c.fromBytes(n("sig",W),"compact")}static fromDER(W){return c.fromBytes(n("sig",W),"der")}normalizeS(){return this.hasHighS()?new c(this.r,Y.neg(this.s),this.recovery):this}toDERRawBytes(){return this.toBytes("der")}toDERHex(){return C$(this.toBytes("der"))}toCompactRawBytes(){return this.toBytes("compact")}toCompactHex(){return C$(this.toBytes("compact"))}}let z$=q.bits2int||function(B){if(B.length>8192)throw Error("input is too large");let w=S$(B),v=B.length*8-Z;return v>0?w>>BigInt(v):w},a=q.bits2int_modN||function(B){return Y.create(z$(B))},Q$=b$(Z);function K$(W){return v8("num < 2^"+Z,W,I$,Q$),Y.toBytes(W)}function Y$(W,B){return _$(W,void 0,"message"),B?_$(Q(W),void 0,"prehashed message"):W}function g(W,B,w){if(["recovered","canonical"].some((T)=>(T in w)))throw Error("sign() legacy options not supported");let{lowS:v,prehash:P,extraEntropy:_}=Z8(w,A);W=Y$(W,P);let S=a(W),H=y$(Y,B),b=[K$(H),K$(S)];if(_!=null&&_!==!1){let T=_===!0?J(U.secretKey):_;b.push(n("extraEntropy",T))}let j=D$(...b),M=S;function I(T){let x=z$(T);if(!Y.isValidNot0(x))return;let m=Y.inv(x),o=$.BASE.multiply(x).toAffine(),J$=Y.create(o.x);if(J$===I$)return;let U$=Y.create(m*Y.create(M+J$*H));if(U$===I$)return;let f=(o.x===J$?0:2)|Number(o.y&n$),G$=U$;if(v&&u(U$))G$=Y.neg(U$),f^=1;return new c(J$,G$,f)}return{seed:j,k2sig:I}}function O$(W,B,w={}){W=n("message",W);let{seed:v,k2sig:P}=g(W,B,w);return _8(Q.outputLen,Y.BYTES,G)(v,P)}function W$(W){let B=void 0,w=typeof W==="string"||F$(W),v=!w&&W!==null&&typeof W==="object"&&typeof W.r==="bigint"&&typeof W.s==="bigint";if(!w&&!v)throw Error("invalid signature, expected Uint8Array, hex string or Signature instance");if(v)B=new c(W.r,W.s);else if(w){try{B=c.fromBytes(n("sig",W),"der")}catch(P){if(!(P instanceof P$.Err))throw P}if(!B)try{B=c.fromBytes(n("sig",W),"compact")}catch(P){return!1}}if(!B)return!1;return B}function O(W,B,w,v={}){let{lowS:P,prehash:_,format:S}=Z8(v,A);if(w=n("publicKey",w),B=Y$(n("message",B),_),"strict"in v)throw Error("options.strict was renamed to lowS");let H=S===void 0?W$(W):c.fromBytes(n("sig",W),S);if(H===!1)return!1;try{let b=$.fromBytes(w);if(P&&H.hasHighS())return!1;let{r:j,s:M}=H,I=a(B),T=Y.inv(M),x=Y.create(I*T),m=Y.create(j*T),o=$.BASE.multiplyUnsafe(x).add(b.multiplyUnsafe(m));if(o.is0())return!1;return Y.create(o.x)===j}catch(b){return!1}}function k(W,B,w={}){let{prehash:v}=Z8(w,A);return B=Y$(B,v),c.fromBytes(W,"recovered").recoverPublicKey(B).toBytes()}return Object.freeze({keygen:D,getPublicKey:N,getSharedSecret:R,utils:X,lengths:U,Point:$,sign:O$,verify:O,recoverPublicKey:k,Signature:c,hash:Q})}function YJ($){let Q={a:$.a,b:$.b,p:$.Fp.ORDER,n:$.n,h:$.h,Gx:$.Gx,Gy:$.Gy},q=$.Fp,J=$.allowedPrivateKeyLengths?Array.from(new Set($.allowedPrivateKeyLengths.map((Y)=>Math.ceil(Y/2)))):void 0,G=f$(Q.n,{BITS:$.nBitLength,allowedLengths:J,modFromBytes:$.wrapPrivateKey}),z={Fp:q,Fn:G,allowInfinityPoint:$.allowInfinityPoint,endo:$.endo,isTorsionFree:$.isTorsionFree,clearCofactor:$.clearCofactor,fromBytes:$.fromBytes,toBytes:$.toBytes};return{CURVE:Q,curveOpts:z}}function XJ($){let{CURVE:Q,curveOpts:q}=YJ($),J={hmac:$.hmac,randomBytes:$.randomBytes,lowS:$.lowS,bits2int:$.bits2int,bits2int_modN:$.bits2int_modN};return{CURVE:Q,curveOpts:q,hash:$.hash,ecdsaOpts:J}}function ZJ($,Q){let q=Q.Point;return Object.assign({},Q,{ProjectivePoint:q,CURVE:Object.assign({},$,C0(q.Fn.ORDER,q.Fn.BITS))})}function qQ($){let{CURVE:Q,curveOpts:q,hash:J,ecdsaOpts:G}=XJ($),z=qJ(Q,q),Y=zJ(z,J,G);return ZJ($,Y)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function GQ($,Q){let q=(J)=>qQ({...$,hash:J});return{...q(Q),create:q}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */var s$={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},KJ={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},UJ=BigInt(0),zQ=BigInt(1),U8=BigInt(2);function jJ($){let Q=s$.p,q=BigInt(3),J=BigInt(6),G=BigInt(11),z=BigInt(22),Y=BigInt(23),K=BigInt(44),Z=BigInt(88),D=$*$*$%Q,N=D*D*$%Q,R=N$(N,q,Q)*N%Q,X=N$(R,q,Q)*N%Q,U=N$(X,U8,Q)*D%Q,A=N$(U,G,Q)*U%Q,C=N$(A,z,Q)*A%Q,u=N$(C,K,Q)*C%Q,h=N$(u,Z,Q)*u%Q,i=N$(h,K,Q)*C%Q,c=N$(i,q,Q)*N%Q,z$=N$(c,Y,Q)*A%Q,a=N$(z$,J,Q)*D%Q,Q$=N$(a,U8,Q);if(!I0.eql(I0.sqr(Q$),$))throw Error("Cannot find square root");return Q$}var I0=f$(s$.p,{sqrt:jJ}),ZQ=GQ({...s$,Fp:I0,lowS:!0,endo:KJ},T0),YQ={};function E0($,...Q){let q=YQ[$];if(q===void 0){let J=T0(R0($));q=D$(J,J),YQ[$]=q}return T0(D$(q,...Q))}var W8=($)=>$.toBytes(!0).slice(1),t$=(()=>ZQ.Point)(),D8=($)=>$%U8===UJ;function j8($){let{Fn:Q,BASE:q}=t$,J=y$(Q,$),G=q.multiply(J);return{scalar:D8(G.y)?J:Q.neg(J),bytes:W8(G)}}function KQ($){let Q=I0;if(!Q.isValidNot0($))throw Error("invalid x: Fail if x ≥ p");let q=Q.create($*$),J=Q.create(q*$+BigInt(7)),G=Q.sqrt(J);if(!D8(G))G=Q.neg(G);let z=t$.fromAffine({x:$,y:G});return z.assertValidity(),z}var j0=S$;function UQ(...$){return t$.Fn.create(j0(E0("BIP0340/challenge",...$)))}function XQ($){return j8($).bytes}function WJ($,Q,q=c$(32)){let{Fn:J}=t$,G=n("message",$),{bytes:z,scalar:Y}=j8(Q),K=n("auxRand",q,32),Z=J.toBytes(Y^j0(E0("BIP0340/aux",K))),D=E0("BIP0340/nonce",Z,z,G),{bytes:N,scalar:R}=j8(D),X=UQ(N,z,G),U=new Uint8Array(64);if(U.set(N,0),U.set(J.toBytes(J.create(R+X*Y)),32),!jQ(U,G,z))throw Error("sign: Invalid signature produced");return U}function jQ($,Q,q){let{Fn:J,BASE:G}=t$,z=n("signature",$,64),Y=n("message",Q),K=n("publicKey",q,32);try{let Z=KQ(j0(K)),D=j0(z.subarray(0,32));if(!Z0(D,zQ,s$.p))return!1;let N=j0(z.subarray(32,64));if(!Z0(N,zQ,s$.n))return!1;let R=UQ(J.toBytes(D),W8(Z),Y),X=G.multiplyUnsafe(N).add(Z.multiplyUnsafe(J.neg(R))),{x:U,y:A}=X.toAffine();if(X.is0()||!D8(A)||U!==D)return!1;return!0}catch(Z){return!1}}var v0=(()=>{let q=(G=c$(48))=>{return k0(G,s$.n)};ZQ.utils.randomSecretKey;function J(G){let z=q(G);return{secretKey:z,publicKey:XQ(z)}}return{keygen:J,getPublicKey:XQ,sign:WJ,verify:jQ,Point:t$,utils:{randomSecretKey:q,randomPrivateKey:q,taggedHash:E0,lift_x:KQ,pointToBytes:W8,numberToBytesBE:a$,bytesToNumberBE:S$,mod:V$},lengths:{secretKey:32,publicKey:32,publicKeyHasPrefix:!1,signature:64,seed:48}}})();var DJ=new TextEncoder,MJ=new TextDecoder,T$=($)=>DJ.encode($),p$=($)=>MJ.decode($),_0=($)=>Array.from($,(Q)=>Q.toString(16).padStart(2,"0")).join(""),H$=JSON.stringify,o$=JSON.parse,b0=($,Q=Number.MAX_SAFE_INTEGER)=>$.split("").reduce((q,J)=>q+J.charCodeAt(0),0)%Q;var M8="AES-GCM",VJ={},WQ="$",DQ=",",NJ=($)=>{let Q=new Uint8Array($),q=32768,J="";for(let G=0;G<Q.length;G+=32768)J+=String.fromCharCode(...Q.subarray(G,G+32768));return btoa(J)},HJ=($)=>Uint8Array.from(atob($),(Q)=>Q.charCodeAt(0)).buffer,W0=($)=>VJ[$]??=crypto.subtle.digest("SHA-1",T$($)).then((Q)=>{let q=new Uint8Array(Q),J="";for(let G of q)J+=G.toString(36);return J}),MQ=async($,Q,q)=>{let J=await crypto.subtle.digest("SHA-256",T$(`${$}:${Q}:${q}`));return crypto.subtle.importKey("raw",J,{name:M8},!1,["encrypt","decrypt"])},VQ=async($,Q)=>{let q=crypto.getRandomValues(new Uint8Array(12)),J=await $,G=await crypto.subtle.encrypt({name:M8,iv:q},J,T$(Q));return`${q.join(DQ)}${WQ}${NJ(G)}`},NQ=async($,Q)=>{let[q,J]=Q.split(WQ);if(!q||!J)throw Error("Invalid encrypted payload format");let G=Uint8Array.from(q.split(DQ),Number),z=await $,Y=await crypto.subtle.decrypt({name:M8,iv:G},z,HJ(J));return p$(Y)};var M$="GenosRTC",$0=($,Q)=>Array.from({length:$},Q);var e$=($)=>Array.from(crypto.getRandomValues(new Uint8Array($)),(Q)=>"0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"[Q%62]).join(""),p=typeof sessionStorage<"u"?sessionStorage.__genosrtcId??=e$(20):e$(20),E$=Promise.all.bind(Promise),HQ=typeof window<"u",{entries:OQ,fromEntries:f0,keys:y9}=Object,V8=()=>{},R$=($)=>Error(`GenosRTC: ${$}`),D0=(...$)=>$.join("@"),BQ=($,Q)=>{let q=[...$],J=q.length,G=()=>{let z=Math.sin(Q++)*1e4;return z-Math.floor(z)};while(J){let z=Math.floor(G()*J--);[q[J],q[z]]=[q[z],q[J]]}return q};var OJ=5000,xQ="icegatheringstatechange",AQ="offer",BJ="answer",xJ=[...$0(3,($,Q)=>`stun:stun${Q||""}.l.google.com:19302`),"stun:stun.cloudflare.com:3478"].map(($)=>({urls:$})),N8=($,{rtcConfig:Q,rtcPolyfill:q,turnConfig:J})=>{let G=new(q||RTCPeerConnection)({iceServers:[...xJ,...J||[]],...Q}),z={},Y=!1,K=!1,Z,D=(X)=>Object.assign(X,{binaryType:"arraybuffer",bufferedAmountLowThreshold:65535,onmessage:(U)=>z.data?.(U.data),onopen:()=>z.connect?.(),onclose:()=>z.close?.(),onerror:(U)=>!U?.error?.message?.includes("User-Initiated Abort")&&z.error?.(U)}),N=()=>Promise.race([new Promise((X)=>{let U=()=>{if(G.iceGatheringState==="complete")G.removeEventListener(xQ,U),X()};G.addEventListener(xQ,U),U()}),new Promise((X)=>setTimeout(X,OJ))]).then(()=>({type:G.localDescription.type,sdp:G.localDescription.sdp.replace(/a=ice-options:trickle\s\n/g,"")}));if($?D(Z=G.createDataChannel("data")):G.ondatachannel=({channel:X})=>D(Z=X),G.onnegotiationneeded=async()=>{try{Y=!0,await G.setLocalDescription(),z.signal?.(await N())}catch(X){z.error?.(X)}finally{Y=!1}},G.onconnectionstatechange=()=>{if(["disconnected","failed","closed"].includes(G.connectionState))z.close?.()},G.ontrack=(X)=>{z.track?.(X.track,X.streams[0]),z.stream?.(X.streams[0])},G.onremovestream=(X)=>z.stream?.(X.stream),$&&!G.canTrickleIceCandidates)G.onnegotiationneeded();let R=()=>G.getSenders();return{created:Date.now(),connection:G,get channel(){return Z},get isDead(){return G.connectionState==="closed"},async signal(X){if(Z?.readyState==="open"&&!X.sdp?.includes("a=rtpmap"))return;try{if(X.type===AQ){if(Y||G.signalingState!=="stable"&&!K){if($)return;await E$([G.setLocalDescription({type:"rollback"}),G.setRemoteDescription(X)])}else await G.setRemoteDescription(X);await G.setLocalDescription();let U=await N();return z.signal?.(U),U}if(X.type===BJ){K=!0;try{await G.setRemoteDescription(X)}finally{K=!1}}}catch(U){z.error?.(U)}},sendData:(X)=>{if(Z?.readyState==="open")Z.send(X)},destroy:()=>{Z?.close(),G.close(),Y=K=!1},setHandlers:(X)=>Object.assign(z,X),offerPromise:$?new Promise((X)=>z.signal=(U)=>U.type===AQ&&X(U)):Promise.resolve(),addStream:(X)=>X.getTracks().forEach((U)=>G.addTrack(U,X)),removeStream:(X)=>R().filter((U)=>X.getTracks().includes(U.track)).forEach((U)=>G.removeTrack(U)),addTrack:(X,U)=>G.addTrack(X,U),removeTrack:(X)=>{let U=R().find((A)=>A.track===X);if(U)G.removeTrack(U)},replaceTrack:(X,U)=>R().find((A)=>A.track===X)?.replaceTrack(U)}};var AJ=Object.getPrototypeOf(Uint8Array),g0=12,LQ=0,u0=LQ+g0,F0=u0+1,V0=F0+1,N0=V0+1,M0=16384-N0,y0=255,H8="bufferedamountlow",Q0=($)=>`@_${$}`,RQ=Q0("ping"),O8=100,RJ=3,TJ=200,LJ=512,TQ=($,Q)=>new Response(new Blob([$]).stream().pipeThrough(new Q("deflate"))).arrayBuffer().then((q)=>new Uint8Array(q)),wQ=($,Q,q,J,G)=>{let z=new Map,Y=new Map,K=new Map,Z={},D={},N={},R={},X=new Map,U=new Map,A=Promise.resolve(),C=(j,M)=>{if(!X.has(j))X.set(j,new Set);X.get(j).add(M)},u=(j,M)=>X.get(j)?.delete(M),h=(j,...M)=>X.get(j)?.forEach((I)=>I(...M)),i=(j,M)=>{let I=j?Array.isArray(j)?j:[j]:z.keys();return Array.from(I,(T)=>{let x=z.get(T);if(!x)return console.warn(`${M$}: no peer with id ${T}`),null;return M(T,x)}).filter(Boolean)},c=(j)=>{if(!z.has(j))return;z.delete(j),U.delete(j),H.delete(j),delete Z[j],delete D[j],delete N[j],delete R[j],h("peer:leave",j),Q(j)},z$=(j)=>new Promise((M,I)=>{let T=setTimeout(()=>{j.removeEventListener(H8,x),I(Error(`${M$}: bufferLow timeout`))},5000);function x(){clearTimeout(T),j.removeEventListener(H8,x),M()}j.addEventListener(H8,x)}),a=(j)=>{if(K.has(j))return K.get(j);if(!j)throw R$("action type is required");let M=T$(j);if(M.byteLength>g0)throw R$(`❌ "${j}" exceeds ${g0} bytes. Use a shorter name.`);let I=new Uint8Array(g0).map((f,G$)=>M[G$]||0),T=0,x=new Map([["message",new Set],["progress",new Set]]),m=(f,G$)=>x.get(f)?.add(G$),o=(f,G$)=>x.get(f)?.delete(G$),J$=async(f,G$,e,V)=>{if(e&&typeof e!=="object")throw R$("meta must be object");if(f===void 0)throw R$("data cannot be undefined");let L=f instanceof Blob,E=L||f instanceof ArrayBuffer||f instanceof AJ,F=typeof f!=="string";if(e&&!E)throw R$("meta only allowed with binary");let s=E?new Uint8Array(L?await f.arrayBuffer():f):T$(F?H$(f):f),l=0;if(!E&&s.byteLength>=LJ){let $$=await TQ(s,CompressionStream);if($$.byteLength<s.byteLength)s=$$,l=1}let d=e?T$(H$(e)):null,t=Math.ceil(s.byteLength/M0)+(e?1:0)||1;if(t>O8)throw R$(`Message too large, exceeds max chunks ${O8}`);let L$=$0(t,($$,X$)=>{let y=X$===t-1,r=e&&X$===0,B$=r?d:s.subarray(e?(X$-1)*M0:X$*M0,e?X$*M0:(X$+1)*M0),q$=new Uint8Array(N0+B$.byteLength);return q$.set(I),q$.set([T],u0),q$.set([y|r<<1|E<<2|F<<3|l<<4],F0),q$.set([Math.round((X$+1)/t*y0)],V0),q$.set(B$,N0),q$});return T=T+1&y0,E$(i(G$,async($$,X$)=>{let{channel:y}=X$;for(let r=0;r<t;r++){let B$=0;while(y.bufferedAmount>y.bufferedAmountLowThreshold){if(B$++>RJ)throw R$(`${M$}: send buffer full, max retries reached for peer ${$$}`);try{await z$(y)}catch(q$){console.warn(q$.message),await new Promise((R8)=>setTimeout(R8,TJ))}}if(!z.has($$))break;X$.sendData(L$[r]),V?.(L$[r][V0]/y0,$$,e)}}))};Y.set(j,{listeners:x,send:J$});let U$={send:J$,on:m,off:o};return K.set(j,U$),U$},Q$=(j,M)=>{try{U.set(j,Date.now()),H.delete(j);let I=new Uint8Array(M),T=p$(I.subarray(LQ,u0)).replace(/\x00/g,"");if(!Y.has(T))return console.warn(`${M$}: unregistered type (${T})`);if(T===RQ){g("",j).catch(()=>{});return}let[x]=I.subarray(u0,F0),[m]=I.subarray(F0,V0),[o]=I.subarray(V0,N0),J$=I.subarray(N0),U$=Boolean(m&1),f=Boolean(m&2),G$=Boolean(m&4),e=Boolean(m&8),V=Boolean(m&16),L=Y.get(T),E=(Z[j]||={})[T]||={};if(E[x]?.chunks?.length>O8){console.warn(`${M$}: peer ${j} sent too many chunks for nonce ${x}, ignoring.`);return}let F=E[x]||={chunks:[]};if(f)try{F.meta=o$(p$(J$))}catch{console.warn(`${M$}: failed to parse meta from peer ${j} for type ${T}`);return}else F.chunks.push(J$);if(L.listeners.get("progress").forEach((l)=>{try{l(o/y0,j,F.meta)}catch(d){console.error(d)}}),!U$)return;let s=new Uint8Array(F.chunks.reduce((l,d)=>l+d.byteLength,0));F.chunks.reduce((l,d)=>(s.set(d,l),l+d.byteLength),0),delete E[x],A=A.then(async()=>{let l=V?await TQ(s,DecompressionStream):s,d;if(G$)d=l;else if(e)try{d=o$(p$(l))}catch{console.warn(`${M$}: failed to parse JSON message data from peer ${j} for type ${T}`);return}else d=p$(l);L.listeners.get("message").forEach((t)=>{try{t(d,j,F.meta)}catch(L$){console.error(L$)}})}).catch((l)=>console.error(`${M$}: dispatch error from peer ${j}:`,l))}catch(I){console.error(`${M$}: error handling data from peer ${j}:`,I)}},K$=async()=>{try{await v(""),await new Promise((j)=>setTimeout(j,99))}catch(j){console.warn(`${M$}: error sending leave`,j)}for(let[j,M]of z){try{M.destroy()}catch{}z.delete(j)}clearInterval(b),q()},{send:Y$}=a(RQ),{send:g,on:O$}=a(Q0("pong")),{send:W$,on:O}=a(Q0("signal")),{send:k,on:W}=a(Q0("stream")),{send:B,on:w}=a(Q0("track")),{send:v,on:P}=a(Q0("leave"));$((j,M)=>{let I=z.get(M);if(I===j)return;if(I){let T=()=>{};I.setHandlers({data:T,stream:T,track:T,signal:T,close:T,error:T})}z.set(M,j),U.set(M,Date.now()),H.delete(M),j.setHandlers({data:(T)=>Q$(M,T),stream:(T)=>{h("stream:add",T,M,N[M]),delete N[M]},track:(T,x)=>{h("track:add",T,x,M,R[M]),delete R[M]},signal:(T)=>W$(T,M),close:()=>c(M),error:(T)=>{console.error(`${M$}: peer error for ${M}`,T),c(M)}}),h("peer:join",M,J?.(M))}),G?.((j,M,I)=>h(I?"peer:seen":"peer:lost",j,M)),O$("message",(j,M)=>{D[M]?.(),delete D[M]}),O("message",(j,M)=>z.get(M)?.signal(j)),W("message",(j,M)=>N[M]=j),w("message",(j,M)=>R[M]=j),P("message",(j,M)=>c(M));let _=1e4,S=20000,H=new Map,b=setInterval(()=>{let j=Date.now();for(let[M,I]of z){if(j-(U.get(M)??j)<=_)continue;let x=H.get(M);if(x===void 0)H.set(M,j),Y$("",M).catch(()=>{});else if(j-x>S){H.delete(M);try{I.destroy()}catch{}c(M)}}},5000);if(HQ)addEventListener("beforeunload",K$);return{on:C,off:u,channel:a,leave:K$,ping:async(j)=>{if(!j)throw R$("ping() requires target peer ID");let M=Date.now();return Y$("",j),await new Promise((I)=>D[j]=I),Date.now()-M},getPeers:()=>f0(Array.from(z,([j,M])=>[j,M.connection])),addStream:(j,M,I)=>i(M,async(T,x)=>{if(I)await k(I,T);x.addStream(j)}),removeStream:(j,M)=>i(M,(I,T)=>T.removeStream(j)),addTrack:(j,M,I,T)=>i(I,async(x,m)=>{if(T)await B(T,x);m.addTrack(j,M)}),removeTrack:(j,M)=>i(M,(I,T)=>T.removeTrack(j)),replaceTrack:(j,M,I,T)=>i(I,async(x,m)=>{if(T)await B(T,x);m.replaceTrack(j,M)})}};var wJ=5,CJ=10,kJ=2500,m0=57333,CQ=({init:$,subscribe:Q,announce:q,bye:J})=>{let G={},z=!1,Y,K;return(Z,D,N)=>{let{appId:R}=Z;if(G[R]?.[D])return G[R][D];if(!Z||!D||!R&&!Z.firebaseApp)throw R$(!Z?"config required":!D?"roomId required":"appId missing");let X=V8,U=V8;if(!z){let H=$(Z);K=$0(wJ,()=>{try{return N8(!0,Z)}catch{return null}}).filter(Boolean),Y=Array.isArray(H)?H:[H];let b=setInterval(()=>{K=K.filter((j)=>{let M=Date.now()-j.created<m0;if(!M)j.destroy();return M})},m0);G.offerCleanupTimer||=b,z=!0}let A={},C={},u=new Map,h=new Map,i=new Map,c={},z$=D0(M$,R,D),a=W0(z$),Q$=W0(D0(z$,p)),K$=MQ(Z.password||"",R,D),Y$=(H)=>async(b)=>({type:b.type,sdp:await H(K$,b.sdp)}),g=Y$(NQ),O$=Y$(VQ),W$=(H)=>{return setTimeout(()=>{if(!H.isDead&&!Object.values(C).includes(H))H.destroy()},m0),H},O=(H)=>{try{return W$(N8(H,Z))}catch{return null}},k=(H,b)=>{if(C[b]===H)return;H.connectedAt=Date.now(),C[b]?.destroy(),C[b]=H,X(H,b),A[b]?.forEach((j)=>j!==H&&j.destroy()),delete A[b]},W=(H,b)=>{if(C[b]===H)delete C[b]},B=(H)=>async(b,j,M)=>{let[I,T]=await E$([a,Q$]);if(b!==I&&b!==T)return;let{peerId:x,offer:m,answer:o,type:J$,bye:U$}=typeof j==="string"?o$(j):j;if(U$){if(x&&x!==p)h.delete(x),U(x,null,!1),i.set(x,Date.now()),delete c[x];return}if(x&&x!==p)U(x,J$,!0),h.set(x,Date.now()),i.delete(x);if(J$&&x)c[x]=J$;if(x===p)return;if(C[x]){let f=C[x].channel?.readyState==="open";if(!m||f||Date.now()-C[x].connectedAt<2000)return;C[x].destroy(),delete C[x]}if(Z.admit&&!Z.admit(x))return;if(m){if(A[x]?.[H]&&p>x)return;let f=O(!1);if(!f)return;f.setHandlers({connect:()=>k(f,x),close:()=>W(f,x)});try{let G$=await g(m);if(f.isDead)return;let[e,V]=await E$([W0(D0(z$,x)),f.signal(G$).then(O$)]);M(e,H$({peerId:p,answer:V,...Z.type&&{type:Z.type}}))}catch{N?.({error:"decryption failed (offer)",appId:R,peerId:x,roomId:D})}}else if(o){let f=A[x]?.[H];if(!f||f.isDead)return;f.setHandlers({connect:()=>k(f,x),close:()=>W(f,x)});try{f.signal(await g(o))}catch{N?.({error:"decryption failed (answer)",appId:R,peerId:x,roomId:D})}}else{let f=A[x]||=[];if(f.forEach((L,E)=>{if(L&&(L.isDead||Date.now()-(L.dialedAt??L.created)>m0)){if(L.isDead)u.set(x,Date.now()+30000);L.destroy(),delete f[E]}}),f[H]||f.filter(Boolean).length>=2||u.get(x)>Date.now())return;if(Object.values(A).reduce((L,E)=>L+E.filter((F)=>F&&!F.isDead).length,0)>=CJ)return;let e=K.pop(),V=e?W$(e):O(!0);if(!V){u.set(x,Date.now()+30000);return}V.dialedAt=Date.now(),f[H]=V;try{let[L,{offer:E}]=await E$([W0(D0(z$,x)),V.offerPromise.then(O$).then((F)=>({offer:F}))]);V.setHandlers({connect:()=>k(V,x),close:()=>W(V,x)}),M(L,H$({peerId:p,offer:E,peer:V,...Z.type&&{type:Z.type}}))}catch{if(f[H]===V)delete f[H];V.destroy()}}},w=[],v=[],P=[],_=()=>P.forEach(({relay:H,rootTopic:b})=>J?.(H,b));Y.forEach(async(H,b)=>{let j=await H;if(!j)return;let[M,I]=await E$([a,Q$]);v[b]=Q(j,M,I,B(b)),P.push({relay:j,rootTopic:M});let T=async()=>{let x=await q(j,M,I);w[b]=setTimeout(T,typeof x==="number"?x:kJ)};T()}),G[R]||={};let S=wQ((H)=>X=H,(H)=>delete C[H],()=>S.onCleanup?.(),(H)=>c[H],(H)=>U=H);if(typeof window<"u")window.addEventListener("pagehide",_);return S.onCleanup=()=>{if(_(),typeof window<"u")window.removeEventListener("pagehide",_);if(delete G[R][D],w.forEach(clearTimeout),v.forEach((H)=>H?.()),Object.keys(G).length===0)clearInterval(G.offerCleanupTimer),delete G.offerCleanupTimer},S._census=()=>{for(let b of Object.keys(C))h.set(b,Date.now());let H=Date.now()-120000;for(let[b,j]of h)if(j<H)h.delete(b);return[...h.keys()]},S._gone=()=>{let H=Date.now()-60000;for(let[b,j]of i)if(j<H)i.delete(b);return[...i.keys()]},G[R][D]=S}};var kQ=3333,SJ=30000,H0={},SQ={},PQ=($,Q)=>{let q={},J=null;q.reopenHandlers=new Set;let G=()=>{if(J)clearTimeout(J),J=null;if(q.socket)q.socket.onclose=null,q.socket.close();let z=new WebSocket($);z.onclose=()=>{H0[$]??=kQ,J=setTimeout(G,H0[$]),H0[$]=Math.min(H0[$]*2,SJ)},z.onmessage=(Y)=>Q(Y.data),q.socket=z,q.url=z.url,q.ready=new Promise((Y)=>{z.onopen=()=>{H0[$]=kQ,Y(q),q.reopenHandlers.forEach((K)=>K())}}),q.send=(Y)=>{if(z.readyState===1)z.send(Y)}};return q.forceReconnect=G,G(),SQ[$]=q,q};if(typeof window<"u"){let $=(Q)=>{log.info("⚡ [GenosRTC] Network event detected. Forcing reconnection…"),Object.values(SQ).forEach((q)=>{if(q.socket&&q.socket.readyState!==WebSocket.OPEN&&(Q||q.socket.readyState!==WebSocket.CONNECTING))q.forceReconnect()})};window.addEventListener("online",()=>{log.info("✅ Reconnected to the network."),$(!0)}),window.addEventListener("offline",async()=>{log.info("❌ Disconnected from the network.")}),document.addEventListener("visibilitychange",()=>{if(document.visibilityState==="visible")$()})}var IQ=($)=>()=>f0(OQ($).map(([Q,q])=>[Q,q.socket])),EQ=($,Q,q,J)=>($.relayUrls??(J?BQ(Q,b0($.appId)):Q)).slice(0,$.relayUrls?.length??$.relayRedundancy??q);var vQ=["wss://relay.primal.net","wss://relay.snort.social","wss://nostr.oxtr.dev","wss://nostr.vulpem.com","wss://relay.nostr.net","wss://nostr.sathoarder.com","wss://nostr.data.haus","wss://relay.mostr.pub"];var J0={},IJ=10,fQ="x",yQ="EVENT",EJ=/pow:\s*(\d+)\s*bits needed\.?/i,h0=new Set,gQ=v0.utils.randomSecretKey(),vJ=_0(v0.getPublicKey(gQ)),x8={},O0={},_J={},uQ=()=>Math.floor(Date.now()/1000),FQ=($)=>_J[$]??=b0($,1e4)+20000,B0=($)=>$.replace(/\/$/,""),bJ=($,Q)=>{let[q,J,G,z]=o$(Q);if(q===yQ)return O0[J]?.(x8[J],G.content);if(q==="NOTICE"||q==="OK"&&!G){if(+((q==="NOTICE"?J:z).match(EJ)?.[1]??0)>0){let K=B0($);h0.add(K),J0[K]?.close?.(),delete J0[K]}}},fJ=($)=>{let Q=B0($);if(J0[Q])return J0[Q];let q=PQ(Q,(J)=>bJ(Q,J));return J0[Q]=q},B8=async($,Q)=>{let q={kind:FQ($),content:Q,pubkey:vJ,created_at:uQ(),tags:[[fQ,$]]},J=T$(H$([0,q.pubkey,q.created_at,q.kind,q.tags,q.content])),G=new Uint8Array(await crypto.subtle.digest("SHA-256",J)),z=v0.sign(G,gQ);return H$([yQ,{...q,id:_0(G),sig:_0(z)}])},_Q=($,Q)=>{return x8[$]=Q,H$(["REQ",$,{kinds:[FQ(Q)],since:uQ(),["#"+fQ]:[Q]}])},bQ=($)=>{return delete x8[$],H$(["CLOSE",$])},c0=CQ({init:($)=>{let q=($?.relayUrls?.length?$.relayUrls:null)??vQ;return EQ($,q,IJ,!1).map(fJ).map((G)=>G.ready.then(()=>G).catch(()=>null))},subscribe:($,Q,q,J)=>{let G=e$(64),z=e$(64);O0[G]=O0[z]=(K,Z)=>J(K,Z,async(D,N)=>{if(h0.has(B0($.url)))return;$.send(await B8(D,N))});let Y=()=>{$.send(_Q(G,Q)),$.send(_Q(z,q))};return Y(),$.reopenHandlers.add(Y),()=>{$.reopenHandlers.delete(Y),$.send(bQ(G)),$.send(bQ(z)),delete O0[G],delete O0[z]}},announce:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p})))},bye:async($,Q)=>{if(h0.has(B0($.url)))return;$.send(await B8(Q,H$({peerId:p,bye:1})))}}),mQ=IQ(J0);var yJ={cellSize:10},gJ=5000,uJ=3000,FJ=2000,mJ=2000,hJ=1e4,cJ=30000,lJ=5000,dJ=30000,d0=($)=>{let Q=String($||"").match(/cell-(\d+)/);return Q?Number(Q[1]):null},A8=($,Q)=>{let q=d0($);if(q==null)return[];let J=[];for(let G=1;G<Q;G*=2){if(q-G>=0)J.push(`cell-${q-G}`);if(q+G<Q)J.push(`cell-${q+G}`)}return J},l0=($)=>`c${(d0($)||0).toString(36)}`,pJ=10,oJ=($,Q)=>{let q=+Q.cellSize>=2?Q.cellSize|0:pJ;return Math.max(1,Math.ceil($/q))},hQ=($)=>{let Q=0;for(let q=0;q<$.length;q++)Q=Math.imul(Q^$.charCodeAt(q),2654435761);return Q>>>0},g$=($,Q)=>{let q=0,J=-1;for(let G=0;G<Q;G++){let z=hQ(`${$}:${G}`);if(z>J)J=z,q=G}return q};function iJ($,Q={},q={}){let J={...yJ,...Q},G=1,z={epoch:0,roster:[p],set:new Set([p]),key:p,C:1,cellId:null,isBridge:!1,bridges:[],edgeBridges:[]},Y={cellId:null},K=0,Z=0,D="",N=0,R=0,X=0,U=null,A=null,C=null,u=new Map,h=new Set,i=new Map,c=new Set,z$=0,a=new Set,Q$=new Map,K$=()=>Math.min(150,Math.ceil(Math.log2(z.C+1))*2+3),Y$=(V)=>A8(V,z.C),g=$.on?.bind($),O$=$.off?.bind($);if(g)$.on=(V,L)=>String(V).startsWith("mesh:")?k(V,L):g(V,L);if(O$)$.off=(V,L)=>String(V).startsWith("mesh:")?i.get(V)?.delete(L):O$(V,L);let W$=(V)=>(h.add(V),()=>h.delete(V)),O=(V,L)=>{for(let E of h)try{E(V,L)}catch(F){log.error("\uD83D\uDD78️ [Cells] Error in deliver handler:",F)}},k=(V,L)=>{if(!i.has(V))i.set(V,new Set);return i.get(V).add(L),()=>i.get(V)?.delete(L)},W=(V,...L)=>{let E=i.get(V);if(E)for(let F of E)try{F(...L)}catch{}},B=(V)=>{try{return typeof V==="string"?JSON.parse(V):V}catch{return null}},w=()=>`${p}:${Date.now().toString(36)}:${(z$++&65535).toString(36)}`,v=()=>{if(c.size>gJ)c.delete(c.values().next().value)},P=()=>[...new Set([...$._census(),p])].sort(),_=(V,L,E)=>L.filter((F)=>g$(F,E)===V),S=(V,L,E)=>{if(V==null)return null;let F=(d)=>hQ(`${d}@${V}`),s=null,l=-1;for(let d of _(V,L,E)){let t=F(d);if(t>l)l=t,s=d}return s},H=(V)=>{let L=z.audience?.get(V);if(!L)return[];return Object.keys($.getPeers?.()||{}).filter((E)=>L.has(E))},b=(V,L)=>{if(V!==A&&!(z.isBridge&&z.bridges.some((y)=>l0(y)===V)))return;let E=B(L);if(!E?.id||!E?.t)return;if(c.has(E.id))return;c.add(E.id),v();let{t:F,id:s,ttl:l,data:d,origin:t,originCell:L$}=E,$$=z.cellId;if(F==="ping"&&d?.pingId&&d.target===p&&t!==p){let y={t:"pong",id:w(),ttl:K$(),data:{pingId:d.pingId,receivedAt:Date.now()},origin:p,originCell:$$},r=$.getPeers?.()?.[t]?[t]:H($$);U?.send(JSON.stringify(y),r)}if(F==="pong"&&d?.pingId){let y=Q$.get(d.pingId);if(y)clearTimeout(y.timeout),y.resolve(Date.now()-y.start),Q$.delete(d.pingId)}if(F==="msg"&&t!==p)O(d,t);if(!z.isBridge)return;if((l??0)<=0)return;let X$=(y,r,B$=null)=>{if(!y||!r.length)return;let q$={t:F,id:s,ttl:B$??(l??K$())-1,data:d,origin:t||p,originCell:L$||$$};y.send(JSON.stringify(q$),r)};if(V===A){for(let y of Y$($$))X$(j(y),H(y));return}X$(U,H($$));for(let y of Y$($$))if(l0(y)!==V)X$(j(y),H(y))},j=(V)=>{let L=l0(V),E=$.channel(L);if(!a.has(L))a.add(L),E.on("message",(F)=>b(L,F));return E},M=()=>{if(!z.cellId)return;if(A=l0(z.cellId),U=$.channel(A),!a.has(A))a.add(A),U.on("message",(V)=>b(A,V));if(z.isBridge)for(let V of Y$(z.cellId))j(V)},I=(V,L)=>{if(!V.cellId||!V.set.has(L))return!1;let E=`cell-${g$(L,V.C)}`;return E===V.cellId||V.bridges.includes(E)||A8(E,V.C).includes(V.cellId)&&S(g$(L,V.C),V.roster,V.C)===L},T=(V)=>z.set.size<2&&(Y.set?.size??0)<2||I(z,V)||Date.now()<K&&I(Y,V),x=()=>{let V=$.getPeers?.()||{};for(let L of Object.keys(V))if(!T(L))V[L].close?.()};q.admit=T;let m=()=>({epoch:z.epoch,cellId:z.cellId,isBridge:z.isBridge,bridges:z.bridges,roster:[...z.roster],cellSize:G,dynamicTTL:K$(),totalCells:z.C}),o=()=>{R=Date.now();for(let[V,L]of u){if(V===p)continue;W("mesh:peer-state",{id:V,cell:L.cell,bridges:L.bridges,timestamp:R})}},J$=(V)=>{let L=oJ(V.length,J);G=Math.ceil(V.length/L);let E=`cell-${g$(p,L)}`,F=new Map,s=new Set,l=new Map,d=(y)=>l.get(y)??l.set(y,new Set).get(y);for(let y of V)d(`cell-${g$(y,L)}`).add(y);let t=new Map,L$=(y)=>t.has(y)?t.get(y):t.set(y,S(y,V,L)).get(y);for(let y of new Set(V.map((r)=>g$(r,L)))){let r=`cell-${y}`;for(let B$ of A8(r,L)){if(d0(B$)<y)continue;for(let q$ of[L$(y),L$(d0(B$))]){if(!q$)continue;let T8=`cell-${g$(q$,L)}`===r?B$:r,p0=F.get(q$)??[];if(!p0.includes(T8))p0.push(T8);if(F.set(q$,p0),d(r).add(q$),d(B$).add(q$),r===E||B$===E)s.add(q$)}}}let $$=F.get(p)??[],X$=z.cellId!==E||String(z.bridges)!==String($$);Y=z,z={epoch:z.epoch+1,roster:V,set:new Set(V),key:V.join("|"),C:L,cellId:E,isBridge:$$.length>0,bridges:$$,edgeBridges:[...s],audience:l},X=Date.now(),u.clear();for(let y of V){let r=F.get(y)??[];u.set(y,{cell:`cell-${g$(y,L)}`,isBridge:r.length>0,bridges:r})}if(K=Date.now()+lJ,X$)M();log.info("\uD83D\uDD78️ [Cells] seal",{epoch:z.epoch,myCell:E,bridges:$$,C:L,roster:V.length}),o(),W("mesh:state",m())},U$=()=>{let V=P(),L=V.join("|");if(L===z.key)Z=0;else{let E=Date.now();if(Z||=E,L!==D)D=L,N=E;if(V.some((l)=>!z.set.has(l))||z.edgeBridges.some((l)=>!V.includes(l))||($._gone?.()??[]).some((l)=>z.set.has(l))?E-N>=mJ||E-Z>=hJ:E-Z>=cJ)Z=0,J$(V)}if(K&&Date.now()>=K)K=0,x()},f=()=>{if(C)return;C=setInterval(()=>{if(U$(),Date.now()-R>=dJ)o()},FJ)},G$=()=>{if(C)clearInterval(C),C=null},e=(V)=>{return new Promise((L,E)=>{let F=`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,s=Date.now(),l=setTimeout(()=>{Q$.delete(F),E(Error("Ping timeout"))},uJ);Q$.set(F,{start:s,resolve:L,reject:E,timeout:l,peerId:V});let d={t:"ping",id:w(),ttl:K$(),data:{pingId:F,target:V},origin:p,originCell:z.cellId};U?.send(JSON.stringify(d),H(z.cellId))})};return $.on?.("peer:join",()=>U$()),$.on?.("peer:leave",()=>U$()),J$(P()),f(),{send:(V)=>{let L={t:"msg",id:w(),ttl:K$(),data:V,origin:p,originCell:z.cellId},E=JSON.stringify(L);U.send(E,H(z.cellId)),b(A,E)},on:(V,L)=>V==="message"?W$(L):void 0,ping:e,getState:()=>({...m(),knownCells:new Set([...u.values()].map((V)=>V.cell)).size}),getPeerInfo:()=>new Map(u),getStableRoster:()=>[...z.roster],getKnownCells:()=>{let V=new Map;for(let[L,{cell:E}]of u)if(!V.has(E))V.set(E,{lastSeen:X,peerId:L});return V},getCellSize:()=>G,destroy:()=>{G$(),Q$.forEach((V)=>clearTimeout(V.timeout)),Q$.clear()}}}function cQ($,Q,q){let J={},G=c0({...$,admit:(Z)=>J.admit?.(Z)??!0},Q,q),z=$.overlay||{},Y=iJ(G,z,J),K=new Map;return{on:(Z,D)=>G.on(Z,D),off:(Z,D)=>G.off?.(Z,D),channel:(Z)=>{if(K.has(Z))return K.get(Z);let D=G.channel(Z),N={send:(R,X)=>{if(X){let U=[].concat(X),A=G.getPeers?.()||{};if(U.every((C)=>A[C]))return D.send(R,X)}Y.send({_ch:Z,_d:R,_t:X})},on:(R,X)=>{if(R==="message")Y.on("message",(U,A)=>{if(U?._ch!==Z)return;if(U._t&&![].concat(U._t).includes(p))return;X(U._d,A)}),D.on(R,X);else D.on(R,X)},off:(R,X)=>D.off?.(R,X),_original:D};return K.set(Z,N),N},get id(){return G.id},get peers(){return G.peers},getPeers:()=>G.getPeers?.()||{},mesh:Y,_room:G,getState:()=>Y.getState(),getPeerInfo:()=>Y.getPeerInfo(),ping:(Z)=>Y.ping(Z),leave:()=>{Y.destroy(),K.clear(),G.leave()},destroy:()=>{Y.destroy(),K.clear()}}}var Uq=($,Q,q)=>$?.cells||$?.overlay?cQ($,Q,q):c0($,Q,q);export{p as selfId,Uq as join,mQ as getRelaySockets}; |
+12
-12
@@ -7,3 +7,3 @@ # GenosDB (GDB) | ||
| Install: `npm i genosdb` · Current version: 0.22.3 · Runtime dependencies: none. | ||
| Install: `npm i genosdb` · Current version: 0.25.0 · Runtime dependencies: none. | ||
@@ -40,10 +40,10 @@ ## What it is good for | ||
| - [API reference](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-api-reference.md): every method, option and operator. | ||
| - [Documentation index](https://github.com/estebanrfp/gdb/blob/main/docs/index.md): all guides. | ||
| - [Examples](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-examples.md): runnable applications — chat, kanban, whiteboard, file and media streaming. | ||
| - [Zero-trust security model](https://github.com/estebanrfp/gdb/blob/main/docs/zero-trust-security-model.md): what each role can and cannot do. | ||
| - [GenosRTC architecture](https://github.com/estebanrfp/gdb/blob/main/docs/genosrtc-architecture.md): WebRTC transport and Nostr signaling. | ||
| - [Cellular Mesh](https://github.com/estebanrfp/gdb/blob/main/docs/genosrtc-cells.md): scaling beyond full-mesh limits. | ||
| - [Fallback Server](https://github.com/estebanrfp/gdb/blob/main/docs/genosdb-fallback-server.md): optional always-on peer, and running your own Nostr signaling relay. | ||
| - [Whitepaper](https://github.com/estebanrfp/gdb/blob/main/WHITEPAPER.md): architecture and design rationale. | ||
| - [API reference](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-api-reference.md): every method, option and operator. | ||
| - [Documentation index](https://github.com/estebanrfp/GenosDB/blob/main/docs/index.md): all guides. | ||
| - [Examples](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-examples.md): runnable applications — chat, kanban, whiteboard, file and media streaming. | ||
| - [Zero-trust security model](https://github.com/estebanrfp/GenosDB/blob/main/docs/zero-trust-security-model.md): what each role can and cannot do. | ||
| - [GenosRTC architecture](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosrtc-architecture.md): WebRTC transport and Nostr signaling. | ||
| - [Cellular Mesh](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosrtc-cells.md): scaling beyond full-mesh limits. | ||
| - [Fallback Server](https://github.com/estebanrfp/GenosDB/blob/main/docs/genosdb-fallback-server.md): optional always-on peer, and running your own Nostr signaling relay. | ||
| - [Whitepaper](https://github.com/estebanrfp/GenosDB/blob/main/WHITEPAPER.md): architecture and design rationale. | ||
| - [Articles](https://genosdb.com): concepts, comparisons and tutorials. | ||
@@ -53,4 +53,4 @@ | ||
| - [Migration guide](https://github.com/estebanrfp/gdb/blob/main/MIGRATION.md): moving from the removed `new GDB()` API. | ||
| - [Changelog](https://github.com/estebanrfp/gdb/blob/main/CHANGELOG.md) | ||
| - [Philosophy](https://github.com/estebanrfp/gdb/blob/main/PHILOSOPHY.md): why the source is closed and how collaboration works. | ||
| - [Migration guide](https://github.com/estebanrfp/GenosDB/blob/main/MIGRATION.md): moving from the removed `new GDB()` API. | ||
| - [Changelog](https://github.com/estebanrfp/GenosDB/blob/main/CHANGELOG.md) | ||
| - [Philosophy](https://github.com/estebanrfp/GenosDB/blob/main/PHILOSOPHY.md): why the source is closed and how collaboration works. |
+1
-1
| { | ||
| "name": "genosdb", | ||
| "version": "0.24.1", | ||
| "version": "0.25.0", | ||
| "description": "GenosDB (GDB): distributed graph database in real-time, peer-to-peer, scalable storage - efficient querying of complex relationships.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
2055787
0.03%