helia 6.0.21 → 6.0.22-44910cef
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +5 -5
- package/dist/index.min.js.map +3 -3
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.js +2 -2
- package/dist/src/utils/helia-defaults.js +1 -1
- package/dist/src/utils/libp2p-defaults.browser.d.ts +1 -1
- package/dist/src/utils/libp2p-defaults.browser.js +2 -2
- package/dist/src/utils/libp2p-defaults.d.ts +1 -1
- package/dist/src/utils/libp2p-defaults.js +2 -2
- package/dist/src/utils/libp2p.js +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +4 -4
- package/src/utils/helia-defaults.ts +2 -2
- package/src/utils/libp2p-defaults.browser.ts +3 -3
- package/src/utils/libp2p-defaults.ts +3 -3
- package/src/utils/libp2p.ts +1 -1
- package/src/version.ts +1 -1
- package/dist/typedoc-urls.json +0 -10
package/dist/index.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Helia = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
2
|
"use strict";var Helia=(()=>{var iS=Object.create;var xu=Object.defineProperty;var aS=Object.getOwnPropertyDescriptor;var cS=Object.getOwnPropertyNames;var lS=Object.getPrototypeOf,uS=Object.prototype.hasOwnProperty;var an=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),et=(r,e)=>{for(var t in e)xu(r,t,{get:e[t],enumerable:!0})},A6=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of cS(e))!uS.call(r,o)&&o!==t&&xu(r,o,{get:()=>e[o],enumerable:!(n=aS(e,o))||n.enumerable});return r};var Ln=(r,e,t)=>(t=r!=null?iS(lS(r)):{},A6(e||!r||!r.__esModule?xu(t,"default",{value:r,enumerable:!0}):t,r)),dS=r=>A6(xu({},"__esModule",{value:!0}),r);var _6=an((ZN,q0)=>{"use strict";var fS=Object.prototype.hasOwnProperty,Ht="~";function Qa(){}Object.create&&(Qa.prototype=Object.create(null),new Qa().__proto__||(Ht=!1));function hS(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function T6(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new hS(t,n||r,o),i=Ht?Ht+e:e;return r._events[i]?r._events[i].fn?r._events[i]=[r._events[i],s]:r._events[i].push(s):(r._events[i]=s,r._eventsCount++),r}function Lu(r,e){--r._eventsCount===0?r._events=new Qa:delete r._events[e]}function Lt(){this._events=new Qa,this._eventsCount=0}Lt.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)fS.call(t,n)&&e.push(Ht?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Lt.prototype.listeners=function(e){var t=Ht?Ht+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,s=n.length,i=new Array(s);o<s;o++)i[o]=n[o].fn;return i};Lt.prototype.listenerCount=function(e){var t=Ht?Ht+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Lt.prototype.emit=function(e,t,n,o,s,i){var a=Ht?Ht+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,d,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(u=1,d=new Array(l-1);u<l;u++)d[u-1]=arguments[u];c.fn.apply(c.context,d)}else{var f=c.length,h;for(u=0;u<f;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!d)for(h=1,d=new Array(l-1);h<l;h++)d[h-1]=arguments[h];c[u].fn.apply(c[u].context,d)}}return!0};Lt.prototype.on=function(e,t,n){return T6(this,e,t,n,!1)};Lt.prototype.once=function(e,t,n){return T6(this,e,t,n,!0)};Lt.prototype.removeListener=function(e,t,n,o){var s=Ht?Ht+e:e;if(!this._events[s])return this;if(!t)return Lu(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Lu(this,s);else{for(var a=0,c=[],l=i.length;a<l;a++)(i[a].fn!==t||o&&!i[a].once||n&&i[a].context!==n)&&c.push(i[a]);c.length?this._events[s]=c.length===1?c[0]:c:Lu(this,s)}return this};Lt.prototype.removeAllListeners=function(e){var t;return e?(t=Ht?Ht+e:e,this._events[t]&&Lu(this,t)):(this._events=new Qa,this._eventsCount=0),this};Lt.prototype.off=Lt.prototype.removeListener;Lt.prototype.addListener=Lt.prototype.on;Lt.prefixed=Ht;Lt.EventEmitter=Lt;typeof q0<"u"&&(q0.exports=Lt)});var X6=an((fM,j6)=>{j6.exports=function(r){if(!r)throw Error("hashlru must have a max value, of type number, greater than 0");var e=0,t=Object.create(null),n=Object.create(null);function o(s,i){t[s]=i,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(s){return t[s]!==void 0||n[s]!==void 0},remove:function(s){t[s]!==void 0&&(t[s]=void 0),n[s]!==void 0&&(n[s]=void 0)},get:function(s){var i=t[s];if(i!==void 0)return i;if((i=n[s])!==void 0)return o(s,i),i},set:function(s,i){t[s]!==void 0?t[s]=i:o(s,i)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var i7=an(Mc=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,f;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,f=c&255,[l,d,u,f].join(".")},i=function(c){var l,d,u,f,h,p;for(l=[],u=f=0;f<=3&&c.length!==0;u=++f){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),h=p[0],d=p[1],c=c.substring(d),l.push(h)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,d,u,f,h;for(f=0,l=10,d="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,d="7")),h=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)f=f*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")f=f*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")f=f*l+(10+t(c[u])-o)>>>0;else break;else break;if(f>4294967295)throw new Error("too large");u++}if(u===h)throw new Error("empty octet");return[f,u]},r=(function(){function c(l,d){var u,f,h,p;if(typeof l!="string")throw new Error("Missing `net' parameter");if(d||(p=l.split("/",2),l=p[0],d=p[1]),d||(d=32),typeof d=="string"&&d.indexOf(".")>-1){try{this.maskLong=i(d)}catch(g){throw u=g,new Error("Invalid mask: "+d)}for(f=h=32;h>=0;f=--h)if(this.maskLong===4294967295<<32-f>>>0){this.bitmask=f;break}}else if(d||d===0)this.bitmask=parseInt(d,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(g){throw u=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+d);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var d,u,f;for(f=i(this.first),u=i(this.last),d=0;f<=u;)l(a(f),f,d),d++,f++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c})(),Mc.ip2long=i,Mc.long2ip=a,Mc.Netmask=r}).call(Mc)});var th=an((QX,m3)=>{var XX=(function(){typeof m3<"u"&&(m3.exports=g);var r=86400,e=3200,t=146097*e/400,n=r*t,o=1e3*n,s=864e13,i=4294967296,a=1e6,c="000000000",l=Math.trunc||function(S){var x=S-S%1;return x==0&&(S<0||S===0&&1/S!=1/0)?-0:x},d=g.prototype,u=(g.fromDate=function(S){return new g(+S)},g.fromInt64BE=D(0,1,2,3,0,4),g.fromInt64LE=D(3,2,1,0,4,0),g.fromString=function(B){var x,L=new g,B=(B+="").replace(/^\s*[+\-]?\d+/,function(v){var v=+v,E=1970+(v-1970)%400;return L.year=v-E,E}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(P,v,E){return v<0&&(E*=-1),x=6e4*(60*+v+ +E),""}).replace(/\.\d+$/,function(P){return L.nano=+(P+c).substr(1,9),""}).split(/\D+/);if(1<B.length?B[1]--:B[1]=0,L.time=x=Date.UTC.apply(Date,B)-(x||0),isNaN(x))throw new TypeError("Invalid Date");return m(L)},g.fromTimeT=function(S){return T(S,0)},d.year=0,d.time=0,d.nano=0,d.addNano=function(S){return this.nano+=+S||0,this},d.getNano=function(){var S=m(this);return(S.time%1e3*a+ +S.nano+1e9)%1e9},d.getTimeT=function(){var x=m(this),S=Math.floor(x.time/1e3),x=x.year;return x&&(S+=x*t*r/e),S},d.getYear=function(){return this.toDate().getUTCFullYear()+this.year},d.toDate=function(){return w(m(this).time)},d.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},d.toString=function(S){var x=this,L=x.toDate(),B={H:function(){return $(L.getUTCHours())},L:function(){return z(L.getUTCMilliseconds(),3)},M:function(){return $(L.getUTCMinutes())},N:function(){return z(x.getNano(),9)},S:function(){return $(L.getUTCSeconds())},Y:function(){var P=x.getYear();return 999999<P?"+"+P:9999<P?"+"+z(P,6):0<=P?z(P,4):-999999<=P?"-"+z(-P,6):P},a:function(){return h[L.getUTCDay()]},b:function(){return f[L.getUTCMonth()]},d:function(){return $(L.getUTCDate())},e:function(){return(function(P){return(9<P?"":" ")+(0|P)})(L.getUTCDate())},m:function(){return $(L.getUTCMonth()+1)}};return(function P(v){return v.replace(/%./g,function(E){var _=E[1],b=p[_],_=B[_];return b?P(b):_?_():E})})(S||u)},d.writeInt64BE=I(0,1,2,3,0,4),d.writeInt64LE=I(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
-
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(S,x,L){var B=this;if(!(B instanceof g))return new g(S,x,L);B.time=+S||0,B.nano=+x||0,B.year=+L||0,m(B)}function m(S){var x,L,B,P=S.year,v=S.time,E=S.nano,b=((E<0||a<=E)&&(E-=(L=Math.floor(E/a))*a,v+=L,L=1),P%e);return(v<-s||s<v||b)&&((x=l(v/o))&&(P+=x*e,v-=x*o),(B=w(v)).setUTCFullYear(b+B.getUTCFullYear()),B=(v=+B)+(x=l((P-=b)/e))*o,x&&-s<=B&&B<=s&&(P-=x*e,v=B),L=1),L&&(S.year=P,S.time=v,S.nano=E),S}function w(S){var x=new Date(0);return x.setTime(S),x}function T(P,B){P=+P||0;var L=l((B=(B|0)*i)/n)+l(P/n),B=B%n+P%n,P=l(B/n);return P&&(L+=P,B-=P*n),new g(1e3*B,0,L*e)}function I(S,x,L,B,P,v){return function(b,_){var O=m(this);b=b||new Array(8),F(b,_|=0);var k=Math.floor(O.time/1e3),O=O.year*(t*r/e),M=l(O/i)+l(k/i),O=O%i+k%i,k=Math.floor(O/i);return k&&(M+=k,O-=k*i),E(b,_+P,M),E(b,_+v,O),b};function E(b,_,M){b[_+S]=M>>24&255,b[_+x]=M>>16&255,b[_+L]=M>>8&255,b[_+B]=255&M}}function D(S,x,L,B,P,v){return function(b,_){F(b,_|=0);var M=E(b,_+P);return T(E(b,_+v),M)};function E(b,_){return 16777216*b[_+S]+(b[_+x]<<16|b[_+L]<<8|b[_+B])}}function F(S,x){if(S=S&&S.length,S==null)throw new TypeError("Invalid Buffer");if(S<x+8)throw new RangeError("Out of range")}function $(S){return(9<S?"":"0")+(0|S)}function z(S,x){return(c+(0|S)).substr(-x)}})()});var Yw=an((gse,Gw)=>{"use strict";function lR(r){return r>=55296&&r<=56319}function uR(r){return r>=56320&&r<=57343}Gw.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],lR(i)&&uR(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Xw=an((yse,jw)=>{"use strict";function dR(r){return r>=55296&&r<=56319}function fR(r){return r>=56320&&r<=57343}jw.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),fR(o)?s!=null&&dR(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Zw=an((wse,Qw)=>{"use strict";var hR=Yw(),pR=Xw();Qw.exports=hR.bind(null,pR)});var tb=an((bse,eb)=>{"use strict";var mR=Zw(),gR=/[\/\?<>\\:\*\|"]/g,yR=/[\x00-\x1f\x80-\x9f]/g,wR=/^\.+$/,bR=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,ER=/[\. ]+$/;function Jw(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(gR,e).replace(yR,e).replace(wR,e).replace(bR,e).replace(ER,e);return mR(t,255)}eb.exports=function(r,e){var t=e&&e.replacement||"",n=Jw(r,t);return t===""?n:Jw(n,"")}});var rb=an(Aa=>{"use strict";var vR="[object ArrayBuffer]",ao=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===vR}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},j3="string",SR=/^[0-9a-f\s]+$/i,AR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,IR=/^[a-zA-Z0-9-_]+$/,i1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=ao.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Or=class{static toString(e,t=!1){let n=ao.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},a1=class r{static isHex(e){return typeof e===j3&&SR.test(e)}static isBase64(e){return typeof e===j3&&AR.test(e)}static isBase64Url(e){return typeof e===j3&&IR.test(e)}static ToString(e,t="utf8"){let n=ao.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Or.toString(n,!0);case"utf16":case"utf16be":return Or.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Or.fromString(e,!0);case"utf16":case"utf16be":return Or.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=ao.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return i1.fromString(e);case"utf16":case"utf16be":return Or.fromString(e);case"utf16le":case"usc2":return Or.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return i1.toString(e);case"utf16":case"utf16be":return Or.toString(e);case"utf16le":case"usc2":return Or.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=ao.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=ao.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Or.toString(e,t)}static FromUtf16String(e,t=!1){return Or.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};a1.DEFAULT_UTF8_ENCODING="utf8";function TR(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function _R(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function CR(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}Aa.BufferSourceConverter=ao;Aa.Convert=a1;Aa.assign=TR;Aa.combine=_R;Aa.isEqual=CR});var wx=an(Rn=>{"use strict";Object.defineProperty(Rn,"__esModule",{value:!0});Rn.parseCookie=gx;Rn.parse=gx;Rn.stringifyCookie=jL;Rn.stringifySetCookie=Fp;Rn.serialize=Fp;Rn.parseSetCookie=XL;Rn.stringifySetCookie=Fp;Rn.serialize=Fp;var px=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,mx=/^[\u0021-\u003A\u003C-\u007E]*$/,qL=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,WL=/^[\u0020-\u003A\u003D-\u007E]*$/,zL=/^-?\d+$/,GL=Object.prototype.toString,YL=(()=>{let r=function(){};return r.prototype=Object.create(null),r})();function gx(r,e){let t=new YL,n=r.length;if(n<2)return t;let o=e?.decode||yx,s=0;do{let i=q4(r,s,n);if(i===-1)break;let a=H4(r,s,n);if(i>a){s=r.lastIndexOf(";",i-1)+1;continue}let c=Xo(r,s,i);t[c]===void 0&&(t[c]=o(Xo(r,i+1,a))),s=a+1}while(s<n);return t}function jL(r,e){let t=e?.encode||encodeURIComponent,n=[];for(let o of Object.keys(r)){let s=r[o];if(s===void 0)continue;if(!px.test(o))throw new TypeError(`cookie name is invalid: ${o}`);let i=t(s);if(!mx.test(i))throw new TypeError(`cookie val is invalid: ${s}`);n.push(`${o}=${i}`)}return n.join("; ")}function Fp(r,e,t){let n=typeof r=="object"?r:{...t,name:r,value:String(e)},s=(typeof e=="object"?e:t)?.encode||encodeURIComponent;if(!px.test(n.name))throw new TypeError(`argument name is invalid: ${n.name}`);let i=n.value?s(n.value):"";if(!mx.test(i))throw new TypeError(`argument val is invalid: ${n.value}`);let a=n.name+"="+i;if(n.maxAge!==void 0){if(!Number.isInteger(n.maxAge))throw new TypeError(`option maxAge is invalid: ${n.maxAge}`);a+="; Max-Age="+n.maxAge}if(n.domain){if(!qL.test(n.domain))throw new TypeError(`option domain is invalid: ${n.domain}`);a+="; Domain="+n.domain}if(n.path){if(!WL.test(n.path))throw new TypeError(`option path is invalid: ${n.path}`);a+="; Path="+n.path}if(n.expires){if(!QL(n.expires)||!Number.isFinite(n.expires.valueOf()))throw new TypeError(`option expires is invalid: ${n.expires}`);a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.partitioned&&(a+="; Partitioned"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():void 0){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${n.priority}`)}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:case"strict":a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"none":a+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${n.sameSite}`)}return a}function XL(r,e){let t=e?.decode||yx,n=r.length,o=H4(r,0,n),s=q4(r,0,o),i=s===-1?{name:"",value:t(Xo(r,0,o))}:{name:Xo(r,0,s),value:t(Xo(r,s+1,o))},a=o+1;for(;a<n;){let c=H4(r,a,n),l=q4(r,a,c),d=l===-1?Xo(r,a,c):Xo(r,a,l),u=l===-1?void 0:Xo(r,l+1,c);switch(d.toLowerCase()){case"httponly":i.httpOnly=!0;break;case"secure":i.secure=!0;break;case"partitioned":i.partitioned=!0;break;case"domain":i.domain=u;break;case"path":i.path=u;break;case"max-age":u&&zL.test(u)&&(i.maxAge=Number(u));break;case"expires":if(!u)break;let f=new Date(u);Number.isFinite(f.valueOf())&&(i.expires=f);break;case"priority":if(!u)break;let h=u.toLowerCase();(h==="low"||h==="medium"||h==="high")&&(i.priority=h);break;case"samesite":if(!u)break;let p=u.toLowerCase();(p==="lax"||p==="strict"||p==="none")&&(i.sameSite=p);break}a=c+1}return i}function H4(r,e,t){let n=r.indexOf(";",e);return n===-1?t:n}function q4(r,e,t){let n=r.indexOf("=",e);return n<t?n:-1}function Xo(r,e,t){let n=e,o=t;do{let s=r.charCodeAt(n);if(s!==32&&s!==9)break}while(++n<o);for(;o>n;){let s=r.charCodeAt(o-1);if(s!==32&&s!==9)break;o--}return r.slice(n,o)}function yx(r){if(r.indexOf("%")===-1)return r;try{return decodeURIComponent(r)}catch{return r}}function QL(r){return GL.call(r)==="[object Date]"}});var fN={};et(fN,{DEFAULT_CID_PEER_FILTER_SIZE:()=>Sg,DEFAULT_SESSION_MAX_PROVIDERS:()=>vg,DEFAULT_SESSION_MIN_PROVIDERS:()=>xg,InsufficientProvidersError:()=>rl,InvalidCodecError:()=>Ag,NoRoutersAvailableError:()=>Vo,UnknownCodecError:()=>ol,UnknownHashAlgorithmError:()=>nl,createHelia:()=>dN,heliaDefaults:()=>E6,libp2pDefaults:()=>H0});var I6=Symbol.for("@libp2p/connection");var Dn=Symbol.for("@libp2p/content-routing");var Vt=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},vu=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},Su=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},A=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},Nn=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},za=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}},Ga=class extends Error{static name="UnsupportedOperationError";constructor(e="Unsupported operation"){super(e),this.name="UnsupportedOperationError"}};var is=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},di=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Br=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},fi=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var cn=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},Ya=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}},Le=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},hi=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},ln=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Au=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},bo=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},pi=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},de=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},as=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},un=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Ur=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var Eo=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},cs=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},ja=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Iu=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},mi=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Fr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Tu=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},xo=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},_u=class extends xo{constructor(e,t){super(!0,e,t)}},Cu=class extends xo{constructor(e,t){super(!1,e,t)}};var ls=Symbol.for("@libp2p/peer-discovery");var ku=Symbol.for("@libp2p/peer-id");function Rt(r){return!!r?.[ku]}var On=Symbol.for("@libp2p/peer-routing");var us="keep-alive";function Pu(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function at(...r){let e=[];for(let t of r)Pu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function lt(...r){let e=[];for(let t of r)Pu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var vo=Symbol.for("@libp2p/transport");var Xa;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Xa||(Xa={}));var ie=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var me=Symbol.for("@libp2p/service-capabilities"),ur=Symbol.for("@libp2p/service-dependencies");var H=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Ru=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"};var W0=Ln(_6(),1);var z0=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},C6=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function qt(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,d=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){f(C6(i));return}if(i&&(c=()=>{f(C6(i))},i.addEventListener("abort",c,{once:!0})),r.then(u,f),t===Number.POSITIVE_INFINITY)return;let h=new z0;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(p){f(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${t} milliseconds`,f(h))},t)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}function G0(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Za=class{#e=[];enqueue(e,t){let{priority:n=0,id:o}=t??{},s={priority:n,id:o,run:e};if(this.size===0||this.#e[this.size-1].priority>=n){this.#e.push(s);return}let i=G0(this.#e,s,(a,c)=>c.priority-a.priority);this.#e.splice(i,0,s)}setPriority(e,t){let n=this.#e.findIndex(s=>s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var ds=class extends W0.default{#e;#t;#r=0;#a;#c=!1;#m=!1;#u;#T=0;#b=0;#d;#f;#l;#i=[];#s=0;#n;#_;#o=0;#y;#h;#L=1n;#w=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Za,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#u=e.interval,this.#l=e.strict,this.#n=new e.queueClass,this.#_=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#$()}#E(e){for(;this.#s<this.#i.length;){let n=this.#i[this.#s];if(n!==void 0&&e-n>=this.#u)this.#s++;else break}(this.#s>100&&this.#s>this.#i.length/2||this.#s===this.#i.length)&&(this.#i=this.#i.slice(this.#s),this.#s=0)}#D(e){this.#l?this.#i.push(e):this.#r++}#N(){this.#l?this.#i.length>this.#s&&this.#i.pop():this.#r>0&&this.#r--}#x(){return this.#i.length-this.#s}get#O(){return this.#t?!0:this.#l?this.#x()<this.#a:this.#r<this.#a}get#M(){return this.#o<this.#y}#B(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#A(),this.emit("next")}#U(){this.#f=void 0,this.#P(),this.#k()}#F(e){if(this.#l){if(this.#E(e),this.#x()>=this.#a){let n=this.#i[this.#s],o=this.#u-(e-n);return this.#v(o),!0}return!1}if(this.#d===void 0){let t=this.#T-e;if(t<0){if(this.#b>0){let n=e-this.#b;if(n<this.#u)return this.#v(this.#u-n),!0}this.#r=this.#e?this.#o:0}else return this.#v(t),!0}return!1}#v(e){this.#f===void 0&&(this.#f=setTimeout(()=>{this.#U()},e))}#S(){this.#d&&(clearInterval(this.#d),this.#d=void 0)}#C(){this.#f&&(clearTimeout(this.#f),this.#f=void 0)}#A(){if(this.#n.size===0){if(this.#S(),this.emit("empty"),this.#o===0){if(this.#C(),this.#l&&this.#s>0){let t=Date.now();this.#E(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){let t=Date.now(),n=!this.#F(t);if(this.#O&&this.#M){let o=this.#n.dequeue();this.#t||(this.#D(t),this.#g()),this.emit("active"),o(),n&&this.#k(),e=!0}}return e}#k(){this.#t||this.#d!==void 0||this.#l||(this.#d=setInterval(()=>{this.#P()},this.#u),this.#T=Date.now()+this.#u)}#P(){this.#l||(this.#r===0&&this.#o===0&&this.#d&&this.#S(),this.#r=this.#e?this.#o:0),this.#I(),this.#g()}#I(){for(;this.#A(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#I()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#L++).toString()},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`);this.#n.enqueue(async()=>{this.#o++,this.#w.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let i;try{try{t.signal?.throwIfAborted()}catch(l){throw this.#K(),this.#w.delete(s),l}this.#b=Date.now();let a=e({signal:t.signal});if(t.timeout&&(a=qt(Promise.resolve(a),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:l}=t;a=Promise.race([a,new Promise((d,u)=>{i=()=>{u(l.reason)},l.addEventListener("abort",i,{once:!0})})])}let c=await a;n(c),this.emit("completed",c)}catch(a){o(a),this.emit("error",a)}finally{i&&t.signal?.removeEventListener("abort",i),this.#w.delete(s),queueMicrotask(()=>{this.#B()})}},t),this.emit("add"),this.#A()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#h?(this.#h=!1,this.#I(),this):this}pause(){this.#h=!0}clear(){this.#n=new this.#_,this.#S(),this.#R(),this.emit("empty"),this.#o===0&&(this.#C(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#n.size!==0&&await this.#p("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#p("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#p("idle")}async onPendingZero(){this.#o!==0&&await this.#p("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#p("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#p("rateLimitCleared")}onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#p(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#h}#$(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#g()}),this.on("next",()=>{this.#g()}))}#g(){this.#t||this.#m||(this.#m=!0,queueMicrotask(()=>{this.#m=!1,this.#R()}))}#K(){this.#t||(this.#N(),this.#g())}#R(){let e=this.#c;if(this.#t||this.#n.size===0){e&&(this.#c=!1,this.emit("rateLimitCleared"));return}let t;if(this.#l){let o=Date.now();this.#E(o),t=this.#x()}else t=this.#r;let n=t>=this.#a;n!==e&&(this.#c=n,this.emit(n?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#c}get isSaturated(){return this.#o===this.#y&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#w.values()].map(e=>({...e}))}};function Du(r){let e=[dr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var J0={};et(J0,{base10:()=>ES});var uO=new Uint8Array(0);function k6(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function $r(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function P6(r){return new TextEncoder().encode(r)}function R6(r){return new TextDecoder().decode(r)}function pS(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var g=0,m=0,w=0,T=p.length;w!==T&&p[w]===0;)w++,g++;for(var I=(T-w)*d+1>>>0,D=new Uint8Array(I);w!==T;){for(var F=p[w],$=0,z=I-1;(F!==0||$<m)&&z!==-1;z--,$++)F+=256*D[z]>>>0,D[z]=F%a>>>0,F=F/a>>>0;if(F!==0)throw new Error("Non-zero carry");m=$,w++}for(var S=I-m;S!==I&&D[S]===0;)S++;for(var x=c.repeat(g);S<I;++S)x+=r.charAt(D[S]);return x}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var g=0;if(p[g]!==" "){for(var m=0,w=0;p[g]===c;)m++,g++;for(var T=(p.length-g)*l+1>>>0,I=new Uint8Array(T);p[g];){var D=t[p.charCodeAt(g)];if(D===255)return;for(var F=0,$=T-1;(D!==0||F<w)&&$!==-1;$--,F++)D+=a*I[$]>>>0,I[$]=D%256>>>0,D=D/256>>>0;if(D!==0)throw new Error("Non-zero carry");w=F,g++}if(p[g]!==" "){for(var z=T-w;z!==T&&I[z]===0;)z++;for(var S=new Uint8Array(m+(T-z)),x=m;z!==T;)S[x++]=I[z++];return S}}}function h(p){var g=f(p);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var mS=pS,gS=mS,L6=gS;var j0=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},X0=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return D6(this,e)}},Q0=class{decoders;constructor(e){this.decoders=e}or(e){return D6(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function D6(r,e){return new Q0({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Z0=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new j0(e,t,n),this.decoder=new X0(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function gi({name:r,prefix:e,encode:t,decode:n}){return new Z0(r,e,t,n)}function So({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=L6(t,r);return gi({prefix:e,name:r,encode:n,decode:s=>$r(o(s))})}function yS(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let d=e[r[l]];if(d===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function wS(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function bS(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Xe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=bS(n);return gi({prefix:e,name:r,encode(s){return wS(s,n,t)},decode(s){return yS(s,o,t,r)}})}var ES=So({prefix:"9",name:"base10",alphabet:"0123456789"});var e2={};et(e2,{base16:()=>xS,base16upper:()=>vS});var xS=Xe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),vS=Xe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var t2={};et(t2,{base2:()=>SS});var SS=Xe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var r2={};et(r2,{base256emoji:()=>CS});var N6=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),AS=N6.reduce((r,e,t)=>(r[t]=e,r),[]),IS=N6.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function TS(r){return r.reduce((e,t)=>(e+=AS[t],e),"")}function _S(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=IS[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var CS=gi({prefix:"\u{1F680}",name:"base256emoji",encode:TS,decode:_S});var n2={};et(n2,{base32:()=>ut,base32hex:()=>LS,base32hexpad:()=>NS,base32hexpadupper:()=>OS,base32hexupper:()=>DS,base32pad:()=>PS,base32padupper:()=>RS,base32upper:()=>kS,base32z:()=>MS});var ut=Xe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),kS=Xe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),PS=Xe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),RS=Xe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),LS=Xe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),DS=Xe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),NS=Xe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),OS=Xe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),MS=Xe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var o2={};et(o2,{base36:()=>Ar,base36upper:()=>BS});var Ar=So({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),BS=So({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var s2={};et(s2,{base58btc:()=>De,base58flickr:()=>US});var De=So({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),US=So({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var i2={};et(i2,{base64:()=>rt,base64pad:()=>Ja,base64url:()=>ec,base64urlpad:()=>FS});var rt=Xe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ja=Xe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ec=Xe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),FS=Xe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var a2={};et(a2,{base8:()=>$S});var $S=Xe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var c2={};et(c2,{identity:()=>KS});var KS=gi({prefix:"\0",name:"identity",encode:r=>R6(r),decode:r=>P6(r)});var Nu={};et(Nu,{code:()=>l2,decode:()=>zS,encode:()=>WS,name:()=>qS});var VS=new TextEncoder,HS=new TextDecoder,qS="json",l2=512;function WS(r){return VS.encode(JSON.stringify(r))}function zS(r){return JSON.parse(HS.decode(r))}var fs={};et(fs,{code:()=>Mn,decode:()=>jS,encode:()=>YS,name:()=>GS});var GS="raw",Mn=85;function YS(r){return $r(r)}function jS(r){return $r(r)}var f2={};et(f2,{identity:()=>dt});var He={};et(He,{Digest:()=>hs,create:()=>Wt,decode:()=>ke,equals:()=>d2,hasCode:()=>pA});var XS=B6,O6=128,QS=127,ZS=~QS,JS=Math.pow(2,31);function B6(r,e,t){e=e||[],t=t||0;for(var n=t;r>=JS;)e[t++]=r&255|O6,r/=128;for(;r&ZS;)e[t++]=r&255|O6,r>>>=7;return e[t]=r|0,B6.bytes=t-n+1,e}var eA=u2,tA=128,M6=127;function u2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw u2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&M6)<<o:(i&M6)*Math.pow(2,o),o+=7}while(i>=tA);return u2.bytes=s-n,t}var rA=Math.pow(2,7),nA=Math.pow(2,14),oA=Math.pow(2,21),sA=Math.pow(2,28),iA=Math.pow(2,35),aA=Math.pow(2,42),cA=Math.pow(2,49),lA=Math.pow(2,56),uA=Math.pow(2,63),dA=function(r){return r<rA?1:r<nA?2:r<oA?3:r<sA?4:r<iA?5:r<aA?6:r<cA?7:r<lA?8:r<uA?9:10},fA={encode:XS,decode:eA,encodingLength:dA},hA=fA,tc=hA;function rc(r,e=0){return[tc.decode(r,e),tc.decode.bytes]}function yi(r,e,t=0){return tc.encode(r,e,t),e}function wi(r){return tc.encodingLength(r)}function Wt(r,e){let t=e.byteLength,n=wi(r),o=n+wi(t),s=new Uint8Array(o+t);return yi(r,s,0),yi(t,s,n),s.set(e,o),new hs(r,t,e,s)}function ke(r){let e=$r(r),[t,n]=rc(e),[o,s]=rc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new hs(t,o,i,e)}function d2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&k6(r.bytes,t.bytes)}}var hs=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function pA(r,e){return r.code===e}var U6=0,mA="identity",F6=$r;function gA(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Wt(U6,F6(r))}var dt={code:U6,name:mA,encode:F6,digest:gA};var p2={};et(p2,{sha256:()=>ze,sha512:()=>Mu});var yA=20;function nc({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new h2(r,e,t,n,o)}var h2=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??yA,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?$6(n,this.code,t?.truncate):n.then(o=>$6(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function $6(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Wt(e,r)}function V6(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ze=nc({name:"sha2-256",code:18,encode:V6("SHA-256")}),Mu=nc({name:"sha2-512",code:19,encode:V6("SHA-512")});function H6(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return bA(t,m2(r),e??De.encoder);default:return EA(t,m2(r),e??ut.encoder)}}var q6=new WeakMap;function m2(r){let e=q6.get(r);if(e==null){let t=new Map;return q6.set(r,t),t}return e}var G=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==oc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xA)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Wt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&d2(e.multihash,n.multihash)}toString(e){return H6(this,e)}toJSON(){return{"/":H6(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??W6(n,o,s.bytes))}else if(t[vA]===!0){let{version:n,multihash:o,code:s}=t,i=ke(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==oc)throw new Error(`Version 0 CID must use dag-pb (code: ${oc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=W6(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,oc,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=$r(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new hs(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=rc(e.subarray(t));return t+=f,u},o=n(),s=oc;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=wA(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return m2(s).set(n,e),s}};function wA(r,e){switch(r[0]){case"Q":{let t=e??De;return[De.prefix,t.decode(`${De.prefix}${r}`)]}case De.prefix:{let t=e??De;return[De.prefix,t.decode(r)]}case ut.prefix:{let t=e??ut;return[ut.prefix,t.decode(r)]}case Ar.prefix:{let t=e??Ar;return[Ar.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function bA(r,e,t){let{prefix:n}=t;if(n!==De.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function EA(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var oc=112,xA=18;function W6(r,e,t){let n=wi(r),o=n+wi(e),s=new Uint8Array(o+t.byteLength);return yi(r,s,0),yi(e,s,n),s.set(t,o),s}var vA=Symbol.for("@ipld/js-cid/CID");var ps={...c2,...t2,...a2,...J0,...e2,...n2,...o2,...s2,...i2,...r2},GO={...p2,...f2};function ae(r=0){return new Uint8Array(r)}function Ge(r=0){return new Uint8Array(r)}function G6(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var z6=G6("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),g2=G6("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ge(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),SA={utf8:z6,"utf-8":z6,hex:ps.base16,latin1:g2,ascii:g2,binary:g2,...ps},Bu=SA;function R(r,e="utf8"){let t=Bu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var y2=60;function Uu(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:dr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:dr[e.type],TTL:e.TTL??e.ttl??y2,data:e.data instanceof Uint8Array?R(e.data):e.data}))}}var AA=4;function w2(r,e={}){let t=new ds({concurrency:e.queryConcurrency??AA});return async(n,o={})=>{let s=o?.logger?.forComponent("dns:dns-json-over-https"),i=new URLSearchParams;i.set("name",n),Du(o.types).forEach(c=>{i.append("type",dr[c])}),o.onProgress?.(new H("dns:query",n)),s?.("GET %s",`${r}?${i}`);let a=await t.add(async()=>{let c=await fetch(`${r}?${i}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(s?.("GET %s %d",c.url,c.status),c.status!==200)throw new Error(`Unexpected HTTP status: ${c.status} - ${c.statusText}`);let l=Uu(await c.json());return o.onProgress?.(new H("dns:response",l)),l},{signal:o.signal});if(a==null)throw new Error("No DNS response received");return a}}function Y6(){return[w2("https://cloudflare-dns.com/dns-query"),w2("https://dns.google/resolve")]}var Q6=Ln(X6(),1);var b2=class{lru;constructor(e){this.lru=(0,Q6.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Uu({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:dr[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??y2)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Z6(r){return new b2(r)}var IA=1e3,Fu=class{resolvers;cache;logger;constructor(e){this.resolvers={},this.cache=Z6(e.cacheSize??IA),this.logger=e.logger,Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Y6())}async query(e,t={}){let n=Du(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new H("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,logger:this.logger,types:n});for(let d of l.Answer)this.cache.add(e,d);return l}catch(l){a.push(l),t.onProgress?.(new H("dns:error",l))}}throw new Ru(a,`DNS lookup of ${e} ${n} failed`)}};var dr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(dr||(dr={}));function $u(r={}){return new Fu(r)}function TA(r){return r[Symbol.asyncIterator]!=null}function _A(r){if(TA(r))return(async()=>{for await(let e of r);})();for(let e of r);}var er=_A;var sc=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},ic=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Ku=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var J6={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Ku("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var nt=J6;function ee(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Oe(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Ge(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var t5=Symbol.for("@achingbrain/uint8arraylist");function e5(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function bi(r){return!!r?.[t5]}var X=class r{bufs;length;[t5]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(bi(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(bi(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=e5(this.bufs,e);return t.buf[t.index]}set(e,t){let n=e5(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(bi(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Oe(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Oe(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,d=t>a&&t<=c;if(l&&d){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!bi(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ae(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ae(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ee(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function C(r,e="utf8"){let t=Bu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var kA=parseInt("11111",2),E2=parseInt("10000000",2),PA=parseInt("01111111",2),r5={0:ac,1:ac,2:RA,3:NA,4:OA,5:DA,6:LA,16:ac,22:ac,48:ac};function Ir(r,e={offset:0}){let t=r[e.offset]&kA;if(e.offset++,r5[t]!=null)return r5[t](r,e);throw new Error("No decoder for tag "+t)}function cc(r,e){let t=0;if((r[e.offset]&E2)===E2){let n=r[e.offset]&PA,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function ac(r,e){cc(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=Ir(r,e);if(n===null)break;t.push(n)}return t}function RA(r,e){let t=cc(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function LA(r,e){let t=cc(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function DA(r,e){return e.offset++,null}function NA(r,e){let t=cc(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function OA(r,e){let t=cc(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function MA(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new X;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Vu(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=MA(r.byteLength);return new X(Uint8Array.from([e.byteLength|E2]),e)}function zt(r){let e=new X,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new X(Uint8Array.from([2]),Vu(e),e)}function lc(r){let e=Uint8Array.from([0]),t=new X(e,r);return new X(Uint8Array.from([3]),Vu(t),t)}function n5(r){return new X(Uint8Array.from([4]),Vu(r),r)}function Kr(r,e=48){let t=new X;for(let n of r)t.append(n);return new X(Uint8Array.from([e]),Vu(t),t)}var o5="1.2.840.10045.3.1.7",s5="1.3.132.0.34",i5="1.3.132.0.35";async function a5(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function c5(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function l5(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var BA=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),UA=Uint8Array.from([6,5,43,129,4,0,34]),FA=Uint8Array.from([6,5,43,129,4,0,35]),u5={ext:!0,kty:"EC",crv:"P-256"},d5={ext:!0,kty:"EC",crv:"P-384"},f5={ext:!0,kty:"EC",crv:"P-521"},Ei=32,xi=48,vi=66;function h5(r){let e=Ir(r);return x2(e)}function x2(r){let e=r[1],t=R(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===Ei)return s=R(n.subarray(o,o+Ei),"base64url"),i=R(n.subarray(o+Ei),"base64url"),new gs({...u5,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===xi)return s=R(n.subarray(o,o+xi),"base64url"),i=R(n.subarray(o+xi),"base64url"),new gs({...d5,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===vi)return s=R(n.subarray(o,o+vi),"base64url"),i=R(n.subarray(o+vi),"base64url"),new gs({...f5,key_ops:["sign"],d:t,x:s,y:i});throw new A(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function v2(r){let e=Ir(r);return p5(e)}function p5(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===Ei*2+1)return n=R(e.subarray(t,t+Ei),"base64url"),o=R(e.subarray(t+Ei),"base64url"),new ms({...u5,key_ops:["verify"],x:n,y:o});if(e.byteLength===xi*2+1)return n=R(e.subarray(t,t+xi),"base64url"),o=R(e.subarray(t+xi),"base64url"),new ms({...d5,key_ops:["verify"],x:n,y:o});if(e.byteLength===vi*2+1)return n=R(e.subarray(t,t+vi),"base64url"),o=R(e.subarray(t+vi),"base64url"),new ms({...f5,key_ops:["verify"],x:n,y:o});throw new A(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function m5(r){return Kr([zt(Uint8Array.from([1])),n5(C(r.d??"","base64url")),Kr([y5(r.crv)],160),Kr([lc(new X(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function g5(r){return Kr([zt(Uint8Array.from([1])),Kr([y5(r.crv)],160),Kr([lc(new X(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function y5(r){if(r==="P-256")return BA;if(r==="P-384")return UA;if(r==="P-521")return FA;throw new A(`Invalid curve ${r}`)}async function w5(r="P-256"){let e=await a5(r);return new gs(e.privateKey)}var ms=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=g5(this.jwk)),this._raw}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}async verify(e,t,n){return l5(this.jwk,t,e,n)}},gs=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new ms({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=m5(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}async sign(e,t){return c5(this.jwk,e,t)}};function ys(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Dt(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function ce(r,e,t=""){let n=ys(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Un(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");Dt(r.outputLen),Dt(r.blockLen)}function Si(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function E5(r,e){ce(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Nt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function ws(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Vr(r,e){return r<<32-e|r>>>e}function Hu(r,e){return r<<e|r>>>32-e>>>0}var x5=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",$A=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Fn(r){if(ce(r),x5)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=$A[r[t]];return e}var Bn={_0:48,_9:57,A:65,F:70,a:97,f:102};function b5(r){if(r>=Bn._0&&r<=Bn._9)return r-Bn._0;if(r>=Bn.A&&r<=Bn.F)return r-(Bn.A-10);if(r>=Bn.a&&r<=Bn.f)return r-(Bn.a-10)}function $n(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(x5)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=b5(r.charCodeAt(s)),a=b5(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var KA=async()=>{};async function v5(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await KA(),n+=s)}}function VA(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function S2(r,e=""){return typeof r=="string"?VA(r):ce(r,void 0,e)}function tr(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];ce(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function S5(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options must be object or undefined");return Object.assign(r,e)}function uc(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function dn(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var A2=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function qu(r,e,t){return r&e^~r&t}function Wu(r,e,t){return r&e^r&t^e&t}var bs=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ws(this.buffer)}update(e){Si(this),ce(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ws(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),E5(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,Nt(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=ws(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Kn=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var bt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var zu=BigInt(4294967295),A5=BigInt(32);function HA(r,e=!1){return e?{h:Number(r&zu),l:Number(r>>A5&zu)}:{h:Number(r>>A5&zu)|0,l:Number(r&zu)|0}}function I5(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=HA(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var I2=(r,e,t)=>r>>>t,T2=(r,e,t)=>r<<32-t|e>>>t,Es=(r,e,t)=>r>>>t|e<<32-t,xs=(r,e,t)=>r<<32-t|e>>>t,dc=(r,e,t)=>r<<64-t|e>>>t-32,fc=(r,e,t)=>r>>>t-32|e<<64-t;function fn(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var T5=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),_5=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,C5=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),k5=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,P5=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),R5=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var WA=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]),Ao=new Uint32Array(64),_2=class extends bs{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)Ao[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=Ao[u-15],h=Ao[u-2],p=Vr(f,7)^Vr(f,18)^f>>>3,g=Vr(h,17)^Vr(h,19)^h>>>10;Ao[u]=g+Ao[u-7]+p+Ao[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Vr(a,6)^Vr(a,11)^Vr(a,25),h=d+f+qu(a,c,l)+WA[u]+Ao[u]|0,g=(Vr(n,2)^Vr(n,13)^Vr(n,22))+Wu(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+g|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){Nt(Ao)}destroy(){this.set(0,0,0,0,0,0,0,0),Nt(this.buffer)}},C2=class extends _2{A=Kn[0]|0;B=Kn[1]|0;C=Kn[2]|0;D=Kn[3]|0;E=Kn[4]|0;F=Kn[5]|0;G=Kn[6]|0;H=Kn[7]|0;constructor(){super(32)}};var L5=I5(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),zA=L5[0],GA=L5[1],Io=new Uint32Array(80),To=new Uint32Array(80),k2=class extends bs{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:p,Hh:g,Hl:m}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,h,p,g,m]}set(e,t,n,o,s,i,a,c,l,d,u,f,h,p,g,m){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=p|0,this.Hh=g|0,this.Hl=m|0}process(e,t){for(let I=0;I<16;I++,t+=4)Io[I]=e.getUint32(t),To[I]=e.getUint32(t+=4);for(let I=16;I<80;I++){let D=Io[I-15]|0,F=To[I-15]|0,$=Es(D,F,1)^Es(D,F,8)^I2(D,F,7),z=xs(D,F,1)^xs(D,F,8)^T2(D,F,7),S=Io[I-2]|0,x=To[I-2]|0,L=Es(S,x,19)^dc(S,x,61)^I2(S,x,6),B=xs(S,x,19)^fc(S,x,61)^T2(S,x,6),P=C5(z,B,To[I-7],To[I-16]),v=k5(P,$,L,Io[I-7],Io[I-16]);Io[I]=v|0,To[I]=P|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:p,Gh:g,Gl:m,Hh:w,Hl:T}=this;for(let I=0;I<80;I++){let D=Es(u,f,14)^Es(u,f,18)^dc(u,f,41),F=xs(u,f,14)^xs(u,f,18)^fc(u,f,41),$=u&h^~u&g,z=f&p^~f&m,S=P5(T,F,z,GA[I],To[I]),x=R5(S,w,D,$,zA[I],Io[I]),L=S|0,B=Es(n,o,28)^dc(n,o,34)^dc(n,o,39),P=xs(n,o,28)^fc(n,o,34)^fc(n,o,39),v=n&s^n&a^s&a,E=o&i^o&c^i&c;w=g|0,T=m|0,g=h|0,m=p|0,h=u|0,p=f|0,{h:u,l:f}=fn(l|0,d|0,x|0,L|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let b=T5(L,P,E);n=_5(b,x,B,v),o=b|0}({h:n,l:o}=fn(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fn(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fn(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fn(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=fn(this.Eh|0,this.El|0,u|0,f|0),{h,l:p}=fn(this.Fh|0,this.Fl|0,h|0,p|0),{h:g,l:m}=fn(this.Gh|0,this.Gl|0,g|0,m|0),{h:w,l:T}=fn(this.Hh|0,this.Hl|0,w|0,T|0),this.set(n,o,s,i,a,c,l,d,u,f,h,p,g,m,w,T)}roundClean(){Nt(Io,To)}destroy(){Nt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},P2=class extends k2{Ah=bt[0]|0;Al=bt[1]|0;Bh=bt[2]|0;Bl=bt[3]|0;Ch=bt[4]|0;Cl=bt[5]|0;Dh=bt[6]|0;Dl=bt[7]|0;Eh=bt[8]|0;El=bt[9]|0;Fh=bt[10]|0;Fl=bt[11]|0;Gh=bt[12]|0;Gl=bt[13]|0;Hh=bt[14]|0;Hl=bt[15]|0;constructor(){super(64)}};var Tr=uc(()=>new C2,A2(1));var _o=uc(()=>new P2,A2(3));var L2=BigInt(0),R2=BigInt(1);function Vn(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function D5(r){if(typeof r=="bigint"){if(!Gu(r))throw new Error("positive bigint expected, got "+r)}else Dt(r);return r}function hc(r){let e=D5(r).toString(16);return e.length&1?"0"+e:e}function N5(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?L2:BigInt("0x"+r)}function Ai(r){return N5(Fn(r))}function hn(r){return N5(Fn(vs(ce(r)).reverse()))}function Yu(r,e){Dt(e),r=D5(r);let t=$n(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function pc(r,e){return Yu(r,e).reverse()}function vs(r){return Uint8Array.from(r)}var Gu=r=>typeof r=="bigint"&&L2<=r;function YA(r,e,t){return Gu(r)&&Gu(e)&&Gu(t)&&e<=r&&r<t}function Co(r,e,t,n){if(!YA(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function D2(r){let e;for(e=0;r>L2;r>>=R2,e+=1);return e}var mc=r=>(R2<<BigInt(r))-R2;function O5(r,e,t){if(Dt(r,"hashLen"),Dt(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=m=>new Uint8Array(m),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),d=0,u=()=>{c.fill(1),l.fill(0),d=0},f=(...m)=>t(l,tr(c,...m)),h=(m=o)=>{l=f(s,m),c=f(),m.length!==0&&(l=f(i,m),c=f())},p=()=>{if(d++>=a)throw new Error("drbg: tried max amount of iterations");let m=0,w=[];for(;m<e;){c=f();let T=c.slice();w.push(T),m+=c.length}return tr(...w)};return(m,w)=>{u(),h(m);let T;for(;!(T=w(p()));)h();return u(),T}}function pn(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Ii(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var Gt=BigInt(0),ht=BigInt(1),Ss=BigInt(2),U5=BigInt(3),F5=BigInt(4),$5=BigInt(5),jA=BigInt(7),K5=BigInt(8),XA=BigInt(9),V5=BigInt(16);function qe(r,e){let t=r%e;return t>=Gt?t:e+t}function $e(r,e,t){let n=r;for(;e-- >Gt;)n*=n,n%=t;return n}function M5(r,e){if(r===Gt)throw new Error("invert: expected non-zero number");if(e<=Gt)throw new Error("invert: expected positive modulus, got "+e);let t=qe(r,e),n=e,o=Gt,s=ht,i=ht,a=Gt;for(;t!==Gt;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==ht)throw new Error("invert: does not exist");return qe(o,e)}function O2(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function H5(r,e){let t=(r.ORDER+ht)/F5,n=r.pow(e,t);return O2(r,n,e),n}function QA(r,e){let t=(r.ORDER-$5)/K5,n=r.mul(e,Ss),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,Ss),o),a=r.mul(s,r.sub(i,r.ONE));return O2(r,a,e),a}function ZA(r){let e=Ti(r),t=q5(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+jA)/V5;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n),u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),p=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,p);let g=a.eql(a.sqr(d),c),m=a.cmov(l,d,g);return O2(a,m,c),m}}function q5(r){if(r<U5)throw new Error("sqrt is not defined for small field");let e=r-ht,t=0;for(;e%Ss===Gt;)e/=Ss,t++;let n=Ss,o=Ti(r);for(;B5(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return H5;let s=o.pow(n,e),i=(e+ht)/Ss;return function(c,l){if(c.is0(l))return l;if(B5(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let p=1,g=c.sqr(f);for(;!c.eql(g,c.ONE);)if(p++,g=c.sqr(g),p===d)throw new Error("Cannot find square root");let m=ht<<BigInt(d-p-1),w=c.pow(u,m);d=p,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function JA(r){return r%F5===U5?H5:r%K5===$5?QA:r%V5===XA?ZA(r):q5(r)}var W5=(r,e)=>(qe(r,e)&ht)===ht,eI=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function M2(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=eI.reduce((n,o)=>(n[o]="function",n),e);return pn(r,t),r}function tI(r,e,t){if(t<Gt)throw new Error("invalid exponent, negatives unsupported");if(t===Gt)return r.ONE;if(t===ht)return e;let n=r.ONE,o=e;for(;t>Gt;)t&ht&&(n=r.mul(n,o)),o=r.sqr(o),t>>=ht;return n}function gc(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function B5(r,e){let t=(r.ORDER-ht)/Ss,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function rI(r,e){e!==void 0&&Dt(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var N2=class{ORDER;BITS;BYTES;isLE;ZERO=Gt;ONE=ht;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=Gt)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=rI(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return qe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return Gt<=e&&e<this.ORDER}is0(e){return e===Gt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ht)===ht}neg(e){return qe(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return qe(e*e,this.ORDER)}add(e,t){return qe(e+t,this.ORDER)}sub(e,t){return qe(e-t,this.ORDER)}mul(e,t){return qe(e*t,this.ORDER)}pow(e,t){return tI(this,e,t)}div(e,t){return qe(e*M5(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return M5(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=JA(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?pc(e,this.BYTES):Yu(e,this.BYTES)}fromBytes(e,t=!1){ce(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?hn(e):Ai(e);if(a&&(c=qe(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return gc(this,e)}cmov(e,t,n){return n?t:e}};function Ti(r,e={}){return new N2(r,e)}function z5(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function B2(r){let e=z5(r);return e+Math.ceil(e/2)}function U2(r,e,t=!1){ce(r);let n=r.length,o=z5(e),s=B2(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?hn(r):Ai(r),a=qe(i,e-ht)+ht;return t?pc(a,o):Yu(a,o)}var _i=BigInt(0),As=BigInt(1);function yc(r,e){let t=e.negate();return r?t:e}function Is(r,e){let t=gc(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function X5(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function F2(r,e){X5(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=mc(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function G5(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=As);let l=e*n,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}var $2=new WeakMap,Q5=new WeakMap;function K2(r){return Q5.get(r)||1}function Y5(r){if(r!==_i)throw new Error("invalid wNAF")}var Ci=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>_i;)t&As&&(n=n.add(o)),o=o.double(),t>>=As;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=F2(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=F2(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=G5(n,a,i);n=c,d?s=s.add(yc(f,t[h])):o=o.add(yc(u,t[l]))}return Y5(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=F2(e,this.bits);for(let i=0;i<s.windows&&n!==_i;i++){let{nextN:a,offset:c,isZero:l,isNeg:d}=G5(n,i,s);if(n=a,!l){let u=t[c];o=o.add(d?u.negate():u)}}return Y5(n),o}getPrecomputes(e,t,n){let o=$2.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),$2.set(t,o))),o}cached(e,t,n){let o=K2(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=K2(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){X5(t,this.bits),Q5.set(e,t),$2.delete(e)}hasCache(e){return K2(e)!==1}};function Z5(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>_i||n>_i;)t&As&&(s=s.add(o)),n&As&&(i=i.add(o)),o=o.double(),t>>=As,n>>=As;return{p1:s,p2:i}}function j5(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return M2(e),e}else return Ti(r,{isLE:t})}function ju(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>_i))throw new Error(`CURVE.${c} must be positive bigint`)}let o=j5(e.p,t.Fp,n),s=j5(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ki(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var ko=BigInt(0),pt=BigInt(1),V2=BigInt(2),nI=BigInt(8);function oI(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function J5(r,e={}){let t=ju("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i}=s;pn(e,{},{uvRatio:"function"});let a=V2<<BigInt(o.BYTES*8)-pt,c=m=>n.create(m),l=e.uvRatio||((m,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(m,w))}}catch{return{isValid:!1,value:ko}}});if(!oI(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(m,w,T=!1){let I=T?pt:ko;return Co("coordinate "+m,w,I,a),w}function u(m){if(!(m instanceof p))throw new Error("EdwardsPoint expected")}let f=Ii((m,w)=>{let{X:T,Y:I,Z:D}=m,F=m.is0();w==null&&(w=F?nI:n.inv(D));let $=c(T*w),z=c(I*w),S=n.mul(D,w);if(F)return{x:ko,y:pt};if(S!==pt)throw new Error("invZ was invalid");return{x:$,y:z}}),h=Ii(m=>{let{a:w,d:T}=s;if(m.is0())throw new Error("bad point: ZERO");let{X:I,Y:D,Z:F,T:$}=m,z=c(I*I),S=c(D*D),x=c(F*F),L=c(x*x),B=c(z*w),P=c(x*c(B+S)),v=c(L+c(T*c(z*S)));if(P!==v)throw new Error("bad point: equation left != right (1)");let E=c(I*D),b=c(F*$);if(E!==b)throw new Error("bad point: equation left != right (2)");return!0});class p{static BASE=new p(s.Gx,s.Gy,pt,c(s.Gx*s.Gy));static ZERO=new p(ko,pt,pt,ko);static Fp=n;static Fn=o;X;Y;Z;T;constructor(w,T,I,D){this.X=d("x",w),this.Y=d("y",T),this.Z=d("z",I,!0),this.T=d("t",D),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof p)throw new Error("extended point not allowed");let{x:T,y:I}=w||{};return d("x",T),d("y",I),new p(T,I,pt,c(T*I))}static fromBytes(w,T=!1){let I=n.BYTES,{a:D,d:F}=s;w=vs(ce(w,I,"point")),Vn(T,"zip215");let $=vs(w),z=w[I-1];$[I-1]=z&-129;let S=hn($),x=T?a:n.ORDER;Co("point.y",S,ko,x);let L=c(S*S),B=c(L-pt),P=c(F*L-D),{isValid:v,value:E}=l(B,P);if(!v)throw new Error("bad point: invalid y coordinate");let b=(E&pt)===pt,_=(z&128)!==0;if(!T&&E===ko&&_)throw new Error("bad point: x=0 and x_0=1");return _!==b&&(E=c(-E)),p.fromAffine({x:E,y:S})}static fromHex(w,T=!1){return p.fromBytes($n(w),T)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,T=!0){return g.createCache(this,w),T||this.multiply(V2),this}assertValidity(){h(this)}equals(w){u(w);let{X:T,Y:I,Z:D}=this,{X:F,Y:$,Z:z}=w,S=c(T*z),x=c(F*D),L=c(I*z),B=c($*D);return S===x&&L===B}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:w}=s,{X:T,Y:I,Z:D}=this,F=c(T*T),$=c(I*I),z=c(V2*c(D*D)),S=c(w*F),x=T+I,L=c(c(x*x)-F-$),B=S+$,P=B-z,v=S-$,E=c(L*P),b=c(B*v),_=c(L*v),M=c(P*B);return new p(E,b,M,_)}add(w){u(w);let{a:T,d:I}=s,{X:D,Y:F,Z:$,T:z}=this,{X:S,Y:x,Z:L,T:B}=w,P=c(D*S),v=c(F*x),E=c(z*I*B),b=c($*L),_=c((D+F)*(S+x)-P-v),M=b-E,O=b+E,k=c(v-T*P),U=c(_*M),K=c(O*k),W=c(_*k),we=c(M*O);return new p(U,K,we,W)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:T,f:I}=g.cached(this,w,D=>Is(p,D));return Is(p,[T,I])[0]}multiplyUnsafe(w,T=p.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===ko?p.ZERO:this.is0()||w===pt?this:g.unsafe(this,w,I=>Is(p,I),T)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return g.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===pt?this:this.multiplyUnsafe(i)}toBytes(){let{x:w,y:T}=this.toAffine(),I=n.toBytes(T);return I[I.length-1]|=w&pt?128:0,I}toHex(){return Fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let g=new Ci(p,o.BITS);return p.BASE.precompute(8),p}function e8(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');pn(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:s,Fn:i}=r,a=t.randomBytes||dn,c=t.adjustScalarBytes||(S=>S),l=t.domain||((S,x,L)=>{if(Vn(L,"phflag"),x.length||L)throw new Error("Contexts/pre-hash are not supported");return S});function d(S){return i.create(hn(S))}function u(S){let x=I.secretKey;ce(S,I.secretKey,"secretKey");let L=ce(e(S),2*x,"hashedSecretKey"),B=c(L.slice(0,x)),P=L.slice(x,2*x),v=d(B);return{head:B,prefix:P,scalar:v}}function f(S){let{head:x,prefix:L,scalar:B}=u(S),P=o.multiply(B),v=P.toBytes();return{head:x,prefix:L,scalar:B,point:P,pointBytes:v}}function h(S){return f(S).pointBytes}function p(S=Uint8Array.of(),...x){let L=tr(...x);return d(e(l(L,ce(S,void 0,"context"),!!n)))}function g(S,x,L={}){S=ce(S,void 0,"message"),n&&(S=n(S));let{prefix:B,scalar:P,pointBytes:v}=f(x),E=p(L.context,B,S),b=o.multiply(E).toBytes(),_=p(L.context,b,v,S),M=i.create(E+_*P);if(!i.isValid(M))throw new Error("sign failed: invalid s");let O=tr(b,i.toBytes(M));return ce(O,I.signature,"result")}let m={zip215:!0};function w(S,x,L,B=m){let{context:P,zip215:v}=B,E=I.signature;S=ce(S,E,"signature"),x=ce(x,void 0,"message"),L=ce(L,I.publicKey,"publicKey"),v!==void 0&&Vn(v,"zip215"),n&&(x=n(x));let b=E/2,_=S.subarray(0,b),M=hn(S.subarray(b,E)),O,k,U;try{O=r.fromBytes(L,v),k=r.fromBytes(_,v),U=o.multiplyUnsafe(M)}catch{return!1}if(!v&&O.isSmallOrder())return!1;let K=p(P,k.toBytes(),O.toBytes(),x);return k.add(O.multiplyUnsafe(K)).subtract(U).clearCofactor().is0()}let T=s.BYTES,I={secretKey:T,publicKey:T,signature:2*T,seed:T};function D(S=a(I.seed)){return ce(S,I.seed,"seed")}function F(S){return ys(S)&&S.length===i.BYTES}function $(S,x){try{return!!r.fromBytes(S,x)}catch{return!1}}let z={getExtendedPublicKey:f,randomSecretKey:D,isValidSecretKey:F,isValidPublicKey:$,toMontgomery(S){let{y:x}=r.fromBytes(S),L=I.publicKey,B=L===32;if(!B&&L!==57)throw new Error("only defined for 25519 and 448");let P=B?s.div(pt+x,pt-x):s.div(x-pt,x+pt);return s.toBytes(P)},toMontgomerySecret(S){let x=I.secretKey;ce(S,x);let L=e(S.subarray(0,x));return c(L).subarray(0,x)}};return Object.freeze({keygen:ki(D,h),getPublicKey:h,sign:g,verify:w,utils:z,Point:r,lengths:I})}var wc=BigInt(0),Pi=BigInt(1),Xu=BigInt(2);function sI(r){return pn(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function t8(r){let e=sI(r),{P:t,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=n==="x25519";if(!a&&n!=="x448")throw new Error("invalid type");let c=i||dn,l=a?255:448,d=a?32:56,u=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Xu**BigInt(254):Xu**BigInt(447),p=a?BigInt(8)*Xu**BigInt(251)-Pi:BigInt(4)*Xu**BigInt(445)-Pi,g=h+p+Pi,m=E=>qe(E,t),w=T(u);function T(E){return pc(m(E),d)}function I(E){let b=vs(ce(E,d,"uCoordinate"));return a&&(b[31]&=127),m(hn(b))}function D(E){return hn(o(vs(ce(E,d,"scalar"))))}function F(E,b){let _=L(I(b),D(E));if(_===wc)throw new Error("invalid private or public key received");return T(_)}function $(E){return F(E,w)}let z=$,S=F;function x(E,b,_){let M=m(E*(b-_));return b=m(b-M),_=m(_+M),{x_2:b,x_3:_}}function L(E,b){Co("u",E,wc,t),Co("scalar",b,h,g);let _=b,M=E,O=Pi,k=wc,U=E,K=Pi,W=wc;for(let pe=BigInt(l-1);pe>=wc;pe--){let ue=_>>peΠW^=ue,{x_2:O,x_3:U}=x(W,O,U),{x_2:k,x_3:K}=x(W,k,K),W=ue;let be=O+k,Re=m(be*be),Je=O-k,Ee=m(Je*Je),it=Re-Ee,ui=U+K,Eu=U-K,Wa=m(Eu*be),x6=m(ui*Je),v6=Wa+x6,S6=Wa-x6;U=m(v6*v6),K=m(M*m(S6*S6)),O=m(Re*Ee),k=m(it*(Re+m(f*it)))}({x_2:O,x_3:U}=x(W,O,U)),{x_2:k,x_3:K}=x(W,k,K);let we=s(k);return m(O*we)}let B={secretKey:d,publicKey:d,seed:d},P=(E=c(d))=>(ce(E,B.seed,"seed"),E),v={randomSecretKey:P};return Object.freeze({keygen:ki(P,z),getSharedSecret:S,getPublicKey:z,scalarMult:F,scalarMultBase:$,utils:v,GuBytes:w.slice(),lengths:B})}var iI=BigInt(1),r8=BigInt(2),aI=BigInt(3),cI=BigInt(5),lI=BigInt(8),Qu=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),uI={p:Qu,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:lI,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function o8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Qu,a=r*r%s*r%s,c=$e(a,r8,s)*a%s,l=$e(c,iI,s)*r%s,d=$e(l,cI,s)*l%s,u=$e(d,e,s)*d%s,f=$e(u,t,s)*u%s,h=$e(f,n,s)*f%s,p=$e(h,o,s)*h%s,g=$e(p,o,s)*h%s,m=$e(g,e,s)*d%s;return{pow_p_5_8:$e(m,r8,s)*r%s,b2:a}}function s8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var n8=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function dI(r,e){let t=Qu,n=qe(e*e*e,t),o=qe(n*n*e,t),s=o8(r*o).pow_p_5_8,i=qe(r*n*s,t),a=qe(e*i*i,t),c=i,l=qe(i*n8,t),d=a===r,u=a===qe(-r,t),f=a===qe(-r*n8,t);return d&&(i=c),(u||f)&&(i=l),W5(i,t)&&(i=qe(-i,t)),{isValid:d||u,value:i}}var fI=J5(uI,{uvRatio:dI});function hI(r){return e8(fI,_o,Object.assign({adjustScalarBytes:s8},r))}var bc=hI({});var Ec=(()=>{let r=Qu;return t8({P:r,type:"x25519",powPminus2:e=>{let{pow_p_5_8:t,b2:n}=o8(e);return qe($e(t,aI,r)*n,r)},adjustScalarBytes:s8})})();var Ts=32,fr=64,H2=32;var Ri,i8=(async()=>{try{return await nt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function a8(){let r=bc.utils.randomSecretKey(),e=bc.getPublicKey(r);return{privateKey:wI(r,e),publicKey:e}}async function pI(r,e){let t;r.length===fr?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:R(r.subarray(32),"base64url"),d:R(t,"base64url"),ext:!0,key_ops:["sign"]},o=await nt.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await nt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function mI(r,e){let t=r.subarray(0,H2);return bc.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function c8(r,e){return Ri==null&&(Ri=await i8),Ri?pI(r,e):mI(r,e)}async function gI(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await nt.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await nt.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function yI(r,e,t){return bc.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function l8(r,e,t){return Ri==null&&(Ri=await i8),Ri?gI(r,e,t):yI(r,e,t)}function wI(r,e){let t=new Uint8Array(fr);for(let n=0;n<H2;n++)t[n]=r[n],t[H2+n]=e[n];return t}function Li(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var xc=class{type="Ed25519";raw;constructor(e){this.raw=Ni(e,Ts)}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=l8(this.raw,t,e);return Li(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Di=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=Ni(e,fr),this.publicKey=new xc(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=c8(this.raw,e);return Li(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function q2(r){if(r.length>fr){r=Ni(r,fr+Ts);let n=r.subarray(0,fr),o=r.subarray(fr,r.length);return new Di(n,o)}r=Ni(r,fr);let e=r.subarray(0,fr),t=r.subarray(Ts);return new Di(e,t)}function W2(r){return r=Ni(r,Ts),new xc(r)}async function d8(){let{privateKey:r,publicKey:e}=a8();return new Di(r,e)}function Ni(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new A(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var bI=Math.pow(2,7),EI=Math.pow(2,14),xI=Math.pow(2,21),z2=Math.pow(2,28),G2=Math.pow(2,35),Y2=Math.pow(2,42),j2=Math.pow(2,49),Te=128,Ot=127;function he(r){if(r<bI)return 1;if(r<EI)return 2;if(r<xI)return 3;if(r<z2)return 4;if(r<G2)return 5;if(r<Y2)return 6;if(r<j2)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Oi(r,e,t=0){switch(he(r)){case 8:e[t++]=r&255|Te,r/=128;case 7:e[t++]=r&255|Te,r/=128;case 6:e[t++]=r&255|Te,r/=128;case 5:e[t++]=r&255|Te,r/=128;case 4:e[t++]=r&255|Te,r>>>=7;case 3:e[t++]=r&255|Te,r>>>=7;case 2:e[t++]=r&255|Te,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function vI(r,e,t=0){switch(he(r)){case 8:e.set(t++,r&255|Te),r/=128;case 7:e.set(t++,r&255|Te),r/=128;case 6:e.set(t++,r&255|Te),r/=128;case 5:e.set(t++,r&255|Te),r/=128;case 4:e.set(t++,r&255|Te),r>>>=7;case 3:e.set(t++,r&255|Te),r>>>=7;case 2:e.set(t++,r&255|Te),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function X2(r,e){let t=r[e],n=0;if(n+=t&Ot,t<Te||(t=r[e+1],n+=(t&Ot)<<7,t<Te)||(t=r[e+2],n+=(t&Ot)<<14,t<Te)||(t=r[e+3],n+=(t&Ot)<<21,t<Te)||(t=r[e+4],n+=(t&Ot)*z2,t<Te)||(t=r[e+5],n+=(t&Ot)*G2,t<Te)||(t=r[e+6],n+=(t&Ot)*Y2,t<Te)||(t=r[e+7],n+=(t&Ot)*j2,t<Te))return n;throw new RangeError("Could not decode varint")}function SI(r,e){let t=r.get(e),n=0;if(n+=t&Ot,t<Te||(t=r.get(e+1),n+=(t&Ot)<<7,t<Te)||(t=r.get(e+2),n+=(t&Ot)<<14,t<Te)||(t=r.get(e+3),n+=(t&Ot)<<21,t<Te)||(t=r.get(e+4),n+=(t&Ot)*z2,t<Te)||(t=r.get(e+5),n+=(t&Ot)*G2,t<Te)||(t=r.get(e+6),n+=(t&Ot)*Y2,t<Te)||(t=r.get(e+7),n+=(t&Ot)*j2,t<Te))return n;throw new RangeError("Could not decode varint")}function Mt(r,e,t=0){return e==null&&(e=Ge(he(r))),e instanceof Uint8Array?Oi(r,e,t):vI(r,e,t)}function hr(r,e=0){return r instanceof Uint8Array?X2(r,e):SI(r,e)}var Q2=new Float32Array([-0]),Po=new Uint8Array(Q2.buffer);function f8(r,e,t){Q2[0]=r,e[t]=Po[0],e[t+1]=Po[1],e[t+2]=Po[2],e[t+3]=Po[3]}function h8(r,e){return Po[0]=r[e],Po[1]=r[e+1],Po[2]=r[e+2],Po[3]=r[e+3],Q2[0]}var Z2=new Float64Array([-0]),Bt=new Uint8Array(Z2.buffer);function p8(r,e,t){Z2[0]=r,e[t]=Bt[0],e[t+1]=Bt[1],e[t+2]=Bt[2],e[t+3]=Bt[3],e[t+4]=Bt[4],e[t+5]=Bt[5],e[t+6]=Bt[6],e[t+7]=Bt[7]}function m8(r,e){return Bt[0]=r[e],Bt[1]=r[e+1],Bt[2]=r[e+2],Bt[3]=r[e+3],Bt[4]=r[e+4],Bt[5]=r[e+5],Bt[6]=r[e+6],Bt[7]=r[e+7],Z2[0]}var AI=BigInt(Number.MAX_SAFE_INTEGER),II=BigInt(Number.MIN_SAFE_INTEGER),pr=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return _s;if(e<AI&&e>II)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>g8&&(o=0n,++n>g8&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return _s;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):_s}},_s=new pr(0,0);_s.toBigInt=function(){return 0n};_s.zzEncode=_s.zzDecode=function(){return this};_s.length=function(){return 1};var g8=4294967296n;function y8(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function w8(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function J2(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Hr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Zu(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var em=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Hr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Zu(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Zu(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Hr(this,4);let e=h8(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Hr(this,4);let e=m8(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Hr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return w8(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Hr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Hr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new pr(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Hr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Hr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Hr(this,8);let e=Zu(this.buf,this.pos+=4),t=Zu(this.buf,this.pos+=4);return new pr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=X2(this.buf,this.pos);return this.pos+=he(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function tm(r){return new em(r instanceof Uint8Array?r:r.subarray())}function te(r,e,t){let n=tm(r);return e.decode(n,void 0,t)}function rm(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Ge(i);o+i>e&&(n=Ge(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Cs=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function nm(){}var sm=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},TI=rm();function _I(r){return globalThis.Buffer!=null?Ge(r):TI(r)}var Sc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Cs(nm,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Cs(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new im((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Ju,10,pr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=pr.fromBigInt(e);return this._push(Ju,t.length(),t)}uint64Number(e){return this._push(Oi,he(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=pr.fromBigInt(e).zzEncode();return this._push(Ju,t.length(),t)}sint64Number(e){let t=pr.fromNumber(e).zzEncode();return this._push(Ju,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(om,1,e?1:0)}fixed32(e){return this._push(vc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=pr.fromBigInt(e);return this._push(vc,4,t.lo)._push(vc,4,t.hi)}fixed64Number(e){let t=pr.fromNumber(e);return this._push(vc,4,t.lo)._push(vc,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(f8,4,e)}double(e){return this._push(p8,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(om,1,0):this.uint32(t)._push(kI,t,e)}string(e){let t=y8(e);return t!==0?this.uint32(t)._push(J2,t,e):this._push(om,1,0)}fork(){return this.states=new sm(this),this.head=this.tail=new Cs(nm,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Cs(nm,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=_I(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function om(r,e,t){e[t]=r&255}function CI(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var im=class extends Cs{next;constructor(e,t){super(CI,e,t),this.next=void 0}};function Ju(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function vc(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function kI(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Sc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(PI,e,r),this},Sc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(RI,e,r),this});function PI(r,e,t){e.set(r,t)}function RI(r,e,t){r.length<40?J2(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(C(r),t)}function am(){return new Sc}function re(r,e){let t=am();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Mi;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(Mi||(Mi={}));function ed(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function We(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return ed("enum",Mi.VARINT,t,n)}function ne(r,e){return ed("message",Mi.LENGTH_DELIMITED,r,e)}var Ne=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Ac=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var Be;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(Be||(Be={}));var cm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(cm||(cm={}));(function(r){r.codec=()=>We(cm)})(Be||(Be={}));var mn;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Be.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=Be.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(mn||(mn={}));var Ic;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Be.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=Be.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Ic||(Ic={}));function Yt(r){if(isNaN(r)||r<=0)throw new A("random bytes length must be a Number bigger than 0");return dn(r)}var _c={};et(_c,{MAX_RSA_KEY_SIZE:()=>lm,generateRSAKeyPair:()=>wm,jwkToJWKKeyPair:()=>S8,jwkToPkcs1:()=>OI,jwkToPkix:()=>hm,jwkToRSAPrivateKey:()=>ym,pkcs1MessageToJwk:()=>dm,pkcs1MessageToRSAPrivateKey:()=>td,pkcs1ToJwk:()=>NI,pkcs1ToRSAPrivateKey:()=>pm,pkixMessageToJwk:()=>fm,pkixMessageToRSAPublicKey:()=>gm,pkixToJwk:()=>MI,pkixToRSAPublicKey:()=>mm});var Bi=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=_c.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return G.createV1(114,this._multihash)}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){return v8(this.jwk,t,e,n)}},Tc=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=_c.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){return x8(this.jwk,e,t)}};var lm=8192,um=18,LI=1062,DI=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function NI(r){let e=Ir(r);return dm(e)}function dm(r){return{n:R(r[1],"base64url"),e:R(r[2],"base64url"),d:R(r[3],"base64url"),p:R(r[4],"base64url"),q:R(r[5],"base64url"),dp:R(r[6],"base64url"),dq:R(r[7],"base64url"),qi:R(r[8],"base64url"),kty:"RSA"}}function OI(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new A("JWK was missing components");return Kr([zt(Uint8Array.from([0])),zt(C(r.n,"base64url")),zt(C(r.e,"base64url")),zt(C(r.d,"base64url")),zt(C(r.p,"base64url")),zt(C(r.q,"base64url")),zt(C(r.dp,"base64url")),zt(C(r.dq,"base64url")),zt(C(r.qi,"base64url"))]).subarray()}function MI(r){let e=Ir(r,{offset:0});return fm(e)}function fm(r){let e=Ir(r[1],{offset:0});return{kty:"RSA",n:R(e[0],"base64url"),e:R(e[1],"base64url")}}function hm(r){if(r.n==null||r.e==null)throw new A("JWK was missing components");return Kr([DI,lc(Kr([zt(C(r.n,"base64url")),zt(C(r.e,"base64url"))]))]).subarray()}function pm(r){let e=Ir(r);return td(e)}function td(r){let e=dm(r);return ym(e)}function mm(r,e){if(r.byteLength>=LI)throw new Nn("Key size is too large");let t=Ir(r,{offset:0});return gm(t,r,e)}function gm(r,e,t){let n=fm(r);if(t==null){let o=Tr(mn.encode({Type:Be.RSA,Data:e}));t=Wt(um,o)}return new Bi(n,t)}function ym(r){if(I8(r)>lm)throw new A("Key size is too large");let e=S8(r),t=Tr(mn.encode({Type:Be.RSA,Data:hm(e.publicKey)})),n=Wt(um,t);return new Tc(e.privateKey,new Bi(e.publicKey,n))}async function wm(r){if(r>lm)throw new A("Key size is too large");let e=await A8(r),t=Tr(mn.encode({Type:Be.RSA,Data:hm(e.publicKey)})),n=Wt(um,t);return new Tc(e.privateKey,new Bi(e.publicKey,n))}function S8(r){if(r==null)throw new A("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function A8(r,e){let t=await nt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await BI(t,e);return{privateKey:n[0],publicKey:n[1]}}async function x8(r,e,t){let n=await nt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await nt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function v8(r,e,t,n){let o=await nt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await nt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),s}async function BI(r,e){if(r.privateKey==null||r.publicKey==null)throw new A("Private and public key are required");let t=await Promise.all([nt.get().subtle.exportKey("jwk",r.privateKey),nt.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function I8(r){if(r.kty!=="RSA")throw new A("invalid key type");if(r.n==null)throw new A("invalid key modulus");return C(r.n,"base64url").length*8}var rd=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(Un(e),ce(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Nt(o)}update(e){return Si(this),this.iHash.update(e),this}digestInto(e){Si(this),ce(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Ro=(r,e,t)=>new rd(r,e).update(t).digest();Ro.create=(r,e)=>new rd(r,e);var T8=(r,e)=>(r+(r>=0?e:-e)/_8)/e;function UI(r,e,t){let[[n,o],[s,i]]=e,a=T8(i*r,t),c=T8(-o*r,t),l=r-a*n-c*s,d=-a*o-c*i,u=l<qn,f=d<qn;u&&(l=-l),f&&(d=-d);let h=mc(Math.ceil(D2(t)/2))+Ui;if(l<qn||l>=h||d<qn||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Em(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function bm(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Vn(t.lowS,"lowS"),Vn(t.prehash,"prehash"),t.format!==void 0&&Em(t.format),t}var xm=class extends Error{constructor(e=""){super(e)}},Lo={Err:xm,_tlv:{encode:(r,e)=>{let{Err:t}=Lo;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=hc(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?hc(o.length/2|128):"";return hc(r)+s+o+e},decode(r,e){let{Err:t}=Lo,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)i=i<<8|d;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Lo;if(r<qn)throw new e("integer: negative integers are not allowed");let t=hc(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Lo;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Ai(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Lo,o=ce(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Lo,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},qn=BigInt(0),Ui=BigInt(1),_8=BigInt(2),nd=BigInt(3),FI=BigInt(4);function C8(r,e={}){let t=ju("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;pn(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=P8(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(P,v,E){let{x:b,y:_}=v.toAffine(),M=n.toBytes(b);if(Vn(E,"isCompressed"),E){d();let O=!n.isOdd(_);return tr(k8(O),M)}else return tr(Uint8Array.of(4),M,n.toBytes(_))}function f(P){ce(P,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,b=P.length,_=P[0],M=P.subarray(1);if(b===v&&(_===2||_===3)){let O=n.fromBytes(M);if(!n.isValid(O))throw new Error("bad point: is not on curve, wrong x");let k=g(O),U;try{U=n.sqrt(k)}catch(we){let pe=we instanceof Error?": "+we.message:"";throw new Error("bad point: is not on curve, sqrt error"+pe)}d();let K=n.isOdd(U);return(_&1)===1!==K&&(U=n.neg(U)),{x:O,y:U}}else if(b===E&&_===4){let O=n.BYTES,k=n.fromBytes(M.subarray(0,O)),U=n.fromBytes(M.subarray(O,O*2));if(!m(k,U))throw new Error("bad point: is not on curve");return{x:k,y:U}}else throw new Error(`bad point: got length ${b}, expected compressed=${v} or uncompressed=${E}`)}let h=e.toBytes||u,p=e.fromBytes||f;function g(P){let v=n.sqr(P),E=n.mul(v,P);return n.add(n.add(E,n.mul(P,s.a)),s.b)}function m(P,v){let E=n.sqr(v),b=g(P);return n.eql(E,b)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let w=n.mul(n.pow(s.a,nd),FI),T=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,T)))throw new Error("bad curve params: a or b");function I(P,v,E=!1){if(!n.isValid(v)||E&&n.is0(v))throw new Error(`bad point coordinate ${P}`);return v}function D(P){if(!(P instanceof x))throw new Error("Weierstrass Point expected")}function F(P){if(!c||!c.basises)throw new Error("no endo");return UI(P,c.basises,o.ORDER)}let $=Ii((P,v)=>{let{X:E,Y:b,Z:_}=P;if(n.eql(_,n.ONE))return{x:E,y:b};let M=P.is0();v==null&&(v=M?n.ONE:n.inv(_));let O=n.mul(E,v),k=n.mul(b,v),U=n.mul(_,v);if(M)return{x:n.ZERO,y:n.ZERO};if(!n.eql(U,n.ONE))throw new Error("invZ was invalid");return{x:O,y:k}}),z=Ii(P=>{if(P.is0()){if(e.allowInfinityPoint&&!n.is0(P.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=P.toAffine();if(!n.isValid(v)||!n.isValid(E))throw new Error("bad point: x or y not field elements");if(!m(v,E))throw new Error("bad point: equation left != right");if(!P.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(P,v,E,b,_){return E=new x(n.mul(E.X,P),E.Y,E.Z),v=yc(b,v),E=yc(_,E),v.add(E)}class x{static BASE=new x(s.Gx,s.Gy,n.ONE);static ZERO=new x(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(v,E,b){this.X=I("x",v),this.Y=I("y",E,!0),this.Z=I("z",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:b}=v||{};if(!v||!n.isValid(E)||!n.isValid(b))throw new Error("invalid affine point");if(v instanceof x)throw new Error("projective point not allowed");return n.is0(E)&&n.is0(b)?x.ZERO:new x(E,b,n.ONE)}static fromBytes(v){let E=x.fromAffine(p(ce(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return x.fromBytes($n(v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return B.createCache(this,v),E||this.multiply(nd),this}assertValidity(){z(this)}hasEvenY(){let{y:v}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(v)}equals(v){D(v);let{X:E,Y:b,Z:_}=this,{X:M,Y:O,Z:k}=v,U=n.eql(n.mul(E,k),n.mul(M,_)),K=n.eql(n.mul(b,k),n.mul(O,_));return U&&K}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,b=n.mul(E,nd),{X:_,Y:M,Z:O}=this,k=n.ZERO,U=n.ZERO,K=n.ZERO,W=n.mul(_,_),we=n.mul(M,M),pe=n.mul(O,O),ue=n.mul(_,M);return ue=n.add(ue,ue),K=n.mul(_,O),K=n.add(K,K),k=n.mul(v,K),U=n.mul(b,pe),U=n.add(k,U),k=n.sub(we,U),U=n.add(we,U),U=n.mul(k,U),k=n.mul(ue,k),K=n.mul(b,K),pe=n.mul(v,pe),ue=n.sub(W,pe),ue=n.mul(v,ue),ue=n.add(ue,K),K=n.add(W,W),W=n.add(K,W),W=n.add(W,pe),W=n.mul(W,ue),U=n.add(U,W),pe=n.mul(M,O),pe=n.add(pe,pe),W=n.mul(pe,ue),k=n.sub(k,W),K=n.mul(pe,we),K=n.add(K,K),K=n.add(K,K),new x(k,U,K)}add(v){D(v);let{X:E,Y:b,Z:_}=this,{X:M,Y:O,Z:k}=v,U=n.ZERO,K=n.ZERO,W=n.ZERO,we=s.a,pe=n.mul(s.b,nd),ue=n.mul(E,M),be=n.mul(b,O),Re=n.mul(_,k),Je=n.add(E,b),Ee=n.add(M,O);Je=n.mul(Je,Ee),Ee=n.add(ue,be),Je=n.sub(Je,Ee),Ee=n.add(E,_);let it=n.add(M,k);return Ee=n.mul(Ee,it),it=n.add(ue,Re),Ee=n.sub(Ee,it),it=n.add(b,_),U=n.add(O,k),it=n.mul(it,U),U=n.add(be,Re),it=n.sub(it,U),W=n.mul(we,Ee),U=n.mul(pe,Re),W=n.add(U,W),U=n.sub(be,W),W=n.add(be,W),K=n.mul(U,W),be=n.add(ue,ue),be=n.add(be,ue),Re=n.mul(we,Re),Ee=n.mul(pe,Ee),be=n.add(be,Re),Re=n.sub(ue,Re),Re=n.mul(we,Re),Ee=n.add(Ee,Re),ue=n.mul(be,Ee),K=n.add(K,ue),ue=n.mul(it,Ee),U=n.mul(Je,U),U=n.sub(U,ue),ue=n.mul(Je,be),W=n.mul(it,W),W=n.add(W,ue),new x(U,K,W)}subtract(v){return this.add(v.negate())}is0(){return this.equals(x.ZERO)}multiply(v){let{endo:E}=e;if(!o.isValidNot0(v))throw new Error("invalid scalar: out of range");let b,_,M=O=>B.cached(this,O,k=>Is(x,k));if(E){let{k1neg:O,k1:k,k2neg:U,k2:K}=F(v),{p:W,f:we}=M(k),{p:pe,f:ue}=M(K);_=we.add(ue),b=S(E.beta,W,pe,O,U)}else{let{p:O,f:k}=M(v);b=O,_=k}return Is(x,[b,_])[0]}multiplyUnsafe(v){let{endo:E}=e,b=this;if(!o.isValid(v))throw new Error("invalid scalar: out of range");if(v===qn||b.is0())return x.ZERO;if(v===Ui)return b;if(B.hasCache(this))return this.multiply(v);if(E){let{k1neg:_,k1:M,k2neg:O,k2:k}=F(v),{p1:U,p2:K}=Z5(x,b,M,k);return S(E.beta,U,K,_,O)}else return B.unsafe(b,v)}toAffine(v){return $(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return i===Ui?!0:v?v(x,this):B.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:v}=e;return i===Ui?this:v?v(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(v=!0){return Vn(v,"isCompressed"),this.assertValidity(),h(x,this,v)}toHex(v=!0){return Fn(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let L=o.BITS,B=new Ci(x,e.endo?Math.ceil(L/2):L);return x.BASE.precompute(8),x}function k8(r){return Uint8Array.of(r?2:3)}function P8(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function $I(r,e={}){let{Fn:t}=r,n=e.randomBytes||dn,o=Object.assign(P8(r.Fp,t),{seed:B2(t.ORDER)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:g,publicKeyUncompressed:m}=o;try{let w=h.length;return p===!0&&w!==g||p===!1&&w!==m?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return U2(ce(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:g,publicKeyUncompressed:m}=o;if(!ys(h)||"_lengths"in t&&t._lengths||p===g)return;let w=ce(h,void 0,"key").length;return w===g||w===m}function d(h,p,g=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let m=t.fromBytes(h);return r.fromBytes(p).multiply(m).toBytes(g)}let u={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},f=ki(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:d,keygen:f,Point:r,utils:u,lengths:o})}function R8(r,e,t={}){Un(e),pn(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||dn,o=t.hmac||((E,b)=>Ro(e,E,b)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=$I(r,t),p={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=a*_8<s.ORDER;function m(E){let b=a>>Ui;return E>b}function w(E,b){if(!i.isValidNot0(b))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return b}function T(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function I(E,b){Em(b);let _=h.signature,M=b==="compact"?_:b==="recovered"?_+1:void 0;return ce(E,M)}class D{r;s;recovery;constructor(b,_,M){if(this.r=w("r",b),this.s=w("s",_),M!=null){if(T(),![0,1,2,3].includes(M))throw new Error("invalid recovery id");this.recovery=M}Object.freeze(this)}static fromBytes(b,_=p.format){I(b,_);let M;if(_==="der"){let{r:K,s:W}=Lo.toSig(ce(b));return new D(K,W)}_==="recovered"&&(M=b[0],_="compact",b=b.subarray(1));let O=h.signature/2,k=b.subarray(0,O),U=b.subarray(O,O*2);return new D(i.fromBytes(k),i.fromBytes(U),M)}static fromHex(b,_){return this.fromBytes($n(b),_)}assertRecovery(){let{recovery:b}=this;if(b==null)throw new Error("invalid recovery id: must be present");return b}addRecoveryBit(b){return new D(this.r,this.s,b)}recoverPublicKey(b){let{r:_,s:M}=this,O=this.assertRecovery(),k=O===2||O===3?_+a:_;if(!s.isValid(k))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let U=s.toBytes(k),K=r.fromBytes(tr(k8((O&1)===0),U)),W=i.inv(k),we=$(ce(b,void 0,"msgHash")),pe=i.create(-we*W),ue=i.create(M*W),be=r.BASE.multiplyUnsafe(pe).add(K.multiplyUnsafe(ue));if(be.is0())throw new Error("invalid recovery: point at infinify");return be.assertValidity(),be}hasHighS(){return m(this.s)}toBytes(b=p.format){if(Em(b),b==="der")return $n(Lo.hexFromSig(this));let{r:_,s:M}=this,O=i.toBytes(_),k=i.toBytes(M);return b==="recovered"?(T(),tr(Uint8Array.of(this.assertRecovery()),O,k)):tr(O,k)}toHex(b){return Fn(this.toBytes(b))}}let F=t.bits2int||function(b){if(b.length>8192)throw new Error("input is too large");let _=Ai(b),M=b.length*8-c;return M>0?_>>BigInt(M):_},$=t.bits2int_modN||function(b){return i.create(F(b))},z=mc(c);function S(E){return Co("num < 2^"+c,E,qn,z),i.toBytes(E)}function x(E,b){return ce(E,void 0,"message"),b?ce(e(E),void 0,"prehashed message"):E}function L(E,b,_){let{lowS:M,prehash:O,extraEntropy:k}=bm(_,p);E=x(E,O);let U=$(E),K=i.fromBytes(b);if(!i.isValidNot0(K))throw new Error("invalid private key");let W=[S(K),S(U)];if(k!=null&&k!==!1){let be=k===!0?n(h.secretKey):k;W.push(ce(be,void 0,"extraEntropy"))}let we=tr(...W),pe=U;function ue(be){let Re=F(be);if(!i.isValidNot0(Re))return;let Je=i.inv(Re),Ee=r.BASE.multiply(Re).toAffine(),it=i.create(Ee.x);if(it===qn)return;let ui=i.create(Je*i.create(pe+it*K));if(ui===qn)return;let Eu=(Ee.x===it?0:2)|Number(Ee.y&Ui),Wa=ui;return M&&m(ui)&&(Wa=i.neg(ui),Eu^=1),new D(it,Wa,g?void 0:Eu)}return{seed:we,k2sig:ue}}function B(E,b,_={}){let{seed:M,k2sig:O}=L(E,b,_);return O5(e.outputLen,i.BYTES,o)(M,O).toBytes(_.format)}function P(E,b,_,M={}){let{lowS:O,prehash:k,format:U}=bm(M,p);if(_=ce(_,void 0,"publicKey"),b=x(b,k),!ys(E)){let K=E instanceof D?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+K)}I(E,U);try{let K=D.fromBytes(E,U),W=r.fromBytes(_);if(O&&K.hasHighS())return!1;let{r:we,s:pe}=K,ue=$(b),be=i.inv(pe),Re=i.create(ue*be),Je=i.create(we*be),Ee=r.BASE.multiplyUnsafe(Re).add(W.multiplyUnsafe(Je));return Ee.is0()?!1:i.create(Ee.x)===we}catch{return!1}}function v(E,b,_={}){let{prehash:M}=bm(_,p);return b=x(b,M),D.fromBytes(E,"recovered").recoverPublicKey(b).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:r,sign:B,verify:P,recoverPublicKey:v,Signature:D,hash:e})}var Sm={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},KI={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var L8=BigInt(2);function VI(r){let e=Sm.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=$e(d,t,e)*d%e,f=$e(u,t,e)*d%e,h=$e(f,L8,e)*l%e,p=$e(h,o,e)*h%e,g=$e(p,s,e)*p%e,m=$e(g,a,e)*g%e,w=$e(m,c,e)*m%e,T=$e(w,a,e)*g%e,I=$e(T,t,e)*d%e,D=$e(I,i,e)*p%e,F=$e(D,n,e)*l%e,$=$e(F,L8,e);if(!vm.eql(vm.sqr($),r))throw new Error("Cannot find square root");return $}var vm=Ti(Sm.p,{sqrt:VI}),HI=C8(Sm,{Fp:vm,endo:KI}),qr=R8(HI,Tr);var D8=32;function N8(r,e,t){let n=ze.digest(e instanceof Uint8Array?e:e.subarray());if(Li(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),qr.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new sc(String(o))});try{return qr.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new sc(String(o))}}function O8(r,e,t,n){let o=ze.digest(t instanceof Uint8Array?t:t.subarray());if(Li(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),qr.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new ic(String(s))});try{return n?.signal?.throwIfAborted(),qr.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new ic(String(s))}}var Cc=class{type="secp256k1";raw;_key;constructor(e){this._key=U8(e),this.raw=M8(this._key)}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){return O8(this._key,t,e,n)}},kc=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=B8(e),this.publicKey=new Cc(t??F8(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){return N8(this.raw,e,t)}};function Am(r){return new kc(r)}function Im(r){return new Cc(r)}async function $8(){let r=qI();return new kc(r)}function M8(r){return qr.Point.fromBytes(r).toBytes()}function B8(r){try{return qr.getPublicKey(r,!0),r}catch(e){throw new za(String(e))}}function U8(r){try{return qr.Point.fromBytes(r),r}catch(e){throw new Nn(String(e))}}function F8(r){try{return qr.getPublicKey(r,!0)}catch(e){throw new za(String(e))}}function qI(){return qr.utils.randomSecretKey()}async function od(r,e){if(r==="Ed25519")return d8();if(r==="secp256k1")return $8();if(r==="RSA")return wm(WI(e));if(r==="ECDSA")return w5(zI(e));throw new Fr}function tt(r,e){let{Type:t,Data:n}=mn.decode(r),o=n??new Uint8Array;switch(t){case Be.RSA:return mm(o,e);case Be.Ed25519:return W2(o);case Be.secp256k1:return Im(o);case Be.ECDSA:return v2(o);default:throw new Fr}}function sd(r){let{Type:e,Data:t}=mn.decode(r.digest),n=t??new Uint8Array;switch(e){case Be.Ed25519:return W2(n);case Be.secp256k1:return Im(n);case Be.ECDSA:return v2(n);default:throw new Fr}}function ft(r){return mn.encode({Type:Be[r.type],Data:r.raw})}function K8(r){let e=Ic.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Be.RSA:return pm(t);case Be.Ed25519:return q2(t);case Be.secp256k1:return Am(t);case Be.ECDSA:return h5(t);default:throw new Fr}}function V8(r){if(r.byteLength===fr)return q2(r);if(r.byteLength===D8)return Am(r);let e=Ir(r),t=e[2]?.[0];if(t===o5||t===s5||t===i5)return x2(e);if(e.length>8)return td(e);throw new A("Could not extract private key from raw bytes")}function ks(r){return Ic.encode({Type:Be[r.type],Data:r.raw})}function WI(r){return r==null?2048:parseInt(r,10)}function zI(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new A("Unsupported curve, should be P-256, P-384 or P-521")}var Pc=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),Do=new Uint32Array(80),Tm=class extends bs{A=Pc[0]|0;B=Pc[1]|0;C=Pc[2]|0;D=Pc[3]|0;E=Pc[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Do[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Do[c]=Hu(Do[c-3]^Do[c-8]^Do[c-14]^Do[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=qu(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=Wu(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=Hu(n,5)+l+a+d+Do[c]|0;a=i,i=s,s=Hu(o,30),o=n,n=u}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){Nt(Do)}destroy(){this.set(0,0,0,0,0),Nt(this.buffer)}},H8=uc(()=>new Tm);function q8(r,e,t,n){Un(r);let o=S5({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(Dt(s,"c"),Dt(i,"dkLen"),Dt(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");let c=S2(e,"password"),l=S2(t,"salt"),d=new Uint8Array(i),u=Ro.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function W8(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),Nt(o),t}function z8(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=q8(r,e,t,n),l,d=new Uint8Array(4),u=ws(d),f=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let g=i.subarray(p,p+a.outputLen);u.setInt32(0,h,!1),(l=c._cloneInto(l)).update(d).digestInto(f),g.set(f.subarray(0,g.length));for(let m=1;m<o;m++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<g.length;w++)g[w]^=f[w]}}return W8(a,c,i,l,f)}async function id(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=q8(r,e,t,n),d,u=new Uint8Array(4),f=ws(u),h=new Uint8Array(c.outputLen);for(let p=1,g=0;g<s;p++,g+=c.outputLen){let m=a.subarray(g,g+c.outputLen);f.setInt32(0,p,!1),(d=l._cloneInto(d)).update(u).digestInto(h),m.set(h.subarray(0,m.length)),await v5(o-1,i,()=>{c._cloneInto(d).update(h).digestInto(h);for(let w=0;w<m.length;w++)m[w]^=h[w]})}return W8(c,l,a,d,h)}var G8={sha1:H8,"sha2-256":Tr,"sha2-512":_o};function Rc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(G8).join(" / ");throw new A(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=G8[o],i=z8(s,r,e,{c:t,dkLen:n});return rt.encode(i).substring(1)}var _m={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Y8={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},j8=new globalThis.TextEncoder;function GI(r,e){let t=_m[e],n=Y8[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function YI(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=_m[e],o=Y8[e],s=r;for(;s.length>0;){let i=j8.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function Cm(r,{size:e=32,utf8Buffer:t}={}){if(!_m[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return YI(r,e,t);r=j8.encode(r)}return GI(r,e)}var Lc={hash:r=>Number(Cm(r,{size:32})),hashV:(r,e)=>jI(Lc.hash(r,e))};function jI(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),C(e,"base16")}var km=64,Wr=class{fp;h;seed;constructor(e,t,n,o=2){if(o>km)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=ae(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ee(this.fp,e.fp):!1}};function Ps(r,e){return Math.floor(Math.random()*(e-r))+r}var Rs=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");let t=Ps(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var XI=500,Dc=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Lc,this.seed=e.seed??Ps(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Rs(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new Rs(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Ps(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Rs(this.bucketSize));for(let a=0;a<XI;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Rs(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},QI={1:.5,2:.84,4:.95,8:.98};function ZI(r=.001){return r>.002?2:r>1e-5?4:8}function X8(r,e=.001){let t=ZI(e),n=QI[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),km);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var ad=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Lc,this.seed=e.seed??Ps(0,Math.pow(2,10)),this.filterSeries=[new Dc({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=C(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new Dc({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=C(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=C(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Et(r,e=.001,t){return new ad({...X8(r,e),...t??{}})}function oe(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new A(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var cd=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Q8=45,JI=15,Fi=new cd;function ld(r){if(!(r.length>JI))return Fi.new(r).parseWith(()=>Fi.readIPv4Addr())}function ud(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Q8))return Fi.new(r).parseWith(()=>Fi.readIPv6Addr())}function $i(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Q8)return;let t=Fi.new(r).parseWith(()=>Fi.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function Z8(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function J8(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Pm(r){switch(r.length){case Ls:return r.join(".");case Ds:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function e7(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function t7(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Ls=4,Ds=16,M$=parseInt("0xFFFF",16),eT=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Nc(r,e){e.length===Ds&&r.length===Ls&&Z8(e,0,11)&&(e=e.slice(12)),e.length===Ls&&r.length===Ds&&J8(r,eT,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function r7(r,e){if(typeof e=="string"&&(e=$i(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Rm(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Ls,o=ld(e);if(o==null&&(n=Ds,o=ud(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Lm(s,8*n);return{network:Nc(o,i),mask:i}}function Lm(r,e){if(e!==8*Ls&&e!==8*Ds)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Ns=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Rm(e));else{let n=$i(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=$i(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=Lm(o,8*n.length);this.network=Nc(n,this.mask)}}contains(e){return r7({network:this.network,mask:this.mask},e)}toString(){let e=e7(this.mask),t=e!==-1?String(e):t7(this.mask);return Pm(this.network)+"/"+t}};function n7(r,e){return new Ns(r).contains(e)}function dd(r){try{let e=oe(r);switch(e.type){case"ip6":return n7("2000::/3",e.host);default:return!1}}catch{return!1}}function o7(r){try{let e=oe(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function s7(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function Oc(r){try{let e=oe(r);switch(e.type){case"ip4":case"ip6":return s7(e.host);default:return!1}}catch{return!1}}function xt(r){try{return oe(r),!0}catch{return!1}}function zr(r){return!!ld(r)}function fd(r){return!!ud(r)}var a7=Ln(i7(),1),tT=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],rT=tT.map(r=>new a7.Netmask(r));function Dm(r){for(let e of rT)if(e.contains(r))return!0;return!1}function nT(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function oT(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Dm(o)}function sT(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function iT(r){let e=r.split(":"),t=e[e.length-1];return Dm(t)}function aT(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Ki(r){if(zr(r))return Dm(r);if(nT(r))return oT(r);if(sT(r))return iT(r);if(fd(r))return aT(r)}function Qe(r){try{let e=oe(r);switch(e.type){case"ip4":case"ip6":return Ki(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function fe(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var hd=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Vi=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new hd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new hd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Nm=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function vt(r={}){return cT(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function cT(r,e){e=e??{};let t=e.onEnd,n=new Vi,o,s,i,a=fe(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((m,w)=>{s=T=>{s=null,n.push(T);try{m(r(n))}catch(I){w(I)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=fe()})}},l=m=>s!=null?s(m):(n.push(m),o),d=m=>(n=new Vi,s!=null?s({error:m}):(n.push({error:m}),o)),u=m=>{if(i)return o;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:m})},f=m=>i?o:(i=!0,m!=null?d(m):l({done:!0})),h=()=>(n=new Vi,f(),{done:!0}),p=m=>(f(m),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:u,end:f,get readableLength(){return n.size},onEmpty:async m=>{let w=m?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let T,I;w!=null&&(T=new Promise((D,F)=>{I=()=>{F(new Nm)},w.addEventListener("abort",I)}));try{await Promise.race([a.promise,T])}finally{I!=null&&w!=null&&w?.removeEventListener("abort",I)}}},t==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(m){return g.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(m){return g.end(m),t!=null&&(t(m),t=void 0),o},get readableLength(){return g.readableLength},onEmpty:m=>g.onEmpty(m)},o}var lT=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function uT(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=lT(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function _r(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=uT(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Wn(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var pd=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},md=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Os=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"},gd=class extends Error{static name="MaxEarlyStreamsError";name="MaxEarlyStreamsError"},yd=class extends Error{static name="StreamClosedError";name="StreamClosedError"};function dT(r){return r.reason}async function Pe(r,e,t){if(e==null)return r;let n=t?.translateError??dT;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var wd=class{deferred;signal;constructor(e){this.signal=e,this.deferred=fe(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Vt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function fT(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var bd=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=fT(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Vt),this.cleanup())}async join(e={}){let t=new wd(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Pe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var St=class extends ie{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=Wn(this.emitEmpty.bind(this),1),this.emitIdle=Wn(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new md;let n=new bd(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Vt)}),this.clear()}async onEmpty(e){this.size!==0&&await _r(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await _r(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await _r(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=vt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new Vt("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var hT=Math.pow(2,20)*4,No=class extends ie{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??hT,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new X,this.writeBuffer=new X,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",t);let n=o=>{this.onDrainPromise?.reject(o.error??new yd)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),Pe(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=vt(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new cn(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new _u(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new fi;this.dispatchEvent(new Cu(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new xo))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new X(s);this.writeBuffer.consume(s.byteLength);let a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new Tu(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Ya(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Ya(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var Oo=class extends No{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};function Ed(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Mo=class extends ie{streams;protocol;status;log;maConn;streamOptions;earlyStreams;maxEarlyStreams;metrics;constructor(e,t){super(),this.maConn=e,this.protocol=t.protocol,this.streams=[],this.earlyStreams=[],this.status="open",this.log=e.log.newScope(t.name),this.streamOptions=t.streamOptions,this.maxEarlyStreams=t.maxEarlyStreams??10,this.metrics=t.metrics;let n=i=>{try{this.onData(i.data)}catch(a){this.abort(a),this.maConn.abort(a)}};this.maConn.addEventListener("message",n);let o=()=>{this.log("underlying stream drained, signal %d streams to continue writing",this.streams.length),this.streams.forEach(i=>{i.onMuxerDrain()})};this.maConn.addEventListener("drain",o);let s=()=>{this.log("underlying stream closed with status %s and %d streams",this.status,this.streams.length),this.onTransportClosed()};this.maConn.addEventListener("close",s)}send(e){let t=this.maConn.send(e);return t===!1&&(this.log("underlying stream saturated, signal %d streams to pause writing",this.streams.length),this.streams.forEach(n=>{n.onMuxerNeedsDrain()})),t}async close(e){this.status==="closed"||this.status==="closing"||(this.status="closing",await Pe(Promise.all([...this.streams].map(async t=>{await t.close(e)})),e?.signal),this.status="closed")}abort(e){this.status!=="closed"&&(this.status="closing",[...this.streams].forEach(t=>{t.abort(e)}),this.status="closed")}onTransportClosed(e){this.status="closing";try{[...this.streams].forEach(t=>{t.onTransportClosed(e)})}catch(t){this.abort(t)}this.status="closed"}async createStream(e){if(this.status!=="open")throw new Br;let t=this.onCreateStream({...this.streamOptions,...e});return Ed(t)&&(t=await t),this.streams.push(t),this.cleanUpStream(t),t}onRemoteStream(e){if(this.streams.push(e),this.cleanUpStream(e),this.listenerCount("stream")===0){this.earlyStreams.push(e),this.earlyStreams.length>this.maxEarlyStreams&&this.abort(new gd(`Too many early streams were opened - ${this.earlyStreams.length}/${this.maxEarlyStreams}`));return}this.safeDispatchEvent("stream",{detail:e})}cleanUpStream(e){let t=n=>{let o=this.streams.findIndex(s=>s===e);o!==-1&&this.streams.splice(o,1),n.error!=null?n.local?this.metrics?.increment({[`${e.direction}_stream_reset`]:!0}):this.metrics?.increment({[`${e.direction}_stream_abort`]:!0}):this.metrics?.increment({[`${e.direction}_stream_end`]:!0})};e.addEventListener("close",t),this.metrics?.increment({[`${e.direction}_stream`]:!0})}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="stream"&&this.earlyStreams.length>0&&queueMicrotask(()=>{this.earlyStreams.forEach(t=>{this.safeDispatchEvent("stream",{detail:t})}),this.earlyStreams=[]})}};var Bo=class extends No{id;protocol;constructor(e){super(e),this.id=e.id,this.protocol=e.protocol??""}async close(e){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.writeStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData),await _r(this,"drain",{...e,rejectionEvents:["close"]}),this.log("write queue drained, closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData)),await this.sendCloseWrite(e),this.writeStatus="closed",this.log("closed writable end gracefully"),this.remoteWriteStatus==="closed"&&this.onTransportClosed())}async closeRead(e){this.readStatus==="closing"||this.readStatus==="closed"||(this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.readStatus="closing",await this.sendCloseRead(e),this.readStatus="closed",this.log("closed readable end gracefully"))}};function le(r){let e=new globalThis.AbortController;function t(){let s=r.filter(i=>i?.aborted===!0).map(i=>i?.reason).pop();e.abort(s);for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var Hi=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var pT=1.2,mT=2,gT=5e3,yT=6e4,wT=5e3,Gr=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??wT;this.success=new Hi(t),this.failure=new Hi(t),this.next=new Hi(t),this.failureMultiplier=e.failureMultiplier??mT,this.timeoutMultiplier=e.timeoutMultiplier??pT,this.minTimeout=e.minTimeout??gT,this.maxTimeout=e.maxTimeout??yT,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=le([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var At=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},zn=class extends Error{static name="ValidationError";name="ValidationError"},xd=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},vd=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Mm(r){return e=>R(e,r)}function Bm(r){return e=>C(e,r)}function qi(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Ms(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function c7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=C(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ms(n);return Oe([t,o],t.length+o.length)}function l7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=ut.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ms(n);return Oe([t,o],t.length+o.length)}function Um(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=R(e,"base32"),o=qi(t);return`${n}:${o}`}var Fm=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new At("Invalid byte value in IP address");e[n]=o}),e},u7=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=zr(t[n]),i;s&&(i=Fm(t[n]),t[n]=R(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,R(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new At("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},d7=function(r){if(r.byteLength!==4)throw new At("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},f7=function(r){if(r.byteLength!==16)throw new At("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new At(`Invalid IPv6 address "${t}"`)}};function h7(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new At(`Invalid IPv6 address "${r}"`)}}var Om=Object.values(ps).map(r=>r.decoder),bT=(function(){let r=Om[0].or(Om[1]);return Om.slice(2).forEach(e=>r=r.or(e)),r})();function p7(r){return bT.decode(r)}function m7(r){return e=>r.encoder.encode(e)}function ET(r){if(parseInt(r).toString()!==r)throw new zn("Value must be an integer")}function xT(r){if(r<0)throw new zn("Value must be a positive integer, or zero")}function vT(r){return e=>{if(e>r)throw new zn(`Value must be smaller than or equal to ${r}`)}}function ST(...r){return e=>{for(let t of r)t(e)}}var Bc=ST(ET,xT,vT(65535));var mt=-1,$m=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new vd(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},jn=new $m,UT=[{code:4,name:"ip4",size:32,valueToBytes:Fm,bytesToValue:d7,validate:r=>{if(!zr(r))throw new zn(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:273,name:"udp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:33,name:"dccp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:41,name:"ip6",size:128,valueToBytes:u7,bytesToValue:f7,stringToValue:h7,validate:r=>{if(!fd(r))throw new zn(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:mt},{code:43,name:"ipcidr",size:8,bytesToValue:Mm("base10"),valueToBytes:Bm("base10")},{code:53,name:"dns",size:mt},{code:54,name:"dns4",size:mt},{code:55,name:"dns6",size:mt},{code:56,name:"dnsaddr",size:mt},{code:132,name:"sctp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:mt,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:mt,bytesToValue:Mm("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Bm("base58btc")(r):G.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Um,valueToBytes:c7},{code:445,name:"onion3",size:296,bytesToValue:Um,valueToBytes:l7},{code:446,name:"garlic64",size:mt},{code:447,name:"garlic32",size:mt},{code:448,name:"tls"},{code:449,name:"sni",size:mt},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:mt,bytesToValue:m7(ec),valueToBytes:p7},{code:480,name:"http"},{code:481,name:"http-path",size:mt,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:mt}];UT.forEach(r=>{jn.addProtocol(r)});function g7(r){let e=[],t=0;for(;t<r.length;){let n=hr(r,t),o=jn.getProtocol(n),s=he(n),i=FT(o,r,t+s),a=0;i>0&&o.size===mt&&(a=he(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let d=t+s+a,u=r.subarray(d,d+i);l.value=o.bytesToValue?.(u)??R(u)}e.push(l),t+=c}return e}function y7(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=jn.getProtocol(n.code),s=he(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??C(n.value),a=i.byteLength,o.size===mt&&(c=he(a)));let l=new Uint8Array(s+c+a),d=0;Oi(n.code,l,d),d+=s,i!=null&&(o.size===mt&&(Oi(a,l,d),d+=c),l.set(i,d)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return Oe(t,e)}function w7(r){if(r.charAt(0)!=="/")throw new At('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=jn.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new At(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new At(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new At("Incomplete multiaddr");return e}function b7(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=jn.getProtocol(e.code);if(t==null)throw new At(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function FT(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:hr(e,t)}var $T=Symbol.for("nodejs.util.inspect.custom"),jm=Symbol.for("@multiformats/multiaddr");function KT(r){if(r==null&&(r="/"),yn(r))return r.getComponents();if(r instanceof Uint8Array)return g7(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),w7(r);if(Array.isArray(r))return r;throw new At("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Td=class r{[jm]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=KT(e),t.validate!==!1&&VT(this)}get bytes(){return this.#r==null&&(this.#r=y7(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=b7(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new xd(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return ee(this.bytes,e.bytes)}[$T](){return`Multiaddr(${this.toString()})`}};function VT(r){r.getComponents().forEach(e=>{let t=jn.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function yn(r){return!!r?.[jm]}function q(r){return new Td(r)}var Xm=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=fe(),this.haveNext=fe()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=fe(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=fe(),await Pe(this.readNext.promise,t?.signal,t)}};function E7(){return new Xm}function HT(r){return r[Symbol.asyncIterator]!=null}async function qT(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*WT(r){let e=new AbortController,t=E7();qT(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*zT(r){for(let e of r)yield*e}function GT(...r){let e=[];for(let t of r)HT(t)||e.push(t);return e.length===r.length?zT(e):WT(r)}var jt=GT;function Yi(r,...e){if(r==null)throw new Error("Empty pipeline");if(Qm(r)){let n=r;r=()=>n.source}else if(v7(r)||x7(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Qm(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Qm(t[n])&&(t[n]=jT(t[n]));return YT(...t)}var YT=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},x7=r=>r?.[Symbol.asyncIterator]!=null,v7=r=>r?.[Symbol.iterator]!=null,Qm=r=>r==null?!1:r.sink!=null&&r.source!=null,jT=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=vt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(x7(s))o=async function*(){yield*s,n.end()};else if(v7(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return jt(n,o())}return r.source};var XT=4194304,_d=class extends Error{static name="UnwrappedError";name="UnwrappedError"},Hc=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Jm=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},eg=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function QT(r){return typeof r?.closeRead=="function"}function ZT(r){return typeof r?.close=="function"}function Zm(r){return QT(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:ZT(r)?r.status!=="open":!1}function JT(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Cd(r,e){let t=e?.maxBufferSize??XT,n=new X,o,s=!1;if(!JT(r))throw new A("Argument should be a Stream or a Multiaddr");let i=d=>{if(n.append(d.data),n.byteLength>t){let u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(d){if(s===!0)throw new _d("Stream was unwrapped");if(Zm(r)){if(n.byteLength===0&&d?.bytes==null)return null;if(d?.bytes!=null&&n.byteLength<d.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new Os(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}let u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await Pe(o.promise,d?.signal),Zm(r)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}let f=d?.bytes??n.byteLength;if(n.byteLength<f){if(Zm(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,f),new Os(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}let h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new _d("Stream was unwrapped");r.send(d)||await _r(r,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function Fo(r,e={}){let t=Cd(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=he(e.maxDataLength));let n=e?.lengthDecoder??hr,o=e?.lengthEncoder??Mt;return{async read(i){let a=-1,c=new X;for(;;){let d=await t.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Hc("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new eg(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Jm(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Os(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Os(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new X(o(i.byteLength),i),a)},async writeV(i,a){let c=new X(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function Ue(r,e){let t=Fo(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var e_=1024*1024*4,t_=1024*1024*4,kd=class{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new X,this.maxBufferSize=e.maxBufferSize??e_,this.maxDataLength=e.maxDataLength??t_,this.lengthDecoder=e.lengthDecoder??hr,this.encodingLength=e.encodingLength??he}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new A(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let t;try{t=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(t<0||t>this.maxDataLength)throw new Hc("Invalid message length");let n=this.encodingLength(t),o=n+t;if(this.buffer.byteLength>=o){let s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}};var r_=["Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function tg(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(e==="string"||e==="number"||e==="bigint"||e==="symbol")return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(r instanceof Uint8Array)return"Uint8Array";if(r.constructor===Object)return"Object";let t=n_(r);return t||"Object"}function n_(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(r_.includes(e))return e}var y=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}static equals(e,t){return e===t||e.major===t.major&&e.name===t.name}};y.uint=new y(0,"uint",!0);y.negint=new y(1,"negint",!0);y.bytes=new y(2,"bytes",!0);y.string=new y(3,"string",!0);y.array=new y(4,"array",!1);y.map=new y(5,"map",!1);y.tag=new y(6,"tag",!1);y.float=new y(7,"float",!0);y.false=new y(7,"false",!0);y.true=new y(7,"true",!0);y.null=new y(7,"null",!0);y.undefined=new y(7,"undefined",!0);y.break=new y(7,"break",!0);var N=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var qc=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",o_=new TextEncoder;function Pd(r){return qc&&globalThis.Buffer.isBuffer(r)}function Us(r){return r instanceof Uint8Array?Pd(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var s_=24,i_=200,ji=qc?r=>r.length>=s_?globalThis.Buffer.from(r):S7(r):r=>r.length>=i_?o_.encode(r):S7(r),wn=r=>Uint8Array.from(r),I7=qc?(r,e,t)=>Pd(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),T7=qc?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Us(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},_7=qc?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function Rd(r,e){if(Pd(r)&&Pd(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function S7(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(o>=55296&&o<=57343&&(o=65533),e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}var A7=4096;function C7(r){let e=r.length;if(e<=A7)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=A7));return t}var a_=256,Wc=class{constructor(e=a_){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=_7(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=I7(n,0,this.cursor)}else t=T7(this.chunks,this.cursor);return e&&this.reset(),t}},Ld=class{constructor(e){this.dest=e,this.cursor=0,this.chunks=[e]}reset(){this.cursor=0}push(e){if(this.cursor+e.length>this.dest.length)throw new Error("write out of bounds, destination buffer is too small");this.dest.set(e,this.cursor),this.cursor+=e.length}toBytes(e=!1){let t=this.dest.subarray(0,this.cursor);return e&&this.reset(),t}};var J="CBOR decode error:",bn="CBOR encode error:",zc=[];zc[23]=1;zc[24]=2;zc[25]=3;zc[26]=5;zc[27]=9;function Xn(r,e,t){if(r.length-e<t)throw new Error(`${J} not enough data for type`)}var gt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function mr(r,e,t){Xn(r,e,1);let n=r[e];if(t.strict===!0&&n<gt[0])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function gr(r,e,t){Xn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<gt[1])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function yr(r,e,t){Xn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<gt[2])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function wr(r,e,t){Xn(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<gt[3])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${J} integers outside of the safe integer range are not supported`)}function k7(r,e,t,n){return new N(y.uint,mr(r,e+1,n),2)}function P7(r,e,t,n){return new N(y.uint,gr(r,e+1,n),3)}function R7(r,e,t,n){return new N(y.uint,yr(r,e+1,n),5)}function L7(r,e,t,n){return new N(y.uint,wr(r,e+1,n),9)}function Cr(r,e){return Ke(r,0,e.value)}function Ke(r,e,t){if(t<gt[0]){let n=Number(t);r.push([e|n])}else if(t<gt[1]){let n=Number(t);r.push([e|24,n])}else if(t<gt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<gt[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<gt[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${J} encountered BigInt larger than allowable range`)}}Cr.encodedSize=function(e){return Ke.encodedSize(e.value)};Ke.encodedSize=function(e){return e<gt[0]?1:e<gt[1]?2:e<gt[2]?3:e<gt[3]?5:9};Cr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function D7(r,e,t,n){return new N(y.negint,-1-mr(r,e+1,n),2)}function N7(r,e,t,n){return new N(y.negint,-1-gr(r,e+1,n),3)}function O7(r,e,t,n){return new N(y.negint,-1-yr(r,e+1,n),5)}var rg=BigInt(-1),M7=BigInt(1);function B7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new N(y.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${J} integers outside of the safe integer range are not supported`);return new N(y.negint,rg-BigInt(o),9)}function Dd(r,e){let t=e.value,n=typeof t=="bigint"?t*rg-M7:t*-1-1;Ke(r,e.type.majorEncoded,n)}Dd.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*rg-M7:t*-1-1;return n<gt[0]?1:n<gt[1]?2:n<gt[2]?3:n<gt[3]?5:9};Dd.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Gc(r,e,t,n){Xn(r,e,t+n);let o=r.slice(e+t,e+t+n);return new N(y.bytes,o,t+n)}function U7(r,e,t,n){return Gc(r,e,1,t)}function F7(r,e,t,n){return Gc(r,e,2,mr(r,e+1,n))}function $7(r,e,t,n){return Gc(r,e,3,gr(r,e+1,n))}function K7(r,e,t,n){return Gc(r,e,5,yr(r,e+1,n))}function V7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer bytes lengths not supported`);return Gc(r,e,9,o)}function Nd(r){return r.encodedBytes===void 0&&(r.encodedBytes=y.equals(r.type,y.string)?ji(r.value):r.value),r.encodedBytes}function Xi(r,e){let t=Nd(e);Ke(r,e.type.majorEncoded,t.length),r.push(t)}Xi.encodedSize=function(e){let t=Nd(e);return Ke.encodedSize(t.length)+t.length};Xi.compareTokens=function(e,t){return l_(Nd(e),Nd(t))};function l_(r,e){return r.length<e.length?-1:r.length>e.length?1:Rd(r,e)}var H7=new TextDecoder,d_=32;function f_(r,e,t){if(t-e<d_){let o="";for(let s=e;s<t;s++){let i=r[s];if(i&128)return H7.decode(r.subarray(e,t));o+=String.fromCharCode(i)}return o}return H7.decode(r.subarray(e,t))}function Yc(r,e,t,n,o){let s=t+n;Xn(r,e,s);let i=new N(y.string,f_(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=r.slice(e+t,e+s)),i}function q7(r,e,t,n){return Yc(r,e,1,t,n)}function W7(r,e,t,n){return Yc(r,e,2,mr(r,e+1,n),n)}function z7(r,e,t,n){return Yc(r,e,3,gr(r,e+1,n),n)}function G7(r,e,t,n){return Yc(r,e,5,yr(r,e+1,n),n)}function Y7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer string lengths not supported`);return Yc(r,e,9,o,n)}var j7=Xi;function Qi(r,e,t,n){return new N(y.array,n,t)}function X7(r,e,t,n){return Qi(r,e,1,t)}function Q7(r,e,t,n){return Qi(r,e,2,mr(r,e+1,n))}function Z7(r,e,t,n){return Qi(r,e,3,gr(r,e+1,n))}function J7(r,e,t,n){return Qi(r,e,5,yr(r,e+1,n))}function ey(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer array lengths not supported`);return Qi(r,e,9,o)}function ty(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return Qi(r,e,1,1/0)}function Od(r,e){Ke(r,y.array.majorEncoded,e.value)}Od.compareTokens=Cr.compareTokens;Od.encodedSize=function(e){return Ke.encodedSize(e.value)};function Zi(r,e,t,n){return new N(y.map,n,t)}function ry(r,e,t,n){return Zi(r,e,1,t)}function ny(r,e,t,n){return Zi(r,e,2,mr(r,e+1,n))}function oy(r,e,t,n){return Zi(r,e,3,gr(r,e+1,n))}function sy(r,e,t,n){return Zi(r,e,5,yr(r,e+1,n))}function iy(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer map lengths not supported`);return Zi(r,e,9,o)}function ay(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return Zi(r,e,1,1/0)}function Md(r,e){Ke(r,y.map.majorEncoded,e.value)}Md.compareTokens=Cr.compareTokens;Md.encodedSize=function(e){return Ke.encodedSize(e.value)};function cy(r,e,t,n){return new N(y.tag,t,1)}function ly(r,e,t,n){return new N(y.tag,mr(r,e+1,n),2)}function uy(r,e,t,n){return new N(y.tag,gr(r,e+1,n),3)}function dy(r,e,t,n){return new N(y.tag,yr(r,e+1,n),5)}function fy(r,e,t,n){return new N(y.tag,wr(r,e+1,n),9)}function Bd(r,e){Ke(r,y.tag.majorEncoded,e.value)}Bd.compareTokens=Cr.compareTokens;Bd.encodedSize=function(e){return Ke.encodedSize(e.value)};var ng=20,og=21,sg=22,ig=23;function hy(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${J} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new N(y.null,null,1):new N(y.undefined,void 0,1)}function py(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return new N(y.break,void 0,1)}function ag(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${J} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${J} Infinity values are not supported`)}return new N(y.float,r,e)}function my(r,e,t,n){return ag(cg(r,e+1),3,n)}function gy(r,e,t,n){return ag(lg(r,e+1),5,n)}function yy(r,e,t,n){return ag(xy(r,e+1),9,n)}function jc(r,e,t){let n=e.value;if(n===!1)r.push([y.float.majorEncoded|ng]);else if(n===!0)r.push([y.float.majorEncoded|og]);else if(n===null)r.push([y.float.majorEncoded|sg]);else if(n===void 0)r.push([y.float.majorEncoded|ig]);else{let o,s=!1;(!t||t.float64!==!0)&&(by(n),o=cg(jr,1),n===o||Number.isNaN(n)?(jr[0]=249,r.push(jr.slice(0,3)),s=!0):(Ey(n),o=lg(jr,1),n===o&&(jr[0]=250,r.push(jr.slice(0,5)),s=!0))),s||(y_(n),o=xy(jr,1),jr[0]=251,r.push(jr.slice(0,9)))}}jc.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){by(n);let o=cg(jr,1);if(n===o||Number.isNaN(n))return 3;if(Ey(n),o=lg(jr,1),n===o)return 5}return 9};var wy=new ArrayBuffer(9),kr=new DataView(wy,1),jr=new Uint8Array(wy,0);function by(r){if(r===1/0)kr.setUint16(0,31744,!1);else if(r===-1/0)kr.setUint16(0,64512,!1);else if(Number.isNaN(r))kr.setUint16(0,32256,!1);else{kr.setFloat32(0,r);let e=kr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)kr.setUint16(0,31744,!1);else if(t===0)kr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?kr.setUint16(0,0):o<-14?kr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):kr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function cg(r,e){if(r.length-e<2)throw new Error(`${J} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function Ey(r){kr.setFloat32(0,r,!1)}function lg(r,e){if(r.length-e<4)throw new Error(`${J} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function y_(r){kr.setFloat64(0,r,!1)}function xy(r,e){if(r.length-e<8)throw new Error(`${J} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}jc.compareTokens=Cr.compareTokens;function xe(r,e,t){throw new Error(`${J} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Ud(r){return()=>{throw new Error(`${J} ${r}`)}}var V=[];for(let r=0;r<=23;r++)V[r]=xe;V[24]=k7;V[25]=P7;V[26]=R7;V[27]=L7;V[28]=xe;V[29]=xe;V[30]=xe;V[31]=xe;for(let r=32;r<=55;r++)V[r]=xe;V[56]=D7;V[57]=N7;V[58]=O7;V[59]=B7;V[60]=xe;V[61]=xe;V[62]=xe;V[63]=xe;for(let r=64;r<=87;r++)V[r]=U7;V[88]=F7;V[89]=$7;V[90]=K7;V[91]=V7;V[92]=xe;V[93]=xe;V[94]=xe;V[95]=Ud("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)V[r]=q7;V[120]=W7;V[121]=z7;V[122]=G7;V[123]=Y7;V[124]=xe;V[125]=xe;V[126]=xe;V[127]=Ud("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)V[r]=X7;V[152]=Q7;V[153]=Z7;V[154]=J7;V[155]=ey;V[156]=xe;V[157]=xe;V[158]=xe;V[159]=ty;for(let r=160;r<=183;r++)V[r]=ry;V[184]=ny;V[185]=oy;V[186]=sy;V[187]=iy;V[188]=xe;V[189]=xe;V[190]=xe;V[191]=ay;for(let r=192;r<=215;r++)V[r]=cy;V[216]=ly;V[217]=uy;V[218]=dy;V[219]=fy;V[220]=xe;V[221]=xe;V[222]=xe;V[223]=xe;for(let r=224;r<=243;r++)V[r]=Ud("simple values are not supported");V[244]=xe;V[245]=xe;V[246]=xe;V[247]=hy;V[248]=Ud("simple values are not supported");V[249]=my;V[250]=gy;V[251]=yy;V[252]=xe;V[253]=xe;V[254]=xe;V[255]=py;var Xr=[];for(let r=0;r<24;r++)Xr[r]=new N(y.uint,r,1);for(let r=-1;r>=-24;r--)Xr[31-r]=new N(y.negint,r,1);Xr[64]=new N(y.bytes,new Uint8Array(0),1);Xr[96]=new N(y.string,"",1);Xr[128]=new N(y.array,0,1);Xr[160]=new N(y.map,0,1);Xr[244]=new N(y.false,!1,1);Xr[245]=new N(y.true,!0,1);Xr[246]=new N(y.null,null,1);function ug(r){switch(r.type){case y.false:return wn([244]);case y.true:return wn([245]);case y.null:return wn([246]);case y.bytes:return r.value.length?void 0:wn([64]);case y.string:return r.value===""?wn([96]):void 0;case y.array:return r.value===0?wn([128]):void 0;case y.map:return r.value===0?wn([160]):void 0;case y.uint:return r.value<24?wn([Number(r.value)]):void 0;case y.negint:if(r.value>=-24)return wn([31-Number(r.value)])}}var b_={float64:!1,mapSorter:v_,quickEncodeToken:ug},Ty=Object.freeze({float64:!0,mapSorter:S_,quickEncodeToken:ug});function E_(){let r=[];return r[y.uint.major]=Cr,r[y.negint.major]=Dd,r[y.bytes.major]=Xi,r[y.string.major]=j7,r[y.array.major]=Od,r[y.map.major]=Md,r[y.tag.major]=Bd,r[y.float.major]=jc,r}var Ji=E_(),Fd=new Wc,Qc=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${bn} object contains circular references`);return new r(t,e)}},$o={null:new N(y.null,null),undefined:new N(y.undefined,void 0),true:new N(y.true,!0),false:new N(y.false,!1),emptyArray:new N(y.array,0),emptyMap:new N(y.map,0)},En={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new N(y.float,r):r>=0?new N(y.uint,r):new N(y.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new N(y.uint,r):new N(y.negint,r)},Uint8Array(r,e,t,n){return new N(y.bytes,r)},string(r,e,t,n){return new N(y.string,r)},boolean(r,e,t,n){return r?$o.true:$o.false},null(r,e,t,n){return $o.null},undefined(r,e,t,n){return $o.undefined},ArrayBuffer(r,e,t,n){return new N(y.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new N(y.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[$o.emptyArray,new N(y.break)]:$o.emptyArray;n=Qc.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=$d(i,t,n);return t.addBreakTokens?[new N(y.array,r.length),o,new N(y.break)]:[new N(y.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length,a;if(i){a=new Array(i),n=Qc.createCheck(n,r);let c=!o&&t.ignoreUndefinedProperties,l=0;for(let d of s){let u=o?r.get(d):r[d];c&&u===void 0||(a[l++]=[$d(d,t,n),$d(u,t,n)])}l<i&&(a.length=l)}return a?.length?(x_(a,t),t.addBreakTokens?[new N(y.map,a.length),a,new N(y.break)]:[new N(y.map,a.length),a]):t.addBreakTokens===!0?[$o.emptyMap,new N(y.break)]:$o.emptyMap}};En.Map=En.Object;En.Buffer=En.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))En[`${r}Array`]=En.DataView;function $d(r,e={},t){let n=tg(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||En[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=En[n];if(!s)throw new Error(`${bn} unsupported type: ${n}`);return s(r,n,e,t)}function x_(r,e){e.mapSorter&&r.sort(e.mapSorter)}function v_(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=Ji[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function S_(r,e){if(r[0]instanceof N&&e[0]instanceof N){let t=r[0],n=e[0];return t._keyBytes||(t._keyBytes=vy(t.value)),n._keyBytes||(n._keyBytes=vy(n.value)),Rd(t._keyBytes,n._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function vy(r){return Kd(r,Ji,Ty)}function Xc(r,e,t,n){if(Array.isArray(e))for(let o of e)Xc(r,o,t,n);else t[e.type.major](r,e,n)}var Sy=y.uint.majorEncoded,Ay=y.negint.majorEncoded,A_=y.bytes.majorEncoded,I_=y.string.majorEncoded,Iy=y.array.majorEncoded,T_=y.float.majorEncoded|ng,__=y.float.majorEncoded|og,C_=y.float.majorEncoded|sg,k_=y.float.majorEncoded|ig,P_=BigInt(-1),R_=BigInt(1);function L_(r){return r.addBreakTokens!==!0}function _y(r,e,t,n){let o=tg(e),s=t.typeEncoders&&t.typeEncoders[o];if(s){let i=s(e,o,t,n);if(i!=null){Xc(r,i,Ji,t);return}}switch(o){case"null":r.push([C_]);return;case"undefined":r.push([k_]);return;case"boolean":r.push([e?__:T_]);return;case"number":!Number.isInteger(e)||!Number.isSafeInteger(e)?jc(r,new N(y.float,e),t):e>=0?Ke(r,Sy,e):Ke(r,Ay,e*-1-1);return;case"bigint":e>=BigInt(0)?Ke(r,Sy,e):Ke(r,Ay,e*P_-R_);return;case"string":{let i=ji(e);Ke(r,I_,i.length),r.push(i);return}case"Uint8Array":Ke(r,A_,e.length),r.push(e);return;case"Array":if(!e.length){r.push([Iy]);return}n=Qc.createCheck(n,e),Ke(r,Iy,e.length);for(let i of e)_y(r,i,t,n);return;case"Object":case"Map":{let i=En.Object(e,o,t,n);Xc(r,i,Ji,t)}return;default:{let i=En[o];if(!i)throw new Error(`${bn} unsupported type: ${o}`);let a=i(e,o,t,n);Xc(r,a,Ji,t)}}}function Kd(r,e,t,n){let o=n instanceof Uint8Array,s=o?new Ld(n):Fd,i=$d(r,t);if(!Array.isArray(i)&&t.quickEncodeToken){let a=t.quickEncodeToken(i);if(a)return o?(s.push(a),s.toBytes()):a;let c=e[i.type.major];if(c.encodedSize){let l=c.encodedSize(i,t);if(o||(s=new Wc(l)),c(s,i,t),s.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${i} was wrong`);return o?s.toBytes():Us(s.chunks[0])}}return s.reset(),Xc(s,i,e,t),s.toBytes(!0)}function Ko(r,e){return e=Object.assign({},b_,e),L_(e)?(Fd.reset(),_y(Fd,r,e,void 0),Fd.toBytes(!0)):Kd(r,Ji,e)}var D_={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},Vd=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=Xr[e];if(t===void 0){let n=V[e];if(!n)throw new Error(`${J} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Zc=Symbol.for("DONE"),Hd=Symbol.for("BREAK");function N_(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=ea(e,t);if(s===Hd){if(r.value===1/0)break;throw new Error(`${J} got unexpected break to lengthed array`)}if(s===Zc)throw new Error(`${J} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function O_(r,e,t){let n=t.useMaps===!0,o=t.rejectDuplicateMapKeys===!0,s=n?void 0:{},i=n?new Map:void 0;for(let a=0;a<r.value;a++){let c=ea(e,t);if(c===Hd){if(r.value===1/0)break;throw new Error(`${J} got unexpected break to lengthed map`)}if(c===Zc)throw new Error(`${J} found map but not enough entries (got ${a} [no key], expected ${r.value})`);if(!n&&typeof c!="string")throw new Error(`${J} non-string keys not supported (got ${typeof c})`);if(o&&(n&&i.has(c)||!n&&Object.hasOwn(s,c)))throw new Error(`${J} found repeat map key "${c}"`);let l=ea(e,t);if(l===Zc)throw new Error(`${J} found map but not enough entries (got ${a} [no value], expected ${r.value})`);n?i.set(c,l):s[c]=l}return n?i:s}function ea(r,e){if(r.done())return Zc;let t=r.next();if(y.equals(t.type,y.break))return Hd;if(t.type.terminal)return t.value;if(y.equals(t.type,y.array))return N_(t,r,e);if(y.equals(t.type,y.map))return O_(t,r,e);if(y.equals(t.type,y.tag)){if(e.tags&&typeof e.tags[t.value]=="function"){let n=ea(r,e);return e.tags[t.value](n)}throw new Error(`${J} tag not supported (${t.value})`)}throw new Error("unsupported")}function dg(r,e){if(!(r instanceof Uint8Array))throw new Error(`${J} data to decode must be a Uint8Array`);e=Object.assign({},D_,e);let t=Us(r),n=e.tokenizer||new Vd(t,e),o=ea(n,e);if(o===Zc)throw new Error(`${J} did not find any content to decode`);if(o===Hd)throw new Error(`${J} got unexpected break`);return[o,r.subarray(n.pos())]}function br(r,e){let[t,n]=dg(r,e);if(n.length>0)throw new Error(`${J} too many terminals, data makes no sense`);return t}var qd=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},ta=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Wd=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Jc=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function zd(r){return r[Symbol.asyncIterator]!=null}function Cy(r,e){if(r.byteLength>e)throw new ta("Message length too long")}var Yd=r=>{let e=he(r),t=Ge(e);return Mt(r,t),Yd.bytes=e,t};Yd.bytes=0;function Qn(r,e){e=e??{};let t=e.lengthEncoder??Yd,n=e?.maxDataLength??4194304;function*o(s){Cy(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return zd(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}Qn.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Yd,n=e?.maxDataLength??4194304;return Cy(r,n),new X(t(r.byteLength),r)};var $s;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})($s||($s={}));var hg=r=>{let e=hr(r);return hg.bytes=he(e),e};hg.bytes=0;function Ks(r,e){let t=new X,n=$s.LENGTH,o=-1,s=e?.lengthDecoder??hg,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===$s.LENGTH)try{if(o=s(t),o<0)throw new qd("Invalid message length");if(o>a)throw new ta("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=$s.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new Wd("Message length length too long");break}throw l}if(n===$s.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=$s.LENGTH}}}return zd(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Jc("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Jc("Unexpected end of input")})()}Ks.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return Ks(n,{...e??{},onLength:s=>{t=s}})};function B_(r,e){if(typeof r=="string")return U_(r);if(typeof r=="number")return K_(r,e);throw Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}var jd=B_;function U_(r){if(typeof r!="string"||r.length===0||r.length>100)throw Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function F_(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function $_(r){let e=Math.abs(r);return e>=315576e5?Vs(r,e,315576e5,"year"):e>=26298e5?Vs(r,e,26298e5,"month"):e>=6048e5?Vs(r,e,6048e5,"week"):e>=864e5?Vs(r,e,864e5,"day"):e>=36e5?Vs(r,e,36e5,"hour"):e>=6e4?Vs(r,e,6e4,"minute"):e>=1e3?Vs(r,e,1e3,"second"):`${r} ms`}function K_(r,e){if(typeof r!="number"||!Number.isFinite(r))throw Error("Value provided to ms.format() must be of type number.");return e?.long?$_(r):F_(r)}function Vs(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function pg(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=jd,t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d,u){let f,h=null,p,g;function m(...w){if(!m.enabled)return;let T=m,I=Number(new Date),D=I-(f||I);T.diff=D,T.prev=f,T.curr=I,f=I,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let F=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(z,S)=>{if(z==="%%")return"%";F++;let x=t.formatters[S];if(typeof x=="function"){let L=w[F];z=x.call(T,L),w.splice(F,1),F--}return z}),t.formatArgs.call(T,w),u?.onLog!=null&&u.onLog(...w),(T.log||t.log).apply(T,w)}return m.namespace=d,m.useColors=t.useColors(),m.color=t.selectColor(d),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,g=t.enabled(d)),g),set:w=>{h=w}}),typeof t.init=="function"&&t.init(m),m}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),h=f.length;for(u=0;u<h;u++)f[u]&&(d=f[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.substr(1)+"$")):t.names.push(new RegExp("^"+d+"$")))}function s(){let d=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),d}function i(d){if(d[d.length-1]==="*")return!0;let u,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack??d.message:d}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Xd=Y_(),V_=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function H_(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function q_(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+jd(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var W_=console.debug??console.log??(()=>{});function z_(r){try{r?Xd?.setItem("debug",r):Xd?.removeItem("debug")}catch{}}function G_(){let r;try{r=Xd?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Y_(){try{return localStorage}catch{}}function j_(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Py=pg({formatArgs:q_,save:z_,load:G_,useColors:H_,setupFormatters:j_,colors:V_,storage:Xd,log:W_});var rr=Py;rr.formatters.b=r=>r==null?"undefined":De.baseEncode(r);rr.formatters.t=r=>r==null?"undefined":ut.baseEncode(r);rr.formatters.m=r=>r==null?"undefined":rt.baseEncode(r);rr.formatters.p=r=>r==null?"undefined":r.toString();rr.formatters.c=r=>r==null?"undefined":r.toString();rr.formatters.k=r=>r==null?"undefined":r.toString();rr.formatters.a=r=>r==null?"undefined":r.toString();function Ry(r,e=""){let t=Ly(r.message),n=Ly(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
3
|
+
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(S,x,L){var B=this;if(!(B instanceof g))return new g(S,x,L);B.time=+S||0,B.nano=+x||0,B.year=+L||0,m(B)}function m(S){var x,L,B,P=S.year,v=S.time,E=S.nano,b=((E<0||a<=E)&&(E-=(L=Math.floor(E/a))*a,v+=L,L=1),P%e);return(v<-s||s<v||b)&&((x=l(v/o))&&(P+=x*e,v-=x*o),(B=w(v)).setUTCFullYear(b+B.getUTCFullYear()),B=(v=+B)+(x=l((P-=b)/e))*o,x&&-s<=B&&B<=s&&(P-=x*e,v=B),L=1),L&&(S.year=P,S.time=v,S.nano=E),S}function w(S){var x=new Date(0);return x.setTime(S),x}function T(P,B){P=+P||0;var L=l((B=(B|0)*i)/n)+l(P/n),B=B%n+P%n,P=l(B/n);return P&&(L+=P,B-=P*n),new g(1e3*B,0,L*e)}function I(S,x,L,B,P,v){return function(b,_){var O=m(this);b=b||new Array(8),F(b,_|=0);var k=Math.floor(O.time/1e3),O=O.year*(t*r/e),M=l(O/i)+l(k/i),O=O%i+k%i,k=Math.floor(O/i);return k&&(M+=k,O-=k*i),E(b,_+P,M),E(b,_+v,O),b};function E(b,_,M){b[_+S]=M>>24&255,b[_+x]=M>>16&255,b[_+L]=M>>8&255,b[_+B]=255&M}}function D(S,x,L,B,P,v){return function(b,_){F(b,_|=0);var M=E(b,_+P);return T(E(b,_+v),M)};function E(b,_){return 16777216*b[_+S]+(b[_+x]<<16|b[_+L]<<8|b[_+B])}}function F(S,x){if(S=S&&S.length,S==null)throw new TypeError("Invalid Buffer");if(S<x+8)throw new RangeError("Out of range")}function $(S){return(9<S?"":"0")+(0|S)}function z(S,x){return(c+(0|S)).substr(-x)}})()});var Yw=an((gse,Gw)=>{"use strict";function lR(r){return r>=55296&&r<=56319}function uR(r){return r>=56320&&r<=57343}Gw.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var o=t.length,s=0,i,a,c=0;c<o;c+=1){if(i=t.charCodeAt(c),a=t[c],lR(i)&&uR(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),s+=e(a),s===n)return t.slice(0,c+1);if(s>n)return t.slice(0,c-a.length+1)}return t}});var Xw=an((yse,jw)=>{"use strict";function dR(r){return r>=55296&&r<=56319}function fR(r){return r>=56320&&r<=57343}jw.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,o=null,s=null,i=0;i<t;i++)o=e.charCodeAt(i),fR(o)?s!=null&&dR(s)?n+=1:n+=3:o<=127?n+=1:o>=128&&o<=2047?n+=2:o>=2048&&o<=65535&&(n+=3),s=o;return n}});var Zw=an((wse,Qw)=>{"use strict";var hR=Yw(),pR=Xw();Qw.exports=hR.bind(null,pR)});var tb=an((bse,eb)=>{"use strict";var mR=Zw(),gR=/[\/\?<>\\:\*\|"]/g,yR=/[\x00-\x1f\x80-\x9f]/g,wR=/^\.+$/,bR=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;function ER(r,e){for(var t=r.length;t>0&&(r[t-1]==="."||r[t-1]===" ");)t--;return t<r.length?r.slice(0,t)+e:r}function Jw(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(gR,e).replace(yR,e).replace(wR,e).replace(bR,e);return t=ER(t,e),mR(t,255)}eb.exports=function(r,e){var t=e&&e.replacement||"",n=Jw(r,t);return t===""?n:Jw(n,"")}});var rb=an(Aa=>{"use strict";var vR="[object ArrayBuffer]",ao=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===vR}static toArrayBuffer(e){return this.isArrayBuffer(e)?e:e.byteLength===e.buffer.byteLength||e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:this.toUint8Array(e.buffer).slice(e.byteOffset,e.byteOffset+e.byteLength).buffer}static toUint8Array(e){return this.toView(e,Uint8Array)}static toView(e,t){if(e.constructor===t)return e;if(this.isArrayBuffer(e))return new t(e);if(this.isArrayBufferView(e))return new t(e.buffer,e.byteOffset,e.byteLength);throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView)'")}static isBufferSource(e){return this.isArrayBufferView(e)||this.isArrayBuffer(e)}static isArrayBufferView(e){return ArrayBuffer.isView(e)||e&&this.isArrayBuffer(e.buffer)}static isEqual(e,t){let n=r.toUint8Array(e),o=r.toUint8Array(t);if(n.length!==o.byteLength)return!1;for(let s=0;s<n.length;s++)if(n[s]!==o[s])return!1;return!0}static concat(...e){let t;Array.isArray(e[0])&&!(e[1]instanceof Function)||Array.isArray(e[0])&&e[1]instanceof Function?t=e[0]:e[e.length-1]instanceof Function?t=e.slice(0,e.length-1):t=e;let n=0;for(let i of t)n+=i.byteLength;let o=new Uint8Array(n),s=0;for(let i of t){let a=this.toUint8Array(i);o.set(a,s),s+=a.length}return e[e.length-1]instanceof Function?this.toView(o,e[e.length-1]):o.buffer}},j3="string",SR=/^[0-9a-f\s]+$/i,AR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,IR=/^[a-zA-Z0-9-_]+$/,i1=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n.buffer}static toString(e){let t=ao.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Or=class{static toString(e,t=!1){let n=ao.toArrayBuffer(e),o=new DataView(n),s="";for(let i=0;i<n.byteLength;i+=2){let a=o.getUint16(i,t);s+=String.fromCharCode(a)}return s}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),o=new DataView(n);for(let s=0;s<e.length;s++)o.setUint16(s*2,e.charCodeAt(s),t);return n}},a1=class r{static isHex(e){return typeof e===j3&&SR.test(e)}static isBase64(e){return typeof e===j3&&AR.test(e)}static isBase64Url(e){return typeof e===j3&&IR.test(e)}static ToString(e,t="utf8"){let n=ao.toUint8Array(e);switch(t.toLowerCase()){case"utf8":return this.ToUtf8String(n);case"binary":return this.ToBinary(n);case"hex":return this.ToHex(n);case"base64":return this.ToBase64(n);case"base64url":return this.ToBase64Url(n);case"utf16le":return Or.toString(n,!0);case"utf16":case"utf16be":return Or.toString(n);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromString(e,t="utf8"){if(!e)return new ArrayBuffer(0);switch(t.toLowerCase()){case"utf8":return this.FromUtf8String(e);case"binary":return this.FromBinary(e);case"hex":return this.FromHex(e);case"base64":return this.FromBase64(e);case"base64url":return this.FromBase64Url(e);case"utf16le":return Or.fromString(e,!0);case"utf16":case"utf16be":return Or.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=ao.toUint8Array(e);if(typeof btoa<"u"){let n=this.ToString(t,"binary");return btoa(n)}else return Buffer.from(t).toString("base64")}static FromBase64(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64(t))throw new TypeError("Argument 'base64Text' is not Base64 encoded");return typeof atob<"u"?this.FromBinary(atob(t)):new Uint8Array(Buffer.from(t,"base64")).buffer}static FromBase64Url(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isBase64Url(t))throw new TypeError("Argument 'base64url' is not Base64Url encoded");return this.FromBase64(this.Base64Padding(t.replace(/\-/g,"+").replace(/\_/g,"/")))}static ToBase64Url(e){return this.ToBase64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/\=/g,"")}static FromUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.FromBinary(e);case"utf8":return i1.fromString(e);case"utf16":case"utf16be":return Or.fromString(e);case"utf16le":case"usc2":return Or.fromString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToUtf8String(e,t=r.DEFAULT_UTF8_ENCODING){switch(t){case"ascii":return this.ToBinary(e);case"utf8":return i1.toString(e);case"utf16":case"utf16be":return Or.toString(e);case"utf16le":case"usc2":return Or.toString(e,!0);default:throw new Error(`Unknown type of encoding '${t}'`)}}static FromBinary(e){let t=e.length,n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);return n.buffer}static ToBinary(e){let t=ao.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=ao.toUint8Array(e),n="",o=t.length;for(let s=0;s<o;s++){let i=t[s];i<16&&(n+="0"),n+=i.toString(16)}return n}static FromHex(e){let t=this.formatString(e);if(!t)return new ArrayBuffer(0);if(!r.isHex(t))throw new TypeError("Argument 'hexString' is not HEX encoded");t.length%2&&(t=`0${t}`);let n=new Uint8Array(t.length/2);for(let o=0;o<t.length;o=o+2){let s=t.slice(o,o+2);n[o/2]=parseInt(s,16)}return n.buffer}static ToUtf16String(e,t=!1){return Or.toString(e,t)}static FromUtf16String(e,t=!1){return Or.fromString(e,t)}static Base64Padding(e){let t=4-e.length%4;if(t<4)for(let n=0;n<t;n++)e+="=";return e}static formatString(e){return e?.replace(/[\n\r\t ]/g,"")||""}};a1.DEFAULT_UTF8_ENCODING="utf8";function TR(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function _R(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function CR(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}Aa.BufferSourceConverter=ao;Aa.Convert=a1;Aa.assign=TR;Aa.combine=_R;Aa.isEqual=CR});var wx=an(Rn=>{"use strict";Object.defineProperty(Rn,"__esModule",{value:!0});Rn.parseCookie=gx;Rn.parse=gx;Rn.stringifyCookie=jL;Rn.stringifySetCookie=Fp;Rn.serialize=Fp;Rn.parseSetCookie=XL;Rn.stringifySetCookie=Fp;Rn.serialize=Fp;var px=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,mx=/^[\u0021-\u003A\u003C-\u007E]*$/,qL=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,WL=/^[\u0020-\u003A\u003D-\u007E]*$/,zL=/^-?\d+$/,GL=Object.prototype.toString,YL=(()=>{let r=function(){};return r.prototype=Object.create(null),r})();function gx(r,e){let t=new YL,n=r.length;if(n<2)return t;let o=e?.decode||yx,s=0;do{let i=q4(r,s,n);if(i===-1)break;let a=H4(r,s,n);if(i>a){s=r.lastIndexOf(";",i-1)+1;continue}let c=Xo(r,s,i);t[c]===void 0&&(t[c]=o(Xo(r,i+1,a))),s=a+1}while(s<n);return t}function jL(r,e){let t=e?.encode||encodeURIComponent,n=[];for(let o of Object.keys(r)){let s=r[o];if(s===void 0)continue;if(!px.test(o))throw new TypeError(`cookie name is invalid: ${o}`);let i=t(s);if(!mx.test(i))throw new TypeError(`cookie val is invalid: ${s}`);n.push(`${o}=${i}`)}return n.join("; ")}function Fp(r,e,t){let n=typeof r=="object"?r:{...t,name:r,value:String(e)},s=(typeof e=="object"?e:t)?.encode||encodeURIComponent;if(!px.test(n.name))throw new TypeError(`argument name is invalid: ${n.name}`);let i=n.value?s(n.value):"";if(!mx.test(i))throw new TypeError(`argument val is invalid: ${n.value}`);let a=n.name+"="+i;if(n.maxAge!==void 0){if(!Number.isInteger(n.maxAge))throw new TypeError(`option maxAge is invalid: ${n.maxAge}`);a+="; Max-Age="+n.maxAge}if(n.domain){if(!qL.test(n.domain))throw new TypeError(`option domain is invalid: ${n.domain}`);a+="; Domain="+n.domain}if(n.path){if(!WL.test(n.path))throw new TypeError(`option path is invalid: ${n.path}`);a+="; Path="+n.path}if(n.expires){if(!QL(n.expires)||!Number.isFinite(n.expires.valueOf()))throw new TypeError(`option expires is invalid: ${n.expires}`);a+="; Expires="+n.expires.toUTCString()}if(n.httpOnly&&(a+="; HttpOnly"),n.secure&&(a+="; Secure"),n.partitioned&&(a+="; Partitioned"),n.priority)switch(typeof n.priority=="string"?n.priority.toLowerCase():void 0){case"low":a+="; Priority=Low";break;case"medium":a+="; Priority=Medium";break;case"high":a+="; Priority=High";break;default:throw new TypeError(`option priority is invalid: ${n.priority}`)}if(n.sameSite)switch(typeof n.sameSite=="string"?n.sameSite.toLowerCase():n.sameSite){case!0:case"strict":a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"none":a+="; SameSite=None";break;default:throw new TypeError(`option sameSite is invalid: ${n.sameSite}`)}return a}function XL(r,e){let t=e?.decode||yx,n=r.length,o=H4(r,0,n),s=q4(r,0,o),i=s===-1?{name:"",value:t(Xo(r,0,o))}:{name:Xo(r,0,s),value:t(Xo(r,s+1,o))},a=o+1;for(;a<n;){let c=H4(r,a,n),l=q4(r,a,c),d=l===-1?Xo(r,a,c):Xo(r,a,l),u=l===-1?void 0:Xo(r,l+1,c);switch(d.toLowerCase()){case"httponly":i.httpOnly=!0;break;case"secure":i.secure=!0;break;case"partitioned":i.partitioned=!0;break;case"domain":i.domain=u;break;case"path":i.path=u;break;case"max-age":u&&zL.test(u)&&(i.maxAge=Number(u));break;case"expires":if(!u)break;let f=new Date(u);Number.isFinite(f.valueOf())&&(i.expires=f);break;case"priority":if(!u)break;let h=u.toLowerCase();(h==="low"||h==="medium"||h==="high")&&(i.priority=h);break;case"samesite":if(!u)break;let p=u.toLowerCase();(p==="lax"||p==="strict"||p==="none")&&(i.sameSite=p);break}a=c+1}return i}function H4(r,e,t){let n=r.indexOf(";",e);return n===-1?t:n}function q4(r,e,t){let n=r.indexOf("=",e);return n<t?n:-1}function Xo(r,e,t){let n=e,o=t;do{let s=r.charCodeAt(n);if(s!==32&&s!==9)break}while(++n<o);for(;o>n;){let s=r.charCodeAt(o-1);if(s!==32&&s!==9)break;o--}return r.slice(n,o)}function yx(r){if(r.indexOf("%")===-1)return r;try{return decodeURIComponent(r)}catch{return r}}function QL(r){return GL.call(r)==="[object Date]"}});var fN={};et(fN,{DEFAULT_CID_PEER_FILTER_SIZE:()=>Sg,DEFAULT_SESSION_MAX_PROVIDERS:()=>vg,DEFAULT_SESSION_MIN_PROVIDERS:()=>xg,InsufficientProvidersError:()=>rl,InvalidCodecError:()=>Ag,NoRoutersAvailableError:()=>Vo,UnknownCodecError:()=>ol,UnknownHashAlgorithmError:()=>nl,createHelia:()=>dN,heliaDefaults:()=>E6,libp2pDefaults:()=>H0});var I6=Symbol.for("@libp2p/connection");var Dn=Symbol.for("@libp2p/content-routing");var Vt=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},vu=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},Su=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},A=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},Nn=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},za=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}},Ga=class extends Error{static name="UnsupportedOperationError";constructor(e="Unsupported operation"){super(e),this.name="UnsupportedOperationError"}};var is=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},di=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Br=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},fi=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}};var cn=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},Ya=class extends Error{static name="StreamBufferError";constructor(e="The stream buffer was full"){super(e),this.name="StreamBufferError"}},Le=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},hi=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},ln=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},Au=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},bo=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},pi=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},de=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},as=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},un=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Ur=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var Eo=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},cs=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},ja=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},Iu=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},mi=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Fr=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Tu=class extends Event{data;constructor(e,t){super("message",t),this.data=e}},xo=class extends Event{error;local;constructor(e,t,n){super("close",n),this.error=t,this.local=e}},_u=class extends xo{constructor(e,t){super(!0,e,t)}},Cu=class extends xo{constructor(e,t){super(!1,e,t)}};var ls=Symbol.for("@libp2p/peer-discovery");var ku=Symbol.for("@libp2p/peer-id");function Rt(r){return!!r?.[ku]}var On=Symbol.for("@libp2p/peer-routing");var us="keep-alive";function Pu(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function at(...r){let e=[];for(let t of r)Pu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function lt(...r){let e=[];for(let t of r)Pu(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var vo=Symbol.for("@libp2p/transport");var Xa;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Xa||(Xa={}));var ie=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let o=this.#e.get(e);o==null&&(o=[],this.#e.set(e,o)),o.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:s})=>s!==t),this.#e.set(e,o))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:o})=>!o),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var me=Symbol.for("@libp2p/service-capabilities"),ur=Symbol.for("@libp2p/service-dependencies");var H=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var Ru=class extends AggregateError{static name="DNSQueryFailedError";name="DNSQueryFailedError"};var W0=Ln(_6(),1);var z0=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},C6=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function qt(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout},signal:i}=e,a,c,d=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(i?.aborted){f(C6(i));return}if(i&&(c=()=>{f(C6(i))},i.addEventListener("abort",c,{once:!0})),r.then(u,f),t===Number.POSITIVE_INFINITY)return;let h=new z0;a=s.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(p){f(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?u():o instanceof Error?f(o):(h.message=o??`Promise timed out after ${t} milliseconds`,f(h))},t)}).finally(()=>{d.clear(),c&&i&&i.removeEventListener("abort",c)});return d.clear=()=>{s.clearTimeout.call(void 0,a),a=void 0},d}function G0(r,e,t){let n=0,o=r.length;for(;o>0;){let s=Math.trunc(o/2),i=n+s;t(r[i],e)<=0?(n=++i,o-=s+1):o=s}return n}var Za=class{#e=[];enqueue(e,t){let{priority:n=0,id:o}=t??{},s={priority:n,id:o,run:e};if(this.size===0||this.#e[this.size-1].priority>=n){this.#e.push(s);return}let i=G0(this.#e,s,(a,c)=>c.priority-a.priority);this.#e.splice(i,0,s)}setPriority(e,t){let n=this.#e.findIndex(s=>s.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[o]=this.#e.splice(n,1);this.enqueue(o.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var ds=class extends W0.default{#e;#t;#r=0;#a;#c=!1;#m=!1;#u;#T=0;#b=0;#d;#f;#l;#i=[];#s=0;#n;#_;#o=0;#y;#h;#L=1n;#w=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Za,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#e=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#a=e.intervalCap,this.#u=e.interval,this.#l=e.strict,this.#n=new e.queueClass,this.#_=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#$()}#E(e){for(;this.#s<this.#i.length;){let n=this.#i[this.#s];if(n!==void 0&&e-n>=this.#u)this.#s++;else break}(this.#s>100&&this.#s>this.#i.length/2||this.#s===this.#i.length)&&(this.#i=this.#i.slice(this.#s),this.#s=0)}#D(e){this.#l?this.#i.push(e):this.#r++}#N(){this.#l?this.#i.length>this.#s&&this.#i.pop():this.#r>0&&this.#r--}#x(){return this.#i.length-this.#s}get#O(){return this.#t?!0:this.#l?this.#x()<this.#a:this.#r<this.#a}get#M(){return this.#o<this.#y}#B(){this.#o--,this.#o===0&&this.emit("pendingZero"),this.#A(),this.emit("next")}#U(){this.#f=void 0,this.#P(),this.#k()}#F(e){if(this.#l){if(this.#E(e),this.#x()>=this.#a){let n=this.#i[this.#s],o=this.#u-(e-n);return this.#v(o),!0}return!1}if(this.#d===void 0){let t=this.#T-e;if(t<0){if(this.#b>0){let n=e-this.#b;if(n<this.#u)return this.#v(this.#u-n),!0}this.#r=this.#e?this.#o:0}else return this.#v(t),!0}return!1}#v(e){this.#f===void 0&&(this.#f=setTimeout(()=>{this.#U()},e))}#S(){this.#d&&(clearInterval(this.#d),this.#d=void 0)}#C(){this.#f&&(clearTimeout(this.#f),this.#f=void 0)}#A(){if(this.#n.size===0){if(this.#S(),this.emit("empty"),this.#o===0){if(this.#C(),this.#l&&this.#s>0){let t=Date.now();this.#E(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){let t=Date.now(),n=!this.#F(t);if(this.#O&&this.#M){let o=this.#n.dequeue();this.#t||(this.#D(t),this.#g()),this.emit("active"),o(),n&&this.#k(),e=!0}}return e}#k(){this.#t||this.#d!==void 0||this.#l||(this.#d=setInterval(()=>{this.#P()},this.#u),this.#T=Date.now()+this.#u)}#P(){this.#l||(this.#r===0&&this.#o===0&&this.#d&&this.#S(),this.#r=this.#e?this.#o:0),this.#I(),this.#g()}#I(){for(;this.#A(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#I()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#n.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#L++).toString()},new Promise((n,o)=>{let s=Symbol(`task-${t.id}`);this.#n.enqueue(async()=>{this.#o++,this.#w.set(s,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let i;try{try{t.signal?.throwIfAborted()}catch(l){throw this.#K(),this.#w.delete(s),l}this.#b=Date.now();let a=e({signal:t.signal});if(t.timeout&&(a=qt(Promise.resolve(a),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#o} running, ${this.#n.size} waiting)`})),t.signal){let{signal:l}=t;a=Promise.race([a,new Promise((d,u)=>{i=()=>{u(l.reason)},l.addEventListener("abort",i,{once:!0})})])}let c=await a;n(c),this.emit("completed",c)}catch(a){o(a),this.emit("error",a)}finally{i&&t.signal?.removeEventListener("abort",i),this.#w.delete(s),queueMicrotask(()=>{this.#B()})}},t),this.emit("add"),this.#A()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#h?(this.#h=!1,this.#I(),this):this}pause(){this.#h=!0}clear(){this.#n=new this.#_,this.#S(),this.#R(),this.emit("empty"),this.#o===0&&(this.#C(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#n.size!==0&&await this.#p("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#p("next",()=>this.#n.size<e)}async onIdle(){this.#o===0&&this.#n.size===0||await this.#p("idle")}async onPendingZero(){this.#o!==0&&await this.#p("pendingZero")}async onRateLimit(){this.isRateLimited||await this.#p("rateLimit")}async onRateLimitCleared(){this.isRateLimited&&await this.#p("rateLimitCleared")}onError(){return new Promise((e,t)=>{let n=o=>{this.off("error",n),t(o)};this.on("error",n)})}async#p(e,t){return new Promise(n=>{let o=()=>{t&&!t()||(this.off(e,o),n())};this.on(e,o)})}get size(){return this.#n.size}sizeBy(e){return this.#n.filter(e).length}get pending(){return this.#o}get isPaused(){return this.#h}#$(){this.#t||(this.on("add",()=>{this.#n.size>0&&this.#g()}),this.on("next",()=>{this.#g()}))}#g(){this.#t||this.#m||(this.#m=!0,queueMicrotask(()=>{this.#m=!1,this.#R()}))}#K(){this.#t||(this.#N(),this.#g())}#R(){let e=this.#c;if(this.#t||this.#n.size===0){e&&(this.#c=!1,this.emit("rateLimitCleared"));return}let t;if(this.#l){let o=Date.now();this.#E(o),t=this.#x()}else t=this.#r;let n=t>=this.#a;n!==e&&(this.#c=n,this.emit(n?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#c}get isSaturated(){return this.#o===this.#y&&this.#n.size>0||this.isRateLimited&&this.#n.size>0}get runningTasks(){return[...this.#w.values()].map(e=>({...e}))}};function Du(r){let e=[dr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var J0={};et(J0,{base10:()=>ES});var uO=new Uint8Array(0);function k6(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function $r(r){if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")}function P6(r){return new TextEncoder().encode(r)}function R6(r){return new TextDecoder().decode(r)}function pS(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var s=r.charAt(o),i=s.charCodeAt(0);if(t[i]!==255)throw new TypeError(s+" is ambiguous");t[i]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function u(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var g=0,m=0,w=0,T=p.length;w!==T&&p[w]===0;)w++,g++;for(var I=(T-w)*d+1>>>0,D=new Uint8Array(I);w!==T;){for(var F=p[w],$=0,z=I-1;(F!==0||$<m)&&z!==-1;z--,$++)F+=256*D[z]>>>0,D[z]=F%a>>>0,F=F/a>>>0;if(F!==0)throw new Error("Non-zero carry");m=$,w++}for(var S=I-m;S!==I&&D[S]===0;)S++;for(var x=c.repeat(g);S<I;++S)x+=r.charAt(D[S]);return x}function f(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var g=0;if(p[g]!==" "){for(var m=0,w=0;p[g]===c;)m++,g++;for(var T=(p.length-g)*l+1>>>0,I=new Uint8Array(T);p[g];){var D=t[p.charCodeAt(g)];if(D===255)return;for(var F=0,$=T-1;(D!==0||F<w)&&$!==-1;$--,F++)D+=a*I[$]>>>0,I[$]=D%256>>>0,D=D/256>>>0;if(D!==0)throw new Error("Non-zero carry");w=F,g++}if(p[g]!==" "){for(var z=T-w;z!==T&&I[z]===0;)z++;for(var S=new Uint8Array(m+(T-z)),x=m;z!==T;)S[x++]=I[z++];return S}}}function h(p){var g=f(p);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:h}}var mS=pS,gS=mS,L6=gS;var j0=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},X0=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return D6(this,e)}},Q0=class{decoders;constructor(e){this.decoders=e}or(e){return D6(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function D6(r,e){return new Q0({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Z0=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new j0(e,t,n),this.decoder=new X0(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function gi({name:r,prefix:e,encode:t,decode:n}){return new Z0(r,e,t,n)}function So({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=L6(t,r);return gi({prefix:e,name:r,encode:n,decode:s=>$r(o(s))})}function yS(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),i=0,a=0,c=0;for(let l=0;l<o;++l){let d=e[r[l]];if(d===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||(255&a<<8-i)!==0)throw new SyntaxError("Unexpected end of data");return s}function wS(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,s="",i=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],i+=8;i>t;)i-=t,s+=e[o&a>>i];if(i!==0&&(s+=e[o&a<<t-i]),n)for(;(s.length*t&7)!==0;)s+="=";return s}function bS(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function Xe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=bS(n);return gi({prefix:e,name:r,encode(s){return wS(s,n,t)},decode(s){return yS(s,o,t,r)}})}var ES=So({prefix:"9",name:"base10",alphabet:"0123456789"});var e2={};et(e2,{base16:()=>xS,base16upper:()=>vS});var xS=Xe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),vS=Xe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var t2={};et(t2,{base2:()=>SS});var SS=Xe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var r2={};et(r2,{base256emoji:()=>CS});var N6=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),AS=N6.reduce((r,e,t)=>(r[t]=e,r),[]),IS=N6.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function TS(r){return r.reduce((e,t)=>(e+=AS[t],e),"")}function _S(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=IS[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var CS=gi({prefix:"\u{1F680}",name:"base256emoji",encode:TS,decode:_S});var n2={};et(n2,{base32:()=>ut,base32hex:()=>LS,base32hexpad:()=>NS,base32hexpadupper:()=>OS,base32hexupper:()=>DS,base32pad:()=>PS,base32padupper:()=>RS,base32upper:()=>kS,base32z:()=>MS});var ut=Xe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),kS=Xe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),PS=Xe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),RS=Xe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),LS=Xe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),DS=Xe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),NS=Xe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),OS=Xe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),MS=Xe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var o2={};et(o2,{base36:()=>Ar,base36upper:()=>BS});var Ar=So({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),BS=So({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var s2={};et(s2,{base58btc:()=>De,base58flickr:()=>US});var De=So({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),US=So({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var i2={};et(i2,{base64:()=>rt,base64pad:()=>Ja,base64url:()=>ec,base64urlpad:()=>FS});var rt=Xe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ja=Xe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),ec=Xe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),FS=Xe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var a2={};et(a2,{base8:()=>$S});var $S=Xe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var c2={};et(c2,{identity:()=>KS});var KS=gi({prefix:"\0",name:"identity",encode:r=>R6(r),decode:r=>P6(r)});var Nu={};et(Nu,{code:()=>l2,decode:()=>zS,encode:()=>WS,name:()=>qS});var VS=new TextEncoder,HS=new TextDecoder,qS="json",l2=512;function WS(r){return VS.encode(JSON.stringify(r))}function zS(r){return JSON.parse(HS.decode(r))}var fs={};et(fs,{code:()=>Mn,decode:()=>jS,encode:()=>YS,name:()=>GS});var GS="raw",Mn=85;function YS(r){return $r(r)}function jS(r){return $r(r)}var f2={};et(f2,{identity:()=>dt});var He={};et(He,{Digest:()=>hs,create:()=>Wt,decode:()=>ke,equals:()=>d2,hasCode:()=>pA});var XS=B6,O6=128,QS=127,ZS=~QS,JS=Math.pow(2,31);function B6(r,e,t){e=e||[],t=t||0;for(var n=t;r>=JS;)e[t++]=r&255|O6,r/=128;for(;r&ZS;)e[t++]=r&255|O6,r>>>=7;return e[t]=r|0,B6.bytes=t-n+1,e}var eA=u2,tA=128,M6=127;function u2(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw u2.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&M6)<<o:(i&M6)*Math.pow(2,o),o+=7}while(i>=tA);return u2.bytes=s-n,t}var rA=Math.pow(2,7),nA=Math.pow(2,14),oA=Math.pow(2,21),sA=Math.pow(2,28),iA=Math.pow(2,35),aA=Math.pow(2,42),cA=Math.pow(2,49),lA=Math.pow(2,56),uA=Math.pow(2,63),dA=function(r){return r<rA?1:r<nA?2:r<oA?3:r<sA?4:r<iA?5:r<aA?6:r<cA?7:r<lA?8:r<uA?9:10},fA={encode:XS,decode:eA,encodingLength:dA},hA=fA,tc=hA;function rc(r,e=0){return[tc.decode(r,e),tc.decode.bytes]}function yi(r,e,t=0){return tc.encode(r,e,t),e}function wi(r){return tc.encodingLength(r)}function Wt(r,e){let t=e.byteLength,n=wi(r),o=n+wi(t),s=new Uint8Array(o+t);return yi(r,s,0),yi(t,s,n),s.set(e,o),new hs(r,t,e,s)}function ke(r){let e=$r(r),[t,n]=rc(e),[o,s]=rc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new hs(t,o,i,e)}function d2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&k6(r.bytes,t.bytes)}}var hs=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function pA(r,e){return r.code===e}var U6=0,mA="identity",F6=$r;function gA(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Wt(U6,F6(r))}var dt={code:U6,name:mA,encode:F6,digest:gA};var p2={};et(p2,{sha256:()=>ze,sha512:()=>Mu});var yA=20;function nc({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new h2(r,e,t,n,o)}var h2=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,s){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??yA,this.maxDigestLength=s}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?$6(n,this.code,t?.truncate):n.then(o=>$6(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function $6(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Wt(e,r)}function V6(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ze=nc({name:"sha2-256",code:18,encode:V6("SHA-256")}),Mu=nc({name:"sha2-512",code:19,encode:V6("SHA-512")});function H6(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return bA(t,m2(r),e??De.encoder);default:return EA(t,m2(r),e??ut.encoder)}}var q6=new WeakMap;function m2(r){let e=q6.get(r);if(e==null){let t=new Map;return q6.set(r,t),t}return e}var G=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:e,multihash:t}=this;if(e!==oc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xA)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Wt(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&d2(e.multihash,n.multihash)}toString(e){return H6(this,e)}toJSON(){return{"/":H6(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:s,bytes:i}=t;return new r(n,o,s,i??W6(n,o,s.bytes))}else if(t[vA]===!0){let{version:n,multihash:o,code:s}=t,i=ke(o);return r.create(n,s,i)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==oc)throw new Error(`Version 0 CID must use dag-pb (code: ${oc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=W6(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,oc,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=$r(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let s=o.subarray(t.multihashSize-t.digestSize),i=new hs(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=rc(e.subarray(t));return t+=f,u},o=n(),s=oc;if(o===18?(o=0,t=0):s=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let i=t,a=n(),c=n(),l=t+c,d=l-i;return{version:o,codec:s,multihashCode:a,digestSize:c,multihashSize:d,size:l}}static parse(e,t){let[n,o]=wA(e,t),s=r.decode(o);if(s.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return m2(s).set(n,e),s}};function wA(r,e){switch(r[0]){case"Q":{let t=e??De;return[De.prefix,t.decode(`${De.prefix}${r}`)]}case De.prefix:{let t=e??De;return[De.prefix,t.decode(r)]}case ut.prefix:{let t=e??ut;return[ut.prefix,t.decode(r)]}case Ar.prefix:{let t=e??Ar;return[Ar.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function bA(r,e,t){let{prefix:n}=t;if(n!==De.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let s=t.encode(r).slice(1);return e.set(n,s),s}else return o}function EA(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let s=t.encode(r);return e.set(n,s),s}else return o}var oc=112,xA=18;function W6(r,e,t){let n=wi(r),o=n+wi(e),s=new Uint8Array(o+t.byteLength);return yi(r,s,0),yi(e,s,n),s.set(t,o),s}var vA=Symbol.for("@ipld/js-cid/CID");var ps={...c2,...t2,...a2,...J0,...e2,...n2,...o2,...s2,...i2,...r2},GO={...p2,...f2};function ae(r=0){return new Uint8Array(r)}function Ge(r=0){return new Uint8Array(r)}function G6(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var z6=G6("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),g2=G6("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ge(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),SA={utf8:z6,"utf-8":z6,hex:ps.base16,latin1:g2,ascii:g2,binary:g2,...ps},Bu=SA;function R(r,e="utf8"){let t=Bu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var y2=60;function Uu(r){return{Status:r.Status??0,TC:r.TC??r.flag_tc??!1,RD:r.RD??r.flag_rd??!1,RA:r.RA??r.flag_ra??!1,AD:r.AD??r.flag_ad??!1,CD:r.CD??r.flag_cd??!1,Question:(r.Question??r.questions??[]).map(e=>({name:e.name,type:dr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:dr[e.type],TTL:e.TTL??e.ttl??y2,data:e.data instanceof Uint8Array?R(e.data):e.data}))}}var AA=4;function w2(r,e={}){let t=new ds({concurrency:e.queryConcurrency??AA});return async(n,o={})=>{let s=o?.logger?.forComponent("dns:dns-json-over-https"),i=new URLSearchParams;i.set("name",n),Du(o.types).forEach(c=>{i.append("type",dr[c])}),o.onProgress?.(new H("dns:query",n)),s?.("GET %s",`${r}?${i}`);let a=await t.add(async()=>{let c=await fetch(`${r}?${i}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(s?.("GET %s %d",c.url,c.status),c.status!==200)throw new Error(`Unexpected HTTP status: ${c.status} - ${c.statusText}`);let l=Uu(await c.json());return o.onProgress?.(new H("dns:response",l)),l},{signal:o.signal});if(a==null)throw new Error("No DNS response received");return a}}function Y6(){return[w2("https://cloudflare-dns.com/dns-query"),w2("https://dns.google/resolve")]}var Q6=Ln(X6(),1);var b2=class{lru;constructor(e){this.lru=(0,Q6.default)(e)}get(e,t){let n=!0,o=[];for(let s of t){let i=this.getAnswers(e,s);if(i.length===0){n=!1;break}o.push(...i)}if(n)return Uu({answers:o})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,o=this.lru.get(n);if(o!=null){let s=o.filter(i=>i.expires>Date.now()).map(({expires:i,value:a})=>({...a,TTL:Math.round((i-Date.now())/1e3),type:dr[a.type]}));return s.length===0&&this.lru.remove(n),s}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,o=this.lru.get(n)??[];o.push({expires:Date.now()+(t.TTL??y2)*1e3,value:t}),this.lru.set(n,o)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function Z6(r){return new b2(r)}var IA=1e3,Fu=class{resolvers;cache;logger;constructor(e){this.resolvers={},this.cache=Z6(e.cacheSize??IA),this.logger=e.logger,Object.entries(e.resolvers??{}).forEach(([t,n])=>{Array.isArray(n)||(n=[n]),t.endsWith(".")||(t=`${t}.`),this.resolvers[t]=n}),this.resolvers["."]==null&&(this.resolvers["."]=Y6())}async query(e,t={}){let n=Du(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new H("dns:cache",o)),o;let s=`${e.split(".").pop()}.`,i=(this.resolvers[s]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of i){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,logger:this.logger,types:n});for(let d of l.Answer)this.cache.add(e,d);return l}catch(l){a.push(l),t.onProgress?.(new H("dns:error",l))}}throw new Ru(a,`DNS lookup of ${e} ${n} failed`)}};var dr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(dr||(dr={}));function $u(r={}){return new Fu(r)}function TA(r){return r[Symbol.asyncIterator]!=null}function _A(r){if(TA(r))return(async()=>{for await(let e of r);})();for(let e of r);}var er=_A;var sc=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},ic=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Ku=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var J6={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Ku("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var nt=J6;function ee(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Oe(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=Ge(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var t5=Symbol.for("@achingbrain/uint8arraylist");function e5(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function bi(r){return!!r?.[t5]}var X=class r{bufs;length;[t5]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(bi(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(bi(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=e5(this.bufs,e);return t.buf[t.index]}set(e,t){let n=e5(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(bi(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Oe(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Oe(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),s=new r;return s.length=o,s.bufs=[...n],s}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let s=0;s<this.bufs.length;s++){let i=this.bufs[s],a=o,c=a+i.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,d=t>a&&t<=c;if(l&&d){if(e===a&&t===c){n.push(i);break}let u=e-a;n.push(i.subarray(u,u+(t-e)));break}if(l){if(e===0){n.push(i);continue}n.push(i.subarray(e-a));continue}if(d){if(t===c){n.push(i);break}n.push(i.subarray(0,t-a));break}n.push(i)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!bi(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let h=this.get(u+f);if(n[f]!==h){d=Math.max(1,f-a[h]);break}}if(d===0)return u}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=ae(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ge(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=ae(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=ae(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=ae(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ee(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,s)=>o+s.byteLength,0)),n.length=t,n}};function C(r,e="utf8"){let t=Bu[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var kA=parseInt("11111",2),E2=parseInt("10000000",2),PA=parseInt("01111111",2),r5={0:ac,1:ac,2:RA,3:NA,4:OA,5:DA,6:LA,16:ac,22:ac,48:ac};function Ir(r,e={offset:0}){let t=r[e.offset]&kA;if(e.offset++,r5[t]!=null)return r5[t](r,e);throw new Error("No decoder for tag "+t)}function cc(r,e){let t=0;if((r[e.offset]&E2)===E2){let n=r[e.offset]&PA,o="0x";e.offset++;for(let s=0;s<n;s++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function ac(r,e){cc(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=Ir(r,e);if(n===null)break;t.push(n)}return t}function RA(r,e){let t=cc(r,e),n=e.offset,o=e.offset+t,s=[];for(let i=n;i<o;i++)i===n&&r[i]===0||s.push(r[i]);return e.offset+=t,Uint8Array.from(s)}function LA(r,e){let t=cc(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let s=0,i=0;o<40?(s=0,i=o):o<80?(s=1,i=o-40):(s=2,i=o-80);let a=`${s}.${i}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let d=0;for(let u=0;u<c.length;u++)d+=c[u]<<u*7;a+=`.${d}`,c=[]}}return a}function DA(r,e){return e.offset++,null}function NA(r,e){let t=cc(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function OA(r,e){let t=cc(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function MA(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new X;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function Vu(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=MA(r.byteLength);return new X(Uint8Array.from([e.byteLength|E2]),e)}function zt(r){let e=new X,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new X(Uint8Array.from([2]),Vu(e),e)}function lc(r){let e=Uint8Array.from([0]),t=new X(e,r);return new X(Uint8Array.from([3]),Vu(t),t)}function n5(r){return new X(Uint8Array.from([4]),Vu(r),r)}function Kr(r,e=48){let t=new X;for(let n of r)t.append(n);return new X(Uint8Array.from([e]),Vu(t),t)}var o5="1.2.840.10045.3.1.7",s5="1.3.132.0.34",i5="1.3.132.0.35";async function a5(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function c5(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]);t?.signal?.throwIfAborted();let o=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},n,e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function l5(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let s=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),s}var BA=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),UA=Uint8Array.from([6,5,43,129,4,0,34]),FA=Uint8Array.from([6,5,43,129,4,0,35]),u5={ext:!0,kty:"EC",crv:"P-256"},d5={ext:!0,kty:"EC",crv:"P-384"},f5={ext:!0,kty:"EC",crv:"P-521"},Ei=32,xi=48,vi=66;function h5(r){let e=Ir(r);return x2(e)}function x2(r){let e=r[1],t=R(e,"base64url"),n=r[2][1][0],o=1,s,i;if(e.byteLength===Ei)return s=R(n.subarray(o,o+Ei),"base64url"),i=R(n.subarray(o+Ei),"base64url"),new gs({...u5,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===xi)return s=R(n.subarray(o,o+xi),"base64url"),i=R(n.subarray(o+xi),"base64url"),new gs({...d5,key_ops:["sign"],d:t,x:s,y:i});if(e.byteLength===vi)return s=R(n.subarray(o,o+vi),"base64url"),i=R(n.subarray(o+vi),"base64url"),new gs({...f5,key_ops:["sign"],d:t,x:s,y:i});throw new A(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function v2(r){let e=Ir(r);return p5(e)}function p5(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===Ei*2+1)return n=R(e.subarray(t,t+Ei),"base64url"),o=R(e.subarray(t+Ei),"base64url"),new ms({...u5,key_ops:["verify"],x:n,y:o});if(e.byteLength===xi*2+1)return n=R(e.subarray(t,t+xi),"base64url"),o=R(e.subarray(t+xi),"base64url"),new ms({...d5,key_ops:["verify"],x:n,y:o});if(e.byteLength===vi*2+1)return n=R(e.subarray(t,t+vi),"base64url"),o=R(e.subarray(t+vi),"base64url"),new ms({...f5,key_ops:["verify"],x:n,y:o});throw new A(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function m5(r){return Kr([zt(Uint8Array.from([1])),n5(C(r.d??"","base64url")),Kr([y5(r.crv)],160),Kr([lc(new X(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function g5(r){return Kr([zt(Uint8Array.from([1])),Kr([y5(r.crv)],160),Kr([lc(new X(Uint8Array.from([4]),C(r.x??"","base64url"),C(r.y??"","base64url")))],161)]).subarray()}function y5(r){if(r==="P-256")return BA;if(r==="P-384")return UA;if(r==="P-521")return FA;throw new A(`Invalid curve ${r}`)}async function w5(r="P-256"){let e=await a5(r);return new gs(e.privateKey)}var ms=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=g5(this.jwk)),this._raw}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}async verify(e,t,n){return l5(this.jwk,t,e,n)}},gs=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new ms({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=m5(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}async sign(e,t){return c5(this.jwk,e,t)}};function ys(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Dt(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function ce(r,e,t=""){let n=ys(r),o=r?.length,s=e!==void 0;if(!n||s&&o!==e){let i=t&&`"${t}" `,a=s?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return r}function Un(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");Dt(r.outputLen),Dt(r.blockLen)}function Si(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function E5(r,e){ce(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Nt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function ws(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Vr(r,e){return r<<32-e|r>>>e}function Hu(r,e){return r<<e|r>>>32-e>>>0}var x5=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",$A=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function Fn(r){if(ce(r),x5)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=$A[r[t]];return e}var Bn={_0:48,_9:57,A:65,F:70,a:97,f:102};function b5(r){if(r>=Bn._0&&r<=Bn._9)return r-Bn._0;if(r>=Bn.A&&r<=Bn.F)return r-(Bn.A-10);if(r>=Bn.a&&r<=Bn.f)return r-(Bn.a-10)}function $n(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(x5)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,s=0;o<t;o++,s+=2){let i=b5(r.charCodeAt(s)),a=b5(r.charCodeAt(s+1));if(i===void 0||a===void 0){let c=r[s]+r[s+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+s)}n[o]=i*16+a}return n}var KA=async()=>{};async function v5(r,e,t){let n=Date.now();for(let o=0;o<r;o++){t(o);let s=Date.now()-n;s>=0&&s<e||(await KA(),n+=s)}}function VA(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function S2(r,e=""){return typeof r=="string"?VA(r):ce(r,void 0,e)}function tr(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];ce(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let s=r[n];t.set(s,o),o+=s.length}return t}function S5(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options must be object or undefined");return Object.assign(r,e)}function uc(r,e={}){let t=(o,s)=>r(s).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function dn(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var A2=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function qu(r,e,t){return r&e^~r&t}function Wu(r,e,t){return r&e^r&t^e&t}var bs=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=ws(this.buffer)}update(e){Si(this),ce(e);let{view:t,buffer:n,blockLen:o}=this,s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=ws(e);for(;o<=s-i;i+=o)this.process(c,i);continue}n.set(e.subarray(i,i+a),this.pos),this.pos+=a,i+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),E5(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,Nt(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;n.setBigUint64(o-8,BigInt(this.length*8),s),this.process(n,0);let a=ws(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let u=0;u<l;u++)a.setUint32(4*u,d[u],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.destroyed=i,e.finished=s,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},Kn=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var bt=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var zu=BigInt(4294967295),A5=BigInt(32);function HA(r,e=!1){return e?{h:Number(r&zu),l:Number(r>>A5&zu)}:{h:Number(r>>A5&zu)|0,l:Number(r&zu)|0}}function I5(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let s=0;s<t;s++){let{h:i,l:a}=HA(r[s],e);[n[s],o[s]]=[i,a]}return[n,o]}var I2=(r,e,t)=>r>>>t,T2=(r,e,t)=>r<<32-t|e>>>t,Es=(r,e,t)=>r>>>t|e<<32-t,xs=(r,e,t)=>r<<32-t|e>>>t,dc=(r,e,t)=>r<<64-t|e>>>t-32,fc=(r,e,t)=>r>>>t-32|e<<64-t;function fn(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var T5=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),_5=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,C5=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),k5=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,P5=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),R5=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var WA=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]),Ao=new Uint32Array(64),_2=class extends bs{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s,F:i,G:a,H:c}=this;return[e,t,n,o,s,i,a,c]}set(e,t,n,o,s,i,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0,this.F=i|0,this.G=a|0,this.H=c|0}process(e,t){for(let u=0;u<16;u++,t+=4)Ao[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=Ao[u-15],h=Ao[u-2],p=Vr(f,7)^Vr(f,18)^f>>>3,g=Vr(h,17)^Vr(h,19)^h>>>10;Ao[u]=g+Ao[u-7]+p+Ao[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Vr(a,6)^Vr(a,11)^Vr(a,25),h=d+f+qu(a,c,l)+WA[u]+Ao[u]|0,g=(Vr(n,2)^Vr(n,13)^Vr(n,22))+Wu(n,o,s)|0;d=l,l=c,c=a,a=i+h|0,i=s,s=o,o=n,n=h+g|0}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,d=d+this.H|0,this.set(n,o,s,i,a,c,l,d)}roundClean(){Nt(Ao)}destroy(){this.set(0,0,0,0,0,0,0,0),Nt(this.buffer)}},C2=class extends _2{A=Kn[0]|0;B=Kn[1]|0;C=Kn[2]|0;D=Kn[3]|0;E=Kn[4]|0;F=Kn[5]|0;G=Kn[6]|0;H=Kn[7]|0;constructor(){super(32)}};var L5=I5(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),zA=L5[0],GA=L5[1],Io=new Uint32Array(80),To=new Uint32Array(80),k2=class extends bs{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:s,Cl:i,Dh:a,Dl:c,Eh:l,El:d,Fh:u,Fl:f,Gh:h,Gl:p,Hh:g,Hl:m}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,h,p,g,m]}set(e,t,n,o,s,i,a,c,l,d,u,f,h,p,g,m){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=s|0,this.Cl=i|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=d|0,this.Fh=u|0,this.Fl=f|0,this.Gh=h|0,this.Gl=p|0,this.Hh=g|0,this.Hl=m|0}process(e,t){for(let I=0;I<16;I++,t+=4)Io[I]=e.getUint32(t),To[I]=e.getUint32(t+=4);for(let I=16;I<80;I++){let D=Io[I-15]|0,F=To[I-15]|0,$=Es(D,F,1)^Es(D,F,8)^I2(D,F,7),z=xs(D,F,1)^xs(D,F,8)^T2(D,F,7),S=Io[I-2]|0,x=To[I-2]|0,L=Es(S,x,19)^dc(S,x,61)^I2(S,x,6),B=xs(S,x,19)^fc(S,x,61)^T2(S,x,6),P=C5(z,B,To[I-7],To[I-16]),v=k5(P,$,L,Io[I-7],Io[I-16]);Io[I]=v|0,To[I]=P|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:h,Fl:p,Gh:g,Gl:m,Hh:w,Hl:T}=this;for(let I=0;I<80;I++){let D=Es(u,f,14)^Es(u,f,18)^dc(u,f,41),F=xs(u,f,14)^xs(u,f,18)^fc(u,f,41),$=u&h^~u&g,z=f&p^~f&m,S=P5(T,F,z,GA[I],To[I]),x=R5(S,w,D,$,zA[I],Io[I]),L=S|0,B=Es(n,o,28)^dc(n,o,34)^dc(n,o,39),P=xs(n,o,28)^fc(n,o,34)^fc(n,o,39),v=n&s^n&a^s&a,E=o&i^o&c^i&c;w=g|0,T=m|0,g=h|0,m=p|0,h=u|0,p=f|0,{h:u,l:f}=fn(l|0,d|0,x|0,L|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let b=T5(L,P,E);n=_5(b,x,B,v),o=b|0}({h:n,l:o}=fn(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fn(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fn(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fn(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:f}=fn(this.Eh|0,this.El|0,u|0,f|0),{h,l:p}=fn(this.Fh|0,this.Fl|0,h|0,p|0),{h:g,l:m}=fn(this.Gh|0,this.Gl|0,g|0,m|0),{h:w,l:T}=fn(this.Hh|0,this.Hl|0,w|0,T|0),this.set(n,o,s,i,a,c,l,d,u,f,h,p,g,m,w,T)}roundClean(){Nt(Io,To)}destroy(){Nt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},P2=class extends k2{Ah=bt[0]|0;Al=bt[1]|0;Bh=bt[2]|0;Bl=bt[3]|0;Ch=bt[4]|0;Cl=bt[5]|0;Dh=bt[6]|0;Dl=bt[7]|0;Eh=bt[8]|0;El=bt[9]|0;Fh=bt[10]|0;Fl=bt[11]|0;Gh=bt[12]|0;Gl=bt[13]|0;Hh=bt[14]|0;Hl=bt[15]|0;constructor(){super(64)}};var Tr=uc(()=>new C2,A2(1));var _o=uc(()=>new P2,A2(3));var L2=BigInt(0),R2=BigInt(1);function Vn(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function D5(r){if(typeof r=="bigint"){if(!Gu(r))throw new Error("positive bigint expected, got "+r)}else Dt(r);return r}function hc(r){let e=D5(r).toString(16);return e.length&1?"0"+e:e}function N5(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?L2:BigInt("0x"+r)}function Ai(r){return N5(Fn(r))}function hn(r){return N5(Fn(vs(ce(r)).reverse()))}function Yu(r,e){Dt(e),r=D5(r);let t=$n(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function pc(r,e){return Yu(r,e).reverse()}function vs(r){return Uint8Array.from(r)}var Gu=r=>typeof r=="bigint"&&L2<=r;function YA(r,e,t){return Gu(r)&&Gu(e)&&Gu(t)&&e<=r&&r<t}function Co(r,e,t,n){if(!YA(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function D2(r){let e;for(e=0;r>L2;r>>=R2,e+=1);return e}var mc=r=>(R2<<BigInt(r))-R2;function O5(r,e,t){if(Dt(r,"hashLen"),Dt(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=m=>new Uint8Array(m),o=Uint8Array.of(),s=Uint8Array.of(0),i=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),d=0,u=()=>{c.fill(1),l.fill(0),d=0},f=(...m)=>t(l,tr(c,...m)),h=(m=o)=>{l=f(s,m),c=f(),m.length!==0&&(l=f(i,m),c=f())},p=()=>{if(d++>=a)throw new Error("drbg: tried max amount of iterations");let m=0,w=[];for(;m<e;){c=f();let T=c.slice();w.push(T),m+=c.length}return tr(...w)};return(m,w)=>{u(),h(m);let T;for(;!(T=w(p()));)h();return u(),T}}function pn(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(s,i,a){let c=r[s];if(a&&c===void 0)return;let l=typeof c;if(l!==i||c===null)throw new Error(`param "${s}" is invalid: expected ${i}, got ${l}`)}let o=(s,i)=>Object.entries(s).forEach(([a,c])=>n(a,c,i));o(e,!1),o(t,!0)}function Ii(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let s=r(t,...n);return e.set(t,s),s}}var Gt=BigInt(0),ht=BigInt(1),Ss=BigInt(2),U5=BigInt(3),F5=BigInt(4),$5=BigInt(5),jA=BigInt(7),K5=BigInt(8),XA=BigInt(9),V5=BigInt(16);function qe(r,e){let t=r%e;return t>=Gt?t:e+t}function $e(r,e,t){let n=r;for(;e-- >Gt;)n*=n,n%=t;return n}function M5(r,e){if(r===Gt)throw new Error("invert: expected non-zero number");if(e<=Gt)throw new Error("invert: expected positive modulus, got "+e);let t=qe(r,e),n=e,o=Gt,s=ht,i=ht,a=Gt;for(;t!==Gt;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==ht)throw new Error("invert: does not exist");return qe(o,e)}function O2(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function H5(r,e){let t=(r.ORDER+ht)/F5,n=r.pow(e,t);return O2(r,n,e),n}function QA(r,e){let t=(r.ORDER-$5)/K5,n=r.mul(e,Ss),o=r.pow(n,t),s=r.mul(e,o),i=r.mul(r.mul(s,Ss),o),a=r.mul(s,r.sub(i,r.ONE));return O2(r,a,e),a}function ZA(r){let e=Ti(r),t=q5(r),n=t(e,e.neg(e.ONE)),o=t(e,n),s=t(e,e.neg(n)),i=(r+jA)/V5;return(a,c)=>{let l=a.pow(c,i),d=a.mul(l,n),u=a.mul(l,o),f=a.mul(l,s),h=a.eql(a.sqr(d),c),p=a.eql(a.sqr(u),c);l=a.cmov(l,d,h),d=a.cmov(f,u,p);let g=a.eql(a.sqr(d),c),m=a.cmov(l,d,g);return O2(a,m,c),m}}function q5(r){if(r<U5)throw new Error("sqrt is not defined for small field");let e=r-ht,t=0;for(;e%Ss===Gt;)e/=Ss,t++;let n=Ss,o=Ti(r);for(;B5(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return H5;let s=o.pow(n,e),i=(e+ht)/Ss;return function(c,l){if(c.is0(l))return l;if(B5(c,l)!==1)throw new Error("Cannot find square root");let d=t,u=c.mul(c.ONE,s),f=c.pow(l,e),h=c.pow(l,i);for(;!c.eql(f,c.ONE);){if(c.is0(f))return c.ZERO;let p=1,g=c.sqr(f);for(;!c.eql(g,c.ONE);)if(p++,g=c.sqr(g),p===d)throw new Error("Cannot find square root");let m=ht<<BigInt(d-p-1),w=c.pow(u,m);d=p,u=c.sqr(w),f=c.mul(f,u),h=c.mul(h,w)}return h}}function JA(r){return r%F5===U5?H5:r%K5===$5?QA:r%V5===XA?ZA(r):q5(r)}var W5=(r,e)=>(qe(r,e)&ht)===ht,eI=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function M2(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=eI.reduce((n,o)=>(n[o]="function",n),e);return pn(r,t),r}function tI(r,e,t){if(t<Gt)throw new Error("invalid exponent, negatives unsupported");if(t===Gt)return r.ONE;if(t===ht)return e;let n=r.ONE,o=e;for(;t>Gt;)t&ht&&(n=r.mul(n,o)),o=r.sqr(o),t>>=ht;return n}function gc(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((i,a,c)=>r.is0(a)?i:(n[c]=i,r.mul(i,a)),r.ONE),s=r.inv(o);return e.reduceRight((i,a,c)=>r.is0(a)?i:(n[c]=r.mul(i,n[c]),r.mul(i,a)),s),n}function B5(r,e){let t=(r.ORDER-ht)/Ss,n=r.pow(e,t),o=r.eql(n,r.ONE),s=r.eql(n,r.ZERO),i=r.eql(n,r.neg(r.ONE));if(!o&&!s&&!i)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function rI(r,e){e!==void 0&&Dt(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var N2=class{ORDER;BITS;BYTES;isLE;ZERO=Gt;ONE=ht;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=Gt)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:s}=rI(e,n);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=s,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return qe(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return Gt<=e&&e<this.ORDER}is0(e){return e===Gt}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ht)===ht}neg(e){return qe(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return qe(e*e,this.ORDER)}add(e,t){return qe(e+t,this.ORDER)}sub(e,t){return qe(e-t,this.ORDER)}mul(e,t){return qe(e*t,this.ORDER)}pow(e,t){return tI(this,e,t)}div(e,t){return qe(e*M5(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return M5(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=JA(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?pc(e,this.BYTES):Yu(e,this.BYTES)}fromBytes(e,t=!1){ce(e);let{_lengths:n,BYTES:o,isLE:s,ORDER:i,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,s?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=s?hn(e):Ai(e);if(a&&(c=qe(c,i)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return gc(this,e)}cmov(e,t,n){return n?t:e}};function Ti(r,e={}){return new N2(r,e)}function z5(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function B2(r){let e=z5(r);return e+Math.ceil(e/2)}function U2(r,e,t=!1){ce(r);let n=r.length,o=z5(e),s=B2(e);if(n<16||n<s||n>1024)throw new Error("expected "+s+"-1024 bytes of input, got "+n);let i=t?hn(r):Ai(r),a=qe(i,e-ht)+ht;return t?pc(a,o):Yu(a,o)}var _i=BigInt(0),As=BigInt(1);function yc(r,e){let t=e.negate();return r?t:e}function Is(r,e){let t=gc(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function X5(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function F2(r,e){X5(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,s=mc(r),i=BigInt(r);return{windows:t,windowSize:n,mask:s,maxNumber:o,shiftBy:i}}function G5(r,e,t){let{windowSize:n,mask:o,maxNumber:s,shiftBy:i}=t,a=Number(r&o),c=r>>i;a>n&&(a-=s,c+=As);let l=e*n,d=l+Math.abs(a)-1,u=a===0,f=a<0,h=e%2!==0;return{nextN:c,offset:d,isZero:u,isNeg:f,isNegF:h,offsetF:l}}var $2=new WeakMap,Q5=new WeakMap;function K2(r){return Q5.get(r)||1}function Y5(r){if(r!==_i)throw new Error("invalid wNAF")}var Ci=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>_i;)t&As&&(n=n.add(o)),o=o.double(),t>>=As;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=F2(t,this.bits),s=[],i=e,a=i;for(let c=0;c<n;c++){a=i,s.push(a);for(let l=1;l<o;l++)a=a.add(i),s.push(a);i=a.double()}return s}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,s=this.BASE,i=F2(e,this.bits);for(let a=0;a<i.windows;a++){let{nextN:c,offset:l,isZero:d,isNeg:u,isNegF:f,offsetF:h}=G5(n,a,i);n=c,d?s=s.add(yc(f,t[h])):o=o.add(yc(u,t[l]))}return Y5(n),{p:o,f:s}}wNAFUnsafe(e,t,n,o=this.ZERO){let s=F2(e,this.bits);for(let i=0;i<s.windows&&n!==_i;i++){let{nextN:a,offset:c,isZero:l,isNeg:d}=G5(n,i,s);if(n=a,!l){let u=t[c];o=o.add(d?u.negate():u)}}return Y5(n),o}getPrecomputes(e,t,n){let o=$2.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),$2.set(t,o))),o}cached(e,t,n){let o=K2(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let s=K2(e);return s===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(s,this.getPrecomputes(s,e,n),t,o)}createCache(e,t){X5(t,this.bits),Q5.set(e,t),$2.delete(e)}hasCache(e){return K2(e)!==1}};function Z5(r,e,t,n){let o=e,s=r.ZERO,i=r.ZERO;for(;t>_i||n>_i;)t&As&&(s=s.add(o)),n&As&&(i=i.add(o)),o=o.double(),t>>=As,n>>=As;return{p1:s,p2:i}}function j5(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return M2(e),e}else return Ti(r,{isLE:t})}function ju(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>_i))throw new Error(`CURVE.${c} must be positive bigint`)}let o=j5(e.p,t.Fp,n),s=j5(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:s}}function ki(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var ko=BigInt(0),pt=BigInt(1),V2=BigInt(2),nI=BigInt(8);function oI(r,e,t,n){let o=r.sqr(t),s=r.sqr(n),i=r.add(r.mul(e.a,o),s),a=r.add(r.ONE,r.mul(e.d,r.mul(o,s)));return r.eql(i,a)}function J5(r,e={}){let t=ju("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i}=s;pn(e,{},{uvRatio:"function"});let a=V2<<BigInt(o.BYTES*8)-pt,c=m=>n.create(m),l=e.uvRatio||((m,w)=>{try{return{isValid:!0,value:n.sqrt(n.div(m,w))}}catch{return{isValid:!1,value:ko}}});if(!oI(n,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function d(m,w,T=!1){let I=T?pt:ko;return Co("coordinate "+m,w,I,a),w}function u(m){if(!(m instanceof p))throw new Error("EdwardsPoint expected")}let f=Ii((m,w)=>{let{X:T,Y:I,Z:D}=m,F=m.is0();w==null&&(w=F?nI:n.inv(D));let $=c(T*w),z=c(I*w),S=n.mul(D,w);if(F)return{x:ko,y:pt};if(S!==pt)throw new Error("invZ was invalid");return{x:$,y:z}}),h=Ii(m=>{let{a:w,d:T}=s;if(m.is0())throw new Error("bad point: ZERO");let{X:I,Y:D,Z:F,T:$}=m,z=c(I*I),S=c(D*D),x=c(F*F),L=c(x*x),B=c(z*w),P=c(x*c(B+S)),v=c(L+c(T*c(z*S)));if(P!==v)throw new Error("bad point: equation left != right (1)");let E=c(I*D),b=c(F*$);if(E!==b)throw new Error("bad point: equation left != right (2)");return!0});class p{static BASE=new p(s.Gx,s.Gy,pt,c(s.Gx*s.Gy));static ZERO=new p(ko,pt,pt,ko);static Fp=n;static Fn=o;X;Y;Z;T;constructor(w,T,I,D){this.X=d("x",w),this.Y=d("y",T),this.Z=d("z",I,!0),this.T=d("t",D),Object.freeze(this)}static CURVE(){return s}static fromAffine(w){if(w instanceof p)throw new Error("extended point not allowed");let{x:T,y:I}=w||{};return d("x",T),d("y",I),new p(T,I,pt,c(T*I))}static fromBytes(w,T=!1){let I=n.BYTES,{a:D,d:F}=s;w=vs(ce(w,I,"point")),Vn(T,"zip215");let $=vs(w),z=w[I-1];$[I-1]=z&-129;let S=hn($),x=T?a:n.ORDER;Co("point.y",S,ko,x);let L=c(S*S),B=c(L-pt),P=c(F*L-D),{isValid:v,value:E}=l(B,P);if(!v)throw new Error("bad point: invalid y coordinate");let b=(E&pt)===pt,_=(z&128)!==0;if(!T&&E===ko&&_)throw new Error("bad point: x=0 and x_0=1");return _!==b&&(E=c(-E)),p.fromAffine({x:E,y:S})}static fromHex(w,T=!1){return p.fromBytes($n(w),T)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(w=8,T=!0){return g.createCache(this,w),T||this.multiply(V2),this}assertValidity(){h(this)}equals(w){u(w);let{X:T,Y:I,Z:D}=this,{X:F,Y:$,Z:z}=w,S=c(T*z),x=c(F*D),L=c(I*z),B=c($*D);return S===x&&L===B}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:w}=s,{X:T,Y:I,Z:D}=this,F=c(T*T),$=c(I*I),z=c(V2*c(D*D)),S=c(w*F),x=T+I,L=c(c(x*x)-F-$),B=S+$,P=B-z,v=S-$,E=c(L*P),b=c(B*v),_=c(L*v),M=c(P*B);return new p(E,b,M,_)}add(w){u(w);let{a:T,d:I}=s,{X:D,Y:F,Z:$,T:z}=this,{X:S,Y:x,Z:L,T:B}=w,P=c(D*S),v=c(F*x),E=c(z*I*B),b=c($*L),_=c((D+F)*(S+x)-P-v),M=b-E,O=b+E,k=c(v-T*P),U=c(_*M),K=c(O*k),W=c(_*k),we=c(M*O);return new p(U,K,we,W)}subtract(w){return this.add(w.negate())}multiply(w){if(!o.isValidNot0(w))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:T,f:I}=g.cached(this,w,D=>Is(p,D));return Is(p,[T,I])[0]}multiplyUnsafe(w,T=p.ZERO){if(!o.isValid(w))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return w===ko?p.ZERO:this.is0()||w===pt?this:g.unsafe(this,w,I=>Is(p,I),T)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return g.unsafe(this,s.n).is0()}toAffine(w){return f(this,w)}clearCofactor(){return i===pt?this:this.multiplyUnsafe(i)}toBytes(){let{x:w,y:T}=this.toAffine(),I=n.toBytes(T);return I[I.length-1]|=w&pt?128:0,I}toHex(){return Fn(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let g=new Ci(p,o.BITS);return p.BASE.precompute(8),p}function e8(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');pn(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:s,Fn:i}=r,a=t.randomBytes||dn,c=t.adjustScalarBytes||(S=>S),l=t.domain||((S,x,L)=>{if(Vn(L,"phflag"),x.length||L)throw new Error("Contexts/pre-hash are not supported");return S});function d(S){return i.create(hn(S))}function u(S){let x=I.secretKey;ce(S,I.secretKey,"secretKey");let L=ce(e(S),2*x,"hashedSecretKey"),B=c(L.slice(0,x)),P=L.slice(x,2*x),v=d(B);return{head:B,prefix:P,scalar:v}}function f(S){let{head:x,prefix:L,scalar:B}=u(S),P=o.multiply(B),v=P.toBytes();return{head:x,prefix:L,scalar:B,point:P,pointBytes:v}}function h(S){return f(S).pointBytes}function p(S=Uint8Array.of(),...x){let L=tr(...x);return d(e(l(L,ce(S,void 0,"context"),!!n)))}function g(S,x,L={}){S=ce(S,void 0,"message"),n&&(S=n(S));let{prefix:B,scalar:P,pointBytes:v}=f(x),E=p(L.context,B,S),b=o.multiply(E).toBytes(),_=p(L.context,b,v,S),M=i.create(E+_*P);if(!i.isValid(M))throw new Error("sign failed: invalid s");let O=tr(b,i.toBytes(M));return ce(O,I.signature,"result")}let m={zip215:!0};function w(S,x,L,B=m){let{context:P,zip215:v}=B,E=I.signature;S=ce(S,E,"signature"),x=ce(x,void 0,"message"),L=ce(L,I.publicKey,"publicKey"),v!==void 0&&Vn(v,"zip215"),n&&(x=n(x));let b=E/2,_=S.subarray(0,b),M=hn(S.subarray(b,E)),O,k,U;try{O=r.fromBytes(L,v),k=r.fromBytes(_,v),U=o.multiplyUnsafe(M)}catch{return!1}if(!v&&O.isSmallOrder())return!1;let K=p(P,k.toBytes(),O.toBytes(),x);return k.add(O.multiplyUnsafe(K)).subtract(U).clearCofactor().is0()}let T=s.BYTES,I={secretKey:T,publicKey:T,signature:2*T,seed:T};function D(S=a(I.seed)){return ce(S,I.seed,"seed")}function F(S){return ys(S)&&S.length===i.BYTES}function $(S,x){try{return!!r.fromBytes(S,x)}catch{return!1}}let z={getExtendedPublicKey:f,randomSecretKey:D,isValidSecretKey:F,isValidPublicKey:$,toMontgomery(S){let{y:x}=r.fromBytes(S),L=I.publicKey,B=L===32;if(!B&&L!==57)throw new Error("only defined for 25519 and 448");let P=B?s.div(pt+x,pt-x):s.div(x-pt,x+pt);return s.toBytes(P)},toMontgomerySecret(S){let x=I.secretKey;ce(S,x);let L=e(S.subarray(0,x));return c(L).subarray(0,x)}};return Object.freeze({keygen:ki(D,h),getPublicKey:h,sign:g,verify:w,utils:z,Point:r,lengths:I})}var wc=BigInt(0),Pi=BigInt(1),Xu=BigInt(2);function sI(r){return pn(r,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...r})}function t8(r){let e=sI(r),{P:t,type:n,adjustScalarBytes:o,powPminus2:s,randomBytes:i}=e,a=n==="x25519";if(!a&&n!=="x448")throw new Error("invalid type");let c=i||dn,l=a?255:448,d=a?32:56,u=BigInt(a?9:5),f=BigInt(a?121665:39081),h=a?Xu**BigInt(254):Xu**BigInt(447),p=a?BigInt(8)*Xu**BigInt(251)-Pi:BigInt(4)*Xu**BigInt(445)-Pi,g=h+p+Pi,m=E=>qe(E,t),w=T(u);function T(E){return pc(m(E),d)}function I(E){let b=vs(ce(E,d,"uCoordinate"));return a&&(b[31]&=127),m(hn(b))}function D(E){return hn(o(vs(ce(E,d,"scalar"))))}function F(E,b){let _=L(I(b),D(E));if(_===wc)throw new Error("invalid private or public key received");return T(_)}function $(E){return F(E,w)}let z=$,S=F;function x(E,b,_){let M=m(E*(b-_));return b=m(b-M),_=m(_+M),{x_2:b,x_3:_}}function L(E,b){Co("u",E,wc,t),Co("scalar",b,h,g);let _=b,M=E,O=Pi,k=wc,U=E,K=Pi,W=wc;for(let pe=BigInt(l-1);pe>=wc;pe--){let ue=_>>peΠW^=ue,{x_2:O,x_3:U}=x(W,O,U),{x_2:k,x_3:K}=x(W,k,K),W=ue;let be=O+k,Re=m(be*be),Je=O-k,Ee=m(Je*Je),it=Re-Ee,ui=U+K,Eu=U-K,Wa=m(Eu*be),x6=m(ui*Je),v6=Wa+x6,S6=Wa-x6;U=m(v6*v6),K=m(M*m(S6*S6)),O=m(Re*Ee),k=m(it*(Re+m(f*it)))}({x_2:O,x_3:U}=x(W,O,U)),{x_2:k,x_3:K}=x(W,k,K);let we=s(k);return m(O*we)}let B={secretKey:d,publicKey:d,seed:d},P=(E=c(d))=>(ce(E,B.seed,"seed"),E),v={randomSecretKey:P};return Object.freeze({keygen:ki(P,z),getSharedSecret:S,getPublicKey:z,scalarMult:F,scalarMultBase:$,utils:v,GuBytes:w.slice(),lengths:B})}var iI=BigInt(1),r8=BigInt(2),aI=BigInt(3),cI=BigInt(5),lI=BigInt(8),Qu=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),uI={p:Qu,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:lI,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function o8(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),s=Qu,a=r*r%s*r%s,c=$e(a,r8,s)*a%s,l=$e(c,iI,s)*r%s,d=$e(l,cI,s)*l%s,u=$e(d,e,s)*d%s,f=$e(u,t,s)*u%s,h=$e(f,n,s)*f%s,p=$e(h,o,s)*h%s,g=$e(p,o,s)*h%s,m=$e(g,e,s)*d%s;return{pow_p_5_8:$e(m,r8,s)*r%s,b2:a}}function s8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var n8=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function dI(r,e){let t=Qu,n=qe(e*e*e,t),o=qe(n*n*e,t),s=o8(r*o).pow_p_5_8,i=qe(r*n*s,t),a=qe(e*i*i,t),c=i,l=qe(i*n8,t),d=a===r,u=a===qe(-r,t),f=a===qe(-r*n8,t);return d&&(i=c),(u||f)&&(i=l),W5(i,t)&&(i=qe(-i,t)),{isValid:d||u,value:i}}var fI=J5(uI,{uvRatio:dI});function hI(r){return e8(fI,_o,Object.assign({adjustScalarBytes:s8},r))}var bc=hI({});var Ec=(()=>{let r=Qu;return t8({P:r,type:"x25519",powPminus2:e=>{let{pow_p_5_8:t,b2:n}=o8(e);return qe($e(t,aI,r)*n,r)},adjustScalarBytes:s8})})();var Ts=32,fr=64,H2=32;var Ri,i8=(async()=>{try{return await nt.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();function a8(){let r=bc.utils.randomSecretKey(),e=bc.getPublicKey(r);return{privateKey:wI(r,e),publicKey:e}}async function pI(r,e){let t;r.length===fr?t=r.subarray(0,32):t=r;let n={crv:"Ed25519",kty:"OKP",x:R(r.subarray(32),"base64url"),d:R(t,"base64url"),ext:!0,key_ops:["sign"]},o=await nt.get().subtle.importKey("jwk",n,{name:"Ed25519"},!0,["sign"]),s=await nt.get().subtle.sign({name:"Ed25519"},o,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(s,0,s.byteLength)}function mI(r,e){let t=r.subarray(0,H2);return bc.sign(e instanceof Uint8Array?e:e.subarray(),t)}async function c8(r,e){return Ri==null&&(Ri=await i8),Ri?pI(r,e):mI(r,e)}async function gI(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await nt.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await nt.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function yI(r,e,t){return bc.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function l8(r,e,t){return Ri==null&&(Ri=await i8),Ri?gI(r,e,t):yI(r,e,t)}function wI(r,e){let t=new Uint8Array(fr);for(let n=0;n<H2;n++)t[n]=r[n],t[H2+n]=e[n];return t}function Li(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var xc=class{type="Ed25519";raw;constructor(e){this.raw=Ni(e,Ts)}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=l8(this.raw,t,e);return Li(o)?o.then(s=>(n?.signal?.throwIfAborted(),s)):o}},Di=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=Ni(e,fr),this.publicKey=new xc(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){t?.signal?.throwIfAborted();let n=c8(this.raw,e);return Li(n)?n.then(o=>(t?.signal?.throwIfAborted(),o)):(t?.signal?.throwIfAborted(),n)}};function q2(r){if(r.length>fr){r=Ni(r,fr+Ts);let n=r.subarray(0,fr),o=r.subarray(fr,r.length);return new Di(n,o)}r=Ni(r,fr);let e=r.subarray(0,fr),t=r.subarray(Ts);return new Di(e,t)}function W2(r){return r=Ni(r,Ts),new xc(r)}async function d8(){let{privateKey:r,publicKey:e}=a8();return new Di(r,e)}function Ni(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new A(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var bI=Math.pow(2,7),EI=Math.pow(2,14),xI=Math.pow(2,21),z2=Math.pow(2,28),G2=Math.pow(2,35),Y2=Math.pow(2,42),j2=Math.pow(2,49),Te=128,Ot=127;function he(r){if(r<bI)return 1;if(r<EI)return 2;if(r<xI)return 3;if(r<z2)return 4;if(r<G2)return 5;if(r<Y2)return 6;if(r<j2)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Oi(r,e,t=0){switch(he(r)){case 8:e[t++]=r&255|Te,r/=128;case 7:e[t++]=r&255|Te,r/=128;case 6:e[t++]=r&255|Te,r/=128;case 5:e[t++]=r&255|Te,r/=128;case 4:e[t++]=r&255|Te,r>>>=7;case 3:e[t++]=r&255|Te,r>>>=7;case 2:e[t++]=r&255|Te,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function vI(r,e,t=0){switch(he(r)){case 8:e.set(t++,r&255|Te),r/=128;case 7:e.set(t++,r&255|Te),r/=128;case 6:e.set(t++,r&255|Te),r/=128;case 5:e.set(t++,r&255|Te),r/=128;case 4:e.set(t++,r&255|Te),r>>>=7;case 3:e.set(t++,r&255|Te),r>>>=7;case 2:e.set(t++,r&255|Te),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function X2(r,e){let t=r[e],n=0;if(n+=t&Ot,t<Te||(t=r[e+1],n+=(t&Ot)<<7,t<Te)||(t=r[e+2],n+=(t&Ot)<<14,t<Te)||(t=r[e+3],n+=(t&Ot)<<21,t<Te)||(t=r[e+4],n+=(t&Ot)*z2,t<Te)||(t=r[e+5],n+=(t&Ot)*G2,t<Te)||(t=r[e+6],n+=(t&Ot)*Y2,t<Te)||(t=r[e+7],n+=(t&Ot)*j2,t<Te))return n;throw new RangeError("Could not decode varint")}function SI(r,e){let t=r.get(e),n=0;if(n+=t&Ot,t<Te||(t=r.get(e+1),n+=(t&Ot)<<7,t<Te)||(t=r.get(e+2),n+=(t&Ot)<<14,t<Te)||(t=r.get(e+3),n+=(t&Ot)<<21,t<Te)||(t=r.get(e+4),n+=(t&Ot)*z2,t<Te)||(t=r.get(e+5),n+=(t&Ot)*G2,t<Te)||(t=r.get(e+6),n+=(t&Ot)*Y2,t<Te)||(t=r.get(e+7),n+=(t&Ot)*j2,t<Te))return n;throw new RangeError("Could not decode varint")}function Mt(r,e,t=0){return e==null&&(e=Ge(he(r))),e instanceof Uint8Array?Oi(r,e,t):vI(r,e,t)}function hr(r,e=0){return r instanceof Uint8Array?X2(r,e):SI(r,e)}var Q2=new Float32Array([-0]),Po=new Uint8Array(Q2.buffer);function f8(r,e,t){Q2[0]=r,e[t]=Po[0],e[t+1]=Po[1],e[t+2]=Po[2],e[t+3]=Po[3]}function h8(r,e){return Po[0]=r[e],Po[1]=r[e+1],Po[2]=r[e+2],Po[3]=r[e+3],Q2[0]}var Z2=new Float64Array([-0]),Bt=new Uint8Array(Z2.buffer);function p8(r,e,t){Z2[0]=r,e[t]=Bt[0],e[t+1]=Bt[1],e[t+2]=Bt[2],e[t+3]=Bt[3],e[t+4]=Bt[4],e[t+5]=Bt[5],e[t+6]=Bt[6],e[t+7]=Bt[7]}function m8(r,e){return Bt[0]=r[e],Bt[1]=r[e+1],Bt[2]=r[e+2],Bt[3]=r[e+3],Bt[4]=r[e+4],Bt[5]=r[e+5],Bt[6]=r[e+6],Bt[7]=r[e+7],Z2[0]}var AI=BigInt(Number.MAX_SAFE_INTEGER),II=BigInt(Number.MIN_SAFE_INTEGER),pr=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return _s;if(e<AI&&e>II)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>g8&&(o=0n,++n>g8&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return _s;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):_s}},_s=new pr(0,0);_s.toBigInt=function(){return 0n};_s.zzEncode=_s.zzDecode=function(){return this};_s.length=function(){return 1};var g8=4294967296n;function y8(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function w8(r,e,t){if(t-e<1)return"";let o,s=[],i=0,a;for(;e<t;)a=r[e++],a<128?s[i++]=a:a>191&&a<224?s[i++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,s[i++]=55296+(a>>10),s[i++]=56320+(a&1023)):s[i++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,i>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,s)),i=0);return o!=null?(i>0&&o.push(String.fromCharCode.apply(String,s.slice(0,i))),o.join("")):String.fromCharCode.apply(String,s.slice(0,i))}function J2(r,e,t){let n=t,o,s;for(let i=0;i<r.length;++i)o=r.charCodeAt(i),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((s=r.charCodeAt(i+1))&64512)===56320?(o=65536+((o&1023)<<10)+(s&1023),++i,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Hr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Zu(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var em=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Hr(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Zu(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Hr(this,4);return Zu(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Hr(this,4);let e=h8(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Hr(this,4);let e=m8(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Hr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return w8(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Hr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Hr(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new pr(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Hr(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Hr(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Hr(this,8);let e=Zu(this.buf,this.pos+=4),t=Zu(this.buf,this.pos+=4);return new pr(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=X2(this.buf,this.pos);return this.pos+=he(e),e}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function tm(r){return new em(r instanceof Uint8Array?r:r.subarray())}function te(r,e,t){let n=tm(r);return e.decode(n,void 0,t)}function rm(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return Ge(i);o+i>e&&(n=Ge(e),o=0);let a=n.subarray(o,o+=i);return(o&7)!==0&&(o=(o|7)+1),a}}var Cs=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function nm(){}var sm=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},TI=rm();function _I(r){return globalThis.Buffer!=null?Ge(r):TI(r)}var Sc=class{len;head;tail;states;constructor(){this.len=0,this.head=new Cs(nm,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Cs(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new im((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(Ju,10,pr.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=pr.fromBigInt(e);return this._push(Ju,t.length(),t)}uint64Number(e){return this._push(Oi,he(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=pr.fromBigInt(e).zzEncode();return this._push(Ju,t.length(),t)}sint64Number(e){let t=pr.fromNumber(e).zzEncode();return this._push(Ju,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(om,1,e?1:0)}fixed32(e){return this._push(vc,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=pr.fromBigInt(e);return this._push(vc,4,t.lo)._push(vc,4,t.hi)}fixed64Number(e){let t=pr.fromNumber(e);return this._push(vc,4,t.lo)._push(vc,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(f8,4,e)}double(e){return this._push(p8,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(om,1,0):this.uint32(t)._push(kI,t,e)}string(e){let t=y8(e);return t!==0?this.uint32(t)._push(J2,t,e):this._push(om,1,0)}fork(){return this.states=new sm(this),this.head=this.tail=new Cs(nm,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Cs(nm,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=_I(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function om(r,e,t){e[t]=r&255}function CI(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var im=class extends Cs{next;constructor(e,t){super(CI,e,t),this.next=void 0}};function Ju(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function vc(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function kI(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Sc.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(PI,e,r),this},Sc.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(RI,e,r),this});function PI(r,e,t){e.set(r,t)}function RI(r,e,t){r.length<40?J2(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(C(r),t)}function am(){return new Sc}function re(r,e){let t=am();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Mi;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(Mi||(Mi={}));function ed(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function We(r){function e(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let t=function(s,i){let a=e(s);i.int32(a)},n=function(s){let i=s.int32();return e(i)};return ed("enum",Mi.VARINT,t,n)}function ne(r,e){return ed("message",Mi.LENGTH_DELIMITED,r,e)}var Ne=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},Ac=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var Be;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(Be||(Be={}));var cm;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(cm||(cm={}));(function(r){r.codec=()=>We(cm)})(Be||(Be={}));var mn;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Be.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=Be.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(mn||(mn={}));var Ic;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Be.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.Type=Be.codec().decode(t);break}case 2:{s.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Ic||(Ic={}));function Yt(r){if(isNaN(r)||r<=0)throw new A("random bytes length must be a Number bigger than 0");return dn(r)}var _c={};et(_c,{MAX_RSA_KEY_SIZE:()=>lm,generateRSAKeyPair:()=>wm,jwkToJWKKeyPair:()=>S8,jwkToPkcs1:()=>OI,jwkToPkix:()=>hm,jwkToRSAPrivateKey:()=>ym,pkcs1MessageToJwk:()=>dm,pkcs1MessageToRSAPrivateKey:()=>td,pkcs1ToJwk:()=>NI,pkcs1ToRSAPrivateKey:()=>pm,pkixMessageToJwk:()=>fm,pkixMessageToRSAPublicKey:()=>gm,pkixToJwk:()=>MI,pkixToRSAPublicKey:()=>mm});var Bi=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=_c.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return G.createV1(114,this._multihash)}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){return v8(this.jwk,t,e,n)}},Tc=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=_c.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){return x8(this.jwk,e,t)}};var lm=8192,um=18,LI=1062,DI=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function NI(r){let e=Ir(r);return dm(e)}function dm(r){return{n:R(r[1],"base64url"),e:R(r[2],"base64url"),d:R(r[3],"base64url"),p:R(r[4],"base64url"),q:R(r[5],"base64url"),dp:R(r[6],"base64url"),dq:R(r[7],"base64url"),qi:R(r[8],"base64url"),kty:"RSA"}}function OI(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new A("JWK was missing components");return Kr([zt(Uint8Array.from([0])),zt(C(r.n,"base64url")),zt(C(r.e,"base64url")),zt(C(r.d,"base64url")),zt(C(r.p,"base64url")),zt(C(r.q,"base64url")),zt(C(r.dp,"base64url")),zt(C(r.dq,"base64url")),zt(C(r.qi,"base64url"))]).subarray()}function MI(r){let e=Ir(r,{offset:0});return fm(e)}function fm(r){let e=Ir(r[1],{offset:0});return{kty:"RSA",n:R(e[0],"base64url"),e:R(e[1],"base64url")}}function hm(r){if(r.n==null||r.e==null)throw new A("JWK was missing components");return Kr([DI,lc(Kr([zt(C(r.n,"base64url")),zt(C(r.e,"base64url"))]))]).subarray()}function pm(r){let e=Ir(r);return td(e)}function td(r){let e=dm(r);return ym(e)}function mm(r,e){if(r.byteLength>=LI)throw new Nn("Key size is too large");let t=Ir(r,{offset:0});return gm(t,r,e)}function gm(r,e,t){let n=fm(r);if(t==null){let o=Tr(mn.encode({Type:Be.RSA,Data:e}));t=Wt(um,o)}return new Bi(n,t)}function ym(r){if(I8(r)>lm)throw new A("Key size is too large");let e=S8(r),t=Tr(mn.encode({Type:Be.RSA,Data:hm(e.publicKey)})),n=Wt(um,t);return new Tc(e.privateKey,new Bi(e.publicKey,n))}async function wm(r){if(r>lm)throw new A("Key size is too large");let e=await A8(r),t=Tr(mn.encode({Type:Be.RSA,Data:hm(e.publicKey)})),n=Wt(um,t);return new Tc(e.privateKey,new Bi(e.publicKey,n))}function S8(r){if(r==null)throw new A("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function A8(r,e){let t=await nt.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await BI(t,e);return{privateKey:n[0],publicKey:n[1]}}async function x8(r,e,t){let n=await nt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await nt.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function v8(r,e,t,n){let o=await nt.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let s=await nt.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),s}async function BI(r,e){if(r.privateKey==null||r.publicKey==null)throw new A("Private and public key are required");let t=await Promise.all([nt.get().subtle.exportKey("jwk",r.privateKey),nt.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function I8(r){if(r.kty!=="RSA")throw new A("invalid key type");if(r.n==null)throw new A("invalid key modulus");return C(r.n,"base64url").length*8}var rd=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(Un(e),ce(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Nt(o)}update(e){return Si(this),this.iHash.update(e),this}digestInto(e){Si(this),ce(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:s,blockLen:i,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=s,e.blockLen=i,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Ro=(r,e,t)=>new rd(r,e).update(t).digest();Ro.create=(r,e)=>new rd(r,e);var T8=(r,e)=>(r+(r>=0?e:-e)/_8)/e;function UI(r,e,t){let[[n,o],[s,i]]=e,a=T8(i*r,t),c=T8(-o*r,t),l=r-a*n-c*s,d=-a*o-c*i,u=l<qn,f=d<qn;u&&(l=-l),f&&(d=-d);let h=mc(Math.ceil(D2(t)/2))+Ui;if(l<qn||l>=h||d<qn||d>=h)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}function Em(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function bm(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return Vn(t.lowS,"lowS"),Vn(t.prehash,"prehash"),t.format!==void 0&&Em(t.format),t}var xm=class extends Error{constructor(e=""){super(e)}},Lo={Err:xm,_tlv:{encode:(r,e)=>{let{Err:t}=Lo;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=hc(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let s=n>127?hc(o.length/2|128):"";return hc(r)+s+o+e},decode(r,e){let{Err:t}=Lo,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],s=!!(o&128),i=0;if(!s)i=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let d of l)i=i<<8|d;if(n+=c,i<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+i);if(a.length!==i)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+i)}}},_int:{encode(r){let{Err:e}=Lo;if(r<qn)throw new e("integer: negative integers are not allowed");let t=hc(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Lo;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Ai(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Lo,o=ce(r,void 0,"signature"),{v:s,l:i}=n.decode(48,o);if(i.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,s),{v:l,l:d}=n.decode(2,c);if(d.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Lo,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),s=n+o;return e.encode(48,s)}},qn=BigInt(0),Ui=BigInt(1),_8=BigInt(2),nd=BigInt(3),FI=BigInt(4);function C8(r,e={}){let t=ju("weierstrass",r,e),{Fp:n,Fn:o}=t,s=t.CURVE,{h:i,n:a}=s;pn(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(s.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=P8(n,o);function d(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function u(P,v,E){let{x:b,y:_}=v.toAffine(),M=n.toBytes(b);if(Vn(E,"isCompressed"),E){d();let O=!n.isOdd(_);return tr(k8(O),M)}else return tr(Uint8Array.of(4),M,n.toBytes(_))}function f(P){ce(P,void 0,"Point");let{publicKey:v,publicKeyUncompressed:E}=l,b=P.length,_=P[0],M=P.subarray(1);if(b===v&&(_===2||_===3)){let O=n.fromBytes(M);if(!n.isValid(O))throw new Error("bad point: is not on curve, wrong x");let k=g(O),U;try{U=n.sqrt(k)}catch(we){let pe=we instanceof Error?": "+we.message:"";throw new Error("bad point: is not on curve, sqrt error"+pe)}d();let K=n.isOdd(U);return(_&1)===1!==K&&(U=n.neg(U)),{x:O,y:U}}else if(b===E&&_===4){let O=n.BYTES,k=n.fromBytes(M.subarray(0,O)),U=n.fromBytes(M.subarray(O,O*2));if(!m(k,U))throw new Error("bad point: is not on curve");return{x:k,y:U}}else throw new Error(`bad point: got length ${b}, expected compressed=${v} or uncompressed=${E}`)}let h=e.toBytes||u,p=e.fromBytes||f;function g(P){let v=n.sqr(P),E=n.mul(v,P);return n.add(n.add(E,n.mul(P,s.a)),s.b)}function m(P,v){let E=n.sqr(v),b=g(P);return n.eql(E,b)}if(!m(s.Gx,s.Gy))throw new Error("bad curve params: generator point");let w=n.mul(n.pow(s.a,nd),FI),T=n.mul(n.sqr(s.b),BigInt(27));if(n.is0(n.add(w,T)))throw new Error("bad curve params: a or b");function I(P,v,E=!1){if(!n.isValid(v)||E&&n.is0(v))throw new Error(`bad point coordinate ${P}`);return v}function D(P){if(!(P instanceof x))throw new Error("Weierstrass Point expected")}function F(P){if(!c||!c.basises)throw new Error("no endo");return UI(P,c.basises,o.ORDER)}let $=Ii((P,v)=>{let{X:E,Y:b,Z:_}=P;if(n.eql(_,n.ONE))return{x:E,y:b};let M=P.is0();v==null&&(v=M?n.ONE:n.inv(_));let O=n.mul(E,v),k=n.mul(b,v),U=n.mul(_,v);if(M)return{x:n.ZERO,y:n.ZERO};if(!n.eql(U,n.ONE))throw new Error("invZ was invalid");return{x:O,y:k}}),z=Ii(P=>{if(P.is0()){if(e.allowInfinityPoint&&!n.is0(P.Y))return;throw new Error("bad point: ZERO")}let{x:v,y:E}=P.toAffine();if(!n.isValid(v)||!n.isValid(E))throw new Error("bad point: x or y not field elements");if(!m(v,E))throw new Error("bad point: equation left != right");if(!P.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(P,v,E,b,_){return E=new x(n.mul(E.X,P),E.Y,E.Z),v=yc(b,v),E=yc(_,E),v.add(E)}class x{static BASE=new x(s.Gx,s.Gy,n.ONE);static ZERO=new x(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(v,E,b){this.X=I("x",v),this.Y=I("y",E,!0),this.Z=I("z",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(v){let{x:E,y:b}=v||{};if(!v||!n.isValid(E)||!n.isValid(b))throw new Error("invalid affine point");if(v instanceof x)throw new Error("projective point not allowed");return n.is0(E)&&n.is0(b)?x.ZERO:new x(E,b,n.ONE)}static fromBytes(v){let E=x.fromAffine(p(ce(v,void 0,"point")));return E.assertValidity(),E}static fromHex(v){return x.fromBytes($n(v))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(v=8,E=!0){return B.createCache(this,v),E||this.multiply(nd),this}assertValidity(){z(this)}hasEvenY(){let{y:v}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(v)}equals(v){D(v);let{X:E,Y:b,Z:_}=this,{X:M,Y:O,Z:k}=v,U=n.eql(n.mul(E,k),n.mul(M,_)),K=n.eql(n.mul(b,k),n.mul(O,_));return U&&K}negate(){return new x(this.X,n.neg(this.Y),this.Z)}double(){let{a:v,b:E}=s,b=n.mul(E,nd),{X:_,Y:M,Z:O}=this,k=n.ZERO,U=n.ZERO,K=n.ZERO,W=n.mul(_,_),we=n.mul(M,M),pe=n.mul(O,O),ue=n.mul(_,M);return ue=n.add(ue,ue),K=n.mul(_,O),K=n.add(K,K),k=n.mul(v,K),U=n.mul(b,pe),U=n.add(k,U),k=n.sub(we,U),U=n.add(we,U),U=n.mul(k,U),k=n.mul(ue,k),K=n.mul(b,K),pe=n.mul(v,pe),ue=n.sub(W,pe),ue=n.mul(v,ue),ue=n.add(ue,K),K=n.add(W,W),W=n.add(K,W),W=n.add(W,pe),W=n.mul(W,ue),U=n.add(U,W),pe=n.mul(M,O),pe=n.add(pe,pe),W=n.mul(pe,ue),k=n.sub(k,W),K=n.mul(pe,we),K=n.add(K,K),K=n.add(K,K),new x(k,U,K)}add(v){D(v);let{X:E,Y:b,Z:_}=this,{X:M,Y:O,Z:k}=v,U=n.ZERO,K=n.ZERO,W=n.ZERO,we=s.a,pe=n.mul(s.b,nd),ue=n.mul(E,M),be=n.mul(b,O),Re=n.mul(_,k),Je=n.add(E,b),Ee=n.add(M,O);Je=n.mul(Je,Ee),Ee=n.add(ue,be),Je=n.sub(Je,Ee),Ee=n.add(E,_);let it=n.add(M,k);return Ee=n.mul(Ee,it),it=n.add(ue,Re),Ee=n.sub(Ee,it),it=n.add(b,_),U=n.add(O,k),it=n.mul(it,U),U=n.add(be,Re),it=n.sub(it,U),W=n.mul(we,Ee),U=n.mul(pe,Re),W=n.add(U,W),U=n.sub(be,W),W=n.add(be,W),K=n.mul(U,W),be=n.add(ue,ue),be=n.add(be,ue),Re=n.mul(we,Re),Ee=n.mul(pe,Ee),be=n.add(be,Re),Re=n.sub(ue,Re),Re=n.mul(we,Re),Ee=n.add(Ee,Re),ue=n.mul(be,Ee),K=n.add(K,ue),ue=n.mul(it,Ee),U=n.mul(Je,U),U=n.sub(U,ue),ue=n.mul(Je,be),W=n.mul(it,W),W=n.add(W,ue),new x(U,K,W)}subtract(v){return this.add(v.negate())}is0(){return this.equals(x.ZERO)}multiply(v){let{endo:E}=e;if(!o.isValidNot0(v))throw new Error("invalid scalar: out of range");let b,_,M=O=>B.cached(this,O,k=>Is(x,k));if(E){let{k1neg:O,k1:k,k2neg:U,k2:K}=F(v),{p:W,f:we}=M(k),{p:pe,f:ue}=M(K);_=we.add(ue),b=S(E.beta,W,pe,O,U)}else{let{p:O,f:k}=M(v);b=O,_=k}return Is(x,[b,_])[0]}multiplyUnsafe(v){let{endo:E}=e,b=this;if(!o.isValid(v))throw new Error("invalid scalar: out of range");if(v===qn||b.is0())return x.ZERO;if(v===Ui)return b;if(B.hasCache(this))return this.multiply(v);if(E){let{k1neg:_,k1:M,k2neg:O,k2:k}=F(v),{p1:U,p2:K}=Z5(x,b,M,k);return S(E.beta,U,K,_,O)}else return B.unsafe(b,v)}toAffine(v){return $(this,v)}isTorsionFree(){let{isTorsionFree:v}=e;return i===Ui?!0:v?v(x,this):B.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:v}=e;return i===Ui?this:v?v(x,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(v=!0){return Vn(v,"isCompressed"),this.assertValidity(),h(x,this,v)}toHex(v=!0){return Fn(this.toBytes(v))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let L=o.BITS,B=new Ci(x,e.endo?Math.ceil(L/2):L);return x.BASE.precompute(8),x}function k8(r){return Uint8Array.of(r?2:3)}function P8(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function $I(r,e={}){let{Fn:t}=r,n=e.randomBytes||dn,o=Object.assign(P8(r.Fp,t),{seed:B2(t.ORDER)});function s(h){try{let p=t.fromBytes(h);return t.isValidNot0(p)}catch{return!1}}function i(h,p){let{publicKey:g,publicKeyUncompressed:m}=o;try{let w=h.length;return p===!0&&w!==g||p===!1&&w!==m?!1:!!r.fromBytes(h)}catch{return!1}}function a(h=n(o.seed)){return U2(ce(h,o.seed,"seed"),t.ORDER)}function c(h,p=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(p)}function l(h){let{secretKey:p,publicKey:g,publicKeyUncompressed:m}=o;if(!ys(h)||"_lengths"in t&&t._lengths||p===g)return;let w=ce(h,void 0,"key").length;return w===g||w===m}function d(h,p,g=!0){if(l(h)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let m=t.fromBytes(h);return r.fromBytes(p).multiply(m).toBytes(g)}let u={isValidSecretKey:s,isValidPublicKey:i,randomSecretKey:a},f=ki(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:d,keygen:f,Point:r,utils:u,lengths:o})}function R8(r,e,t={}){Un(e),pn(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||dn,o=t.hmac||((E,b)=>Ro(e,E,b)),{Fp:s,Fn:i}=r,{ORDER:a,BITS:c}=i,{keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h}=$I(r,t),p={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},g=a*_8<s.ORDER;function m(E){let b=a>>Ui;return E>b}function w(E,b){if(!i.isValidNot0(b))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return b}function T(){if(g)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function I(E,b){Em(b);let _=h.signature,M=b==="compact"?_:b==="recovered"?_+1:void 0;return ce(E,M)}class D{r;s;recovery;constructor(b,_,M){if(this.r=w("r",b),this.s=w("s",_),M!=null){if(T(),![0,1,2,3].includes(M))throw new Error("invalid recovery id");this.recovery=M}Object.freeze(this)}static fromBytes(b,_=p.format){I(b,_);let M;if(_==="der"){let{r:K,s:W}=Lo.toSig(ce(b));return new D(K,W)}_==="recovered"&&(M=b[0],_="compact",b=b.subarray(1));let O=h.signature/2,k=b.subarray(0,O),U=b.subarray(O,O*2);return new D(i.fromBytes(k),i.fromBytes(U),M)}static fromHex(b,_){return this.fromBytes($n(b),_)}assertRecovery(){let{recovery:b}=this;if(b==null)throw new Error("invalid recovery id: must be present");return b}addRecoveryBit(b){return new D(this.r,this.s,b)}recoverPublicKey(b){let{r:_,s:M}=this,O=this.assertRecovery(),k=O===2||O===3?_+a:_;if(!s.isValid(k))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let U=s.toBytes(k),K=r.fromBytes(tr(k8((O&1)===0),U)),W=i.inv(k),we=$(ce(b,void 0,"msgHash")),pe=i.create(-we*W),ue=i.create(M*W),be=r.BASE.multiplyUnsafe(pe).add(K.multiplyUnsafe(ue));if(be.is0())throw new Error("invalid recovery: point at infinify");return be.assertValidity(),be}hasHighS(){return m(this.s)}toBytes(b=p.format){if(Em(b),b==="der")return $n(Lo.hexFromSig(this));let{r:_,s:M}=this,O=i.toBytes(_),k=i.toBytes(M);return b==="recovered"?(T(),tr(Uint8Array.of(this.assertRecovery()),O,k)):tr(O,k)}toHex(b){return Fn(this.toBytes(b))}}let F=t.bits2int||function(b){if(b.length>8192)throw new Error("input is too large");let _=Ai(b),M=b.length*8-c;return M>0?_>>BigInt(M):_},$=t.bits2int_modN||function(b){return i.create(F(b))},z=mc(c);function S(E){return Co("num < 2^"+c,E,qn,z),i.toBytes(E)}function x(E,b){return ce(E,void 0,"message"),b?ce(e(E),void 0,"prehashed message"):E}function L(E,b,_){let{lowS:M,prehash:O,extraEntropy:k}=bm(_,p);E=x(E,O);let U=$(E),K=i.fromBytes(b);if(!i.isValidNot0(K))throw new Error("invalid private key");let W=[S(K),S(U)];if(k!=null&&k!==!1){let be=k===!0?n(h.secretKey):k;W.push(ce(be,void 0,"extraEntropy"))}let we=tr(...W),pe=U;function ue(be){let Re=F(be);if(!i.isValidNot0(Re))return;let Je=i.inv(Re),Ee=r.BASE.multiply(Re).toAffine(),it=i.create(Ee.x);if(it===qn)return;let ui=i.create(Je*i.create(pe+it*K));if(ui===qn)return;let Eu=(Ee.x===it?0:2)|Number(Ee.y&Ui),Wa=ui;return M&&m(ui)&&(Wa=i.neg(ui),Eu^=1),new D(it,Wa,g?void 0:Eu)}return{seed:we,k2sig:ue}}function B(E,b,_={}){let{seed:M,k2sig:O}=L(E,b,_);return O5(e.outputLen,i.BYTES,o)(M,O).toBytes(_.format)}function P(E,b,_,M={}){let{lowS:O,prehash:k,format:U}=bm(M,p);if(_=ce(_,void 0,"publicKey"),b=x(b,k),!ys(E)){let K=E instanceof D?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+K)}I(E,U);try{let K=D.fromBytes(E,U),W=r.fromBytes(_);if(O&&K.hasHighS())return!1;let{r:we,s:pe}=K,ue=$(b),be=i.inv(pe),Re=i.create(ue*be),Je=i.create(we*be),Ee=r.BASE.multiplyUnsafe(Re).add(W.multiplyUnsafe(Je));return Ee.is0()?!1:i.create(Ee.x)===we}catch{return!1}}function v(E,b,_={}){let{prehash:M}=bm(_,p);return b=x(b,M),D.fromBytes(E,"recovered").recoverPublicKey(b).toBytes()}return Object.freeze({keygen:l,getPublicKey:d,getSharedSecret:u,utils:f,lengths:h,Point:r,sign:B,verify:P,recoverPublicKey:v,Signature:D,hash:e})}var Sm={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},KI={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var L8=BigInt(2);function VI(r){let e=Sm.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),s=BigInt(22),i=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,d=l*l*r%e,u=$e(d,t,e)*d%e,f=$e(u,t,e)*d%e,h=$e(f,L8,e)*l%e,p=$e(h,o,e)*h%e,g=$e(p,s,e)*p%e,m=$e(g,a,e)*g%e,w=$e(m,c,e)*m%e,T=$e(w,a,e)*g%e,I=$e(T,t,e)*d%e,D=$e(I,i,e)*p%e,F=$e(D,n,e)*l%e,$=$e(F,L8,e);if(!vm.eql(vm.sqr($),r))throw new Error("Cannot find square root");return $}var vm=Ti(Sm.p,{sqrt:VI}),HI=C8(Sm,{Fp:vm,endo:KI}),qr=R8(HI,Tr);var D8=32;function N8(r,e,t){let n=ze.digest(e instanceof Uint8Array?e:e.subarray());if(Li(n))return n.then(({digest:o})=>(t?.signal?.throwIfAborted(),qr.sign(o,r,{prehash:!1,format:"der"}))).catch(o=>{throw o.name==="AbortError"?o:new sc(String(o))});try{return qr.sign(n.digest,r,{prehash:!1,format:"der"})}catch(o){throw new sc(String(o))}}function O8(r,e,t,n){let o=ze.digest(t instanceof Uint8Array?t:t.subarray());if(Li(o))return o.then(({digest:s})=>(n?.signal?.throwIfAborted(),qr.verify(e,s,r,{prehash:!1,format:"der"}))).catch(s=>{throw s.name==="AbortError"?s:new ic(String(s))});try{return n?.signal?.throwIfAborted(),qr.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(s){throw new ic(String(s))}}var Cc=class{type="secp256k1";raw;_key;constructor(e){this._key=U8(e),this.raw=M8(this._key)}toMultihash(){return dt.digest(ft(this))}toCID(){return G.createV1(114,this.toMultihash())}toString(){return De.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}verify(e,t,n){return O8(this._key,t,e,n)}},kc=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=B8(e),this.publicKey=new Cc(t??F8(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:ee(this.raw,e.raw)}sign(e,t){return N8(this.raw,e,t)}};function Am(r){return new kc(r)}function Im(r){return new Cc(r)}async function $8(){let r=qI();return new kc(r)}function M8(r){return qr.Point.fromBytes(r).toBytes()}function B8(r){try{return qr.getPublicKey(r,!0),r}catch(e){throw new za(String(e))}}function U8(r){try{return qr.Point.fromBytes(r),r}catch(e){throw new Nn(String(e))}}function F8(r){try{return qr.getPublicKey(r,!0)}catch(e){throw new za(String(e))}}function qI(){return qr.utils.randomSecretKey()}async function od(r,e){if(r==="Ed25519")return d8();if(r==="secp256k1")return $8();if(r==="RSA")return wm(WI(e));if(r==="ECDSA")return w5(zI(e));throw new Fr}function tt(r,e){let{Type:t,Data:n}=mn.decode(r),o=n??new Uint8Array;switch(t){case Be.RSA:return mm(o,e);case Be.Ed25519:return W2(o);case Be.secp256k1:return Im(o);case Be.ECDSA:return v2(o);default:throw new Fr}}function sd(r){let{Type:e,Data:t}=mn.decode(r.digest),n=t??new Uint8Array;switch(e){case Be.Ed25519:return W2(n);case Be.secp256k1:return Im(n);case Be.ECDSA:return v2(n);default:throw new Fr}}function ft(r){return mn.encode({Type:Be[r.type],Data:r.raw})}function K8(r){let e=Ic.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Be.RSA:return pm(t);case Be.Ed25519:return q2(t);case Be.secp256k1:return Am(t);case Be.ECDSA:return h5(t);default:throw new Fr}}function V8(r){if(r.byteLength===fr)return q2(r);if(r.byteLength===D8)return Am(r);let e=Ir(r),t=e[2]?.[0];if(t===o5||t===s5||t===i5)return x2(e);if(e.length>8)return td(e);throw new A("Could not extract private key from raw bytes")}function ks(r){return Ic.encode({Type:Be[r.type],Data:r.raw})}function WI(r){return r==null?2048:parseInt(r,10)}function zI(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new A("Unsupported curve, should be P-256, P-384 or P-521")}var Pc=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),Do=new Uint32Array(80),Tm=class extends bs{A=Pc[0]|0;B=Pc[1]|0;C=Pc[2]|0;D=Pc[3]|0;E=Pc[4]|0;constructor(){super(64,20,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:s}=this;return[e,t,n,o,s]}set(e,t,n,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=s|0}process(e,t){for(let c=0;c<16;c++,t+=4)Do[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Do[c]=Hu(Do[c-3]^Do[c-8]^Do[c-14]^Do[c-16],1);let{A:n,B:o,C:s,D:i,E:a}=this;for(let c=0;c<80;c++){let l,d;c<20?(l=qu(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=Wu(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=Hu(n,5)+l+a+d+Do[c]|0;a=i,i=s,s=Hu(o,30),o=n,n=u}n=n+this.A|0,o=o+this.B|0,s=s+this.C|0,i=i+this.D|0,a=a+this.E|0,this.set(n,o,s,i,a)}roundClean(){Nt(Do)}destroy(){this.set(0,0,0,0,0),Nt(this.buffer)}},H8=uc(()=>new Tm);function q8(r,e,t,n){Un(r);let o=S5({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(Dt(s,"c"),Dt(i,"dkLen"),Dt(a,"asyncTick"),s<1)throw new Error("iterations (c) must be >= 1");let c=S2(e,"password"),l=S2(t,"salt"),d=new Uint8Array(i),u=Ro.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function W8(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),Nt(o),t}function z8(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=q8(r,e,t,n),l,d=new Uint8Array(4),u=ws(d),f=new Uint8Array(a.outputLen);for(let h=1,p=0;p<s;h++,p+=a.outputLen){let g=i.subarray(p,p+a.outputLen);u.setInt32(0,h,!1),(l=c._cloneInto(l)).update(d).digestInto(f),g.set(f.subarray(0,g.length));for(let m=1;m<o;m++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<g.length;w++)g[w]^=f[w]}}return W8(a,c,i,l,f)}async function id(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=q8(r,e,t,n),d,u=new Uint8Array(4),f=ws(u),h=new Uint8Array(c.outputLen);for(let p=1,g=0;g<s;p++,g+=c.outputLen){let m=a.subarray(g,g+c.outputLen);f.setInt32(0,p,!1),(d=l._cloneInto(d)).update(u).digestInto(h),m.set(h.subarray(0,m.length)),await v5(o-1,i,()=>{c._cloneInto(d).update(h).digestInto(h);for(let w=0;w<m.length;w++)m[w]^=h[w]})}return W8(c,l,a,d,h)}var G8={sha1:H8,"sha2-256":Tr,"sha2-512":_o};function Rc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(G8).join(" / ");throw new A(`Hash '${o}' is unknown or not supported. Must be ${a}`)}let s=G8[o],i=z8(s,r,e,{c:t,dkLen:n});return rt.encode(i).substring(1)}var _m={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Y8={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},j8=new globalThis.TextEncoder;function GI(r,e){let t=_m[e],n=Y8[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function YI(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=_m[e],o=Y8[e],s=r;for(;s.length>0;){let i=j8.encodeInto(s,t);s=s.slice(i.read);for(let a=0;a<i.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function Cm(r,{size:e=32,utf8Buffer:t}={}){if(!_m[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return YI(r,e,t);r=j8.encode(r)}return GI(r,e)}var Lc={hash:r=>Number(Cm(r,{size:32})),hashV:(r,e)=>jI(Lc.hash(r,e))};function jI(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),C(e,"base16")}var km=64,Wr=class{fp;h;seed;constructor(e,t,n,o=2){if(o>km)throw new TypeError("Invalid Fingerprint Size");let s=t.hashV(e,n),i=ae(o);for(let a=0;a<i.length;a++)i[a]=s[a];i.length===0&&(i[0]=7),this.fp=i,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ee(this.fp,e.fp):!1}};function Ps(r,e){return Math.floor(Math.random()*(e-r))+r}var Rs=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");let t=Ps(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Wr))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var XI=500,Dc=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Lc,this.seed=e.seed??Ps(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new Rs(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new Rs(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let s=[n,o],i=s[Ps(0,s.length-1)];this.buckets[i]==null&&(this.buckets[i]=new Rs(this.bucketSize));for(let a=0;a<XI;a++){let c=this.buckets[i].swap(t);if(c!=null&&(i=(i^c.hash())%this.filterSize,this.buckets[i]==null&&(this.buckets[i]=new Rs(this.bucketSize)),this.buckets[i].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let s=(n^t.hash())%this.filterSize;return this.buckets[s]?.has(t)??!1}remove(e){typeof e=="string"&&(e=C(e));let t=new Wr(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let s=(n^t.hash())%this.filterSize,i=this.buckets[s]?.remove(t)??!1;return i&&this.count--,i}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},QI={1:.5,2:.84,4:.95,8:.98};function ZI(r=.001){return r>.002?2:r>1e-5?4:8}function X8(r,e=.001){let t=ZI(e),n=QI[t],o=Math.round(r/n),s=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),km);return{filterSize:o,bucketSize:t,fingerprintSize:s}}var ad=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Lc,this.seed=e.seed??Ps(0,Math.pow(2,10)),this.filterSeries=[new Dc({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=C(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new Dc({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=C(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=C(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Et(r,e=.001,t){return new ad({...X8(r,e),...t??{}})}function oe(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new A(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var cd=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Q8=45,JI=15,Fi=new cd;function ld(r){if(!(r.length>JI))return Fi.new(r).parseWith(()=>Fi.readIPv4Addr())}function ud(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Q8))return Fi.new(r).parseWith(()=>Fi.readIPv6Addr())}function $i(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>Q8)return;let t=Fi.new(r).parseWith(()=>Fi.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function Z8(r,e,t){let n=0;for(let o of r)if(!(n<e)){if(n>t)break;if(o!==255)return!1;n++}return!0}function J8(r,e,t,n){let o=0;for(let s of r)if(!(o<t)){if(o>n)break;if(s!==e[o])return!1;o++}return!0}function Pm(r){switch(r.length){case Ls:return r.join(".");case Ds:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function e7(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let o=t+1;o<r.length;o++)if(r[o]!=0)return-1;break}return e}function t7(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var Ls=4,Ds=16,M$=parseInt("0xFFFF",16),eT=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Nc(r,e){e.length===Ds&&r.length===Ls&&Z8(e,0,11)&&(e=e.slice(12)),e.length===Ls&&r.length===Ds&&J8(r,eT,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=r[o]&e[o];return n}function r7(r,e){if(typeof e=="string"&&(e=$i(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function Rm(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=Ls,o=ld(e);if(o==null&&(n=Ds,o=ud(e),o==null))throw new Error("Failed to parse given CIDR: "+r);let s=parseInt(t,10);if(Number.isNaN(s)||String(s).length!==t.length||s<0||s>n*8)throw new Error("Failed to parse given CIDR: "+r);let i=Lm(s,8*n);return{network:Nc(o,i),mask:i}}function Lm(r,e){if(e!==8*Ls&&e!==8*Ds)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let o=0;o<t;o++){if(r>=8){n[o]=255,r-=8;continue}n[o]=255-(255>>r),r=0}return n}var Ns=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=Rm(e));else{let n=$i(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n.length*8){let s=$i(t);if(s==null)throw new Error("Failed to parse mask");this.mask=s}else this.mask=Lm(o,8*n.length);this.network=Nc(n,this.mask)}}contains(e){return r7({network:this.network,mask:this.mask},e)}toString(){let e=e7(this.mask),t=e!==-1?String(e):t7(this.mask);return Pm(this.network)+"/"+t}};function n7(r,e){return new Ns(r).contains(e)}function dd(r){try{let e=oe(r);switch(e.type){case"ip6":return n7("2000::/3",e.host);default:return!1}}catch{return!1}}function o7(r){try{let e=oe(r);switch(e.type){case"ip4":return e.host.startsWith("169.254.");case"ip6":return e.host.toLowerCase().startsWith("fe80");default:return!1}}catch{return!1}}function s7(r){return/^127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/i.test(r)||/^::1$/.test(r)}function Oc(r){try{let e=oe(r);switch(e.type){case"ip4":case"ip6":return s7(e.host);default:return!1}}catch{return!1}}function xt(r){try{return oe(r),!0}catch{return!1}}function zr(r){return!!ld(r)}function fd(r){return!!ud(r)}var a7=Ln(i7(),1),tT=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],rT=tT.map(r=>new a7.Netmask(r));function Dm(r){for(let e of rT)if(e.contains(r))return!0;return!1}function nT(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function oT(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Dm(o)}function sT(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function iT(r){let e=r.split(":"),t=e[e.length-1];return Dm(t)}function aT(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function Ki(r){if(zr(r))return Dm(r);if(nT(r))return oT(r);if(sT(r))return iT(r);if(fd(r))return aT(r)}function Qe(r){try{let e=oe(r);switch(e.type){case"ip4":case"ip6":return Ki(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function fe(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var hd=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Vi=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new hd(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new hd(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Nm=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function vt(r={}){return cT(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function cT(r,e){e=e??{};let t=e.onEnd,n=new Vi,o,s,i,a=fe(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((m,w)=>{s=T=>{s=null,n.push(T);try{m(r(n))}catch(I){w(I)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=fe()})}},l=m=>s!=null?s(m):(n.push(m),o),d=m=>(n=new Vi,s!=null?s({error:m}):(n.push({error:m}),o)),u=m=>{if(i)return o;if(e?.objectMode!==!0&&m?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:m})},f=m=>i?o:(i=!0,m!=null?d(m):l({done:!0})),h=()=>(n=new Vi,f(),{done:!0}),p=m=>(f(m),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:p,push:u,end:f,get readableLength(){return n.size},onEmpty:async m=>{let w=m?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let T,I;w!=null&&(T=new Promise((D,F)=>{I=()=>{F(new Nm)},w.addEventListener("abort",I)}));try{await Promise.race([a.promise,T])}finally{I!=null&&w!=null&&w?.removeEventListener("abort",I)}}},t==null)return o;let g=o;return o={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(m){return g.throw(m),t!=null&&(t(m),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(m){return g.end(m),t!=null&&(t(m),t=void 0),o},get readableLength(){return g.readableLength},onEmpty:m=>g.onEmpty(m)},o}var lT=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function uT(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=lT(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function _r(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=uT(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Wn(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var pd=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},md=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},Os=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"},gd=class extends Error{static name="MaxEarlyStreamsError";name="MaxEarlyStreamsError"},yd=class extends Error{static name="StreamClosedError";name="StreamClosedError"};function dT(r){return r.reason}async function Pe(r,e,t){if(e==null)return r;let n=t?.translateError??dT;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((s,i)=>{o=()=>{i(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var wd=class{deferred;signal;constructor(e){this.signal=e,this.deferred=fe(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Vt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function fT(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var bd=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=fT(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Vt),this.cleanup())}async join(e={}){let t=new wd(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Pe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var St=class extends ie{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=Wn(this.emitEmpty.bind(this),1),this.emitIdle=Wn(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new md;let n=new bd(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("completed",{detail:o}),this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Vt)}),this.clear()}async onEmpty(e){this.size!==0&&await _r(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await _r(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await _r(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=vt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new Vt("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var hT=Math.pow(2,20)*4,No=class extends ie{status;timeline;inactivityTimeout;maxReadBufferLength;maxWriteBufferLength;log;direction;maxMessageSize;readStatus;writeStatus;remoteReadStatus;remoteWriteStatus;writableNeedsDrain;readBuffer;writeBuffer;sendingData;onDrainPromise;constructor(e){super(),this.status="open",this.log=e.log,this.direction=e.direction??"outbound",this.inactivityTimeout=e.inactivityTimeout??12e4,this.maxReadBufferLength=e.maxReadBufferLength??hT,this.maxWriteBufferLength=e.maxWriteBufferLength,this.maxMessageSize=e.maxMessageSize,this.readBuffer=new X,this.writeBuffer=new X,this.readStatus="readable",this.remoteReadStatus="readable",this.writeStatus="writable",this.remoteWriteStatus="writable",this.sendingData=!1,this.writableNeedsDrain=!1,this.timeline={open:Date.now()},this.processSendQueue=this.processSendQueue.bind(this);let t=()=>{this.writableNeedsDrain&&(this.log.trace("drain event received, continue sending data"),this.writableNeedsDrain=!1,this.processSendQueue()),this.onDrainPromise?.resolve()};this.addEventListener("drain",t);let n=o=>{this.onDrainPromise?.reject(o.error??new yd)};this.addEventListener("close",n)}get readBufferLength(){return this.readBuffer.byteLength}get writeBufferLength(){return this.writeBuffer.byteLength}async onDrain(e){return this.writableNeedsDrain!==!0?Promise.resolve():(this.onDrainPromise==null&&(this.onDrainPromise=Promise.withResolvers()),Pe(this.onDrainPromise.promise,e?.signal))}async*[Symbol.asyncIterator](){if(this.readStatus!=="readable"&&this.readStatus!=="paused")return;let e=vt(),t=s=>{e.push(s.data)};this.addEventListener("message",t);let n=s=>{e.end(s.error)};this.addEventListener("close",n);let o=()=>{e.end()};this.addEventListener("remoteCloseWrite",o);try{yield*e}finally{this.removeEventListener("message",t),this.removeEventListener("close",n),this.removeEventListener("remoteCloseWrite",o)}}isReadable(){return this.status==="open"}send(e){if(this.writeStatus==="closed"||this.writeStatus==="closing")throw new cn(`Cannot write to a stream that is ${this.writeStatus}`);return this.log.trace("append %d bytes to write buffer",e.byteLength),this.writeBuffer.append(e),this.processSendQueue()}abort(e){if(!(this.status==="aborted"||this.status==="reset"||this.status==="closed")){this.log.error("abort with error - %e",e),this.status="aborted",this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle")),this.writeStatus="closed",this.remoteWriteStatus="closed",this.readStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now();try{this.sendReset(e)}catch(t){this.log("failed to send reset to remote - %e",t)}this.dispatchEvent(new _u(e))}}pause(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn("Cannot pause a stream that is closing/closed");this.readStatus!=="paused"&&(this.readStatus="paused",this.sendPause())}resume(){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn("Cannot resume a stream that is closing/closed");this.readStatus!=="readable"&&(this.readStatus="readable",this.dispatchReadBuffer(),this.sendResume())}push(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.append(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}unshift(e){if(this.readStatus==="closed"||this.readStatus==="closing")throw new cn(`Cannot push data onto a stream that is ${this.readStatus}`);if(e.byteLength!==0){if(this.readBuffer.prepend(e),this.readStatus==="paused"||this.listenerCount("message")===0){this.checkReadBufferLength();return}setTimeout(()=>{this.dispatchReadBuffer()},0)}}onData(e){if(e.byteLength!==0){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("ignoring data - read status %s",this.readStatus);return}this.readBuffer.append(e),this.dispatchReadBuffer()}}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="message"&&this.readBuffer.byteLength>0&&queueMicrotask(()=>{this.dispatchReadBuffer()})}onRemoteReset(){this.log("remote reset"),this.status="reset",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.timeline.close=Date.now(),this.readBuffer.byteLength===0&&(this.readStatus="closed");let e=new fi;this.dispatchEvent(new Cu(e))}onTransportClosed(e){this.log("transport closed"),this.readStatus==="readable"&&this.readBuffer.byteLength===0&&(this.log("close readable end after transport closed and read buffer is empty"),this.readStatus="closed"),this.remoteReadStatus!=="closed"&&(this.remoteReadStatus="closed"),this.remoteWriteStatus!=="closed"&&(this.remoteWriteStatus="closed"),this.writeStatus!=="closed"&&(this.writeStatus="closed"),e!=null?this.abort(e):(this.status==="open"||this.status==="closing")&&(this.timeline.close=Date.now(),this.status="closed",this.writeStatus="closed",this.remoteWriteStatus="closed",this.remoteReadStatus="closed",this.dispatchEvent(new xo))}onRemoteCloseWrite(){this.remoteWriteStatus!=="closed"&&(this.log.trace("on remote close write"),this.remoteWriteStatus="closed",this.safeDispatchEvent("remoteCloseWrite"),this.writeStatus==="closed"&&this.onTransportClosed())}onRemoteCloseRead(){this.log.trace("on remote close read"),this.remoteReadStatus="closed",this.writeBuffer.byteLength>0&&(this.writeBuffer.consume(this.writeBuffer.byteLength),this.safeDispatchEvent("idle"))}processSendQueue(){if(this.writableNeedsDrain)return this.log.trace("not processing send queue as drain is required"),this.checkWriteBufferLength(),!1;if(this.writeBuffer.byteLength===0)return this.log.trace("not processing send queue as no bytes to send"),!0;if(this.sendingData)return this.log.trace("not processing send queue as already sending data"),!0;this.sendingData=!0,this.log.trace("processing send queue with %d queued bytes",this.writeBuffer.byteLength);try{let e=!0,t=this.writeBuffer.byteLength,n=0;for(;this.writeBuffer.byteLength>0;){let o=Math.min(this.maxMessageSize??this.writeBuffer.byteLength,this.writeBuffer.byteLength);if(o===0){e=!1;break}let s=this.writeBuffer.sublist(0,o),i=new X(s);this.writeBuffer.consume(s.byteLength);let a=this.sendData(s);if(e=a.canSendMore,n+=a.sentBytes,a.sentBytes!==i.byteLength&&(i.consume(a.sentBytes),this.writeBuffer.prepend(i)),!e)break}return e||(this.log.trace("sent %d/%d bytes, pausing sending because underlying stream is full, %d bytes left in the write buffer",n,t,this.writeBuffer.byteLength),this.writableNeedsDrain=!0,this.checkWriteBufferLength()),this.writeBuffer.byteLength===0&&this.safeDispatchEvent("idle"),e}finally{this.sendingData=!1}}dispatchReadBuffer(){try{if(this.listenerCount("message")===0){this.log.trace("not dispatching pause buffer as there are no listeners for the message event");return}if(this.readBuffer.byteLength===0){this.log.trace("not dispatching pause buffer as there is no data to dispatch");return}if(this.readStatus==="paused"){this.log.trace("not dispatching pause buffer we are paused");return}if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("dropping %d bytes because the readable end is %s",this.readBuffer.byteLength,this.readStatus),this.readBuffer.consume(this.readBuffer.byteLength);return}let e=this.readBuffer.sublist();this.readBuffer.consume(e.byteLength),this.dispatchEvent(new Tu(e))}finally{this.readBuffer.byteLength===0&&this.remoteWriteStatus==="closed"&&(this.log("close readable end after dispatching read buffer and remote writable end is closed"),this.readStatus="closed"),this.checkReadBufferLength()}}checkReadBufferLength(){this.readBuffer.byteLength>this.maxReadBufferLength&&this.abort(new Ya(`Read buffer length of ${this.readBuffer.byteLength} exceeded limit of ${this.maxReadBufferLength}, read status is ${this.readStatus}`))}checkWriteBufferLength(){this.maxWriteBufferLength!=null&&this.writeBuffer.byteLength>this.maxWriteBufferLength&&this.abort(new Ya(`Write buffer length of ${this.writeBuffer.byteLength} exceeded limit of ${this.maxWriteBufferLength}, write status is ${this.writeStatus}`))}onMuxerNeedsDrain(){this.writableNeedsDrain=!0}onMuxerDrain(){this.safeDispatchEvent("drain")}};var Oo=class extends No{remoteAddr;metricPrefix;metrics;constructor(e){super(e),this.metricPrefix=e.metricPrefix??"",this.metrics=e.metrics,this.remoteAddr=e.remoteAddr,this.addEventListener("close",t=>{this.metrics?.increment({[`${this.metricPrefix}end`]:!0}),t.error!=null?t.local?this.metrics?.increment({[`${this.metricPrefix}abort`]:!0}):this.metrics?.increment({[`${this.metricPrefix}reset`]:!0}):t.local?this.metrics?.increment({[`${this.metricPrefix}_local_close`]:!0}):this.metrics?.increment({[`${this.metricPrefix}_remote_close`]:!0})})}async close(e){this.status==="open"&&(this.status="closing",this.writeStatus="closing",this.remoteWriteStatus="closing",this.remoteReadStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"drain",{...e,rejectionEvents:["close"]})),await this.sendClose(e),this.onTransportClosed())}};function Ed(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Mo=class extends ie{streams;protocol;status;log;maConn;streamOptions;earlyStreams;maxEarlyStreams;metrics;constructor(e,t){super(),this.maConn=e,this.protocol=t.protocol,this.streams=[],this.earlyStreams=[],this.status="open",this.log=e.log.newScope(t.name),this.streamOptions=t.streamOptions,this.maxEarlyStreams=t.maxEarlyStreams??10,this.metrics=t.metrics;let n=i=>{try{this.onData(i.data)}catch(a){this.abort(a),this.maConn.abort(a)}};this.maConn.addEventListener("message",n);let o=()=>{this.log("underlying stream drained, signal %d streams to continue writing",this.streams.length),this.streams.forEach(i=>{i.onMuxerDrain()})};this.maConn.addEventListener("drain",o);let s=()=>{this.log("underlying stream closed with status %s and %d streams",this.status,this.streams.length),this.onTransportClosed()};this.maConn.addEventListener("close",s)}send(e){let t=this.maConn.send(e);return t===!1&&(this.log("underlying stream saturated, signal %d streams to pause writing",this.streams.length),this.streams.forEach(n=>{n.onMuxerNeedsDrain()})),t}async close(e){this.status==="closed"||this.status==="closing"||(this.status="closing",await Pe(Promise.all([...this.streams].map(async t=>{await t.close(e)})),e?.signal),this.status="closed")}abort(e){this.status!=="closed"&&(this.status="closing",[...this.streams].forEach(t=>{t.abort(e)}),this.status="closed")}onTransportClosed(e){this.status="closing";try{[...this.streams].forEach(t=>{t.onTransportClosed(e)})}catch(t){this.abort(t)}this.status="closed"}async createStream(e){if(this.status!=="open")throw new Br;let t=this.onCreateStream({...this.streamOptions,...e});return Ed(t)&&(t=await t),this.streams.push(t),this.cleanUpStream(t),t}onRemoteStream(e){if(this.streams.push(e),this.cleanUpStream(e),this.listenerCount("stream")===0){this.earlyStreams.push(e),this.earlyStreams.length>this.maxEarlyStreams&&this.abort(new gd(`Too many early streams were opened - ${this.earlyStreams.length}/${this.maxEarlyStreams}`));return}this.safeDispatchEvent("stream",{detail:e})}cleanUpStream(e){let t=n=>{let o=this.streams.findIndex(s=>s===e);o!==-1&&this.streams.splice(o,1),n.error!=null?n.local?this.metrics?.increment({[`${e.direction}_stream_reset`]:!0}):this.metrics?.increment({[`${e.direction}_stream_abort`]:!0}):this.metrics?.increment({[`${e.direction}_stream_end`]:!0})};e.addEventListener("close",t),this.metrics?.increment({[`${e.direction}_stream`]:!0})}addEventListener(...e){super.addEventListener.apply(this,e),e[0]==="stream"&&this.earlyStreams.length>0&&queueMicrotask(()=>{this.earlyStreams.forEach(t=>{this.safeDispatchEvent("stream",{detail:t})}),this.earlyStreams=[]})}};var Bo=class extends No{id;protocol;constructor(e){super(e),this.id=e.id,this.protocol=e.protocol??""}async close(e){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.writeStatus="closing",(this.sendingData||this.writeBuffer.byteLength>0)&&(this.log("waiting for write queue to become idle before closing writable end of stream, %d unsent bytes",this.writeBuffer.byteLength),await _r(this,"idle",{...e,rejectionEvents:["close"]})),this.writableNeedsDrain&&(this.log("waiting for write queue to drain before closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData),await _r(this,"drain",{...e,rejectionEvents:["close"]}),this.log("write queue drained, closing writable end of stream, %d unsent bytes, sending %s",this.writeBuffer.byteLength,this.sendingData)),await this.sendCloseWrite(e),this.writeStatus="closed",this.log("closed writable end gracefully"),this.remoteWriteStatus==="closed"&&this.onTransportClosed())}async closeRead(e){this.readStatus==="closing"||this.readStatus==="closed"||(this.readBuffer.byteLength>0&&this.readBuffer.consume(this.readBuffer.byteLength),this.readStatus="closing",await this.sendCloseRead(e),this.readStatus="closed",this.log("closed readable end gracefully"))}};function le(r){let e=new globalThis.AbortController;function t(){let s=r.filter(i=>i?.aborted===!0).map(i=>i?.reason).pop();e.abort(s);for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let s of r){if(s?.aborted===!0){t();break}s?.addEventListener!=null&&s.addEventListener("abort",t)}function n(){for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var Hi=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,s=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*s),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var pT=1.2,mT=2,gT=5e3,yT=6e4,wT=5e3,Gr=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??wT;this.success=new Hi(t),this.failure=new Hi(t),this.next=new Hi(t),this.failureMultiplier=e.failureMultiplier??mT,this.timeoutMultiplier=e.timeoutMultiplier??pT,this.minTimeout=e.minTimeout??gT,this.maxTimeout=e.maxTimeout??yT,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=le([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var At=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},zn=class extends Error{static name="ValidationError";name="ValidationError"},xd=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},vd=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Mm(r){return e=>R(e,r)}function Bm(r){return e=>C(e,r)}function qi(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function Ms(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function c7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=C(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ms(n);return Oe([t,o],t.length+o.length)}function l7(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=ut.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=Ms(n);return Oe([t,o],t.length+o.length)}function Um(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=R(e,"base32"),o=qi(t);return`${n}:${o}`}var Fm=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new At("Invalid byte value in IP address");e[n]=o}),e},u7=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=zr(t[n]),i;s&&(i=Fm(t[n]),t[n]=R(i.subarray(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,R(i.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let s=[n,1];for(n=9-t.length;n>0;n--)s.push("0");t.splice.apply(t,s)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let s=parseInt(t[n],16);if(isNaN(s)||s<0||s>65535)throw new At("Invalid byte value in IP address");o[e++]=s>>8&255,o[e++]=s&255}return o},d7=function(r){if(r.byteLength!==4)throw new At("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},f7=function(r){if(r.byteLength!==16)throw new At("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],s=r[n+1],i=`${o.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")}`;e.push(i)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new At(`Invalid IPv6 address "${t}"`)}};function h7(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new At(`Invalid IPv6 address "${r}"`)}}var Om=Object.values(ps).map(r=>r.decoder),bT=(function(){let r=Om[0].or(Om[1]);return Om.slice(2).forEach(e=>r=r.or(e)),r})();function p7(r){return bT.decode(r)}function m7(r){return e=>r.encoder.encode(e)}function ET(r){if(parseInt(r).toString()!==r)throw new zn("Value must be an integer")}function xT(r){if(r<0)throw new zn("Value must be a positive integer, or zero")}function vT(r){return e=>{if(e>r)throw new zn(`Value must be smaller than or equal to ${r}`)}}function ST(...r){return e=>{for(let t of r)t(e)}}var Bc=ST(ET,xT,vT(65535));var mt=-1,$m=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new vd(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},jn=new $m,UT=[{code:4,name:"ip4",size:32,valueToBytes:Fm,bytesToValue:d7,validate:r=>{if(!zr(r))throw new zn(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:273,name:"udp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:33,name:"dccp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:41,name:"ip6",size:128,valueToBytes:u7,bytesToValue:f7,stringToValue:h7,validate:r=>{if(!fd(r))throw new zn(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:mt},{code:43,name:"ipcidr",size:8,bytesToValue:Mm("base10"),valueToBytes:Bm("base10")},{code:53,name:"dns",size:mt},{code:54,name:"dns4",size:mt},{code:55,name:"dns6",size:mt},{code:56,name:"dnsaddr",size:mt},{code:132,name:"sctp",size:16,valueToBytes:Ms,bytesToValue:qi,validate:Bc},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:mt,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:mt,bytesToValue:Mm("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Bm("base58btc")(r):G.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Um,valueToBytes:c7},{code:445,name:"onion3",size:296,bytesToValue:Um,valueToBytes:l7},{code:446,name:"garlic64",size:mt},{code:447,name:"garlic32",size:mt},{code:448,name:"tls"},{code:449,name:"sni",size:mt},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:mt,bytesToValue:m7(ec),valueToBytes:p7},{code:480,name:"http"},{code:481,name:"http-path",size:mt,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:mt}];UT.forEach(r=>{jn.addProtocol(r)});function g7(r){let e=[],t=0;for(;t<r.length;){let n=hr(r,t),o=jn.getProtocol(n),s=he(n),i=FT(o,r,t+s),a=0;i>0&&o.size===mt&&(a=he(i));let c=s+a+i,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(i>0){let d=t+s+a,u=r.subarray(d,d+i);l.value=o.bytesToValue?.(u)??R(u)}e.push(l),t+=c}return e}function y7(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=jn.getProtocol(n.code),s=he(n.code),i,a=0,c=0;n.value!=null&&(i=o.valueToBytes?.(n.value)??C(n.value),a=i.byteLength,o.size===mt&&(c=he(a)));let l=new Uint8Array(s+c+a),d=0;Oi(n.code,l,d),d+=s,i!=null&&(o.size===mt&&(Oi(a,l,d),d+=c),l.set(i,d)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return Oe(t,e)}function w7(r){if(r.charAt(0)!=="/")throw new At('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let s=1;s<r.length;s++){let i=r.charAt(s);i!=="/"&&(t==="protocol"?o+=r.charAt(s):n+=r.charAt(s));let a=s===r.length-1;if(i==="/"||a){let c=jn.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new At(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new At(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new At("Incomplete multiaddr");return e}function b7(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=jn.getProtocol(e.code);if(t==null)throw new At(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function FT(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:hr(e,t)}var $T=Symbol.for("nodejs.util.inspect.custom"),jm=Symbol.for("@multiformats/multiaddr");function KT(r){if(r==null&&(r="/"),yn(r))return r.getComponents();if(r instanceof Uint8Array)return g7(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),w7(r);if(Array.isArray(r))return r;throw new At("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Td=class r{[jm]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=KT(e),t.validate!==!1&&VT(this)}get bytes(){return this.#r==null&&(this.#r=y7(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=b7(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new xd(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return ee(this.bytes,e.bytes)}[$T](){return`Multiaddr(${this.toString()})`}};function VT(r){r.getComponents().forEach(e=>{let t=jn.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function yn(r){return!!r?.[jm]}function q(r){return new Td(r)}var Xm=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=fe(),this.haveNext=fe()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=fe(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=fe(),await Pe(this.readNext.promise,t?.signal,t)}};function E7(){return new Xm}function HT(r){return r[Symbol.asyncIterator]!=null}async function qT(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*WT(r){let e=new AbortController,t=E7();qT(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*zT(r){for(let e of r)yield*e}function GT(...r){let e=[];for(let t of r)HT(t)||e.push(t);return e.length===r.length?zT(e):WT(r)}var jt=GT;function Yi(r,...e){if(r==null)throw new Error("Empty pipeline");if(Qm(r)){let n=r;r=()=>n.source}else if(v7(r)||x7(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Qm(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Qm(t[n])&&(t[n]=jT(t[n]));return YT(...t)}var YT=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},x7=r=>r?.[Symbol.asyncIterator]!=null,v7=r=>r?.[Symbol.iterator]!=null,Qm=r=>r==null?!1:r.sink!=null&&r.source!=null,jT=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=vt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(x7(s))o=async function*(){yield*s,n.end()};else if(v7(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return jt(n,o())}return r.source};var XT=4194304,_d=class extends Error{static name="UnwrappedError";name="UnwrappedError"},Hc=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},Jm=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},eg=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function QT(r){return typeof r?.closeRead=="function"}function ZT(r){return typeof r?.close=="function"}function Zm(r){return QT(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:ZT(r)?r.status!=="open":!1}function JT(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function Cd(r,e){let t=e?.maxBufferSize??XT,n=new X,o,s=!1;if(!JT(r))throw new A("Argument should be a Stream or a Multiaddr");let i=d=>{if(n.append(d.data),n.byteLength>t){let u=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${u} > ${t}`))}o?.resolve()};r.addEventListener("message",i);let a=d=>{d.error!=null?o?.reject(d.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(d){if(s===!0)throw new _d("Stream was unwrapped");if(Zm(r)){if(n.byteLength===0&&d?.bytes==null)return null;if(d?.bytes!=null&&n.byteLength<d.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,d.bytes),new Os(`Unexpected EOF - stream closed after reading ${n.byteLength}/${d.bytes} bytes`)}let u=d?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=u){o.resolve();break}if(await Pe(o.promise,d?.signal),Zm(r)){if(n.byteLength===0&&d?.bytes==null)return null;break}o=Promise.withResolvers()}let f=d?.bytes??n.byteLength;if(n.byteLength<f){if(Zm(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,f),new Os(`Unexpected EOF - stream closed while reading ${n.byteLength}/${f} bytes`);return l.read(d)}let h=n.sublist(0,f);return n.consume(f),h},async write(d,u){if(s===!0)throw new _d("Stream was unwrapped");r.send(d)||await _r(r,"drain",{signal:u?.signal,rejectionEvents:["close"]})},unwrap(){return s||(s=!0,r.removeEventListener("message",i),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function Fo(r,e={}){let t=Cd(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=he(e.maxDataLength));let n=e?.lengthDecoder??hr,o=e?.lengthEncoder??Mt;return{async read(i){let a=-1,c=new X;for(;;){let d=await t.read({...i,bytes:1});if(d==null)break;c.append(d);try{a=n(c)}catch(u){if(u instanceof RangeError)continue;throw u}if(a<0)throw new Hc("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new eg(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Jm(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...i,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new Os(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new Os(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(i,a){await t.write(new X(o(i.byteLength),i),a)},async writeV(i,a){let c=new X(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function Ue(r,e){let t=Fo(r,e),n={read:async(o,s)=>{let i=await t.read(s);return o.decode(i)},write:async(o,s,i)=>{await t.write(s.encode(o),i)},writeV:async(o,s,i)=>{await t.writeV(o.map(a=>s.encode(a)),i)},pb:o=>({read:async s=>n.read(o,s),write:async(s,i)=>n.write(s,o,i),writeV:async(s,i)=>n.writeV(s,o,i),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var e_=1024*1024*4,t_=1024*1024*4,kd=class{buffer;maxBufferSize;lengthDecoder;maxDataLength;encodingLength;constructor(e={}){this.buffer=new X,this.maxBufferSize=e.maxBufferSize??e_,this.maxDataLength=e.maxDataLength??t_,this.lengthDecoder=e.lengthDecoder??hr,this.encodingLength=e.encodingLength??he}*decode(e){if(this.buffer.append(e),this.buffer.byteLength>this.maxBufferSize)throw new A(`Buffer length limit exceeded - ${this.buffer.byteLength}/${this.maxBufferSize}`);for(;;){let t;try{t=this.lengthDecoder(this.buffer)}catch(s){if(s instanceof RangeError)break;throw s}if(t<0||t>this.maxDataLength)throw new Hc("Invalid message length");let n=this.encodingLength(t),o=n+t;if(this.buffer.byteLength>=o){let s=this.buffer.sublist(n,o);this.buffer.consume(o),s.byteLength>0&&(yield s)}else break}}};var r_=["Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function tg(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(e==="string"||e==="number"||e==="bigint"||e==="symbol")return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(r instanceof Uint8Array)return"Uint8Array";if(r.constructor===Object)return"Object";let t=n_(r);return t||"Object"}function n_(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(r_.includes(e))return e}var y=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}static equals(e,t){return e===t||e.major===t.major&&e.name===t.name}};y.uint=new y(0,"uint",!0);y.negint=new y(1,"negint",!0);y.bytes=new y(2,"bytes",!0);y.string=new y(3,"string",!0);y.array=new y(4,"array",!1);y.map=new y(5,"map",!1);y.tag=new y(6,"tag",!1);y.float=new y(7,"float",!0);y.false=new y(7,"false",!0);y.true=new y(7,"true",!0);y.null=new y(7,"null",!0);y.undefined=new y(7,"undefined",!0);y.break=new y(7,"break",!0);var N=class{constructor(e,t,n){this.type=e,this.value=t,this.encodedLength=n,this.encodedBytes=void 0,this.byteValue=void 0}toString(){return`Token[${this.type}].${this.value}`}};var qc=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",o_=new TextEncoder;function Pd(r){return qc&&globalThis.Buffer.isBuffer(r)}function Us(r){return r instanceof Uint8Array?Pd(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var s_=24,i_=200,ji=qc?r=>r.length>=s_?globalThis.Buffer.from(r):S7(r):r=>r.length>=i_?o_.encode(r):S7(r),wn=r=>Uint8Array.from(r),I7=qc?(r,e,t)=>Pd(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),T7=qc?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Us(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let o of r)n+o.length>t.length&&(o=o.subarray(0,t.length-n)),t.set(o,n),n+=o.length;return t},_7=qc?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function Rd(r,e){if(Pd(r)&&Pd(e))return r.compare(e);for(let t=0;t<r.length;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function S7(r){let e=[],t=0;for(let n=0;n<r.length;n++){let o=r.charCodeAt(n);o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(o=65536+((o&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(o>=55296&&o<=57343&&(o=65533),e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}var A7=4096;function C7(r){let e=r.length;if(e<=A7)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=A7));return t}var a_=256,Wc=class{constructor(e=a_){this.chunkSize=e,this.cursor=0,this.maxCursor=-1,this.chunks=[],this._initReuseChunk=null}reset(){this.cursor=0,this.maxCursor=-1,this.chunks.length&&(this.chunks=[]),this._initReuseChunk!==null&&(this.chunks.push(this._initReuseChunk),this.maxCursor=this._initReuseChunk.length-1)}push(e){let t=this.chunks[this.chunks.length-1];if(this.cursor+e.length<=this.maxCursor+1){let o=t.length-(this.maxCursor-this.cursor)-1;t.set(e,o)}else{if(t){let o=t.length-(this.maxCursor-this.cursor)-1;o<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,o),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=_7(this.chunkSize),this.chunks.push(t),this.maxCursor+=t.length,this._initReuseChunk===null&&(this._initReuseChunk=t),t.set(e,0)):(this.chunks.push(e),this.maxCursor+=e.length)}this.cursor+=e.length}toBytes(e=!1){let t;if(this.chunks.length===1){let n=this.chunks[0];e&&this.cursor>n.length/2?(t=this.cursor===n.length?n:n.subarray(0,this.cursor),this._initReuseChunk=null,this.chunks=[]):t=I7(n,0,this.cursor)}else t=T7(this.chunks,this.cursor);return e&&this.reset(),t}},Ld=class{constructor(e){this.dest=e,this.cursor=0,this.chunks=[e]}reset(){this.cursor=0}push(e){if(this.cursor+e.length>this.dest.length)throw new Error("write out of bounds, destination buffer is too small");this.dest.set(e,this.cursor),this.cursor+=e.length}toBytes(e=!1){let t=this.dest.subarray(0,this.cursor);return e&&this.reset(),t}};var J="CBOR decode error:",bn="CBOR encode error:",zc=[];zc[23]=1;zc[24]=2;zc[25]=3;zc[26]=5;zc[27]=9;function Xn(r,e,t){if(r.length-e<t)throw new Error(`${J} not enough data for type`)}var gt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function mr(r,e,t){Xn(r,e,1);let n=r[e];if(t.strict===!0&&n<gt[0])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function gr(r,e,t){Xn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<gt[1])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function yr(r,e,t){Xn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<gt[2])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);return n}function wr(r,e,t){Xn(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],o=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],s=(BigInt(n)<<BigInt(32))+BigInt(o);if(t.strict===!0&&s<gt[3])throw new Error(`${J} integer encoded in more bytes than necessary (strict decode)`);if(s<=Number.MAX_SAFE_INTEGER)return Number(s);if(t.allowBigInt===!0)return s;throw new Error(`${J} integers outside of the safe integer range are not supported`)}function k7(r,e,t,n){return new N(y.uint,mr(r,e+1,n),2)}function P7(r,e,t,n){return new N(y.uint,gr(r,e+1,n),3)}function R7(r,e,t,n){return new N(y.uint,yr(r,e+1,n),5)}function L7(r,e,t,n){return new N(y.uint,wr(r,e+1,n),9)}function Cr(r,e){return Ke(r,0,e.value)}function Ke(r,e,t){if(t<gt[0]){let n=Number(t);r.push([e|n])}else if(t<gt[1]){let n=Number(t);r.push([e|24,n])}else if(t<gt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<gt[3]){let n=Number(t);r.push([e|26,n>>>24&255,n>>>16&255,n>>>8&255,n&255])}else{let n=BigInt(t);if(n<gt[4]){let o=[e|27,0,0,0,0,0,0,0],s=Number(n&BigInt(4294967295)),i=Number(n>>BigInt(32)&BigInt(4294967295));o[8]=s&255,s=s>>8,o[7]=s&255,s=s>>8,o[6]=s&255,s=s>>8,o[5]=s&255,o[4]=i&255,i=i>>8,o[3]=i&255,i=i>>8,o[2]=i&255,i=i>>8,o[1]=i&255,r.push(o)}else throw new Error(`${J} encountered BigInt larger than allowable range`)}}Cr.encodedSize=function(e){return Ke.encodedSize(e.value)};Ke.encodedSize=function(e){return e<gt[0]?1:e<gt[1]?2:e<gt[2]?3:e<gt[3]?5:9};Cr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function D7(r,e,t,n){return new N(y.negint,-1-mr(r,e+1,n),2)}function N7(r,e,t,n){return new N(y.negint,-1-gr(r,e+1,n),3)}function O7(r,e,t,n){return new N(y.negint,-1-yr(r,e+1,n),5)}var rg=BigInt(-1),M7=BigInt(1);function B7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new N(y.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${J} integers outside of the safe integer range are not supported`);return new N(y.negint,rg-BigInt(o),9)}function Dd(r,e){let t=e.value,n=typeof t=="bigint"?t*rg-M7:t*-1-1;Ke(r,e.type.majorEncoded,n)}Dd.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*rg-M7:t*-1-1;return n<gt[0]?1:n<gt[1]?2:n<gt[2]?3:n<gt[3]?5:9};Dd.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Gc(r,e,t,n){Xn(r,e,t+n);let o=r.slice(e+t,e+t+n);return new N(y.bytes,o,t+n)}function U7(r,e,t,n){return Gc(r,e,1,t)}function F7(r,e,t,n){return Gc(r,e,2,mr(r,e+1,n))}function $7(r,e,t,n){return Gc(r,e,3,gr(r,e+1,n))}function K7(r,e,t,n){return Gc(r,e,5,yr(r,e+1,n))}function V7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer bytes lengths not supported`);return Gc(r,e,9,o)}function Nd(r){return r.encodedBytes===void 0&&(r.encodedBytes=y.equals(r.type,y.string)?ji(r.value):r.value),r.encodedBytes}function Xi(r,e){let t=Nd(e);Ke(r,e.type.majorEncoded,t.length),r.push(t)}Xi.encodedSize=function(e){let t=Nd(e);return Ke.encodedSize(t.length)+t.length};Xi.compareTokens=function(e,t){return l_(Nd(e),Nd(t))};function l_(r,e){return r.length<e.length?-1:r.length>e.length?1:Rd(r,e)}var H7=new TextDecoder,d_=32;function f_(r,e,t){if(t-e<d_){let o="";for(let s=e;s<t;s++){let i=r[s];if(i&128)return H7.decode(r.subarray(e,t));o+=String.fromCharCode(i)}return o}return H7.decode(r.subarray(e,t))}function Yc(r,e,t,n,o){let s=t+n;Xn(r,e,s);let i=new N(y.string,f_(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=r.slice(e+t,e+s)),i}function q7(r,e,t,n){return Yc(r,e,1,t,n)}function W7(r,e,t,n){return Yc(r,e,2,mr(r,e+1,n),n)}function z7(r,e,t,n){return Yc(r,e,3,gr(r,e+1,n),n)}function G7(r,e,t,n){return Yc(r,e,5,yr(r,e+1,n),n)}function Y7(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer string lengths not supported`);return Yc(r,e,9,o,n)}var j7=Xi;function Qi(r,e,t,n){return new N(y.array,n,t)}function X7(r,e,t,n){return Qi(r,e,1,t)}function Q7(r,e,t,n){return Qi(r,e,2,mr(r,e+1,n))}function Z7(r,e,t,n){return Qi(r,e,3,gr(r,e+1,n))}function J7(r,e,t,n){return Qi(r,e,5,yr(r,e+1,n))}function ey(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer array lengths not supported`);return Qi(r,e,9,o)}function ty(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return Qi(r,e,1,1/0)}function Od(r,e){Ke(r,y.array.majorEncoded,e.value)}Od.compareTokens=Cr.compareTokens;Od.encodedSize=function(e){return Ke.encodedSize(e.value)};function Zi(r,e,t,n){return new N(y.map,n,t)}function ry(r,e,t,n){return Zi(r,e,1,t)}function ny(r,e,t,n){return Zi(r,e,2,mr(r,e+1,n))}function oy(r,e,t,n){return Zi(r,e,3,gr(r,e+1,n))}function sy(r,e,t,n){return Zi(r,e,5,yr(r,e+1,n))}function iy(r,e,t,n){let o=wr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${J} 64-bit integer map lengths not supported`);return Zi(r,e,9,o)}function ay(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return Zi(r,e,1,1/0)}function Md(r,e){Ke(r,y.map.majorEncoded,e.value)}Md.compareTokens=Cr.compareTokens;Md.encodedSize=function(e){return Ke.encodedSize(e.value)};function cy(r,e,t,n){return new N(y.tag,t,1)}function ly(r,e,t,n){return new N(y.tag,mr(r,e+1,n),2)}function uy(r,e,t,n){return new N(y.tag,gr(r,e+1,n),3)}function dy(r,e,t,n){return new N(y.tag,yr(r,e+1,n),5)}function fy(r,e,t,n){return new N(y.tag,wr(r,e+1,n),9)}function Bd(r,e){Ke(r,y.tag.majorEncoded,e.value)}Bd.compareTokens=Cr.compareTokens;Bd.encodedSize=function(e){return Ke.encodedSize(e.value)};var ng=20,og=21,sg=22,ig=23;function hy(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${J} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new N(y.null,null,1):new N(y.undefined,void 0,1)}function py(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${J} indefinite length items not allowed`);return new N(y.break,void 0,1)}function ag(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${J} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${J} Infinity values are not supported`)}return new N(y.float,r,e)}function my(r,e,t,n){return ag(cg(r,e+1),3,n)}function gy(r,e,t,n){return ag(lg(r,e+1),5,n)}function yy(r,e,t,n){return ag(xy(r,e+1),9,n)}function jc(r,e,t){let n=e.value;if(n===!1)r.push([y.float.majorEncoded|ng]);else if(n===!0)r.push([y.float.majorEncoded|og]);else if(n===null)r.push([y.float.majorEncoded|sg]);else if(n===void 0)r.push([y.float.majorEncoded|ig]);else{let o,s=!1;(!t||t.float64!==!0)&&(by(n),o=cg(jr,1),n===o||Number.isNaN(n)?(jr[0]=249,r.push(jr.slice(0,3)),s=!0):(Ey(n),o=lg(jr,1),n===o&&(jr[0]=250,r.push(jr.slice(0,5)),s=!0))),s||(y_(n),o=xy(jr,1),jr[0]=251,r.push(jr.slice(0,9)))}}jc.encodedSize=function(e,t){let n=e.value;if(n===!1||n===!0||n===null||n===void 0)return 1;if(!t||t.float64!==!0){by(n);let o=cg(jr,1);if(n===o||Number.isNaN(n))return 3;if(Ey(n),o=lg(jr,1),n===o)return 5}return 9};var wy=new ArrayBuffer(9),kr=new DataView(wy,1),jr=new Uint8Array(wy,0);function by(r){if(r===1/0)kr.setUint16(0,31744,!1);else if(r===-1/0)kr.setUint16(0,64512,!1);else if(Number.isNaN(r))kr.setUint16(0,32256,!1);else{kr.setFloat32(0,r);let e=kr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)kr.setUint16(0,31744,!1);else if(t===0)kr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?kr.setUint16(0,0):o<-14?kr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):kr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function cg(r,e){if(r.length-e<2)throw new Error(`${J} not enough data for float16`);let t=(r[e]<<8)+r[e+1];if(t===31744)return 1/0;if(t===64512)return-1/0;if(t===32256)return NaN;let n=t>>10&31,o=t&1023,s;return n===0?s=o*2**-24:n!==31?s=(o+1024)*2**(n-25):s=o===0?1/0:NaN,t&32768?-s:s}function Ey(r){kr.setFloat32(0,r,!1)}function lg(r,e){if(r.length-e<4)throw new Error(`${J} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function y_(r){kr.setFloat64(0,r,!1)}function xy(r,e){if(r.length-e<8)throw new Error(`${J} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}jc.compareTokens=Cr.compareTokens;function xe(r,e,t){throw new Error(`${J} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Ud(r){return()=>{throw new Error(`${J} ${r}`)}}var V=[];for(let r=0;r<=23;r++)V[r]=xe;V[24]=k7;V[25]=P7;V[26]=R7;V[27]=L7;V[28]=xe;V[29]=xe;V[30]=xe;V[31]=xe;for(let r=32;r<=55;r++)V[r]=xe;V[56]=D7;V[57]=N7;V[58]=O7;V[59]=B7;V[60]=xe;V[61]=xe;V[62]=xe;V[63]=xe;for(let r=64;r<=87;r++)V[r]=U7;V[88]=F7;V[89]=$7;V[90]=K7;V[91]=V7;V[92]=xe;V[93]=xe;V[94]=xe;V[95]=Ud("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)V[r]=q7;V[120]=W7;V[121]=z7;V[122]=G7;V[123]=Y7;V[124]=xe;V[125]=xe;V[126]=xe;V[127]=Ud("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)V[r]=X7;V[152]=Q7;V[153]=Z7;V[154]=J7;V[155]=ey;V[156]=xe;V[157]=xe;V[158]=xe;V[159]=ty;for(let r=160;r<=183;r++)V[r]=ry;V[184]=ny;V[185]=oy;V[186]=sy;V[187]=iy;V[188]=xe;V[189]=xe;V[190]=xe;V[191]=ay;for(let r=192;r<=215;r++)V[r]=cy;V[216]=ly;V[217]=uy;V[218]=dy;V[219]=fy;V[220]=xe;V[221]=xe;V[222]=xe;V[223]=xe;for(let r=224;r<=243;r++)V[r]=Ud("simple values are not supported");V[244]=xe;V[245]=xe;V[246]=xe;V[247]=hy;V[248]=Ud("simple values are not supported");V[249]=my;V[250]=gy;V[251]=yy;V[252]=xe;V[253]=xe;V[254]=xe;V[255]=py;var Xr=[];for(let r=0;r<24;r++)Xr[r]=new N(y.uint,r,1);for(let r=-1;r>=-24;r--)Xr[31-r]=new N(y.negint,r,1);Xr[64]=new N(y.bytes,new Uint8Array(0),1);Xr[96]=new N(y.string,"",1);Xr[128]=new N(y.array,0,1);Xr[160]=new N(y.map,0,1);Xr[244]=new N(y.false,!1,1);Xr[245]=new N(y.true,!0,1);Xr[246]=new N(y.null,null,1);function ug(r){switch(r.type){case y.false:return wn([244]);case y.true:return wn([245]);case y.null:return wn([246]);case y.bytes:return r.value.length?void 0:wn([64]);case y.string:return r.value===""?wn([96]):void 0;case y.array:return r.value===0?wn([128]):void 0;case y.map:return r.value===0?wn([160]):void 0;case y.uint:return r.value<24?wn([Number(r.value)]):void 0;case y.negint:if(r.value>=-24)return wn([31-Number(r.value)])}}var b_={float64:!1,mapSorter:v_,quickEncodeToken:ug},Ty=Object.freeze({float64:!0,mapSorter:S_,quickEncodeToken:ug});function E_(){let r=[];return r[y.uint.major]=Cr,r[y.negint.major]=Dd,r[y.bytes.major]=Xi,r[y.string.major]=j7,r[y.array.major]=Od,r[y.map.major]=Md,r[y.tag.major]=Bd,r[y.float.major]=jc,r}var Ji=E_(),Fd=new Wc,Qc=class r{constructor(e,t){this.obj=e,this.parent=t}includes(e){let t=this;do if(t.obj===e)return!0;while(t=t.parent);return!1}static createCheck(e,t){if(e&&e.includes(t))throw new Error(`${bn} object contains circular references`);return new r(t,e)}},$o={null:new N(y.null,null),undefined:new N(y.undefined,void 0),true:new N(y.true,!0),false:new N(y.false,!1),emptyArray:new N(y.array,0),emptyMap:new N(y.map,0)},En={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new N(y.float,r):r>=0?new N(y.uint,r):new N(y.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new N(y.uint,r):new N(y.negint,r)},Uint8Array(r,e,t,n){return new N(y.bytes,r)},string(r,e,t,n){return new N(y.string,r)},boolean(r,e,t,n){return r?$o.true:$o.false},null(r,e,t,n){return $o.null},undefined(r,e,t,n){return $o.undefined},ArrayBuffer(r,e,t,n){return new N(y.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new N(y.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[$o.emptyArray,new N(y.break)]:$o.emptyArray;n=Qc.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=$d(i,t,n);return t.addBreakTokens?[new N(y.array,r.length),o,new N(y.break)]:[new N(y.array,r.length),o]},Object(r,e,t,n){let o=e!=="Object",s=o?r.keys():Object.keys(r),i=o?r.size:s.length,a;if(i){a=new Array(i),n=Qc.createCheck(n,r);let c=!o&&t.ignoreUndefinedProperties,l=0;for(let d of s){let u=o?r.get(d):r[d];c&&u===void 0||(a[l++]=[$d(d,t,n),$d(u,t,n)])}l<i&&(a.length=l)}return a?.length?(x_(a,t),t.addBreakTokens?[new N(y.map,a.length),a,new N(y.break)]:[new N(y.map,a.length),a]):t.addBreakTokens===!0?[$o.emptyMap,new N(y.break)]:$o.emptyMap}};En.Map=En.Object;En.Buffer=En.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))En[`${r}Array`]=En.DataView;function $d(r,e={},t){let n=tg(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||En[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=En[n];if(!s)throw new Error(`${bn} unsupported type: ${n}`);return s(r,n,e,t)}function x_(r,e){e.mapSorter&&r.sort(e.mapSorter)}function v_(r,e){let t=Array.isArray(r[0])?r[0][0]:r[0],n=Array.isArray(e[0])?e[0][0]:e[0];if(t.type!==n.type)return t.type.compare(n.type);let o=t.type.major,s=Ji[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function S_(r,e){if(r[0]instanceof N&&e[0]instanceof N){let t=r[0],n=e[0];return t._keyBytes||(t._keyBytes=vy(t.value)),n._keyBytes||(n._keyBytes=vy(n.value)),Rd(t._keyBytes,n._keyBytes)}throw new Error("rfc8949MapSorter: complex key types are not supported yet")}function vy(r){return Kd(r,Ji,Ty)}function Xc(r,e,t,n){if(Array.isArray(e))for(let o of e)Xc(r,o,t,n);else t[e.type.major](r,e,n)}var Sy=y.uint.majorEncoded,Ay=y.negint.majorEncoded,A_=y.bytes.majorEncoded,I_=y.string.majorEncoded,Iy=y.array.majorEncoded,T_=y.float.majorEncoded|ng,__=y.float.majorEncoded|og,C_=y.float.majorEncoded|sg,k_=y.float.majorEncoded|ig,P_=BigInt(-1),R_=BigInt(1);function L_(r){return r.addBreakTokens!==!0}function _y(r,e,t,n){let o=tg(e),s=t.typeEncoders&&t.typeEncoders[o];if(s){let i=s(e,o,t,n);if(i!=null){Xc(r,i,Ji,t);return}}switch(o){case"null":r.push([C_]);return;case"undefined":r.push([k_]);return;case"boolean":r.push([e?__:T_]);return;case"number":!Number.isInteger(e)||!Number.isSafeInteger(e)?jc(r,new N(y.float,e),t):e>=0?Ke(r,Sy,e):Ke(r,Ay,e*-1-1);return;case"bigint":e>=BigInt(0)?Ke(r,Sy,e):Ke(r,Ay,e*P_-R_);return;case"string":{let i=ji(e);Ke(r,I_,i.length),r.push(i);return}case"Uint8Array":Ke(r,A_,e.length),r.push(e);return;case"Array":if(!e.length){r.push([Iy]);return}n=Qc.createCheck(n,e),Ke(r,Iy,e.length);for(let i of e)_y(r,i,t,n);return;case"Object":case"Map":{let i=En.Object(e,o,t,n);Xc(r,i,Ji,t)}return;default:{let i=En[o];if(!i)throw new Error(`${bn} unsupported type: ${o}`);let a=i(e,o,t,n);Xc(r,a,Ji,t)}}}function Kd(r,e,t,n){let o=n instanceof Uint8Array,s=o?new Ld(n):Fd,i=$d(r,t);if(!Array.isArray(i)&&t.quickEncodeToken){let a=t.quickEncodeToken(i);if(a)return o?(s.push(a),s.toBytes()):a;let c=e[i.type.major];if(c.encodedSize){let l=c.encodedSize(i,t);if(o||(s=new Wc(l)),c(s,i,t),s.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${i} was wrong`);return o?s.toBytes():Us(s.chunks[0])}}return s.reset(),Xc(s,i,e,t),s.toBytes(!0)}function Ko(r,e){return e=Object.assign({},b_,e),L_(e)?(Fd.reset(),_y(Fd,r,e,void 0),Fd.toBytes(!0)):Kd(r,Ji,e)}var D_={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},Vd=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t}pos(){return this._pos}done(){return this._pos>=this.data.length}next(){let e=this.data[this._pos],t=Xr[e];if(t===void 0){let n=V[e];if(!n)throw new Error(`${J} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let o=e&31;t=n(this.data,this._pos,o,this.options)}return this._pos+=t.encodedLength,t}},Zc=Symbol.for("DONE"),Hd=Symbol.for("BREAK");function N_(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=ea(e,t);if(s===Hd){if(r.value===1/0)break;throw new Error(`${J} got unexpected break to lengthed array`)}if(s===Zc)throw new Error(`${J} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function O_(r,e,t){let n=t.useMaps===!0,o=t.rejectDuplicateMapKeys===!0,s=n?void 0:{},i=n?new Map:void 0;for(let a=0;a<r.value;a++){let c=ea(e,t);if(c===Hd){if(r.value===1/0)break;throw new Error(`${J} got unexpected break to lengthed map`)}if(c===Zc)throw new Error(`${J} found map but not enough entries (got ${a} [no key], expected ${r.value})`);if(!n&&typeof c!="string")throw new Error(`${J} non-string keys not supported (got ${typeof c})`);if(o&&(n&&i.has(c)||!n&&Object.hasOwn(s,c)))throw new Error(`${J} found repeat map key "${c}"`);let l=ea(e,t);if(l===Zc)throw new Error(`${J} found map but not enough entries (got ${a} [no value], expected ${r.value})`);n?i.set(c,l):s[c]=l}return n?i:s}function ea(r,e){if(r.done())return Zc;let t=r.next();if(y.equals(t.type,y.break))return Hd;if(t.type.terminal)return t.value;if(y.equals(t.type,y.array))return N_(t,r,e);if(y.equals(t.type,y.map))return O_(t,r,e);if(y.equals(t.type,y.tag)){if(e.tags&&typeof e.tags[t.value]=="function"){let n=ea(r,e);return e.tags[t.value](n)}throw new Error(`${J} tag not supported (${t.value})`)}throw new Error("unsupported")}function dg(r,e){if(!(r instanceof Uint8Array))throw new Error(`${J} data to decode must be a Uint8Array`);e=Object.assign({},D_,e);let t=Us(r),n=e.tokenizer||new Vd(t,e),o=ea(n,e);if(o===Zc)throw new Error(`${J} did not find any content to decode`);if(o===Hd)throw new Error(`${J} got unexpected break`);return[o,r.subarray(n.pos())]}function br(r,e){let[t,n]=dg(r,e);if(n.length>0)throw new Error(`${J} too many terminals, data makes no sense`);return t}var qd=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},ta=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},Wd=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},Jc=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function zd(r){return r[Symbol.asyncIterator]!=null}function Cy(r,e){if(r.byteLength>e)throw new ta("Message length too long")}var Yd=r=>{let e=he(r),t=Ge(e);return Mt(r,t),Yd.bytes=e,t};Yd.bytes=0;function Qn(r,e){e=e??{};let t=e.lengthEncoder??Yd,n=e?.maxDataLength??4194304;function*o(s){Cy(s,n);let i=t(s.byteLength);i instanceof Uint8Array?yield i:yield*i,s instanceof Uint8Array?yield s:yield*s}return zd(r)?(async function*(){for await(let s of r)yield*o(s)})():(function*(){for(let s of r)yield*o(s)})()}Qn.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Yd,n=e?.maxDataLength??4194304;return Cy(r,n),new X(t(r.byteLength),r)};var $s;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})($s||($s={}));var hg=r=>{let e=hr(r);return hg.bytes=he(e),e};hg.bytes=0;function Ks(r,e){let t=new X,n=$s.LENGTH,o=-1,s=e?.lengthDecoder??hg,i=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===$s.LENGTH)try{if(o=s(t),o<0)throw new qd("Invalid message length");if(o>a)throw new ta("Message length too long");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=$s.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw new Wd("Message length length too long");break}throw l}if(n===$s.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=$s.LENGTH}}}return zd(r)?(async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Jc("Unexpected end of input")})():(function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new Jc("Unexpected end of input")})()}Ks.fromReader=(r,e)=>{let t=1,n=(async function*(){for(;;)try{let{done:s,value:i}=await r.next(t);if(s===!0)return;i!=null&&(yield i)}catch(s){if(s.code==="ERR_UNDER_READ")return{done:!0,value:null};throw s}finally{t=1}})();return Ks(n,{...e??{},onLength:s=>{t=s}})};function B_(r,e){if(typeof r=="string")return U_(r);if(typeof r=="number")return K_(r,e);throw Error(`Value provided to ms() must be a string or number. value=${JSON.stringify(r)}`)}var jd=B_;function U_(r){if(typeof r!="string"||r.length===0||r.length>100)throw Error(`Value provided to ms.parse() must be a string with length between 1 and 99. value=${JSON.stringify(r)}`);let e=/^(?<value>-?\d*\.?\d+) *(?<unit>milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|months?|mo|years?|yrs?|y)?$/i.exec(r);if(!e?.groups)return NaN;let{value:t,unit:n="ms"}=e.groups,o=parseFloat(t),s=n.toLowerCase();switch(s){case"years":case"year":case"yrs":case"yr":case"y":return o*315576e5;case"months":case"month":case"mo":return o*26298e5;case"weeks":case"week":case"w":return o*6048e5;case"days":case"day":case"d":return o*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return o*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return o*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return o*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:throw Error(`Unknown unit "${s}" provided to ms.parse(). value=${JSON.stringify(r)}`)}}function F_(r){let e=Math.abs(r);return e>=315576e5?`${Math.round(r/315576e5)}y`:e>=26298e5?`${Math.round(r/26298e5)}mo`:e>=6048e5?`${Math.round(r/6048e5)}w`:e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function $_(r){let e=Math.abs(r);return e>=315576e5?Vs(r,e,315576e5,"year"):e>=26298e5?Vs(r,e,26298e5,"month"):e>=6048e5?Vs(r,e,6048e5,"week"):e>=864e5?Vs(r,e,864e5,"day"):e>=36e5?Vs(r,e,36e5,"hour"):e>=6e4?Vs(r,e,6e4,"minute"):e>=1e3?Vs(r,e,1e3,"second"):`${r} ms`}function K_(r,e){if(typeof r!="number"||!Number.isFinite(r))throw Error("Value provided to ms.format() must be of type number.");return e?.long?$_(r):F_(r)}function Vs(r,e,t,n){let o=e>=t*1.5;return`${Math.round(r/t)} ${n}${o?"s":""}`}function pg(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=jd,t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d,u){let f,h=null,p,g;function m(...w){if(!m.enabled)return;let T=m,I=Number(new Date),D=I-(f||I);T.diff=D,T.prev=f,T.curr=I,f=I,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let F=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(z,S)=>{if(z==="%%")return"%";F++;let x=t.formatters[S];if(typeof x=="function"){let L=w[F];z=x.call(T,L),w.splice(F,1),F--}return z}),t.formatArgs.call(T,w),u?.onLog!=null&&u.onLog(...w),(T.log||t.log).apply(T,w)}return m.namespace=d,m.useColors=t.useColors(),m.color=t.selectColor(d),m.extend=n,m.destroy=t.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(p!==t.namespaces&&(p=t.namespaces,g=t.enabled(d)),g),set:w=>{h=w}}),typeof t.init=="function"&&t.init(m),m}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),h=f.length;for(u=0;u<h;u++)f[u]&&(d=f[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.substr(1)+"$")):t.names.push(new RegExp("^"+d+"$")))}function s(){let d=[...t.names.map(a),...t.skips.map(a).map(u=>"-"+u)].join(",");return t.enable(""),d}function i(d){if(d[d.length-1]==="*")return!0;let u,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack??d.message:d}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var Xd=Y_(),V_=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function H_(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function q_(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+jd(this.diff),!this.useColors)return;let e="color: "+this.color;r.splice(1,0,e,"color: inherit");let t=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(t++,o==="%c"&&(n=t))}),r.splice(n,0,e)}var W_=console.debug??console.log??(()=>{});function z_(r){try{r?Xd?.setItem("debug",r):Xd?.removeItem("debug")}catch{}}function G_(){let r;try{r=Xd?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function Y_(){try{return localStorage}catch{}}function j_(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var Py=pg({formatArgs:q_,save:z_,load:G_,useColors:H_,setupFormatters:j_,colors:V_,storage:Xd,log:W_});var rr=Py;rr.formatters.b=r=>r==null?"undefined":De.baseEncode(r);rr.formatters.t=r=>r==null?"undefined":ut.baseEncode(r);rr.formatters.m=r=>r==null?"undefined":rt.baseEncode(r);rr.formatters.p=r=>r==null?"undefined":r.toString();rr.formatters.c=r=>r==null?"undefined":r.toString();rr.formatters.k=r=>r==null?"undefined":r.toString();rr.formatters.a=r=>r==null?"undefined":r.toString();function Ry(r,e=""){let t=Ly(r.message),n=Ly(r.stack);return t!=null&&n!=null?n.includes(t)?`${n.split(`
|
|
4
4
|
`).join(`
|
|
5
5
|
${e}`)}`:`${t}
|
|
6
6
|
${e}${n.split(`
|
|
@@ -10,7 +10,7 @@ ${e}`)}`:n!=null?`${n.split(`
|
|
|
10
10
|
${e}`)}`:t!=null?`${t}`:`${r.toString()}`}function X_(r){return r instanceof AggregateError||r?.name==="AggregateError"&&Array.isArray(r.errors)}function Dy(r,e=""){if(X_(r)){let t=Ry(r,e);return r.errors.length>0?(e=`${e} `,t+=`
|
|
11
11
|
${e}${r.errors.map(n=>`${Dy(n,`${e}`)}`).join(`
|
|
12
12
|
${e}`)}`):t+=`
|
|
13
|
-
${e}[Error list was empty]`,t.trim()}return Ry(r,e)}rr.formatters.e=r=>r==null?"undefined":Dy(r);function Q_(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function ra(r){return{forComponent(e){return Pr(e,r)}}}function Pr(r,e){let t=Q_(`${r}:trace`);return rr.enabled(`${r}:trace`)&&rr.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=rr(`${r}:trace`,e)),Object.assign(rr(r,e),{error:rr(`${r}:error`,e),trace:t,newScope:n=>Pr(`${r}:${n}`,e)})}function Ly(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Ny=Symbol.for("sindresorhus/unlimited-timeout#brand");function Oy(r,e,...t){if(typeof r!="function")throw new TypeError("Expected callback to be a function");e??=0,e=Number(e);let n=!1,o={[Ny]:!0,id:void 0,cleared:!1,ref(){return n=!1,o.id?.ref?.(),o},unref(){return n=!0,o.id?.unref?.(),o}};if(e===Number.POSITIVE_INFINITY||e>Number.MAX_SAFE_INTEGER)return o;(!Number.isFinite(e)||e<0)&&(e=0);let s=performance.now()+e,i=a=>{o.cleared||(a<=2147483647?(o.id=globalThis.setTimeout(()=>{o.cleared||r(...t)},a),n&&o.id?.unref?.()):(o.id=globalThis.setTimeout(()=>{let c=performance.now(),l=Math.max(0,s-c);i(l)},2147483647),n&&o.id?.unref?.()))};return i(e),o}function My(r){!r||typeof r!="object"||!r[Ny]||(r.cleared=!0,r.id!==void 0&&(globalThis.clearTimeout(r.id),r.id=void 0))}var Z_=new WeakMap;function J_({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(o.reason);let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(o.reason)},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,h)=>{i=()=>{d(),f(n)},a=h,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),Z_.set(u,()=>{c(s),s=null,i()}),u}}var eC=J_({setTimeout:Oy,clearTimeout:My}),By=eC;var It=class extends St{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Qd=class extends St{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var na=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new mg}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new pd("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},mg=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function oa(r,e,t){let n,o,s=!1;function i(){let l={signal:o.signal};if(t?.timeout!=null){let d=le([o.signal,AbortSignal.timeout(t.timeout)]);l.signal=d}s=!0,Promise.resolve().then(async()=>{await r(l)}).catch(()=>{}).finally(()=>{s=!1,!o.signal.aborted&&(n=setTimeout(i,e))})}let a=Wn(i,t?.debounce??100),c=!1;return{setInterval:l=>{e!==l&&(e=l,n!=null&&(clearTimeout(n),n=setTimeout(i,e)))},setTimeout:l=>{t??={},t.timeout=l},run:()=>{s||(clearTimeout(n),a())},start:()=>{c||(c=!0,o=new AbortController,o.signal,t?.runImmediately===!0?queueMicrotask(()=>{i()}):n=setTimeout(i,e))},stop:()=>{clearTimeout(n),o?.abort(),c=!1}}}var gg=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function ot(r){let{name:e,metrics:t}=r,n;return t!=null?n=new gg({name:e,metrics:t}):n=new Map,n}var Zn="/",Uy=new TextEncoder().encode(Zn),Zd=Uy[0],Fe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=C(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Zd)throw new Error("Invalid key")}toString(e="utf8"){return R(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Zn))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Uy),this._buf[0]!==Zd){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Zd,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Zd;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Zn).slice(1)}type(){return tC(this.baseNamespace())}name(){return rC(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Zn)||(e+=Zn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Zn):new r(e.slice(0,-1).join(Zn))}child(e){return this.toString()===Zn?e:e.toString()===Zn?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...nC(e.map(t=>t.namespaces()))])}};function tC(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function rC(r){let e=r.split(":");return e[e.length-1]}function nC(r){return[].concat(...r)}function oC(r){return r[Symbol.asyncIterator]!=null}function sC(r){if(oC(r))return(async()=>{let n=new Uint8Array(0);for await(let o of r)n=Oe([n,o],n.length+o.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Oe(e,t)}var Jd=sC;function ef({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*iC(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t],s=G.asCID(n);s!=null?yield[o.join("/"),s]:typeof n=="object"&&(yield*yg(n,o))}else{let t=G.asCID(e);t!=null?yield[r.join("/"),t]:yield*yg(e,r)}}function*yg(r,e){if(r==null||r instanceof Uint8Array)return;let t=G.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,o]of Object.entries(r)){let s=[...e,n];yield*iC(s,o)}}function*aC(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t];yield o.join("/"),typeof n=="object"&&G.asCID(n)==null&&(yield*wg(n,o))}else yield*wg(e,r)}function*wg(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let o=[...e,t];yield o.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&G.asCID(n)==null&&(yield*aC(o,n))}}function cC(r,e){let t=r;for(let[n,o]of e.entries()){if(t=t[o],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(i=>`[${JSON.stringify(i)}]`).join("")}`);let s=G.asCID(t);if(s!=null)return{value:s,remaining:e.slice(n+1).join("/")}}return{value:t}}var bg=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:ef(),bytes:ef(),value:ef(),asBlock:ef()})}links(){return yg(this.value,[])}tree(){return wg(this.value,[])}get(e="/"){return cC(this.value,e.split("/").filter(Boolean))}};function Fy({bytes:r,cid:e,value:t,codec:n}){let o=t!==void 0?t:n?.decode(r);if(o===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new bg({cid:e,bytes:r,value:o})}var tf=class extends Error{static name="AlreadyPinnedError";name="AlreadyPinnedError"},el=class extends Error{static name="BlockPinnedError";name="BlockPinnedError"},rf=class extends Error{static name="InvalidDatastoreVersionError";name="InvalidDatastoreVersionError"},Hs=class extends Error{static name="InvalidConfigurationError";name="InvalidConfigurationError"},nf=class extends AggregateError{static name="GetFailedError";name="GetFailedError"},of=class extends AggregateError{static name="LoadBlockFailedError";name="LoadBlockFailedError"},tl=class extends Error{static name="BlockNotFoundWhileOfflineError";name="BlockNotFoundWhileOfflineError"};var Vy="/pin/",$y="/pinned-block/",Eg=Ar,Ky=1;function sf(r){return r.version===0&&(r=r.toV1()),new Fe(`${Vy}${r.toString(Eg)}`)}var af=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=sf(e);if(await this.datastore.has(n))throw new tf("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new A("Depth must be greater than or equal to 0");let s=new St({concurrency:Ky});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>ee(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,Ko(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=await this.getCodec(e.code),s=await Jd(this.blockstore.get(e,n)),i=Fy({bytes:s,cid:e,codec:o});yield e;for(let[,a]of i.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Fe(`${$y}${Eg.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=br(await this.datastore.get(o,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,Ko(s),n),n.onProgress?.(new H("helia:pin:add",e))}}async*rm(e,t={}){let n=sf(e),o=await this.datastore.get(n,t),s=br(o);await this.datastore.delete(n,t);let i=new St({concurrency:Ky});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>ee(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:Vy+(e.cid!=null?`${e.cid.toString(Ar)}`:"")},e)){let o=G.parse(t.toString().substring(5),Ar),s=br(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Fe(`${$y}${Eg.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=sf(e),o=await this.datastore.get(n,t);return br(o)}async setMetadata(e,t,n){let o=sf(e),s=await this.datastore.get(o,n),i=br(s);i.metadata=t??{},await this.datastore.put(o,Ko(i),n)}};var xg=1,vg=5,Sg=100;var rl=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},Vo=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},nl=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},ol=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}},Ag=class extends Error{static name="InvalidCodecError";constructor(e="Invalid codec"){super(e),this.name="InvalidCodecError"}};var lC=5,cf=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??lC,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await at(...this.routers)}async stop(){await lt(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new Vo("No content routers available");let n=new It({concurrency:this.providerLookupConcurrency}),o=0,s=[],i=this,a=0;this.log("findProviders for %c start using routers %s",e,this.routers.map(l=>l.toString()).join(", "));let c=qs(this.routers,"findProviders").map(async function*(l){let d=0;try{for await(let u of l.findProviders(e,t))d++,yield u}catch(u){s.push(u)}finally{i.log("router %s found %d providers for %c",l,d,e),a++,a===c.length&&n.size===0&&n.emitIdle()}});for await(let l of jt(n.toGenerator(),...c))if(l!=null){if(l.multiaddrs.length===0){if(n.find(l.id)!=null)continue;n.add(async()=>{try{let d=await this.findPeer(l.id,t);return d.multiaddrs.length===0?null:{...d,protocols:l.protocols,routing:l.routing}}catch(d){return this.log.error("could not load multiaddrs for peer %p - %e",l.id,d),null}},{peerId:l.id,signal:t.signal}).catch(d=>{this.log.error("could not load multiaddrs for peer %p - %e",l.id,d)});continue}o++,yield l}this.log("findProviders finished, found %d providers for %c",o,e)}async provide(e,t={}){if(this.routers.length===0)throw new Vo("No content routers available");await Promise.all(qs(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(qs(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(qs(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){let n=[],o;try{o=await Promise.any(qs(this.routers,"get").map(async s=>{try{return await s.get(e,t)}catch(i){this.log("router %s failed with %e",s,i),n.push(i)}}))}catch{}if(o==null)throw new nf(n,`Failed to get value key ${R(e,"base58btc")}`);return o}async findPeer(e,t){if(this.routers.length===0)throw new Vo("No peer routers available");let n=this,o=jt(...qs(this.routers,"findPeer").map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s;throw new Le("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Vo("No peer routers available");for await(let n of jt(...qs(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function qs(r,e){return r.filter(t=>t[e]!=null)}var Er=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function Xt(r,e,t,n){let o=new Er(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){Tg(t,"abort",u),Tg(r,e,l),Tg(r,s,d)}let l=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){c(),a(h);return}c(),i(f)},d=f=>{if(c(),f instanceof Error){a(f);return}a(f.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},u=()=>{c(),a(o)};Ig(t,"abort",u),Ig(r,e,l),Ig(r,s,d)})}function Ig(r,e,t){r!=null&&(Hy(r)?r.addEventListener(e,t):r.addListener(e,t))}function Tg(r,e,t){r!=null&&(Hy(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function Hy(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var lf=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var uf=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Er)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function uC(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var df=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=uC(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Er),this.cleanup())}async join(e={}){let t=new uf(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Pe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function _g(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var sl=class extends ie{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=_g(this.emitEmpty.bind(this),1),this.emitIdle=_g(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new lf;let n=new df(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Er)}),this.clear()}async onEmpty(e){this.size!==0&&await Xt(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Xt(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Xt(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=vt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new Er("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var ff="lock:worker:request-read",hf="lock:worker:abort-read-request",pf="lock:worker:release-read",mf="lock:master:grant-read",gf="lock:master:error-read",yf="lock:worker:request-write",wf="lock:worker:abort-write-request",bf="lock:worker:release-write",Ef="lock:master:grant-write",xf="lock:master:error-write",vf="lock:worker:finalize",Sf="mortice",qy={singleProcess:!1};var Cg=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let d={type:l.data.type,name:l.data.name,identifier:l.data.identifier};d.type===o&&r.safeDispatchEvent(t,{detail:{name:d.name,identifier:d.identifier,handler:async()=>{e.postMessage({type:c,name:d.name,identifier:d.identifier}),await new Promise(u=>{let f=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===d.identifier&&(e.removeEventListener("message",f),u())};e.addEventListener("message",f)})},onError:u=>{e.postMessage({type:i,name:d.name,identifier:d.identifier,error:{message:u.message,name:u.name,stack:u.stack}})}}}),d.type===s&&r.safeDispatchEvent(n,{detail:{name:d.name,identifier:d.identifier}}),d.type===vf&&r.safeDispatchEvent("finalizeRequest",{detail:{name:d.name}})};var Wy=(r=10)=>Math.random().toString().substring(2,r+2);var Af=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(Sf)}readLock(e){return this.sendRequest(ff,hf,mf,gf,pf,e)}writeLock(e){return this.sendRequest(yf,wf,Ef,xf,bf,e)}finalize(){this.channel.postMessage({type:vf,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Wy();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let d=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",d,{once:!0});let u=f=>{if(f.data?.identifier===a&&(f.data?.type===n&&(this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",d),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),f.data.type===o)){this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",d);let h=new Error;f.data.error!=null&&(h.message=f.data.error.message,h.name=f.data.error.name,h.stack=f.data.error.stack),l(h)}};this.channel.addEventListener("message",u)})}};var zy=r=>{if(r=Object.assign({},qy,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(Sf),n=new ie;return t.addEventListener("message",Cg(n,t,"requestReadLock","abortReadLockRequest",ff,hf,gf,pf,mf)),t.addEventListener("message",Cg(n,t,"requestWriteLock","abortWriteLockRequest",yf,wf,xf,bf,Ef)),n}return new Af(r.name)};var Ws=new Map,il;function Gy(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function dC(r){if(il==null&&(il=zy(r),!Gy(il))){let e=il;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Ws.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Ws.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Ws.get(n);o?.finalize()})}return il}async function kg(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new Er)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Yy=(r,e)=>{let t=Ws.get(r);if(t!=null)return t;let n=dC(e);if(Gy(n))return t=n,Ws.set(r,t),t;let o=new sl({concurrency:1}),s;return t={async readLock(i){if(s!=null)return kg(s,i);s=new sl({concurrency:e.concurrency,autoStart:!1});let a=s,c=kg(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,kg(o,i)},finalize:()=>{Ws.delete(r)},queue:o},Ws.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var fC={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function al(r){let e=Object.assign({},fC,r);return Yy(e.name,e)}var If=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=al({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await at(this.child),this.started=!0}async stop(){await lt(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async*get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new el("Block was pinned - please unpin and try again");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany((async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new el("Block was pinned - please unpin and try again");yield s}})(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var Pg=new Fe("/version"),jy=1;async function Xy(r){if(!await r.has(Pg)){await r.put(Pg,C(`${jy}`));return}let e=await r.get(Pg),t=R(e);if(parseInt(t,10)!==jy)throw new rf("Invalid datastore version, a datastore migration may be required")}var Dg={};et(Dg,{code:()=>Lg,decode:()=>vC,decodeOptions:()=>bC,encode:()=>xC,encodeOptions:()=>yC,name:()=>EC,toByteView:()=>Zy});var Qy=42;function Zy(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function hC(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=G.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new N(y.tag,Qy),new N(y.bytes,t)]}function pC(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function mC(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}function gC(r){for(let e of r.keys())if(typeof e!="string"||e.length===0)throw new Error("Non-string Map keys are not supported by the IPLD Data Model and cannot be encoded");return null}var Rg={float64:!0,typeEncoders:{Map:gC,Object:hC,undefined:pC,number:mC}},yC={...Rg,typeEncoders:{...Rg.typeEncoders}};function wC(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return G.decode(r.subarray(1))}var Tf={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Tf.tags[Qy]=wC;var bC={...Tf,tags:Tf.tags.slice()},EC="dag-cbor",Lg=113,xC=r=>Ko(r,Rg),vC=r=>br(Zy(r),Tf);var $g={};et($g,{code:()=>Fg,decode:()=>e9,encode:()=>Jy,format:()=>DC,name:()=>LC,parse:()=>OC,stringify:()=>DC});var Ng=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(y.equals(t.type,y.array)&&(t.elements++,t.elements!==1&&e.push([44])),y.equals(t.type,y.map)&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[y.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[y.negint.major](e,t){this[y.uint.major](e,t)}[y.bytes.major](e,t){throw new Error(`${bn} unsupported type: Uint8Array`)}[y.string.major](e,t){this.prefix(e);let n=ji(JSON.stringify(t.value));e.push(n.length>32?Us(n):n)}[y.array.major](e,t){this.prefix(e),this.inRecursive.push({type:y.array,elements:0}),e.push([91])}[y.map.major](e,t){this.prefix(e),this.inRecursive.push({type:y.map,elements:0}),e.push([123])}[y.tag.major](e,t){}[y.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(y.equals(i.type,y.array))e.push([93]);else if(y.equals(i.type,y.map))e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${bn} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};function SC(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${bn} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==y.string||n.type!==y.string)throw new Error(`${bn} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${bn} unexpected duplicate map keys, this is not supported`)}var AC={addBreakTokens:!0,mapSorter:SC};function Og(r,e){return e=Object.assign({},AC,e),Kd(r,new Ng,e)}var sa=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${J} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${J} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new N(y.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${J} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${J} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new N(y.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new N(i>=0?y.uint:y.negint,i,this._pos-e):new N(i>=0?y.uint:y.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${J} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new N(y.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${J} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${J} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${J} unexpected unicode sequence at position ${this._pos}`);let c,l,d,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],d=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(d&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|d&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${J} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${J} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new N(y.string,C7(t),this._pos-e);default:if(s<32)throw new Error(`${J} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${J} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new N(y.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new N(y.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new N(y.null,null,4);case 102:return this.expect([102,97,108,115,101]),new N(y.false,!1,5);case 116:return this.expect([116,114,117,101]),new N(y.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${J} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);if(this.ch()!==44)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new N(y.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);if(this.ch()!==44)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${J} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Mg(r,e){return e=Object.assign({tokenizer:new sa(r,e)},e),br(r,e)}function TC(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function _C(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=G.asCID(r);if(!e)return null;let t=e.toString();return[new N(y.map,1/0,1),new N(y.string,"/",1),new N(y.string,t,t.length),new N(y.break,void 0,1)]}function _f(r){let e=rt.encode(r).slice(1);return[new N(y.map,1/0,1),new N(y.string,"/",1),new N(y.map,1/0,1),new N(y.string,"bytes",5),new N(y.string,e,e.length),new N(y.break,void 0,1),new N(y.break,void 0,1)]}function Qr(r){return _f(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function CC(r){return _f(new Uint8Array(r))}function kC(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function PC(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var RC={typeEncoders:{Object:_C,Buffer:_f,Uint8Array:_f,Int8Array:Qr,Uint16Array:Qr,Int16Array:Qr,Uint32Array:Qr,Int32Array:Qr,Float32Array:Qr,Float64Array:Qr,Uint8ClampedArray:Qr,BigInt64Array:Qr,BigUint64Array:Qr,DataView:Qr,ArrayBuffer:CC,undefined:kC,number:PC}},Bg=class extends sa{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(y.equals(e.type,y.map)){let t=this._next();if(y.equals(t.type,y.string)&&t.value==="/"){let n=this._next();if(y.equals(n.type,y.string)){let o=this._next();if(!y.equals(o.type,y.break))throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new N(y.tag,42,0)}if(y.equals(n.type,y.map)){let o=this._next();if(y.equals(o.type,y.string)&&o.value==="bytes"){let s=this._next();if(y.equals(s.type,y.string)){for(let a=0;a<2;a++){let c=this._next();if(!y.equals(c.type,y.break))throw new Error("Invalid encoded Bytes form")}let i=rt.decode(`m${s.value}`);return new N(y.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},Ug={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Ug.tags[42]=G.parse;var LC="dag-json",Fg=297,Jy=r=>Og(r,RC),e9=r=>{let e=TC(r),t=Object.assign(Ug,{tokenizer:new Bg(e,Ug)});return Mg(e,t)},DC=r=>NC.decode(Jy(r));var NC=new TextDecoder,OC=r=>e9(MC.encode(r)),MC=new TextEncoder;var zg={};et(zg,{code:()=>Wg,createLink:()=>u9,createNode:()=>l9,decode:()=>jC,encode:()=>YC,name:()=>GC,prepare:()=>Hg,validate:()=>qg});var BC=new TextDecoder;function Kg(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function Cf(r,e){let t;[t,e]=Kg(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function t9(r,e){let t;return[t,e]=Kg(r,e),[t&7,t>>3,e]}function UC(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=t9(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Cf(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=Cf(r,n),e.Name=BC.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=Kg(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function r9(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=t9(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=Cf(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Cf(r,t),n.push(UC(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var o9=new TextEncoder,n9=2**32,FC=2**31;function $C(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=cl(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=o9.encode(r.Name);t-=n.length,e.set(n,t),t=cl(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=cl(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function s9(r){let e=VC(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=cl(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let o=r.Links.length-1;o>=0;o--){let s=$C(r.Links[o],t.subarray(0,n));n-=s,n=cl(t,n,s)-1,t[n]=18}return t}function KC(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+ia(t)}if(typeof r.Name=="string"){let t=o9.encode(r.Name).length;e+=1+t+ia(t)}return typeof r.Tsize=="number"&&(e+=1+ia(r.Tsize)),e}function VC(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+ia(t)}if(r.Links)for(let t of r.Links){let n=KC(t);e+=1+n+ia(n)}return e}function cl(r,e,t){e-=ia(t);let n=e;for(;t>=FC;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function ia(r){return r%2===0&&r++,Math.floor((HC(r)+6)/7)}function HC(r){let e=0;return r>=n9&&(r=Math.floor(r/n9),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+qC[r]}var qC=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var WC=["Data","Links"],zC=["Hash","Name","Tsize"],Vg=new TextEncoder;function a9(r,e){if(r===e)return 0;let t=r.Name?Vg.encode(r.Name):[],n=e.Name?Vg.encode(e.Name):[],o=t.length,s=n.length;for(let i=0,a=Math.min(o,s);i<a;++i)if(t[i]!==n[i]){o=t[i],s=n[i];break}return o<s?-1:s<o?1:0}function i9(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function c9(r){if(typeof r.asCID=="object"){let t=G.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=G.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=G.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=G.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function Hg(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=Vg.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(c9),e.Links.sort(a9);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function qg(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!i9(r,WC))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!i9(t,zC))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&a9(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function l9(r,e=[]){return Hg({Data:r,Links:e})}function u9(r,e,t){return c9({Hash:t,Name:r,Tsize:e})}function d9(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var GC="dag-pb",Wg=112;function YC(r){qg(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),s9(e)}function jC(r){let e=d9(r),t=r9(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=G.decode(o.Hash)}catch{}if(!s.Hash)throw new Error("Invalid Hash field found in link, expected CID");return o.Name!==void 0&&(s.Name=o.Name),o.Tsize!==void 0&&(s.Tsize=o.Tsize),s})),n}function aa(r){return r?.then!=null}function f9(r=[],e){let t={[Wg]:zg,[Mn]:fs,[Lg]:Dg,[Fg]:$g,[l2]:Nu};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);aa(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new ol(`Could not load codec for ${n}`)}}function h9(r=[],e){let t={[ze.code]:ze,[Mu.code]:Mu,[dt.code]:dt};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);aa(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new nl(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var Rr=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Jn=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:o}of e)await this.put(n,o,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var kf=0,ca=class extends Error{static name="IdentityHashDigestTooLongError";name="IdentityHashDigestTooLongError"},Pf=class extends Jn{child;maxDigestLength;constructor(e,t){super(),this.child=e,this.maxDigestLength=t?.maxDigestLength}put(e,t,n){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return n?.signal?.throwIfAborted(),e}return this.child==null?(n?.signal?.throwIfAborted(),e):this.child.put(e,t,n)}async*get(e,t){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted(),yield e.multihash.digest;return}if(this.child==null)throw t?.signal?.throwIfAborted(),new Rr;yield*this.child.get(e,t)}has(e,t){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return t?.signal?.throwIfAborted(),!0}return this.child==null?(t?.signal?.throwIfAborted(),!1):this.child.has(e,t)}delete(e,t){if(e.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted();return}if(this.child!=null)return this.child.delete(e,t)}async*getAll(e){this.child!=null&&(yield*this.child.getAll(e)),e?.signal?.throwIfAborted()}};function XC(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var la=XC;function QC(r){return r[Symbol.asyncIterator]!=null}function ZC(r,e){let t=0;if(QC(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var Zr=ZC;function JC(r){return r[Symbol.asyncIterator]!=null}function p9(r){return r?.then!=null}function ek(r,e){let t=0;if(JC(r))return(async function*(){for await(let c of r){let l=e(c,t++);p9(l)&&await l,yield c}})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i?.then=="function")return(async function*(){await i,yield o;for(let c of n){let l=e(c,t++);p9(l)&&await l,yield c}})();let a=e;return(function*(){yield o;for(let c of n)a(c,t++),yield c})()}var Gg=ek;var tk=128,ua=class{child;getHasher;log;logger;blockBrokers;constructor(e,t={}){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.blockBrokers=e.blockBrokers,this.child=new Pf(e.blockstore,{maxDigestLength:t.maxIdentityHashDigestLength??tk}),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new H("blocks:put:duplicate",e)),e):(n.onProgress?.(new H("blocks:put:providers:notify",e)),await Promise.all(this.blockBrokers.map(async o=>o.announce?.(e,n))),n.onProgress?.(new H("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Zr(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new H("blocks:put-many:duplicate",s)),!i}),o=Gg(n,async({cid:s})=>{t.onProgress?.(new H("blocks:put-many:providers:notify",s)),await Promise.all(this.blockBrokers.map(async i=>i.announce?.(s,t)))});t.onProgress?.(new H("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async*get(e,t={}){let n=await this.child.has(e,t),o=t.offline===!0;if(!n){if(o)throw new tl("The block was present in the blockstore and the node is running offline so cannot fetch it");let s=await this.getHasher(e.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new H("blocks:get:providers:get",e));let i=await m9(e,this.blockBrokers,s,{...t,log:this.log});t.onProgress?.(new H("blocks:get:blockstore:put",e)),await this.child.put(e,i,t),t.onProgress?.(new H("blocks:get:providers:notify",e)),await Promise.all(this.blockBrokers.map(async a=>a.announce?.(e,t))),yield i;return}t.onProgress?.(new H("blocks:get:blockstore:get",e)),yield*this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new H("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(Gg(e,async n=>{let o=await this.child.has(n,t),s=t.offline===!0;if(!o){if(s)throw new tl("The block was present in the blockstore and the node is running offline so cannot fetch it");let i=await this.getHasher(n.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new H("blocks:get-many:providers:get",n));let a=await m9(n,this.blockBrokers,i,{...t,log:this.log});t.onProgress?.(new H("blocks:get-many:blockstore:put",n)),await this.child.put(n,a,t),t.onProgress?.(new H("blocks:get-many:providers:notify",n)),await Promise.all(this.blockBrokers.map(async c=>c.announce?.(n,t)))}}))}async delete(e,t={}){t.onProgress?.(new H("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new H("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany((async function*(){for await(let n of e)yield n})(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new H("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}};async function m9(r,e,t,n){let o=nk(r,t),s=new AbortController,i=le([s.signal,n.signal]);s.signal;let a=[];for(let c of e)rk(c)&&a.push(c);if(a.length===0)throw new Hs(`No block brokers capable of retrieving blocks are configured, the CID ${r} cannot be fetched from the network`);try{return await Promise.any(a.map(async c=>{try{let l=!1,d=await c.retrieve(r,{...n,signal:i,validateFn:async u=>{await o(u),n.signal?.throwIfAborted(),l=!0}});return l||(await o(d),n.signal?.throwIfAborted()),d}catch(l){throw n.log.error("could not retrieve verified block for %c from %s - %e",r,c.name,l),l}}))}catch(c){throw new of(c.errors,`Failed to load block for ${r}`)}finally{s.abort(),i.clear()}}function rk(r){return typeof r.retrieve=="function"}var nk=(r,e)=>{if(e==null)throw new A(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,o=e.digest(t,{truncate:r.multihash.digest.byteLength});if(aa(o)?n=await o:n=o,!ee(n.digest,r.multihash.digest))throw new bo("Hash of downloaded block did not match multihash from passed CID")}};var Rf=class extends ua{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async addPeer(e,t){await Promise.all(this.blockBrokers.map(n=>n.addPeer(e,t)))}async put(e,t,n={}){let o=le([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async*get(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=le([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=le([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=le([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};var Lf=class extends ua{started;constructor(e,t={}){super(e,t),this.started=!1}isStarted(){return this.started}async start(){await at(this.child,...this.blockBrokers),this.started=!0}async stop(){await lt(this.child,...this.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){if(this.blockBrokers.length===0)throw new Hs("No block brokers configured");let n=this.blockBrokers.map(o=>o.createSession?.(t)).filter(o=>o!=null);if(n.length===0)throw new Hs(`No configured block brokers support sessions - tried ${this.blockBrokers.map(o=>o.name).join(", ")}`);return new Rf({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}};var zs=class extends ie{initialPeerSearchComplete;requests;logName;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;cidPeerFilterSize;constructor(e,t){super(),this.logName=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.logName),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.cidPeerFilterSize=t.cidPeerFilterSize??100,this.providers=[],this.evictionFilter=Et(this.maxProviders),this.initialProviders=[...t.providers??[]]}async retrieve(e,t={}){let n=rt.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o.observers++,o.promise;let s=fe(),i={promise:s.promise,observers:1,queryFilter:Et(this.cidPeerFilterSize)};this.requests.set(n,i);let a=!1;this.initialPeerSearchComplete==null&&(a=!0,this.log=this.logger.forComponent(`${this.logName}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));let c=!1,l=new St({concurrency:this.maxProviders});l.addEventListener("failure",f=>{this.log.error("error querying provider %s, evicting from session - %e",f.detail.job.options.provider,f.detail.error),this.evict(f.detail.job.options.provider)}),l.addEventListener("success",f=>{c=!0,s.resolve(f.detail.result)}),l.addEventListener("idle",()=>{if(c){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let f=0;f<this.minProviders&&this.providers.length!==0;f++){let h=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(h)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),s.resolve(await this.retrieve(e,t))}).catch(f=>{this.log.error("could not find new providers for %c - %e",e,f),s.reject(f)})});let d=f=>{let h=this.toFilterKey(f.detail);i.queryFilter.has(h)||(i.queryFilter.add(h),this.emitFoundProviderProgressEvent(e,f.detail,t),l.add(async()=>this.queryProvider(e,f.detail,t),{provider:f.detail}).catch(p=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,p)}))};if(this.addEventListener("provider",d),a)try{await Pe(this.initialPeerSearchComplete,t.signal),a&&this.log("found initial session peers for %c",e)}catch(f){throw a&&this.log("failed to find initial session peers for %c - %e",e,f),this.requests.delete(n),i.observers>1&&s.reject(f),f}Promise.all([...this.providers].filter(f=>{let h=this.toFilterKey(f),p=i.queryFilter.has(h);return p||i.queryFilter.add(this.toFilterKey(f)),!p}).map(async f=>l.add(async()=>this.queryProvider(e,f,t),{provider:f}))).catch(f=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,f)});let u=()=>{s.reject(new Vt(t.signal?.reason??"Session aborted")),l.abort()};t.signal?.addEventListener("abort",u);try{return await Pe(s.promise,t.signal)}finally{this.removeEventListener("provider",d),t.signal?.removeEventListener("abort",u),l.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toFilterKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toFilterKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async addPeer(e,t){let n=await this.convertToProvider(e,"manually-added",t);n==null||this.hasProvider(n)||(this.providers.push(n),this.safeDispatchEvent("provider",{detail:n}))}async findProviders(e,t,n){let o=fe(),s=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c - %d initial providers",t,this.maxProviders,e,this.initialProviders.length),this.initialProviders.length>0)for(;s<t&&this.initialProviders.length>0;){let i=this.initialProviders.pop();if(i==null)break;let a=await this.convertToProvider(i,"manual",n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),s++,s===t&&(this.log("session is ready with %d peer(s), only initial peers present",t),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(s<this.maxProviders)for await(let i of this.findNewProviders(e,n)){if(s===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(i)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(i),this.safeDispatchEvent("provider",{detail:i}),s++,s===t&&(this.log("session is ready with %d peer(s), new peers present",t),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(this.log("found %d/%d new session peers",s,this.maxProviders),s<t)throw new rl(`Found ${s} of ${t} ${this.name} providers for ${e}`)}).catch(i=>{this.log.error("error searching routing for potential session peers for %c - %e",e,i),o.reject(i)}),o.promise}};var Df=class{libp2p;blockstore;datastore;events;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??e.libp2p.logger,this.log=this.logger.forComponent("helia"),this.getHasher=h9(e.hashers,e.loadHasher),this.getCodec=f9(e.codecs,e.loadCodec),this.dns=e.dns??$u(),this.metrics=e.metrics,this.libp2p=e.libp2p,this.events=new ie;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,libp2p:this.libp2p,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new cf(t,{routers:(e.routers??[]).flatMap(o=>{typeof o=="function"&&(o=o(t));let s=[o],i=ok(o);i!=null&&s.push(i);let a=sk(o);return a!=null&&s.push(a),s}),providerLookupConcurrency:e.providerLookupConcurrency}),t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new Lf(t,e);this.pins=new af(e.datastore,n,this.getCodec),this.blockstore=new If(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore}async start(){await Xy(this.datastore),await at(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("start",{detail:this}))}async stop(){await lt(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("stop",{detail:this}))}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await er(o.deleteMany((async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new H("helia:gc:deleted",s))}catch(i){n.log.error("error during gc - %e",i),e.onProgress?.(new H("helia:gc:error",i))}})()))}finally{t()}this.log("gc finished")}};function ok(r){return r?.[Dn]}function sk(r){return r?.[On]}function ik(r){return r[Symbol.asyncIterator]!=null}function ak(r,e){let t=0;if(ik(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Lr=ak;function ck(r){return r[Symbol.asyncIterator]!=null}function lk(r,e){return ck(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Ho=lk;var ll="/ipfs/bitswap/1.2.0";var Ye;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(Ye||(Ye={}));var Yg;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Yg||(Yg={}));(function(r){r.codec=()=>We(Yg)})(Ye||(Ye={}));var da;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),Ye.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:ae(0),priority:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.priority=t.int32();break}case 3:{s.cancel=t.bool();break}case 4:{s.wantType=Ye.codec().decode(t);break}case 5:{s.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(da||(da={}));var Nf;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let s of t.entries)n.uint32(10),da.codec().encode(s,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={entries:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(o.limits?.entries!=null&&s.entries.length===o.limits.entries)throw new Ne('Decode error - map field "entries" had too many elements');s.entries.push(da.codec().decode(t,t.uint32(),{limits:o.limits?.entries$}));break}case 2:{s.full=t.bool();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Nf||(Nf={}));var fa;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={prefix:ae(0),data:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.prefix=t.bytes();break}case 2:{s.data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(fa||(fa={}));var Dr;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(Dr||(Dr={}));var Of;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(Of||(Of={}));(function(r){r.codec=()=>We(Of)})(Dr||(Dr={}));var ha;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&Of[t.type]!==0&&(n.uint32(16),Dr.codec().encode(t.type,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:ae(0),type:Dr.HaveBlock},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.type=Dr.codec().decode(t);break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(ha||(ha={}));var Gs;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),Nf.codec().encode(t.wantlist,n)),t.blocks!=null)for(let s of t.blocks)n.uint32(26),fa.codec().encode(s,n);if(t.blockPresences!=null)for(let s of t.blockPresences)n.uint32(34),ha.codec().encode(s,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={blocks:[],blockPresences:[],pendingBytes:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.wantlist=Nf.codec().decode(t,t.uint32(),{limits:o.limits?.wantlist});break}case 3:{if(o.limits?.blocks!=null&&s.blocks.length===o.limits.blocks)throw new Ne('Decode error - map field "blocks" had too many elements');s.blocks.push(fa.codec().decode(t,t.uint32(),{limits:o.limits?.blocks$}));break}case 4:{if(o.limits?.blockPresences!=null&&s.blockPresences.length===o.limits.blockPresences)throw new Ne('Decode error - map field "blockPresences" had too many elements');s.blockPresences.push(ha.codec().decode(t,t.uint32(),{limits:o.limits?.blockPresences$}));break}case 5:{s.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Gs||(Gs={}));function g9(r,e){for(let[t,n]of e.wantlist.entries()){let o=r.wantlist.get(t);o!=null&&(o.priority>n.priority&&(n.priority=o.priority),n.cancel=n.cancel??o.cancel,n.wantType=n.wantType??o.wantType,n.sendDontHave=n.sendDontHave??o.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var Mf=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var uk=4193648,dk=uk+16;function*y9(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],o=[...r.blocks.values()],s=0,i=0,a=0,c=!1;for(;;){let l={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},d=Gs.encode(l).byteLength,{added:u,hasMore:f,newSize:h}=jg(o,l.blocks,a,e,d,fk);a+=u,d=h;let p=f;({added:u,hasMore:f,newSize:h}=jg(n,l.blockPresences,i,e,d,hk)),i+=u,d=h;let g=f;if({added:u,hasMore:f,newSize:h}=jg(t,l.wantlist.entries,s,e,d,pk),s+=u,d=h,c=!p&&!g&&!f,c||(l.wantlist.full=!1),yield Gs.encode(l),c)break}}function jg(r,e,t,n,o,s){let i=0,a=!1;for(let c=t;c<r.length;c++){let l=r[c],d=s(l);if(d>dk)throw new Mf("Cannot send block as after encoding it is over the max message size");let u=o+d;if(u>n){a=!0;break}e.push(l),i++,o=u}return{hasMore:a,added:i,newSize:o}}function fk(r){return Xg(3,fa.encode(r))}function hk(r){return Xg(4,ha.encode(r))}function pk(r){return Xg(1,da.encode(r))}function Xg(r,e){let t=he(r),n=he(e.byteLength);return t+n+e.byteLength}var Bf=class extends ie{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[ll],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new It({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e,t){this.running&&Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",e.protocol,t.remotePeer);let n=()=>{e.status==="open"?e.abort(new un(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",e.status)},o=AbortSignal.timeout(this.messageReceiveTimeout);o.addEventListener("abort",n),await e.close({signal:o});let s=vt();e.addEventListener("message",i=>{s.push(i.data)}),e.addEventListener("remoteCloseWrite",()=>{s.end()}),e.addEventListener("close",i=>{i.error!=null&&s.end(i.error)});for await(let i of Ks(s,{maxDataLength:this.maxIncomingMessageSize}))try{let a=Gs.decode(i);this.log("incoming new bitswap %s message from %p on stream",e.protocol,t.remotePeer,e.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:t.remotePeer,message:a}}),o.removeEventListener("abort",n),o=AbortSignal.timeout(this.messageReceiveTimeout),o.addEventListener("abort",n)}catch(a){this.log.error("error reading incoming bitswap message from %p on stream - %e",t.remotePeer,e.id,a),e.abort(a);break}}).catch(n=>{this.log.error("error handling incoming stream from %p - %e",t.remotePeer,n),e.abort(n)})}async*findProviders(e,t){t?.onProgress?.(new H("bitswap:find-providers",e));for await(let n of this.routing.findProviders(e,t)){if(!await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})){this.log("skipping peer %p as they are not dialable - %a",n.id,n.multiaddrs);continue}t?.onProgress?.(new H("bitswap:found-provider",{type:"bitswap",cid:e,provider:n,routing:n.routing})),yield n}}async findAndConnect(e,t){t?.providers!=null&&await Promise.all(t.providers.map(async n=>this.connectTo(n).catch(o=>{this.log.error("could not connect to supplied provider - %e",o)}))),await er(Lr(Ho(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let o=this.sendQueue.queue.find(s=>e.equals(s.options.peerId)&&s.status==="queued");if(o!=null){o.options.message=g9(o.options.message,t),await o.join({signal:n?.signal});return}await this.sendQueue.add(async s=>{let i=s?.message;if(i==null)throw new A("No message to send");this.log("sendMessage to %p",e),s?.onProgress?.(new H("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,ll,s);await a.closeRead();try{for(let c of y9(i,this.maxOutgoingMessageSize))a.send(Qn.single(c))||await a.onDrain(s);await a.close(s)}catch(c){s?.onProgress?.(new H("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p - %e",e,c),a.abort(c)}this._updateSentStats(i.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new Ur("Network isn't running");t?.onProgress?.(new H("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),Xt(this.libp2p,"peer:identify",t?.signal,{filter:o=>{if(!o.detail.peerId.equals(e))return!1;if(o.detail.protocols.includes(ll))return!0;throw new pi(`${e} did not support ${ll}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};var w9=Symbol.for("nodejs.util.inspect.custom"),Sk=114,ul=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[ku]=!0;toString(){return this.string==null&&(this.string=De.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return G.createV1(Sk,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ee(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ee(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[w9](){return`PeerId(${this.toString()})`}},dl=class extends ul{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},fl=class extends ul{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},hl=class extends ul{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Ak=2336,pl=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=dt.digest(C(this.url))}[w9](){return`PeerId(${this.url})`}[ku]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return G.createV1(Ak,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=R(e)),e.toString()===this.toString())}};var Ik=114,b9=2336;function Me(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ke(De.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Jr(G.parse(r));if(e==null)throw new A('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ke(e.decode(r))}return Ze(t)}function xn(r){if(r.type==="Ed25519")return new fl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new hl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new dl({multihash:r.toCID().multihash,publicKey:r});throw new Fr}function E9(r){return xn(r.publicKey)}function Ze(r){if(_k(r))return new dl({multihash:r});if(Tk(r))try{let e=sd(r);if(e.type==="Ed25519")return new fl({multihash:r,publicKey:e});if(e.type==="secp256k1")return new hl({multihash:r,publicKey:e})}catch{let t=R(r.digest);return new pl(new URL(t))}throw new bo("Supplied PeerID Multihash is invalid")}function Jr(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Ik&&r.code!==b9)throw new Au("Supplied PeerID CID is invalid");if(r.code===b9){let e=R(r.multihash.digest);return new pl(new URL(e))}return Ze(r.multihash)}function Tk(r){return r.code===dt.code}function _k(r){return r.code===ze.code}function Ys(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Uf(r){let e=ke(De.decode(`z${r}`));return Ze(e)}var Ut=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ys(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Ys(this.map.values(),e=>e.key)}values(){return Ys(this.map.values(),e=>e.value)}get size(){return this.map.size}};var xr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ys(this.set.entries(),e=>{let t=Uf(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Uf(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ys(this.set.values(),e=>Uf(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function Qg(){return new xr}var Ff=class{filter;constructor(e,t){this.filter=Et(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function Zg(r,e=.001){return new Ff(r,e)}var Jg=class extends Ut{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function eo(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Jg({name:e,metrics:t}):n=new Ut,n}var to=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=rt.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=rt.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=rt.encode(e.multihash.bytes);this.blocks.set(n,t)}};function Ck(r){let e=new Uint8Array(r.reduce((n,o)=>n+he(o),0)),t=0;for(let n of r)e=Mt(n,e,t),t+=he(n);return e}var x9=Ck;function e3(r){return x9([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var $f=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;doNotResendBlockWindow;maxWantListSize;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024,this.doNotResendBlockWindow=t.doNotResendBlockWindow??5e3,this.maxWantListSize=t.maxWantListSize??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}removeExpiredWants(){this.wants.forEach((e,t)=>{e.expires!=null&&e.expires<Date.now()&&this.wants.delete(t)})}addWants(e){if(e==null)return;e.full===!0&&this.wants.forEach((n,o)=>{n.status==="want"&&this.wants.delete(o)});for(let n of e.entries){let o=G.decode(n.cid),s=R(o.multihash.bytes,"base64");if(n.cancel===!0)this.log("peer %p cancelled want of block for %c",this.peerId,o),this.wants.delete(s);else{n.wantType===Ye.WantHave?this.log("peer %p wanted block presence for %c",this.peerId,o):this.log("peer %p wanted block for %c",this.peerId,o);let i=this.wants.get(s);if(i!=null){let a=i.status==="sent"||i.status==="sending",c=i.wantType===Ye.WantHave&&(n.wantType==null||n.wantType===Ye.WantBlock);a&&c&&(i.status="want"),i.priority=n.priority,i.wantType=n.wantType??Ye.WantBlock,i.sendDontHave=n.sendDontHave??!1;continue}this.wants.set(s,{cid:o,priority:n.priority,wantType:n.wantType??Ye.WantBlock,sendDontHave:n.sendDontHave??!1,status:"want",created:Date.now()})}}let t=[...this.wants.entries()].filter(([n,o])=>o.status==="want");t.length>this.maxWantListSize&&this.truncateWants(t)}truncateWants(e){e=e.sort((n,o)=>n[1].created<o[1].created?-1:o[1].created<n[1].created?1:0).sort((n,o)=>n[1].haveBlock===!1?-1:o[1].haveBlock===!1?1:0).sort((n,o)=>n[1].priority<o[1].priority?-1:o[1].priority<n[1].priority?1:0);let t=e.length-this.maxWantListSize;for(let n=0;n<t;n++)this.wants.delete(e[n][0])}getWants(){return[...this.wants.values()]}hasWant(e){let t=R(e.multihash.bytes,"base64");return this.wants.has(t)}async sendBlocksToPeer(e){let t=new to,n=new Set;this.removeExpiredWants();let o=[...this.wants.entries()].filter(([s,i])=>i.status==="want");o.forEach(([s,i])=>{i.status="sending"});for(let[s,i]of o)try{let a=await Jd(this.blockstore.get(i.cid,e));if(i.status!=="sending")continue;i.wantType===Ye.WantHave?a.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:a,prefix:e3(i.cid)})):(this.log("sending have for %c",i.cid),t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:Dr.HaveBlock})):(this.log("sending block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:a,prefix:e3(i.cid)})),i.status="sent",i.expires=Date.now()+this.doNotResendBlockWindow}catch(a){if(a.name!=="NotFoundError")throw a;if(i.status="want",i.haveBlock=!1,this.log("do not have block for %c",i.cid),!i.sendDontHave||i.sentDoNotHave===!0)continue;i.sentDoNotHave=!0,t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:Dr.DoNotHaveBlock})}(t.blocks.size>0||t.blockPresences.size>0)&&(this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((s,i)=>s+i.data.byteLength,0)))}};var Kf=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;doNotResendBlockWindow;maxWantListSize;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.doNotResendBlockWindow=t.doNotResendBlockWindow,this.maxWantListSize=t.maxWantListSize,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=eo({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(o=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return t.removeExpiredWants(),t.getWants()}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);n==null&&(n=new $f({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock,doNotResendBlockWindow:this.doNotResendBlockWindow,maxWantListSize:this.maxWantListSize}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((o,s)=>o+s.data.byteLength,0)??0),n.removeExpiredWants(),n.addWants(t.wantlist),this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=[];for(let o of this.ledgerMap.values())o.hasWant(e)&&n.push(o);await Promise.all(n.map(async o=>o.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var t3=class extends zs{name="bitswap-session";wantList;network;libp2p;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network,this.libp2p=e.libp2p}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let o=await this.wantList.wantSessionBlock(e,t.peerId,n);if(this.log("%p %s %c",t,o.has?"has":"does not have",e),o.has&&o.block!=null)return o.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield{peerId:n.id,routing:n.routing}}toFilterKey(e){return e.peerId.toMultihash().bytes}equals(e,t){return e.peerId.equals(t.peerId)}async convertToProvider(e,t,n){if(Rt(e))return{peerId:e,routing:t};if(await this.libp2p.isDialable(e)!==!1)try{return{peerId:(await this.libp2p.dial(e,n)).remotePeer,routing:t}}catch{}}emitFoundProviderProgressEvent(e,t,n){n?.onProgress?.(new H("bitswap:found-provider",{type:"bitswap",cid:e,provider:{id:t.peerId,multiaddrs:[],routing:t.routing},routing:t.routing}))}};function v9(r,e){return new t3(r,e)}var Vf=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};function kk(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=hr(r);e.push(t),r=r.slice(he(t))}return e}var S9=kk;var Hf=class extends ie{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=eo({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=ot({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(o=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,o)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(o=>{this.log.error("error processing newly connected bitswap peer %p - %e",n.detail,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=R(e.multihash.bytes,"base64"),o=this.wants.get(n);o==null&&(o={cid:e,priority:t.priority??1,wantType:t.wantType??Ye.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,o)),o.wantType===Ye.WantHave&&t.wantType===Ye.WantBlock&&(o.wantType=Ye.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===Ye.WantBlock?(await Xt(this,"block",t?.signal,{filter:a=>ee(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await Xt(this,"presence",t?.signal,{filter:i=>ee(e.multihash.digest,i.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),o.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers - %e",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=fe(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,o=new to;for(let[s,i]of this.wants.entries())t.has(s)||i.cancel||(n.add(s),o.addWantlistEntry(i.cid,{cid:i.cid.bytes,priority:i.priority,wantType:i.wantType,cancel:i.cancel,sendDontHave:i.sendDontHave}));if(o.wantlist.size!==0)try{await this.network.sendMessage(e,o);for(let s of n)t.add(s)}catch(s){this.log.error("error sending full wantlist to new peer - %e",s)}})).catch(e=>{this.log.error("error sending messages - %e",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=R(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let o=new to;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:Ye.WantHave,priority:1}),await this.network.sendMessage(t,o),(await Xt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&ee(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:Ye.WantBlock})}async wantSessionBlock(e,t,n={}){let o=new to;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:Ye.WantBlock,priority:1}),await this.network.sendMessage(t,o),(await Xt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&ee(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=R(e.multihash.bytes,"base64"),o=this.wants.get(n);o!=null&&(o.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let o of t.blocks){if(o.prefix==null||o.data==null)continue;let s=S9(o.prefix),i=s[0],a=s[1],c=s[2],l=s[3],d=c===ze.code?ze:await this.hashLoader?.getHasher(c);if(d==null){this.log.error("unknown hash algorithm",c);continue}let u=d.digest(o.data,{truncate:l});u.then!=null&&(u=await u);let f=G.create(i===0?0:1,a,u);this.log("received block from %p for %c",e,f),this.safeDispatchEvent("block",{detail:{sender:e,cid:f,block:o.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:f,has:!0,block:o.data}});let h=R(f.multihash.bytes,"base64"),p=this.wants.get(h);p!=null&&(p.cancel=!0,n=!0)}for(let{cid:o,type:s}of t.blockPresences){let i=G.decode(o);this.log("received %s from %p for %c",s,e,i),this.safeDispatchEvent("presence",{detail:{sender:e,cid:i,has:s===Dr.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new to(!0);for(let[o,s]of this.wants.entries())s.cancel||(t.add(o),n.addWantlistEntry(s.cid,{cid:s.cid.bytes,priority:1,wantType:Ye.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(o){this.log.error("error sending full wantlist to new peer %p - %e",e,o)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var qf=class{log;logger;stats;network;blockstore;peerWantLists;wantList;libp2p;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.libp2p=e.libp2p,this.stats=new Vf(e),this.network=new Bf(e,t),this.peerWantLists=new Kf({...e,network:this.network},t),this.wantList=new Hf({...e,network:this.network},t)}createSession(e={}){return v9({wantList:this.wantList,network:this.network,logger:this.logger,libp2p:this.libp2p},e)}async want(e,t={}){let n=new AbortController,o=le([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:o}).catch(s=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c - %e",e,s)});try{let s=await this.wantList.wantBlock(e,{...t,signal:o});return t.onProgress?.(new H("bitswap:block",{cid:e,sender:s.sender})),s.block}finally{n.abort(),o.clear()}}async notify(e,t={}){await Promise.all([this.peerWantLists.receivedBlock(e,t),this.wantList.receivedBlock(e,t)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var A9=(r,e={})=>new qf(r,e);var r3=class{name="bitswap";bitswap;started;constructor(e,t={}){let{getHasher:n}=e;this.bitswap=A9(e,{hashLoader:{getHasher:async o=>n(o)},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}async announce(e,t){await this.bitswap.notify(e,t)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{name:"bitswap-session",addPeer:async(n,o)=>{await t.addPeer(n,o)},announce:async(n,o)=>{await this.bitswap.notify(n,o)},retrieve:async(n,o)=>t.retrieve(n,o)}}};function n3(r={}){return e=>new r3(e,r)}var Pk=[6,53,56,54,55];function I9(r){return C9("sni",r)?.value}function T9(r){let e=C9("tcp",r)?.value;return e==null?"":`:${e}`}function C9(r,e){return e.find(t=>t.name===r)}function _9(r){return r.some(({code:e})=>e===448)}function en(r,e){let t=k9[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var k9={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${en(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${en(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${en(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${en(t,e)}`},http:(r,e)=>{let t=_9(e),n=I9(e),o=T9(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=en(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return en(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return en(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=_9(e),n=I9(e),o=T9(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=en(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function qo(r,e){let n=q(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=k9[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&Pk.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var _e=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),se=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),P9=r=>({match:e=>r.match(e)===!1?e:!1}),ge=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),Ft=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),ve=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function Ce(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var Rk=se(421),R9=Ce(Rk),zf=se(54),Gf=se(55),Yf=se(56),s3=se(53),pX=Ce(zf,ge(se(421))),mX=Ce(Gf,ge(se(421))),gX=Ce(Yf,ge(se(421))),jf=Ce(Ft(s3,Yf,zf,Gf),ge(se(421))),L9=ve(se(4),ge(se(43))),D9=ve(ge(se(42)),se(41),ge(se(43))),i3=Ft(L9,D9),js=Ft(i3,s3,zf,Gf,Yf),N9=Ce(Ft(i3,ve(Ft(s3,Yf,zf,Gf),ge(se(421))))),a3=Ce(L9),c3=Ce(D9),O9=Ce(i3),l3=ve(js,se(6)),ml=ve(js,se(273)),Xs=Ce(ve(l3,ge(se(421)))),yX=Ce(ml),u3=ve(ml,_e(460),ge(se(421))),Xf=ve(ml,_e(461),ge(se(421))),Lk=Ft(u3,Xf),wX=Ce(u3),M9=Ce(Xf),o3=Ft(js,l3,ml,u3,Xf),B9=Ft(ve(o3,_e(477),ge(se(421)))),ro=Ce(B9),U9=Ft(ve(o3,_e(478),ge(se(421))),ve(o3,_e(448),ge(se(449)),_e(477),ge(se(421)))),Qs=Ce(U9),F9=ve(ml,_e(280),ge(se(466)),ge(se(466)),ge(se(421))),gl=Ce(F9),$9=ve(Xf,_e(465),ge(se(466)),ge(se(466)),ge(se(421))),d3=Ce($9),Wf=Ft(B9,U9,ve(l3,ge(se(421))),ve(Lk,ge(se(421))),ve(js,ge(se(421))),F9,$9,se(421)),pa=Ce(Wf),Dk=ve(ge(Wf),_e(290),P9(_e(281)),ge(se(421))),yt=Ce(Dk),Nk=Ft(ve(Wf,_e(290),_e(281),ge(se(421))),ve(Wf,_e(281),ge(se(421))),ve(_e(281),ge(se(421)))),yl=Ce(Nk),Ok=Ft(ve(js,se(6),_e(480),ge(se(421))),ve(js,_e(480),ge(se(421)))),K9=Ce(Ok),Mk=ve(js,Ft(ve(se(6,"443"),_e(480)),ve(se(6),_e(443)),ve(se(6),_e(448),_e(480)),ve(_e(448),_e(480)),_e(448),_e(443)),ge(se(421))),V9=Ce(Mk),Bk=Ft(ve(se(777),ge(se(421)))),bX=Ce(Bk),Uk=Ft(ve(se(400),ge(se(421)))),EX=Ce(Uk);function f3(r,e,t){return r.filter(n=>{if(V9.matches(n)||e&&K9.matches(n))return t||jf.matches(n)?!0:Qe(n)===!1;if(!e&&t){let{host:o}=oe(n);if(o==="127.0.0.1"||o==="localhost"||o.endsWith(".localhost"))return!0}return!1})}async function*Qf(r,e,t,n,o,s={}){for await(let i of e.findProviders(r,s)){let a=f3(i.multiaddrs,n,o);if(a.length===0)continue;let c=new URL(qo(a[0]));yield new ma(c,{logger:t,transformRequestInit:s.transformRequestInit,routing:i.routing})}}async function H9(r,e,t){let{signal:n,log:o}=t??{},s=r.headers.get("content-length");if(s!=null){let c=parseInt(s,10);if(c>e)throw o?.error("content-length header (%d) is greater than the limit (%d)",c,e),r.body!=null&&await r.body.cancel().catch(l=>{o?.error("error cancelling response body after content-length check - %e",l)}),new Error(`Content-Length header (${c}) is greater than the limit (${e}).`)}let i=r.body?.getReader();if(i==null)throw new Error("Response body is not readable");let a=new X;try{for(;;){if(n?.aborted===!0)throw new Error("Response body read was aborted.");let{done:c,value:l}=await i.read();if(c)break;if(a.append(l),a.byteLength>e)throw new Error(`Response body is greater than the limit (${e}), received ${a.byteLength} bytes.`)}}finally{i.cancel().catch(c=>{o?.error("error cancelling reader - %e",c)}).finally(()=>{i.releaseLock()})}return a.subarray()}var ma=class{url;#e=0;#t=0;#r=0;#a=0;#c=new Map;log;transformRequestInit;routing;constructor(e,{logger:t,transformRequestInit:n,routing:o}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.host}`),this.routing=o}#m(e){let t=e.multihash.bytes;return rt.encode(t)}async getRawBlock(e,{signal:t,maxSize:n=q9}={}){let o=new URL(this.url.toString());if(o.pathname=`/ipfs/${e.toString()}`,o.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let s=this.#m(e),i=new AbortController,a=()=>{i.abort()};t?.addEventListener("abort",a);try{let c=this.#c.get(s);if(c==null){this.#e++;let l={signal:i.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},d=this.transformRequestInit!=null?await this.transformRequestInit(l):l,u=new Headers(d.headers);this.log(`sending request
|
|
13
|
+
${e}[Error list was empty]`,t.trim()}return Ry(r,e)}rr.formatters.e=r=>r==null?"undefined":Dy(r);function Q_(r){let e=()=>{};return e.enabled=!1,e.color="",e.diff=0,e.log=()=>{},e.namespace=r,e.destroy=()=>!0,e.extend=()=>e,e}function ra(r){return{forComponent(e){return Pr(e,r)}}}function Pr(r,e){let t=Q_(`${r}:trace`);return rr.enabled(`${r}:trace`)&&rr.names.map(n=>n.toString()).find(n=>n.includes(":trace"))!=null&&(t=rr(`${r}:trace`,e)),Object.assign(rr(r,e),{error:rr(`${r}:error`,e),trace:t,newScope:n=>Pr(`${r}:${n}`,e)})}function Ly(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var Ny=Symbol.for("sindresorhus/unlimited-timeout#brand");function Oy(r,e,...t){if(typeof r!="function")throw new TypeError("Expected callback to be a function");e??=0,e=Number(e);let n=!1,o={[Ny]:!0,id:void 0,cleared:!1,ref(){return n=!1,o.id?.ref?.(),o},unref(){return n=!0,o.id?.unref?.(),o}};if(e===Number.POSITIVE_INFINITY||e>Number.MAX_SAFE_INTEGER)return o;(!Number.isFinite(e)||e<0)&&(e=0);let s=performance.now()+e,i=a=>{o.cleared||(a<=2147483647?(o.id=globalThis.setTimeout(()=>{o.cleared||r(...t)},a),n&&o.id?.unref?.()):(o.id=globalThis.setTimeout(()=>{let c=performance.now(),l=Math.max(0,s-c);i(l)},2147483647),n&&o.id?.unref?.()))};return i(e),o}function My(r){!r||typeof r!="object"||!r[Ny]||(r.cleared=!0,r.id!==void 0&&(globalThis.clearTimeout(r.id),r.id=void 0))}var Z_=new WeakMap;function J_({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(o.reason);let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(o.reason)},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,h)=>{i=()=>{d(),f(n)},a=h,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),Z_.set(u,()=>{c(s),s=null,i()}),u}}var eC=J_({setTimeout:Oy,clearTimeout:My}),By=eC;var It=class extends St{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Qd=class extends St{constructor(e={}){super({...e,sort:(t,n)=>t.options.priority>n.options.priority?-1:t.options.priority<n.options.priority?1:0})}};var na=class{memoryStorage;points;duration;blockDuration;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new mg}consume(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);if(i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i.consumedPoints>this.points)throw this.blockDuration>0&&i.consumedPoints<=this.points+t&&(i=this.memoryStorage.set(o,i.consumedPoints,this.blockDuration)),new pd("Rate limit exceeded",i);return i}penalty(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}reward(e,t=1,n={}){let o=this.getKey(e),s=this._getKeySecDuration(n),i=this.memoryStorage.incrby(o,-t,s);return i.remainingPoints=Math.max(this.points-i.consumedPoints,0),i}block(e,t){let n=t*1e3,o=this.points+1;return this.memoryStorage.set(this.getKey(e),o,t),{remainingPoints:0,msBeforeNext:n===0?-1:n,consumedPoints:o,isFirstInDuration:!1}}set(e,t,n=0){let o=(n>=0?n:this.duration)*1e3;return this.memoryStorage.set(this.getKey(e),t,n),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:t,isFirstInDuration:!1}}get(e){let t=this.memoryStorage.get(this.getKey(e));return t!=null&&(t.remainingPoints=Math.max(this.points-t.consumedPoints,0)),t}delete(e){this.memoryStorage.delete(this.getKey(e))}_getKeySecDuration(e){return e?.customDuration!=null&&e.customDuration>=0?e.customDuration:this.duration}getKey(e){return this.keyPrefix.length>0?`${this.keyPrefix}:${e}`:e}parseKey(e){return e.substring(this.keyPrefix.length)}},mg=class{storage;constructor(){this.storage=new Map}incrby(e,t,n){let o=this.storage.get(e);if(o!=null){let s=o.expiresAt!=null?o.expiresAt.getTime()-new Date().getTime():-1;return o.expiresAt==null||s>0?(o.value+=t,{remainingPoints:0,msBeforeNext:s,consumedPoints:o.value,isFirstInDuration:!1}):this.set(e,t,n)}return this.set(e,t,n)}set(e,t,n){let o=n*1e3,s=this.storage.get(e);s!=null&&clearTimeout(s.timeoutId);let i={value:t,expiresAt:o>0?new Date(Date.now()+o):void 0};return this.storage.set(e,i),o>0&&(i.timeoutId=setTimeout(()=>{this.storage.delete(e)},o),i.timeoutId.unref!=null&&i.timeoutId.unref()),{remainingPoints:0,msBeforeNext:o===0?-1:o,consumedPoints:i.value,isFirstInDuration:!0}}get(e){let t=this.storage.get(e);if(t!=null)return{remainingPoints:0,msBeforeNext:t.expiresAt!=null?t.expiresAt.getTime()-new Date().getTime():-1,consumedPoints:t.value,isFirstInDuration:!1}}delete(e){let t=this.storage.get(e);return t!=null?(t.timeoutId!=null&&clearTimeout(t.timeoutId),this.storage.delete(e),!0):!1}};function oa(r,e,t){let n,o,s=!1;function i(){let l={signal:o.signal},d;t?.timeout!=null&&(d=le([o.signal,AbortSignal.timeout(t.timeout)]),l.signal=d),s=!0,Promise.resolve().then(async()=>{await r(l)}).catch(()=>{}).finally(()=>{d!=null&&(d.aborted?d.clear():d.addEventListener("abort",()=>{d.clear()},{once:!0})),s=!1,!o.signal.aborted&&(n=setTimeout(i,e))})}let a=Wn(i,t?.debounce??100),c=!1;return{setInterval:l=>{e!==l&&(e=l,n!=null&&(clearTimeout(n),n=setTimeout(i,e)))},setTimeout:l=>{t??={},t.timeout=l},run:()=>{s||(clearTimeout(n),a())},start:()=>{c||(c=!0,o=new AbortController,o.signal,t?.runImmediately===!0?queueMicrotask(()=>{i()}):n=setTimeout(i,e))},stop:()=>{clearTimeout(n),o?.abort(),c=!1}}}var gg=class extends Map{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function ot(r){let{name:e,metrics:t}=r,n;return t!=null?n=new gg({name:e,metrics:t}):n=new Map,n}var Zn="/",Uy=new TextEncoder().encode(Zn),Zd=Uy[0],Fe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=C(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Zd)throw new Error("Invalid key")}toString(e="utf8"){return R(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Zn))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=Uy),this._buf[0]!==Zd){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Zd,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Zd;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let s=t[o],i=n[o];if(s<i)return!0;if(s>i)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(Zn).slice(1)}type(){return tC(this.baseNamespace())}name(){return rC(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Zn)||(e+=Zn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Zn):new r(e.slice(0,-1).join(Zn))}child(e){return this.toString()===Zn?e:e.toString()===Zn?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...nC(e.map(t=>t.namespaces()))])}};function tC(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function rC(r){let e=r.split(":");return e[e.length-1]}function nC(r){return[].concat(...r)}function oC(r){return r[Symbol.asyncIterator]!=null}function sC(r){if(oC(r))return(async()=>{let n=new Uint8Array(0);for await(let o of r)n=Oe([n,o],n.length+o.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Oe(e,t)}var Jd=sC;function ef({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*iC(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t],s=G.asCID(n);s!=null?yield[o.join("/"),s]:typeof n=="object"&&(yield*yg(n,o))}else{let t=G.asCID(e);t!=null?yield[r.join("/"),t]:yield*yg(e,r)}}function*yg(r,e){if(r==null||r instanceof Uint8Array)return;let t=G.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,o]of Object.entries(r)){let s=[...e,n];yield*iC(s,o)}}function*aC(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let o=[...r,t];yield o.join("/"),typeof n=="object"&&G.asCID(n)==null&&(yield*wg(n,o))}else yield*wg(e,r)}function*wg(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let o=[...e,t];yield o.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&G.asCID(n)==null&&(yield*aC(o,n))}}function cC(r,e){let t=r;for(let[n,o]of e.entries()){if(t=t[o],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(i=>`[${JSON.stringify(i)}]`).join("")}`);let s=G.asCID(t);if(s!=null)return{value:s,remaining:e.slice(n+1).join("/")}}return{value:t}}var bg=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:ef(),bytes:ef(),value:ef(),asBlock:ef()})}links(){return yg(this.value,[])}tree(){return wg(this.value,[])}get(e="/"){return cC(this.value,e.split("/").filter(Boolean))}};function Fy({bytes:r,cid:e,value:t,codec:n}){let o=t!==void 0?t:n?.decode(r);if(o===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new bg({cid:e,bytes:r,value:o})}var tf=class extends Error{static name="AlreadyPinnedError";name="AlreadyPinnedError"},el=class extends Error{static name="BlockPinnedError";name="BlockPinnedError"},rf=class extends Error{static name="InvalidDatastoreVersionError";name="InvalidDatastoreVersionError"},Hs=class extends Error{static name="InvalidConfigurationError";name="InvalidConfigurationError"},nf=class extends AggregateError{static name="GetFailedError";name="GetFailedError"},of=class extends AggregateError{static name="LoadBlockFailedError";name="LoadBlockFailedError"},tl=class extends Error{static name="BlockNotFoundWhileOfflineError";name="BlockNotFoundWhileOfflineError"};var Vy="/pin/",$y="/pinned-block/",Eg=Ar,Ky=1;function sf(r){return r.version===0&&(r=r.toV1()),new Fe(`${Vy}${r.toString(Eg)}`)}var af=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=sf(e);if(await this.datastore.has(n))throw new tf("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new A("Depth must be greater than or equal to 0");let s=new St({concurrency:Ky});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>ee(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let i={depth:o,metadata:t.metadata??{}};await this.datastore.put(n,Ko(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=await this.getCodec(e.code),s=await Jd(this.blockstore.get(e,n)),i=Fy({bytes:s,cid:e,codec:o});yield e;for(let[,a]of i.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Fe(`${$y}${Eg.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=br(await this.datastore.get(o,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(s)){if(s.pinCount===0&&await this.datastore.has(o)){await this.datastore.delete(o);return}await this.datastore.put(o,Ko(s),n),n.onProgress?.(new H("helia:pin:add",e))}}async*rm(e,t={}){let n=sf(e),o=await this.datastore.get(n,t),s=br(o);await this.datastore.delete(n,t);let i=new St({concurrency:Ky});for await(let a of this.#e(e,i,{...t,depth:s.depth}))await this.#t(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>ee(l,e.bytes)),!0),{...t,depth:s.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:Vy+(e.cid!=null?`${e.cid.toString(Ar)}`:"")},e)){let o=G.parse(t.toString().substring(5),Ar),s=br(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Fe(`${$y}${Eg.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=sf(e),o=await this.datastore.get(n,t);return br(o)}async setMetadata(e,t,n){let o=sf(e),s=await this.datastore.get(o,n),i=br(s);i.metadata=t??{},await this.datastore.put(o,Ko(i),n)}};var xg=1,vg=5,Sg=100;var rl=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},Vo=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},nl=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},ol=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}},Ag=class extends Error{static name="InvalidCodecError";constructor(e="Invalid codec"){super(e),this.name="InvalidCodecError"}};var lC=5,cf=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??lC,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await at(...this.routers)}async stop(){await lt(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new Vo("No content routers available");let n=new It({concurrency:this.providerLookupConcurrency}),o=0,s=[],i=this,a=0;this.log("findProviders for %c start using routers %s",e,this.routers.map(l=>l.toString()).join(", "));let c=qs(this.routers,"findProviders").map(async function*(l){let d=0;try{for await(let u of l.findProviders(e,t))d++,yield u}catch(u){s.push(u)}finally{i.log("router %s found %d providers for %c",l,d,e),a++,a===c.length&&n.size===0&&n.emitIdle()}});for await(let l of jt(n.toGenerator(),...c))if(l!=null){if(l.multiaddrs.length===0){if(n.find(l.id)!=null)continue;n.add(async()=>{try{let d=await this.findPeer(l.id,t);return d.multiaddrs.length===0?null:{...d,protocols:l.protocols,routing:l.routing}}catch(d){return this.log.error("could not load multiaddrs for peer %p - %e",l.id,d),null}},{peerId:l.id,signal:t.signal}).catch(d=>{this.log.error("could not load multiaddrs for peer %p - %e",l.id,d)});continue}o++,yield l}this.log("findProviders finished, found %d providers for %c",o,e)}async provide(e,t={}){if(this.routers.length===0)throw new Vo("No content routers available");await Promise.all(qs(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(qs(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(qs(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){let n=[],o;try{o=await Promise.any(qs(this.routers,"get").map(async s=>{try{return await s.get(e,t)}catch(i){this.log("router %s failed with %e",s,i),n.push(i)}}))}catch{}if(o==null)throw new nf(n,`Failed to get value key ${R(e,"base58btc")}`);return o}async findPeer(e,t){if(this.routers.length===0)throw new Vo("No peer routers available");let n=this,o=jt(...qs(this.routers,"findPeer").map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error(i)}})()));for await(let s of o)if(s!=null)return s;throw new Le("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Vo("No peer routers available");for await(let n of jt(...qs(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function qs(r,e){return r.filter(t=>t[e]!=null)}var Er=class extends Error{static name="AbortError";name="AbortError";constructor(e="The operation was aborted",...t){super(e,...t)}};async function Xt(r,e,t,n){let o=new Er(n?.errorMessage);n?.errorCode!=null&&(o.code=n.errorCode);let s=n?.errorEvent??"error";return t?.aborted===!0?Promise.reject(o):new Promise((i,a)=>{function c(){Tg(t,"abort",u),Tg(r,e,l),Tg(r,s,d)}let l=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){c(),a(h);return}c(),i(f)},d=f=>{if(c(),f instanceof Error){a(f);return}a(f.detail??n?.error??new Error(`The "${n?.errorEvent}" event was emitted but the event had no '.detail' field. Pass an 'error' option to race-event to change this message.`))},u=()=>{c(),a(o)};Ig(t,"abort",u),Ig(r,e,l),Ig(r,s,d)})}function Ig(r,e,t){r!=null&&(Hy(r)?r.addEventListener(e,t):r.addListener(e,t))}function Tg(r,e,t){r!=null&&(Hy(r)?r.removeEventListener(e,t):r.removeListener(e,t))}function Hy(r){return typeof r.addEventListener=="function"&&typeof r.removeEventListener=="function"}var lf=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var uf=class{deferred;signal;constructor(e){this.signal=e,this.deferred=Promise.withResolvers(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Er)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function uC(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var df=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=uC(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Er),this.cleanup())}async join(e={}){let t=new uf(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Pe(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};function _g(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var sl=class extends ie{concurrency;maxSize;queue;pending;sort;autoStart;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.autoStart=e.autoStart??!0,this.sort=e.sort,this.queue=[],this.emitEmpty=_g(this.emitEmpty.bind(this),1),this.emitIdle=_g(this.emitIdle.bind(this),1)}[Symbol.asyncIterator](){return this.toGenerator()}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}tryToStartAnother(){if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.safeDispatchEvent("next"),this.autoStart&&this.tryToStartAnother()}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}start(){this.autoStart===!1&&(this.autoStart=!0,this.tryToStartAnother())}pause(){this.autoStart=!1}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new lf;let n=new df(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.autoStart&&this.tryToStartAnother(),n.join(t).then(o=>(this.safeDispatchEvent("success",{detail:{job:n,result:o}}),o)).catch(o=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:o}}),o})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Er)}),this.clear()}async onEmpty(e){this.size!==0&&await Xt(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Xt(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Xt(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=vt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail.result)},s=c=>{n(c.detail.error)},i=()=>{n()},a=()=>{n(new Er("Queue aborted"))};this.addEventListener("success",o),this.addEventListener("failure",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("success",o),this.removeEventListener("failure",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var ff="lock:worker:request-read",hf="lock:worker:abort-read-request",pf="lock:worker:release-read",mf="lock:master:grant-read",gf="lock:master:error-read",yf="lock:worker:request-write",wf="lock:worker:abort-write-request",bf="lock:worker:release-write",Ef="lock:master:grant-write",xf="lock:master:error-write",vf="lock:worker:finalize",Sf="mortice",qy={singleProcess:!1};var Cg=(r,e,t,n,o,s,i,a,c)=>l=>{if(l.data==null)return;let d={type:l.data.type,name:l.data.name,identifier:l.data.identifier};d.type===o&&r.safeDispatchEvent(t,{detail:{name:d.name,identifier:d.identifier,handler:async()=>{e.postMessage({type:c,name:d.name,identifier:d.identifier}),await new Promise(u=>{let f=h=>{if(h?.data==null)return;let p={type:h.data.type,name:h.data.name,identifier:h.data.identifier};p.type===a&&p.identifier===d.identifier&&(e.removeEventListener("message",f),u())};e.addEventListener("message",f)})},onError:u=>{e.postMessage({type:i,name:d.name,identifier:d.identifier,error:{message:u.message,name:u.name,stack:u.stack}})}}}),d.type===s&&r.safeDispatchEvent(n,{detail:{name:d.name,identifier:d.identifier}}),d.type===vf&&r.safeDispatchEvent("finalizeRequest",{detail:{name:d.name}})};var Wy=(r=10)=>Math.random().toString().substring(2,r+2);var Af=class{name;channel;constructor(e){this.name=e,this.channel=new BroadcastChannel(Sf)}readLock(e){return this.sendRequest(ff,hf,mf,gf,pf,e)}writeLock(e){return this.sendRequest(yf,wf,Ef,xf,bf,e)}finalize(){this.channel.postMessage({type:vf,name:this.name}),this.channel.close()}async sendRequest(e,t,n,o,s,i){i?.signal?.throwIfAborted();let a=Wy();return this.channel.postMessage({type:e,identifier:a,name:this.name}),new Promise((c,l)=>{let d=()=>{this.channel.postMessage({type:t,identifier:a,name:this.name})};i?.signal?.addEventListener("abort",d,{once:!0});let u=f=>{if(f.data?.identifier===a&&(f.data?.type===n&&(this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",d),c(()=>{this.channel.postMessage({type:s,identifier:a,name:this.name})})),f.data.type===o)){this.channel.removeEventListener("message",u),i?.signal?.removeEventListener("abort",d);let h=new Error;f.data.error!=null&&(h.message=f.data.error.message,h.name=f.data.error.name,h.stack=f.data.error.stack),l(h)}};this.channel.addEventListener("message",u)})}};var zy=r=>{if(r=Object.assign({},qy,r),!!globalThis.document||r.singleProcess){let t=new BroadcastChannel(Sf),n=new ie;return t.addEventListener("message",Cg(n,t,"requestReadLock","abortReadLockRequest",ff,hf,gf,pf,mf)),t.addEventListener("message",Cg(n,t,"requestWriteLock","abortWriteLockRequest",yf,wf,xf,bf,Ef)),n}return new Af(r.name)};var Ws=new Map,il;function Gy(r){return typeof r?.readLock=="function"&&typeof r?.writeLock=="function"}function dC(r){if(il==null&&(il=zy(r),!Gy(il))){let e=il;e.addEventListener("requestReadLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Ws.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortReadLockRequest",a),s.readLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortReadLockRequest",a)})}),e.addEventListener("requestWriteLock",t=>{let n=t.detail.name,o=t.detail.identifier,s=Ws.get(n);if(s==null)return;let i=new AbortController,a=c=>{c.detail.name!==n||c.detail.identifier!==o||i.abort()};e.addEventListener("abortWriteLockRequest",a),s.writeLock({signal:i.signal}).then(async c=>{await t.detail.handler().finally(()=>{c()})}).catch(c=>{t.detail.onError(c)}).finally(()=>{e.removeEventListener("abortWriteLockRequest",a)})}),e.addEventListener("finalizeRequest",t=>{let n=t.detail.name,o=Ws.get(n);o?.finalize()})}return il}async function kg(r,e){let t,n,o=new Promise((i,a)=>{t=i,n=a}),s=()=>{n(new Er)};return e?.signal?.addEventListener("abort",s,{once:!0}),r.add(async()=>{await new Promise(i=>{t(()=>{e?.signal?.removeEventListener("abort",s),i()})})},{signal:e?.signal}).catch(i=>{n(i)}),o}var Yy=(r,e)=>{let t=Ws.get(r);if(t!=null)return t;let n=dC(e);if(Gy(n))return t=n,Ws.set(r,t),t;let o=new sl({concurrency:1}),s;return t={async readLock(i){if(s!=null)return kg(s,i);s=new sl({concurrency:e.concurrency,autoStart:!1});let a=s,c=kg(s,i);return o.add(async()=>{a.start(),await a.onIdle().then(()=>{s===a&&(s=null)})}),c},async writeLock(i){return s=null,kg(o,i)},finalize:()=>{Ws.delete(r)},queue:o},Ws.set(r,t),e.autoFinalize===!0&&o.addEventListener("idle",()=>{t.finalize()},{once:!0}),t};var fC={name:"lock",concurrency:1/0,singleProcess:!1,autoFinalize:!1};function al(r){let e=Object.assign({},fC,r);return Yy(e.name,e)}var If=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=al({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await at(this.child),this.started=!0}async stop(){await lt(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async*get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new el("Block was pinned - please unpin and try again");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let o=this;yield*this.child.deleteMany((async function*(){for await(let s of e){if(await o.pins.isPinned(s))throw new el("Block was pinned - please unpin and try again");yield s}})(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var Pg=new Fe("/version"),jy=1;async function Xy(r){if(!await r.has(Pg)){await r.put(Pg,C(`${jy}`));return}let e=await r.get(Pg),t=R(e);if(parseInt(t,10)!==jy)throw new rf("Invalid datastore version, a datastore migration may be required")}var Dg={};et(Dg,{code:()=>Lg,decode:()=>vC,decodeOptions:()=>bC,encode:()=>xC,encodeOptions:()=>yC,name:()=>EC,toByteView:()=>Zy});var Qy=42;function Zy(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function hC(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=G.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new N(y.tag,Qy),new N(y.bytes,t)]}function pC(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function mC(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}function gC(r){for(let e of r.keys())if(typeof e!="string"||e.length===0)throw new Error("Non-string Map keys are not supported by the IPLD Data Model and cannot be encoded");return null}var Rg={float64:!0,typeEncoders:{Map:gC,Object:hC,undefined:pC,number:mC}},yC={...Rg,typeEncoders:{...Rg.typeEncoders}};function wC(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return G.decode(r.subarray(1))}var Tf={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Tf.tags[Qy]=wC;var bC={...Tf,tags:Tf.tags.slice()},EC="dag-cbor",Lg=113,xC=r=>Ko(r,Rg),vC=r=>br(Zy(r),Tf);var $g={};et($g,{code:()=>Fg,decode:()=>e9,encode:()=>Jy,format:()=>DC,name:()=>LC,parse:()=>OC,stringify:()=>DC});var Ng=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(y.equals(t.type,y.array)&&(t.elements++,t.elements!==1&&e.push([44])),y.equals(t.type,y.map)&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[y.uint.major](e,t){this.prefix(e);let n=String(t.value),o=[];for(let s=0;s<n.length;s++)o[s]=n.charCodeAt(s);e.push(o)}[y.negint.major](e,t){this[y.uint.major](e,t)}[y.bytes.major](e,t){throw new Error(`${bn} unsupported type: Uint8Array`)}[y.string.major](e,t){this.prefix(e);let n=ji(JSON.stringify(t.value));e.push(n.length>32?Us(n):n)}[y.array.major](e,t){this.prefix(e),this.inRecursive.push({type:y.array,elements:0}),e.push([91])}[y.map.major](e,t){this.prefix(e),this.inRecursive.push({type:y.map,elements:0}),e.push([123])}[y.tag.major](e,t){}[y.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(y.equals(i.type,y.array))e.push([93]);else if(y.equals(i.type,y.map))e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${bn} unsupported type: undefined`);if(this.prefix(e),t.type.name==="true"){e.push([116,114,117,101]);return}else if(t.type.name==="false"){e.push([102,97,108,115,101]);return}else if(t.type.name==="null"){e.push([110,117,108,108]);return}let n=String(t.value),o=[],s=!1;for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i),!s&&(o[i]===46||o[i]===101||o[i]===69)&&(s=!0);s||(o.push(46),o.push(48)),e.push(o)}};function SC(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${bn} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==y.string||n.type!==y.string)throw new Error(`${bn} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${bn} unexpected duplicate map keys, this is not supported`)}var AC={addBreakTokens:!0,mapSorter:SC};function Og(r,e){return e=Object.assign({},AC,e),Kd(r,new Ng,e)}var sa=class{constructor(e,t={}){this._pos=0,this.data=e,this.options=t,this.modeStack=["value"],this.lastToken=""}pos(){return this._pos}done(){return this._pos>=this.data.length}ch(){return this.data[this._pos]}currentMode(){return this.modeStack[this.modeStack.length-1]}skipWhitespace(){let e=this.ch();for(;e===32||e===9||e===13||e===10;)e=this.data[++this._pos]}expect(e){if(this.data.length-this._pos<e.length)throw new Error(`${J} unexpected end of input at position ${this._pos}`);for(let t=0;t<e.length;t++)if(this.data[this._pos++]!==e[t])throw new Error(`${J} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,o=a=>{for(;!this.done();){let c=this.ch();if(a.includes(c))this._pos++;else break}};if(this.ch()===45&&(t=!0,this._pos++),this.ch()===48)if(this._pos++,this.ch()===46)this._pos++,n=!0;else return new N(y.uint,0,this._pos-e);if(o([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${J} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${J} unexpected token at position ${this._pos}`);n=!0,this._pos++,o([48,49,50,51,52,53,54,55,56,57])}!this.done()&&(this.ch()===101||this.ch()===69)&&(n=!0,this._pos++,!this.done()&&(this.ch()===43||this.ch()===45)&&this._pos++,o([48,49,50,51,52,53,54,55,56,57]));let s=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),i=parseFloat(s);return n?new N(y.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new N(i>=0?y.uint:y.negint,i,this._pos-e):new N(i>=0?y.uint:y.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${J} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let s=this._pos,i=0;s<this.data.length&&i<65536;s++,i++){let a=this.data[s];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,s));return this._pos=s+1,new N(y.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${J} unexpected end of unicode escape sequence at position ${this._pos}`);let s=0;for(let i=0;i<4;i++){let a=this.ch();if(a>=48&&a<=57)a-=48;else if(a>=97&&a<=102)a=a-97+10;else if(a>=65&&a<=70)a=a-65+10;else throw new Error(`${J} unexpected unicode escape character at position ${this._pos}`);s=s*16+a,this._pos++}return s},o=()=>{let s=this.ch(),i=null,a=s>239?4:s>223?3:s>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${J} unexpected unicode sequence at position ${this._pos}`);let c,l,d,u;switch(a){case 1:s<128&&(i=s);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(u=(s&31)<<6|c&63,u>127&&(i=u));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(u=(s&15)<<12|(c&63)<<6|l&63,u>2047&&(u<55296||u>57343)&&(i=u));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],d=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(d&192)===128&&(u=(s&15)<<18|(c&63)<<12|(l&63)<<6|d&63,u>65535&&u<1114112&&(i=u))}i===null?(i=65533,a=1):i>65535&&(i-=65536,t.push(i>>>10&1023|55296),i=56320|i&1023),t.push(i),this._pos+=a};for(;!this.done();){let s=this.ch(),i;switch(s){case 92:if(this._pos++,this.done())throw new Error(`${J} unexpected string termination at position ${this._pos}`);switch(i=this.ch(),this._pos++,i){case 34:case 39:case 92:case 47:t.push(i);break;case 98:t.push(8);break;case 116:t.push(9);break;case 110:t.push(10);break;case 102:t.push(12);break;case 114:t.push(13);break;case 117:t.push(n());break;default:throw new Error(`${J} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new N(y.string,C7(t),this._pos-e);default:if(s<32)throw new Error(`${J} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${J} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new N(y.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new N(y.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new N(y.null,null,4);case 102:return this.expect([102,97,108,115,101]),new N(y.false,!1,5);case 116:return this.expect([116,114,117,101]),new N(y.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${J} unexpected character at position ${this._pos}`)}}next(){switch(this.skipWhitespace(),this.currentMode()){case"value":return this.modeStack.pop(),this.parseValue();case"array-value":{if(this.modeStack.pop(),this.ch()===93)return this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);if(this.ch()!==44)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting array delimiter but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue()}case"array-start":return this.modeStack.pop(),this.ch()===93?(this._pos++,this.skipWhitespace(),new N(y.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);if(this.ch()!==44)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting object delimiter but found '${String.fromCharCode(this.ch())}'`);this._pos++,this.skipWhitespace();case"obj-start":{if(this.modeStack.pop(),this.ch()===125)return this._pos++,this.skipWhitespace(),new N(y.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${J} unexpected character at position ${this._pos}, was expecting key/value delimiter ':' but found '${String.fromCharCode(this.ch())}'`);return this._pos++,this.modeStack.push("obj-value"),e}case"obj-value":return this.modeStack.pop(),this.modeStack.push("obj-key"),this.skipWhitespace(),this.parseValue();default:throw new Error(`${J} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Mg(r,e){return e=Object.assign({tokenizer:new sa(r,e)},e),br(r,e)}function TC(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function _C(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=G.asCID(r);if(!e)return null;let t=e.toString();return[new N(y.map,1/0,1),new N(y.string,"/",1),new N(y.string,t,t.length),new N(y.break,void 0,1)]}function _f(r){let e=rt.encode(r).slice(1);return[new N(y.map,1/0,1),new N(y.string,"/",1),new N(y.map,1/0,1),new N(y.string,"bytes",5),new N(y.string,e,e.length),new N(y.break,void 0,1),new N(y.break,void 0,1)]}function Qr(r){return _f(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function CC(r){return _f(new Uint8Array(r))}function kC(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function PC(r){if(Number.isNaN(r))throw new Error("`NaN` is not supported by the IPLD Data Model and cannot be encoded");if(r===1/0||r===-1/0)throw new Error("`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded");return null}var RC={typeEncoders:{Object:_C,Buffer:_f,Uint8Array:_f,Int8Array:Qr,Uint16Array:Qr,Int16Array:Qr,Uint32Array:Qr,Int32Array:Qr,Float32Array:Qr,Float64Array:Qr,Uint8ClampedArray:Qr,BigInt64Array:Qr,BigUint64Array:Qr,DataView:Qr,ArrayBuffer:CC,undefined:kC,number:PC}},Bg=class extends sa{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(y.equals(e.type,y.map)){let t=this._next();if(y.equals(t.type,y.string)&&t.value==="/"){let n=this._next();if(y.equals(n.type,y.string)){let o=this._next();if(!y.equals(o.type,y.break))throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new N(y.tag,42,0)}if(y.equals(n.type,y.map)){let o=this._next();if(y.equals(o.type,y.string)&&o.value==="bytes"){let s=this._next();if(y.equals(s.type,y.string)){for(let a=0;a<2;a++){let c=this._next();if(!y.equals(c.type,y.break))throw new Error("Invalid encoded Bytes form")}let i=rt.decode(`m${s.value}`);return new N(y.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},Ug={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Ug.tags[42]=G.parse;var LC="dag-json",Fg=297,Jy=r=>Og(r,RC),e9=r=>{let e=TC(r),t=Object.assign(Ug,{tokenizer:new Bg(e,Ug)});return Mg(e,t)},DC=r=>NC.decode(Jy(r));var NC=new TextDecoder,OC=r=>e9(MC.encode(r)),MC=new TextEncoder;var zg={};et(zg,{code:()=>Wg,createLink:()=>u9,createNode:()=>l9,decode:()=>jC,encode:()=>YC,name:()=>GC,prepare:()=>Hg,validate:()=>qg});var BC=new TextDecoder;function Kg(r,e){let t=0;for(let n=0;;n+=7){if(n>=64)throw new Error("protobuf: varint overflow");if(e>=r.length)throw new Error("protobuf: unexpected end of data");let o=r[e++];if(t+=n<28?(o&127)<<n:(o&127)*2**n,o<128)break}return[t,e]}function Cf(r,e){let t;[t,e]=Kg(r,e);let n=e+t;if(t<0||n<0)throw new Error("protobuf: invalid length");if(n>r.length)throw new Error("protobuf: unexpected end of data");return[r.subarray(e,n),n]}function t9(r,e){let t;return[t,e]=Kg(r,e),[t&7,t>>3,e]}function UC(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=t9(r,n),s===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Hash`);if(e.Name!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Name before Hash");if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Hash");[e.Hash,n]=Cf(r,n)}else if(s===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(o!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let i;[i,n]=Cf(r,n),e.Name=BC.decode(i)}else if(s===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(o!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${o}) for Tsize`);[e.Tsize,n]=Kg(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${s}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function r9(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=t9(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(s)throw new Error("protobuf: (PBNode) duplicate Data section");[s,t]=Cf(r,t),n&&(o=!0)}else if(c===2){if(o)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Cf(r,t),n.push(UC(l))}else throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${c}`)}if(t>e)throw new Error("protobuf: (PBNode) unexpected end of data");let i={};return s&&(i.Data=s),i.Links=n||[],i}var o9=new TextEncoder,n9=2**32,FC=2**31;function $C(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=cl(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=o9.encode(r.Name);t-=n.length,e.set(n,t),t=cl(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=cl(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function s9(r){let e=VC(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=cl(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let o=r.Links.length-1;o>=0;o--){let s=$C(r.Links[o],t.subarray(0,n));n-=s,n=cl(t,n,s)-1,t[n]=18}return t}function KC(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+ia(t)}if(typeof r.Name=="string"){let t=o9.encode(r.Name).length;e+=1+t+ia(t)}return typeof r.Tsize=="number"&&(e+=1+ia(r.Tsize)),e}function VC(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+ia(t)}if(r.Links)for(let t of r.Links){let n=KC(t);e+=1+n+ia(n)}return e}function cl(r,e,t){e-=ia(t);let n=e;for(;t>=FC;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function ia(r){return r%2===0&&r++,Math.floor((HC(r)+6)/7)}function HC(r){let e=0;return r>=n9&&(r=Math.floor(r/n9),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+qC[r]}var qC=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var WC=["Data","Links"],zC=["Hash","Name","Tsize"],Vg=new TextEncoder;function a9(r,e){if(r===e)return 0;let t=r.Name?Vg.encode(r.Name):[],n=e.Name?Vg.encode(e.Name):[],o=t.length,s=n.length;for(let i=0,a=Math.min(o,s);i<a;++i)if(t[i]!==n[i]){o=t[i],s=n[i];break}return o<s?-1:s<o?1:0}function i9(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function c9(r){if(typeof r.asCID=="object"){let t=G.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=G.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=G.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=G.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function Hg(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=Vg.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(c9),e.Links.sort(a9);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function qg(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!i9(r,WC))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!i9(t,zC))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&a9(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function l9(r,e=[]){return Hg({Data:r,Links:e})}function u9(r,e,t){return c9({Hash:t,Name:r,Tsize:e})}function d9(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var GC="dag-pb",Wg=112;function YC(r){qg(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),s9(e)}function jC(r){let e=d9(r),t=r9(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=G.decode(o.Hash)}catch{}if(!s.Hash)throw new Error("Invalid Hash field found in link, expected CID");return o.Name!==void 0&&(s.Name=o.Name),o.Tsize!==void 0&&(s.Tsize=o.Tsize),s})),n}function aa(r){return r?.then!=null}function f9(r=[],e){let t={[Wg]:zg,[Mn]:fs,[Lg]:Dg,[Fg]:$g,[l2]:Nu};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);aa(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new ol(`Could not load codec for ${n}`)}}function h9(r=[],e){let t={[ze.code]:ze,[Mu.code]:Mu,[dt.code]:dt};return r.forEach(n=>{t[n.code]=n}),async n=>{let o=t[n];if(o==null&&e!=null){let s=e(n);aa(s)?o=await s:o=s,t[o.code]=o}if(o!=null)return o;throw new nl(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var Rr=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Jn=class{has(e,t){return Promise.reject(new Error(".has is not implemented"))}put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}async*putMany(e,t){for await(let{cid:n,bytes:o}of e)await this.put(n,o,t),yield n}get(e,t){throw new Error(".get is not implemented")}async*getMany(e,t){for await(let n of e)yield{cid:n,bytes:this.get(n,t)}}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*deleteMany(e,t){for await(let n of e)await this.delete(n,t),yield n}async*getAll(e){throw new Error(".getAll is not implemented")}};var kf=0,ca=class extends Error{static name="IdentityHashDigestTooLongError";name="IdentityHashDigestTooLongError"},Pf=class extends Jn{child;maxDigestLength;constructor(e,t){super(),this.child=e,this.maxDigestLength=t?.maxDigestLength}put(e,t,n){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return n?.signal?.throwIfAborted(),e}return this.child==null?(n?.signal?.throwIfAborted(),e):this.child.put(e,t,n)}async*get(e,t){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted(),yield e.multihash.digest;return}if(this.child==null)throw t?.signal?.throwIfAborted(),new Rr;yield*this.child.get(e,t)}has(e,t){if(e.multihash.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);return t?.signal?.throwIfAborted(),!0}return this.child==null?(t?.signal?.throwIfAborted(),!1):this.child.has(e,t)}delete(e,t){if(e.code===kf){if(this.maxDigestLength!=null&&e.multihash.digest.byteLength>this.maxDigestLength)throw new ca(`Identity digest too long - ${e.multihash.digest.byteLength} > this.maxDigestLength`);t?.signal?.throwIfAborted();return}if(this.child!=null)return this.child.delete(e,t)}async*getAll(e){this.child!=null&&(yield*this.child.getAll(e)),e?.signal?.throwIfAborted()}};function XC(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var la=XC;function QC(r){return r[Symbol.asyncIterator]!=null}function ZC(r,e){let t=0;if(QC(r))return(async function*(){for await(let c of r)await e(c,t++)&&(yield c)})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){await i&&(yield o);for(let c of n)await e(c,t++)&&(yield c)})();let a=e;return(function*(){i===!0&&(yield o);for(let c of n)a(c,t++)&&(yield c)})()}var Zr=ZC;function JC(r){return r[Symbol.asyncIterator]!=null}function p9(r){return r?.then!=null}function ek(r,e){let t=0;if(JC(r))return(async function*(){for await(let c of r){let l=e(c,t++);p9(l)&&await l,yield c}})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i?.then=="function")return(async function*(){await i,yield o;for(let c of n){let l=e(c,t++);p9(l)&&await l,yield c}})();let a=e;return(function*(){yield o;for(let c of n)a(c,t++),yield c})()}var Gg=ek;var tk=128,ua=class{child;getHasher;log;logger;blockBrokers;constructor(e,t={}){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.blockBrokers=e.blockBrokers,this.child=new Pf(e.blockstore,{maxDigestLength:t.maxIdentityHashDigestLength??tk}),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new H("blocks:put:duplicate",e)),e):(n.onProgress?.(new H("blocks:put:providers:notify",e)),await Promise.all(this.blockBrokers.map(async o=>o.announce?.(e,n))),n.onProgress?.(new H("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Zr(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new H("blocks:put-many:duplicate",s)),!i}),o=Gg(n,async({cid:s})=>{t.onProgress?.(new H("blocks:put-many:providers:notify",s)),await Promise.all(this.blockBrokers.map(async i=>i.announce?.(s,t)))});t.onProgress?.(new H("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async*get(e,t={}){let n=await this.child.has(e,t),o=t.offline===!0;if(!n){if(o)throw new tl("The block was present in the blockstore and the node is running offline so cannot fetch it");let s=await this.getHasher(e.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new H("blocks:get:providers:get",e));let i=await m9(e,this.blockBrokers,s,{...t,log:this.log});t.onProgress?.(new H("blocks:get:blockstore:put",e)),await this.child.put(e,i,t),t.onProgress?.(new H("blocks:get:providers:notify",e)),await Promise.all(this.blockBrokers.map(async a=>a.announce?.(e,t))),yield i;return}t.onProgress?.(new H("blocks:get:blockstore:get",e)),yield*this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new H("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(Gg(e,async n=>{let o=await this.child.has(n,t),s=t.offline===!0;if(!o){if(s)throw new tl("The block was present in the blockstore and the node is running offline so cannot fetch it");let i=await this.getHasher(n.multihash.code);t?.signal?.throwIfAborted(),t.onProgress?.(new H("blocks:get-many:providers:get",n));let a=await m9(n,this.blockBrokers,i,{...t,log:this.log});t.onProgress?.(new H("blocks:get-many:blockstore:put",n)),await this.child.put(n,a,t),t.onProgress?.(new H("blocks:get-many:providers:notify",n)),await Promise.all(this.blockBrokers.map(async c=>c.announce?.(n,t)))}}))}async delete(e,t={}){t.onProgress?.(new H("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new H("blocks:delete-many:blockstore:delete-many")),yield*this.child.deleteMany((async function*(){for await(let n of e)yield n})(),t)}async has(e,t={}){return this.child.has(e,t)}async*getAll(e={}){e.onProgress?.(new H("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}};async function m9(r,e,t,n){let o=nk(r,t),s=new AbortController,i=le([s.signal,n.signal]);s.signal;let a=[];for(let c of e)rk(c)&&a.push(c);if(a.length===0)throw new Hs(`No block brokers capable of retrieving blocks are configured, the CID ${r} cannot be fetched from the network`);try{return await Promise.any(a.map(async c=>{try{let l=!1,d=await c.retrieve(r,{...n,signal:i,validateFn:async u=>{await o(u),n.signal?.throwIfAborted(),l=!0}});return l||(await o(d),n.signal?.throwIfAborted()),d}catch(l){throw n.log.error("could not retrieve verified block for %c from %s - %e",r,c.name,l),l}}))}catch(c){throw new of(c.errors,`Failed to load block for ${r}`)}finally{s.abort(),i.clear()}}function rk(r){return typeof r.retrieve=="function"}var nk=(r,e)=>{if(e==null)throw new A(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,o=e.digest(t,{truncate:r.multihash.digest.byteLength});if(aa(o)?n=await o:n=o,!ee(n.digest,r.multihash.digest))throw new bo("Hash of downloaded block did not match multihash from passed CID")}};var Rf=class extends ua{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async addPeer(e,t){await Promise.all(this.blockBrokers.map(n=>n.addPeer(e,t)))}async put(e,t,n={}){let o=le([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async*get(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=le([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=le([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=le([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=le([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};var Lf=class extends ua{started;constructor(e,t={}){super(e,t),this.started=!1}isStarted(){return this.started}async start(){await at(this.child,...this.blockBrokers),this.started=!0}async stop(){await lt(this.child,...this.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){if(this.blockBrokers.length===0)throw new Hs("No block brokers configured");let n=this.blockBrokers.map(o=>o.createSession?.(t)).filter(o=>o!=null);if(n.length===0)throw new Hs(`No configured block brokers support sessions - tried ${this.blockBrokers.map(o=>o.name).join(", ")}`);return new Rf({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}};var zs=class extends ie{initialPeerSearchComplete;requests;logName;log;logger;minProviders;maxProviders;providers;evictionFilter;initialProviders;cidPeerFilterSize;constructor(e,t){super(),this.logName=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.logName),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.cidPeerFilterSize=t.cidPeerFilterSize??100,this.providers=[],this.evictionFilter=Et(this.maxProviders),this.initialProviders=[...t.providers??[]]}async retrieve(e,t={}){let n=rt.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o.observers++,o.promise;let s=fe(),i={promise:s.promise,observers:1,queryFilter:Et(this.cidPeerFilterSize)};this.requests.set(n,i);let a=!1;this.initialPeerSearchComplete==null&&(a=!0,this.log=this.logger.forComponent(`${this.logName}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t));let c=!1,l=new St({concurrency:this.maxProviders});l.addEventListener("failure",f=>{this.log.error("error querying provider %s, evicting from session - %e",f.detail.job.options.provider,f.detail.error),this.evict(f.detail.job.options.provider)}),l.addEventListener("success",f=>{c=!0,s.resolve(f.detail.result)}),l.addEventListener("idle",()=>{if(c){this.log.trace("session idle, found block");return}if(t.signal?.aborted===!0){this.log.trace("session idle, signal aborted");return}Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let f=0;f<this.minProviders&&this.providers.length!==0;f++){let h=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(h)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),s.resolve(await this.retrieve(e,t))}).catch(f=>{this.log.error("could not find new providers for %c - %e",e,f),s.reject(f)})});let d=f=>{let h=this.toFilterKey(f.detail);i.queryFilter.has(h)||(i.queryFilter.add(h),this.emitFoundProviderProgressEvent(e,f.detail,t),l.add(async()=>this.queryProvider(e,f.detail,t),{provider:f.detail}).catch(p=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,p)}))};if(this.addEventListener("provider",d),a)try{await Pe(this.initialPeerSearchComplete,t.signal),a&&this.log("found initial session peers for %c",e)}catch(f){throw a&&this.log("failed to find initial session peers for %c - %e",e,f),this.requests.delete(n),i.observers>1&&s.reject(f),f}Promise.all([...this.providers].filter(f=>{let h=this.toFilterKey(f),p=i.queryFilter.has(h);return p||i.queryFilter.add(this.toFilterKey(f)),!p}).map(async f=>l.add(async()=>this.queryProvider(e,f,t),{provider:f}))).catch(f=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c - %e",e,f)});let u=()=>{s.reject(new Vt(t.signal?.reason??"Session aborted")),l.abort()};t.signal?.addEventListener("abort",u);try{return await Pe(s.promise,t.signal)}finally{this.removeEventListener("provider",d),t.signal?.removeEventListener("abort",u),l.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toFilterKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toFilterKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async addPeer(e,t){let n=await this.convertToProvider(e,"manually-added",t);n==null||this.hasProvider(n)||(this.providers.push(n),this.safeDispatchEvent("provider",{detail:n}))}async findProviders(e,t,n){let o=fe(),s=0;return Promise.resolve().then(async()=>{if(this.log("finding %d-%d new provider(s) for %c - %d initial providers",t,this.maxProviders,e,this.initialProviders.length),this.initialProviders.length>0)for(;s<t&&this.initialProviders.length>0;){let i=this.initialProviders.pop();if(i==null)break;let a=await this.convertToProvider(i,"manual",n);if(n.signal?.aborted===!0)break;if(a!=null&&!this.hasProvider(a)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(a),this.safeDispatchEvent("provider",{detail:a}),s++,s===t&&(this.log("session is ready with %d peer(s), only initial peers present",t),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(s<this.maxProviders)for await(let i of this.findNewProviders(e,n)){if(s===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(i)&&(this.log("found %d/%d new providers",s,this.maxProviders),this.providers.push(i),this.safeDispatchEvent("provider",{detail:i}),s++,s===t&&(this.log("session is ready with %d peer(s), new peers present",t),o.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",s);break}}if(this.log("found %d/%d new session peers",s,this.maxProviders),s<t)throw new rl(`Found ${s} of ${t} ${this.name} providers for ${e}`)}).catch(i=>{this.log.error("error searching routing for potential session peers for %c - %e",e,i),o.reject(i)}),o.promise}};var Df=class{libp2p;blockstore;datastore;events;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??e.libp2p.logger,this.log=this.logger.forComponent("helia"),this.getHasher=h9(e.hashers,e.loadHasher),this.getCodec=f9(e.codecs,e.loadCodec),this.dns=e.dns??$u(),this.metrics=e.metrics,this.libp2p=e.libp2p,this.events=new ie;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,libp2p:this.libp2p,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new cf(t,{routers:(e.routers??[]).flatMap(o=>{typeof o=="function"&&(o=o(t));let s=[o],i=ok(o);i!=null&&s.push(i);let a=sk(o);return a!=null&&s.push(a),s}),providerLookupConcurrency:e.providerLookupConcurrency}),t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new Lf(t,e);this.pins=new af(e.datastore,n,this.getCodec),this.blockstore=new If(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore}async start(){await Xy(this.datastore),await at(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("start",{detail:this}))}async stop(){await lt(this.blockstore,this.datastore,this.routing,this.libp2p),this.events.dispatchEvent(new CustomEvent("stop",{detail:this}))}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await er(o.deleteMany((async function*(){for await(let{cid:s}of o.getAll())try{if(await n.pins.isPinned(s,e))continue;yield s,e.onProgress?.(new H("helia:gc:deleted",s))}catch(i){n.log.error("error during gc - %e",i),e.onProgress?.(new H("helia:gc:error",i))}})()))}finally{t()}this.log("gc finished")}};function ok(r){return r?.[Dn]}function sk(r){return r?.[On]}function ik(r){return r[Symbol.asyncIterator]!=null}function ak(r,e){let t=0;if(ik(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=la(r),{value:o,done:s}=n.next();if(s===!0)return(function*(){})();let i=e(o,t++);if(typeof i.then=="function")return(async function*(){yield await i;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield i;for(let c of n)yield a(c,t++)})()}var Lr=ak;function ck(r){return r[Symbol.asyncIterator]!=null}function lk(r,e){return ck(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var Ho=lk;var ll="/ipfs/bitswap/1.2.0";var Ye;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(Ye||(Ye={}));var Yg;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Yg||(Yg={}));(function(r){r.codec=()=>We(Yg)})(Ye||(Ye={}));var da;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.priority!=null&&t.priority!==0&&(n.uint32(16),n.int32(t.priority)),t.cancel!=null&&(n.uint32(24),n.bool(t.cancel)),t.wantType!=null&&(n.uint32(32),Ye.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:ae(0),priority:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.priority=t.int32();break}case 3:{s.cancel=t.bool();break}case 4:{s.wantType=Ye.codec().decode(t);break}case 5:{s.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(da||(da={}));var Nf;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let s of t.entries)n.uint32(10),da.codec().encode(s,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={entries:[]},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{if(o.limits?.entries!=null&&s.entries.length===o.limits.entries)throw new Ne('Decode error - map field "entries" had too many elements');s.entries.push(da.codec().decode(t,t.uint32(),{limits:o.limits?.entries$}));break}case 2:{s.full=t.bool();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Nf||(Nf={}));var fa;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.prefix!=null&&t.prefix.byteLength>0&&(n.uint32(10),n.bytes(t.prefix)),t.data!=null&&t.data.byteLength>0&&(n.uint32(18),n.bytes(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={prefix:ae(0),data:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.prefix=t.bytes();break}case 2:{s.data=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(fa||(fa={}));var Dr;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(Dr||(Dr={}));var Of;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(Of||(Of={}));(function(r){r.codec=()=>We(Of)})(Dr||(Dr={}));var ha;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&Of[t.type]!==0&&(n.uint32(16),Dr.codec().encode(t.type,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:ae(0),type:Dr.HaveBlock},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.cid=t.bytes();break}case 2:{s.type=Dr.codec().decode(t);break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(ha||(ha={}));var Gs;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),Nf.codec().encode(t.wantlist,n)),t.blocks!=null)for(let s of t.blocks)n.uint32(26),fa.codec().encode(s,n);if(t.blockPresences!=null)for(let s of t.blockPresences)n.uint32(34),ha.codec().encode(s,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={blocks:[],blockPresences:[],pendingBytes:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.wantlist=Nf.codec().decode(t,t.uint32(),{limits:o.limits?.wantlist});break}case 3:{if(o.limits?.blocks!=null&&s.blocks.length===o.limits.blocks)throw new Ne('Decode error - map field "blocks" had too many elements');s.blocks.push(fa.codec().decode(t,t.uint32(),{limits:o.limits?.blocks$}));break}case 4:{if(o.limits?.blockPresences!=null&&s.blockPresences.length===o.limits.blockPresences)throw new Ne('Decode error - map field "blockPresences" had too many elements');s.blockPresences.push(ha.codec().decode(t,t.uint32(),{limits:o.limits?.blockPresences$}));break}case 5:{s.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Gs||(Gs={}));function g9(r,e){for(let[t,n]of e.wantlist.entries()){let o=r.wantlist.get(t);o!=null&&(o.priority>n.priority&&(n.priority=o.priority),n.cancel=n.cancel??o.cancel,n.wantType=n.wantType??o.wantType,n.sendDontHave=n.sendDontHave??o.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var Mf=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var uk=4193648,dk=uk+16;function*y9(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],o=[...r.blocks.values()],s=0,i=0,a=0,c=!1;for(;;){let l={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},d=Gs.encode(l).byteLength,{added:u,hasMore:f,newSize:h}=jg(o,l.blocks,a,e,d,fk);a+=u,d=h;let p=f;({added:u,hasMore:f,newSize:h}=jg(n,l.blockPresences,i,e,d,hk)),i+=u,d=h;let g=f;if({added:u,hasMore:f,newSize:h}=jg(t,l.wantlist.entries,s,e,d,pk),s+=u,d=h,c=!p&&!g&&!f,c||(l.wantlist.full=!1),yield Gs.encode(l),c)break}}function jg(r,e,t,n,o,s){let i=0,a=!1;for(let c=t;c<r.length;c++){let l=r[c],d=s(l);if(d>dk)throw new Mf("Cannot send block as after encoding it is over the max message size");let u=o+d;if(u>n){a=!0;break}e.push(l),i++,o=u}return{hasMore:a,added:i,newSize:o}}function fk(r){return Xg(3,fa.encode(r))}function hk(r){return Xg(4,ha.encode(r))}function pk(r){return Xg(1,da.encode(r))}function Xg(r,e){let t=he(r),n=he(e.byteLength);return t+n+e.byteLength}var Bf=class extends ie{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[ll],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new It({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e,t){this.running&&Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",e.protocol,t.remotePeer);let n=()=>{e.status==="open"?e.abort(new un(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",e.status)},o=AbortSignal.timeout(this.messageReceiveTimeout);o.addEventListener("abort",n),await e.close({signal:o});let s=vt();e.addEventListener("message",i=>{s.push(i.data)}),e.addEventListener("remoteCloseWrite",()=>{s.end()}),e.addEventListener("close",i=>{i.error!=null&&s.end(i.error)});for await(let i of Ks(s,{maxDataLength:this.maxIncomingMessageSize}))try{let a=Gs.decode(i);this.log("incoming new bitswap %s message from %p on stream",e.protocol,t.remotePeer,e.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:t.remotePeer,message:a}}),o.removeEventListener("abort",n),o=AbortSignal.timeout(this.messageReceiveTimeout),o.addEventListener("abort",n)}catch(a){this.log.error("error reading incoming bitswap message from %p on stream - %e",t.remotePeer,e.id,a),e.abort(a);break}}).catch(n=>{this.log.error("error handling incoming stream from %p - %e",t.remotePeer,n),e.abort(n)})}async*findProviders(e,t){t?.onProgress?.(new H("bitswap:find-providers",e));for await(let n of this.routing.findProviders(e,t)){if(!await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})){this.log("skipping peer %p as they are not dialable - %a",n.id,n.multiaddrs);continue}t?.onProgress?.(new H("bitswap:found-provider",{type:"bitswap",cid:e,provider:n,routing:n.routing})),yield n}}async findAndConnect(e,t){t?.providers!=null&&await Promise.all(t.providers.map(async n=>this.connectTo(n).catch(o=>{this.log.error("could not connect to supplied provider - %e",o)}))),await er(Lr(Ho(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let o=this.sendQueue.queue.find(s=>e.equals(s.options.peerId)&&s.status==="queued");if(o!=null){o.options.message=g9(o.options.message,t),await o.join({signal:n?.signal});return}await this.sendQueue.add(async s=>{let i=s?.message;if(i==null)throw new A("No message to send");this.log("sendMessage to %p",e),s?.onProgress?.(new H("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,ll,s);await a.closeRead();try{for(let c of y9(i,this.maxOutgoingMessageSize))a.send(Qn.single(c))||await a.onDrain(s);await a.close(s)}catch(c){s?.onProgress?.(new H("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p - %e",e,c),a.abort(c)}this._updateSentStats(i.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new Ur("Network isn't running");t?.onProgress?.(new H("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),Xt(this.libp2p,"peer:identify",t?.signal,{filter:o=>{if(!o.detail.peerId.equals(e))return!1;if(o.detail.protocols.includes(ll))return!0;throw new pi(`${e} did not support ${ll}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};var w9=Symbol.for("nodejs.util.inspect.custom"),Sk=114,ul=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[ku]=!0;toString(){return this.string==null&&(this.string=De.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return G.createV1(Sk,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return ee(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return ee(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[w9](){return`PeerId(${this.toString()})`}},dl=class extends ul{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},fl=class extends ul{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},hl=class extends ul{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},Ak=2336,pl=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=dt.digest(C(this.url))}[w9](){return`PeerId(${this.url})`}[ku]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return G.createV1(Ak,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=R(e)),e.toString()===this.toString())}};var Ik=114,b9=2336;function Me(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=ke(De.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return Jr(G.parse(r));if(e==null)throw new A('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=ke(e.decode(r))}return Ze(t)}function xn(r){if(r.type==="Ed25519")return new fl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new hl({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new dl({multihash:r.toCID().multihash,publicKey:r});throw new Fr}function E9(r){return xn(r.publicKey)}function Ze(r){if(_k(r))return new dl({multihash:r});if(Tk(r))try{let e=sd(r);if(e.type==="Ed25519")return new fl({multihash:r,publicKey:e});if(e.type==="secp256k1")return new hl({multihash:r,publicKey:e})}catch{let t=R(r.digest);return new pl(new URL(t))}throw new bo("Supplied PeerID Multihash is invalid")}function Jr(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==Ik&&r.code!==b9)throw new Au("Supplied PeerID CID is invalid");if(r.code===b9){let e=R(r.multihash.digest);return new pl(new URL(e))}return Ze(r.multihash)}function Tk(r){return r.code===dt.code}function _k(r){return r.code===ze.code}function Ys(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Uf(r){let e=ke(De.decode(`z${r}`));return Ze(e)}var Ut=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Ys(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Ys(this.map.values(),e=>e.key)}values(){return Ys(this.map.values(),e=>e.value)}get size(){return this.map.size}};var xr=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return Ys(this.set.entries(),e=>{let t=Uf(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Uf(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ys(this.set.values(),e=>Uf(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function Qg(){return new xr}var Ff=class{filter;constructor(e,t){this.filter=Et(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function Zg(r,e=.001){return new Ff(r,e)}var Jg=class extends Ut{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function eo(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Jg({name:e,metrics:t}):n=new Ut,n}var to=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=rt.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=rt.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=rt.encode(e.multihash.bytes);this.blocks.set(n,t)}};function Ck(r){let e=new Uint8Array(r.reduce((n,o)=>n+he(o),0)),t=0;for(let n of r)e=Mt(n,e,t),t+=he(n);return e}var x9=Ck;function e3(r){return x9([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var $f=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;doNotResendBlockWindow;maxWantListSize;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024,this.doNotResendBlockWindow=t.doNotResendBlockWindow??5e3,this.maxWantListSize=t.maxWantListSize??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}removeExpiredWants(){this.wants.forEach((e,t)=>{e.expires!=null&&e.expires<Date.now()&&this.wants.delete(t)})}addWants(e){if(e==null)return;e.full===!0&&this.wants.forEach((n,o)=>{n.status==="want"&&this.wants.delete(o)});for(let n of e.entries){let o=G.decode(n.cid),s=R(o.multihash.bytes,"base64");if(n.cancel===!0)this.log("peer %p cancelled want of block for %c",this.peerId,o),this.wants.delete(s);else{n.wantType===Ye.WantHave?this.log("peer %p wanted block presence for %c",this.peerId,o):this.log("peer %p wanted block for %c",this.peerId,o);let i=this.wants.get(s);if(i!=null){let a=i.status==="sent"||i.status==="sending",c=i.wantType===Ye.WantHave&&(n.wantType==null||n.wantType===Ye.WantBlock);a&&c&&(i.status="want"),i.priority=n.priority,i.wantType=n.wantType??Ye.WantBlock,i.sendDontHave=n.sendDontHave??!1;continue}this.wants.set(s,{cid:o,priority:n.priority,wantType:n.wantType??Ye.WantBlock,sendDontHave:n.sendDontHave??!1,status:"want",created:Date.now()})}}let t=[...this.wants.entries()].filter(([n,o])=>o.status==="want");t.length>this.maxWantListSize&&this.truncateWants(t)}truncateWants(e){e=e.sort((n,o)=>n[1].created<o[1].created?-1:o[1].created<n[1].created?1:0).sort((n,o)=>n[1].haveBlock===!1?-1:o[1].haveBlock===!1?1:0).sort((n,o)=>n[1].priority<o[1].priority?-1:o[1].priority<n[1].priority?1:0);let t=e.length-this.maxWantListSize;for(let n=0;n<t;n++)this.wants.delete(e[n][0])}getWants(){return[...this.wants.values()]}hasWant(e){let t=R(e.multihash.bytes,"base64");return this.wants.has(t)}async sendBlocksToPeer(e){let t=new to,n=new Set;this.removeExpiredWants();let o=[...this.wants.entries()].filter(([s,i])=>i.status==="want");o.forEach(([s,i])=>{i.status="sending"});for(let[s,i]of o)try{let a=await Jd(this.blockstore.get(i.cid,e));if(i.status!=="sending")continue;i.wantType===Ye.WantHave?a.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:a,prefix:e3(i.cid)})):(this.log("sending have for %c",i.cid),t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:Dr.HaveBlock})):(this.log("sending block for %c",i.cid),n.add(s),t.addBlock(i.cid,{data:a,prefix:e3(i.cid)})),i.status="sent",i.expires=Date.now()+this.doNotResendBlockWindow}catch(a){if(a.name!=="NotFoundError")throw a;if(i.status="want",i.haveBlock=!1,this.log("do not have block for %c",i.cid),!i.sendDontHave||i.sentDoNotHave===!0)continue;i.sentDoNotHave=!0,t.addBlockPresence(i.cid,{cid:i.cid.bytes,type:Dr.DoNotHaveBlock})}(t.blocks.size>0||t.blockPresences.size>0)&&(this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((s,i)=>s+i.data.byteLength,0)))}};var Kf=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;doNotResendBlockWindow;maxWantListSize;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.doNotResendBlockWindow=t.doNotResendBlockWindow,this.maxWantListSize=t.maxWantListSize,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=eo({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(o=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}ledgerForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return{peer:t.peerId,value:t.debtRatio(),sent:t.bytesSent,received:t.bytesReceived,exchanged:t.exchangeCount}}wantListForPeer(e){let t=this.ledgerMap.get(e);if(t!=null)return t.removeExpiredWants(),t.getWants()}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);n==null&&(n=new $f({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock,doNotResendBlockWindow:this.doNotResendBlockWindow,maxWantListSize:this.maxWantListSize}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((o,s)=>o+s.data.byteLength,0)??0),n.removeExpiredWants(),n.addWants(t.wantlist),this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=[];for(let o of this.ledgerMap.values())o.hasWant(e)&&n.push(o);await Promise.all(n.map(async o=>o.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var t3=class extends zs{name="bitswap-session";wantList;network;libp2p;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network,this.libp2p=e.libp2p}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let o=await this.wantList.wantSessionBlock(e,t.peerId,n);if(this.log("%p %s %c",t,o.has?"has":"does not have",e),o.has&&o.block!=null)return o.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield{peerId:n.id,routing:n.routing,toString:()=>`Bitswap(${n.id})`}}toFilterKey(e){return e.peerId.toMultihash().bytes}equals(e,t){return e.peerId.equals(t.peerId)}async convertToProvider(e,t,n){if(Rt(e))return{peerId:e,routing:t,toString:()=>`Bitswap(${e})`};if(await this.libp2p.isDialable(e)!==!1)try{let o=await this.libp2p.dial(e,n);return{peerId:o.remotePeer,routing:t,toString:()=>`Bitswap(${o.remotePeer})`}}catch{}}emitFoundProviderProgressEvent(e,t,n){n?.onProgress?.(new H("bitswap:found-provider",{type:"bitswap",cid:e,provider:{id:t.peerId,multiaddrs:[],routing:t.routing},routing:t.routing}))}};function v9(r,e){return new t3(r,e)}var Vf=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};function kk(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=hr(r);e.push(t),r=r.slice(he(t))}return e}var S9=kk;var Hf=class extends ie{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=eo({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=ot({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(o=>{this.log.error("error receiving bitswap message from %p - %e",n.detail.peer,o)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(o=>{this.log.error("error processing newly connected bitswap peer %p - %e",n.detail,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=R(e.multihash.bytes,"base64"),o=this.wants.get(n);o==null&&(o={cid:e,priority:t.priority??1,wantType:t.wantType??Ye.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,o)),o.wantType===Ye.WantHave&&t.wantType===Ye.WantBlock&&(o.wantType=Ye.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===Ye.WantBlock?(await Xt(this,"block",t?.signal,{filter:a=>ee(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await Xt(this,"presence",t?.signal,{filter:i=>ee(e.multihash.digest,i.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),o.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers - %e",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=fe(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,o=new to;for(let[s,i]of this.wants.entries())t.has(s)||i.cancel||(n.add(s),o.addWantlistEntry(i.cid,{cid:i.cid.bytes,priority:i.priority,wantType:i.wantType,cancel:i.cancel,sendDontHave:i.sendDontHave}));if(o.wantlist.size!==0)try{await this.network.sendMessage(e,o);for(let s of n)t.add(s)}catch(s){this.log.error("error sending full wantlist to new peer - %e",s)}})).catch(e=>{this.log.error("error sending messages - %e",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=R(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let o=new to;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:Ye.WantHave,priority:1}),await this.network.sendMessage(t,o),(await Xt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&ee(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:Ye.WantBlock})}async wantSessionBlock(e,t,n={}){let o=new to;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:Ye.WantBlock,priority:1}),await this.network.sendMessage(t,o),(await Xt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&ee(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=R(e.multihash.bytes,"base64"),o=this.wants.get(n);o!=null&&(o.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let o of t.blocks){if(o.prefix==null||o.data==null)continue;let s=S9(o.prefix),i=s[0],a=s[1],c=s[2],l=s[3],d=c===ze.code?ze:await this.hashLoader?.getHasher(c);if(d==null){this.log.error("unknown hash algorithm",c);continue}let u=d.digest(o.data,{truncate:l});u.then!=null&&(u=await u);let f=G.create(i===0?0:1,a,u);this.log("received block from %p for %c",e,f),this.safeDispatchEvent("block",{detail:{sender:e,cid:f,block:o.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:f,has:!0,block:o.data}});let h=R(f.multihash.bytes,"base64"),p=this.wants.get(h);p!=null&&(p.cancel=!0,n=!0)}for(let{cid:o,type:s}of t.blockPresences){let i=G.decode(o);this.log("received %s from %p for %c",s,e,i),this.safeDispatchEvent("presence",{detail:{sender:e,cid:i,has:s===Dr.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new to(!0);for(let[o,s]of this.wants.entries())s.cancel||(t.add(o),n.addWantlistEntry(s.cid,{cid:s.cid.bytes,priority:1,wantType:Ye.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(o){this.log.error("error sending full wantlist to new peer %p - %e",e,o)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var qf=class{log;logger;stats;network;blockstore;peerWantLists;wantList;libp2p;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.libp2p=e.libp2p,this.stats=new Vf(e),this.network=new Bf(e,t),this.peerWantLists=new Kf({...e,network:this.network},t),this.wantList=new Hf({...e,network:this.network},t)}createSession(e={}){return v9({wantList:this.wantList,network:this.network,logger:this.logger,libp2p:this.libp2p},e)}async want(e,t={}){let n=new AbortController,o=le([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:o}).catch(s=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c - %e",e,s)});try{let s=await this.wantList.wantBlock(e,{...t,signal:o});return t.onProgress?.(new H("bitswap:block",{cid:e,sender:s.sender})),s.block}finally{n.abort(),o.clear()}}async notify(e,t={}){await Promise.all([this.peerWantLists.receivedBlock(e,t),this.wantList.receivedBlock(e,t)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var A9=(r,e={})=>new qf(r,e);var r3=class{name="bitswap";bitswap;started;constructor(e,t={}){let{getHasher:n}=e;this.bitswap=A9(e,{hashLoader:{getHasher:async o=>n(o)},...t}),this.started=!1}isStarted(){return this.started}async start(){await this.bitswap.start(),this.started=!0}async stop(){await this.bitswap.stop(),this.started=!1}async announce(e,t){await this.bitswap.notify(e,t)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{name:"bitswap-session",addPeer:async(n,o)=>{await t.addPeer(n,o)},announce:async(n,o)=>{await this.bitswap.notify(n,o)},retrieve:async(n,o)=>t.retrieve(n,o)}}};function n3(r={}){return e=>new r3(e,r)}var Pk=[6,53,56,54,55];function I9(r){return C9("sni",r)?.value}function T9(r){let e=C9("tcp",r)?.value;return e==null?"":`:${e}`}function C9(r,e){return e.find(t=>t.name===r)}function _9(r){return r.some(({code:e})=>e===448)}function en(r,e){let t=k9[r.name];if(t==null)throw new Error(`Can't interpret protocol ${r.name}`);let n=t(r,e);return r.code===41?`[${n}]`:n}var k9={ip4:(r,e)=>r.value,ip6:(r,e)=>e.length===0?r.value:`[${r.value}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${en(t,e)}:${r.value}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${en(t,e)}:${r.value}`},dnsaddr:(r,e)=>r.value,dns4:(r,e)=>r.value,dns6:(r,e)=>r.value,dns:(r,e)=>r.value,ipfs:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${en(t,e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${en(t,e)}`},http:(r,e)=>{let t=_9(e),n=I9(e),o=T9(e);if(t&&n!=null)return`https://${n}${o}`;let s=t?"https://":"http://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=en(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e),o=decodeURIComponent(r.value??"");return`${n}${o}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return en(t,e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return en(t,e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e);return n=n?.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=_9(e),n=I9(e),o=T9(e);if(t&&n!=null)return`wss://${n}${o}`;let s=t?"wss://":"ws://",i=e.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let a=en(i,e);return a=a?.replace("tcp://",""),`${s}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=en(t,e);return n=n?.replace("tcp://",""),`wss://${n}`}};function qo(r,e){let n=q(r).getComponents(),o=n.pop();if(o==null)throw new Error("Unexpected end of multiaddr");let s=k9[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let i=s(o,n)??"";return e?.assumeHttp!==!1&&Pk.includes(o.code)&&(i=i.replace(/^.*:\/\//,""),o.value==="443"?i=`https://${i}`:i=`http://${i}`),(i.startsWith("http://")||i.startsWith("https://")||i.startsWith("ws://")||i.startsWith("wss://"))&&(i=new URL(i).toString(),i.endsWith("/")&&(i=i.substring(0,i.length-1))),i}var _e=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),se=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),P9=r=>({match:e=>r.match(e)===!1?e:!1}),ge=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),Ft=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),ve=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function Ce(...r){function e(o){if(o==null)return!1;let s=o.getComponents();for(let i of r){let a=i.match(s);if(a===!1)return!1;s=a}return s}function t(o){return e(o)!==!1}function n(o){let s=e(o);return s===!1?!1:s.length===0}return{matchers:r,matches:t,exactMatch:n}}var Rk=se(421),R9=Ce(Rk),zf=se(54),Gf=se(55),Yf=se(56),s3=se(53),pX=Ce(zf,ge(se(421))),mX=Ce(Gf,ge(se(421))),gX=Ce(Yf,ge(se(421))),jf=Ce(Ft(s3,Yf,zf,Gf),ge(se(421))),L9=ve(se(4),ge(se(43))),D9=ve(ge(se(42)),se(41),ge(se(43))),i3=Ft(L9,D9),js=Ft(i3,s3,zf,Gf,Yf),N9=Ce(Ft(i3,ve(Ft(s3,Yf,zf,Gf),ge(se(421))))),a3=Ce(L9),c3=Ce(D9),O9=Ce(i3),l3=ve(js,se(6)),ml=ve(js,se(273)),Xs=Ce(ve(l3,ge(se(421)))),yX=Ce(ml),u3=ve(ml,_e(460),ge(se(421))),Xf=ve(ml,_e(461),ge(se(421))),Lk=Ft(u3,Xf),wX=Ce(u3),M9=Ce(Xf),o3=Ft(js,l3,ml,u3,Xf),B9=Ft(ve(o3,_e(477),ge(se(421)))),ro=Ce(B9),U9=Ft(ve(o3,_e(478),ge(se(421))),ve(o3,_e(448),ge(se(449)),_e(477),ge(se(421)))),Qs=Ce(U9),F9=ve(ml,_e(280),ge(se(466)),ge(se(466)),ge(se(421))),gl=Ce(F9),$9=ve(Xf,_e(465),ge(se(466)),ge(se(466)),ge(se(421))),d3=Ce($9),Wf=Ft(B9,U9,ve(l3,ge(se(421))),ve(Lk,ge(se(421))),ve(js,ge(se(421))),F9,$9,se(421)),pa=Ce(Wf),Dk=ve(ge(Wf),_e(290),P9(_e(281)),ge(se(421))),yt=Ce(Dk),Nk=Ft(ve(Wf,_e(290),_e(281),ge(se(421))),ve(Wf,_e(281),ge(se(421))),ve(_e(281),ge(se(421)))),yl=Ce(Nk),Ok=Ft(ve(js,se(6),_e(480),ge(se(421))),ve(js,_e(480),ge(se(421)))),K9=Ce(Ok),Mk=ve(js,Ft(ve(se(6,"443"),_e(480)),ve(se(6),_e(443)),ve(se(6),_e(448),_e(480)),ve(_e(448),_e(480)),_e(448),_e(443)),ge(se(421))),V9=Ce(Mk),Bk=Ft(ve(se(777),ge(se(421)))),bX=Ce(Bk),Uk=Ft(ve(se(400),ge(se(421)))),EX=Ce(Uk);function f3(r,e,t){return r.filter(n=>{if(V9.matches(n)||e&&K9.matches(n))return t||jf.matches(n)?!0:Qe(n)===!1;if(!e&&t){let{host:o}=oe(n);if(o==="127.0.0.1"||o==="localhost"||o.endsWith(".localhost"))return!0}return!1})}async function*Qf(r,e,t,n,o,s={}){for await(let i of e.findProviders(r,s)){let a=f3(i.multiaddrs,n,o);if(a.length===0)continue;let c=new URL(qo(a[0]));yield new ma(c,{logger:t,transformRequestInit:s.transformRequestInit,routing:i.routing})}}async function H9(r,e,t){let{signal:n,log:o}=t??{},s=r.headers.get("content-length");if(s!=null){let c=parseInt(s,10);if(c>e)throw o?.error("content-length header (%d) is greater than the limit (%d)",c,e),r.body!=null&&await r.body.cancel().catch(l=>{o?.error("error cancelling response body after content-length check - %e",l)}),new Error(`Content-Length header (${c}) is greater than the limit (${e}).`)}let i=r.body?.getReader();if(i==null)throw new Error("Response body is not readable");let a=new X;try{for(;;){if(n?.aborted===!0)throw new Error("Response body read was aborted.");let{done:c,value:l}=await i.read();if(c)break;if(a.append(l),a.byteLength>e)throw new Error(`Response body is greater than the limit (${e}), received ${a.byteLength} bytes.`)}}finally{i.cancel().catch(c=>{o?.error("error cancelling reader - %e",c)}).finally(()=>{i.releaseLock()})}return a.subarray()}var ma=class{url;#e=0;#t=0;#r=0;#a=0;#c=new Map;log;transformRequestInit;routing;constructor(e,{logger:t,transformRequestInit:n,routing:o}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.host}`),this.routing=o}#m(e){let t=e.multihash.bytes;return rt.encode(t)}async getRawBlock(e,{signal:t,maxSize:n=q9}={}){let o=new URL(this.url.toString());if(o.pathname=`/ipfs/${e.toString()}`,o.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let s=this.#m(e),i=new AbortController,a=()=>{i.abort()};t?.addEventListener("abort",a);try{let c=this.#c.get(s);if(c==null){this.#e++;let l={signal:i.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},d=this.transformRequestInit!=null?await this.transformRequestInit(l):l,u=new Headers(d.headers);this.log(`sending request
|
|
14
14
|
%s %s HTTP/1.1
|
|
15
15
|
%s
|
|
16
16
|
`,d.method??"GET",o,[...u.entries()].map(([f,h])=>`${f}: ${h}`).join(`
|
|
@@ -29,7 +29,7 @@ HTTP/1.1 %d %s
|
|
|
29
29
|
(?:${st}:){1}(?:(?::${st}){0,4}:${rn}|(?::${st}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
|
30
30
|
(?::(?:(?::${st}){0,5}:${rn}|(?::${st}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
|
31
31
|
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
|
32
|
-
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Xk=new RegExp(`(?:^${rn}$)|(?:^${ph}$)`),Qk=new RegExp(`^${rn}$`),Zk=new RegExp(`^${ph}$`),y3=r=>r&&r.exact?Xk:new RegExp(`(?:${Wo(r)}${rn}${Wo(r)})|(?:${Wo(r)}${ph}${Wo(r)})`,"g");y3.v4=r=>r&&r.exact?Qk:new RegExp(`${Wo(r)}${rn}${Wo(r)}`,"g");y3.v6=r=>r&&r.exact?Zk:new RegExp(`${Wo(r)}${ph}${Wo(r)}`,"g");var w3=y3;function b3(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function rw(){return!1}var{toString:Jk}=Object.prototype;function E3(r){return Jk.call(r)==="[object RegExp]"}var nw={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function x3(r,e={}){if(!E3(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(nw).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?nw[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function v3(r,e,{timeout:t}={}){try{return b3(()=>x3(r).test(e),{timeout:t})()}catch(n){if(rw(n))return!1;throw n}}var eP=15,tP=45,ow={timeout:400};function S3(r){return r.length>tP?!1:v3(w3.v6({exact:!0}),r,ow)}function sw(r){return r.length>eP?!1:v3(w3.v4({exact:!0}),r,ow)}var iw={http:"80",https:"443",ws:"80",wss:"443"},rP=["http","https","ws","wss"];function mh(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=nP(r),a=[oP(o,t),sP(s,n),iP(n)];i!=null&&a.push(aP(i));let c="/"+a.filter(l=>!!l).reduce((l,d)=>l.concat(d),[]).join("/");return q(c)}function nP(r){let[e]=r.split(":");rP.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=cP(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function oP(r,e){if(!(r==null||r==="")){if(sw(r))return["ip4",r];if(S3(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(S3(t))return["ip6",t]}return[e,r]}}function sP(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function iP(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function aP(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function cP(r){if(!(r==null||r===""||iw[r]==null))return iw[r]}var lP=["https://trustless-gateway.link","https://4everland.io"],uP=2336;function dP(r){return r=r.toString(),{id:Jr(G.createV1(uP,dt.digest(C(r)))),multiaddrs:[mh(r)]}}function fP(r){return new URL(R(r.id.toMultihash().digest))}var A3=class{gateways;shuffle;constructor(e={}){this.gateways=(e.gateways??lP).map(t=>dP(t)),this.shuffle=e.shuffle??!0}async*findProviders(e,t){yield*(this.shuffle?this.gateways.toSorted(()=>Math.random()>.5?1:-1):this.gateways).map(n=>({...n,protocols:["transport-ipfs-gateway-http"],routing:"http-gateway-routing"}))}toString(){return`HTTPGatewayRouter([${this.gateways.map(e=>fP(e)).join(", ")}])`}};function I3(r={}){return new A3(r)}var T3=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}toString(){return"Libp2pRouter()"}};function _3(r){return new T3(r)}function hP(r){return r[Symbol.asyncIterator]!=null}function pP(r){if(hP(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var no=pP;function mP(r){return typeof r?.then=="function"}var vl=class extends Jn{data;constructor(){super(),this.data=new Map}put(e,t,n){n?.signal?.throwIfAborted();let o;if(t instanceof Uint8Array)o=[t];else{let s=no(t);if(mP(s))return s.then(i=>this._put(e,i,n));o=s}return this._put(e,o,n)}_put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(ut.encode(e.multihash.bytes),t),e}*get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(ut.encode(e.multihash.bytes));if(n==null)throw new Rr;yield*n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(ut.encode(e.multihash.bytes))}async delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(ut.encode(e.multihash.bytes))}*getAll(e){e?.signal?.throwIfAborted();for(let[t,n]of this.data.entries())yield{cid:G.createV1(Mn,ke(ut.decode(t))),bytes:(async function*(){yield*n})()},e?.signal?.throwIfAborted()}};var sJ=Pr("blockstore:core:tiered");var aw="SHARDING";function yP(r){return r[Symbol.asyncIterator]!=null}function wP(r,e){return yP(r)?(async function*(){yield*(await no(r)).sort(e)})():(function*(){yield*no(r).sort(e)})()}var gh=wP;var oo=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await er(this.putMany(e,n)),e=[],await er(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Zr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>gh(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Zr(n,()=>o++>=s)}return e.limit!=null&&(n=Ho(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Zr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>gh(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Zr(n,()=>s++>=o)}return e.limit!=null&&(n=Ho(n,e.limit)),n}};var Js=class extends oo{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new Rr;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Fe(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Fe(n),t?.signal?.throwIfAborted()}};var BJ=new Fe(aw);var QJ=Pr("datastore:core:tiered");async function lw(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new A("Private network is enforced, but no protector was provided");return r}var Sl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={publicKey:ae(0),payloadType:ae(0),payload:ae(0),signature:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.publicKey=t.bytes();break}case 2:{s.payloadType=t.bytes();break}case 3:{s.payload=t.bytes();break}case 5:{s.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Sl||(Sl={}));var yh=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var vr=class r{static createFromProtobuf=e=>{let t=Sl.decode(e),n=tt(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=uw(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new yh("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Sl.encode({publicKey:ft(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:ee(this.marshal(),e.marshal())}async validate(e,t){let n=uw(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},uw=(r,e,t)=>{let n=C(r),o=Mt(n.byteLength),s=Mt(e.length),i=Mt(t.length);return new X(o,n,s,e,i,t)};var dw="libp2p-peer-record",fw=Uint8Array.from([3,1]);var Al;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ae(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let d=s.uint32();switch(d>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(d&7);break}}}return c})),o),n.encode=s=>re(s,n.codec()),n.decode=(s,i)=>te(s,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=ne((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ae(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new Ne('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>re(n,r.codec()),r.decode=(n,o)=>te(n,r.codec(),o)})(Al||(Al={}));function hw(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var Qt=class r{static createFromProtobuf=e=>{let t=Al.decode(e),n=Ze(ke(t.peerId)),o=(t.addresses??[]).map(i=>q(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=dw;static CODEC=fw;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Al.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!hw(this.multiaddrs,e.multiaddrs))}};var so;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ae(0)},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>re(i,o.codec()),o.decode=(i,a)=>te(i,o.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),bh.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=bh.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>re(i,o.codec()),o.decode=(i,a)=>te(i,o.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),wh.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new Ne('Decode error - map field "addresses" had too many elements');a.addresses.push(wh.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new Ne('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Ac('Decode error - map field "metadata" had too many elements');let d=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(d.key,d.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Ac('Decode error - map field "tags" had too many elements');let d=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(d.key,d.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>re(o,r.codec()),r.decode=(o,s)=>te(o,r.codec(),s)})(so||(so={}));var wh;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),t.observed!=null&&(n.uint32(24),n.uint64Number(t.observed)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={multiaddr:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.multiaddr=t.bytes();break}case 2:{s.isCertified=t.bool();break}case 3:{s.observed=t.uint64Number();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(wh||(wh={}));var bh;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.value=t.uint32();break}case 2:{s.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(bh||(bh={}));function bP(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=tt(e.publicKey,t);return xn(n)}function pw(r,e,t){let n=so.decode(e);return ba(r,n,t)}function ba(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:bP(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:q(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function mw(r,e){return EP(r.addresses,e.addresses)&&xP(r.protocols,e.protocols)&&vP(r.publicKey,e.publicKey)&&SP(r.peerRecordEnvelope,e.peerRecordEnvelope)&&AP(r.metadata,e.metadata)&&IP(r.tags,e.tags)}function EP(r,e){return yw(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!ee(t.multiaddr,n.multiaddr)))}function xP(r,e){return yw(r,e,(t,n)=>t===n)}function vP(r,e){return gw(r,e)}function SP(r,e){return gw(r,e)}function AP(r,e){return ww(r,e,(t,n)=>ee(t,n))}function IP(r,e){return ww(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function gw(r,e){return r==null&&e==null?!0:r!=null&&e!=null?ee(r,e):!1}function yw(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function ww(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var C3="/peers/";function Il(r){if(!Rt(r)||r.type==null)throw new A("Invalid PeerId");let e=r.toCID().toString();return new Fe(`${C3}${e}`)}async function bw(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=q(i.multiaddr)),!yn(i.multiaddr))throw new A("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(q(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function xh(r,e,t,n){if(e==null)throw new A("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new A("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new A("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Eh(f,{validate:Ew})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Eh(f,{validate:xw,map:vw})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of f)p==null?a.delete(h):a.set(h,p);a=Eh([...a.entries()],{validate:Ew})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,g]of f)g==null?h.delete(p):h.set(p,g);c=Eh([...h.entries()],{validate:xw,map:vw})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d;o?.id.publicKey!=null?d=ft(o.id.publicKey):e.publicKey!=null?d=ft(e.publicKey):r.publicKey!=null&&(d=ft(r.publicKey));let u={addresses:await bw(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((f,h)=>f.localeCompare(h)),metadata:a,tags:c,publicKey:d,peerRecordEnvelope:l};return u.addresses.forEach(f=>{f.observed=n.existingPeer?.peerPB.addresses?.find(h=>ee(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete u.publicKey,u}function Eh(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function Ew(r,e){if(typeof r!="string")throw new A("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new A("Metadata value must be a Uint8Array")}function xw(r,e){if(typeof r!="string")throw new A("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new A("Tag value must be an integer");if(e.value<0||e.value>100)throw new A("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new A("Tag ttl must be an integer");if(e.ttl<0)throw new A("Tag ttl must be between greater than 0")}}function vw(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function Sw(r){let e=r.toString().split("/")[2],t=G.parse(e,ut);return Jr(t)}function k3(r,e,t){let n=Sw(r);return pw(n,e,t)}function TP(r,e){return{prefix:C3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(k3(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(k3(n.key,n.value,e),k3(o.key,o.value,e)))}}var vh=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=eo({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:al({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(Il(e),t)}async load(e,t){let n=Il(e),o=await this.datastore.get(n,t),s=so.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Le;return ba(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(TP(e??{},this.maxAddressAge),e)){let o=Sw(t);if(o.equals(this.peerId))continue;let s=so.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield ba(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=Il(e),o=await this.datastore.get(n,t),s=so.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Le;return{peerPB:s,peer:ba(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=so.encode(t);return await this.datastore.put(Il(e),s,o),{peer:ba(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!mw(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var P3=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new vh(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return no(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=Rt(t)?t:Rt(t?.expectedPeer)?t.expectedPeer:void 0,s=Rt(t)||t===void 0?n:t,i=await vr.openAndCertify(e,Qt.DOMAIN,s),a=Jr(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Qt.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(d){if(d.name!=="NotFoundError")throw d}if(l?.peerRecordEnvelope!=null){let d=vr.createFromProtobuf(l.peerRecordEnvelope),u=Qt.createFromProtobuf(d.payload);if(u.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function Aw(r,e={}){return new P3(r,e)}var Iw=864e13;var Sh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=ot({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=oe(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=Ki(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?Iw-Date.now():0,lastVerified:o?Iw-Date.now():void 0})})}remove(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!xt(o))continue;let s=oe(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),q(n)}confirm(e,t){let n=oe(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=oe(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var Ah=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=ot({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:zr(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!xt(n))continue;let o=oe(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,q(i)):e}confirm(e,t){if(!xt(e))return!1;let n=oe(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!xt(e))return!1;let n=oe(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var _P={maxObservedAddresses:10},Ih=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ot({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??_P.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Qe(e)||o7(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:q(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var CP={maxObservedAddresses:10},Th=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ot({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??CP.maxObservedAddresses}get(e,t){if(Qe(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!xt(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!xt(e))return e.toString();let t=oe(e);return`${t.host}-${t.port}-${t.protocol}`}};var Tw=6e4,_w={maxObservedAddresses:10,addressVerificationTTL:Tw*10,addressVerificationRetry:Tw*5},kP=r=>r;function R3(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Me(t).equals(e)&&(r=r.decapsulate(q(`/p2p/${e.toString()}`))),r}var _h=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new Ih(e,t),this.dnsMappings=new Sh(e,t),this.ipMappings=new Ah(e,t),this.transportAddresses=new Th(e,t),this.announceFilter=t.announceFilter??kP,this.observedAddressFilter=Et(1024),this.addressVerificationTTL=t.addressVerificationTTL??_w.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??_w.addressVerificationRetry,this._updatePeerStoreAddresses=Wn(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>q(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>q(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>q(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=oe(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=R3(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=R3(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=R3(e,this.components.peerId);let n=!1;this.observed.has(e)&&!this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&!this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&!this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&!this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=q(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(q(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${zr(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(q(`/ip${zr(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!xt(e))return!1;let t=oe(e);if(t.type!=="ip4"||Ki(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>ro.exactMatch(s)||Qs.exactMatch(s),s=>Xs.exactMatch(s),s=>M9.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(d=>oe(d).type==="ip4"&&s(d)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!Oc(l)).pop();if(a==null)continue;let c=oe(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var Cw;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(Cw||(Cw={}));var Ch=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},kh=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},Ea=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Tl=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},Ph=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},Rh=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},Lh=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},_l=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Dh=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Nh=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},Oh=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},Mh=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},Bh=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},zo=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},ei=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Uh=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Fh=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var L3=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=ra())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Pu(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},PP=["metrics","connectionProtector","dns"],RP=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function kw(r={}){let e=new L3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!RP.includes(o)){let i=e.components[o];if(i==null&&!PP.includes(o))throw new Ch(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function Pw(r){let e={};for(let t of Object.values(r.components))for(let n of LP(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of DP(t))if(e[n]!==!0)throw new kh(`Service "${NP(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function LP(r){return Array.isArray(r?.[me])?r[me]:[]}function DP(r){return Array.isArray(r?.[ur])?r[ur]:[]}function NP(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function Rw(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>ro.matches(e)?!0:Qe(e)),r}var OP=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function MP(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=OP(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Cl(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=MP(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function $h(r){if(Rt(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Me(n),e.forEach(o=>{if(!yn(o))throw new ln("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new A("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Me(s);if(t?.equals(i)!==!0)throw new A("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!R9.exactMatch(n)),{peerId:t,multiaddrs:e}}var BP=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Lw(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??BP;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function kl(r){let e=oe(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new A(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new A(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Ns(e.host,t)}function D3(r){return!yt.exactMatch(r)}function Kh(r,e,t){if(r==null||e==null)return;let n=e.sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>D3(s)))return n}var Vh=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>kl(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Ut;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let d=await this.peerStore.get(l);o.set(l,[...d.tags.values()].reduce((u,f)=>u+f.value,0))}catch(d){d.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",d)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(d=>{if(xt(c.remoteAddr)){let u=oe(c.remoteAddr);return d.contains(u.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await Lw(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Dw="last-dial-failure",Nw="last-dial-success";var Ow=100,Hh=50;function UP(r,e){let t=Xs.exactMatch(r.multiaddr),n=Xs.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let o=Qs.exactMatch(r.multiaddr),s=Qs.exactMatch(e.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=ro.exactMatch(r.multiaddr),a=ro.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=yl.exactMatch(r.multiaddr),l=yl.exactMatch(e.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let d=gl.exactMatch(r.multiaddr),u=gl.exactMatch(e.multiaddr);if(d&&!u)return-1;if(!d&&u)return 1;let f=d3.exactMatch(r.multiaddr),h=d3.exactMatch(e.multiaddr);return f&&!h?-1:!f&&h?1:0}function FP(r,e){let t=Oc(r.multiaddr),n=Oc(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function $P(r,e){let t=Qe(r.multiaddr),n=Qe(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function KP(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function VP(r,e){let t=yt.exactMatch(r.multiaddr),n=yt.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Mw(r){return r.sort(UP).sort(KP).sort(VP).sort($P).sort(FP)}var N3=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[dr.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(q(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=$u()),this.dns)}},Pl=new N3;async function O3(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Fh("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await O3(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var Rl={maxParallelDials:Hh,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:Pl}},qh=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Rl.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Rl.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Rl.dialTimeout,this.connections=t.connections??new Ut,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??Rl.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new Qd({concurrency:t.maxParallelDials??Rl.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==Vt.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=$h(e);if(n!=null&&t.force!==!0){let i=Kh(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new H("dial-queue:already-connected")),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new H("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new Eo("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new H("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new H("dial-queue:start-dial"));let a=le([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??F3,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let d=[],u=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...u]);let f=await this.calculateMultiaddrs(n,u,{...e,signal:t});for(let h of f){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}d.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,d.map(h=>h.multiaddr.toString())),e?.onProgress?.(new H("dial-queue:calculated-addresses",d));for(let h of d){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new Eo("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...e,signal:t});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[Nw]:C(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return p}catch(p){if(this.log.error("dial failed to %a - %e",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[Dw]:C(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new un(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:q(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new Eo("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new _l("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let u=await this.components.peerStore.get(e);o.push(...u.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:f})=>f.toString()))}catch(u){if(u.name!=="NotFoundError")throw u}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let u=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(u){u.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,u)}}}let s=(await Promise.all(o.map(async u=>{let f=await O3(u.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.dialTransportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),h=a.get(f);if(h!=null){h.isCertified=h.isCertified||u.isCertified||!1;continue}a.set(f,u)}let c=[...a.values()];if(c.length===0)throw new Oh("The dial request has no valid addresses");let l=[];for(let u of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(u.multiaddr)||l.push(u);let d=this.addressSorter==null?Mw(l):l.sort(this.addressSorter);if(d.length===0)throw new _l("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:u})=>u.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",d.map(({multiaddr:u})=>u.toString())),d}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!yt.matches(o.multiaddr))!=null:!0}catch{}return!1}};var HP=Object.prototype.toString,qP=r=>HP.call(r)==="[object Error]",WP=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function $3(r){if(!(r&&qP(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")||t==="Failed to fetch"||t.startsWith("Failed to fetch (")&&t.endsWith(")")?!0:WP.has(t)}function zP(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Wh(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}var K3=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function GP(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function Bw(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function YP({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof K3)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t});if(await o.onFailedAttempt(c),Bw(n,a)<=0)throw s;let l=await o.shouldConsumeRetry(c),d=Bw(n,a);if(d<=0||i<=0)throw s;if(s instanceof TypeError&&!$3(s)){if(l)throw s;return o.signal?.throwIfAborted(),!1}if(!await o.shouldRetry(c))throw s;if(!l)return o.signal?.throwIfAborted(),!1;let u=GP(t,o),f=Math.min(u,d);return o.signal?.throwIfAborted(),f>0&&await new Promise((h,p)=>{let g=()=>{clearTimeout(m),o.signal?.removeEventListener("abort",g),p(o.signal.reason)},m=setTimeout(()=>{o.signal?.removeEventListener("abort",g),h()},f);o.unref&&m.unref?.(),o.signal?.addEventListener("abort",g,{once:!0})}),o.signal?.throwIfAborted(),!0}async function V3(r,e={}){if(e={...e},zP(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,Wh("factor",e.factor,{min:0,allowInfinity:!1}),Wh("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Wh("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Wh("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await YP({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var zh=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new It({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Uw(t)&&(this.queue.has(e)||this.queue.add(async n=>{await V3(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(us)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Uw(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function Uw(r){for(let e of r.tags.keys())if(e.startsWith(us))return!0;return!1}var F3=50,H3={maxConnections:Ow,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Gh=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??H3.maxConnections,this.maxConnections<1)throw new A("Connection Manager maxConnections must be greater than 0");this.connections=new Ut,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>kl(q(n))),this.deny=(t.deny??[]).map(n=>kl(q(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??H3.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new na({points:t.inboundConnectionThreshold??H3.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Vh({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>q(n))}),this.dialQueue=new qh(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Hh,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,resolvers:t.resolvers??{dnsaddr:Pl},connections:this.connections}),this.reconnectQueue=new zh({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await at(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await lt(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([Cl(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(e<1)throw new A("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new Ur("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n,multiaddrs:o}=$h(e);if(this.peerId.equals(n))throw new hi("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=Kh(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new H("dial-queue:already-connected")),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??F3});if(s.status!=="open")throw new is("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new ln("Duplicate multiaddr connection")),c;return a||i.push(s),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([Cl(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if(xt(e.remoteAddr)){let s=oe(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if(xt(e.remoteAddr)){let s=oe(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(xt(e.remoteAddr)){let o=oe(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>q(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var QP=1e4,ZP="1.0.0",JP="ping",eR="ipfs",Fw=32,tR=!0,Yh=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??eR}/${JP}/${ZP}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??QP,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??tR,this.timeout=new Gr({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[me]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now(),n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal});try{let o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=Cd(o);t=Date.now(),await Promise.all([s.write(Yt(Fw),{signal:n}),s.read({bytes:Fw,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(o){if(o.name!=="UnsupportedProtocolError")throw o;e.rtt=(Date.now()-t)/2}finally{this.timeout.cleanUp(n)}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var jh=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:R(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:R(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");let n=this,o=new xr;for await(let s of jt(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new Ur;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new Ur;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var Xh=globalThis.CustomEvent??Event;async function*io(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=fe(),a=fe(),c=!1,l,d=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=fe(),await i.promise),d)break;let g={done:!1};s.push(g),p().then(m=>{g.done=!0,g.ok=!0,g.value=m,o.dispatchEvent(new Xh("task-complete"))},m=>{g.done=!0,g.err=m,o.dispatchEvent(new Xh("task-complete"))})}c=!0,o.dispatchEvent(new Xh("task-complete"))}catch(p){l=p,o.dispatchEvent(new Xh("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*f(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let g=s[p];if(s.splice(p,1),p--,g.ok)yield g.value;else throw d=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(u()||(a=fe(),await a.promise),l!=null||(n?yield*f():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var Qh=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:R(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Tl("No peer routers available");if(e.toString()===this.peerId.toString())throw new Ph("Should not try to find self");let n=this,o=jt(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new Le}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Tl("No peer routers available");let n=this,o=Et(1024);for await(let s of io((async function*(){let i=jt(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Zh=class extends ie{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=le([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=fe(),yield(await Cl(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=le([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Yt(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await Pe(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var q3=32,W3=64,Jh=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=ot({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new Rh(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new Lh(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:q3,maxOutboundStreams:W3,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new A("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t)!==!1&&(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter?.has(t.id)!==!1&&(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var e1=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=ot({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=ot({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Xa.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new A("Transport must have a valid tag");if(this.transports.has(t))throw new A(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Uh(`No transport available for address ${String(e)}`);return t?.onProgress?.(new H("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new Ur("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new Dh)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),d=this.listeners.get(s)??[];d==null&&(d=[],this.listeners.set(s,d)),d.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let u=d.findIndex(f=>f===l);d.splice(u,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),a3.matches(c)?t.ipv4.attempts++:c3.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),a3.matches(c)&&t.ipv4.success++,c3.matches(c)&&t.ipv6.success++},u=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,u),t.errors.set(c.toString(),u),u}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===Xa.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Nh(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
32
|
+
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Xk=new RegExp(`(?:^${rn}$)|(?:^${ph}$)`),Qk=new RegExp(`^${rn}$`),Zk=new RegExp(`^${ph}$`),y3=r=>r&&r.exact?Xk:new RegExp(`(?:${Wo(r)}${rn}${Wo(r)})|(?:${Wo(r)}${ph}${Wo(r)})`,"g");y3.v4=r=>r&&r.exact?Qk:new RegExp(`${Wo(r)}${rn}${Wo(r)}`,"g");y3.v6=r=>r&&r.exact?Zk:new RegExp(`${Wo(r)}${ph}${Wo(r)}`,"g");var w3=y3;function b3(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function rw(){return!1}var{toString:Jk}=Object.prototype;function E3(r){return Jk.call(r)==="[object RegExp]"}var nw={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function x3(r,e={}){if(!E3(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(nw).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?nw[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function v3(r,e,{timeout:t}={}){try{return b3(()=>x3(r).test(e),{timeout:t})()}catch(n){if(rw(n))return!1;throw n}}var eP=15,tP=45,ow={timeout:400};function S3(r){return r.length>tP?!1:v3(w3.v6({exact:!0}),r,ow)}function sw(r){return r.length>eP?!1:v3(w3.v4({exact:!0}),r,ow)}var iw={http:"80",https:"443",ws:"80",wss:"443"},rP=["http","https","ws","wss"];function mh(r,e){e=e??{};let t=e.defaultDnsType??"dns",{scheme:n,hostname:o,port:s,path:i}=nP(r),a=[oP(o,t),sP(s,n),iP(n)];i!=null&&a.push(aP(i));let c="/"+a.filter(l=>!!l).reduce((l,d)=>l.concat(d),[]).join("/");return q(c)}function nP(r){let[e]=r.split(":");rP.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o,pathname:s,search:i}=new URL(r);if(o==null||o===""){let c=cP(e);c!=null&&(o=c),c==null&&t==="http:"&&(o="80")}let a;return s!=null&&s!==""&&s!=="/"&&(s.startsWith("/")&&(s=s.substring(1)),a=s),i!=null&&i!==""&&(a=a??"",a+=i),{scheme:e,hostname:n,port:o,path:a}}function oP(r,e){if(!(r==null||r==="")){if(sw(r))return["ip4",r];if(S3(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(S3(t))return["ip6",t]}return[e,r]}}function sP(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function iP(r){if(r.match(/^tcp$|^udp$/)==null)return r==="https"?["/tls/http"]:r==="wss"?["/tls/ws"]:[r]}function aP(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function cP(r){if(!(r==null||r===""||iw[r]==null))return iw[r]}var lP=["https://trustless-gateway.link","https://4everland.io"],uP=2336;function dP(r){return r=r.toString(),{id:Jr(G.createV1(uP,dt.digest(C(r)))),multiaddrs:[mh(r)]}}function fP(r){return new URL(R(r.id.toMultihash().digest))}var A3=class{gateways;shuffle;constructor(e={}){this.gateways=(e.gateways??lP).map(t=>dP(t)),this.shuffle=e.shuffle??!0}async*findProviders(e,t){yield*(this.shuffle?this.gateways.toSorted(()=>Math.random()>.5?1:-1):this.gateways).map(n=>({...n,protocols:["transport-ipfs-gateway-http"],routing:"http-gateway-routing"}))}toString(){return`HTTPGatewayRouter([${this.gateways.map(e=>fP(e)).join(", ")}])`}};function I3(r={}){return new A3(r)}var T3=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}toString(){return"Libp2pRouter()"}};function _3(r){return new T3(r)}function hP(r){return r[Symbol.asyncIterator]!=null}function pP(r){if(hP(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var no=pP;function mP(r){return typeof r?.then=="function"}var vl=class extends Jn{data;constructor(){super(),this.data=new Map}put(e,t,n){n?.signal?.throwIfAborted();let o;if(t instanceof Uint8Array)o=[t];else{let s=no(t);if(mP(s))return s.then(i=>this._put(e,i,n));o=s}return this._put(e,o,n)}_put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(ut.encode(e.multihash.bytes),t),e}*get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(ut.encode(e.multihash.bytes));if(n==null)throw new Rr;yield*n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(ut.encode(e.multihash.bytes))}async delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(ut.encode(e.multihash.bytes))}*getAll(e){e?.signal?.throwIfAborted();for(let[t,n]of this.data.entries())yield{cid:G.createV1(Mn,ke(ut.decode(t))),bytes:(async function*(){yield*n})()},e?.signal?.throwIfAborted()}};var sJ=Pr("blockstore:core:tiered");var aw="SHARDING";function yP(r){return r[Symbol.asyncIterator]!=null}function wP(r,e){return yP(r)?(async function*(){yield*(await no(r)).sort(e)})():(function*(){yield*no(r).sort(e)})()}var gh=wP;var oo=class{put(e,t,n){return Promise.reject(new Error(".put is not implemented"))}get(e,t){return Promise.reject(new Error(".get is not implemented"))}has(e,t){return Promise.reject(new Error(".has is not implemented"))}delete(e,t){return Promise.reject(new Error(".delete is not implemented"))}async*putMany(e,t={}){for await(let{key:n,value:o}of e)await this.put(n,o,t),yield n}async*getMany(e,t={}){for await(let n of e)yield{key:n,value:await this.get(n,t)}}async*deleteMany(e,t={}){for await(let n of e)await this.delete(n,t),yield n}batch(){let e=[],t=[];return{put(n,o){e.push({key:n,value:o})},delete(n){t.push(n)},commit:async n=>{await er(this.putMany(e,n)),e=[],await er(this.deleteMany(t,n)),t=[]}}}async*_all(e,t){throw new Error("._all is not implemented")}async*_allKeys(e,t){throw new Error("._allKeys is not implemented")}query(e,t){let n=this._all(e,t);if(e.prefix!=null){let o=e.prefix;n=Zr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>gh(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Zr(n,()=>o++>=s)}return e.limit!=null&&(n=Ho(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Zr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Zr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>gh(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Zr(n,()=>s++>=o)}return e.limit!=null&&(n=Ho(n,e.limit)),n}};var Js=class extends oo{data;constructor(){super(),this.data=new Map}put(e,t,n){return n?.signal?.throwIfAborted(),this.data.set(e.toString(),t),e}get(e,t){t?.signal?.throwIfAborted();let n=this.data.get(e.toString());if(n==null)throw new Rr;return n}has(e,t){return t?.signal?.throwIfAborted(),this.data.has(e.toString())}delete(e,t){t?.signal?.throwIfAborted(),this.data.delete(e.toString())}*_all(e,t){t?.signal?.throwIfAborted();for(let[n,o]of this.data.entries())yield{key:new Fe(n),value:o},t?.signal?.throwIfAborted()}*_allKeys(e,t){t?.signal?.throwIfAborted();for(let n of this.data.keys())yield new Fe(n),t?.signal?.throwIfAborted()}};var BJ=new Fe(aw);var QJ=Pr("datastore:core:tiered");async function lw(r){if(r.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new A("Private network is enforced, but no protector was provided");return r}var Sl;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={publicKey:ae(0),payloadType:ae(0),payload:ae(0),signature:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.publicKey=t.bytes();break}case 2:{s.payloadType=t.bytes();break}case 3:{s.payload=t.bytes();break}case 5:{s.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(Sl||(Sl={}));var yh=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var vr=class r{static createFromProtobuf=e=>{let t=Sl.decode(e),n=tt(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t,n)=>{if(t==null)throw new Error("Missing private key");let o=e.domain,s=e.codec,i=e.marshal(),a=uw(o,s,i),c=await t.sign(a.subarray(),n);return new r({publicKey:t.publicKey,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t,n)=>{let o=r.createFromProtobuf(e);if(!await o.validate(t,n))throw new yh("Envelope signature is not valid for the given domain");return o};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:o,signature:s}=e;this.publicKey=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){return this.marshaled==null&&(this.marshaled=Sl.encode({publicKey:ft(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return e==null?!1:ee(this.marshal(),e.marshal())}async validate(e,t){let n=uw(e,this.payloadType,this.payload);return this.publicKey.verify(n.subarray(),this.signature,t)}},uw=(r,e,t)=>{let n=C(r),o=Mt(n.byteLength),s=Mt(e.length),i=Mt(t.length);return new X(o,n,s,e,i,t)};var dw="libp2p-peer-record",fw=Uint8Array.from([3,1]);var Al;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=ne((s,i,a={})=>{a.lengthDelimited!==!1&&i.fork(),s.multiaddr!=null&&s.multiaddr.byteLength>0&&(i.uint32(10),i.bytes(s.multiaddr)),a.lengthDelimited!==!1&&i.ldelim()},(s,i,a={})=>{let c={multiaddr:ae(0)},l=i==null?s.len:s.pos+i;for(;s.pos<l;){let d=s.uint32();switch(d>>>3){case 1:{c.multiaddr=s.bytes();break}default:{s.skipType(d&7);break}}}return c})),o),n.encode=s=>re(s,n.codec()),n.decode=(s,i)=>te(s,n.codec(),i)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=ne((n,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(o.uint32(10),o.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(o.uint32(16),o.uint64(n.seq)),n.addresses!=null)for(let i of n.addresses)o.uint32(26),r.AddressInfo.codec().encode(i,o);s.lengthDelimited!==!1&&o.ldelim()},(n,o,s={})=>{let i={peerId:ae(0),seq:0n,addresses:[]},a=o==null?n.len:n.pos+o;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{i.peerId=n.bytes();break}case 2:{i.seq=n.uint64();break}case 3:{if(s.limits?.addresses!=null&&i.addresses.length===s.limits.addresses)throw new Ne('Decode error - map field "addresses" had too many elements');i.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:s.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return i})),t),r.encode=n=>re(n,r.codec()),r.decode=(n,o)=>te(n,r.codec(),o)})(Al||(Al={}));function hw(r,e){let t=(n,o)=>n.toString().localeCompare(o.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,o)=>e[o].equals(n)))}var Qt=class r{static createFromProtobuf=e=>{let t=Al.decode(e),n=Ze(ke(t.peerId)),o=(t.addresses??[]).map(i=>q(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=dw;static CODEC=fw;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:o}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=o??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Al.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!hw(this.multiaddrs,e.multiaddrs))}};var so;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&i.value.byteLength>0&&(a.uint32(18),a.bytes(i.value)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:"",value:ae(0)},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=i.bytes();break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>re(i,o.codec()),o.decode=(i,a)=>te(i,o.codec(),a)})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=ne((i,a,c={})=>{c.lengthDelimited!==!1&&a.fork(),i.key!=null&&i.key!==""&&(a.uint32(10),a.string(i.key)),i.value!=null&&(a.uint32(18),bh.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a,c={})=>{let l={key:""},d=a==null?i.len:i.pos+a;for(;i.pos<d;){let u=i.uint32();switch(u>>>3){case 1:{l.key=i.string();break}case 2:{l.value=bh.codec().decode(i,i.uint32(),{limits:c.limits?.value});break}default:{i.skipType(u&7);break}}}return l})),s),o.encode=i=>re(i,o.codec()),o.decode=(i,a)=>te(i,o.codec(),a)})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),wh.codec().encode(a,s);if(o.protocols!=null)for(let a of o.protocols)s.uint32(18),s.string(a);if(o.publicKey!=null&&(s.uint32(34),s.bytes(o.publicKey)),o.peerRecordEnvelope!=null&&(s.uint32(42),s.bytes(o.peerRecordEnvelope)),o.metadata!=null&&o.metadata.size!==0)for(let[a,c]of o.metadata.entries())s.uint32(50),r.Peer$metadataEntry.codec().encode({key:a,value:c},s);if(o.tags!=null&&o.tags.size!==0)for(let[a,c]of o.tags.entries())s.uint32(58),r.Peer$tagsEntry.codec().encode({key:a,value:c},s);o.updated!=null&&(s.uint32(64),s.uint64Number(o.updated)),i.lengthDelimited!==!1&&s.ldelim()},(o,s,i={})=>{let a={addresses:[],protocols:[],metadata:new Map,tags:new Map},c=s==null?o.len:o.pos+s;for(;o.pos<c;){let l=o.uint32();switch(l>>>3){case 1:{if(i.limits?.addresses!=null&&a.addresses.length===i.limits.addresses)throw new Ne('Decode error - map field "addresses" had too many elements');a.addresses.push(wh.codec().decode(o,o.uint32(),{limits:i.limits?.addresses$}));break}case 2:{if(i.limits?.protocols!=null&&a.protocols.length===i.limits.protocols)throw new Ne('Decode error - map field "protocols" had too many elements');a.protocols.push(o.string());break}case 4:{a.publicKey=o.bytes();break}case 5:{a.peerRecordEnvelope=o.bytes();break}case 6:{if(i.limits?.metadata!=null&&a.metadata.size===i.limits.metadata)throw new Ac('Decode error - map field "metadata" had too many elements');let d=r.Peer$metadataEntry.codec().decode(o,o.uint32());a.metadata.set(d.key,d.value);break}case 7:{if(i.limits?.tags!=null&&a.tags.size===i.limits.tags)throw new Ac('Decode error - map field "tags" had too many elements');let d=r.Peer$tagsEntry.codec().decode(o,o.uint32(),{limits:{value:i.limits?.tags$value}});a.tags.set(d.key,d.value);break}case 8:{a.updated=o.uint64Number();break}default:{o.skipType(l&7);break}}}return a})),n),r.encode=o=>re(o,r.codec()),r.decode=(o,s)=>te(o,r.codec(),s)})(so||(so={}));var wh;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.multiaddr!=null&&t.multiaddr.byteLength>0&&(n.uint32(10),n.bytes(t.multiaddr)),t.isCertified!=null&&(n.uint32(16),n.bool(t.isCertified)),t.observed!=null&&(n.uint32(24),n.uint64Number(t.observed)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={multiaddr:ae(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.multiaddr=t.bytes();break}case 2:{s.isCertified=t.bool();break}case 3:{s.observed=t.uint64Number();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(wh||(wh={}));var bh;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.value!=null&&t.value!==0&&(n.uint32(8),n.uint32(t.value)),t.expiry!=null&&(n.uint32(16),n.uint64(t.expiry)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={value:0},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.value=t.uint32();break}case 2:{s.expiry=t.uint64();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>re(t,r.codec()),r.decode=(t,n)=>te(t,r.codec(),n)})(bh||(bh={}));function bP(r,e){if(r.publicKey!=null||e.publicKey==null)return r;let t;r.type==="RSA"&&(t=r.toMultihash());let n=tt(e.publicKey,t);return xn(n)}function pw(r,e,t){let n=so.decode(e);return ba(r,n,t)}function ba(r,e,t){let n=new Map,o=BigInt(Date.now());for(let[s,i]of e.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...e,id:bP(r,e),addresses:e.addresses.filter(({observed:s})=>s!=null&&s>Date.now()-t).map(({multiaddr:s,isCertified:i})=>({multiaddr:q(s),isCertified:i??!1})),metadata:e.metadata,peerRecordEnvelope:e.peerRecordEnvelope??void 0,tags:n}}function mw(r,e){return EP(r.addresses,e.addresses)&&xP(r.protocols,e.protocols)&&vP(r.publicKey,e.publicKey)&&SP(r.peerRecordEnvelope,e.peerRecordEnvelope)&&AP(r.metadata,e.metadata)&&IP(r.tags,e.tags)}function EP(r,e){return yw(r,e,(t,n)=>!(t.isCertified!==n.isCertified||!ee(t.multiaddr,n.multiaddr)))}function xP(r,e){return yw(r,e,(t,n)=>t===n)}function vP(r,e){return gw(r,e)}function SP(r,e){return gw(r,e)}function AP(r,e){return ww(r,e,(t,n)=>ee(t,n))}function IP(r,e){return ww(r,e,(t,n)=>t.value===n.value&&t.expiry===n.expiry)}function gw(r,e){return r==null&&e==null?!0:r!=null&&e!=null?ee(r,e):!1}function yw(r,e,t){if(r.length!==e.length)return!1;for(let n=0;n<r.length;n++)if(!t(r[n],e[n]))return!1;return!0}function ww(r,e,t){if(r.size!==e.size)return!1;for(let[n,o]of r.entries()){let s=e.get(n);if(s==null||!t(o,s))return!1}return!0}var C3="/peers/";function Il(r){if(!Rt(r)||r.type==null)throw new A("Invalid PeerId");let e=r.toCID().toString();return new Fe(`${C3}${e}`)}async function bw(r,e,t,n,o){let s=new Map;for(let i of t){if(i==null)continue;if(i.multiaddr instanceof Uint8Array&&(i.multiaddr=q(i.multiaddr)),!yn(i.multiaddr))throw new A("Multiaddr was invalid");if(!await e(r,i.multiaddr,o))continue;let a=i.isCertified??!1,c=i.multiaddr.toString(),l=s.get(c);l!=null?i.isCertified=l.isCertified||a:s.set(c,{multiaddr:i.multiaddr,isCertified:a})}return[...s.values()].sort((i,a)=>i.multiaddr.toString().localeCompare(a.multiaddr.toString())).map(({isCertified:i,multiaddr:a})=>{let c=a.getComponents().find(l=>l.code===421)?.value;return r.equals(c)&&(a=a.decapsulate(q(`/p2p/${r}`))),{isCertified:i,multiaddr:a.bytes}})}async function xh(r,e,t,n){if(e==null)throw new A("Invalid PeerData");if(e.publicKey!=null&&r.publicKey!=null&&!e.publicKey.equals(r.publicKey))throw new A("publicKey bytes do not match peer id publicKey bytes");let o=n.existingPeer?.peer;if(o!=null&&!r.equals(o.id))throw new A("peer id did not match existing peer id");let s=o?.addresses??[],i=new Set(o?.protocols??[]),a=o?.metadata??new Map,c=o?.tags??new Map,l=o?.peerRecordEnvelope;if(t==="patch"){if((e.multiaddrs!=null||e.addresses!=null)&&(s=[],e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=Eh(f,{validate:Ew})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Eh(f,{validate:xw,map:vw})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(f=>({isCertified:!1,multiaddr:f}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let f=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,p]of f)p==null?a.delete(h):a.set(h,p);a=Eh([...a.entries()],{validate:Ew})}if(e.tags!=null){let f=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[p,g]of f)g==null?h.delete(p):h.set(p,g);c=Eh([...h.entries()],{validate:xw,map:vw})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d;o?.id.publicKey!=null?d=ft(o.id.publicKey):e.publicKey!=null?d=ft(e.publicKey):r.publicKey!=null&&(d=ft(r.publicKey));let u={addresses:await bw(r,n.addressFilter??(async()=>!0),s,n.existingPeer?.peerPB.addresses,n),protocols:[...i.values()].sort((f,h)=>f.localeCompare(h)),metadata:a,tags:c,publicKey:d,peerRecordEnvelope:l};return u.addresses.forEach(f=>{f.observed=n.existingPeer?.peerPB.addresses?.find(h=>ee(h.multiaddr,h.multiaddr))?.observed??Date.now()}),r.type!=="RSA"&&delete u.publicKey,u}function Eh(r,e){let t=new Map;for(let[n,o]of r)o!=null&&e.validate(n,o);for(let[n,o]of r.sort(([s],[i])=>s.localeCompare(i)))o!=null&&t.set(n,e.map?.(n,o)??o);return t}function Ew(r,e){if(typeof r!="string")throw new A("Metadata key must be a string");if(!(e instanceof Uint8Array))throw new A("Metadata value must be a Uint8Array")}function xw(r,e){if(typeof r!="string")throw new A("Tag name must be a string");if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new A("Tag value must be an integer");if(e.value<0||e.value>100)throw new A("Tag value must be between 0-100")}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new A("Tag ttl must be an integer");if(e.ttl<0)throw new A("Tag ttl must be between greater than 0")}}function vw(r,e){let t;e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl)));let n={value:e.value??0};return t!=null&&(n.expiry=t),n}function Sw(r){let e=r.toString().split("/")[2],t=G.parse(e,ut);return Jr(t)}function k3(r,e,t){let n=Sw(r);return pw(n,e,t)}function TP(r,e){return{prefix:C3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(k3(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(k3(n.key,n.value,e),k3(o.key,o.value,e)))}}var vh=class{peerId;datastore;locks;addressFilter;log;maxAddressAge;maxPeerAge;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.locks=eo({name:"libp2p_peer_store_locks",metrics:e.metrics}),this.maxAddressAge=t.maxAddressAge??36e5,this.maxPeerAge=t.maxPeerAge??216e5}getLock(e){let t=this.locks.get(e);return t==null&&(t={refs:0,lock:al({name:e.toString(),singleProcess:!0})},this.locks.set(e,t)),t.refs++,t}maybeRemoveLock(e,t){t.refs--,t.refs===0&&(t.lock.finalize(),this.locks.delete(e))}async getReadLock(e,t){let n=this.getLock(e);try{let o=await n.lock.readLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async getWriteLock(e,t){let n=this.getLock(e);try{let o=await n.lock.writeLock(t);return()=>{o(),this.maybeRemoveLock(e,n)}}catch(o){throw this.maybeRemoveLock(e,n),o}}async has(e,t){try{return await this.load(e,t),!0}catch(n){if(n.name!=="NotFoundError")throw n}return!1}async delete(e,t){this.peerId.equals(e)||await this.datastore.delete(Il(e),t)}async load(e,t){let n=Il(e),o=await this.datastore.get(n,t),s=so.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Le;return ba(e,s,this.peerId.equals(e)?1/0:this.maxAddressAge)}async save(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"patch",{...n,addressFilter:this.addressFilter});return this.#t(e,s,o)}async patch(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"patch",{...n,addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async merge(e,t,n){let o=await this.#e(e,n),s=await xh(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,o)}async*all(e){for await(let{key:t,value:n}of this.datastore.query(TP(e??{},this.maxAddressAge),e)){let o=Sw(t);if(o.equals(this.peerId))continue;let s=so.decode(n);if(this.#r(o,s)){await this.datastore.delete(t,e);continue}yield ba(o,s,this.peerId.equals(o)?1/0:this.maxAddressAge)}}async#e(e,t){try{let n=Il(e),o=await this.datastore.get(n,t),s=so.decode(o);if(this.#r(e,s))throw await this.datastore.delete(n,t),new Le;return{peerPB:s,peer:ba(e,s,this.maxAddressAge)}}catch(n){n.name!=="NotFoundError"&&this.log.error("invalid peer data found in peer store - %e",n)}}async#t(e,t,n,o){t.updated=Date.now();let s=so.encode(t);return await this.datastore.put(Il(e),s,o),{peer:ba(e,t,this.maxAddressAge),previous:n?.peer,updated:n==null||!mw(t,n.peerPB)}}#r(e,t){if(t.updated==null)return!0;if(this.peerId.equals(e))return!1;let n=t.updated<Date.now()-this.maxPeerAge,o=Date.now()-this.maxAddressAge,s=t.addresses.filter(i=>i.observed!=null&&i.observed>o);return n&&s.length===0}};var P3=class{store;events;peerId;log;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-store"),this.events=e.events,this.peerId=e.peerId,this.store=new vh(e,t)}[Symbol.toStringTag]="@libp2p/peer-store";async forEach(e,t){for await(let n of this.store.all(t))e(n)}async all(e){return no(this.store.all(e))}async delete(e,t){let n=await this.store.getReadLock(e,t);try{await this.store.delete(e,t)}finally{n()}}async has(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.has(e,t)}finally{this.log.trace("has release read lock"),n?.()}}async get(e,t){let n=await this.store.getReadLock(e,t);try{return await this.store.load(e,t)}finally{n?.()}}async getInfo(e,t){let n=await this.get(e,t);return{id:n.id,multiaddrs:n.addresses.map(({multiaddr:o})=>o)}}async save(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.save(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async patch(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.patch(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async merge(e,t,n){let o=await this.store.getWriteLock(e,n);try{let s=await this.store.merge(e,t,n);return this.#e(e,s),s.peer}finally{o?.()}}async consumePeerRecord(e,t,n){let o=Rt(t)?t:Rt(t?.expectedPeer)?t.expectedPeer:void 0,s=Rt(t)||t===void 0?n:t,i=await vr.openAndCertify(e,Qt.DOMAIN,s),a=Jr(i.publicKey.toCID());if(o?.equals(a)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",o,a),!1;let c=Qt.createFromProtobuf(i.payload),l;try{l=await this.get(a,s)}catch(d){if(d.name!=="NotFoundError")throw d}if(l?.peerRecordEnvelope!=null){let d=vr.createFromProtobuf(l.peerRecordEnvelope),u=Qt.createFromProtobuf(d.payload);if(u.seqNumber>=c.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),!1}return await this.patch(c.peerId,{peerRecordEnvelope:e,addresses:c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d}))},s),!0}#e(e,t){t.updated&&(this.peerId.equals(e)?this.events.safeDispatchEvent("self:peer:update",{detail:t}):this.events.safeDispatchEvent("peer:update",{detail:t}))}};function Aw(r,e={}){return new P3(r,e)}var Iw=864e13;var Sh=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:dns-mappings"),this.mappings=ot({name:"libp2p_address_manager_dns_mappings",metrics:e.metrics})}has(e){let t=oe(e),n=t.host;(t.type==="ip4"||t.type==="ip6")&&t.sni!=null&&(n=t.sni);for(let o of this.mappings.values())if(o.domain===n)return!0;return!1}add(e,t){t.forEach(n=>{this.log("add DNS mapping %s to %s",n,e);let o=Ki(n)===!0;this.mappings.set(n,{domain:e,verified:o,expires:o?Iw-Date.now():0,lastVerified:o?Iw-Date.now():void 0})})}remove(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries())s.domain===t.sni&&(this.log("removing %s to %s DNS mapping %e",o,s.domain),this.mappings.delete(o),n=n||s.verified);return n}getAll(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n].multiaddr;if(!xt(o))continue;let s=oe(o);for(let[i,a]of this.mappings.entries()){if(s.host!==i)continue;let c=this.maybeAddSNIComponent(o,a.domain);c!=null&&(e.splice(n,1),n--,t.push({multiaddr:c,verified:a.verified,type:"dns-mapping",expires:a.expires,lastVerified:a.lastVerified}))}}return t}maybeAddSNIComponent(e,t){let n=e.getComponents();for(let o=0;o<n.length;o++)if(n[o].code===448&&n[o+1]?.code!==449)return n.splice(o+1,0,{name:"sni",code:449,value:t}),q(n)}confirm(e,t){let n=oe(e),o=n.host;(n.type==="ip4"||n.type==="ip6")&&n.sni!=null&&(o=n.sni);let s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("marking %s to %s DNS mapping as verified",i,a.domain),s=a.verified,a.verified=!0,a.expires=Date.now()+t,a.lastVerified=Date.now());return s}unconfirm(e,t){let n=oe(e);if(n.type!=="ip4"&&n.type!=="ip6")return!1;let o=n.sni??n.host,s=!1;for(let[i,a]of this.mappings.entries())a.domain===o&&(this.log("removing verification of %s to %s DNS mapping",i,a.domain),s=s||a.verified,a.verified=!1,a.expires=Date.now()+t);return s}};var Ah=class{log;mappings;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:ip-mappings"),this.mappings=ot({name:"libp2p_address_manager_ip_mappings",metrics:e.metrics})}has(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;for(let n of this.mappings.values())for(let o of n)if(o.externalIp===t.host)return!0;return!1}add(e,t,n,o=t,s="tcp"){let i=`${e}-${t}-${s}`,a=this.mappings.get(i)??[],c={internalIp:e,internalPort:t,externalIp:n,externalPort:o,externalFamily:zr(n)?4:6,protocol:s,verified:!1,expires:0};a.push(c),this.mappings.set(i,a)}remove(e){let t=oe(e);if(t.type!=="ip4"&&t.type!=="ip6")return!1;let n=!1;for(let[o,s]of this.mappings.entries()){for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===t.host&&a.externalPort===t.port&&a.protocol===t.protocol&&(this.log("removing %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,t.host,t.port,t.protocol),n=n||a.verified,s.splice(i,1),i--)}s.length===0&&this.mappings.delete(o)}return n}getAll(e){let t=[];for(let{multiaddr:n}of e){if(!xt(n))continue;let o=oe(n);if(o.type!=="ip4"&&o.type!=="ip6")continue;let s;if(o.protocol==="tcp"?s=`${o.host}-${o.port}-tcp`:o.protocol==="udp"&&(s=`${o.host}-${o.port}-udp`),s==null)continue;let i=this.mappings.get(s);if(i!=null)for(let a of i)t.push({multiaddr:this.maybeOverrideIp(n,a.externalIp,a.externalFamily,a.protocol,a.externalPort),verified:a.verified,type:"ip-mapping",expires:a.expires,lastVerified:a.lastVerified})}return t}maybeOverrideIp(e,t,n,o,s){let i=e.getComponents(),a=i.findIndex(l=>l.code===4||l.code===41),c=i.findIndex(l=>l.name===o);return a>-1&&c>-1?(i[a].value=t,i[a].code=n===4?4:41,i[c].value=`${s}`,q(i)):e}confirm(e,t){if(!xt(e))return!1;let n=oe(e),o=!1;for(let s of this.mappings.values())for(let i of s)i.externalIp===n.host&&(this.log("marking %s to %s IP mapping as verified",i.internalIp,i.externalIp),o=i.verified,i.verified=!0,i.expires=Date.now()+t,i.lastVerified=Date.now());return o}unconfirm(e,t){if(!xt(e))return!1;let n=oe(e),o=!1;for(let s of this.mappings.values())for(let i=0;i<s.length;i++){let a=s[i];a.externalIp===n.host&&a.externalPort===n.port&&a.protocol===n.protocol&&(this.log("removing verification of %s:%s to %s:%s %s IP mapping",a.externalIp,a.externalPort,n.host,n.port,n.protocol),o=o||a.verified,a.verified=!1,a.expires=Date.now()+t)}return o}};var _P={maxObservedAddresses:10},Ih=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ot({name:"libp2p_address_manager_observed_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??_P.maxObservedAddresses}has(e){return this.addresses.has(e.toString())}removePrefixed(e){for(let t of this.addresses.keys())t.toString().startsWith(e)&&this.addresses.delete(t)}add(e){this.addresses.size!==this.maxObservedAddresses&&(Qe(e)||o7(e)||(this.log("adding observed address %a",e),this.addresses.set(e.toString(),{verified:!1,expires:0})))}getAll(){return Array.from(this.addresses).map(([e,t])=>({multiaddr:q(e),verified:t.verified,type:"observed",expires:t.expires,lastVerified:t.lastVerified}))}remove(e){let t=this.addresses.get(e.toString())?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(e.toString()),t}confirm(e,t){let n=e.toString(),o=this.addresses.get(n)??{verified:!1,expires:Date.now()+t,lastVerified:Date.now()},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.log("marking observed address %a as verified",n),this.addresses.set(n,o),s}};var CP={maxObservedAddresses:10},Th=class{log;addresses;maxObservedAddresses;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:address-manager:observed-addresses"),this.addresses=ot({name:"libp2p_address_manager_transport_addresses",metrics:e.metrics}),this.maxObservedAddresses=t.maxObservedAddresses??CP.maxObservedAddresses}get(e,t){if(Qe(e))return{multiaddr:e,verified:!0,type:"transport",expires:Date.now()+t,lastVerified:Date.now()};let n=this.toKey(e),o=this.addresses.get(n);return o==null&&(o={verified:!xt(e),expires:0},this.addresses.set(n,o)),{multiaddr:e,verified:o.verified,type:"transport",expires:o.expires,lastVerified:o.lastVerified}}has(e){let t=this.toKey(e);return this.addresses.has(t)}remove(e){let t=this.toKey(e),n=this.addresses.get(t)?.verified??!1;return this.log("removing observed address %a",e),this.addresses.delete(t),n}confirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0,lastVerified:0},s=o.verified;return o.verified=!0,o.expires=Date.now()+t,o.lastVerified=Date.now(),this.addresses.set(n,o),s}unconfirm(e,t){let n=this.toKey(e),o=this.addresses.get(n)??{verified:!1,expires:0},s=o.verified;return o.verified=!1,o.expires=Date.now()+t,this.addresses.set(n,o),s}toKey(e){if(!xt(e))return e.toString();let t=oe(e);return`${t.host}-${t.port}-${t.protocol}`}};var Tw=6e4,_w={maxObservedAddresses:10,addressVerificationTTL:Tw*10,addressVerificationRetry:Tw*5},kP=r=>r;function R3(r,e){let t=r.getComponents().findLast(n=>n.code===421)?.value;return t!=null&&Me(t).equals(e)&&(r=r.decapsulate(q(`/p2p/${e.toString()}`))),r}var _h=class{log;components;listen;announce;appendAnnounce;announceFilter;observed;dnsMappings;ipMappings;transportAddresses;observedAddressFilter;addressVerificationTTL;addressVerificationRetry;constructor(e,t={}){let{listen:n=[],announce:o=[],appendAnnounce:s=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(i=>i.toString()),this.announce=new Set(o.map(i=>i.toString())),this.appendAnnounce=new Set(s.map(i=>i.toString())),this.observed=new Ih(e,t),this.dnsMappings=new Sh(e,t),this.ipMappings=new Ah(e,t),this.transportAddresses=new Th(e,t),this.announceFilter=t.announceFilter??kP,this.observedAddressFilter=Et(1024),this.addressVerificationTTL=t.addressVerificationTTL??_w.addressVerificationTTL,this.addressVerificationRetry=t.addressVerificationRetry??_w.addressVerificationRetry,this._updatePeerStoreAddresses=Wn(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}[Symbol.toStringTag]="@libp2p/address-manager";_updatePeerStoreAddresses(){let e=this.getAddresses().map(t=>t.getComponents().findLast(n=>n.code===421)?.value===this.components.peerId.toString()?t.decapsulate(`/p2p/${this.components.peerId.toString()}`):t);this.components.peerStore.patch(this.components.peerId,{multiaddrs:e}).catch(t=>{this.log.error("error updating addresses - %e",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>q(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>q(e))}getAppendAnnounceAddrs(){return Array.from(this.appendAnnounce).map(e=>q(e))}getObservedAddrs(){return this.observed.getAll().map(e=>e.multiaddr)}addObservedAddr(e){let t=oe(e),n;switch(t.type){case"ip4":{n=`${t.host}:${t.port}`;break}case"ip6":{n=`[${t.host}]:${t.port}`;break}default:return}this.observedAddressFilter.has(n)||(this.observedAddressFilter.add(n),e=R3(e,this.components.peerId),!this.ipMappings.has(e)&&(this.dnsMappings.has(e)||this.observed.add(e)))}confirmObservedAddr(e,t){e=R3(e,this.components.peerId);let n=!0;(t?.type==="transport"||this.transportAddresses.has(e))&&!this.transportAddresses.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="dns-mapping"||this.dnsMappings.has(e))&&!this.dnsMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="ip-mapping"||this.ipMappings.has(e))&&!this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1),(t?.type==="observed"||this.observed.has(e))&&(this.maybeUpgradeToIPMapping(e)?(this.ipMappings.confirm(e,t?.ttl??this.addressVerificationTTL),n=!1):!this.observed.confirm(e,t?.ttl??this.addressVerificationTTL)&&n&&(n=!1)),n||this._updatePeerStoreAddresses()}removeObservedAddr(e,t){e=R3(e,this.components.peerId);let n=!1;this.observed.has(e)&&!this.observed.remove(e)&&n&&(n=!1),this.transportAddresses.has(e)&&!this.transportAddresses.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.dnsMappings.has(e)&&!this.dnsMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),this.ipMappings.has(e)&&!this.ipMappings.unconfirm(e,t?.ttl??this.addressVerificationRetry)&&n&&(n=!1),n&&this._updatePeerStoreAddresses()}getAddresses(){let e=new Set,t=this.getAddressesWithMetadata().filter(n=>{if(!n.verified)return!1;let o=n.multiaddr.toString();return e.has(o)?!1:(e.add(o),!0)}).map(n=>n.multiaddr);return this.announceFilter(t.map(n=>{let o=q(n);return o.getComponents().pop()?.value===this.components.peerId.toString()?o:o.encapsulate(`/p2p/${this.components.peerId.toString()}`)}))}getAddressesWithMetadata(){let e=this.getAnnounceAddrs();if(e.length>0)return this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(e)}),e.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()}));let t=[];t=t.concat(this.components.transportManager.getAddrs().map(o=>this.transportAddresses.get(o,this.addressVerificationTTL)));let n=this.getAppendAnnounceAddrs();return n.length>0&&(this.components.transportManager.getListeners().forEach(o=>{o.updateAnnounceAddrs(n)}),t=t.concat(n.map(o=>({multiaddr:o,verified:!0,type:"announce",expires:Date.now()+this.addressVerificationTTL,lastVerified:Date.now()})))),t=t.concat(this.observed.getAll()),t=t.concat(this.ipMappings.getAll(t)),t=t.concat(this.dnsMappings.getAll(t)),t}addDNSMapping(e,t){this.dnsMappings.add(e,t)}removeDNSMapping(e){this.dnsMappings.remove(q(`/dns/${e}`))&&this._updatePeerStoreAddresses()}addPublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.add(e,t,n,o,s),this.observed.removePrefixed(`/ip${zr(n)?4:6}/${n}/${s}/${o}`)}removePublicAddressMapping(e,t,n,o=t,s="tcp"){this.ipMappings.remove(q(`/ip${zr(n)?4:6}/${n}/${s}/${o}`))&&this._updatePeerStoreAddresses()}maybeUpgradeToIPMapping(e){if(this.ipMappings.has(e)||!xt(e))return!1;let t=oe(e);if(t.type!=="ip4"||Ki(t.host)===!0)return!1;let n=this.components.transportManager.getListeners(),o=[s=>ro.exactMatch(s)||Qs.exactMatch(s),s=>Xs.exactMatch(s),s=>M9.exactMatch(s)];for(let s of o){if(!s(e))continue;let i=n.filter(l=>l.getAddrs().filter(d=>oe(d).type==="ip4"&&s(d)).length>0);if(i.length!==1)continue;let a=i[0].getAddrs().filter(l=>!Oc(l)).pop();if(a==null)continue;let c=oe(a);return c.port==null?!1:(this.observed.remove(e),this.ipMappings.add(c.host,c.port,t.host,t.port,t.protocol),!0)}return!1}};var Cw;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.NOT_FOUND="Not found"})(Cw||(Cw={}));var Ch=class extends Error{constructor(e="Missing service"){super(e),this.name="MissingServiceError"}},kh=class extends Error{constructor(e="Unmet service dependencies"){super(e),this.name="UnmetServiceDependenciesError"}},Ea=class extends Error{constructor(e="No content routers available"){super(e),this.name="NoContentRoutersError"}},Tl=class extends Error{constructor(e="No peer routers available"){super(e),this.name="NoPeerRoutersError"}},Ph=class extends Error{constructor(e="Should not try to find self"){super(e),this.name="QueriedForSelfError"}},Rh=class extends Error{constructor(e="Unhandled protocol error"){super(e),this.name="UnhandledProtocolError"}},Lh=class extends Error{constructor(e="Duplicate protocol handler error"){super(e),this.name="DuplicateProtocolHandlerError"}},_l=class extends Error{constructor(e="Dial denied error"){super(e),this.name="DialDeniedError"}},Dh=class extends Error{constructor(e="No transport was configured to listen on this address"){super(e),this.name="UnsupportedListenAddressError"}},Nh=class extends Error{constructor(e="Configured listen addresses could not be listened on"){super(e),this.name="UnsupportedListenAddressesError"}},Oh=class extends Error{constructor(e="No valid addresses"){super(e),this.name="NoValidAddressesError"}},Mh=class extends Error{constructor(e="Connection intercepted"){super(e),this.name="ConnectionInterceptedError"}},Bh=class extends Error{constructor(e="Connection denied"){super(e),this.name="ConnectionDeniedError"}},zo=class extends Error{constructor(e="Stream is not multiplexed"){super(e),this.name="MuxerUnavailableError"}},ei=class extends Error{constructor(e="Encryption failed"){super(e),this.name="EncryptionFailedError"}},Uh=class extends Error{constructor(e="Transport unavailable"){super(e),this.name="TransportUnavailableError"}},Fh=class extends Error{constructor(e="Max recursive depth reached"){super(e),this.name="RecursionLimitError"}};var L3=class{components={};_started=!1;constructor(e={}){this.components={};for(let[t,n]of Object.entries(e))this.components[t]=n;this.components.logger==null&&(this.components.logger=ra())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Pu(t)).map(async t=>{await t[e]?.()}))}async beforeStart(){await this._invokeStartableMethod("beforeStart")}async start(){await this._invokeStartableMethod("start"),this._started=!0}async afterStart(){await this._invokeStartableMethod("afterStart")}async beforeStop(){await this._invokeStartableMethod("beforeStop")}async stop(){await this._invokeStartableMethod("stop"),this._started=!1}async afterStop(){await this._invokeStartableMethod("afterStop")}},PP=["metrics","connectionProtector","dns"],RP=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function kw(r={}){let e=new L3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!RP.includes(o)){let i=e.components[o];if(i==null&&!PP.includes(o))throw new Ch(`${o} not set`);return i}return Reflect.get(n,o,s)},set(n,o,s){return typeof o=="string"?e.components[o]=s:Reflect.set(n,o,s),!0}})}function Pw(r){let e={};for(let t of Object.values(r.components))for(let n of LP(t))e[n]=!0;for(let t of Object.values(r.components))for(let n of DP(t))if(e[n]!==!0)throw new kh(`Service "${NP(t)}" required capability "${n}" but it was not provided by any component, you may need to add additional configuration when creating your node.`)}function LP(r){return Array.isArray(r?.[me])?r[me]:[]}function DP(r){return Array.isArray(r?.[ur])?r[ur]:[]}function NP(r){return r?.[Symbol.toStringTag]??r?.toString()??"unknown"}function Rw(r={}){return r.denyDialMultiaddr==null&&(r.denyDialMultiaddr=e=>ro.matches(e)?!0:Qe(e)),r}var OP=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function MP(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=OP(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Cl(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=MP(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function $h(r){if(Rt(r))return{peerId:r,multiaddrs:[]};let e=Array.isArray(r)?r:[r],t;if(e.length>0){let n=e[0].getComponents().findLast(o=>o.code===421)?.value;t=n==null?void 0:Me(n),e.forEach(o=>{if(!yn(o))throw new ln("Invalid multiaddr");let s=o.getComponents().findLast(i=>i.code===421)?.value;if(s==null){if(t!=null)throw new A("Multiaddrs must all have the same peer id or have no peer id")}else{let i=Me(s);if(t?.equals(i)!==!0)throw new A("Multiaddrs must all have the same peer id or have no peer id")}})}return e=e.filter(n=>!R9.exactMatch(n)),{peerId:t,multiaddrs:e}}var BP=["/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/libp2p/autonat/1.0.0","/libp2p/dcutr"];async function Lw(r,e){let t=r?.streams?.map(o=>o.protocol)??[],n=e?.closableProtocols??BP;if(!(t.filter(o=>o!=null&&!n.includes(o)).length>0))try{await r?.close(e)}catch(o){r?.abort(o)}}function kl(r){let e=oe(r),t=e.cidr;if(e.type!=="ip4"&&e.type!=="ip6")throw new A(`Multiaddr ${r} was not an IPv4 or IPv6 address`);if(t==null)switch(e.type){case"ip4":{t=32;break}case"ip6":{t=128;break}default:throw new A(`Multiaddr ${r} was not an IPv4 or IPv6 address`)}return new Ns(e.host,t)}function D3(r){return!yt.exactMatch(r)}function Kh(r,e,t){if(r==null||e==null)return;let n=e.sort((s,i)=>s.direct?-1:i.direct?1:0).find(s=>s.limits==null);if(n==null||n.direct||t==null)return n;if(!t.some(s=>D3(s)))return n}var Vh=class{connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.allow=(t.allow??[]).map(n=>kl(n)),this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),this.maybePruneConnections=this.maybePruneConnections.bind(this)}start(){this.events.addEventListener("connection:open",this.maybePruneConnections)}stop(){this.events.removeEventListener("connection:open",this.maybePruneConnections)}maybePruneConnections(){this._maybePruneConnections().catch(e=>{this.log.error("error while pruning connections - %e",e)})}async _maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=this.connectionManager.getMaxConnections();if(this.log("checking max connections limit %d/%d",t,n),t<=n)return;let o=new Ut;for(let c of e){let l=c.remotePeer;if(!o.has(l)){o.set(l,0);try{let d=await this.peerStore.get(l);o.set(l,[...d.tags.values()].reduce((u,f)=>u+f.value,0))}catch(d){d.name!=="NotFoundError"&&this.log.error("error loading peer tags - %e",d)}}}let s=this.sortConnections(e,o),i=Math.max(t-n,0),a=[];for(let c of s)if(this.log("too many connections open - closing a connection to %p",c.remotePeer),this.allow.some(d=>{if(xt(c.remoteAddr)){let u=oe(c.remoteAddr);return d.contains(u.host)}return!0})||a.push(c),a.length===i)break;await Promise.all(a.map(async c=>{await Lw(c,{signal:AbortSignal.timeout(1e3)})})),this.events.safeDispatchEvent("connection:prune",{detail:a})}sortConnections(e,t){return e.sort((n,o)=>{let s=n.timeline.open,i=o.timeline.open;return s<i?1:s>i?-1:0}).sort((n,o)=>n.direction==="outbound"&&o.direction==="inbound"?1:n.direction==="inbound"&&o.direction==="outbound"?-1:0).sort((n,o)=>n.streams.length>o.streams.length?1:n.streams.length<o.streams.length?-1:0).sort((n,o)=>{let s=t.get(n.remotePeer)??0,i=t.get(o.remotePeer)??0;return s>i?1:s<i?-1:0})}};var Dw="last-dial-failure",Nw="last-dial-success";var Ow=100,Hh=50;function UP(r,e){let t=Xs.exactMatch(r.multiaddr),n=Xs.exactMatch(e.multiaddr);if(t&&!n)return-1;if(!t&&n)return 1;let o=Qs.exactMatch(r.multiaddr),s=Qs.exactMatch(e.multiaddr);if(o&&!s)return-1;if(!o&&s)return 1;let i=ro.exactMatch(r.multiaddr),a=ro.exactMatch(e.multiaddr);if(i&&!a)return-1;if(!i&&a)return 1;let c=yl.exactMatch(r.multiaddr),l=yl.exactMatch(e.multiaddr);if(c&&!l)return-1;if(!c&&l)return 1;let d=gl.exactMatch(r.multiaddr),u=gl.exactMatch(e.multiaddr);if(d&&!u)return-1;if(!d&&u)return 1;let f=d3.exactMatch(r.multiaddr),h=d3.exactMatch(e.multiaddr);return f&&!h?-1:!f&&h?1:0}function FP(r,e){let t=Oc(r.multiaddr),n=Oc(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function $P(r,e){let t=Qe(r.multiaddr),n=Qe(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function KP(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function VP(r,e){let t=yt.exactMatch(r.multiaddr),n=yt.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Mw(r){return r.sort(UP).sort(KP).sort(VP).sort($P).sort(FP)}var N3=class{dns;canResolve(e){return e.getComponents().some(({name:t})=>t==="dnsaddr")}async resolve(e,t){let n=e.getComponents().find(c=>c.name==="dnsaddr")?.value;if(n==null)return[e];let s=await this.getDNS(t).query(`_dnsaddr.${n}`,{signal:t?.signal,types:[dr.TXT]}),i=e.getComponents().find(c=>c.name==="p2p")?.value,a=[];for(let c of s.Answer){let l=c.data.replace(/["']/g,"").trim().split("=")[1];l!=null&&(i!=null&&!l.includes(i)||a.push(q(l)))}return a}getDNS(e){return e.dns!=null?e.dns:(this.dns==null&&(this.dns=$u()),this.dns)}},Pl=new N3;async function O3(r,e,t){let n=t.depth??0;if(n>(t.maxRecursiveDepth??32))throw new Fh("Max recursive depth reached");let o=!1,s=[];for(let i of Object.values(e))if(i.canResolve(r)){o=!0;let a=await i.resolve(r,t);for(let c of a)s.push(...await O3(c,e,{...t,depth:n+1}))}return o===!1&&s.push(r),s}var Rl={maxParallelDials:Hh,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:1e4,resolvers:{dnsaddr:Pl}},qh=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;resolvers;constructor(e,t={}){this.addressSorter=t.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Rl.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Rl.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Rl.dialTimeout,this.connections=t.connections??new Ut,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.resolvers=t.resolvers??Rl.resolvers,this.shutDownController=new AbortController,this.shutDownController.signal,this.queue=new Qd({concurrency:t.maxParallelDials??Rl.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("failure",n=>{n.detail?.error.name!==Vt.name&&this.log.error("error in dial queue - %e",n.detail.error)})}start(){this.shutDownController=new AbortController,this.shutDownController.signal}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=$h(e);if(n!=null&&t.force!==!0){let i=Kh(n,this.connections.get(n),o);if(i!=null)return this.log("already connected to %a",i.remoteAddr),t.onProgress?.(new H("dial-queue:already-connected")),i}let s=this.queue.queue.find(i=>{if(n?.equals(i.options.peerId)===!0)return!0;let a=i.options.multiaddrs;if(a==null)return!1;for(let c of o)if(a.has(c.toString()))return!0;return!1});if(s!=null){this.log("joining existing dial target for %p",n);for(let i of o)s.options.multiaddrs.add(i.toString());return t.onProgress?.(new H("dial-queue:already-in-dial-queue")),s.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new Eo("Dial queue is full");return this.log("creating dial target for %p",n,o.map(i=>i.toString())),t.onProgress?.(new H("dial-queue:add-to-dial-queue")),this.queue.add(async i=>{i.onProgress?.(new H("dial-queue:start-dial"));let a=le([this.shutDownController.signal,i.signal]);try{return await this.dialPeer(i,a)}finally{a.clear()}},{peerId:n,priority:t.priority??F3,multiaddrs:new Set(o.map(i=>i.toString())),signal:t.signal??AbortSignal.timeout(this.dialTimeout),onProgress:t.onProgress})}async dialPeer(e,t){let n=e.peerId,o=e.multiaddrs,s=new Set,i=e.multiaddrs.size===0,a=0,c=0,l=[];for(this.log("starting dial to %p",n);i||o.size>0;){c++,i=!1;let d=[],u=new Set(e.multiaddrs);o.clear(),this.log("calculating addrs to dial %p from %s",n,[...u]);let f=await this.calculateMultiaddrs(n,u,{...e,signal:t});for(let h of f){if(s.has(h.multiaddr.toString())){this.log.trace("skipping previously failed multiaddr %a while dialing %p",h.multiaddr,n);continue}d.push(h)}this.log("%s dial to %p with %s",c===1?"starting":"continuing",n,d.map(h=>h.multiaddr.toString())),e?.onProgress?.(new H("dial-queue:calculated-addresses",d));for(let h of d){if(a===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",a,e.peerId),new Eo("Peer had more than maxPeerAddrsToDial");a++;try{let p=await this.components.transportManager.dial(h.multiaddr,{...e,signal:t});this.log("dial to %a succeeded",h.multiaddr);try{await this.components.peerStore.merge(p.remotePeer,{multiaddrs:[p.remoteAddr],metadata:{[Nw]:C(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}return p}catch(p){if(this.log.error("dial failed to %a - %e",h.multiaddr,p),s.add(h.multiaddr.toString()),n!=null)try{await this.components.peerStore.merge(n,{metadata:{[Dw]:C(Date.now().toString())}})}catch(g){this.log.error("could not update last dial failure key for %p - %e",n,g)}if(t.aborted)throw new un(p.message);l.push(p)}}}throw l.length===1?l[0]:new AggregateError(l,"All multiaddr dials failed")}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:q(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new Eo("Tried to dial self");if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new _l("The dial request is blocked by gater.allowDialPeer");if(o.length===0){this.log("loading multiaddrs for %p",e);try{let u=await this.components.peerStore.get(e);o.push(...u.addresses),this.log("loaded multiaddrs for %p",e,o.map(({multiaddr:f})=>f.toString()))}catch(u){if(u.name!=="NotFoundError")throw u}}if(o.length===0){this.log("looking up multiaddrs for %p in the peer routing",e);try{let u=await this.components.peerRouting.findPeer(e,n);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(u){u.name==="NoPeerRoutersError"?this.log("no peer routers configured",e):this.log.error("looking up multiaddrs for %p in the peer routing failed - %e",e,u)}}}let s=(await Promise.all(o.map(async u=>{let f=await O3(u.multiaddr,this.resolvers,{dns:this.components.dns,log:this.log,...n});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(h=>({multiaddr:h,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.getComponents().pop()?.name!=="p2p"?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.dialTransportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getComponents().findLast(h=>h.code===421)?.value;return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),h=a.get(f);if(h!=null){h.isCertified=h.isCertified||u.isCertified||!1;continue}a.set(f,u)}let c=[...a.values()];if(c.length===0)throw new Oh("The dial request has no valid addresses");let l=[];for(let u of c)this.components.connectionGater.denyDialMultiaddr!=null&&await this.components.connectionGater.denyDialMultiaddr(u.multiaddr)||l.push(u);let d=this.addressSorter==null?Mw(l):l.sort(this.addressSorter);if(d.length===0)throw new _l("The connection gater denied all addresses in the dial request");return this.log.trace("addresses for %p before filtering",e??"unknown peer",s.map(({multiaddr:u})=>u.toString())),this.log.trace("addresses for %p after filtering",e??"unknown peer",d.map(({multiaddr:u})=>u.toString())),d}async isDialable(e,t={}){Array.isArray(e)||(e=[e]);try{let n=await this.calculateMultiaddrs(void 0,new Set(e.map(o=>o.toString())),t);return t.runOnLimitedConnection===!1?n.find(o=>!yt.matches(o.multiaddr))!=null:!0}catch{}return!1}};var HP=Object.prototype.toString,qP=r=>HP.call(r)==="[object Error]",WP=new Set(["network error","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function $3(r){if(!(r&&qP(r)&&r.name==="TypeError"&&typeof r.message=="string"))return!1;let{message:t,stack:n}=r;return t==="Load failed"?n===void 0||"__sentry_captured__"in r:t.startsWith("error sending request for url")||t==="Failed to fetch"||t.startsWith("Failed to fetch (")&&t.endsWith(")")?!0:WP.has(t)}function zP(r){if(typeof r=="number"){if(r<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(r))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(r!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Wh(r,e,{min:t=0,allowInfinity:n=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${r}\` to be a number${n?" or Infinity":""}.`);if(!n&&!Number.isFinite(e))throw new TypeError(`Expected \`${r}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${r}\` to be \u2265 ${t}.`)}}var K3=class extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}};function GP(r,e){let t=Math.max(1,r+1),n=e.randomize?Math.random()+1:1,o=Math.round(n*e.minTimeout*e.factor**(t-1));return o=Math.min(o,e.maxTimeout),o}function Bw(r,e){return Number.isFinite(e)?e-(performance.now()-r):e}async function YP({error:r,attemptNumber:e,retriesConsumed:t,startTime:n,options:o}){let s=r instanceof Error?r:new TypeError(`Non-error was thrown: "${r}". You should only throw errors.`);if(s instanceof K3)throw s.originalError;let i=Number.isFinite(o.retries)?Math.max(0,o.retries-t):o.retries,a=o.maxRetryTime??Number.POSITIVE_INFINITY,c=Object.freeze({error:s,attemptNumber:e,retriesLeft:i,retriesConsumed:t});if(await o.onFailedAttempt(c),Bw(n,a)<=0)throw s;let l=await o.shouldConsumeRetry(c),d=Bw(n,a);if(d<=0||i<=0)throw s;if(s instanceof TypeError&&!$3(s)){if(l)throw s;return o.signal?.throwIfAborted(),!1}if(!await o.shouldRetry(c))throw s;if(!l)return o.signal?.throwIfAborted(),!1;let u=GP(t,o),f=Math.min(u,d);return o.signal?.throwIfAborted(),f>0&&await new Promise((h,p)=>{let g=()=>{clearTimeout(m),o.signal?.removeEventListener("abort",g),p(o.signal.reason)},m=setTimeout(()=>{o.signal?.removeEventListener("abort",g),h()},f);o.unref&&m.unref?.(),o.signal?.addEventListener("abort",g,{once:!0})}),o.signal?.throwIfAborted(),!0}async function V3(r,e={}){if(e={...e},zP(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.maxRetryTime??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,e.shouldConsumeRetry??=()=>!0,Wh("factor",e.factor,{min:0,allowInfinity:!1}),Wh("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Wh("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0}),Wh("maxRetryTime",e.maxRetryTime,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let t=0,n=0,o=performance.now();for(;!Number.isFinite(e.retries)||n<=e.retries;){t++;try{e.signal?.throwIfAborted();let s=await r(t);return e.signal?.throwIfAborted(),s}catch(s){await YP({error:s,attemptNumber:t,retriesConsumed:n,startTime:o,options:e})&&n++}}throw new Error("Retry attempts exhausted without throwing an error.")}var zh=class{log;queue;started;peerStore;retries;retryInterval;backoffFactor;connectionManager;events;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:reconnect-queue"),this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.queue=new It({concurrency:t.maxParallelReconnects??5,metricName:"libp2p_reconnect_queue",metrics:e.metrics}),this.started=!1,this.retries=t.retries??5,this.backoffFactor=t.backoffFactor,this.retryInterval=t.retryInterval,this.events=e.events,e.events.addEventListener("peer:disconnect",n=>{this.maybeReconnect(n.detail).catch(o=>{this.log.error("failed to maybe reconnect to %p - %e",n.detail,o)})})}async maybeReconnect(e){if(!this.started)return;let t=await this.peerStore.get(e);Uw(t)&&(this.queue.has(e)||this.queue.add(async n=>{await V3(async o=>{if(this.started)try{await this.connectionManager.openConnection(e,{signal:n?.signal})}catch(s){throw this.log("reconnecting to %p attempt %d of %d failed - %e",e,o,this.retries,s),s}},{signal:n?.signal,retries:this.retries,factor:this.backoffFactor,minTimeout:this.retryInterval})},{peerId:e}).catch(async n=>{this.log.error("failed to reconnect to %p - %e",e,n);let o={};[...t.tags.keys()].forEach(s=>{s.startsWith(us)&&(o[s]=void 0)}),await this.peerStore.merge(e,{tags:o}),this.events.safeDispatchEvent("peer:reconnect-failure",{detail:e})}).catch(async n=>{this.log.error("failed to remove keep-alive tag from %p - %e",e,n)}))}start(){this.started=!0}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>Uw(t)]});await Promise.all(e.map(async t=>{await this.connectionManager.openConnection(t.id).catch(n=>{this.log.error("could not open connection to keepalive peer - %e",n)})}))}).catch(e=>{this.log.error("error reconnect to peers after start - %e",e)})}stop(){this.started=!1,this.queue.abort()}};function Uw(r){for(let e of r.tags.keys())if(e.startsWith(us))return!0;return!1}var F3=50,H3={maxConnections:Ow,inboundConnectionThreshold:5,maxIncomingPendingConnections:10},Gh=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;outboundPendingConnections;maxConnections;dialQueue;reconnectQueue;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;peerId;constructor(e,t={}){if(this.maxConnections=t.maxConnections??H3.maxConnections,this.maxConnections<1)throw new A("Connection Manager maxConnections must be greater than 0");this.connections=new Ut,this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.metrics=e.metrics,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager"),this.onConnect=this.onConnect.bind(this),this.onDisconnect=this.onDisconnect.bind(this),this.allow=(t.allow??[]).map(n=>kl(q(n))),this.deny=(t.deny??[]).map(n=>kl(q(n))),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??H3.maxIncomingPendingConnections,this.outboundPendingConnections=0,this.inboundConnectionRateLimiter=new na({points:t.inboundConnectionThreshold??H3.inboundConnectionThreshold,duration:1}),this.connectionPruner=new Vh({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{allow:t.allow?.map(n=>q(n))}),this.dialQueue=new qh(e,{addressSorter:t.addressSorter,maxParallelDials:t.maxParallelDials??Hh,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??1e4,resolvers:t.resolvers??{dnsaddr:Pl},connections:this.connections}),this.reconnectQueue=new zh({events:e.events,peerStore:e.peerStore,logger:e.logger,connectionManager:this},{retries:t.reconnectRetries,retryInterval:t.reconnectRetryInterval,backoffFactor:t.reconnectBackoffFactor,maxParallelReconnects:t.maxParallelReconnects})}[Symbol.toStringTag]="@libp2p/connection-manager";async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,"inbound pending":this.incomingPendingConnections,outbound:0,"outbound pending":this.outboundPendingConnections};for(let t of this.connections.values())for(let n of t)e[n.direction]++;return e}}),this.metrics?.registerMetricGroup("libp2p_protocol_streams_total",{label:"protocol",calculate:()=>{let e={};for(let t of this.connections.values())for(let n of t)for(let o of n.streams){let s=`${o.direction} ${o.protocol??"unnegotiated"}`;e[s]=(e[s]??0)+1}return e}}),this.metrics?.registerMetricGroup("libp2p_connection_manager_protocol_streams_per_connection_90th_percentile",{label:"protocol",calculate:()=>{let e={};for(let n of this.connections.values())for(let o of n){let s={};for(let i of o.streams){let a=`${i.direction} ${i.protocol??"unnegotiated"}`;s[a]=(s[a]??0)+1}for(let[i,a]of Object.entries(s))e[i]=e[i]??[],e[i].push(a)}let t={};for(let[n,o]of Object.entries(e)){o=o.sort((i,a)=>i-a);let s=Math.floor(o.length*.9);t[n]=o[s]}return t}}),this.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),await at(this.dialQueue,this.reconnectQueue,this.connectionPruner),this.started=!0,this.log("started")}async stop(){this.events.removeEventListener("connection:open",this.onConnect),this.events.removeEventListener("connection:close",this.onDisconnect),await lt(this.reconnectQueue,this.dialQueue,this.connectionPruner);let e=[];for(let t of this.connections.values())for(let n of t)e.push(Promise.all([Cl(n,"close",{signal:AbortSignal.timeout(500)}),n.close({signal:AbortSignal.timeout(500)})]).catch(o=>{n.abort(o)}));this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}getMaxConnections(){return this.maxConnections}setMaxConnections(e){if(e<1)throw new A("Connection Manager maxConnections must be greater than 0");let t=!1;e<this.maxConnections&&(t=!0),this.maxConnections=e,t&&this.connectionPruner.maybePruneConnections()}onConnect(e){this._onConnect(e).catch(t=>{this.log.error("could not connect - %e",t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}if(t.status!=="open")return;let n=t.remotePeer,o=!this.connections.has(n),s=this.connections.get(n)??[];s.push(t),this.connections.set(n,s),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),o&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e,n=t.remotePeer,s=(this.connections.get(n)??[]).filter(i=>i.id!==t.id);this.connections.set(n,s),s.length===0&&(this.log.trace("peer %p disconnected, removing connection map entry",n),this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:n}))}getConnections(e){if(e!=null)return this.connections.get(e)??[];let t=[];for(let n of this.connections.values())t=t.concat(n);return t}getConnectionsMap(){return this.connections}async openConnection(e,t={}){if(!this.started)throw new Ur("Not started");this.outboundPendingConnections++;try{t.signal?.throwIfAborted();let{peerId:n,multiaddrs:o}=$h(e);if(this.peerId.equals(n))throw new hi("Can not dial self");if(n!=null&&t.force!==!0){this.log("dial %p",n);let c=Kh(n,this.getConnections(n),o);if(c!=null)return this.log("had an existing connection to %p as %a",n,c.remoteAddr),t.onProgress?.(new H("dial-queue:already-connected")),c}let s=await this.dialQueue.dial(e,{...t,priority:t.priority??F3});if(s.status!=="open")throw new is("Remote closed connection during opening");let i=this.connections.get(s.remotePeer);i==null&&(i=[],this.connections.set(s.remotePeer,i));let a=!1;for(let c of i)if(c.id===s.id&&(a=!0),t.force!==!0&&c.id!==s.id&&c.remoteAddr.equals(s.remoteAddr))return s.abort(new ln("Duplicate multiaddr connection")),c;return a||i.push(s),s}finally{this.outboundPendingConnections--}}async openStream(e,t,n={}){return(await this.openConnection(e,n)).newStream(t,n)}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await Promise.all([Cl(o,"close",t),o.close(t)])}catch(s){o.abort(s)}}))}acceptIncomingConnection(e){if(this.deny.some(o=>{if(xt(e.remoteAddr)){let s=oe(e.remoteAddr);return o.contains(s.host)}return!1}))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>{if(xt(e.remoteAddr)){let s=oe(e.remoteAddr);return o.contains(s.host)}return!0}))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(xt(e.remoteAddr)){let o=oe(e.remoteAddr);try{this.inboundConnectionRateLimiter.consume(o.host,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o.host),!1}}return this.getConnections().length<this.maxConnections?(this.incomingPendingConnections++,!0):(this.log("connection from %a refused - maxConnections exceeded",e.remoteAddr),!1)}afterUpgradeInbound(){this.incomingPendingConnections--}getDialQueue(){let e={queued:"queued",running:"active",errored:"error",complete:"success"};return this.dialQueue.queue.queue.map(t=>({id:t.id,status:e[t.status],peerId:t.options.peerId,multiaddrs:[...t.options.multiaddrs].map(n=>q(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var QP=1e4,ZP="1.0.0",JP="ping",eR="ipfs",Fw=32,tR=!0,Yh=class{protocol;components;log;heartbeatInterval;pingIntervalMs;abortController;timeout;abortConnectionOnPingFailure;constructor(e,t={}){this.components=e,this.protocol=`/${t.protocolPrefix??eR}/${JP}/${ZP}`,this.log=e.logger.forComponent("libp2p:connection-monitor"),this.pingIntervalMs=t.pingInterval??QP,this.abortConnectionOnPingFailure=t.abortConnectionOnPingFailure??tR,this.timeout=new Gr({...t.pingTimeout??{},metrics:e.metrics,metricName:"libp2p_connection_monitor_ping_time_milliseconds"})}[Symbol.toStringTag]="@libp2p/connection-monitor";[me]=["@libp2p/connection-monitor"];start(){this.abortController=new AbortController,this.abortController.signal,this.heartbeatInterval=setInterval(()=>{this.components.connectionManager.getConnections().forEach(e=>{Promise.resolve().then(async()=>{let t=Date.now(),n=this.timeout.getTimeoutSignal({signal:this.abortController?.signal});try{let o=await e.newStream(this.protocol,{signal:n,runOnLimitedConnection:!0}),s=Cd(o);t=Date.now(),await Promise.all([s.write(Yt(Fw),{signal:n}),s.read({bytes:Fw,signal:n})]),e.rtt=Date.now()-t,await o.close({signal:n})}catch(o){if(o.name!=="UnsupportedProtocolError")throw o;e.rtt=(Date.now()-t)/2}finally{this.timeout.cleanUp(n)}}).catch(t=>{this.log.error("error during heartbeat - %e",t),this.abortConnectionOnPingFailure?(this.log.error("aborting connection due to ping failure"),e.abort(t)):this.log("connection ping failed, but not aborting due to abortConnectionOnPingFailure flag")})})},this.pingIntervalMs)}stop(){this.abortController?.abort(),this.heartbeatInterval!=null&&clearInterval(this.heartbeatInterval)}};var jh=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e,this.findProviders=e.metrics?.traceFunction("libp2p.contentRouting.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()}),getAttributesFromYieldedValue:(n,o)=>({...o,providers:[...Array.isArray(o.providers)?o.providers:[],n.id.toString()]})})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.contentRouting.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("libp2p.contentRouting.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,cid:n.toString()})})??this.cancelReprovide,this.put=e.metrics?.traceFunction("libp2p.contentRouting.put",this.put.bind(this),{optionsIndex:2,getAttributesFromArgs:([n])=>({key:R(n,"base36")})})??this.put,this.get=e.metrics?.traceFunction("libp2p.contentRouting.get",this.get.bind(this),{optionsIndex:1,getAttributesFromArgs:([n])=>({key:R(n,"base36")})})??this.get}[Symbol.toStringTag]="@libp2p/content-routing";isStarted(){return this.started}async start(){this.started=!0}async stop(){this.started=!1}async*findProviders(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");let n=this,o=new xr;for await(let s of jt(...n.routers.filter(i=>i.findProviders instanceof Function).map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");await Promise.all(this.routers.filter(n=>n.provide instanceof Function).map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){if(this.routers.length===0)throw new Ea("No content routers available");await Promise.all(this.routers.filter(n=>n.cancelReprovide instanceof Function).map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new Ur;await Promise.all(this.routers.filter(o=>o.put instanceof Function).map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new Ur;return Promise.any(this.routers.filter(n=>n.get instanceof Function).map(async n=>n.get(e,t)))}};var Xh=globalThis.CustomEvent??Event;async function*io(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,s=[],i=fe(),a=fe(),c=!1,l,d=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(s.length===t&&(i=fe(),await i.promise),d)break;let g={done:!1};s.push(g),p().then(m=>{g.done=!0,g.ok=!0,g.value=m,o.dispatchEvent(new Xh("task-complete"))},m=>{g.done=!0,g.err=m,o.dispatchEvent(new Xh("task-complete"))})}c=!0,o.dispatchEvent(new Xh("task-complete"))}catch(p){l=p,o.dispatchEvent(new Xh("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*f(){for(;s.length>0&&s[0].done;){let p=s[0];if(s.shift(),p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}function*h(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let g=s[p];if(s.splice(p,1),p--,g.ok)yield g.value;else throw d=!0,i.resolve(),g.err;i.resolve()}}for(;;){if(u()||(a=fe(),await a.promise),l!=null||(n?yield*f():yield*h(),l!=null))throw l;if(c&&s.length===0)break}}var Qh=class{log;peerId;peerStore;routers;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:peer-routing"),this.peerId=e.peerId,this.peerStore=e.peerStore,this.routers=t.routers??[],this.findPeer=e.metrics?.traceFunction("libp2p.peerRouting.findPeer",this.findPeer.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,peer:n.toString()})})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.peerRouting.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1,getAttributesFromArgs:([n],o)=>({...o,key:R(n,"base36")}),getAttributesFromYieldedValue:(n,o)=>({...o,peers:[...Array.isArray(o.peers)?o.peers:[],n.id.toString()]})})??this.getClosestPeers}[Symbol.toStringTag]="@libp2p/peer-routing";async findPeer(e,t){if(this.routers.length===0)throw new Tl("No peer routers available");if(e.toString()===this.peerId.toString())throw new Ph("Should not try to find self");let n=this,o=jt(...this.routers.filter(s=>s.findPeer instanceof Function).map(s=>(async function*(){try{yield await s.findPeer(e,t)}catch(i){n.log.error("router failed to find peer - %e",i)}})()));for await(let s of o)if(s!=null)return s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),s;throw new Le}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new Tl("No peer routers available");let n=this,o=Et(1024);for await(let s of io((async function*(){let i=jt(...n.routers.filter(a=>a.getClosestPeers instanceof Function).map(a=>a.getClosestPeers(e,t)));for await(let a of i)yield async()=>{if(a.multiaddrs.length===0)try{a=await n.findPeer(a.id,{...t,useCache:!1})}catch(c){n.log.error("could not find peer multiaddrs - %e",c);return}return a}})()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs},t),!o.has(s.id.toMultihash().bytes)&&(o.add(s.id.toMultihash().bytes),yield s))}};var Zh=class extends ie{peerRouting;log;walking;walkers;shutdownController;walkController;needNext;constructor(e){super(),this.log=e.logger.forComponent("libp2p:random-walk"),this.peerRouting=e.peerRouting,this.walkers=0,this.walking=!1,this.shutdownController=new AbortController,this.shutdownController.signal}[Symbol.toStringTag]="@libp2p/random-walk";start(){this.shutdownController=new AbortController,this.shutdownController.signal}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=le([this.shutdownController.signal,e?.signal]);try{for(;;)this.needNext?.resolve(),this.needNext=fe(),yield(await Cl(this,"walk:peer",{signal:t,rejectionEvents:["walk:error"]})).detail}catch(n){throw n.detail!=null?n.detail:n}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,this.walkController.signal;let e=le([this.walkController.signal,this.shutdownController.signal]);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{let o=Yt(32),s=Date.now();for await(let i of this.peerRouting.getClosestPeers(o,{signal:e}))e.aborted&&this.log("aborting walk"),e.throwIfAborted(),this.log("found peer %p after %dms for %d walkers",i.id,Date.now()-s,this.walkers),n++,this.safeDispatchEvent("walk:peer",{detail:i}),this.walkers===1&&this.needNext!=null&&(this.log("wait for need next"),await Pe(this.needNext.promise,e)),s=Date.now();this.log("walk iteration for %b and %d walkers finished, found %d peers",o,this.walkers,n)}catch(o){this.log.error("random walk errored - %e",o),this.safeDispatchEvent("walk:error",{detail:o})}this.log("no walkers left, ended walk")}).catch(o=>{this.log.error("random walk errored - %e",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var q3=32,W3=64,Jh=class{log;topologies;handlers;components;middleware;constructor(e){this.components=e,this.log=e.logger.forComponent("libp2p:registrar"),this.middleware=new Map,this.topologies=new Map,e.metrics?.registerMetricGroup("libp2p_registrar_topologies",{calculate:()=>{let t={};for(let[n,o]of this.topologies)t[n]=o.size;return t}}),this.handlers=ot({name:"libp2p_registrar_protocol_handlers",metrics:e.metrics}),this._onDisconnect=this._onDisconnect.bind(this),this._onPeerUpdate=this._onPeerUpdate.bind(this),this._onPeerIdentify=this._onPeerIdentify.bind(this),this.components.events.addEventListener("peer:disconnect",this._onDisconnect),this.components.events.addEventListener("peer:update",this._onPeerUpdate),this.components.events.addEventListener("peer:identify",this._onPeerIdentify)}[Symbol.toStringTag]="@libp2p/registrar";getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new Rh(`No handler registered for protocol ${e}`);return t}getTopologies(e){let t=this.topologies.get(e);return t==null?[]:[...t.values()]}async handle(e,t,n){if(this.handlers.has(e)&&n?.force!==!0)throw new Lh(`Handler already registered for protocol ${e}`);this.handlers.set(e,{handler:t,options:{maxInboundStreams:q3,maxOutboundStreams:W3,...n}}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]},n)}async unhandle(e,t){(Array.isArray(e)?e:[e]).forEach(o=>{this.handlers.delete(o)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()},t)}async register(e,t){if(t==null)throw new A("invalid topology");let n=`${(Math.random()*1e9).toString(36)}${Date.now()}`,o=this.topologies.get(e);return o==null&&(o=new Map,this.topologies.set(e,o)),o.set(n,t),n}unregister(e){for(let[t,n]of this.topologies.entries())n.has(e)&&(n.delete(e),n.size===0&&this.topologies.delete(t))}use(e,t){this.middleware.set(e,t)}unuse(e){this.middleware.delete(e)}getMiddleware(e){return this.middleware.get(e)??[]}async _onDisconnect(e){let t=e.detail,n={signal:AbortSignal.timeout(5e3)};try{let o=await this.components.peerStore.get(t,n);for(let s of o.protocols){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t)!==!0||(a.filter?.remove(t),await a.onDisconnect?.(t))}))}}catch(o){if(o.name==="NotFoundError")return;this.log.error("could not inform topologies of disconnecting peer %p - %e",t,o)}}async _onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));try{for(let s of o){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{a.filter!=null&&a.filter.has(t.id)!==!0||(a.filter?.remove(t.id),await a.onDisconnect?.(t.id))}))}}catch(s){this.log.error("could not inform topologies of updated peer %p - %e",t.id,s)}}async _onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;try{for(let s of t){let i=this.topologies.get(s);i!=null&&await Promise.all([...i.values()].map(async a=>{n.limits!=null&&a.notifyOnLimitedConnection!==!0||a.filter?.has(o)!==!0&&(a.filter?.add(o),await a.onConnect?.(o,n))}))}}catch(s){this.log.error("could not inform topologies of updated peer after identify %p - %e",o,s)}}};var e1=class{log;components;transports;listeners;faultTolerance;started;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:transports"),this.components=e,this.started=!1,this.transports=ot({name:"libp2p_transport_manager_transports",metrics:this.components.metrics}),this.listeners=ot({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Xa.FATAL_ALL}[Symbol.toStringTag]="@libp2p/transport-manager";add(e){let t=e[Symbol.toStringTag];if(t==null)throw new A("Transport must have a valid tag");if(this.transports.has(t))throw new A(`There is already a transport with the tag ${t}`);this.log("adding transport %s",t),this.transports.set(t,e),this.listeners.has(t)||this.listeners.set(t,[])}isStarted(){return this.started}start(){this.started=!0}async afterStart(){let e=this.components.addressManager.getListenAddrs();await this.listen(e)}async stop(){let e=[];for(let[t,n]of this.listeners)for(this.log("closing listeners for %s",t);n.length>0;){let o=n.pop();o!=null&&e.push(o.close())}await Promise.all(e),this.log("all listeners closed");for(let t of this.listeners.keys())this.listeners.set(t,[]);this.started=!1}async dial(e,t){let n=this.dialTransportForMultiaddr(e);if(n==null)throw new Uh(`No transport available for address ${String(e)}`);return t?.onProgress?.(new H("transport-manager:selected-transport",n[Symbol.toStringTag])),n.dial(e,{...t,upgrader:this.components.upgrader})}getAddrs(){let e=[];for(let t of this.listeners.values())for(let n of t)e=[...e,...n.getAddrs()];return e}getTransports(){return Array.of(...this.transports.values())}getListeners(){return Array.of(...this.listeners.values()).flat()}dialTransportForMultiaddr(e){for(let t of this.transports.values())if(t.dialFilter([e]).length>0)return t}listenTransportForMultiaddr(e){for(let t of this.transports.values())if(t.listenFilter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new Ur("Not started");if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t={errors:new Map,ipv4:{success:0,attempts:0},ipv6:{success:0,attempts:0}};e.forEach(s=>{t.errors.set(s.toString(),new Dh)});let n=[];for(let[s,i]of this.transports.entries()){let a=i.listenFilter(e);for(let c of a){this.log("creating listener for %s on %a",s,c);let l=i.createListener({upgrader:this.components.upgrader}),d=this.listeners.get(s)??[];d==null&&(d=[],this.listeners.set(s,d)),d.push(l),l.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:l})}),l.addEventListener("close",()=>{let u=d.findIndex(f=>f===l);d.splice(u,1),this.components.events.safeDispatchEvent("transport:close",{detail:l})}),a3.matches(c)?t.ipv4.attempts++:c3.matches(c)&&t.ipv6.attempts++,n.push(l.listen(c).then(()=>{t.errors.delete(c.toString()),a3.matches(c)&&t.ipv4.success++,c3.matches(c)&&t.ipv6.success++},u=>{throw this.log.error("transport %s could not listen on address %a - %e",s,c,u),t.errors.set(c.toString(),u),u}))}}let o=await Promise.allSettled(n);if(!(o.length>0&&o.every(s=>s.status==="fulfilled"))){if(this.ipv6Unsupported(t)){this.log("all IPv4 addresses succeed but all IPv6 failed");return}if(this.faultTolerance===Xa.NO_FATAL){this.log("failed to listen on any address but fault tolerance allows this");return}throw new Nh(`Some configured addresses failed to be listened on, you may need to remove one or more listen addresses from your configuration or set \`transportManager.faultTolerance\` to NO_FATAL:
|
|
33
33
|
${[...t.errors.entries()].map(([s,i])=>`
|
|
34
34
|
${s}: ${`${rR(i)}`.split(`
|
|
35
35
|
`).join(`
|
|
@@ -43,7 +43,7 @@ ${[...t.errors.entries()].map(([s,i])=>`
|
|
|
43
43
|
`),t),n.trace('responded with "%s" for "%s"',s,s),o.unwrap(),s;if(s==="ls"){let i=new X(...e.map(a=>Qn.single(C(`${a}
|
|
44
44
|
`))),C(`
|
|
45
45
|
`));n.trace('respond with "%s" for %s',e,s),await o.write(i,t),n.trace('responded with "%s" for %s',e,s);continue}n.trace('respond with "na" for "%s"',s),await o.write(C(`na
|
|
46
|
-
`),t),n('responded with "na" for "%s"',s)}}var G3=class extends ie{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=D3(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new xo(n.local,n.error))})}[Symbol.toStringTag]="Connection";[I6]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new zo("Connection is not multiplexed");if(this.muxer.status!=="open")throw new is(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new is(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new ja("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let a=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:a}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await xa(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=iR(n.protocol,this.components.registrar,t),s=Vw(n.protocol,"outbound",this);if(s>o){let a=new mi(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(a),a}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol);return await this.runMiddlewareChain(n,this,i)}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await va(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=sR(t.protocol,this.components.registrar);if(Vw(t.protocol,"inbound",this)>o)throw new Iu(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new ja("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,d,u)=>{await i(l,d),u(l,d)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,d)=>{e=l,t=d,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Hw(r,e){return new G3(r,e)}function sR(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return q3}function iR(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??W3}function Vw(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var t1=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=ot({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=ot({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new Mh(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=le([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new Bh("Connection denied");await Pe(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Me(n),await Pe(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(e.log("protecting the %s connection",t),o=await u.protect(o,n))}try{if(aR(n)){if(n.remotePeer==null)throw new ln(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let u=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,f;u!=null&&(f=Me(u)),n?.onProgress?.(new H(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:f}):this._encryptOutbound(o,{...n,remotePeer:f}))}if(s.equals(this.components.peerId)){let u=new hi("Can not dial self");throw e.abort(u),u}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new H(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(u){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,u),u}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let d=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return d.log("successfully upgraded connection"),d}_createConnection(e){let t=Hw(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await va(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new ei(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new ei(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await xa(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new ei(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new ei(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await xa(e,o,n),i=t.get(s);if(i==null)throw new zo(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new zo(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await va(e,o,n),i=t.get(s);if(i==null)throw new zo(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function aR(r){return r.skipEncryption===!0}var r1="3.1.5",n1="js-libp2p";function o1(r,e){return`${r??n1}/${e??r1} browser/${globalThis.navigator.userAgent}`}var Dl=class extends ie{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new ie,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let d=n(l),u=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return d||u},this.peerId=e.peerId,this.logger=e.logger??ra(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??n1,s=e.nodeInfo?.version??r1,i=this.components=kw({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??o1(o,s)},logger:this.logger,events:t,datastore:e.datastore??new Js,connectionGater:Rw(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",Aw(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let d={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(u=>u.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:d})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new t1(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,d)=>this.configureComponent(`connection-encryption-${d}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,d)=>this.configureComponent(`stream-muxers-${d}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new e1(this.components,e.transportManager)),this.configureComponent("connectionManager",new Gh(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Yh(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Jh(this.components)),this.configureComponent("addressManager",new _h(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,d)=>this.configureComponent(`peer-router-${d}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Qh(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,d)=>this.configureComponent(`content-router-${d}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new jh(this.components,{routers:c})),this.configureComponent("randomWalk",new Zh(this.components)),(e.peerDiscovery??[]).forEach((l,d)=>{this.configureComponent(`peer-discovery-${d}`,l(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((l,d)=>{this.components.transportManager.add(this.configureComponent(`transport-${d}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let d=e.services[l],u=d(this.components);if(u==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=u,this.configureComponent(l,u),u[Dn]!=null&&(this.log("registering service %s for content routing",l),c.push(u[Dn])),u[On]!=null&&(this.log("registering service %s for peer routing",l),a.push(u[On])),u[ls]!=null&&(this.log("registering service %s for peer discovery",l),u[ls].addEventListener?.("peer",f=>{this.#e(f)}))}Pw(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new xr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new A("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new A("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){yn(e)&&(e=Me(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Oe([C("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=tt(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function Ww(r={}){r.privateKey??=await od("Ed25519");let e=new Dl({...await lw(r),peerId:E9(r.privateKey)});return r.start!==!1&&await e.start(),e}var cR=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function zw(r){return r==null?!1:r instanceof Dl?!0:cR.every(e=>typeof r[e]=="function")}var Wb=Ln(tb(),1);var Y3={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var Sa={};et(Sa,{create:()=>xR,derivedEmptyPasswordKey:()=>s1});var s1={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function xR(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=nt.get();t*=8;async function c(u,f){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:p};typeof f=="string"&&(f=C(f));let m;if(f.length===0){m=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["encrypt"]);try{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},I=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(T,I,{name:e,length:t},!0,["encrypt"])}catch{m=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["encrypt"])}}else{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},I=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(T,I,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(g,m,u);return Oe([h,g.iv,new Uint8Array(w)])}async function l(u,f){let h=u.subarray(0,s),p=u.subarray(s,s+n),g=u.subarray(s+n),m={name:e,iv:p};typeof f=="string"&&(f=C(f));let w;if(f.length===0)try{let I={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(I,D,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["decrypt"])}else{let I={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(I,D,{name:e,length:t},!0,["decrypt"])}let T=await a.subtle.decrypt(m,w,g);return new Uint8Array(T)}return{encrypt:c,decrypt:l}}var ye=Ln(rb());function ti(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Go(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let d=a-1;d>=0;d--){let u=Math.pow(2,d*e);l[s-d-1]=Math.floor(o/u),o-=l[s-d-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function c1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function X3(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=ti(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,ti(s,8)-n}function nb(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=Go(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=Go(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function ob(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function sr(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Tse=Math.log(2);function l1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Q3(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function ho(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Ml=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Q3(this.items)}},Nl=[new Uint8Array([1])],sb="0123456789";var Ia="",Tn=new ArrayBuffer(0),Z3=new Uint8Array(0),Bl="EndOfContent",ab="OCTET STRING",cb="BIT STRING";function po(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?ye.BufferSourceConverter.toUint8Array(s.valueHex):Z3}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!ho(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Tn)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ye.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var co=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=Ia,warnings:n=[],valueBeforeDecode:o=Z3}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=ye.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:ye.Convert.ToHex(this.valueBeforeDecodeView)}}};co.NAME="baseBlock";var $t=class extends co{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};$t.NAME="valueBlock";var u1=class extends po(co){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?ye.BufferSourceConverter.toUint8Array(e.valueHex):Z3,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Tn}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=Go(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let h=0;h<l.length;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=ti(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};u1.NAME="identificationBlock";var d1=class extends co{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=ti(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=Go(this.length,8);if(o.byteLength>127)return this.error="Too big length",Tn;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};d1.NAME="lengthBlock";var Q={},Tt=class extends co{constructor({name:e=Ia,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new u1(o),this.lenBlock=new d1(o),this.valueBlock=s?new s(o):new $t(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new Ml;t||lb(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?Tn:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ye.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=ye.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return ob(t,n)}};Tt.NAME="BaseBlock";function lb(r){var e;if(r instanceof Q.Constructed)for(let t of r.valueBlock.value)lb(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var f1=class extends Tt{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=Ia,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};f1.NAME="BaseStringBlock";var h1=class extends po($t){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};h1.NAME="PrimitiveValueBlock";var ub,p1=class extends Tt{constructor(e={}){super(e,h1),this.idBlock.isConstructed=!1}};ub=p1;Q.Primitive=ub;p1.NAME="PRIMITIVE";function PR(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function Y1(r,e=0,t=r.length){let n=e,o=new Tt({},$t),s=new co;if(!ho(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=Tt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=Q.EndOfContent;break;case 1:c=Q.Boolean;break;case 2:c=Q.Integer;break;case 3:c=Q.BitString;break;case 4:c=Q.OctetString;break;case 5:c=Q.Null;break;case 6:c=Q.ObjectIdentifier;break;case 10:c=Q.Enumerated;break;case 12:c=Q.Utf8String;break;case 13:c=Q.RelativeObjectIdentifier;break;case 14:c=Q.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=Q.Sequence;break;case 17:c=Q.Set;break;case 18:c=Q.NumericString;break;case 19:c=Q.PrintableString;break;case 20:c=Q.TeletexString;break;case 21:c=Q.VideotexString;break;case 22:c=Q.IA5String;break;case 23:c=Q.UTCTime;break;case 24:c=Q.GeneralizedTime;break;case 25:c=Q.GraphicString;break;case 26:c=Q.VisibleString;break;case 27:c=Q.GeneralString;break;case 28:c=Q.UniversalString;break;case 29:c=Q.CharacterString;break;case 30:c=Q.BmpString;break;case 31:c=Q.DATE;break;case 32:c=Q.TimeOfDay;break;case 33:c=Q.DateTime;break;case 34:c=Q.Duration;break;default:{let l=o.idBlock.isConstructed?new Q.Constructed:new Q.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?Q.Constructed:Q.Primitive}return o=PR(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function j1(r){if(!r.byteLength){let e=new Tt({},$t);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Y1(ye.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function RR(r,e){return r?1:e}var An=class extends $t{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;RR(this.isIndefiniteForm,n)>0;){let i=Y1(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===Bl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Bl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Ml;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Tn:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};An.NAME="ConstructedValueBlock";var db,Yo=class extends Tt{constructor(e={}){super(e,An),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
46
|
+
`),t),n('responded with "na" for "%s"',s)}}var G3=class extends ie{id;remoteAddr;remotePeer;direction;timeline;direct;multiplexer;encryption;limits;log;maConn;muxer;components;outboundStreamProtocolNegotiationTimeout;inboundStreamProtocolNegotiationTimeout;closeTimeout;constructor(e,t){super(),this.components=e,this.id=t.id,this.remoteAddr=t.maConn.remoteAddr,this.remotePeer=t.remotePeer,this.direction=t.direction??"outbound",this.timeline=t.maConn.timeline,this.encryption=t.cryptoProtocol,this.limits=t.limits,this.maConn=t.maConn,this.log=t.maConn.log,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.closeTimeout=t.closeTimeout??1e3,this.direct=D3(t.maConn.remoteAddr),this.onIncomingStream=this.onIncomingStream.bind(this),this.remoteAddr.getComponents().find(n=>n.code===421)==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),t.muxer!=null&&(this.multiplexer=t.muxer.protocol,this.muxer=t.muxer,this.muxer.addEventListener("stream",this.onIncomingStream)),this.maConn.addEventListener("close",n=>{this.dispatchEvent(new xo(n.local,n.error))})}[Symbol.toStringTag]="Connection";[I6]=!0;get streams(){return this.muxer?.streams??[]}get status(){return this.maConn.status}newStream=async(e,t={})=>{if(this.muxer==null)throw new zo("Connection is not multiplexed");if(this.muxer.status!=="open")throw new is(`The connection muxer is "${this.muxer.status}" and not "open"`);if(this.maConn.status!=="open")throw new is(`The connection is "${this.status}" and not "open"`);if(this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new ja("Cannot open protocol stream on limited connection");Array.isArray(e)||(e=[e]),this.log.trace("starting new stream for protocols %s",e);let n=await this.muxer.createStream({...t,protocol:e.length===1?e[0]:void 0});this.log.trace("started new stream %s for protocols %s",n.id,e);try{if(t.signal==null){n.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",e);let a=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);t={...t,signal:a}}n.protocol===""?(n.log.trace("selecting protocol from protocols %s",e),n.protocol=await xa(n,e,t),n.log("negotiated protocol %s",n.protocol)):n.log("pre-negotiated protocol %s",n.protocol);let o=iR(n.protocol,this.components.registrar,t),s=Vw(n.protocol,"outbound",this);if(s>o){let a=new mi(`Too many outbound protocol streams for protocol "${n.protocol}" - ${s}/${o}`);throw n.abort(a),a}await this.components.peerStore.merge(this.remotePeer,{protocols:[n.protocol]}),this.components.metrics?.trackProtocolStream(n);let i=this.components.registrar.getMiddleware(n.protocol);return await this.runMiddlewareChain(n,this,i)}catch(o){throw n.status==="open"?n.abort(o):this.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",this.direction==="inbound"?"from":"to",this.remoteAddr,e,o),o}};async onIncomingStream(e){let t=e.detail,n=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);t.log("start protocol negotiation, timing out after %dms",this.inboundStreamProtocolNegotiationTimeout);try{if(t.protocol===""){let l=this.components.registrar.getProtocols();t.log.trace("selecting protocol from protocols %s",l),t.protocol=await va(t,l,{signal:n}),t.log("negotiated protocol %s",t.protocol)}else t.log("pre-negotiated protocol %s",t.protocol);let o=sR(t.protocol,this.components.registrar);if(Vw(t.protocol,"inbound",this)>o)throw new Iu(`Too many inbound protocol streams for protocol "${t.protocol}" - limit ${o}`);await this.components.peerStore.merge(this.remotePeer,{protocols:[t.protocol]},{signal:n}),this.components.metrics?.trackProtocolStream(t);let{handler:i,options:a}=this.components.registrar.getHandler(t.protocol);if(this.limits!=null&&a.runOnLimitedConnection!==!0)throw new ja("Cannot open protocol stream on limited connection");let c=this.components.registrar.getMiddleware(t.protocol);c.push(async(l,d,u)=>{await i(l,d),u(l,d)}),await this.runMiddlewareChain(t,this,c)}catch(o){t.abort(o)}}async runMiddlewareChain(e,t,n){for(let o=0;o<n.length;o++){let s=n[o];e.log.trace("running middleware",o,s),await new Promise((i,a)=>{try{let c=s(e,t,(l,d)=>{e=l,t=d,i()});c instanceof Promise&&c.catch(a)}catch(c){a(c)}}),e.log.trace("ran middleware",o,s)}return e}async close(e={}){if(this.log("closing connection to %a",this.remoteAddr),e.signal==null){let t=AbortSignal.timeout(this.closeTimeout);e={...e,signal:t}}await this.muxer?.close(e),await this.maConn.close(e)}abort(e){this.muxer?.abort(e),this.maConn.abort(e)}};function Hw(r,e){return new G3(r,e)}function sR(r,e){try{let{options:t}=e.getHandler(r);if(t.maxInboundStreams!=null)return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return q3}function iR(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??W3}function Vw(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var t1=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;connectionCloseTimeout;constructor(e,t){this.components=e,this.connectionEncrypters=ot({name:"libp2p_upgrader_connection_encrypters",metrics:this.components.metrics}),t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=ot({name:"libp2p_upgrader_stream_multiplexers",metrics:this.components.metrics}),t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.connectionCloseTimeout=t.connectionCloseTimeout??1e3,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total"),inboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_inbound_errors_total"),outboundErrors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_outbound_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new Mh(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=le([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,o=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=this.components.connectionManager.acceptIncomingConnection(e),!n)throw new Bh("Connection denied");await Pe(this.shouldBlockConnection("denyInboundConnection",e),o),await this._performUpgrade(e,"inbound",{...t,signal:o})}catch(s){throw this.metrics.errors?.increment({inbound:!0}),this.metrics.inboundErrors?.increment({[s.name??"Error"]:!0}),s}finally{o.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getComponents().findLast(i=>i.code===421)?.value,o;n!=null&&(o=Me(n),await Pe(this.shouldBlockConnection("denyOutboundConnection",o,e),t.signal));let s="outbound";return t.initiator===!1&&(s="inbound"),await this._performUpgrade(e,s,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),this.metrics.outboundErrors?.increment({[n.name??"Error"]:!0}),n}}async _performUpgrade(e,t,n){let o=e,s,i,a,c,l=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`;if(e.log=e.log.newScope(`${t}:${l}`),this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t),n?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(e.log("protecting the %s connection",t),o=await u.protect(o,n))}try{if(aR(n)){if(n.remotePeer==null)throw new ln(`${t} connection that skipped encryption must have a peer id`);c="native",s=n.remotePeer}else{let u=e.remoteAddr.getComponents().findLast(h=>h.code===421)?.value,f;u!=null&&(f=Me(u)),n?.onProgress?.(new H(`upgrader:encrypt-${t}-connection`)),{connection:o,remotePeer:s,protocol:c,streamMuxer:i}=await(t==="inbound"?this._encryptInbound(o,{...n,remotePeer:f}):this._encryptOutbound(o,{...n,remotePeer:f}))}if(s.equals(this.components.peerId)){let u=new hi("Can not dial self");throw e.abort(u),u}await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",s,e),n?.muxerFactory!=null?i=n.muxerFactory:i==null&&this.streamMuxers.size>0&&(n?.onProgress?.(new H(`upgrader:multiplex-${t}-connection`)),i=await(t==="inbound"?this._multiplexInbound(o,this.streamMuxers,n):this._multiplexOutbound(o,this.streamMuxers,n)))}catch(u){throw e.log.error("failed to upgrade %s connection %s %a - %e",t,t==="inbound"?"from":"to",e.remoteAddr,u),u}i!=null&&(e.log("create muxer %s",i.protocol),a=i.createStreamMuxer(o)),await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",s,e);let d=this._createConnection({id:l,cryptoProtocol:c,direction:t,maConn:e,stream:o,muxer:a,remotePeer:s,limits:n?.limits,closeTimeout:this.connectionCloseTimeout});return d.log("successfully upgraded connection"),d}_createConnection(e){let t=Hw(this.components,{...e,outboundStreamProtocolNegotiationTimeout:this.outboundStreamProtocolNegotiationTimeout,inboundStreamProtocolNegotiationTimeout:this.inboundStreamProtocolNegotiationTimeout});return t.addEventListener("close",()=>{this.events.safeDispatchEvent("connection:close",{detail:t})}),this.events.safeDispatchEvent("connection:open",{detail:t}),t}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let o=await va(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new ei(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using %s",o),{...await s.secureInbound(e,t),protocol:o}}catch(o){throw new ei(o.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let o=await xa(e,n,t),s=this.connectionEncrypters.get(o);if(s==null)throw new ei(`no crypto module found for ${o}`);return e.log("encrypting outbound connection using %s",o),{...await s.secureOutbound(e,t),protocol:o}}catch(o){throw new ei(o.message)}}async _multiplexOutbound(e,t,n){let o=Array.from(t.keys());e.log("outbound selecting muxer %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await xa(e,o,n),i=t.get(s);if(i==null)throw new zo(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing outbound connection - %e",s),new zo(String(s))}}async _multiplexInbound(e,t,n){let o=Array.from(t.keys());e.log("inbound handling muxers %s",o);try{e.log.trace("selecting stream muxer from %s",o);let s=await va(e,o,n),i=t.get(s);if(i==null)throw new zo(`No muxer configured for protocol "${s}"`);return e.log("selected %s as muxer protocol",s),i}catch(s){throw e.log.error("error multiplexing inbound connection - %e",s),s}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};function aR(r){return r.skipEncryption===!0}var r1="3.1.6",n1="js-libp2p";function o1(r,e){return`${r??n1}/${e??r1} browser/${globalThis.navigator.userAgent}`}var Dl=class extends ie{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new ie,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let d=n(l),u=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return d||u},this.peerId=e.peerId,this.logger=e.logger??ra(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=e.nodeInfo?.name??n1,s=e.nodeInfo?.version??r1,i=this.components=kw({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:o,version:s,userAgent:e.nodeInfo?.userAgent??o1(o,s)},logger:this.logger,events:t,datastore:e.datastore??new Js,connectionGater:Rw(e.connectionGater),dns:e.dns});e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),this.peerStore=this.configureComponent("peerStore",Aw(i,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),i.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let d={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(u=>u.multiaddr)};i.events.safeDispatchEvent("peer:discovery",{detail:d})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(i)),this.components.upgrader=new t1(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,d)=>this.configureComponent(`connection-encryption-${d}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,d)=>this.configureComponent(`stream-muxers-${d}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout,connectionCloseTimeout:e.connectionManager?.connectionCloseTimeout}),this.configureComponent("transportManager",new e1(this.components,e.transportManager)),this.configureComponent("connectionManager",new Gh(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new Yh(this.components,e.connectionMonitor)),this.configureComponent("registrar",new Jh(this.components)),this.configureComponent("addressManager",new _h(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,d)=>this.configureComponent(`peer-router-${d}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new Qh(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,d)=>this.configureComponent(`content-router-${d}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new jh(this.components,{routers:c})),this.configureComponent("randomWalk",new Zh(this.components)),(e.peerDiscovery??[]).forEach((l,d)=>{this.configureComponent(`peer-discovery-${d}`,l(this.components)).addEventListener("peer",f=>{this.#e(f)})}),e.transports?.forEach((l,d)=>{this.components.transportManager.add(this.configureComponent(`transport-${d}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let d=e.services[l],u=d(this.components);if(u==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=u,this.configureComponent(l,u),u[Dn]!=null&&(this.log("registering service %s for content routing",l),c.push(u[Dn])),u[On]!=null&&(this.log("registering service %s for peer routing",l),a.push(u[On])),u[ls]!=null&&(this.log("registering service %s for peer discovery",l),u[ls].addEventListener?.("peer",f=>{this.#e(f)}))}Pw(i)}configureComponent(e,t){return t==null&&this.log.error("component %s was null or undefined",e),this.components[e]=t,t}async start(){if(this.status==="stopped"){this.status="starting",this.log("libp2p is starting");try{await this.components.beforeStart?.(),await this.components.start(),await this.components.afterStart?.(),this.status="started",this.safeDispatchEvent("start",{detail:this}),this.log("libp2p has started with peer id %p",this.peerId)}catch(e){throw this.log.error("an error occurred starting libp2p - %e",e),this.status="started",await this.stop(),e}}}async stop(){this.status==="started"&&(this.log("libp2p is stopping"),this.status="stopping",await this.components.beforeStop?.(),await this.components.stop(),await this.components.afterStop?.(),this.status="stopped",this.safeDispatchEvent("stop",{detail:this}),this.log("libp2p has stopped"))}getConnections(e){return this.components.connectionManager.getConnections(e)}getDialQueue(){return this.components.connectionManager.getDialQueue()}getPeers(){let e=new xr;for(let t of this.components.connectionManager.getConnections())e.add(t.remotePeer);return Array.from(e)}async dial(e,t={}){return this.components.connectionManager.openConnection(e,{priority:75,...t})}async dialProtocol(e,t,n={}){if(t==null)throw new A("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new A("no protocols were provided to open a stream");return this.components.connectionManager.openStream(e,t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){yn(e)&&(e=Me(e.getComponents().findLast(n=>n.code===421)?.value??"")),await this.components.connectionManager.closeConnections(e,t)}async getPublicKey(e,t={}){if(this.log("getPublicKey %p",e),e.publicKey!=null)return e.publicKey;try{let i=await this.peerStore.get(e,t);if(i.id.publicKey!=null)return i.id.publicKey}catch(i){if(i.name!=="NotFoundError")throw i}let n=Oe([C("/pk/"),e.toMultihash().bytes]),o=await this.contentRouting.get(n,t),s=tt(o);return await this.peerStore.patch(e,{publicKey:s},t),s}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async o=>{await this.components.registrar.handle(o,t,n)}))}async unhandle(e,t){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async n=>{await this.components.registrar.unhandle(n,t)}))}async register(e,t,n){return this.components.registrar.register(e,t,n)}unregister(e){this.components.registrar.unregister(e)}use(e,t){this.components.registrar.use(e,Array.isArray(t)?t:[t])}unuse(e){this.components.registrar.unuse(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error("could not update multiaddrs of discovered peer - %e",n)})}};async function Ww(r={}){r.privateKey??=await od("Ed25519");let e=new Dl({...await lw(r),peerId:E9(r.privateKey)});return r.start!==!1&&await e.start(),e}var cR=["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"];function zw(r){return r==null?!1:r instanceof Dl?!0:cR.every(e=>typeof r[e]=="function")}var Wb=Ln(tb(),1);var Y3={keyLength:64,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"};var Sa={};et(Sa,{create:()=>xR,derivedEmptyPasswordKey:()=>s1});var s1={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function xR(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,o=r?.digest??"SHA-256",s=r?.saltLength??16,i=r?.iterations??32767,a=nt.get();t*=8;async function c(u,f){let h=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:p};typeof f=="string"&&(f=C(f));let m;if(f.length===0){m=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["encrypt"]);try{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},I=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(T,I,{name:e,length:t},!0,["encrypt"])}catch{m=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["encrypt"])}}else{let T={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},I=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);m=await a.subtle.deriveKey(T,I,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(g,m,u);return Oe([h,g.iv,new Uint8Array(w)])}async function l(u,f){let h=u.subarray(0,s),p=u.subarray(s,s+n),g=u.subarray(s+n),m={name:e,iv:p};typeof f=="string"&&(f=C(f));let w;if(f.length===0)try{let I={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(I,D,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",s1,{name:"AES-GCM"},!0,["decrypt"])}else{let I={name:"PBKDF2",salt:h,iterations:i,hash:{name:o}},D=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(I,D,{name:e,length:t},!0,["decrypt"])}let T=await a.subtle.decrypt(m,w,g);return new Uint8Array(T)}return{encrypt:c,decrypt:l}}var ye=Ln(rb());function ti(r,e){let t=0;if(r.length===1)return r[0];for(let n=r.length-1;n>=0;n--)t+=r[r.length-1-n]*Math.pow(2,e*n);return t}function Go(r,e,t=-1){let n=t,o=r,s=0,i=Math.pow(2,e);for(let a=1;a<8;a++){if(r<i){let c;if(n<0)c=new ArrayBuffer(a),s=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),s=n}let l=new Uint8Array(c);for(let d=a-1;d>=0;d--){let u=Math.pow(2,d*e);l[s-d-1]=Math.floor(o/u),o-=l[s-d-1]*u}return c}i*=Math.pow(2,e)}return new ArrayBuffer(0)}function c1(...r){let e=0,t=0;for(let s of r)e+=s.length;let n=new ArrayBuffer(e),o=new Uint8Array(n);for(let s of r)o.set(s,t),t+=s.length;return o}function X3(){let r=new Uint8Array(this.valueHex);if(this.valueHex.byteLength>=2){let a=r[0]===255&&r[1]&128,c=r[0]===0&&(r[1]&128)===0;(a||c)&&this.warnings.push("Needlessly long format")}let e=new ArrayBuffer(this.valueHex.byteLength),t=new Uint8Array(e);for(let a=0;a<this.valueHex.byteLength;a++)t[a]=0;t[0]=r[0]&128;let n=ti(t,8),o=new ArrayBuffer(this.valueHex.byteLength),s=new Uint8Array(o);for(let a=0;a<this.valueHex.byteLength;a++)s[a]=r[a];return s[0]&=127,ti(s,8)-n}function nb(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let i=t-e,a=Go(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=Go(e,8,n),s=new Uint8Array(o);if(s[0]&128){let i=o.slice(0),a=new Uint8Array(i);o=new ArrayBuffer(o.byteLength+1),s=new Uint8Array(o);for(let c=0;c<i.byteLength;c++)s[c+1]=a[c];s[0]=0}return o}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function ob(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<t.length;o++)if(t[o]!==n[o])return!1;return!0}function sr(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,o=new Array(n);for(let i=0;i<n;i++)o[i]="0";return o.join("").concat(t)}var Tse=Math.log(2);function l1(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Q3(r){let e=0,t=0;for(let o=0;o<r.length;o++){let s=r[o];e+=s.byteLength}let n=new Uint8Array(e);for(let o=0;o<r.length;o++){let s=r[o];n.set(new Uint8Array(s),t),t+=s.byteLength}return n.buffer}function ho(r,e,t,n){return e instanceof Uint8Array?e.byteLength?t<0?(r.error="Wrong parameter: inputOffset less than zero",!1):n<0?(r.error="Wrong parameter: inputLength less than zero",!1):e.byteLength-t-n<0?(r.error="End of input reached before message was fully decoded (inconsistent offset and length values)",!1):!0:(r.error="Wrong parameter: inputBuffer has zero length",!1):(r.error="Wrong parameter: inputBuffer must be 'Uint8Array'",!1)}var Ml=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Q3(this.items)}},Nl=[new Uint8Array([1])],sb="0123456789";var Ia="",Tn=new ArrayBuffer(0),Z3=new Uint8Array(0),Bl="EndOfContent",ab="OCTET STRING",cb="BIT STRING";function po(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var o;super(...n);let s=n[0]||{};this.isHexOnly=(o=s.isHexOnly)!==null&&o!==void 0?o:!1,this.valueHexView=s.valueHex?ye.BufferSourceConverter.toUint8Array(s.valueHex):Z3}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!ho(this,i,o,s))return-1;let a=o+s;return this.valueHexView=i.subarray(o,a),this.valueHexView.length?(this.blockLength=s,a):(this.warnings.push("Zero buffer length"),o)}toBER(n=!1){return this.isHexOnly?n?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.byteLength===this.valueHexView.buffer.byteLength?this.valueHexView.buffer:this.valueHexView.slice().buffer:(this.error="Flag 'isHexOnly' is not set, abort",Tn)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ye.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var co=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=Ia,warnings:n=[],valueBeforeDecode:o=Z3}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=ye.BufferSourceConverter.toUint8Array(o)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:ye.Convert.ToHex(this.valueBeforeDecodeView)}}};co.NAME="baseBlock";var $t=class extends co{fromBER(e,t,n){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}toBER(e,t){throw TypeError("User need to make a specific function in a class which extends 'ValueBlock'")}};$t.NAME="valueBlock";var u1=class extends po(co){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?ye.BufferSourceConverter.toUint8Array(e.valueHex):Z3,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(o=e.tagNumber)!==null&&o!==void 0?o:-1,this.isConstructed=(s=e.isConstructed)!==null&&s!==void 0?s:!1):(this.tagClass=-1,this.tagNumber=-1,this.isConstructed=!1)}toBER(e=!1){let t=0;switch(this.tagClass){case 1:t|=0;break;case 2:t|=64;break;case 3:t|=128;break;case 4:t|=192;break;default:return this.error="Unknown tag class",Tn}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let o=new Uint8Array(1);if(!e){let s=this.tagNumber;s&=31,t|=s,o[0]=t}return o.buffer}if(!this.isHexOnly){let o=Go(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let h=0;h<l.length;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=ti(l,7):(this.isHexOnly=!0,this.warnings.push("Tag too long, represented as hex-coded"))}if(this.tagClass===1&&this.isConstructed)switch(this.tagNumber){case 1:case 2:case 5:case 6:case 9:case 13:case 14:case 23:case 24:case 31:case 32:case 33:case 34:return this.error="Constructed encoding used for primitive type",-1}return t+this.blockLength}toJSON(){return{...super.toJSON(),tagClass:this.tagClass,tagNumber:this.tagNumber,isConstructed:this.isConstructed}}};u1.NAME="identificationBlock";var d1=class extends co{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;if(s[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=s[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(s[0]&128),this.longFormUsed===!1)return this.length=s[0],this.blockLength=1,t+this.blockLength;let i=s[0]&127;if(i>8)return this.error="Too big integer",-1;if(i+1>s.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=o.subarray(a,a+i);return c[i-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=ti(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=i+1,t+this.blockLength}toBER(e=!1){let t,n;if(this.length>127&&(this.longFormUsed=!0),this.isIndefiniteForm)return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=128),t;if(this.longFormUsed){let o=Go(this.length,8);if(o.byteLength>127)return this.error="Too big length",Tn;if(t=new ArrayBuffer(o.byteLength+1),e)return t;let s=new Uint8Array(o);n=new Uint8Array(t),n[0]=o.byteLength|128;for(let i=0;i<o.byteLength;i++)n[i+1]=s[i];return t}return t=new ArrayBuffer(1),e===!1&&(n=new Uint8Array(t),n[0]=this.length),t}toJSON(){return{...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,longFormUsed:this.longFormUsed,length:this.length}}};d1.NAME="lengthBlock";var Q={},Tt=class extends co{constructor({name:e=Ia,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new u1(o),this.lenBlock=new d1(o),this.valueBlock=s?new s(o):new $t(o)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}toBER(e,t){let n=t||new Ml;t||lb(this);let o=this.idBlock.toBER(e);if(n.write(o),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let s=this.valueBlock.toBER(e);this.lenBlock.length=s.byteLength;let i=this.lenBlock.toBER(e);n.write(i),n.write(s)}return t?Tn:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ye.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=ye.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return ob(t,n)}};Tt.NAME="BaseBlock";function lb(r){var e;if(r instanceof Q.Constructed)for(let t of r.valueBlock.value)lb(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var f1=class extends Tt{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=Ia,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.fromBuffer(this.valueBlock.valueHexView),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};f1.NAME="BaseStringBlock";var h1=class extends po($t){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};h1.NAME="PrimitiveValueBlock";var ub,p1=class extends Tt{constructor(e={}){super(e,h1),this.idBlock.isConstructed=!1}};ub=p1;Q.Primitive=ub;p1.NAME="PRIMITIVE";function PR(r,e){if(r instanceof e)return r;let t=new e;return t.idBlock=r.idBlock,t.lenBlock=r.lenBlock,t.warnings=r.warnings,t.valueBeforeDecodeView=r.valueBeforeDecodeView,t}function Y1(r,e=0,t=r.length){let n=e,o=new Tt({},$t),s=new co;if(!ho(s,r,e,t))return o.error=s.error,{offset:-1,result:o};if(!r.subarray(e,e+t).length)return o.error="Zero buffer length",{offset:-1,result:o};let a=o.idBlock.fromBER(r,e,t);if(o.idBlock.warnings.length&&o.warnings.concat(o.idBlock.warnings),a===-1)return o.error=o.idBlock.error,{offset:-1,result:o};if(e=a,t-=o.idBlock.blockLength,a=o.lenBlock.fromBER(r,e,t),o.lenBlock.warnings.length&&o.warnings.concat(o.lenBlock.warnings),a===-1)return o.error=o.lenBlock.error,{offset:-1,result:o};if(e=a,t-=o.lenBlock.blockLength,!o.idBlock.isConstructed&&o.lenBlock.isIndefiniteForm)return o.error="Indefinite length form used for primitive encoding form",{offset:-1,result:o};let c=Tt;switch(o.idBlock.tagClass){case 1:if(o.idBlock.tagNumber>=37&&o.idBlock.isHexOnly===!1)return o.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:o};switch(o.idBlock.tagNumber){case 0:if(o.idBlock.isConstructed&&o.lenBlock.length>0)return o.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:o};c=Q.EndOfContent;break;case 1:c=Q.Boolean;break;case 2:c=Q.Integer;break;case 3:c=Q.BitString;break;case 4:c=Q.OctetString;break;case 5:c=Q.Null;break;case 6:c=Q.ObjectIdentifier;break;case 10:c=Q.Enumerated;break;case 12:c=Q.Utf8String;break;case 13:c=Q.RelativeObjectIdentifier;break;case 14:c=Q.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=Q.Sequence;break;case 17:c=Q.Set;break;case 18:c=Q.NumericString;break;case 19:c=Q.PrintableString;break;case 20:c=Q.TeletexString;break;case 21:c=Q.VideotexString;break;case 22:c=Q.IA5String;break;case 23:c=Q.UTCTime;break;case 24:c=Q.GeneralizedTime;break;case 25:c=Q.GraphicString;break;case 26:c=Q.VisibleString;break;case 27:c=Q.GeneralString;break;case 28:c=Q.UniversalString;break;case 29:c=Q.CharacterString;break;case 30:c=Q.BmpString;break;case 31:c=Q.DATE;break;case 32:c=Q.TimeOfDay;break;case 33:c=Q.DateTime;break;case 34:c=Q.Duration;break;default:{let l=o.idBlock.isConstructed?new Q.Constructed:new Q.Primitive;l.idBlock=o.idBlock,l.lenBlock=o.lenBlock,l.warnings=o.warnings,o=l}}break;case 2:case 3:case 4:default:c=o.idBlock.isConstructed?Q.Constructed:Q.Primitive}return o=PR(o,c),a=o.fromBER(r,e,o.lenBlock.isIndefiniteForm?t:o.lenBlock.length),o.valueBeforeDecodeView=r.subarray(n,n+o.blockLength),{offset:a,result:o}}function j1(r){if(!r.byteLength){let e=new Tt({},$t);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Y1(ye.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function RR(r,e){return r?1:e}var An=class extends $t{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!ho(this,o,t,n))return-1;if(this.valueBeforeDecodeView=o.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let s=t;for(;RR(this.isIndefiniteForm,n)>0;){let i=Y1(o,s,n);if(i.offset===-1)return this.error=i.result.error,this.warnings.concat(i.result.warnings),-1;if(s=i.offset,this.blockLength+=i.result.blockLength,n-=i.result.blockLength,this.value.push(i.result),this.isIndefiniteForm&&i.result.constructor.NAME===Bl)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Bl?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Ml;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Tn:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};An.NAME="ConstructedValueBlock";var db,Yo=class extends Tt{constructor(e={}){super(e,An),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let o=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return o===-1?(this.error=this.valueBlock.error,o):(this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.valueBlock.error.length||(this.blockLength+=this.valueBlock.blockLength),o)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
|
|
47
47
|
`).map(o=>` ${o}`).join(`
|
|
48
48
|
`));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
|
|
49
49
|
${e.join(`
|
|
@@ -100,7 +100,7 @@ a=end-of-candidates
|
|
|
100
100
|
`:`
|
|
101
101
|
`;try{r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
|
|
102
102
|
a=ice-ufrag:`+e+t).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
103
|
-
a=ice-pwd:`+e+t)}catch{}return r}var g6=C("libp2p-webrtc-noise:");function zv(r,e,t){let n=r.trim().toLowerCase().replaceAll(":",""),o=C(n,"hex"),s=Wt(ze.code,o),i=h6.decode(p6(e)),a=g6.byteLength+s.bytes.byteLength+i.byteLength;return t==="server"?Oe([g6,i,s.bytes],a):Oe([g6,s.bytes,i],a)}var sN=L0?"iceconnectionstatechange":"connectionstatechange";function iN(r,e){return r.role==="server"}async function Gv(r,e,t,n){let o=r.createDataChannel("",{negotiated:!0,id:0});try{if(n.role==="client"){n.log.trace("client creating local offer");let u=await r.createOffer();n.log.trace("client created local offer %s",u.sdp);let f=m6(u,t);n.log.trace("client setting local offer %s",f.sdp),await r.setLocalDescription(f);let h=Hv(n.remoteAddr,t);n.log.trace("client setting server description %s",h.sdp),await r.setRemoteDescription(h)}else{let u=qv(n.remoteAddr,t);n.log.trace("server setting client %s %s",u.type,u.sdp),await r.setRemoteDescription(u),n.log.trace("server creating local answer");let f=await r.createAnswer();n.log.trace("server created local answer");let h=m6(f,t);n.log.trace("server setting local description %s",f.sdp),await r.setLocalDescription(h)}if(o.readyState!=="open"&&(n.log.trace("%s wait for handshake channel to open, starting status %s",n.role,o.readyState),await wo(o,"open",n)),n.log.trace("%s handshake channel opened",n.role),iN(n,r)){let u=r.remoteFingerprint()?.value??"";n.remoteAddr=n.remoteAddr.encapsulate(Vv(u))}let s=Kv(r.localDescription?.sdp);if(s==null)throw new ss("Could not get fingerprint from local description sdp");n.log.trace("%s performing noise handshake",n.role);let i=zv(s,n.remoteAddr,n.role),a=sp({prologueBytes:i})(n),c=wu({channel:o,direction:"outbound",isHandshake:!0,log:n.log,...n.dataChannel??{}}),l=bu({peerConnection:r,remoteAddr:n.remoteAddr,metrics:n.events,direction:n.role==="client"?"outbound":"inbound",log:n.logger.forComponent("libp2p:webrtc-direct:connection")});if(r.addEventListener(sN,()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(u=>{n.log.error("error closing connection - %e",u),l.abort(u)});break;default:break}}),n.events?.increment({peer_connection:!0}),n.role==="client"){n.log.trace("%s secure inbound",n.role);let u=await a.secureInbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});return n.log.trace("%s upgrade outbound",n.role),await n.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:u.remotePeer,muxerFactory:e,signal:n.signal})}n.log.trace("%s secure outbound",n.role);let d=await a.secureOutbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${d.remotePeer}`),n.log.trace("%s upgrade inbound",n.role),await n.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:d.remotePeer,muxerFactory:e,signal:n.signal})}catch(s){throw o.close(),r.close(),s}}async function Yv(r,e,t={}){let n=t.certificate;n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof t.rtcConfiguration=="function"?await t.rtcConfiguration():t.rtcConfiguration,s=new RTCPeerConnection({...o??{},certificates:[n]}),i=new os({peerConnection:s,metrics:t.events,dataChannelOptions:t.dataChannel});return{peerConnection:s,muxerFactory:i}}var V0=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[vo]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[me]=["@libp2p/transport"];async dial(e,t){this.log("dial %a",e),t.signal.throwIfAborted();let n,o=e.getComponents().findLast(c=>c.code===421)?.value;o!=null&&(n=Me(o));let s=Ov(),{peerConnection:i,muxerFactory:a}=await Yv("client",s,{rtcConfiguration:typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{},dataChannel:this.init.dataChannel});try{return await Gv(i,a,s,{role:"client",log:this.log,logger:this.components.logger,events:this.metrics?.dialerEvents,signal:t.signal,remoteAddr:e,dataChannel:this.init.dataChannel,upgrader:t.upgrader,peerId:this.components.peerId,remotePeer:n,privateKey:this.components.privateKey})}catch(c){throw i.close(),c}}createListener(e){throw new M0("WebRTCDirectTransport.createListener")}listenFilter(e){return[]}dialFilter(e){return e.filter(gl.exactMatch)}};function jv(r){return e=>new V0(e,r)}function Xv(r){return e=>new K0(e,r)}var aN=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function cN(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=aN(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Qv(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=cN(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Zv(){throw new Error("WebSocket Servers can not be created in the browser!")}var lN=1024*1024*4,uN=10,y6=class extends Oo{websocket;maxBufferedAmount;checkBufferedAmountTask;constructor(e){super(e),this.websocket=e.websocket,this.maxBufferedAmount=e.maxBufferedAmount??lN,this.checkBufferedAmountTask=oa(this.checkBufferedAmount.bind(this),e.bufferedAmountPollInterval??uN),this.websocket.addEventListener("close",t=>{if(this.log('closed - code %d, reason "%s", wasClean %s',t.code,t.reason,t.wasClean),this.checkBufferedAmountTask.stop(),!t.wasClean){this.onRemoteReset();return}this.onTransportClosed()},{once:!0}),this.websocket.addEventListener("message",t=>{try{let n;if(typeof t.data=="string")n=C(t.data);else if(t.data instanceof ArrayBuffer)n=new Uint8Array(t.data,0,t.data.byteLength);else{this.abort(new Error("Incorrect binary type"));return}this.onData(n)}catch(n){this.log.error("error receiving data - %e",n)}})}sendData(e){for(let n of e)this.websocket.send(n);let t=this.websocket.bufferedAmount<this.maxBufferedAmount;return t||this.checkBufferedAmountTask.start(),{sentBytes:e.byteLength,canSendMore:t}}sendReset(){this.websocket.close(1006)}async sendClose(e){this.websocket.close(),e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}checkBufferedAmount(){this.log("buffered amount now %d",this.websocket.bufferedAmount),this.websocket.bufferedAmount===0&&(this.checkBufferedAmountTask.stop(),this.safeDispatchEvent("drain"))}};function Jv(r){return new y6(r)}var w6=class{log;init;logger;metrics;components;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[vo]=!0;[Symbol.toStringTag]="@libp2p/websockets";[me]=["@libp2p/transport"];async dial(e,t){this.log("dialing %s",e),t=t??{};let n=Jv({websocket:await this._connect(e,t),remoteAddr:e,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:websockets:connection"),maxBufferedAmount:this.init.maxBufferedAmount,bufferedAmountPollInterval:this.init.bufferedAmountPollInterval});this.log("new outbound connection %s",n.remoteAddr);let o=await t.upgrader.upgradeOutbound(n,t);return this.log("outbound connection %s upgraded",n.remoteAddr),o}async _connect(e,t){t?.signal?.throwIfAborted();let n=qo(e);this.log("create websocket connection to %s",n);let o=new WebSocket(n);o.binaryType="arraybuffer";try{t.onProgress?.(new H("websockets:open-connection")),await Qv(o,"open",t)}catch(s){if(t.signal?.aborted)throw this.metrics?.dialerEvents.increment({abort:!0}),new di(`Could not connect to ${n}`);this.metrics?.dialerEvents.increment({error:!0});try{o.close()}catch{}throw s}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),o}createListener(e){return Zv({logger:this.logger,events:this.components.events,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e.filter(t=>ro.exactMatch(t)||Qs.exactMatch(t))}dialFilter(e){return this.listenFilter(e)}};function eS(r={}){return e=>new w6(e,r)}var b6=Ln(th(),1);function tS(r,e){let t=e.map((n,o)=>({record:vn(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===or.ValidityType.EOL&&o.record.validityType===or.ValidityType.EOL){let a=b6.default.fromString(n.record.validity).toDate(),c=b6.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var rS="6.0.21",nS="helia";var oS={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function H0(r={}){let e=`${nS}/${rS} ${o1()}`;return{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:["/p2p-circuit","/webrtc"]},transports:[UE(),Xv(),jv(),eS()],connectionEncrypters:[sp()],streamMuxers:[vE(),yv()],peerDiscovery:[_E(oS)],services:{autoNAT:TE(),dcutr:KE(),delegatedRouting:ew(g3()),dht:fv({clientMode:!0,validators:{ipns:ch},selectors:{ipns:tS}}),identify:Lx(),identifyPush:Dx(),keychain:Z1(r.keychain),ping:Sv(),http:Tx()}}}async function sS(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await n4(r.datastore,r.keychain));let t=H0(e);return t.datastore=t.datastore??r.datastore,await Ww({...t,...e,start:!1})}async function E6(r={}){let e=r.datastore??new Js,t=r.blockstore??new vl,n;return zw(r.libp2p)?n=r.libp2p:n=await sS({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e}),{...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[p3(),n3()],routers:r.routers??[_3(n),I3()],metrics:n.metrics}}async function dN(r={}){let e=await E6(r),t=new Df(e);return e.start!==!1&&await t.start(),t}return dS(fN);})();
|
|
103
|
+
a=ice-pwd:`+e+t)}catch{}return r}var g6=C("libp2p-webrtc-noise:");function zv(r,e,t){let n=r.trim().toLowerCase().replaceAll(":",""),o=C(n,"hex"),s=Wt(ze.code,o),i=h6.decode(p6(e)),a=g6.byteLength+s.bytes.byteLength+i.byteLength;return t==="server"?Oe([g6,i,s.bytes],a):Oe([g6,s.bytes,i],a)}var sN=L0?"iceconnectionstatechange":"connectionstatechange";function iN(r,e){return r.role==="server"}async function Gv(r,e,t,n){let o=r.createDataChannel("",{negotiated:!0,id:0});try{if(n.role==="client"){n.log.trace("client creating local offer");let u=await r.createOffer();n.log.trace("client created local offer %s",u.sdp);let f=m6(u,t);n.log.trace("client setting local offer %s",f.sdp),await r.setLocalDescription(f);let h=Hv(n.remoteAddr,t);n.log.trace("client setting server description %s",h.sdp),await r.setRemoteDescription(h)}else{let u=qv(n.remoteAddr,t);n.log.trace("server setting client %s %s",u.type,u.sdp),await r.setRemoteDescription(u),n.log.trace("server creating local answer");let f=await r.createAnswer();n.log.trace("server created local answer");let h=m6(f,t);n.log.trace("server setting local description %s",f.sdp),await r.setLocalDescription(h)}if(o.readyState!=="open"&&(n.log.trace("%s wait for handshake channel to open, starting status %s",n.role,o.readyState),await wo(o,"open",n)),n.log.trace("%s handshake channel opened",n.role),iN(n,r)){let u=r.remoteFingerprint()?.value??"";n.remoteAddr=n.remoteAddr.encapsulate(Vv(u))}let s=Kv(r.localDescription?.sdp);if(s==null)throw new ss("Could not get fingerprint from local description sdp");n.log.trace("%s performing noise handshake",n.role);let i=zv(s,n.remoteAddr,n.role),a=sp({prologueBytes:i})(n),c=wu({channel:o,direction:"outbound",isHandshake:!0,log:n.log,...n.dataChannel??{}}),l=bu({peerConnection:r,remoteAddr:n.remoteAddr,metrics:n.events,direction:n.role==="client"?"outbound":"inbound",log:n.logger.forComponent("libp2p:webrtc-direct:connection")});if(r.addEventListener(sN,()=>{switch(r.connectionState){case"failed":case"disconnected":case"closed":l.close().catch(u=>{n.log.error("error closing connection - %e",u),l.abort(u)});break;default:break}}),n.events?.increment({peer_connection:!0}),n.role==="client"){n.log.trace("%s secure inbound",n.role);let u=await a.secureInbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});return n.log.trace("%s upgrade outbound",n.role),await n.upgrader.upgradeOutbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:u.remotePeer,muxerFactory:e,signal:n.signal})}n.log.trace("%s secure outbound",n.role);let d=await a.secureOutbound(c,{remotePeer:n.remotePeer,signal:n.signal,skipStreamMuxerNegotiation:!0});l.remoteAddr=l.remoteAddr.encapsulate(`/p2p/${d.remotePeer}`),n.log.trace("%s upgrade inbound",n.role),await n.upgrader.upgradeInbound(l,{skipProtection:!0,skipEncryption:!0,remotePeer:d.remotePeer,muxerFactory:e,signal:n.signal})}catch(s){throw o.close(),r.close(),s}}async function Yv(r,e,t={}){let n=t.certificate;n==null&&(n=await RTCPeerConnection.generateCertificate({name:"ECDSA",namedCurve:"P-256"}));let o=typeof t.rtcConfiguration=="function"?await t.rtcConfiguration():t.rtcConfiguration,s=new RTCPeerConnection({...o??{},certificates:[n]}),i=new os({peerConnection:s,metrics:t.events,dataChannelOptions:t.dataChannel});return{peerConnection:s,muxerFactory:i}}var V0=class{log;metrics;components;init;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webrtc-direct"),this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc-direct_dialer_events_total",{label:"event",help:"Total count of WebRTC-direct dial events by type"})})}[vo]=!0;[Symbol.toStringTag]="@libp2p/webrtc-direct";[me]=["@libp2p/transport"];async dial(e,t){this.log("dial %a",e),t.signal.throwIfAborted();let n,o=e.getComponents().findLast(c=>c.code===421)?.value;o!=null&&(n=Me(o));let s=Ov(),{peerConnection:i,muxerFactory:a}=await Yv("client",s,{rtcConfiguration:typeof this.init.rtcConfiguration=="function"?await this.init.rtcConfiguration():this.init.rtcConfiguration??{},dataChannel:this.init.dataChannel});try{return await Gv(i,a,s,{role:"client",log:this.log,logger:this.components.logger,events:this.metrics?.dialerEvents,signal:t.signal,remoteAddr:e,dataChannel:this.init.dataChannel,upgrader:t.upgrader,peerId:this.components.peerId,remotePeer:n,privateKey:this.components.privateKey})}catch(c){throw i.close(),c}}createListener(e){throw new M0("WebRTCDirectTransport.createListener")}listenFilter(e){return[]}dialFilter(e){return e.filter(gl.exactMatch)}};function jv(r){return e=>new V0(e,r)}function Xv(r){return e=>new K0(e,r)}var aN=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function cN(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:d}=aN(r),u=async(...h)=>{let p=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(p))return}catch(g){n(),i(g);return}c.push(p),t.count===c.length&&(n(),s(c))},f=(...h)=>{n(),i(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)d(h,u);for(let h of t.rejectionEvents)a.includes(h)||d(h,f)};for(let h of a)l(h,u);for(let h of t.rejectionEvents)a.includes(h)||l(h,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=qt(o,{milliseconds:t.timeout});return s.cancel=()=>{n(),s.clear()},s}return o}function Qv(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=cN(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}function Zv(){throw new Error("WebSocket Servers can not be created in the browser!")}var lN=1024*1024*4,uN=10,y6=class extends Oo{websocket;maxBufferedAmount;checkBufferedAmountTask;constructor(e){super(e),this.websocket=e.websocket,this.maxBufferedAmount=e.maxBufferedAmount??lN,this.checkBufferedAmountTask=oa(this.checkBufferedAmount.bind(this),e.bufferedAmountPollInterval??uN),this.websocket.addEventListener("close",t=>{if(this.log('closed - code %d, reason "%s", wasClean %s',t.code,t.reason,t.wasClean),this.checkBufferedAmountTask.stop(),!t.wasClean){this.onRemoteReset();return}this.onTransportClosed()},{once:!0}),this.websocket.addEventListener("message",t=>{try{let n;if(typeof t.data=="string")n=C(t.data);else if(t.data instanceof ArrayBuffer)n=new Uint8Array(t.data,0,t.data.byteLength);else{this.abort(new Error("Incorrect binary type"));return}this.onData(n)}catch(n){this.log.error("error receiving data - %e",n)}})}sendData(e){for(let n of e)this.websocket.send(n);let t=this.websocket.bufferedAmount<this.maxBufferedAmount;return t||this.checkBufferedAmountTask.start(),{sentBytes:e.byteLength,canSendMore:t}}sendReset(){this.websocket.close(1006)}async sendClose(e){this.websocket.close(),e?.signal?.throwIfAborted()}sendPause(){}sendResume(){}checkBufferedAmount(){this.log("buffered amount now %d",this.websocket.bufferedAmount),this.websocket.bufferedAmount===0&&(this.checkBufferedAmountTask.stop(),this.safeDispatchEvent("drain"))}};function Jv(r){return new y6(r)}var w6=class{log;init;logger;metrics;components;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.components=e,this.init=t,e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_websockets_dialer_events_total",{label:"event",help:"Total count of WebSockets dialer events by type"})})}[vo]=!0;[Symbol.toStringTag]="@libp2p/websockets";[me]=["@libp2p/transport"];async dial(e,t){this.log("dialing %s",e),t=t??{};let n=Jv({websocket:await this._connect(e,t),remoteAddr:e,metrics:this.metrics?.dialerEvents,direction:"outbound",log:this.components.logger.forComponent("libp2p:websockets:connection"),maxBufferedAmount:this.init.maxBufferedAmount,bufferedAmountPollInterval:this.init.bufferedAmountPollInterval});this.log("new outbound connection %s",n.remoteAddr);let o=await t.upgrader.upgradeOutbound(n,t);return this.log("outbound connection %s upgraded",n.remoteAddr),o}async _connect(e,t){t?.signal?.throwIfAborted();let n=qo(e);this.log("create websocket connection to %s",n);let o=new WebSocket(n);o.binaryType="arraybuffer";try{t.onProgress?.(new H("websockets:open-connection")),await Qv(o,"open",t)}catch(s){if(t.signal?.aborted)throw this.metrics?.dialerEvents.increment({abort:!0}),new di(`Could not connect to ${n}`);this.metrics?.dialerEvents.increment({error:!0});try{o.close()}catch{}throw s}return this.log("connected %s",e),this.metrics?.dialerEvents.increment({connect:!0}),o}createListener(e){return Zv({logger:this.logger,events:this.components.events,metrics:this.components.metrics},{...this.init,...e})}listenFilter(e){return e.filter(t=>ro.exactMatch(t)||Qs.exactMatch(t))}dialFilter(e){return this.listenFilter(e)}};function eS(r={}){return e=>new w6(e,r)}var b6=Ln(th(),1);function tS(r,e){let t=e.map((n,o)=>({record:vn(n),index:o}));return t.sort((n,o)=>{let s=n.record.sequence,i=o.record.sequence;if(s>i)return-1;if(s<i)return 1;if(n.record.validityType===or.ValidityType.EOL&&o.record.validityType===or.ValidityType.EOL){let a=b6.default.fromString(n.record.validity).toDate(),c=b6.default.fromString(o.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var rS="6.0.22-44910cef",nS="helia";var oS={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/dnsaddr/va1.bootstrap.libp2p.io/p2p/12D3KooWKnDdG3iXw9eTFijk3EWSunZcFi54Zka4wmtqtt6rPxc8","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function H0(r={}){let e=`${nS}/${rS} ${o1()}`;return{privateKey:r.privateKey,dns:r.dns,nodeInfo:{userAgent:e},addresses:{listen:["/p2p-circuit","/webrtc"]},transports:[UE(),Xv(),jv(),eS()],connectionEncrypters:[sp()],streamMuxers:[vE(),yv()],peerDiscovery:[_E(oS)],services:{autoNAT:TE(),dcutr:KE(),delegatedRouting:ew(g3()),dht:fv({clientMode:!0,validators:{ipns:ch},selectors:{ipns:tS}}),identify:Lx(),identifyPush:Dx(),keychain:Z1(r.keychain),ping:Sv(),http:Tx()}}}async function sS(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await n4(r.datastore,r.keychain));let t=H0(e);return t.datastore=t.datastore??r.datastore,await Ww({...t,...e,start:!1})}async function E6(r={}){let e=r.datastore??new Js,t=r.blockstore??new vl,n;return zw(r.libp2p)?n=r.libp2p:n=await sS({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e}),{...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[p3(),n3()],routers:r.routers??[_3(n),I3()],metrics:n.metrics}}async function dN(r={}){let e=await E6(r),t=new Df(e);return e.start!==!1&&await t.start(),t}return dS(fN);})();
|
|
104
104
|
/*! Bundled license information:
|
|
105
105
|
|
|
106
106
|
pvtsutils/build/index.js:
|