helia 4.1.2-7419dfc → 4.1.2-b0d50e9

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 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
- "use strict";var Helia=(()=>{var Rb=Object.create;var Cc=Object.defineProperty;var _b=Object.getOwnPropertyDescriptor;var Ab=Object.getOwnPropertyNames;var Ib=Object.getPrototypeOf,Db=Object.prototype.hasOwnProperty;var Te=(r,e)=>()=>(r&&(e=r(r=0)),e);var Se=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),pe=(r,e)=>{for(var t in e)Cc(r,t,{get:e[t],enumerable:!0})},u4=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ab(e))!Db.call(r,o)&&o!==t&&Cc(r,o,{get:()=>e[o],enumerable:!(n=_b(e,o))||n.enumerable});return r};var Ye=(r,e,t)=>(t=r!=null?Rb(Ib(r)):{},u4(e||!r||!r.__esModule?Cc(t,"default",{value:r,enumerable:!0}):t,r)),Nc=r=>u4(Cc({},"__esModule",{value:!0}),r);var Wo=Se((xP,y4)=>{"use strict";function g4(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function Vb(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return g4(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),g4(new o,t)}}y4.exports=Vb});var n8=Se((mB,r8)=>{var Xs=1e3,Qs=Xs*60,js=Qs*60,ts=js*24,vv=ts*7,Sv=ts*365.25;r8.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return Rv(r);if(t==="number"&&isFinite(r))return e.long?Av(r):_v(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function Rv(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*Sv;case"weeks":case"week":case"w":return t*vv;case"days":case"day":case"d":return t*ts;case"hours":case"hour":case"hrs":case"hr":case"h":return t*js;case"minutes":case"minute":case"mins":case"min":case"m":return t*Qs;case"seconds":case"second":case"secs":case"sec":case"s":return t*Xs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function _v(r){var e=Math.abs(r);return e>=ts?Math.round(r/ts)+"d":e>=js?Math.round(r/js)+"h":e>=Qs?Math.round(r/Qs)+"m":e>=Xs?Math.round(r/Xs)+"s":r+"ms"}function Av(r){var e=Math.abs(r);return e>=ts?el(r,e,ts,"day"):e>=js?el(r,e,js,"hour"):e>=Qs?el(r,e,Qs,"minute"):e>=Xs?el(r,e,Xs,"second"):r+" ms"}function el(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var s8=Se((gB,o8)=>{function Iv(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=n8(),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 h=0;h<d.length;h++)u=(u<<5)-u+d.charCodeAt(h),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,h=null,f,p;function m(...y){if(!m.enabled)return;let w=m,b=Number(new Date),E=b-(u||b);w.diff=E,w.prev=u,w.curr=b,u=b,y[0]=t.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let x=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(I,R)=>{if(I==="%%")return"%";x++;let S=t.formatters[R];if(typeof S=="function"){let T=y[x];I=S.call(w,T),y.splice(x,1),x--}return I}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}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:(f!==t.namespaces&&(f=t.namespaces,p=t.enabled(d)),p),set:y=>{h=y}}),typeof t.init=="function"&&t.init(m),m}function n(d,u){let h=t(this.namespace+(typeof u>"u"?":":u)+d);return h.log=this.log,h}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,h=(typeof d=="string"?d:"").split(/[\s,]+/),f=h.length;for(u=0;u<f;u++)h[u]&&(d=h[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.slice(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,h;for(u=0,h=t.skips.length;u<h;u++)if(t.skips[u].test(d))return!1;for(u=0,h=t.names.length;u<h;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.enable(t.load()),t}o8.exports=Iv});var i8=Se((jt,tl)=>{jt.formatArgs=Tv;jt.save=kv;jt.load=Cv;jt.useColors=Dv;jt.storage=Nv();jt.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();jt.colors=["#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 Dv(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Tv(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+tl.exports.humanize(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)}jt.log=console.debug||console.log||(()=>{});function kv(r){try{r?jt.storage.setItem("debug",r):jt.storage.removeItem("debug")}catch{}}function Cv(){let r;try{r=jt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function Nv(){try{return localStorage}catch{}}tl.exports=s8()(jt);var{formatters:Pv}=tl.exports;Pv.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var c8=Se((xB,Ah)=>{"use strict";var Ov=Object.prototype.hasOwnProperty,Mt="~";function wa(){}Object.create&&(wa.prototype=Object.create(null),new wa().__proto__||(Mt=!1));function Bv(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function a8(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new Bv(t,n||r,o),i=Mt?Mt+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 rl(r,e){--r._eventsCount===0?r._events=new wa:delete r._events[e]}function Ct(){this._events=new wa,this._eventsCount=0}Ct.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)Ov.call(t,n)&&e.push(Mt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ct.prototype.listeners=function(e){var t=Mt?Mt+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};Ct.prototype.listenerCount=function(e){var t=Mt?Mt+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ct.prototype.emit=function(e,t,n,o,s,i){var a=Mt?Mt+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 h=c.length,f;for(u=0;u<h;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(f=1,d=new Array(l-1);f<l;f++)d[f-1]=arguments[f];c[u].fn.apply(c[u].context,d)}}return!0};Ct.prototype.on=function(e,t,n){return a8(this,e,t,n,!1)};Ct.prototype.once=function(e,t,n){return a8(this,e,t,n,!0)};Ct.prototype.removeListener=function(e,t,n,o){var s=Mt?Mt+e:e;if(!this._events[s])return this;if(!t)return rl(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&rl(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:rl(this,s)}return this};Ct.prototype.removeAllListeners=function(e){var t;return e?(t=Mt?Mt+e:e,this._events[t]&&rl(this,t)):(this._events=new wa,this._eventsCount=0),this};Ct.prototype.off=Ct.prototype.removeListener;Ct.prototype.addListener=Ct.prototype.on;Ct.prefixed=Mt;Ct.EventEmitter=Ct;typeof Ah<"u"&&(Ah.exports=Ct)});var Nh=Se((qB,f8)=>{f8.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 M6=Se(Ei=>{"use strict";var s_="[object ArrayBuffer]",Ln=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===s_}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}},S0="string",i_=/^[0-9a-f]+$/i,a_=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,c_=/^[a-zA-Z0-9-_]+$/,zl=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=Ln.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},Sr=class{static toString(e,t=!1){let n=Ln.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}},Yl=class r{static isHex(e){return typeof e===S0&&i_.test(e)}static isBase64(e){return typeof e===S0&&a_.test(e)}static isBase64Url(e){return typeof e===S0&&c_.test(e)}static ToString(e,t="utf8"){let n=Ln.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 Sr.toString(n,!0);case"utf16":case"utf16be":return Sr.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 Sr.fromString(e,!0);case"utf16":case"utf16be":return Sr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Ln.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 zl.fromString(e);case"utf16":case"utf16be":return Sr.fromString(e);case"utf16le":case"usc2":return Sr.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 zl.toString(e);case"utf16":case"utf16be":return Sr.toString(e);case"utf16le":case"usc2":return Sr.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=Ln.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Ln.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 Sr.toString(e,t)}static FromUtf16String(e,t=!1){return Sr.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,"")||""}};Yl.DEFAULT_UTF8_ENCODING="utf8";function l_(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 u_(...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 d_(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}Ei.BufferSourceConverter=Ln;Ei.Convert=Yl;Ei.assign=l_;Ei.combine=u_;Ei.isEqual=d_});var H5=Se((za,Mu)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(f){if(!Array.isArray(f)&&!ArrayBuffer.isView(f))return!1;for(var p=0;p<f.length;p++)if(!Number.isInteger(f[p])||f[p]<0||f[p]>255)return!1;return!0}function o(f,p){return(f&65535)*p+(((f>>>16)*p&65535)<<16)}function s(f,p){return f<<p|f>>>32-p}function i(f){return f^=f>>>16,f=o(f,2246822507),f^=f>>>13,f=o(f,3266489909),f^=f>>>16,f}function a(f,p){f=[f[0]>>>16,f[0]&65535,f[1]>>>16,f[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=f[3]+p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=f[2]+p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=f[1]+p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=f[0]+p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function c(f,p){f=[f[0]>>>16,f[0]&65535,f[1]>>>16,f[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=f[3]*p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=f[2]*p[3],m[1]+=m[2]>>>16,m[2]&=65535,m[2]+=f[3]*p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=f[1]*p[3],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=f[2]*p[2],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=f[3]*p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=f[0]*p[3]+f[1]*p[2]+f[2]*p[1]+f[3]*p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function l(f,p){return p%=64,p===32?[f[1],f[0]]:p<32?[f[0]<<p|f[1]>>>32-p,f[1]<<p|f[0]>>>32-p]:(p-=32,[f[1]<<p|f[0]>>>32-p,f[0]<<p|f[1]>>>32-p])}function d(f,p){return p%=64,p===0?f:p<32?[f[0]<<p|f[1]>>>32-p,f[1]<<p]:[f[1]<<p-32,0]}function u(f,p){return[f[0]^p[0],f[1]^p[1]]}function h(f){return f=u(f,[0,f[0]>>>1]),f=c(f,[4283543511,3981806797]),f=u(f,[0,f[0]>>>1]),f=c(f,[3301882366,444984403]),f=u(f,[0,f[0]>>>1]),f}t.x86.hash32=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%4,y=f.length-m,w=p,b=0,E=3432918353,x=461845907,v=0;v<y;v=v+4)b=f[v]|f[v+1]<<8|f[v+2]<<16|f[v+3]<<24,b=o(b,E),b=s(b,15),b=o(b,x),w^=b,w=s(w,13),w=o(w,5)+3864292196;switch(b=0,m){case 3:b^=f[v+2]<<16;case 2:b^=f[v+1]<<8;case 1:b^=f[v],b=o(b,E),b=s(b,15),b=o(b,x),w^=b}return w^=f.length,w=i(w),w>>>0},t.x86.hash128=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%16,y=f.length-m,w=p,b=p,E=p,x=p,v=0,I=0,R=0,S=0,T=597399067,L=2869860233,N=951274213,B=2716044179,k=0;k<y;k=k+16)v=f[k]|f[k+1]<<8|f[k+2]<<16|f[k+3]<<24,I=f[k+4]|f[k+5]<<8|f[k+6]<<16|f[k+7]<<24,R=f[k+8]|f[k+9]<<8|f[k+10]<<16|f[k+11]<<24,S=f[k+12]|f[k+13]<<8|f[k+14]<<16|f[k+15]<<24,v=o(v,T),v=s(v,15),v=o(v,L),w^=v,w=s(w,19),w+=b,w=o(w,5)+1444728091,I=o(I,L),I=s(I,16),I=o(I,N),b^=I,b=s(b,17),b+=E,b=o(b,5)+197830471,R=o(R,N),R=s(R,17),R=o(R,B),E^=R,E=s(E,15),E+=x,E=o(E,5)+2530024501,S=o(S,B),S=s(S,18),S=o(S,T),x^=S,x=s(x,13),x+=w,x=o(x,5)+850148119;switch(v=0,I=0,R=0,S=0,m){case 15:S^=f[k+14]<<16;case 14:S^=f[k+13]<<8;case 13:S^=f[k+12],S=o(S,B),S=s(S,18),S=o(S,T),x^=S;case 12:R^=f[k+11]<<24;case 11:R^=f[k+10]<<16;case 10:R^=f[k+9]<<8;case 9:R^=f[k+8],R=o(R,N),R=s(R,17),R=o(R,B),E^=R;case 8:I^=f[k+7]<<24;case 7:I^=f[k+6]<<16;case 6:I^=f[k+5]<<8;case 5:I^=f[k+4],I=o(I,L),I=s(I,16),I=o(I,N),b^=I;case 4:v^=f[k+3]<<24;case 3:v^=f[k+2]<<16;case 2:v^=f[k+1]<<8;case 1:v^=f[k],v=o(v,T),v=s(v,15),v=o(v,L),w^=v}return w^=f.length,b^=f.length,E^=f.length,x^=f.length,w+=b,w+=E,w+=x,b+=w,E+=w,x+=w,w=i(w),b=i(b),E=i(E),x=i(x),w+=b,w+=E,w+=x,b+=w,E+=w,x+=w,("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(E>>>0).toString(16)).slice(-8)+("00000000"+(x>>>0).toString(16)).slice(-8)},t.x64.hash128=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%16,y=f.length-m,w=[0,p],b=[0,p],E=[0,0],x=[0,0],v=[2277735313,289559509],I=[1291169091,658871167],R=0;R<y;R=R+16)E=[f[R+4]|f[R+5]<<8|f[R+6]<<16|f[R+7]<<24,f[R]|f[R+1]<<8|f[R+2]<<16|f[R+3]<<24],x=[f[R+12]|f[R+13]<<8|f[R+14]<<16|f[R+15]<<24,f[R+8]|f[R+9]<<8|f[R+10]<<16|f[R+11]<<24],E=c(E,v),E=l(E,31),E=c(E,I),w=u(w,E),w=l(w,27),w=a(w,b),w=a(c(w,[0,5]),[0,1390208809]),x=c(x,I),x=l(x,33),x=c(x,v),b=u(b,x),b=l(b,31),b=a(b,w),b=a(c(b,[0,5]),[0,944331445]);switch(E=[0,0],x=[0,0],m){case 15:x=u(x,d([0,f[R+14]],48));case 14:x=u(x,d([0,f[R+13]],40));case 13:x=u(x,d([0,f[R+12]],32));case 12:x=u(x,d([0,f[R+11]],24));case 11:x=u(x,d([0,f[R+10]],16));case 10:x=u(x,d([0,f[R+9]],8));case 9:x=u(x,[0,f[R+8]]),x=c(x,I),x=l(x,33),x=c(x,v),b=u(b,x);case 8:E=u(E,d([0,f[R+7]],56));case 7:E=u(E,d([0,f[R+6]],48));case 6:E=u(E,d([0,f[R+5]],40));case 5:E=u(E,d([0,f[R+4]],32));case 4:E=u(E,d([0,f[R+3]],24));case 3:E=u(E,d([0,f[R+2]],16));case 2:E=u(E,d([0,f[R+1]],8));case 1:E=u(E,[0,f[R]]),E=c(E,v),E=l(E,31),E=c(E,I),w=u(w,E)}return w=u(w,[0,f.length]),b=u(b,[0,f.length]),w=a(w,b),b=a(b,w),w=h(w),b=h(b),w=a(w,b),b=a(b,w),("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)+("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)},typeof za<"u"?(typeof Mu<"u"&&Mu.exports&&(za=Mu.exports=t),za.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(za)});var G5=Se((iH,q5)=>{q5.exports=H5()});var Q5=Se(Ya=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,h;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,h=c&255,[l,d,u,h].join(".")},i=function(c){var l,d,u,h,f,p;for(l=[],u=h=0;h<=3&&c.length!==0;u=++h){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),f=p[0],d=p[1],c=c.substring(d),l.push(f)}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,h,f;for(h=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")),f=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)h=h*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")h=h*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")h=h*l+(10+t(c[u])-o)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");u++}if(u===f)throw new Error("empty octet");return[h,u]},r=function(){function c(l,d){var u,h,f,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(m){throw u=m,new Error("Invalid mask: "+d)}for(h=f=32;f>=0;h=--f)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;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(m){throw u=m,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,h;for(h=i(this.first),u=i(this.last),d=0;h<=u;)l(a(h),h,d),d++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Ya.ip2long=i,Ya.long2ip=a,Ya.Netmask=r}).call(Ya)});var l1=Se((bW,h2)=>{var EW=function(){typeof h2<"u"&&(h2.exports=m);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 T=S-S%1;return T==0&&(S<0||S===0&&1/S!=1/0)?-0:T},d=m.prototype,u=(m.fromDate=function(S){return new m(+S)},m.fromInt64BE=x(0,1,2,3,0,4),m.fromInt64LE=x(3,2,1,0,4,0),m.fromString=function(N){var T,L=new m,N=(N+="").replace(/^\s*[+\-]?\d+/,function(k){var k=+k,Y=1970+(k-1970)%400;return L.year=k-Y,Y}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(B,k,Y){return k<0&&(Y*=-1),T=6e4*(60*+k+ +Y),""}).replace(/\.\d+$/,function(B){return L.nano=+(B+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,L.time=T=Date.UTC.apply(Date,N)-(T||0),isNaN(T))throw new TypeError("Invalid Date");return y(L)},m.fromTimeT=function(S){return b(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=y(this);return(S.time%1e3*a+ +S.nano+1e9)%1e9},d.getTimeT=function(){var T=y(this),S=Math.floor(T.time/1e3),T=T.year;return T&&(S+=T*t*r/e),S},d.getYear=function(){return this.toDate().getUTCFullYear()+this.year},d.toDate=function(){return w(y(this).time)},d.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},d.toString=function(S){var T=this,L=T.toDate(),N={H:function(){return I(L.getUTCHours())},L:function(){return R(L.getUTCMilliseconds(),3)},M:function(){return I(L.getUTCMinutes())},N:function(){return R(T.getNano(),9)},S:function(){return I(L.getUTCSeconds())},Y:function(){var B=T.getYear();return 999999<B?"+"+B:9999<B?"+"+R(B,6):0<=B?R(B,4):-999999<=B?"-"+R(-B,6):B},a:function(){return f[L.getUTCDay()]},b:function(){return h[L.getUTCMonth()]},d:function(){return I(L.getUTCDate())},e:function(){return function(B){return(9<B?"":" ")+(0|B)}(L.getUTCDate())},m:function(){return I(L.getUTCMonth()+1)}};return function B(k){return k.replace(/%./g,function(Y){var P=Y[1],D=p[P],P=N[P];return D?B(D):P?P():Y})}(S||u)},d.writeInt64BE=E(0,1,2,3,0,4),d.writeInt64LE=E(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],f=["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 m;function m(S,T,L){var N=this;if(!(N instanceof m))return new m(S,T,L);N.time=+S||0,N.nano=+T||0,N.year=+L||0,y(N)}function y(S){var T,L,N,B=S.year,k=S.time,Y=S.nano,D=((Y<0||a<=Y)&&(Y-=(L=Math.floor(Y/a))*a,k+=L,L=1),B%e);return(k<-s||s<k||D)&&((T=l(k/o))&&(B+=T*e,k-=T*o),(N=w(k)).setUTCFullYear(D+N.getUTCFullYear()),N=(k=+N)+(T=l((B-=D)/e))*o,T&&-s<=N&&N<=s&&(B-=T*e,k=N),L=1),L&&(S.year=B,S.time=k,S.nano=Y),S}function w(S){var T=new Date(0);return T.setTime(S),T}function b(B,N){B=+B||0;var L=l((N=(N|0)*i)/n)+l(B/n),N=N%n+B%n,B=l(N/n);return B&&(L+=B,N-=B*n),new m(1e3*N,0,L*e)}function E(S,T,L,N,B,k){return function(D,P){var C=y(this);D=D||new Array(8),v(D,P|=0);var A=Math.floor(C.time/1e3),C=C.year*(t*r/e),$=l(C/i)+l(A/i),C=C%i+A%i,A=Math.floor(C/i);return A&&($+=A,C-=A*i),Y(D,P+B,$),Y(D,P+k,C),D};function Y(D,P,$){D[P+S]=$>>24&255,D[P+T]=$>>16&255,D[P+L]=$>>8&255,D[P+N]=255&$}}function x(S,T,L,N,B,k){return function(D,P){v(D,P|=0);var $=Y(D,P+B);return b(Y(D,P+k),$)};function Y(D,P){return 16777216*D[P+S]+(D[P+T]<<16|D[P+L]<<8|D[P+N])}}function v(S,T){if(S=S&&S.length,S==null)throw new TypeError("Invalid Buffer");if(S<T+8)throw new RangeError("Out of range")}function I(S){return(9<S?"":"0")+(0|S)}function R(S,T){return(c+(0|S)).substr(-T)}}()});var _9=Se((iee,R9)=>{function nD(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}R9.exports=nD});var sy=Se((Jne,oy)=>{"use strict";oy.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var dy=Se((ly,uy)=>{"use strict";var Sd=sy(),{hasOwnProperty:ay}=Object.prototype,{propertyIsEnumerable:CD}=Object,Hi=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),ND=ly,iy={concatArrays:!1,ignoreUndefined:!1},Rd=r=>{let e=[];for(let t in r)ay.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)CD.call(r,n)&&e.push(n)}return e};function qi(r){return Array.isArray(r)?PD(r):Sd(r)?LD(r):r}function PD(r){let e=r.slice(0,0);return Rd(r).forEach(t=>{Hi(e,t,qi(r[t]))}),e}function LD(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return Rd(r).forEach(t=>{Hi(e,t,qi(r[t]))}),e}var cy=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Hi(r,o,Op(r[o],e[o],n)):Hi(r,o,qi(e[o])))}),r),OD=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)ay.call(s,a)&&(i.push(String(a)),s===r?Hi(n,o++,s[a]):Hi(n,o++,qi(s[a])));n=cy(n,s,Rd(s).filter(a=>!i.includes(a)),t)}),n};function Op(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?OD(r,e,t):!Sd(e)||!Sd(r)?qi(e):cy(r,e,Rd(e),t)}uy.exports=function(...r){let e=Op(qi(iy),this!==ND&&this||{},iy),t={_:{}};for(let n of r)if(n!==void 0){if(!Sd(n))throw new TypeError("`"+n+"` is not an Option Object");t=Op(t,{_:n},e)}return t._}});var py=Se((toe,hy)=>{"use strict";function BD(r){return r>=55296&&r<=56319}function MD(r){return r>=56320&&r<=57343}hy.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],BD(i)&&MD(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 gy=Se((roe,my)=>{"use strict";function UD(r){return r>=55296&&r<=56319}function FD(r){return r>=56320&&r<=57343}my.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),FD(o)?s!=null&&UD(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 wy=Se((noe,yy)=>{"use strict";var VD=py(),KD=gy();yy.exports=VD.bind(null,KD)});var xy=Se((ooe,by)=>{"use strict";var $D=wy(),HD=/[\/\?<>\\:\*\|"]/g,qD=/[\x00-\x1f\x80-\x9f]/g,GD=/^\.+$/,WD=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,zD=/[\. ]+$/;function Ey(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(HD,e).replace(qD,e).replace(GD,e).replace(WD,e).replace(zD,e);return $D(t,255)}by.exports=function(r,e){var t=e&&e.replacement||"",n=Ey(r,t);return t===""?n:Ey(n,"")}});var Qy=Se((pie,Xy)=>{"use strict";function NT(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function d(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var p=0,m=0,y=0,w=f.length;y!==w&&f[y]===0;)y++,p++;for(var b=(w-y)*l+1>>>0,E=new Uint8Array(b);y!==w;){for(var x=f[y],v=0,I=b-1;(x!==0||v<m)&&I!==-1;I--,v++)x+=256*E[I]>>>0,E[I]=x%i>>>0,x=x/i>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}for(var R=b-m;R!==b&&E[R]===0;)R++;for(var S=a.repeat(p);R<b;++R)S+=r.charAt(E[R]);return S}function u(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var p=0;if(f[p]!==" "){for(var m=0,y=0;f[p]===a;)m++,p++;for(var w=(f.length-p)*c+1>>>0,b=new Uint8Array(w);f[p];){var E=e[f.charCodeAt(p)];if(E===255)return;for(var x=0,v=w-1;(E!==0||x<y)&&v!==-1;v--,x++)E+=i*b[v]>>>0,b[v]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");y=x,p++}if(f[p]!==" "){for(var I=w-y;I!==w&&b[I]===0;)I++;for(var R=new Uint8Array(m+(w-I)),S=m;I!==w;)R[S++]=b[I++];return R}}}function h(f){var p=u(f);if(p)return p;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:h}}Xy.exports=NT});var Ud=Se((mie,jy)=>{"use strict";var PT=new TextDecoder,LT=r=>PT.decode(r),OT=new TextEncoder,BT=r=>OT.encode(r);function MT(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}jy.exports={decodeText:LT,encodeText:BT,concat:MT}});var Jy=Se((gie,Zy)=>{"use strict";var{encodeText:UT}=Ud(),t3=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=UT(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};Zy.exports=t3});var tw=Se((yie,ew)=>{"use strict";var FT=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;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=n[r[l]];if(d===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},VT=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},KT=r=>e=>({encode(t){return VT(t,e,r)},decode(t){return FT(t,e,r)}});ew.exports={rfc4648:KT}});var sw=Se((wie,ow)=>{"use strict";var bc=Qy(),$T=Jy(),{rfc4648:_t}=tw(),{decodeText:HT,encodeText:qT}=Ud(),GT=()=>({encode:HT,decode:qT}),rw=[["identity","\0",GT,""],["base2","0",_t(1),"01"],["base8","7",_t(3),"01234567"],["base10","9",bc,"0123456789"],["base16","f",_t(4),"0123456789abcdef"],["base16upper","F",_t(4),"0123456789ABCDEF"],["base32hex","v",_t(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",_t(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",_t(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",_t(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",_t(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",_t(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",_t(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",_t(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",_t(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",bc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",bc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",bc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",bc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",_t(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",_t(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",_t(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",_t(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],nw=rw.reduce((r,e)=>(r[e[0]]=new $T(e[0],e[1],e[2],e[3]),r),{}),WT=rw.reduce((r,e)=>(r[e[1]]=nw[e[0]],r),{});ow.exports={names:nw,codes:WT}});var cw=Se((Yn,aw)=>{"use strict";var Xi=sw(),{encodeText:zT,decodeText:Fd,concat:iw}=Ud();function YT(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=Cs(r);return ZT(t,e),iw([n,e],n.length+e.length)}function XT(r,e){let t=Cs(r),n=zT(t.encode(e));return iw([t.codeBuf,n],t.codeBuf.length+n.length)}function QT(r){r instanceof Uint8Array&&(r=Fd(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),Cs(r[0]).decode(r.substring(1))}function jT(r){if(r instanceof Uint8Array&&(r=Fd(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return Cs(r[0]).name}catch{return!1}}function ZT(r,e){Cs(r).decode(Fd(e))}function Cs(r){if(Object.prototype.hasOwnProperty.call(Xi.names,r))return Xi.names[r];if(Object.prototype.hasOwnProperty.call(Xi.codes,r))return Xi.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function JT(r){return r instanceof Uint8Array&&(r=Fd(r)),Cs(r[0])}Yn=aw.exports=YT;Yn.encode=XT;Yn.decode=QT;Yn.isEncoded=jT;Yn.encoding=Cs;Yn.encodingFromData=JT;var ek=Object.freeze(Xi.names),tk=Object.freeze(Xi.codes);Yn.names=ek;Yn.codes=tk});var fw=Se((Eie,dw)=>{dw.exports=uw;var lw=128,rk=127,nk=~rk,ok=Math.pow(2,31);function uw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=ok;)e[t++]=r&255|lw,r/=128;for(;r&nk;)e[t++]=r&255|lw,r>>>=7;return e[t]=r|0,uw.bytes=t-n+1,e}});var mw=Se((bie,pw)=>{pw.exports=r3;var sk=128,hw=127;function r3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw r3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&hw)<<o:(i&hw)*Math.pow(2,o),o+=7}while(i>=sk);return r3.bytes=s-n,t}});var yw=Se((xie,gw)=>{var ik=Math.pow(2,7),ak=Math.pow(2,14),ck=Math.pow(2,21),lk=Math.pow(2,28),uk=Math.pow(2,35),dk=Math.pow(2,42),fk=Math.pow(2,49),hk=Math.pow(2,56),pk=Math.pow(2,63);gw.exports=function(r){return r<ik?1:r<ak?2:r<ck?3:r<lk?4:r<uk?5:r<dk?6:r<fk?7:r<hk?8:r<pk?9:10}});var Ew=Se((vie,ww)=>{ww.exports={encode:fw(),decode:mw(),encodingLength:yw()}});var xw=Se((Sie,bw)=>{"use strict";var mk=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});bw.exports={names:mk}});function gk(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 m=0,y=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var E=(b-w)*d+1>>>0,x=new Uint8Array(E);w!==b;){for(var v=p[w],I=0,R=E-1;(v!==0||I<y)&&R!==-1;R--,I++)v+=256*x[R]>>>0,x[R]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");y=I,w++}for(var S=E-y;S!==E&&x[S]===0;)S++;for(var T=c.repeat(m);S<E;++S)T+=r.charAt(x[S]);return T}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var y=0,w=0;p[m]===c;)y++,m++;for(var b=(p.length-m)*l+1>>>0,E=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var v=0,I=b-1;(x!==0||v<w)&&I!==-1;I--,v++)x+=a*E[I]>>>0,E[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=v,m++}if(p[m]!==" "){for(var R=b-w;R!==b&&E[R]===0;)R++;for(var S=new Uint8Array(y+(b-R)),T=y;R!==b;)S[T++]=E[R++];return S}}}function f(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:f}}var yk,wk,vw,Sw=Te(()=>{yk=gk,wk=yk,vw=wk});var _ie,Rw,Xn,_w,Aw,Vo=Te(()=>{_ie=new Uint8Array(0),Rw=(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},Xn=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")},_w=r=>new TextEncoder().encode(r),Aw=r=>new TextDecoder().decode(r)});var n3,o3,s3,Dw,i3,Qi,Ko,Ek,bk,et,tn=Te(()=>{Sw();Vo();n3=class{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")}},o3=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 Dw(this,e)}},s3=class{constructor(e){this.decoders=e}or(e){return Dw(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Dw=(r,e)=>new s3({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),i3=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new n3(e,t,n),this.decoder=new o3(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Qi=({name:r,prefix:e,encode:t,decode:n})=>new i3(r,e,t,n),Ko=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=vw(t,e);return Qi({prefix:r,name:e,encode:n,decode:s=>Xn(o(s))})},Ek=(r,e,t,n)=>{let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},bk=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},et=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Qi({prefix:e,name:r,encode(o){return bk(o,n,t)},decode(o){return Ek(o,n,t,r)}})});var a3={};pe(a3,{identity:()=>xk});var xk,Tw=Te(()=>{tn();Vo();xk=Qi({prefix:"\0",name:"identity",encode:r=>Aw(r),decode:r=>_w(r)})});var c3={};pe(c3,{base2:()=>vk});var vk,kw=Te(()=>{tn();vk=et({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var l3={};pe(l3,{base8:()=>Sk});var Sk,Cw=Te(()=>{tn();Sk=et({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var u3={};pe(u3,{base10:()=>Rk});var Rk,Nw=Te(()=>{tn();Rk=Ko({prefix:"9",name:"base10",alphabet:"0123456789"})});var d3={};pe(d3,{base16:()=>_k,base16upper:()=>Ak});var _k,Ak,Pw=Te(()=>{tn();_k=et({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ak=et({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var f3={};pe(f3,{base32:()=>ji,base32hex:()=>kk,base32hexpad:()=>Nk,base32hexpadupper:()=>Pk,base32hexupper:()=>Ck,base32pad:()=>Dk,base32padupper:()=>Tk,base32upper:()=>Ik,base32z:()=>Lk});var ji,Ik,Dk,Tk,kk,Ck,Nk,Pk,Lk,h3=Te(()=>{tn();ji=et({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Ik=et({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Dk=et({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Tk=et({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),kk=et({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Ck=et({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Nk=et({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Pk=et({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Lk=et({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var p3={};pe(p3,{base36:()=>Ok,base36upper:()=>Bk});var Ok,Bk,Lw=Te(()=>{tn();Ok=Ko({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Bk=Ko({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var m3={};pe(m3,{base58btc:()=>mn,base58flickr:()=>Mk});var mn,Mk,g3=Te(()=>{tn();mn=Ko({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Mk=Ko({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var y3={};pe(y3,{base64:()=>Uk,base64pad:()=>Fk,base64url:()=>Vk,base64urlpad:()=>Kk});var Uk,Fk,Vk,Kk,Ow=Te(()=>{tn();Uk=et({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Fk=et({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Vk=et({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Kk=et({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var w3={};pe(w3,{base256emoji:()=>Wk});function qk(r){return r.reduce((e,t)=>(e+=$k[t],e),"")}function Gk(r){let e=[];for(let t of r){let n=Hk[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Bw,$k,Hk,Wk,Mw=Te(()=>{tn();Bw=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}"),$k=Bw.reduce((r,e,t)=>(r[t]=e,r),[]),Hk=Bw.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);Wk=Qi({prefix:"\u{1F680}",name:"base256emoji",encode:qk,decode:Gk})});function Vw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Qk;)e[t++]=r&255|Uw,r/=128;for(;r&Xk;)e[t++]=r&255|Uw,r>>>=7;return e[t]=r|0,Vw.bytes=t-n+1,e}function E3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw E3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Fw)<<o:(i&Fw)*Math.pow(2,o),o+=7}while(i>=Zk);return E3.bytes=s-n,t}var zk,Uw,Yk,Xk,Qk,jk,Zk,Fw,Jk,eC,tC,rC,nC,oC,sC,iC,aC,cC,lC,uC,xc,Kw=Te(()=>{zk=Vw,Uw=128,Yk=127,Xk=~Yk,Qk=Math.pow(2,31);jk=E3,Zk=128,Fw=127;Jk=Math.pow(2,7),eC=Math.pow(2,14),tC=Math.pow(2,21),rC=Math.pow(2,28),nC=Math.pow(2,35),oC=Math.pow(2,42),sC=Math.pow(2,49),iC=Math.pow(2,56),aC=Math.pow(2,63),cC=function(r){return r<Jk?1:r<eC?2:r<tC?3:r<rC?4:r<nC?5:r<oC?6:r<sC?7:r<iC?8:r<aC?9:10},lC={encode:zk,decode:jk,encodingLength:cC},uC=lC,xc=uC});var vc,Zi,Ji,Kd=Te(()=>{Kw();vc=(r,e=0)=>[xc.decode(r,e),xc.decode.bytes],Zi=(r,e,t=0)=>(xc.encode(r,e,t),e),Ji=r=>xc.encodingLength(r)});var Ns,$w,Hw,ea,Rc=Te(()=>{Vo();Kd();Ns=(r,e)=>{let t=e.byteLength,n=Ji(r),o=n+Ji(t),s=new Uint8Array(o+t);return Zi(r,s,0),Zi(t,s,n),s.set(e,o),new ea(r,t,e,s)},$w=r=>{let e=Xn(r),[t,n]=vc(e),[o,s]=vc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ea(t,o,i,e)},Hw=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&Rw(r.bytes,e.bytes),ea=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var x3,b3,v3=Te(()=>{Rc();x3=({name:r,code:e,encode:t})=>new b3(r,e,t),b3=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ns(this.code,t):t.then(n=>Ns(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var S3={};pe(S3,{sha256:()=>dC,sha512:()=>fC});var Gw,dC,fC,Ww=Te(()=>{v3();Gw=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),dC=x3({name:"sha2-256",code:18,encode:Gw("SHA-256")}),fC=x3({name:"sha2-512",code:19,encode:Gw("SHA-512")})});var R3={};pe(R3,{identity:()=>mC});var zw,hC,Yw,pC,mC,Xw=Te(()=>{Vo();Rc();zw=0,hC="identity",Yw=Xn,pC=r=>Ns(zw,Yw(r)),mC={code:zw,name:hC,encode:Yw,digest:pC}});var Qw=Te(()=>{Vo()});var Wie,zie,jw=Te(()=>{Wie=new TextEncoder,zie=new TextDecoder});var qd,wC,EC,bC,_c,xC,Zw,Jw,$d,Hd,vC,SC,RC,eE=Te(()=>{Kd();Rc();g3();h3();Vo();qd=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:Hd,byteLength:Hd,code:$d,version:$d,multihash:$d,bytes:$d,_baseCache:Hd,asCID:Hd})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==_c)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==xC)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ns(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&Hw(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return EC(t,o,e||mn.encoder);default:return bC(t,o,e||ji.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return SC(/^0\.0/,RC),!!(e&&(e[Jw]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||Zw(t,n,o.bytes))}else if(e!=null&&e[Jw]===!0){let{version:t,multihash:n,code:o}=e,s=$w(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==_c)throw new Error(`Version 0 CID must use dag-pb (code: ${_c}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=Zw(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,_c,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Xn(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 ea(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,h]=vc(e.subarray(t));return t+=h,u},o=n(),s=_c;if(o===18?(o=0,t=0):o===1&&(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]=wC(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},wC=(r,e)=>{switch(r[0]){case"Q":{let t=e||mn;return[mn.prefix,t.decode(`${mn.prefix}${r}`)]}case mn.prefix:{let t=e||mn;return[mn.prefix,t.decode(r)]}case ji.prefix:{let t=e||ji;return[ji.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},EC=(r,e,t)=>{let{prefix:n}=t;if(n!==mn.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},bC=(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},_c=112,xC=18,Zw=(r,e,t)=>{let n=Ji(r),o=n+Ji(e),s=new Uint8Array(o+t.byteLength);return Zi(r,s,0),Zi(e,s,n),s.set(t,o),s},Jw=Symbol.for("@ipld/js-cid/CID"),$d={writable:!1,configurable:!1,enumerable:!0},Hd={writable:!1,enumerable:!1,configurable:!1},vC="0.0.0-dev",SC=(r,e)=>{if(r.test(vC))console.warn(e);else throw new Error(e)},RC=`CID.isCID(v) is deprecated and will be removed in the next major release.
2
+ "use strict";var Helia=(()=>{var Tb=Object.create;var Cc=Object.defineProperty;var kb=Object.getOwnPropertyDescriptor;var Cb=Object.getOwnPropertyNames;var Nb=Object.getPrototypeOf,Pb=Object.prototype.hasOwnProperty;var Te=(r,e)=>()=>(r&&(e=r(r=0)),e);var Re=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),pe=(r,e)=>{for(var t in e)Cc(r,t,{get:e[t],enumerable:!0})},p4=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Cb(e))!Pb.call(r,o)&&o!==t&&Cc(r,o,{get:()=>e[o],enumerable:!(n=kb(e,o))||n.enumerable});return r};var Xe=(r,e,t)=>(t=r!=null?Tb(Nb(r)):{},p4(e||!r||!r.__esModule?Cc(t,"default",{value:r,enumerable:!0}):t,r)),Nc=r=>p4(Cc({},"__esModule",{value:!0}),r);var Wo=Re((AP,x4)=>{"use strict";function b4(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function Gb(r,e,t){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");t||(t={}),typeof e=="object"&&(t=e,e=""),e&&(t.code=e);try{return b4(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),b4(new o,t)}}x4.exports=Gb});var G8=Re(si=>{"use strict";var FR="[object ArrayBuffer]",Nn=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===FR}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}},Yh="string",VR=/^[0-9a-f]+$/i,KR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,$R=/^[a-zA-Z0-9-_]+$/,pl=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=Nn.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},vr=class{static toString(e,t=!1){let n=Nn.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}},ml=class r{static isHex(e){return typeof e===Yh&&VR.test(e)}static isBase64(e){return typeof e===Yh&&KR.test(e)}static isBase64Url(e){return typeof e===Yh&&$R.test(e)}static ToString(e,t="utf8"){let n=Nn.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 vr.toString(n,!0);case"utf16":case"utf16be":return vr.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 vr.fromString(e,!0);case"utf16":case"utf16be":return vr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Nn.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 pl.fromString(e);case"utf16":case"utf16be":return vr.fromString(e);case"utf16le":case"usc2":return vr.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 pl.toString(e);case"utf16":case"utf16be":return vr.toString(e);case"utf16le":case"usc2":return vr.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=Nn.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=Nn.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 vr.toString(e,t)}static FromUtf16String(e,t=!1){return vr.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,"")||""}};ml.DEFAULT_UTF8_ENCODING="utf8";function HR(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 qR(...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 GR(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}si.BufferSourceConverter=Nn;si.Convert=ml;si.assign=HR;si.combine=qR;si.isEqual=GR});var jm=Re((La,ou)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(f){if(!Array.isArray(f)&&!ArrayBuffer.isView(f))return!1;for(var p=0;p<f.length;p++)if(!Number.isInteger(f[p])||f[p]<0||f[p]>255)return!1;return!0}function o(f,p){return(f&65535)*p+(((f>>>16)*p&65535)<<16)}function s(f,p){return f<<p|f>>>32-p}function i(f){return f^=f>>>16,f=o(f,2246822507),f^=f>>>13,f=o(f,3266489909),f^=f>>>16,f}function a(f,p){f=[f[0]>>>16,f[0]&65535,f[1]>>>16,f[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=f[3]+p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=f[2]+p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=f[1]+p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=f[0]+p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function c(f,p){f=[f[0]>>>16,f[0]&65535,f[1]>>>16,f[1]&65535],p=[p[0]>>>16,p[0]&65535,p[1]>>>16,p[1]&65535];var m=[0,0,0,0];return m[3]+=f[3]*p[3],m[2]+=m[3]>>>16,m[3]&=65535,m[2]+=f[2]*p[3],m[1]+=m[2]>>>16,m[2]&=65535,m[2]+=f[3]*p[2],m[1]+=m[2]>>>16,m[2]&=65535,m[1]+=f[1]*p[3],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=f[2]*p[2],m[0]+=m[1]>>>16,m[1]&=65535,m[1]+=f[3]*p[1],m[0]+=m[1]>>>16,m[1]&=65535,m[0]+=f[0]*p[3]+f[1]*p[2]+f[2]*p[1]+f[3]*p[0],m[0]&=65535,[m[0]<<16|m[1],m[2]<<16|m[3]]}function l(f,p){return p%=64,p===32?[f[1],f[0]]:p<32?[f[0]<<p|f[1]>>>32-p,f[1]<<p|f[0]>>>32-p]:(p-=32,[f[1]<<p|f[0]>>>32-p,f[0]<<p|f[1]>>>32-p])}function d(f,p){return p%=64,p===0?f:p<32?[f[0]<<p|f[1]>>>32-p,f[1]<<p]:[f[1]<<p-32,0]}function u(f,p){return[f[0]^p[0],f[1]^p[1]]}function h(f){return f=u(f,[0,f[0]>>>1]),f=c(f,[4283543511,3981806797]),f=u(f,[0,f[0]>>>1]),f=c(f,[3301882366,444984403]),f=u(f,[0,f[0]>>>1]),f}t.x86.hash32=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%4,y=f.length-m,w=p,b=0,E=3432918353,x=461845907,v=0;v<y;v=v+4)b=f[v]|f[v+1]<<8|f[v+2]<<16|f[v+3]<<24,b=o(b,E),b=s(b,15),b=o(b,x),w^=b,w=s(w,13),w=o(w,5)+3864292196;switch(b=0,m){case 3:b^=f[v+2]<<16;case 2:b^=f[v+1]<<8;case 1:b^=f[v],b=o(b,E),b=s(b,15),b=o(b,x),w^=b}return w^=f.length,w=i(w),w>>>0},t.x86.hash128=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%16,y=f.length-m,w=p,b=p,E=p,x=p,v=0,I=0,S=0,R=0,T=597399067,L=2869860233,N=951274213,B=2716044179,k=0;k<y;k=k+16)v=f[k]|f[k+1]<<8|f[k+2]<<16|f[k+3]<<24,I=f[k+4]|f[k+5]<<8|f[k+6]<<16|f[k+7]<<24,S=f[k+8]|f[k+9]<<8|f[k+10]<<16|f[k+11]<<24,R=f[k+12]|f[k+13]<<8|f[k+14]<<16|f[k+15]<<24,v=o(v,T),v=s(v,15),v=o(v,L),w^=v,w=s(w,19),w+=b,w=o(w,5)+1444728091,I=o(I,L),I=s(I,16),I=o(I,N),b^=I,b=s(b,17),b+=E,b=o(b,5)+197830471,S=o(S,N),S=s(S,17),S=o(S,B),E^=S,E=s(E,15),E+=x,E=o(E,5)+2530024501,R=o(R,B),R=s(R,18),R=o(R,T),x^=R,x=s(x,13),x+=w,x=o(x,5)+850148119;switch(v=0,I=0,S=0,R=0,m){case 15:R^=f[k+14]<<16;case 14:R^=f[k+13]<<8;case 13:R^=f[k+12],R=o(R,B),R=s(R,18),R=o(R,T),x^=R;case 12:S^=f[k+11]<<24;case 11:S^=f[k+10]<<16;case 10:S^=f[k+9]<<8;case 9:S^=f[k+8],S=o(S,N),S=s(S,17),S=o(S,B),E^=S;case 8:I^=f[k+7]<<24;case 7:I^=f[k+6]<<16;case 6:I^=f[k+5]<<8;case 5:I^=f[k+4],I=o(I,L),I=s(I,16),I=o(I,N),b^=I;case 4:v^=f[k+3]<<24;case 3:v^=f[k+2]<<16;case 2:v^=f[k+1]<<8;case 1:v^=f[k],v=o(v,T),v=s(v,15),v=o(v,L),w^=v}return w^=f.length,b^=f.length,E^=f.length,x^=f.length,w+=b,w+=E,w+=x,b+=w,E+=w,x+=w,w=i(w),b=i(b),E=i(E),x=i(x),w+=b,w+=E,w+=x,b+=w,E+=w,x+=w,("00000000"+(w>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(E>>>0).toString(16)).slice(-8)+("00000000"+(x>>>0).toString(16)).slice(-8)},t.x64.hash128=function(f,p){if(t.inputValidation&&!n(f))return e;p=p||0;for(var m=f.length%16,y=f.length-m,w=[0,p],b=[0,p],E=[0,0],x=[0,0],v=[2277735313,289559509],I=[1291169091,658871167],S=0;S<y;S=S+16)E=[f[S+4]|f[S+5]<<8|f[S+6]<<16|f[S+7]<<24,f[S]|f[S+1]<<8|f[S+2]<<16|f[S+3]<<24],x=[f[S+12]|f[S+13]<<8|f[S+14]<<16|f[S+15]<<24,f[S+8]|f[S+9]<<8|f[S+10]<<16|f[S+11]<<24],E=c(E,v),E=l(E,31),E=c(E,I),w=u(w,E),w=l(w,27),w=a(w,b),w=a(c(w,[0,5]),[0,1390208809]),x=c(x,I),x=l(x,33),x=c(x,v),b=u(b,x),b=l(b,31),b=a(b,w),b=a(c(b,[0,5]),[0,944331445]);switch(E=[0,0],x=[0,0],m){case 15:x=u(x,d([0,f[S+14]],48));case 14:x=u(x,d([0,f[S+13]],40));case 13:x=u(x,d([0,f[S+12]],32));case 12:x=u(x,d([0,f[S+11]],24));case 11:x=u(x,d([0,f[S+10]],16));case 10:x=u(x,d([0,f[S+9]],8));case 9:x=u(x,[0,f[S+8]]),x=c(x,I),x=l(x,33),x=c(x,v),b=u(b,x);case 8:E=u(E,d([0,f[S+7]],56));case 7:E=u(E,d([0,f[S+6]],48));case 6:E=u(E,d([0,f[S+5]],40));case 5:E=u(E,d([0,f[S+4]],32));case 4:E=u(E,d([0,f[S+3]],24));case 3:E=u(E,d([0,f[S+2]],16));case 2:E=u(E,d([0,f[S+1]],8));case 1:E=u(E,[0,f[S]]),E=c(E,v),E=l(E,31),E=c(E,I),w=u(w,E)}return w=u(w,[0,f.length]),b=u(b,[0,f.length]),w=a(w,b),b=a(b,w),w=h(w),b=h(b),w=a(w,b),b=a(b,w),("00000000"+(w[0]>>>0).toString(16)).slice(-8)+("00000000"+(w[1]>>>0).toString(16)).slice(-8)+("00000000"+(b[0]>>>0).toString(16)).slice(-8)+("00000000"+(b[1]>>>0).toString(16)).slice(-8)},typeof La<"u"?(typeof ou<"u"&&ou.exports&&(La=ou.exports=t),La.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(La)});var Jm=Re((YU,Zm)=>{Zm.exports=jm()});var r6=Re((bF,t6)=>{var ui=1e3,di=ui*60,fi=di*60,hs=fi*24,_S=hs*7,AS=hs*365.25;t6.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return IS(r);if(t==="number"&&isFinite(r))return e.long?TS(r):DS(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function IS(r){if(r=String(r),!(r.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(e){var t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*AS;case"weeks":case"week":case"w":return t*_S;case"days":case"day":case"d":return t*hs;case"hours":case"hour":case"hrs":case"hr":case"h":return t*fi;case"minutes":case"minute":case"mins":case"min":case"m":return t*di;case"seconds":case"second":case"secs":case"sec":case"s":return t*ui;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function DS(r){var e=Math.abs(r);return e>=hs?Math.round(r/hs)+"d":e>=fi?Math.round(r/fi)+"h":e>=di?Math.round(r/di)+"m":e>=ui?Math.round(r/ui)+"s":r+"ms"}function TS(r){var e=Math.abs(r);return e>=hs?au(r,e,hs,"day"):e>=fi?au(r,e,fi,"hour"):e>=di?au(r,e,di,"minute"):e>=ui?au(r,e,ui,"second"):r+" ms"}function au(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var o6=Re((xF,n6)=>{function kS(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=r6(),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 h=0;h<d.length;h++)u=(u<<5)-u+d.charCodeAt(h),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,h=null,f,p;function m(...y){if(!m.enabled)return;let w=m,b=Number(new Date),E=b-(u||b);w.diff=E,w.prev=u,w.curr=b,u=b,y[0]=t.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let x=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(I,S)=>{if(I==="%%")return"%";x++;let R=t.formatters[S];if(typeof R=="function"){let T=y[x];I=R.call(w,T),y.splice(x,1),x--}return I}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}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:(f!==t.namespaces&&(f=t.namespaces,p=t.enabled(d)),p),set:y=>{h=y}}),typeof t.init=="function"&&t.init(m),m}function n(d,u){let h=t(this.namespace+(typeof u>"u"?":":u)+d);return h.log=this.log,h}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,h=(typeof d=="string"?d:"").split(/[\s,]+/),f=h.length;for(u=0;u<f;u++)h[u]&&(d=h[u].replace(/\*/g,".*?"),d[0]==="-"?t.skips.push(new RegExp("^"+d.slice(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,h;for(u=0,h=t.skips.length;u<h;u++)if(t.skips[u].test(d))return!1;for(u=0,h=t.names.length;u<h;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.enable(t.load()),t}n6.exports=kS});var s6=Re((er,cu)=>{er.formatArgs=NS;er.save=PS;er.load=LS;er.useColors=CS;er.storage=OS();er.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();er.colors=["#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 CS(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function NS(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+cu.exports.humanize(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)}er.log=console.debug||console.log||(()=>{});function PS(r){try{r?er.storage.setItem("debug",r):er.storage.removeItem("debug")}catch{}}function LS(){let r;try{r=er.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function OS(){try{return localStorage}catch{}}cu.exports=o6()(er);var{formatters:BS}=cu.exports;BS.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var a6=Re((AF,g0)=>{"use strict";var US=Object.prototype.hasOwnProperty,Ft="~";function Ba(){}Object.create&&(Ba.prototype=Object.create(null),new Ba().__proto__||(Ft=!1));function FS(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function i6(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new FS(t,n||r,o),i=Ft?Ft+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 Ba:delete r._events[e]}function Ot(){this._events=new Ba,this._eventsCount=0}Ot.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)US.call(t,n)&&e.push(Ft?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ot.prototype.listeners=function(e){var t=Ft?Ft+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};Ot.prototype.listenerCount=function(e){var t=Ft?Ft+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Ot.prototype.emit=function(e,t,n,o,s,i){var a=Ft?Ft+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 h=c.length,f;for(u=0;u<h;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(f=1,d=new Array(l-1);f<l;f++)d[f-1]=arguments[f];c[u].fn.apply(c[u].context,d)}}return!0};Ot.prototype.on=function(e,t,n){return i6(this,e,t,n,!1)};Ot.prototype.once=function(e,t,n){return i6(this,e,t,n,!0)};Ot.prototype.removeListener=function(e,t,n,o){var s=Ft?Ft+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};Ot.prototype.removeAllListeners=function(e){var t;return e?(t=Ft?Ft+e:e,this._events[t]&&lu(this,t)):(this._events=new Ba,this._eventsCount=0),this};Ot.prototype.off=Ot.prototype.removeListener;Ot.prototype.addListener=Ot.prototype.on;Ot.prefixed=Ft;Ot.EventEmitter=Ot;typeof g0<"u"&&(g0.exports=Ot)});var v0=Re((XF,d6)=>{d6.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 e7=Re(Ya=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,h;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,h=c&255,[l,d,u,h].join(".")},i=function(c){var l,d,u,h,f,p;for(l=[],u=h=0;h<=3&&c.length!==0;u=++h){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}p=e(c),f=p[0],d=p[1],c=c.substring(d),l.push(f)}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,h,f;for(h=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")),f=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)h=h*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")h=h*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")h=h*l+(10+t(c[u])-o)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");u++}if(u===f)throw new Error("empty octet");return[h,u]},r=function(){function c(l,d){var u,h,f,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(m){throw u=m,new Error("Invalid mask: "+d)}for(h=f=32;f>=0;h=--f)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;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(m){throw u=m,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,h;for(h=i(this.first),u=i(this.last),d=0;h<=u;)l(a(h),h,d),d++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Ya.ip2long=i,Ya.long2ip=a,Ya.Netmask=r}).call(Ya)});var l1=Re((_W,m2)=>{var SW=function(){typeof m2<"u"&&(m2.exports=m);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(R){var T=R-R%1;return T==0&&(R<0||R===0&&1/R!=1/0)?-0:T},d=m.prototype,u=(m.fromDate=function(R){return new m(+R)},m.fromInt64BE=x(0,1,2,3,0,4),m.fromInt64LE=x(3,2,1,0,4,0),m.fromString=function(N){var T,L=new m,N=(N+="").replace(/^\s*[+\-]?\d+/,function(k){var k=+k,X=1970+(k-1970)%400;return L.year=k-X,X}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(B,k,X){return k<0&&(X*=-1),T=6e4*(60*+k+ +X),""}).replace(/\.\d+$/,function(B){return L.nano=+(B+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,L.time=T=Date.UTC.apply(Date,N)-(T||0),isNaN(T))throw new TypeError("Invalid Date");return y(L)},m.fromTimeT=function(R){return b(R,0)},d.year=0,d.time=0,d.nano=0,d.addNano=function(R){return this.nano+=+R||0,this},d.getNano=function(){var R=y(this);return(R.time%1e3*a+ +R.nano+1e9)%1e9},d.getTimeT=function(){var T=y(this),R=Math.floor(T.time/1e3),T=T.year;return T&&(R+=T*t*r/e),R},d.getYear=function(){return this.toDate().getUTCFullYear()+this.year},d.toDate=function(){return w(y(this).time)},d.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},d.toString=function(R){var T=this,L=T.toDate(),N={H:function(){return I(L.getUTCHours())},L:function(){return S(L.getUTCMilliseconds(),3)},M:function(){return I(L.getUTCMinutes())},N:function(){return S(T.getNano(),9)},S:function(){return I(L.getUTCSeconds())},Y:function(){var B=T.getYear();return 999999<B?"+"+B:9999<B?"+"+S(B,6):0<=B?S(B,4):-999999<=B?"-"+S(-B,6):B},a:function(){return f[L.getUTCDay()]},b:function(){return h[L.getUTCMonth()]},d:function(){return I(L.getUTCDate())},e:function(){return function(B){return(9<B?"":" ")+(0|B)}(L.getUTCDate())},m:function(){return I(L.getUTCMonth()+1)}};return function B(k){return k.replace(/%./g,function(X){var P=X[1],D=p[P],P=N[P];return D?B(D):P?P():X})}(R||u)},d.writeInt64BE=E(0,1,2,3,0,4),d.writeInt64LE=E(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],f=["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 m;function m(R,T,L){var N=this;if(!(N instanceof m))return new m(R,T,L);N.time=+R||0,N.nano=+T||0,N.year=+L||0,y(N)}function y(R){var T,L,N,B=R.year,k=R.time,X=R.nano,D=((X<0||a<=X)&&(X-=(L=Math.floor(X/a))*a,k+=L,L=1),B%e);return(k<-s||s<k||D)&&((T=l(k/o))&&(B+=T*e,k-=T*o),(N=w(k)).setUTCFullYear(D+N.getUTCFullYear()),N=(k=+N)+(T=l((B-=D)/e))*o,T&&-s<=N&&N<=s&&(B-=T*e,k=N),L=1),L&&(R.year=B,R.time=k,R.nano=X),R}function w(R){var T=new Date(0);return T.setTime(R),T}function b(B,N){B=+B||0;var L=l((N=(N|0)*i)/n)+l(B/n),N=N%n+B%n,B=l(N/n);return B&&(L+=B,N-=B*n),new m(1e3*N,0,L*e)}function E(R,T,L,N,B,k){return function(D,P){var C=y(this);D=D||new Array(8),v(D,P|=0);var A=Math.floor(C.time/1e3),C=C.year*(t*r/e),$=l(C/i)+l(A/i),C=C%i+A%i,A=Math.floor(C/i);return A&&($+=A,C-=A*i),X(D,P+B,$),X(D,P+k,C),D};function X(D,P,$){D[P+R]=$>>24&255,D[P+T]=$>>16&255,D[P+L]=$>>8&255,D[P+N]=255&$}}function x(R,T,L,N,B,k){return function(D,P){v(D,P|=0);var $=X(D,P+B);return b(X(D,P+k),$)};function X(D,P){return 16777216*D[P+R]+(D[P+T]<<16|D[P+L]<<8|D[P+N])}}function v(R,T){if(R=R&&R.length,R==null)throw new TypeError("Invalid Buffer");if(R<T+8)throw new RangeError("Out of range")}function I(R){return(9<R?"":"0")+(0|R)}function S(R,T){return(c+(0|R)).substr(-T)}}()});var T9=Re((dee,D9)=>{function cD(){return!!(typeof window<"u"&&typeof window.process=="object"&&window.process.type==="renderer"||typeof process<"u"&&typeof process.versions=="object"&&process.versions.electron||typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Electron")>=0)}D9.exports=cD});var ly=Re((ioe,cy)=>{"use strict";cy.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var my=Re((hy,py)=>{"use strict";var Rd=ly(),{hasOwnProperty:dy}=Object.prototype,{propertyIsEnumerable:BD}=Object,Hi=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),MD=hy,uy={concatArrays:!1,ignoreUndefined:!1},Sd=r=>{let e=[];for(let t in r)dy.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)BD.call(r,n)&&e.push(n)}return e};function qi(r){return Array.isArray(r)?UD(r):Rd(r)?FD(r):r}function UD(r){let e=r.slice(0,0);return Sd(r).forEach(t=>{Hi(e,t,qi(r[t]))}),e}function FD(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return Sd(r).forEach(t=>{Hi(e,t,qi(r[t]))}),e}var fy=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Hi(r,o,Mp(r[o],e[o],n)):Hi(r,o,qi(e[o])))}),r),VD=(r,e,t)=>{let n=r.slice(0,0),o=0;return[r,e].forEach(s=>{let i=[];for(let a=0;a<s.length;a++)dy.call(s,a)&&(i.push(String(a)),s===r?Hi(n,o++,s[a]):Hi(n,o++,qi(s[a])));n=fy(n,s,Sd(s).filter(a=>!i.includes(a)),t)}),n};function Mp(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?VD(r,e,t):!Rd(e)||!Rd(r)?qi(e):fy(r,e,Sd(e),t)}py.exports=function(...r){let e=Mp(qi(uy),this!==MD&&this||{},uy),t={_:{}};for(let n of r)if(n!==void 0){if(!Rd(n))throw new TypeError("`"+n+"` is not an Option Object");t=Mp(t,{_:n},e)}return t._}});var wy=Re((coe,yy)=>{"use strict";function KD(r){return r>=55296&&r<=56319}function $D(r){return r>=56320&&r<=57343}yy.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],KD(i)&&$D(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 by=Re((loe,Ey)=>{"use strict";function HD(r){return r>=55296&&r<=56319}function qD(r){return r>=56320&&r<=57343}Ey.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),qD(o)?s!=null&&HD(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 vy=Re((uoe,xy)=>{"use strict";var GD=wy(),WD=by();xy.exports=GD.bind(null,WD)});var _y=Re((doe,Sy)=>{"use strict";var zD=vy(),YD=/[\/\?<>\\:\*\|"]/g,XD=/[\x00-\x1f\x80-\x9f]/g,QD=/^\.+$/,jD=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,ZD=/[\. ]+$/;function Ry(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(YD,e).replace(XD,e).replace(QD,e).replace(jD,e).replace(ZD,e);return zD(t,255)}Sy.exports=function(r,e){var t=e&&e.replacement||"",n=Ry(r,t);return t===""?n:Ry(n,"")}});var ew=Re((xie,Jy)=>{"use strict";function MT(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var n=0;n<r.length;n++){var o=r.charAt(n),s=o.charCodeAt(0);if(e[s]!==255)throw new TypeError(o+" is ambiguous");e[s]=n}var i=r.length,a=r.charAt(0),c=Math.log(i)/Math.log(256),l=Math.log(256)/Math.log(i);function d(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var p=0,m=0,y=0,w=f.length;y!==w&&f[y]===0;)y++,p++;for(var b=(w-y)*l+1>>>0,E=new Uint8Array(b);y!==w;){for(var x=f[y],v=0,I=b-1;(x!==0||v<m)&&I!==-1;I--,v++)x+=256*E[I]>>>0,E[I]=x%i>>>0,x=x/i>>>0;if(x!==0)throw new Error("Non-zero carry");m=v,y++}for(var S=b-m;S!==b&&E[S]===0;)S++;for(var R=a.repeat(p);S<b;++S)R+=r.charAt(E[S]);return R}function u(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var p=0;if(f[p]!==" "){for(var m=0,y=0;f[p]===a;)m++,p++;for(var w=(f.length-p)*c+1>>>0,b=new Uint8Array(w);f[p];){var E=e[f.charCodeAt(p)];if(E===255)return;for(var x=0,v=w-1;(E!==0||x<y)&&v!==-1;v--,x++)E+=i*b[v]>>>0,b[v]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");y=x,p++}if(f[p]!==" "){for(var I=w-y;I!==w&&b[I]===0;)I++;for(var S=new Uint8Array(m+(w-I)),R=m;I!==w;)S[R++]=b[I++];return S}}}function h(f){var p=u(f);if(p)return p;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:h}}Jy.exports=MT});var Ud=Re((vie,tw)=>{"use strict";var UT=new TextDecoder,FT=r=>UT.decode(r),VT=new TextEncoder,KT=r=>VT.encode(r);function $T(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}tw.exports={decodeText:FT,encodeText:KT,concat:$T}});var nw=Re((Rie,rw)=>{"use strict";var{encodeText:HT}=Ud(),n3=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=HT(this.code),this.alphabet=o,this.codec=n(o)}encode(e){return this.codec.encode(e)}decode(e){for(let t of e)if(this.alphabet&&this.alphabet.indexOf(t)<0)throw new Error(`invalid character '${t}' in '${e}'`);return this.codec.decode(e)}};rw.exports=n3});var sw=Re((Sie,ow)=>{"use strict";var qT=(r,e,t)=>{let n={};for(let l=0;l<e.length;++l)n[e[l]]=l;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=n[r[l]];if(d===void 0)throw new SyntaxError("Invalid character "+r[l]);a=a<<t|d,i+=t,i>=8&&(i-=8,s[c++]=255&a>>i)}if(i>=t||255&a<<8-i)throw new SyntaxError("Unexpected end of data");return s},GT=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},WT=r=>e=>({encode(t){return GT(t,e,r)},decode(t){return qT(t,e,r)}});ow.exports={rfc4648:WT}});var lw=Re((_ie,cw)=>{"use strict";var bc=ew(),zT=nw(),{rfc4648:Dt}=sw(),{decodeText:YT,encodeText:XT}=Ud(),QT=()=>({encode:YT,decode:XT}),iw=[["identity","\0",QT,""],["base2","0",Dt(1),"01"],["base8","7",Dt(3),"01234567"],["base10","9",bc,"0123456789"],["base16","f",Dt(4),"0123456789abcdef"],["base16upper","F",Dt(4),"0123456789ABCDEF"],["base32hex","v",Dt(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",Dt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",Dt(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",Dt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",Dt(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",Dt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",Dt(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",Dt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",Dt(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",bc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",bc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",bc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",bc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",Dt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",Dt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",Dt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",Dt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],aw=iw.reduce((r,e)=>(r[e[0]]=new zT(e[0],e[1],e[2],e[3]),r),{}),jT=iw.reduce((r,e)=>(r[e[1]]=aw[e[0]],r),{});cw.exports={names:aw,codes:jT}});var fw=Re((jn,dw)=>{"use strict";var Xi=lw(),{encodeText:ZT,decodeText:Fd,concat:uw}=Ud();function JT(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=Cs(r);return nk(t,e),uw([n,e],n.length+e.length)}function ek(r,e){let t=Cs(r),n=ZT(t.encode(e));return uw([t.codeBuf,n],t.codeBuf.length+n.length)}function tk(r){r instanceof Uint8Array&&(r=Fd(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),Cs(r[0]).decode(r.substring(1))}function rk(r){if(r instanceof Uint8Array&&(r=Fd(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return Cs(r[0]).name}catch{return!1}}function nk(r,e){Cs(r).decode(Fd(e))}function Cs(r){if(Object.prototype.hasOwnProperty.call(Xi.names,r))return Xi.names[r];if(Object.prototype.hasOwnProperty.call(Xi.codes,r))return Xi.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function ok(r){return r instanceof Uint8Array&&(r=Fd(r)),Cs(r[0])}jn=dw.exports=JT;jn.encode=ek;jn.decode=tk;jn.isEncoded=rk;jn.encoding=Cs;jn.encodingFromData=ok;var sk=Object.freeze(Xi.names),ik=Object.freeze(Xi.codes);jn.names=sk;jn.codes=ik});var gw=Re((Aie,mw)=>{mw.exports=pw;var hw=128,ak=127,ck=~ak,lk=Math.pow(2,31);function pw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=lk;)e[t++]=r&255|hw,r/=128;for(;r&ck;)e[t++]=r&255|hw,r>>>=7;return e[t]=r|0,pw.bytes=t-n+1,e}});var Ew=Re((Iie,ww)=>{ww.exports=o3;var uk=128,yw=127;function o3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw o3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&yw)<<o:(i&yw)*Math.pow(2,o),o+=7}while(i>=uk);return o3.bytes=s-n,t}});var xw=Re((Die,bw)=>{var dk=Math.pow(2,7),fk=Math.pow(2,14),hk=Math.pow(2,21),pk=Math.pow(2,28),mk=Math.pow(2,35),gk=Math.pow(2,42),yk=Math.pow(2,49),wk=Math.pow(2,56),Ek=Math.pow(2,63);bw.exports=function(r){return r<dk?1:r<fk?2:r<hk?3:r<pk?4:r<mk?5:r<gk?6:r<yk?7:r<wk?8:r<Ek?9:10}});var Rw=Re((Tie,vw)=>{vw.exports={encode:gw(),decode:Ew(),encodingLength:xw()}});var _w=Re((kie,Sw)=>{"use strict";var bk=Object.freeze({identity:0,sha1:17,"sha2-256":18,"sha2-512":19,"sha3-512":20,"sha3-384":21,"sha3-256":22,"sha3-224":23,"shake-128":24,"shake-256":25,"keccak-224":26,"keccak-256":27,"keccak-384":28,"keccak-512":29,blake3:30,"murmur3-128":34,"murmur3-32":35,"dbl-sha2-256":86,md4:212,md5:213,bmt:214,"sha2-256-trunc254-padded":4114,"ripemd-128":4178,"ripemd-160":4179,"ripemd-256":4180,"ripemd-320":4181,x11:4352,kangarootwelve:7425,"sm3-256":21325,"blake2b-8":45569,"blake2b-16":45570,"blake2b-24":45571,"blake2b-32":45572,"blake2b-40":45573,"blake2b-48":45574,"blake2b-56":45575,"blake2b-64":45576,"blake2b-72":45577,"blake2b-80":45578,"blake2b-88":45579,"blake2b-96":45580,"blake2b-104":45581,"blake2b-112":45582,"blake2b-120":45583,"blake2b-128":45584,"blake2b-136":45585,"blake2b-144":45586,"blake2b-152":45587,"blake2b-160":45588,"blake2b-168":45589,"blake2b-176":45590,"blake2b-184":45591,"blake2b-192":45592,"blake2b-200":45593,"blake2b-208":45594,"blake2b-216":45595,"blake2b-224":45596,"blake2b-232":45597,"blake2b-240":45598,"blake2b-248":45599,"blake2b-256":45600,"blake2b-264":45601,"blake2b-272":45602,"blake2b-280":45603,"blake2b-288":45604,"blake2b-296":45605,"blake2b-304":45606,"blake2b-312":45607,"blake2b-320":45608,"blake2b-328":45609,"blake2b-336":45610,"blake2b-344":45611,"blake2b-352":45612,"blake2b-360":45613,"blake2b-368":45614,"blake2b-376":45615,"blake2b-384":45616,"blake2b-392":45617,"blake2b-400":45618,"blake2b-408":45619,"blake2b-416":45620,"blake2b-424":45621,"blake2b-432":45622,"blake2b-440":45623,"blake2b-448":45624,"blake2b-456":45625,"blake2b-464":45626,"blake2b-472":45627,"blake2b-480":45628,"blake2b-488":45629,"blake2b-496":45630,"blake2b-504":45631,"blake2b-512":45632,"blake2s-8":45633,"blake2s-16":45634,"blake2s-24":45635,"blake2s-32":45636,"blake2s-40":45637,"blake2s-48":45638,"blake2s-56":45639,"blake2s-64":45640,"blake2s-72":45641,"blake2s-80":45642,"blake2s-88":45643,"blake2s-96":45644,"blake2s-104":45645,"blake2s-112":45646,"blake2s-120":45647,"blake2s-128":45648,"blake2s-136":45649,"blake2s-144":45650,"blake2s-152":45651,"blake2s-160":45652,"blake2s-168":45653,"blake2s-176":45654,"blake2s-184":45655,"blake2s-192":45656,"blake2s-200":45657,"blake2s-208":45658,"blake2s-216":45659,"blake2s-224":45660,"blake2s-232":45661,"blake2s-240":45662,"blake2s-248":45663,"blake2s-256":45664,"skein256-8":45825,"skein256-16":45826,"skein256-24":45827,"skein256-32":45828,"skein256-40":45829,"skein256-48":45830,"skein256-56":45831,"skein256-64":45832,"skein256-72":45833,"skein256-80":45834,"skein256-88":45835,"skein256-96":45836,"skein256-104":45837,"skein256-112":45838,"skein256-120":45839,"skein256-128":45840,"skein256-136":45841,"skein256-144":45842,"skein256-152":45843,"skein256-160":45844,"skein256-168":45845,"skein256-176":45846,"skein256-184":45847,"skein256-192":45848,"skein256-200":45849,"skein256-208":45850,"skein256-216":45851,"skein256-224":45852,"skein256-232":45853,"skein256-240":45854,"skein256-248":45855,"skein256-256":45856,"skein512-8":45857,"skein512-16":45858,"skein512-24":45859,"skein512-32":45860,"skein512-40":45861,"skein512-48":45862,"skein512-56":45863,"skein512-64":45864,"skein512-72":45865,"skein512-80":45866,"skein512-88":45867,"skein512-96":45868,"skein512-104":45869,"skein512-112":45870,"skein512-120":45871,"skein512-128":45872,"skein512-136":45873,"skein512-144":45874,"skein512-152":45875,"skein512-160":45876,"skein512-168":45877,"skein512-176":45878,"skein512-184":45879,"skein512-192":45880,"skein512-200":45881,"skein512-208":45882,"skein512-216":45883,"skein512-224":45884,"skein512-232":45885,"skein512-240":45886,"skein512-248":45887,"skein512-256":45888,"skein512-264":45889,"skein512-272":45890,"skein512-280":45891,"skein512-288":45892,"skein512-296":45893,"skein512-304":45894,"skein512-312":45895,"skein512-320":45896,"skein512-328":45897,"skein512-336":45898,"skein512-344":45899,"skein512-352":45900,"skein512-360":45901,"skein512-368":45902,"skein512-376":45903,"skein512-384":45904,"skein512-392":45905,"skein512-400":45906,"skein512-408":45907,"skein512-416":45908,"skein512-424":45909,"skein512-432":45910,"skein512-440":45911,"skein512-448":45912,"skein512-456":45913,"skein512-464":45914,"skein512-472":45915,"skein512-480":45916,"skein512-488":45917,"skein512-496":45918,"skein512-504":45919,"skein512-512":45920,"skein1024-8":45921,"skein1024-16":45922,"skein1024-24":45923,"skein1024-32":45924,"skein1024-40":45925,"skein1024-48":45926,"skein1024-56":45927,"skein1024-64":45928,"skein1024-72":45929,"skein1024-80":45930,"skein1024-88":45931,"skein1024-96":45932,"skein1024-104":45933,"skein1024-112":45934,"skein1024-120":45935,"skein1024-128":45936,"skein1024-136":45937,"skein1024-144":45938,"skein1024-152":45939,"skein1024-160":45940,"skein1024-168":45941,"skein1024-176":45942,"skein1024-184":45943,"skein1024-192":45944,"skein1024-200":45945,"skein1024-208":45946,"skein1024-216":45947,"skein1024-224":45948,"skein1024-232":45949,"skein1024-240":45950,"skein1024-248":45951,"skein1024-256":45952,"skein1024-264":45953,"skein1024-272":45954,"skein1024-280":45955,"skein1024-288":45956,"skein1024-296":45957,"skein1024-304":45958,"skein1024-312":45959,"skein1024-320":45960,"skein1024-328":45961,"skein1024-336":45962,"skein1024-344":45963,"skein1024-352":45964,"skein1024-360":45965,"skein1024-368":45966,"skein1024-376":45967,"skein1024-384":45968,"skein1024-392":45969,"skein1024-400":45970,"skein1024-408":45971,"skein1024-416":45972,"skein1024-424":45973,"skein1024-432":45974,"skein1024-440":45975,"skein1024-448":45976,"skein1024-456":45977,"skein1024-464":45978,"skein1024-472":45979,"skein1024-480":45980,"skein1024-488":45981,"skein1024-496":45982,"skein1024-504":45983,"skein1024-512":45984,"skein1024-520":45985,"skein1024-528":45986,"skein1024-536":45987,"skein1024-544":45988,"skein1024-552":45989,"skein1024-560":45990,"skein1024-568":45991,"skein1024-576":45992,"skein1024-584":45993,"skein1024-592":45994,"skein1024-600":45995,"skein1024-608":45996,"skein1024-616":45997,"skein1024-624":45998,"skein1024-632":45999,"skein1024-640":46e3,"skein1024-648":46001,"skein1024-656":46002,"skein1024-664":46003,"skein1024-672":46004,"skein1024-680":46005,"skein1024-688":46006,"skein1024-696":46007,"skein1024-704":46008,"skein1024-712":46009,"skein1024-720":46010,"skein1024-728":46011,"skein1024-736":46012,"skein1024-744":46013,"skein1024-752":46014,"skein1024-760":46015,"skein1024-768":46016,"skein1024-776":46017,"skein1024-784":46018,"skein1024-792":46019,"skein1024-800":46020,"skein1024-808":46021,"skein1024-816":46022,"skein1024-824":46023,"skein1024-832":46024,"skein1024-840":46025,"skein1024-848":46026,"skein1024-856":46027,"skein1024-864":46028,"skein1024-872":46029,"skein1024-880":46030,"skein1024-888":46031,"skein1024-896":46032,"skein1024-904":46033,"skein1024-912":46034,"skein1024-920":46035,"skein1024-928":46036,"skein1024-936":46037,"skein1024-944":46038,"skein1024-952":46039,"skein1024-960":46040,"skein1024-968":46041,"skein1024-976":46042,"skein1024-984":46043,"skein1024-992":46044,"skein1024-1000":46045,"skein1024-1008":46046,"skein1024-1016":46047,"skein1024-1024":46048,"poseidon-bls12_381-a2-fc1":46081,"poseidon-bls12_381-a2-fc1-sc":46082});Sw.exports={names:bk}});function xk(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 m=0,y=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var E=(b-w)*d+1>>>0,x=new Uint8Array(E);w!==b;){for(var v=p[w],I=0,S=E-1;(v!==0||I<y)&&S!==-1;S--,I++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");y=I,w++}for(var R=E-y;R!==E&&x[R]===0;)R++;for(var T=c.repeat(m);R<E;++R)T+=r.charAt(x[R]);return T}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var y=0,w=0;p[m]===c;)y++,m++;for(var b=(p.length-m)*l+1>>>0,E=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var v=0,I=b-1;(x!==0||v<w)&&I!==-1;I--,v++)x+=a*E[I]>>>0,E[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=v,m++}if(p[m]!==" "){for(var S=b-w;S!==b&&E[S]===0;)S++;for(var R=new Uint8Array(y+(b-S)),T=y;S!==b;)R[T++]=E[S++];return R}}}function f(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:f}}var vk,Rk,Aw,Iw=Te(()=>{vk=xk,Rk=vk,Aw=Rk});var Nie,Dw,Zn,Tw,kw,Vo=Te(()=>{Nie=new Uint8Array(0),Dw=(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},Zn=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")},Tw=r=>new TextEncoder().encode(r),kw=r=>new TextDecoder().decode(r)});var s3,i3,a3,Nw,c3,Qi,Ko,Sk,_k,tt,tn=Te(()=>{Iw();Vo();s3=class{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")}},i3=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 Nw(this,e)}},a3=class{constructor(e){this.decoders=e}or(e){return Nw(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Nw=(r,e)=>new a3({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),c3=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new s3(e,t,n),this.decoder=new i3(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Qi=({name:r,prefix:e,encode:t,decode:n})=>new c3(r,e,t,n),Ko=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=Aw(t,e);return Qi({prefix:r,name:e,encode:n,decode:s=>Zn(o(s))})},Sk=(r,e,t,n)=>{let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i},_k=(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&&(s+=e[o&a<<t-i]),n)for(;s.length*t&7;)s+="=";return s},tt=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Qi({prefix:e,name:r,encode(o){return _k(o,n,t)},decode(o){return Sk(o,n,t,r)}})});var l3={};pe(l3,{identity:()=>Ak});var Ak,Pw=Te(()=>{tn();Vo();Ak=Qi({prefix:"\0",name:"identity",encode:r=>kw(r),decode:r=>Tw(r)})});var u3={};pe(u3,{base2:()=>Ik});var Ik,Lw=Te(()=>{tn();Ik=tt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var d3={};pe(d3,{base8:()=>Dk});var Dk,Ow=Te(()=>{tn();Dk=tt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var f3={};pe(f3,{base10:()=>Tk});var Tk,Bw=Te(()=>{tn();Tk=Ko({prefix:"9",name:"base10",alphabet:"0123456789"})});var h3={};pe(h3,{base16:()=>kk,base16upper:()=>Ck});var kk,Ck,Mw=Te(()=>{tn();kk=tt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Ck=tt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var p3={};pe(p3,{base32:()=>ji,base32hex:()=>Ok,base32hexpad:()=>Mk,base32hexpadupper:()=>Uk,base32hexupper:()=>Bk,base32pad:()=>Pk,base32padupper:()=>Lk,base32upper:()=>Nk,base32z:()=>Fk});var ji,Nk,Pk,Lk,Ok,Bk,Mk,Uk,Fk,m3=Te(()=>{tn();ji=tt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Nk=tt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Pk=tt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Lk=tt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ok=tt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Bk=tt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Mk=tt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Uk=tt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Fk=tt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var g3={};pe(g3,{base36:()=>Vk,base36upper:()=>Kk});var Vk,Kk,Uw=Te(()=>{tn();Vk=Ko({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Kk=Ko({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var y3={};pe(y3,{base58btc:()=>wn,base58flickr:()=>$k});var wn,$k,w3=Te(()=>{tn();wn=Ko({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),$k=Ko({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var E3={};pe(E3,{base64:()=>Hk,base64pad:()=>qk,base64url:()=>Gk,base64urlpad:()=>Wk});var Hk,qk,Gk,Wk,Fw=Te(()=>{tn();Hk=tt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),qk=tt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Gk=tt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Wk=tt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var b3={};pe(b3,{base256emoji:()=>jk});function Xk(r){return r.reduce((e,t)=>(e+=zk[t],e),"")}function Qk(r){let e=[];for(let t of r){let n=Yk[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Vw,zk,Yk,jk,Kw=Te(()=>{tn();Vw=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}"),zk=Vw.reduce((r,e,t)=>(r[t]=e,r),[]),Yk=Vw.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);jk=Qi({prefix:"\u{1F680}",name:"base256emoji",encode:Xk,decode:Qk})});function qw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=tC;)e[t++]=r&255|$w,r/=128;for(;r&eC;)e[t++]=r&255|$w,r>>>=7;return e[t]=r|0,qw.bytes=t-n+1,e}function x3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw x3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Hw)<<o:(i&Hw)*Math.pow(2,o),o+=7}while(i>=nC);return x3.bytes=s-n,t}var Zk,$w,Jk,eC,tC,rC,nC,Hw,oC,sC,iC,aC,cC,lC,uC,dC,fC,hC,pC,mC,xc,Gw=Te(()=>{Zk=qw,$w=128,Jk=127,eC=~Jk,tC=Math.pow(2,31);rC=x3,nC=128,Hw=127;oC=Math.pow(2,7),sC=Math.pow(2,14),iC=Math.pow(2,21),aC=Math.pow(2,28),cC=Math.pow(2,35),lC=Math.pow(2,42),uC=Math.pow(2,49),dC=Math.pow(2,56),fC=Math.pow(2,63),hC=function(r){return r<oC?1:r<sC?2:r<iC?3:r<aC?4:r<cC?5:r<lC?6:r<uC?7:r<dC?8:r<fC?9:10},pC={encode:Zk,decode:rC,encodingLength:hC},mC=pC,xc=mC});var vc,Zi,Ji,Kd=Te(()=>{Gw();vc=(r,e=0)=>[xc.decode(r,e),xc.decode.bytes],Zi=(r,e,t=0)=>(xc.encode(r,e,t),e),Ji=r=>xc.encodingLength(r)});var Ns,Ww,zw,ea,Sc=Te(()=>{Vo();Kd();Ns=(r,e)=>{let t=e.byteLength,n=Ji(r),o=n+Ji(t),s=new Uint8Array(o+t);return Zi(r,s,0),Zi(t,s,n),s.set(e,o),new ea(r,t,e,s)},Ww=r=>{let e=Zn(r),[t,n]=vc(e),[o,s]=vc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new ea(t,o,i,e)},zw=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&Dw(r.bytes,e.bytes),ea=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var R3,v3,S3=Te(()=>{Sc();R3=({name:r,code:e,encode:t})=>new v3(r,e,t),v3=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ns(this.code,t):t.then(n=>Ns(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var _3={};pe(_3,{sha256:()=>gC,sha512:()=>yC});var Xw,gC,yC,Qw=Te(()=>{S3();Xw=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),gC=R3({name:"sha2-256",code:18,encode:Xw("SHA-256")}),yC=R3({name:"sha2-512",code:19,encode:Xw("SHA-512")})});var A3={};pe(A3,{identity:()=>bC});var jw,wC,Zw,EC,bC,Jw=Te(()=>{Vo();Sc();jw=0,wC="identity",Zw=Zn,EC=r=>Ns(jw,Zw(r)),bC={code:jw,name:wC,encode:Zw,digest:EC}});var eE=Te(()=>{Vo()});var Jie,eae,tE=Te(()=>{Jie=new TextEncoder,eae=new TextDecoder});var qd,RC,SC,_C,_c,AC,rE,nE,$d,Hd,IC,DC,TC,oE=Te(()=>{Kd();Sc();w3();m3();Vo();qd=class r{constructor(e,t,n,o){this.code=t,this.version=e,this.multihash=n,this.bytes=o,this.byteOffset=o.byteOffset,this.byteLength=o.byteLength,this.asCID=this,this._baseCache=new Map,Object.defineProperties(this,{byteOffset:Hd,byteLength:Hd,code:$d,version:$d,multihash:$d,bytes:$d,_baseCache:Hd,asCID:Hd})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==_c)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==AC)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}}}toV1(){switch(this.version){case 0:{let{code:e,digest:t}=this.multihash,n=Ns(e,t);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}equals(e){return e&&this.code===e.code&&this.version===e.version&&zw(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return SC(t,o,e||wn.encoder);default:return _C(t,o,e||ji.encoder)}}toJSON(){return{code:this.code,version:this.version,hash:this.multihash.bytes}}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return"CID("+this.toString()+")"}static isCID(e){return DC(/^0\.0/,TC),!!(e&&(e[nE]||e.asCID===e))}get toBaseEncodedString(){throw new Error("Deprecated, use .toString()")}get codec(){throw new Error('"codec" property is deprecated, use integer "code" property instead')}get buffer(){throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead")}get multibaseName(){throw new Error('"multibaseName" property is deprecated')}get prefix(){throw new Error('"prefix" property is deprecated')}static asCID(e){if(e instanceof r)return e;if(e!=null&&e.asCID===e){let{version:t,code:n,multihash:o,bytes:s}=e;return new r(t,n,o,s||rE(t,n,o.bytes))}else if(e!=null&&e[nE]===!0){let{version:t,multihash:n,code:o}=e,s=Ww(n);return r.create(t,o,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");switch(e){case 0:{if(t!==_c)throw new Error(`Version 0 CID must use dag-pb (code: ${_c}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=rE(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,_c,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=Zn(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 ea(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,h]=vc(e.subarray(t));return t+=h,u},o=n(),s=_c;if(o===18?(o=0,t=0):o===1&&(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]=RC(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},RC=(r,e)=>{switch(r[0]){case"Q":{let t=e||wn;return[wn.prefix,t.decode(`${wn.prefix}${r}`)]}case wn.prefix:{let t=e||wn;return[wn.prefix,t.decode(r)]}case ji.prefix:{let t=e||ji;return[ji.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}},SC=(r,e,t)=>{let{prefix:n}=t;if(n!==wn.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},_C=(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},_c=112,AC=18,rE=(r,e,t)=>{let n=Ji(r),o=n+Ji(e),s=new Uint8Array(o+t.byteLength);return Zi(r,s,0),Zi(e,s,n),s.set(t,o),s},nE=Symbol.for("@ipld/js-cid/CID"),$d={writable:!1,configurable:!1,enumerable:!0},Hd={writable:!1,enumerable:!1,configurable:!1},IC="0.0.0-dev",DC=(r,e)=>{if(r.test(IC))console.warn(e);else throw new Error(e)},TC=`CID.isCID(v) is deprecated and will be removed in the next major release.
4
4
  Following code pattern:
5
5
 
6
6
  if (CID.isCID(value)) {
@@ -14,23 +14,23 @@ if (cid) {
14
14
  // Make sure to use cid instead of value
15
15
  doSomethingWithCID(cid)
16
16
  }
17
- `});var tE=Te(()=>{eE();Kd();Vo();v3();Rc()});var _3,tae,rE=Te(()=>{Tw();kw();Cw();Nw();Pw();h3();Lw();g3();Ow();Mw();Ww();Xw();Qw();jw();tE();_3={...a3,...c3,...l3,...u3,...d3,...f3,...p3,...m3,...y3,...w3},tae={...S3,...R3}});function ta(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Gd=Te(()=>{});function Wd(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?ta(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var A3=Te(()=>{Gd()});function oE(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var nE,I3,_C,zd,D3=Te(()=>{rE();A3();nE=oE("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),I3=oE("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=Wd(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),_C={utf8:nE,"utf-8":nE,hex:_3.base16,latin1:I3,ascii:I3,binary:I3,..._3},zd=_C});var sE={};pe(sE,{toString:()=>AC});function AC(r,e="utf8"){let t=zd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var iE=Te(()=>{D3()});var aE={};pe(aE,{fromString:()=>IC});function IC(r,e="utf8"){let t=zd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?ta(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var cE=Te(()=>{D3();Gd()});var lE={};pe(lE,{concat:()=>DC});function DC(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=Wd(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return ta(t)}var uE=Te(()=>{A3();Gd()});var k3=Se((pae,gE)=>{"use strict";var dE=cw(),ra=Ew(),{names:Ac}=xw(),{toString:Yd}=(iE(),Nc(sE)),{fromString:TC}=(cE(),Nc(aE)),{concat:kC}=(uE(),Nc(lE)),na={};for(let r in Ac){let e=r;na[Ac[e]]=e}Object.freeze(na);function CC(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Yd(r,"base16")}function NC(r){return TC(r,"base16")}function PC(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Yd(dE.encode("base58btc",r)).slice(1)}function LC(r){let e=r instanceof Uint8Array?Yd(r):r;return dE.decode("z"+e)}function fE(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=ra.decode(r);if(!pE(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(ra.decode.bytes);let t=ra.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(ra.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${Yd(r,"base16")}`);return{code:e,name:na[e],length:t,digest:r}}function OC(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=hE(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=ra.encode(n),s=ra.encode(t);return kC([o,s,r],o.length+s.length+r.length)}function hE(r){let e=r;if(typeof r=="string"){if(Ac[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=Ac[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(na[e]===void 0&&!T3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function T3(r){return r>0&&r<16}function pE(r){return!!(T3(r)||na[r])}function mE(r){fE(r)}function BC(r){return mE(r),r.subarray(0,2)}gE.exports={names:Ac,codes:na,toHexString:CC,fromHexString:NC,toB58String:PC,fromB58String:LC,decode:fE,encode:OC,coerceCode:hE,isAppCode:T3,validate:mE,prefix:BC,isValidCode:pE}});var TE=Se(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});var L3=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},jd=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new L3;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Zd.EventIterator=jd;Zd.default=jd});var kE=Se(Ic=>{"use strict";Object.defineProperty(Ic,"__esModule",{value:!0});var O3=TE();Ic.EventIterator=O3.EventIterator;function qC(r,e,t){return new O3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}Ic.subscribe=qC;Ic.default=O3.EventIterator});var vN={};pe(vN,{DEFAULT_SESSION_MAX_PROVIDERS:()=>Qm,DEFAULT_SESSION_MIN_PROVIDERS:()=>Xm,createHelia:()=>bN,libp2pDefaults:()=>tf});var d4=Symbol.for("@libp2p/connection");var rn=Symbol.for("@libp2p/content-routing");var qo=Symbol.for("@libp2p/peer-discovery");var la=Symbol.for("@libp2p/peer-id");function Ms(r){return r!=null&&!!r[la]}var nn=Symbol.for("@libp2p/peer-routing");var f4="keep-alive";var on=Symbol.for("@libp2p/transport");var jn;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(jn||(jn={}));var kr=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},g=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Pc=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var yn="ERR_TIMEOUT";var h4="ERR_NOT_FOUND",Go="ERR_INVALID_MESSAGE";var j=(r,...e)=>{try{[...e]}catch{}};var ye=class extends EventTarget{#e=new Map;constructor(){super(),j(1/0,this)}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 wt(e,t))}},Af=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},wt=globalThis.CustomEvent??Af;function Lc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Zn(...r){let e=[];for(let t of r)Lc(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 Jn(...r){let e=[];for(let t of r)Lc(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()}))}function Me(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.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}function J(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Oc=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)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}},Us=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Oc(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 Oc(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 If=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function dt(r={}){return Tb(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 Tb(r,e){e=e??{};let t=e.onEnd,n=new Us,o,s,i,a=J(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=b=>{s=null,n.push(b);try{y(r(n))}catch(E){w(E)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=J()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new Us,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},h=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),f=()=>(n=new Us,h(),{done:!0}),p=y=>(h(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:f,throw:p,push:u,end:h,get readableLength(){return n.size},onEmpty:async y=>{let w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let b,E;w!=null&&(b=new Promise((x,v)=>{E=()=>{v(new If)},w.addEventListener("abort",E)}));try{await Promise.race([a.promise,b])}finally{E!=null&&w!=null&&w?.removeEventListener("abort",E)}}},t==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return m.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}var Df=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Cr(r,e,t,n){let o=new Df(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){t?.removeEventListener("abort",d),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(h){a(),i(h);return}a(),s(u)},l=u=>{a(),i(u.detail)},d=()=>{a(),i(o)};t?.addEventListener("abort",d),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Bc=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Lt(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Bc(t?.errorMessage,t?.errorCode));let n,o=new Bc(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Mc=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=J(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new kr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function kb(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Uc=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=kb(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,j(1/0,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 kr),this.cleanup())}async join(e={}){let t=new Mc(new Error("where").stack,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 Lt(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 Cb(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 Nr=class extends ye{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!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){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=Cb(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new Uc(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new kr)}),this.clear()}async onEmpty(e){this.size!==0&&await Cr(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Cr(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Cr(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=dt({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)},i=()=>{n()},a=()=>{n(new g("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var fr=class extends Nr{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function Nb(r){return r[Symbol.asyncIterator]!=null}function Pb(r){if(Nb(r))return(async()=>{for await(let e of r);})();for(let e of r);}var hr=Pb;function Ae(r=0){return new Uint8Array(r)}function We(r=0){return new Uint8Array(r)}var Lb=Math.pow(2,7),Ob=Math.pow(2,14),Bb=Math.pow(2,21),Tf=Math.pow(2,28),kf=Math.pow(2,35),Cf=Math.pow(2,42),Nf=Math.pow(2,49),ke=128,Tt=127;function Re(r){if(r<Lb)return 1;if(r<Ob)return 2;if(r<Bb)return 3;if(r<Tf)return 4;if(r<kf)return 5;if(r<Cf)return 6;if(r<Nf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Pf(r,e,t=0){switch(Re(r)){case 8:e[t++]=r&255|ke,r/=128;case 7:e[t++]=r&255|ke,r/=128;case 6:e[t++]=r&255|ke,r/=128;case 5:e[t++]=r&255|ke,r/=128;case 4:e[t++]=r&255|ke,r>>>=7;case 3:e[t++]=r&255|ke,r>>>=7;case 2:e[t++]=r&255|ke,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Mb(r,e,t=0){switch(Re(r)){case 8:e.set(t++,r&255|ke),r/=128;case 7:e.set(t++,r&255|ke),r/=128;case 6:e.set(t++,r&255|ke),r/=128;case 5:e.set(t++,r&255|ke),r/=128;case 4:e.set(t++,r&255|ke),r>>>=7;case 3:e.set(t++,r&255|ke),r>>>=7;case 2:e.set(t++,r&255|ke),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Lf(r,e){let t=r[e],n=0;if(n+=t&Tt,t<ke||(t=r[e+1],n+=(t&Tt)<<7,t<ke)||(t=r[e+2],n+=(t&Tt)<<14,t<ke)||(t=r[e+3],n+=(t&Tt)<<21,t<ke)||(t=r[e+4],n+=(t&Tt)*Tf,t<ke)||(t=r[e+5],n+=(t&Tt)*kf,t<ke)||(t=r[e+6],n+=(t&Tt)*Cf,t<ke)||(t=r[e+7],n+=(t&Tt)*Nf,t<ke))return n;throw new RangeError("Could not decode varint")}function Ub(r,e){let t=r.get(e),n=0;if(n+=t&Tt,t<ke||(t=r.get(e+1),n+=(t&Tt)<<7,t<ke)||(t=r.get(e+2),n+=(t&Tt)<<14,t<ke)||(t=r.get(e+3),n+=(t&Tt)<<21,t<ke)||(t=r.get(e+4),n+=(t&Tt)*Tf,t<ke)||(t=r.get(e+5),n+=(t&Tt)*kf,t<ke)||(t=r.get(e+6),n+=(t&Tt)*Cf,t<ke)||(t=r.get(e+7),n+=(t&Tt)*Nf,t<ke))return n;throw new RangeError("Could not decode varint")}function Ke(r,e,t=0){return e==null&&(e=We(Re(r))),e instanceof Uint8Array?Pf(r,e,t):Mb(r,e,t)}function Ot(r,e=0){return r instanceof Uint8Array?Lf(r,e):Ub(r,e)}function ve(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=We(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function Z(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}var m4=Symbol.for("@achingbrain/uint8arraylist");function p4(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 Fc(r){return!!r?.[m4]}var ce=class r{bufs;length;[m4]=!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(Fc(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(Fc(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=p4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=p4(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(Fc(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 ve(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:ve(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(!Fc(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 h=l;h>=0;h--){let f=this.get(u+h);if(n[h]!==f){d=Math.max(1,h-a[f]);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=We(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=We(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(!Z(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 Vc(r){return r[Symbol.asyncIterator]!=null}var Kc=r=>{let e=Re(r),t=We(e);return Ke(r,t),Kc.bytes=e,t};Kc.bytes=0;function Vt(r,e){e=e??{};let t=e.lengthEncoder??Kc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Vc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Vt.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Kc;return new ce(t(r.byteLength),r)};var Fs=Ye(Wo(),1);var Kb=8,$b=1024*1024*4,zo;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(zo||(zo={}));var Of=r=>{let e=Ot(r);return Of.bytes=Re(e),e};Of.bytes=0;function Kt(r,e){let t=new ce,n=zo.LENGTH,o=-1,s=e?.lengthDecoder??Of,i=e?.maxLengthLength??Kb,a=e?.maxDataLength??$b;function*c(){for(;t.byteLength>0;){if(n===zo.LENGTH)try{if(o=s(t),o<0)throw(0,Fs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,Fs.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=zo.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,Fs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===zo.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=zo.LENGTH}}}return Vc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,Fs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,Fs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Kt.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 Kt(n,{...e??{},onLength:s=>{t=s}})};function Hb(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 Vs=Hb;function qb(r){return r[Symbol.asyncIterator]!=null}function Gb(r,e){let t=0;if(qb(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=Vs(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 await(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 pr=Gb;function Wb(r){return r[Symbol.asyncIterator]!=null}function zb(...r){let e=[];for(let t of r)Wb(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=dt({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Bt=zb;function Xe(r,...e){if(r==null)throw new Error("Empty pipeline");if(Bf(r)){let n=r;r=()=>n.source}else if(E4(r)||w4(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Bf(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++)Bf(t[n])&&(t[n]=Xb(t[n]));return Yb(...t)}var Yb=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},w4=r=>r?.[Symbol.asyncIterator]!=null,E4=r=>r?.[Symbol.iterator]!=null,Bf=r=>r==null?!1:r.sink!=null&&r.source!=null,Xb=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=dt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(w4(s))o=async function*(){yield*s,n.end()};else if(E4(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Bt(n,o())}return r.source};function Qb(r){return r[Symbol.asyncIterator]!=null}function jb(r,e){return Qb(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 eo=jb;var me=class extends Event{constructor(e,t){super(e),this.detail=t}};var ua="/ipfs/bitswap/1.2.0";var Mf=new Float32Array([-0]),to=new Uint8Array(Mf.buffer);function b4(r,e,t){Mf[0]=r,e[t]=to[0],e[t+1]=to[1],e[t+2]=to[2],e[t+3]=to[3]}function x4(r,e){return to[0]=r[e],to[1]=r[e+1],to[2]=r[e+2],to[3]=r[e+3],Mf[0]}var Uf=new Float64Array([-0]),kt=new Uint8Array(Uf.buffer);function v4(r,e,t){Uf[0]=r,e[t]=kt[0],e[t+1]=kt[1],e[t+2]=kt[2],e[t+3]=kt[3],e[t+4]=kt[4],e[t+5]=kt[5],e[t+6]=kt[6],e[t+7]=kt[7]}function S4(r,e){return kt[0]=r[e],kt[1]=r[e+1],kt[2]=r[e+2],kt[3]=r[e+3],kt[4]=r[e+4],kt[5]=r[e+5],kt[6]=r[e+6],kt[7]=r[e+7],Uf[0]}var Zb=BigInt(Number.MAX_SAFE_INTEGER),Jb=BigInt(Number.MIN_SAFE_INTEGER),Qt=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 Yo;if(e<Zb&&e>Jb)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>R4&&(o=0n,++n>R4&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Yo;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):Yo}},Yo=new Qt(0,0);Yo.toBigInt=function(){return 0n};Yo.zzEncode=Yo.zzDecode=function(){return this};Yo.length=function(){return 1};var R4=4294967296n;function _4(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 A4(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 Ff(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 Pr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Hc(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Vf=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,Pr(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 Pr(this,4);return Hc(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Pr(this,4);return Hc(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Pr(this,4);let e=x4(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Pr(this,4);let e=S4(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 Pr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return A4(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Pr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Pr(this);while(this.buf[this.pos++]&128);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 Qt(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 Pr(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 Pr(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 Pr(this,8);let e=Hc(this.buf,this.pos+=4),t=Hc(this.buf,this.pos+=4);return new Qt(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=Lf(this.buf,this.pos);return this.pos+=Re(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 Kf(r){return new Vf(r instanceof Uint8Array?r:r.subarray())}function ee(r,e,t){let n=Kf(r);return e.decode(n,void 0,t)}var Wf={};pe(Wf,{base10:()=>sx});var WP=new Uint8Array(0);function D4(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 En(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 T4(r){return new TextEncoder().encode(r)}function k4(r){return new TextDecoder().decode(r)}function ex(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 m=0,y=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var E=(b-w)*d+1>>>0,x=new Uint8Array(E);w!==b;){for(var v=p[w],I=0,R=E-1;(v!==0||I<y)&&R!==-1;R--,I++)v+=256*x[R]>>>0,x[R]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");y=I,w++}for(var S=E-y;S!==E&&x[S]===0;)S++;for(var T=c.repeat(m);S<E;++S)T+=r.charAt(x[S]);return T}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var y=0,w=0;p[m]===c;)y++,m++;for(var b=(p.length-m)*l+1>>>0,E=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var v=0,I=b-1;(x!==0||v<w)&&I!==-1;I--,v++)x+=a*E[I]>>>0,E[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=v,m++}if(p[m]!==" "){for(var R=b-w;R!==b&&E[R]===0;)R++;for(var S=new Uint8Array(y+(b-R)),T=y;R!==b;)S[T++]=E[R++];return S}}}function f(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:f}}var tx=ex,rx=tx,N4=rx;var $f=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")}},Hf=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 P4(this,e)}},qf=class{decoders;constructor(e){this.decoders=e}or(e){return P4(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 P4(r,e){return new qf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Gf=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 $f(e,t,n),this.decoder=new Hf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ks({name:r,prefix:e,encode:t,decode:n}){return new Gf(r,e,t,n)}function ro({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=N4(t,r);return Ks({prefix:e,name:r,encode:n,decode:s=>En(o(s))})}function nx(r,e,t,n){let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function ox(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;)s+="=";return s}function Qe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ks({prefix:e,name:r,encode(o){return ox(o,n,t)},decode(o){return nx(o,n,t,r)}})}var sx=ro({prefix:"9",name:"base10",alphabet:"0123456789"});var zf={};pe(zf,{base16:()=>ix,base16upper:()=>ax});var ix=Qe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),ax=Qe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Yf={};pe(Yf,{base2:()=>cx});var cx=Qe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Xf={};pe(Xf,{base256emoji:()=>hx});var L4=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}"),lx=L4.reduce((r,e,t)=>(r[t]=e,r),[]),ux=L4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function dx(r){return r.reduce((e,t)=>(e+=lx[t],e),"")}function fx(r){let e=[];for(let t of r){let n=ux[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var hx=Ks({prefix:"\u{1F680}",name:"base256emoji",encode:dx,decode:fx});var Qf={};pe(Qf,{base32:()=>lt,base32hex:()=>gx,base32hexpad:()=>wx,base32hexpadupper:()=>Ex,base32hexupper:()=>yx,base32pad:()=>px,base32padupper:()=>mx,base32upper:()=>O4,base32z:()=>bx});var lt=Qe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),O4=Qe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),px=Qe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),mx=Qe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),gx=Qe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),yx=Qe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),wx=Qe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ex=Qe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),bx=Qe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var jf={};pe(jf,{base36:()=>no,base36upper:()=>xx});var no=ro({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),xx=ro({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Zf={};pe(Zf,{base58btc:()=>ze,base58flickr:()=>vx});var ze=ro({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),vx=ro({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var eh={};pe(eh,{base64:()=>ot,base64pad:()=>Sx,base64url:()=>Jf,base64urlpad:()=>Rx});var ot=Qe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Sx=Qe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Jf=Qe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Rx=Qe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var th={};pe(th,{base8:()=>_x});var _x=Qe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var rh={};pe(rh,{identity:()=>Ax});var Ax=Ks({prefix:"\0",name:"identity",encode:r=>k4(r),decode:r=>T4(r)});var cL=new TextEncoder,lL=new TextDecoder;var B4=512;var qc=85;var ih={};pe(ih,{identity:()=>$t});var mr={};pe(mr,{Digest:()=>Xo,create:()=>Lr,decode:()=>Or,equals:()=>sh});var Ix=V4,U4=128,Dx=127,Tx=~Dx,kx=Math.pow(2,31);function V4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=kx;)e[t++]=r&255|U4,r/=128;for(;r&Tx;)e[t++]=r&255|U4,r>>>=7;return e[t]=r|0,V4.bytes=t-n+1,e}var Cx=oh,Nx=128,F4=127;function oh(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw oh.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&F4)<<o:(i&F4)*Math.pow(2,o),o+=7}while(i>=Nx);return oh.bytes=s-n,t}var Px=Math.pow(2,7),Lx=Math.pow(2,14),Ox=Math.pow(2,21),Bx=Math.pow(2,28),Mx=Math.pow(2,35),Ux=Math.pow(2,42),Fx=Math.pow(2,49),Vx=Math.pow(2,56),Kx=Math.pow(2,63),$x=function(r){return r<Px?1:r<Lx?2:r<Ox?3:r<Bx?4:r<Mx?5:r<Ux?6:r<Fx?7:r<Vx?8:r<Kx?9:10},Hx={encode:Ix,decode:Cx,encodingLength:$x},qx=Hx,da=qx;function fa(r,e=0){return[da.decode(r,e),da.decode.bytes]}function $s(r,e,t=0){return da.encode(r,e,t),e}function Hs(r){return da.encodingLength(r)}function Lr(r,e){let t=e.byteLength,n=Hs(r),o=n+Hs(t),s=new Uint8Array(o+t);return $s(r,s,0),$s(t,s,n),s.set(e,o),new Xo(r,t,e,s)}function Or(r){let e=En(r),[t,n]=fa(e),[o,s]=fa(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Xo(t,o,i,e)}function sh(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&D4(r.bytes,t.bytes)}}var Xo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var K4=0,Gx="identity",$4=En;function Wx(r){return Lr(K4,$4(r))}var $t={code:K4,name:Gx,encode:$4,digest:Wx};var uh={};pe(uh,{sha256:()=>Ce,sha512:()=>lh});function ch({name:r,code:e,encode:t}){return new ah(r,e,t)}var ah=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Lr(this.code,t):t.then(n=>Lr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function q4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Ce=ch({name:"sha2-256",code:18,encode:q4("SHA-256")}),lh=ch({name:"sha2-512",code:19,encode:q4("SHA-512")});function G4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Yx(t,dh(r),e??ze.encoder);default:return Xx(t,dh(r),e??lt.encoder)}}var W4=new WeakMap;function dh(r){let e=W4.get(r);if(e==null){let t=new Map;return W4.set(r,t),t}return e}var le=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!==ha)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Qx)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=Lr(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&&sh(e.multihash,n.multihash)}toString(e){return G4(this,e)}toJSON(){return{"/":G4(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??z4(n,o,s.bytes))}else if(t[jx]===!0){let{version:n,multihash:o,code:s}=t,i=Or(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!==ha)throw new Error(`Version 0 CID must use dag-pb (code: ${ha}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=z4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,ha,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=En(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 Xo(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,h]=fa(e.subarray(t));return t+=h,u},o=n(),s=ha;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]=zx(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 dh(s).set(n,e),s}};function zx(r,e){switch(r[0]){case"Q":{let t=e??ze;return[ze.prefix,t.decode(`${ze.prefix}${r}`)]}case ze.prefix:{let t=e??ze;return[ze.prefix,t.decode(r)]}case lt.prefix:{let t=e??lt;return[lt.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Yx(r,e,t){let{prefix:n}=t;if(n!==ze.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 Xx(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 ha=112,Qx=18;function z4(r,e,t){let n=Hs(r),o=n+Hs(e),s=new Uint8Array(o+t.byteLength);return $s(r,s,0),$s(e,s,n),s.set(t,o),s}var jx=Symbol.for("@ipld/js-cid/CID");var gr={...rh,...Yf,...th,...Wf,...zf,...Qf,...jf,...Zf,...eh,...Xf},kL={...uh,...ih};function X4(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Y4=X4("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),fh=X4("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=We(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),Zx={utf8:Y4,"utf-8":Y4,hex:gr.base16,latin1:fh,ascii:fh,binary:fh,...gr},Wc=Zx;function M(r,e="utf8"){let t=Wc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function hh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return We(i);o+i>e&&(n=We(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var Qo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function ph(){}var gh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Jx=hh();function ev(r){return globalThis.Buffer!=null?We(r):Jx(r)}var ma=class{len;head;tail;states;constructor(){this.len=0,this.head=new Qo(ph,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Qo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new yh((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(zc,10,Qt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Qt.fromBigInt(e);return this._push(zc,t.length(),t)}uint64Number(e){return this._push(Pf,Re(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=Qt.fromBigInt(e).zzEncode();return this._push(zc,t.length(),t)}sint64Number(e){let t=Qt.fromNumber(e).zzEncode();return this._push(zc,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(mh,1,e?1:0)}fixed32(e){return this._push(pa,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Qt.fromBigInt(e);return this._push(pa,4,t.lo)._push(pa,4,t.hi)}fixed64Number(e){let t=Qt.fromNumber(e);return this._push(pa,4,t.lo)._push(pa,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(b4,4,e)}double(e){return this._push(v4,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(mh,1,0):this.uint32(t)._push(rv,t,e)}string(e){let t=_4(e);return t!==0?this.uint32(t)._push(Ff,t,e):this._push(mh,1,0)}fork(){return this.states=new gh(this),this.head=this.tail=new Qo(ph,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 Qo(ph,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=ev(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function mh(r,e,t){e[t]=r&255}function tv(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var yh=class extends Qo{next;constructor(e,t){super(tv,e,t),this.next=void 0}};function zc(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 pa(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 rv(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ma.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(nv,e,r),this},ma.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(ov,e,r),this});function nv(r,e,t){e.set(r,t)}function ov(r,e,t){r.length<40?Ff(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(M(r),t)}function wh(){return new ma}function te(r,e){let t=wh();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var qs;(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"})(qs||(qs={}));function Yc(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function $e(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 Yc("enum",qs.VARINT,t,n)}function re(r,e){return Yc("message",qs.LENGTH_DELIMITED,r,e)}var bn=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var tt;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(tt||(tt={}));var Eh;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(Eh||(Eh={}));(function(r){r.codec=()=>$e(Eh)})(tt||(tt={}));var Gs;(function(r){let e;r.codec=()=>(e==null&&(e=re((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),tt.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=tt.codec().decode(t);break}case 5:{s.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(Gs||(Gs={}));var Xc;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let s of t.entries)n.uint32(10),Gs.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 bn('decode error - map field "entries" had too many elements',"ERR_MAX_LENGTH");s.entries.push(Gs.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=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(Xc||(Xc={}));var Ws;(function(r){let e;r.codec=()=>(e==null&&(e=re((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=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(Ws||(Ws={}));var yr;(function(r){r.HaveBlock="HaveBlock",r.DontHaveBlock="DontHaveBlock"})(yr||(yr={}));var Qc;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DontHaveBlock=1]="DontHaveBlock"})(Qc||(Qc={}));(function(r){r.codec=()=>$e(Qc)})(yr||(yr={}));var zs;(function(r){let e;r.codec=()=>(e==null&&(e=re((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&&Qc[t.type]!==0&&(n.uint32(16),yr.codec().encode(t.type,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:Ae(0),type:yr.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=yr.codec().decode(t);break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(zs||(zs={}));var jo;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),Xc.codec().encode(t.wantlist,n)),t.blocks!=null)for(let s of t.blocks)n.uint32(26),Ws.codec().encode(s,n);if(t.blockPresences!=null)for(let s of t.blockPresences)n.uint32(34),zs.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=Xc.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 bn('decode error - map field "blocks" had too many elements',"ERR_MAX_LENGTH");s.blocks.push(Ws.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 bn('decode error - map field "blockPresences" had too many elements',"ERR_MAX_LENGTH");s.blockPresences.push(zs.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=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(jo||(jo={}));function Q4(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 sv=4193648,iv=sv+16;function*j4(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=jo.encode(l).byteLength,{added:u,hasMore:h,newSize:f}=bh(o,l.blocks,a,e,d,av);a+=u,d=f;let p=h;({added:u,hasMore:h,newSize:f}=bh(n,l.blockPresences,i,e,d,cv)),i+=u,d=f;let m=h;if({added:u,hasMore:h,newSize:f}=bh(t,l.wantlist.entries,s,e,d,lv),s+=u,d=f,c=!p&&!m&&!h,c||(l.wantlist.full=!1),yield jo.encode(l),c)break}}function bh(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>iv)throw new g("Cannot send block as after encoding it is over the max message size","ERR_BLOCK_TOO_LARGE");let u=o+d;if(u>n){a=!0;break}e.push(l),i++,o=u}return{hasMore:a,added:i,newSize:o}}function av(r){return xh(3,Ws.encode(r))}function cv(r){return xh(4,zs.encode(r))}function lv(r){return xh(1,Gs.encode(r))}function xh(r,e){let t=Re(r),n=Re(e.byteLength);return t+n+e.byteLength}var jc=class extends ye{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnTransientConnections;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??[ua],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.runOnTransientConnections=t.runOnTransientConnections??!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 fr({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnections});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){if(!this.running)return;let{stream:t,connection:n}=e;Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",t.protocol,n.remotePeer);let o=()=>{t.status==="open"?t.abort(new g(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`,"ERR_TIMEOUT")):this.log("stream aborted with status %s",t.status)},s=AbortSignal.timeout(this.messageReceiveTimeout);j(1/0,s),s.addEventListener("abort",o),await t.closeWrite(),await Xe(t,i=>Kt(i,{maxDataLength:this.maxIncomingMessageSize}),async i=>{for await(let a of i)try{let c=jo.decode(a);this.log("incoming new bitswap %s message from %p on stream",t.protocol,n.remotePeer,t.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:c}}),s.removeEventListener("abort",o),s=AbortSignal.timeout(this.messageReceiveTimeout),j(1/0,s),s.addEventListener("abort",o)}catch(c){this.log.error("error reading incoming bitswap message from %p on stream",n.remotePeer,t.id,c),t.abort(c);break}})}).catch(o=>{this.log.error("error handling incoming stream from %p",n.remotePeer,o),t.abort(o)})}async*findProviders(e,t){t?.onProgress?.(new me("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnTransientConnection:this.runOnTransientConnections})&&(yield n)}async findAndConnect(e,t){await hr(pr(eo(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=Q4(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 g("No message to send","ERR_NO_MESSAGE");this.log("sendMessage to %p",e),s?.onProgress?.(new me("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,ua,s);await a.closeRead();try{await Xe(j4(i,this.maxOutgoingMessageSize),c=>Vt(c),a),await a.close(s)}catch(c){s?.onProgress?.(new me("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p",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 g("Network isn't running","ERR_NOT_STARTED");t?.onProgress?.(new me("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),Cr(this.libp2p,"peer:identify",t?.signal,{filter:o=>{if(!o.detail.peerId.equals(e))return!1;if(o.detail.protocols.includes(ua))return!0;throw new g(`${e} did not support ${ua}`,"ERR_BITSWAP_UNSUPPORTED_BY_PEER")}})]);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 wv=Symbol.for("nodejs.util.inspect.custom"),Z4=Object.values(gr).map(r=>r.decoder).reduce((r,e)=>r.or(e),gr.identity.decoder),J4=114,vh=36,Sh=37,ga=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[la]=!0;toString(){return this.string==null&&(this.string=ze.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return le.createV1(J4,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return ge(e).equals(this);if(e?.multihash?.bytes!=null)return Z(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[wv](){return`PeerId(${this.toString()})`}},Zo=class extends ga{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Jo=class extends ga{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},es=class extends ga{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function e8(r){if(r.type==="RSA")return new Zo(r);if(r.type==="Ed25519")return new Jo(r);if(r.type==="secp256k1")return new es(r);throw new g("Not a PeerId","ERR_INVALID_PARAMETERS")}function ge(r,e){if(e=e??Z4,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Or(ze.decode(`z${r}`));return r.startsWith("12D")?new Jo({multihash:t}):r.startsWith("16U")?new es({multihash:t}):new Zo({multihash:t})}return je(Z4.decode(r))}function je(r){try{let e=Or(r);if(e.code===$t.code){if(e.digest.length===vh)return new Jo({multihash:e});if(e.digest.length===Sh)return new es({multihash:e})}if(e.code===Ce.code)return new Zo({multihash:e})}catch{return Ev(le.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function Ev(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==J4)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Ce.code)return new Zo({multihash:r.multihash});if(e.code===$t.code){if(e.digest.length===vh)return new Jo({multihash:r.multihash});if(e.digest.length===Sh)return new es({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ft(r,e){return r.length===vh?new Jo({multihash:Lr($t.code,r),privateKey:e}):r.length===Sh?new es({multihash:Lr($t.code,r),privateKey:e}):new Zo({multihash:await Ce.digest(r),publicKey:r,privateKey:e})}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}var st=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),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=>[ge(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,ge(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return Ys(this.map.keys(),e=>ge(e))}values(){return this.map.values()}get size(){return this.map.size}};var ht=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=ge(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ge(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ys(this.set.values(),e=>ge(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}};var Rh=class extends st{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 ya(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Rh({name:e,metrics:t}):n=new st,n}function O(r,e="utf8"){let t=Wc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var xn=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=ot.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=ot.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=ot.encode(e.multihash.bytes);this.blocks.set(n,t)}};function xv(r){let e=new Uint8Array(r.reduce((n,o)=>n+Re(o),0)),t=0;for(let n of r)e=Ke(n,e,t),t+=Re(n);return e}var t8=xv;function _h(r){return t8([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var Zc=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;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}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)}async sendBlocksToPeer(e){let t=new xn,n=new Set;for(let[o,s]of this.wants.entries())try{let i=await this.blockstore.get(s.cid,e);s.wantType===tt.WantHave?i.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",s.cid),n.add(o),t.addBlock(s.cid,{data:i,prefix:_h(s.cid)})):(this.log("sending have for %c",s.cid),t.addBlockPresence(s.cid,{cid:s.cid.bytes,type:yr.HaveBlock})):(this.log("sending block for %c",s.cid),n.add(o),t.addBlock(s.cid,{data:i,prefix:_h(s.cid)}))}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i;if(this.log("do not have block for %c",s.cid),!s.sendDontHave||s.sentDontHave===!0)continue;s.sentDontHave=!0,t.addBlockPresence(s.cid,{cid:s.cid.bytes,type:yr.DontHaveBlock})}if(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((o,s)=>o+s.data.byteLength,0));for(let o of n)this.wants.delete(o)}}};var Jc=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=ya({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",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.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new Zc({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((o,s)=>o+s.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let o of t.wantlist.entries){let s=le.decode(o.cid),i=O(s.multihash.bytes,"base64");o.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,s),n.wants.delete(i)):(o.wantType===tt.WantHave?this.log("peer %p wanted block presence for %c",e,s):this.log("peer %p wanted block for %c",e,s),n.wants.set(i,{cid:s,priority:o.priority,wantType:o.wantType??tt.WantBlock,sendDontHave:o.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=O(e.multihash.bytes,"base64"),o=[];for(let s of this.ledgerMap.values())s.wants.has(n)&&o.push(s);await Promise.all(o.map(async s=>s.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var Zt=Ye(i8(),1);Zt.default.formatters.b=r=>r==null?"undefined":ze.baseEncode(r);Zt.default.formatters.t=r=>r==null?"undefined":lt.baseEncode(r);Zt.default.formatters.m=r=>r==null?"undefined":ot.baseEncode(r);Zt.default.formatters.p=r=>r==null?"undefined":r.toString();Zt.default.formatters.c=r=>r==null?"undefined":r.toString();Zt.default.formatters.k=r=>r==null?"undefined":r.toString();Zt.default.formatters.a=r=>r==null?"undefined":r.toString();function Lv(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 oo(){return{forComponent(r){return Jt(r)}}}function Jt(r){let e=Lv(`${r}:trace`);return Zt.default.enabled(`${r}:trace`)&&Zt.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,Zt.default)(`${r}:trace`)),Object.assign((0,Zt.default)(r),{error:(0,Zt.default)(`${r}:error`),trace:e})}var Ih=Ye(c8(),1);var so=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Dh=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},l8=r=>globalThis.DOMException===void 0?new Dh(r):new DOMException(r),u8=r=>{let e=r.reason===void 0?l8("This operation was aborted."):r.reason;return e instanceof Error?e:l8(e)};function Br(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&d(u8(h)),h.addEventListener("abort",()=>{d(u8(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,d);return}let u=new so;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){d(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?d(o):(u.message=o??`Promise timed out after ${t} milliseconds`,d(u))},t),(async()=>{try{l(await r)}catch(h){d(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function Th(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 Ea=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=Th(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}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 Ht=class extends Ih.default{#e;#t;#r=0;#o;#a;#l=0;#s;#u;#n;#m;#i=0;#d;#c;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Ea,...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})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#o=e.intervalCap,this.#a=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#c=e.autoStart===!1}get#E(){return this.#t||this.#r<this.#o}get#b(){return this.#i<this.#d}#x(){this.#i--,this.#f(),this.emit("next")}#v(){this.#w(),this.#y(),this.#u=void 0}get#S(){let e=Date.now();if(this.#s===void 0){let t=this.#l-e;if(t<0)this.#r=this.#e?this.#i:0;else return this.#u===void 0&&(this.#u=setTimeout(()=>{this.#v()},t)),!0}return!1}#f(){if(this.#n.size===0)return this.#s&&clearInterval(this.#s),this.#s=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#c){let e=!this.#S;if(this.#E&&this.#b){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#s!==void 0||(this.#s=setInterval(()=>{this.#w()},this.#a),this.#l=Date.now()+this.#a)}#w(){this.#r===0&&this.#i===0&&this.#s&&(clearInterval(this.#s),this.#s=void 0),this.#r=this.#e?this.#i:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#d}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.#d=e,this.#h()}async#R(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#i++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=Br(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#R(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof so&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#c?(this.#c=!1,this.#h(),this):this}pause(){this.#c=!0}clear(){this.#n=new this.#m}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.#i===0&&this.#n.size===0||await this.#p("idle")}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.#i}get isPaused(){return this.#c}};function nl(r){let e=[er.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var kh=60;function ol(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:er[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:er[e.type],TTL:e.TTL??e.ttl??kh,data:e.data instanceof Uint8Array?O(e.data):e.data}))}}var Mv=4;function Ch(r,e={}){let t=new Ht({concurrency:e.queryConcurrency??Mv});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),nl(o.types).forEach(a=>{s.append("type",er[a])}),o.onProgress?.(new me("dns:query",{detail:n}));let i=await t.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=ol(await a.json());return o.onProgress?.(new me("dns:response",{detail:c})),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function d8(){return[Ch("https://cloudflare-dns.com/dns-query"),Ch("https://dns.google/resolve")]}var h8=Ye(Nh(),1);var Ph=class{lru;constructor(e){this.lru=(0,h8.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 ol({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:er[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??kh)*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 p8(r){return new Ph(r)}var Uv=1e3,sl=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=p8(e.cacheSize??Uv),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["."]=d8())}async query(e,t={}){let n=nl(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new me("dns:cache",{detail: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,types:n});for(let d of l.Answer)this.cache.add(e,d);return l}catch(l){a.push(l),t.onProgress?.(new me("dns:error",{detail:l}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var er;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(er||(er={}));function il(r={}){return new sl(r)}var Fv=["string","number","bigint","symbol"],Vv=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function m8(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(Fv.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(Kv(r))return"Buffer";let t=$v(r);return t||"Object"}function Kv(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function $v(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(Vv.includes(e))return e}var _=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}};_.uint=new _(0,"uint",!0);_.negint=new _(1,"negint",!0);_.bytes=new _(2,"bytes",!0);_.string=new _(3,"string",!0);_.array=new _(4,"array",!1);_.map=new _(5,"map",!1);_.tag=new _(6,"tag",!1);_.float=new _(7,"float",!0);_.false=new _(7,"false",!0);_.true=new _(7,"true",!0);_.null=new _(7,"null",!0);_.undefined=new _(7,"undefined",!0);_.break=new _(7,"break",!0);var F=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 Zs=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",Hv=new TextDecoder,qv=new TextEncoder;function al(r){return Zs&&globalThis.Buffer.isBuffer(r)}function ba(r){return r instanceof Uint8Array?al(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var E8=Zs?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):y8(r,e,t):(r,e,t)=>t-e>64?Hv.decode(r.subarray(e,t)):y8(r,e,t),cl=Zs?r=>r.length>64?globalThis.Buffer.from(r):g8(r):r=>r.length>64?qv.encode(r):g8(r),sn=r=>Uint8Array.from(r),Js=Zs?(r,e,t)=>al(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),b8=Zs?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),ba(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},x8=Zs?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function v8(r,e){if(al(r)&&al(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 g8(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):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function y8(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,d;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(d=(o&31)<<6|a&63,d>127&&(s=d));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(d=(o&15)<<12|(a&63)<<6|c&63,d>2047&&(d<55296||d>57343)&&(s=d));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(d=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,d>65535&&d<1114112&&(s=d))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return Lh(n)}var w8=4096;function Lh(r){let e=r.length;if(e<=w8)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=w8));return t}var Gv=256,xa=class{constructor(e=Gv){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=x8(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=Js(n,0,this.cursor)}else t=b8(this.chunks,this.cursor);return e&&this.reset(),t}};var X="CBOR decode error:",ei="CBOR encode error:",va=[];va[23]=1;va[24]=2;va[25]=3;va[26]=5;va[27]=9;function vn(r,e,t){if(r.length-e<t)throw new Error(`${X} not enough data for type`)}var pt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function tr(r,e,t){vn(r,e,1);let n=r[e];if(t.strict===!0&&n<pt[0])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function rr(r,e,t){vn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<pt[1])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function nr(r,e,t){vn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<pt[2])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function or(r,e,t){vn(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<pt[3])throw new Error(`${X} 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(`${X} integers outside of the safe integer range are not supported`)}function S8(r,e,t,n){return new F(_.uint,tr(r,e+1,n),2)}function R8(r,e,t,n){return new F(_.uint,rr(r,e+1,n),3)}function _8(r,e,t,n){return new F(_.uint,nr(r,e+1,n),5)}function A8(r,e,t,n){return new F(_.uint,or(r,e+1,n),9)}function wr(r,e){return Et(r,0,e.value)}function Et(r,e,t){if(t<pt[0]){let n=Number(t);r.push([e|n])}else if(t<pt[1]){let n=Number(t);r.push([e|24,n])}else if(t<pt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<pt[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<pt[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(`${X} encountered BigInt larger than allowable range`)}}wr.encodedSize=function(e){return Et.encodedSize(e.value)};Et.encodedSize=function(e){return e<pt[0]?1:e<pt[1]?2:e<pt[2]?3:e<pt[3]?5:9};wr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function I8(r,e,t,n){return new F(_.negint,-1-tr(r,e+1,n),2)}function D8(r,e,t,n){return new F(_.negint,-1-rr(r,e+1,n),3)}function T8(r,e,t,n){return new F(_.negint,-1-nr(r,e+1,n),5)}var Oh=BigInt(-1),k8=BigInt(1);function C8(r,e,t,n){let o=or(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new F(_.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${X} integers outside of the safe integer range are not supported`);return new F(_.negint,Oh-BigInt(o),9)}function ll(r,e){let t=e.value,n=typeof t=="bigint"?t*Oh-k8:t*-1-1;Et(r,e.type.majorEncoded,n)}ll.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*Oh-k8:t*-1-1;return n<pt[0]?1:n<pt[1]?2:n<pt[2]?3:n<pt[3]?5:9};ll.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Sa(r,e,t,n){vn(r,e,t+n);let o=Js(r,e+t,e+t+n);return new F(_.bytes,o,t+n)}function N8(r,e,t,n){return Sa(r,e,1,t)}function P8(r,e,t,n){return Sa(r,e,2,tr(r,e+1,n))}function L8(r,e,t,n){return Sa(r,e,3,rr(r,e+1,n))}function O8(r,e,t,n){return Sa(r,e,5,nr(r,e+1,n))}function B8(r,e,t,n){let o=or(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer bytes lengths not supported`);return Sa(r,e,9,o)}function ul(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===_.string?cl(r.value):r.value),r.encodedBytes}function ti(r,e){let t=ul(e);Et(r,e.type.majorEncoded,t.length),r.push(t)}ti.encodedSize=function(e){let t=ul(e);return Et.encodedSize(t.length)+t.length};ti.compareTokens=function(e,t){return zv(ul(e),ul(t))};function zv(r,e){return r.length<e.length?-1:r.length>e.length?1:v8(r,e)}function Ra(r,e,t,n,o){let s=t+n;vn(r,e,s);let i=new F(_.string,E8(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=Js(r,e+t,e+s)),i}function M8(r,e,t,n){return Ra(r,e,1,t,n)}function U8(r,e,t,n){return Ra(r,e,2,tr(r,e+1,n),n)}function F8(r,e,t,n){return Ra(r,e,3,rr(r,e+1,n),n)}function V8(r,e,t,n){return Ra(r,e,5,nr(r,e+1,n),n)}function K8(r,e,t,n){let o=or(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer string lengths not supported`);return Ra(r,e,9,o,n)}var $8=ti;function ri(r,e,t,n){return new F(_.array,n,t)}function H8(r,e,t,n){return ri(r,e,1,t)}function q8(r,e,t,n){return ri(r,e,2,tr(r,e+1,n))}function G8(r,e,t,n){return ri(r,e,3,rr(r,e+1,n))}function W8(r,e,t,n){return ri(r,e,5,nr(r,e+1,n))}function z8(r,e,t,n){let o=or(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer array lengths not supported`);return ri(r,e,9,o)}function Y8(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return ri(r,e,1,1/0)}function dl(r,e){Et(r,_.array.majorEncoded,e.value)}dl.compareTokens=wr.compareTokens;dl.encodedSize=function(e){return Et.encodedSize(e.value)};function ni(r,e,t,n){return new F(_.map,n,t)}function X8(r,e,t,n){return ni(r,e,1,t)}function Q8(r,e,t,n){return ni(r,e,2,tr(r,e+1,n))}function j8(r,e,t,n){return ni(r,e,3,rr(r,e+1,n))}function Z8(r,e,t,n){return ni(r,e,5,nr(r,e+1,n))}function J8(r,e,t,n){let o=or(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer map lengths not supported`);return ni(r,e,9,o)}function em(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return ni(r,e,1,1/0)}function fl(r,e){Et(r,_.map.majorEncoded,e.value)}fl.compareTokens=wr.compareTokens;fl.encodedSize=function(e){return Et.encodedSize(e.value)};function tm(r,e,t,n){return new F(_.tag,t,1)}function rm(r,e,t,n){return new F(_.tag,tr(r,e+1,n),2)}function nm(r,e,t,n){return new F(_.tag,rr(r,e+1,n),3)}function om(r,e,t,n){return new F(_.tag,nr(r,e+1,n),5)}function sm(r,e,t,n){return new F(_.tag,or(r,e+1,n),9)}function hl(r,e){Et(r,_.tag.majorEncoded,e.value)}hl.compareTokens=wr.compareTokens;hl.encodedSize=function(e){return Et.encodedSize(e.value)};var Jv=20,eS=21,tS=22,rS=23;function im(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${X} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new F(_.null,null,1):new F(_.undefined,void 0,1)}function am(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return new F(_.break,void 0,1)}function Bh(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${X} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${X} Infinity values are not supported`)}return new F(_.float,r,e)}function cm(r,e,t,n){return Bh(Mh(r,e+1),3,n)}function lm(r,e,t,n){return Bh(Uh(r,e+1),5,n)}function um(r,e,t,n){return Bh(pm(r,e+1),9,n)}function pl(r,e,t){let n=e.value;if(n===!1)r.push([_.float.majorEncoded|Jv]);else if(n===!0)r.push([_.float.majorEncoded|eS]);else if(n===null)r.push([_.float.majorEncoded|tS]);else if(n===void 0)r.push([_.float.majorEncoded|rS]);else{let o,s=!1;(!t||t.float64!==!0)&&(fm(n),o=Mh(Mr,1),n===o||Number.isNaN(n)?(Mr[0]=249,r.push(Mr.slice(0,3)),s=!0):(hm(n),o=Uh(Mr,1),n===o&&(Mr[0]=250,r.push(Mr.slice(0,5)),s=!0))),s||(nS(n),o=pm(Mr,1),Mr[0]=251,r.push(Mr.slice(0,9)))}}pl.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){fm(n);let o=Mh(Mr,1);if(n===o||Number.isNaN(n))return 3;if(hm(n),o=Uh(Mr,1),n===o)return 5}return 9};var dm=new ArrayBuffer(9),Er=new DataView(dm,1),Mr=new Uint8Array(dm,0);function fm(r){if(r===1/0)Er.setUint16(0,31744,!1);else if(r===-1/0)Er.setUint16(0,64512,!1);else if(Number.isNaN(r))Er.setUint16(0,32256,!1);else{Er.setFloat32(0,r);let e=Er.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Er.setUint16(0,31744,!1);else if(t===0)Er.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?Er.setUint16(0,0):o<-14?Er.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):Er.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function Mh(r,e){if(r.length-e<2)throw new Error(`${X} 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 hm(r){Er.setFloat32(0,r,!1)}function Uh(r,e){if(r.length-e<4)throw new Error(`${X} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function nS(r){Er.setFloat64(0,r,!1)}function pm(r,e){if(r.length-e<8)throw new Error(`${X} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}pl.compareTokens=wr.compareTokens;function _e(r,e,t){throw new Error(`${X} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function ml(r){return()=>{throw new Error(`${X} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=_e;K[24]=S8;K[25]=R8;K[26]=_8;K[27]=A8;K[28]=_e;K[29]=_e;K[30]=_e;K[31]=_e;for(let r=32;r<=55;r++)K[r]=_e;K[56]=I8;K[57]=D8;K[58]=T8;K[59]=C8;K[60]=_e;K[61]=_e;K[62]=_e;K[63]=_e;for(let r=64;r<=87;r++)K[r]=N8;K[88]=P8;K[89]=L8;K[90]=O8;K[91]=B8;K[92]=_e;K[93]=_e;K[94]=_e;K[95]=ml("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=M8;K[120]=U8;K[121]=F8;K[122]=V8;K[123]=K8;K[124]=_e;K[125]=_e;K[126]=_e;K[127]=ml("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=H8;K[152]=q8;K[153]=G8;K[154]=W8;K[155]=z8;K[156]=_e;K[157]=_e;K[158]=_e;K[159]=Y8;for(let r=160;r<=183;r++)K[r]=X8;K[184]=Q8;K[185]=j8;K[186]=Z8;K[187]=J8;K[188]=_e;K[189]=_e;K[190]=_e;K[191]=em;for(let r=192;r<=215;r++)K[r]=tm;K[216]=rm;K[217]=nm;K[218]=om;K[219]=sm;K[220]=_e;K[221]=_e;K[222]=_e;K[223]=_e;for(let r=224;r<=243;r++)K[r]=ml("simple values are not supported");K[244]=_e;K[245]=_e;K[246]=_e;K[247]=im;K[248]=ml("simple values are not supported");K[249]=cm;K[250]=lm;K[251]=um;K[252]=_e;K[253]=_e;K[254]=_e;K[255]=am;var Ur=[];for(let r=0;r<24;r++)Ur[r]=new F(_.uint,r,1);for(let r=-1;r>=-24;r--)Ur[31-r]=new F(_.negint,r,1);Ur[64]=new F(_.bytes,new Uint8Array(0),1);Ur[96]=new F(_.string,"",1);Ur[128]=new F(_.array,0,1);Ur[160]=new F(_.map,0,1);Ur[244]=new F(_.false,!1,1);Ur[245]=new F(_.true,!0,1);Ur[246]=new F(_.null,null,1);function mm(r){switch(r.type){case _.false:return sn([244]);case _.true:return sn([245]);case _.null:return sn([246]);case _.bytes:return r.value.length?void 0:sn([64]);case _.string:return r.value===""?sn([96]):void 0;case _.array:return r.value===0?sn([128]):void 0;case _.map:return r.value===0?sn([160]):void 0;case _.uint:return r.value<24?sn([Number(r.value)]):void 0;case _.negint:if(r.value>=-24)return sn([31-Number(r.value)])}}var sS={float64:!1,mapSorter:cS,quickEncodeToken:mm};function iS(){let r=[];return r[_.uint.major]=wr,r[_.negint.major]=ll,r[_.bytes.major]=ti,r[_.string.major]=$8,r[_.array.major]=dl,r[_.map.major]=fl,r[_.tag.major]=hl,r[_.float.major]=pl,r}var gm=iS(),Fh=new xa,yl=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(`${ei} object contains circular references`);return new r(t,e)}},io={null:new F(_.null,null),undefined:new F(_.undefined,void 0),true:new F(_.true,!0),false:new F(_.false,!1),emptyArray:new F(_.array,0),emptyMap:new F(_.map,0)},ao={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new F(_.float,r):r>=0?new F(_.uint,r):new F(_.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new F(_.uint,r):new F(_.negint,r)},Uint8Array(r,e,t,n){return new F(_.bytes,r)},string(r,e,t,n){return new F(_.string,r)},boolean(r,e,t,n){return r?io.true:io.false},null(r,e,t,n){return io.null},undefined(r,e,t,n){return io.undefined},ArrayBuffer(r,e,t,n){return new F(_.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new F(_.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[io.emptyArray,new F(_.break)]:io.emptyArray;n=yl.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=gl(i,t,n);return t.addBreakTokens?[new F(_.array,r.length),o,new F(_.break)]:[new F(_.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;if(!i)return t.addBreakTokens===!0?[io.emptyMap,new F(_.break)]:io.emptyMap;n=yl.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[gl(l,t,n),gl(o?r.get(l):r[l],t,n)];return aS(a,t),t.addBreakTokens?[new F(_.map,i),a,new F(_.break)]:[new F(_.map,i),a]}};ao.Map=ao.Object;ao.Buffer=ao.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))ao[`${r}Array`]=ao.DataView;function gl(r,e={},t){let n=m8(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||ao[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=ao[n];if(!s)throw new Error(`${ei} unsupported type: ${n}`);return s(r,n,e,t)}function aS(r,e){e.mapSorter&&r.sort(e.mapSorter)}function cS(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=gm[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function ym(r,e,t,n){if(Array.isArray(e))for(let o of e)ym(r,o,t,n);else t[e.type.major](r,e,n)}function wm(r,e,t){let n=gl(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new xa(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return ba(a.chunks[0])}}return Fh.reset(),ym(Fh,n,e,t),Fh.toBytes(!0)}function oi(r,e){return e=Object.assign({},sS,e),wm(r,gm,e)}var lS={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},wl=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=Ur[e];if(t===void 0){let n=K[e];if(!n)throw new Error(`${X} 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}},_a=Symbol.for("DONE"),El=Symbol.for("BREAK");function uS(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=si(e,t);if(s===El){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed array`)}if(s===_a)throw new Error(`${X} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function dS(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=si(e,t);if(a===El){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed map`)}if(a===_a)throw new Error(`${X} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${X} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${X} found repeat map key "${a}"`);let c=si(e,t);if(c===_a)throw new Error(`${X} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function si(r,e){if(r.done())return _a;let t=r.next();if(t.type===_.break)return El;if(t.type.terminal)return t.value;if(t.type===_.array)return uS(t,r,e);if(t.type===_.map)return dS(t,r,e);if(t.type===_.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=si(r,e);return e.tags[t.value](n)}throw new Error(`${X} tag not supported (${t.value})`)}throw new Error("unsupported")}function Vh(r,e){if(!(r instanceof Uint8Array))throw new Error(`${X} data to decode must be a Uint8Array`);e=Object.assign({},lS,e);let t=e.tokenizer||new wl(r,e),n=si(t,e);if(n===_a)throw new Error(`${X} did not find any content to decode`);if(n===El)throw new Error(`${X} got unexpected break`);return[n,r.subarray(t.pos())]}function br(r,e){let[t,n]=Vh(r,e);if(n.length>0)throw new Error(`${X} too many terminals, data makes no sense`);return t}var Sn="/",Em=new TextEncoder().encode(Sn),xl=Em[0],Pe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=M(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]!==xl)throw new Error("Invalid key")}toString(e="utf8"){return O(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Sn))}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=Em),this._buf[0]!==xl){let e=new Uint8Array(this._buf.byteLength+1);e.fill(xl,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===xl;)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(Sn).slice(1)}type(){return fS(this.baseNamespace())}name(){return hS(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Sn)||(e+=Sn),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Sn):new r(e.slice(0,-1).join(Sn))}child(e){return this.toString()===Sn?e:e.toString()===Sn?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(),...pS(e.map(t=>t.namespaces()))])}};function fS(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function hS(r){let e=r.split(":");return e[e.length-1]}function pS(r){return[].concat(...r)}var Sm="/pin/",bm="/pinned-block/",Kh=no,xm=1;function vm(r){return r.version===0&&(r=r.toV1()),new Pe(`${Sm}${r.toString(Kh)}`)}var vl=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=vm(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new Nr({concurrency:xm});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>Z(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,oi(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Pe(`${bm}${Kh.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=br(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")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,oi(s),n),n.onProgress?.(new me("helia:pin:add",e))}}async*rm(e,t={}){let n=vm(e),o=await this.datastore.get(n,t),s=br(o);await this.datastore.delete(n,t);let i=new Nr({concurrency:xm});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=>Z(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:Sm+(e.cid!=null?`${e.cid.toString(no)}`:"")},e)){let o=le.parse(t.toString().substring(5),no),s=br(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Pe(`${bm}${Kh.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};var mS=5,Sl=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??mS}async start(){await Zn(...this.routers)}async stop(){await Jn(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new fr({concurrency:this.providerLookupConcurrency});n.addEventListener("error",()=>{});for await(let o of Bt(n.toGenerator(),...ii(this.routers,"findProviders").map(s=>s.findProviders(e,t))))if(o!=null){if(o.multiaddrs.length===0){if(n.find(o.id)!=null)continue;n.add(async()=>{try{let s=await this.findPeer(o.id,t);return s.multiaddrs.length===0?null:s}catch(s){return this.log.error("could not load multiaddrs for peer %p",o.id,s),null}},{peerId:o.id,signal:t.signal}).catch(s=>{this.log.error("could not load multiaddrs for peer %p",o.id,s)})}yield o}}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(ii(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(ii(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(ii(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Bt(...ii(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 g("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");for await(let n of Bt(...ii(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function ii(r,e){return r.filter(t=>t[e]!=null)}var co={},ai=r=>{r.addEventListener("message",e=>{ai.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{ai.dispatchEvent("message",r,e)})};ai.addEventListener=(r,e)=>{co[r]==null&&(co[r]=[]),co[r].push(e)};ai.removeEventListener=(r,e)=>{co[r]!=null&&(co[r]=co[r].filter(t=>t===e))};ai.dispatchEvent=function(r,e,t){co[r]!=null&&co[r].forEach(n=>n(e,t))};var $h=ai;var Hh="lock:worker:request-read",qh="lock:worker:release-read",Gh="lock:master:grant-read",Wh="lock:worker:request-write",zh="lock:worker:release-write",Yh="lock:master:grant-write";var Rm=(r=21)=>Math.random().toString().substring(2);var _m=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=d=>{if(d==null||d.data==null)return;let u={type:d.data.type,name:d.data.name,identifier:d.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},Am=(r,e,t,n)=>async()=>{let o=Rm();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},gS={singleProcess:!1},Im=r=>{if(r=Object.assign({},gS,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return $h.addEventListener("message",_m(t,"requestReadLock",Hh,qh,Gh)),$h.addEventListener("message",_m(t,"requestWriteLock",Wh,zh,Yh)),t}return{isWorker:!0,readLock:t=>Am(t,Hh,Gh,qh),writeLock:t=>Am(t,Wh,Yh,zh)}};var ns={},lo;async function Xh(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>Br((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var yS=(r,e)=>{if(lo.isWorker===!0)return{readLock:lo.readLock(r,e),writeLock:lo.writeLock(r,e)};let t=new Ht({concurrency:1}),n;return{async readLock(){if(n!=null)return Xh(n,e);n=new Ht({concurrency:e.concurrency,autoStart:!1});let o=n,s=Xh(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,Xh(t,e)}}},wS={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function Aa(r){let e=Object.assign({},wS,r);return lo==null&&(lo=Im(e),lo.isWorker!==!0&&(lo.addEventListener("requestReadLock",t=>{ns[t.data.name]!=null&&ns[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),lo.addEventListener("requestWriteLock",async t=>{ns[t.data.name]!=null&&ns[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),ns[e.name]==null&&(ns[e.name]=yS(e.name,e)),ns[e.name]}var Rl=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=Aa({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await Zn(this.child),this.started=!0}async stop(){await Jn(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{return await 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 Error("CID was pinned");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 Error("CID was pinned");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 Tm=42;function ES(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=le.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new F(_.tag,Tm),new F(_.bytes,t)]}function bS(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function xS(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 Dm={float64:!0,typeEncoders:{Object:ES,undefined:bS,number:xS}},TU={...Dm,typeEncoders:{...Dm.typeEncoders}};function vS(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return le.decode(r.subarray(1))}var Qh={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Qh.tags[Tm]=vS;var kU={...Qh,tags:Qh.tags.slice()};var km=113;var Cm=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===_.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===_.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[_.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)}[_.negint.major](e,t){this[_.uint.major](e,t)}[_.bytes.major](e,t){throw new Error(`${ei} unsupported type: Uint8Array`)}[_.string.major](e,t){this.prefix(e);let n=cl(JSON.stringify(t.value));e.push(n.length>32?ba(n):n)}[_.array.major](e,t){this.prefix(e),this.inRecursive.push({type:_.array,elements:0}),e.push([91])}[_.map.major](e,t){this.prefix(e),this.inRecursive.push({type:_.map,elements:0}),e.push([123])}[_.tag.major](e,t){}[_.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===_.array)e.push([93]);else if(i.type===_.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(`${ei} 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)}};var os=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(`${X} 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(`${X} 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 F(_.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(`${X} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${X} 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 F(_.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new F(i>=0?_.uint:_.negint,i,this._pos-e):new F(i>=0?_.uint:_.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${X} 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 F(_.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${X} 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(`${X} 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(`${X} 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(`${X} 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(`${X} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new F(_.string,Lh(t),this._pos-e);default:if(s<32)throw new Error(`${X} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${X} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new F(_.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new F(_.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new F(_.null,null,4);case 102:return this.expect([102,97,108,115,101]),new F(_.false,!1,5);case 116:return this.expect([116,114,117,101]),new F(_.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(`${X} 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 F(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} 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 F(_.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 F(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${X} 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 F(_.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${X} 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(`${X} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function _l(r,e){return e=Object.assign({tokenizer:new os(r,e)},e),br(r,e)}var _S={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};_S.tags[42]=le.parse;var Pm=297;var zU=new TextDecoder;var YU=new TextEncoder;var IS=new TextDecoder;function jh(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 Al(r,e){let t;[t,e]=jh(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 Lm(r,e){let t;return[t,e]=jh(r,e),[t&7,t>>3,e]}function DS(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=Lm(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]=Al(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]=Al(r,n),e.Name=IS.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]=jh(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 Om(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=Lm(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]=Al(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]=Al(r,t),n.push(DS(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 QU=new TextEncoder,jU=2**32,ZU=2**31;var tF=new TextEncoder;function Bm(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Mm=112;function Um(r){let e=Bm(r),t=Om(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=le.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}var kS={codec:Mm,*walk(r){yield*Um(r).Links.map(t=>t.Hash)}},CS={codec:qc,*walk(){}},Fm=42,NS={codec:km,*walk(r){let e=[],t=[];t[Fm]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=le.decode(n.subarray(1));return e.push(o),o},br(r,{tags:t}),yield*e}},Zh=class extends os{tokenBuffer;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(e.type===_.map){let t=this._next();if(t.type===_.string&&t.value==="/"){let n=this._next();if(n.type===_.string){if(this._next().type!==_.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new F(_.tag,42,0)}if(n.type===_.map){let o=this._next();if(o.type===_.string&&o.value==="bytes"){let s=this._next();if(s.type===_.string){for(let a=0;a<2;a++)if(this._next().type!==_.break)throw new Error("Invalid encoded Bytes form");let i=ot.decode(`m${s.value}`);return new F(_.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},PS={codec:Pm,*walk(r){let e=[],t=[];t[Fm]=n=>{let o=le.parse(n);return e.push(o),o},_l(r,{tags:t,tokenizer:new Zh(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},LS={codec:B4,*walk(){}};function Vm(r=[]){let e={};return[kS,CS,NS,PS,LS,...r].forEach(t=>{e[t.codec]=t}),e}var Jh=new Pe("/version"),Km=1;async function $m(r){if(!await r.has(Jh)){await r.put(Jh,M(`${Km}`));return}let e=await r.get(Jh),t=O(e);if(parseInt(t,10)!==Km)throw new Error("Unknown datastore version, a datastore migration may be required")}function Hm(r=[]){let e={};return[Ce,lh,$t,...r].forEach(t=>{e[t.code]=t}),e}var Rn=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,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await 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 ci={};pe(ci,{abortedError:()=>FS,closeFailedError:()=>BS,deleteFailedError:()=>Gm,getFailedError:()=>MS,hasFailedError:()=>US,notFoundError:()=>Ia,openFailedError:()=>OS,putFailedError:()=>qm});var _n=Ye(Wo(),1);function OS(r){return r=r??new Error("Open failed"),(0,_n.default)(r,"ERR_OPEN_FAILED")}function BS(r){return r=r??new Error("Close failed"),(0,_n.default)(r,"ERR_CLOSE_FAILED")}function qm(r){return r=r??new Error("Put failed"),(0,_n.default)(r,"ERR_PUT_FAILED")}function MS(r){return r=r??new Error("Get failed"),(0,_n.default)(r,"ERR_GET_FAILED")}function Gm(r){return r=r??new Error("Delete failed"),(0,_n.default)(r,"ERR_DELETE_FAILED")}function US(r){return r=r??new Error("Has failed"),(0,_n.default)(r,"ERR_HAS_FAILED")}function Ia(r){return r=r??new Error("Not Found"),(0,_n.default)(r,"ERR_NOT_FOUND")}function FS(r){return r=r??new Error("Aborted"),(0,_n.default)(r,"ERR_ABORTED")}var Da=class extends Rn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(lt.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(lt.encode(e.multihash.bytes));if(t==null)throw Ia();return t}has(e){return this.data.has(lt.encode(e.multihash.bytes))}async delete(e){this.data.delete(lt.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:le.createV1(qc,Or(lt.decode(e))),block:t}}};function VS(r){return r[Symbol.asyncIterator]!=null}function KS(r,e){let t=0;if(VS(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=Vs(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 await(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 Fr=KS;var UF=Jt("blockstore:core:tiered");var Wm={...ci};var Il=0,Dl=class extends Rn{child;constructor(e){super(),this.child=e}put(e,t){return e.multihash.code===Il||this.child==null?e:this.child.put(e,t)}get(e){if(e.multihash.code===Il)return e.multihash.digest;if(this.child==null)throw Wm.notFoundError();return this.child.get(e)}has(e){return e.multihash.code===Il?!0:this.child==null?!1:this.child.has(e)}delete(e){if(e.code!==Il&&this.child!=null)return this.child.delete(e)}getAll(e){return this.child!=null?this.child.getAll(e):[]}};function $S(r){return r[Symbol.asyncIterator]!=null}function zm(r){return r?.then!=null}function HS(r,e){let t=0;if($S(r))return async function*(){for await(let c of r){let l=e(c,t++);zm(l)&&await l,yield c}}();let n=Vs(r),{value:o,done:s}=n.next();if(s===!0)return function*(){}();if(typeof e(o,t++)?.then=="function")return async function*(){yield o;for await(let c of n){let l=e(c,t++);zm(l)&&await l,yield c}}();let a=e;return function*(){yield o;for(let c of n)a(c,t++),yield c}()}var Ta=HS;var Tl=class{child;hashers;log;logger;components;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Dl(e.blockstore),this.hashers=e.hashers??{}}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new me("blocks:put:duplicate",e)),e):(n.onProgress?.(new me("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,t,n))),n.onProgress?.(new me("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Fr(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new me("blocks:put-many:duplicate",s)),!i}),o=Ta(n,async({cid:s,block:i})=>{t.onProgress?.(new me("blocks:put-many:providers:notify",s)),await Promise.all(this.components.blockBrokers.map(async a=>a.announce?.(s,i,t)))});t.onProgress?.(new me("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e,t)){t.onProgress?.(new me("blocks:get:providers:get",e));let n=await Ym(e,this.components.blockBrokers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new me("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new me("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,n,t))),n}return t.onProgress?.(new me("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new me("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(Ta(e,async n=>{if(t.offline!==!0&&!await this.child.has(n,t)){t.onProgress?.(new me("blocks:get-many:providers:get",n));let o=await Ym(n,this.components.blockBrokers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new me("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new me("blocks:get-many:providers:notify",n)),await Promise.all(this.components.blockBrokers.map(async s=>s.announce?.(n,o,t)))}}))}async delete(e,t={}){t.onProgress?.(new me("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new me("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 me("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},kl=class extends Tl{started;constructor(e){super(e),this.started=!1}isStarted(){return this.started}async start(){await Zn(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await Jn(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(o=>o.createSession==null?o:o.createSession(t));return new e0({blockstore:this.child,blockBrokers:n,hashers:this.hashers,logger:this.logger},{root:e})}},e0=class extends Tl{closeController;constructor(e,t){super(e),this.closeController=new AbortController,j(1/0,this.closeController.signal),this.log=e.logger.forComponent(`helia:session-storage${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let o=Me([this.closeController.signal,n.signal]);j(1/0,o);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async get(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{return await super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=Me([this.closeController.signal,t.signal]);j(1/0,n);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=Me([this.closeController.signal,e.signal]);j(1/0,t);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function qS(r){return typeof r.retrieve=="function"}var GS=(r,e)=>{if(e==null)throw new g(`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`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!Z(n.digest,r.multihash.digest))throw new g("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function Ym(r,e,t,n){let o=GS(r,t),s=new AbortController,i=Me([s.signal,n.signal]);j(1/0,s.signal,i);let a=[];for(let c of e)qS(c)&&a.push(c);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),l=!0}});return l||await o(d),d}catch(l){throw n.log.error("could not retrieve verified block for %c",r,l),l}}))}finally{s.abort(),i.clear()}}var Xm=1,Qm=5;var He={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var jm={SHA1:20,SHA256:32,SHA512:64};var WS={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},zS=async(r,e)=>{let t=await He.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function Zm(r,e){let t=WS[r],n=await He.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return zS(n,o)},length:jm[r]}}var Bu={};pe(Bu,{Ed25519PrivateKey:()=>Pn,Ed25519PublicKey:()=>us,MAX_RSA_KEY_SIZE:()=>hs,RsaPrivateKey:()=>So,RsaPublicKey:()=>fs,Secp256k1PrivateKey:()=>gs,Secp256k1PublicKey:()=>ms,generateEphemeralKeyPair:()=>k6,generateKeyPair:()=>qa,generateKeyPairFromSeed:()=>H_,importKey:()=>Si,keyStretcher:()=>P6,keysPBM:()=>yi,marshalPrivateKey:()=>K0,marshalPublicKey:()=>V0,supportedKeys:()=>Kn,unmarshalPrivateKey:()=>_r,unmarshalPublicKey:()=>Xr});var b0={};pe(b0,{Ed25519PrivateKey:()=>Pn,Ed25519PublicKey:()=>us,generateKeyPair:()=>t_,generateKeyPairFromSeed:()=>E0,unmarshalEd25519PrivateKey:()=>JR,unmarshalEd25519PublicKey:()=>e_});function t0(r,e){let t=M(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return t}function xr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function uo(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function XS(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function li(r,...e){if(!XS(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function ss(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");uo(r.outputLen),uo(r.blockLen)}function ui(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 Jm(r,e){li(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Cl=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var is=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Vr=(r,e)=>r<<32-e|r>>>e,Nl=(r,e)=>r<<e|r>>>32-e>>>0,wV=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var QS=async()=>{};async function e6(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 QS(),n+=s)}}function r0(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Kr(r){return typeof r=="string"&&(r=r0(r)),li(r),r}function Pl(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];li(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}var di=class{clone(){return this._cloneInto()}},jS={}.toString;function t6(r,e){if(e!==void 0&&jS.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function fi(r){let e=n=>r().update(Kr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function as(r=32){if(Cl&&typeof Cl.getRandomValues=="function")return Cl.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function ZS(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}var Ll=(r,e,t)=>r&e^~r&t,Ol=(r,e,t)=>r&e^r&t^e&t,fo=class extends di{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=is(this.buffer)}update(e){ui(this);let{view:t,buffer:n,blockLen:o}=this;e=Kr(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=is(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){ui(this),Jm(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;ZS(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=is(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should 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||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var Bl=BigInt(4294967295),n0=BigInt(32);function r6(r,e=!1){return e?{h:Number(r&Bl),l:Number(r>>n0&Bl)}:{h:Number(r>>n0&Bl)|0,l:Number(r&Bl)|0}}function JS(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=r6(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var eR=(r,e)=>BigInt(r>>>0)<<n0|BigInt(e>>>0),tR=(r,e,t)=>r>>>t,rR=(r,e,t)=>r<<32-t|e>>>t,nR=(r,e,t)=>r>>>t|e<<32-t,oR=(r,e,t)=>r<<32-t|e>>>t,sR=(r,e,t)=>r<<64-t|e>>>t-32,iR=(r,e,t)=>r>>>t-32|e<<64-t,aR=(r,e)=>e,cR=(r,e)=>r,lR=(r,e,t)=>r<<t|e>>>32-t,uR=(r,e,t)=>e<<t|r>>>32-t,dR=(r,e,t)=>e<<t-32|r>>>64-t,fR=(r,e,t)=>r<<t-32|e>>>64-t;function hR(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var pR=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),mR=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,gR=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),yR=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,wR=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),ER=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var bR={fromBig:r6,split:JS,toBig:eR,shrSH:tR,shrSL:rR,rotrSH:nR,rotrSL:oR,rotrBH:sR,rotrBL:iR,rotr32H:aR,rotr32L:cR,rotlSH:lR,rotlSL:uR,rotlBH:dR,rotlBL:fR,add:hR,add3L:pR,add3H:mR,add4L:gR,add4H:yR,add5H:ER,add5L:wR},fe=bR;var[xR,vR]=fe.split(["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))),ho=new Uint32Array(80),po=new Uint32Array(80),o0=class extends fo{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}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:h,Gh:f,Gl:p,Hh:m,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,h,f,p,m,y]}set(e,t,n,o,s,i,a,c,l,d,u,h,f,p,m,y){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=h|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=y|0}process(e,t){for(let E=0;E<16;E++,t+=4)ho[E]=e.getUint32(t),po[E]=e.getUint32(t+=4);for(let E=16;E<80;E++){let x=ho[E-15]|0,v=po[E-15]|0,I=fe.rotrSH(x,v,1)^fe.rotrSH(x,v,8)^fe.shrSH(x,v,7),R=fe.rotrSL(x,v,1)^fe.rotrSL(x,v,8)^fe.shrSL(x,v,7),S=ho[E-2]|0,T=po[E-2]|0,L=fe.rotrSH(S,T,19)^fe.rotrBH(S,T,61)^fe.shrSH(S,T,6),N=fe.rotrSL(S,T,19)^fe.rotrBL(S,T,61)^fe.shrSL(S,T,6),B=fe.add4L(R,N,po[E-7],po[E-16]),k=fe.add4H(B,I,L,ho[E-7],ho[E-16]);ho[E]=k|0,po[E]=B|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:h,Fh:f,Fl:p,Gh:m,Gl:y,Hh:w,Hl:b}=this;for(let E=0;E<80;E++){let x=fe.rotrSH(u,h,14)^fe.rotrSH(u,h,18)^fe.rotrBH(u,h,41),v=fe.rotrSL(u,h,14)^fe.rotrSL(u,h,18)^fe.rotrBL(u,h,41),I=u&f^~u&m,R=h&p^~h&y,S=fe.add5L(b,v,R,vR[E],po[E]),T=fe.add5H(S,w,x,I,xR[E],ho[E]),L=S|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),B=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),k=n&s^n&a^s&a,Y=o&i^o&c^i&c;w=m|0,b=y|0,m=f|0,y=p|0,f=u|0,p=h|0,{h:u,l:h}=fe.add(l|0,d|0,T|0,L|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let D=fe.add3L(L,B,Y);n=fe.add3H(D,T,N,k),o=D|0}({h:n,l:o}=fe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fe.add(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:h}=fe.add(this.Eh|0,this.El|0,u|0,h|0),{h:f,l:p}=fe.add(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:y}=fe.add(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:b}=fe.add(this.Hh|0,this.Hl|0,w|0,b|0),this.set(n,o,s,i,a,c,l,d,u,h,f,p,m,y,w,b)}roundClean(){ho.fill(0),po.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var mo=fi(()=>new o0);var Ul={};pe(Ul,{abytes:()=>hi,bitGet:()=>TR,bitLen:()=>DR,bitMask:()=>ka,bitSet:()=>kR,bytesToHex:()=>In,bytesToNumberBE:()=>Dn,bytesToNumberLE:()=>$r,concatBytes:()=>kn,createHmacDrbg:()=>a0,ensureBytes:()=>Ue,equalBytes:()=>AR,hexToBytes:()=>cs,hexToNumber:()=>i0,isBytes:()=>go,numberToBytesBE:()=>yo,numberToBytesLE:()=>Tn,numberToHexUnpadded:()=>i6,numberToVarBytesBE:()=>_R,utf8ToBytes:()=>IR,validateObject:()=>vr});var s6=BigInt(0),Ml=BigInt(1),SR=BigInt(2);function go(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function hi(r){if(!go(r))throw new Error("Uint8Array expected")}var RR=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function In(r){hi(r);let e="";for(let t=0;t<r.length;t++)e+=RR[r[t]];return e}function i6(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function i0(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var An={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function n6(r){if(r>=An._0&&r<=An._9)return r-An._0;if(r>=An._A&&r<=An._F)return r-(An._A-10);if(r>=An._a&&r<=An._f)return r-(An._a-10)}function cs(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded 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=n6(r.charCodeAt(s)),a=n6(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}function Dn(r){return i0(In(r))}function $r(r){return hi(r),i0(In(Uint8Array.from(r).reverse()))}function yo(r,e){return cs(r.toString(16).padStart(e*2,"0"))}function Tn(r,e){return yo(r,e).reverse()}function _R(r){return cs(i6(r))}function Ue(r,e,t){let n;if(typeof e=="string")try{n=cs(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(go(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let o=n.length;if(typeof t=="number"&&o!==t)throw new Error(`${r} expected ${t} bytes, got ${o}`);return n}function kn(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];hi(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 AR(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function IR(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function DR(r){let e;for(e=0;r>s6;r>>=Ml,e+=1);return e}function TR(r,e){return r>>BigInt(e)&Ml}function kR(r,e,t){return r|(t?Ml:s6)<<BigInt(e)}var ka=r=>(SR<<BigInt(r-1))-Ml,s0=r=>new Uint8Array(r),o6=r=>Uint8Array.from(r);function a0(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=s0(r),o=s0(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=s0())=>{o=a(o6([0]),u),n=a(),u.length!==0&&(o=a(o6([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,h=[];for(;u<e;){n=a();let f=n.slice();h.push(f),u+=n.length}return kn(...h)};return(u,h)=>{i(),c(u);let f;for(;!(f=h(l()));)c();return i(),f}}var CR={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||go(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function vr(r,e,t={}){let n=(o,s,i)=>{let a=CR[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var ut=BigInt(0),qe=BigInt(1),ls=BigInt(2),NR=BigInt(3),c0=BigInt(4),a6=BigInt(5),c6=BigInt(8),PR=BigInt(9),LR=BigInt(16);function Ie(r,e){let t=r%e;return t>=ut?t:e+t}function l0(r,e,t){if(t<=ut||e<ut)throw new Error("Expected power/modulo > 0");if(t===qe)return ut;let n=qe;for(;e>ut;)e&qe&&(n=n*r%t),r=r*r%t,e>>=qe;return n}function Fe(r,e,t){let n=r;for(;e-- >ut;)n*=n,n%=t;return n}function Fl(r,e){if(r===ut||e<=ut)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Ie(r,e),n=e,o=ut,s=qe,i=qe,a=ut;for(;t!==ut;){let l=n/t,d=n%t,u=o-i*l,h=s-a*l;n=t,t=d,o=i,s=a,i=u,a=h}if(n!==qe)throw new Error("invert: does not exist");return Ie(o,e)}function OR(r){let e=(r-qe)/ls,t,n,o;for(t=r-qe,n=0;t%ls===ut;t/=ls,n++);for(o=ls;o<r&&l0(o,e,r)!==r-qe;o++);if(n===1){let i=(r+qe)/c0;return function(c,l){let d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}let s=(t+qe)/ls;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,d=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let f=1;for(let m=a.sqr(h);f<l&&!a.eql(m,a.ONE);f++)m=a.sqr(m);let p=a.pow(d,qe<<BigInt(l-f-1));d=a.sqr(p),u=a.mul(u,p),h=a.mul(h,d),l=f}return u}}function BR(r){if(r%c0===NR){let e=(r+qe)/c0;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%c6===a6){let e=(r-a6)/c6;return function(n,o){let s=n.mul(o,ls),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,ls),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%LR,OR(r)}var l6=(r,e)=>(Ie(r,e)&qe)===qe,MR=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function u0(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=MR.reduce((n,o)=>(n[o]="function",n),e);return vr(r,t)}function UR(r,e,t){if(t<ut)throw new Error("Expected power > 0");if(t===ut)return r.ONE;if(t===qe)return e;let n=r.ONE,o=e;for(;t>ut;)t&qe&&(n=r.mul(n,o)),o=r.sqr(o),t>>=qe;return n}function FR(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function d0(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Vl(r,e,t=!1,n={}){if(r<=ut)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=d0(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=BR(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:ka(o),ZERO:ut,ONE:qe,create:c=>Ie(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return ut<=c&&c<r},is0:c=>c===ut,isOdd:c=>(c&qe)===qe,neg:c=>Ie(-c,r),eql:(c,l)=>c===l,sqr:c=>Ie(c*c,r),add:(c,l)=>Ie(c+l,r),sub:(c,l)=>Ie(c-l,r),mul:(c,l)=>Ie(c*l,r),pow:(c,l)=>UR(a,c,l),div:(c,l)=>Ie(c*Fl(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Fl(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>FR(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?Tn(c,s):yo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?$r(c):Dn(c)}});return Object.freeze(a)}function u6(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function d6(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 f0(r){let e=d6(r);return e+Math.ceil(e/2)}function f6(r,e,t=!1){let n=r.length,o=d6(e),s=f0(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?Dn(r):$r(r),a=Ie(i,e-qe)+qe;return t?Tn(a,o):yo(a,o)}var KR=BigInt(0),h0=BigInt(1);function Kl(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>KR;)s&h0&&(i=i.add(a)),a=a.double(),s>>=h0;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let h=1;h<a;h++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,d=r.BASE,u=BigInt(2**o-1),h=2**o,f=BigInt(o);for(let p=0;p<a;p++){let m=p*c,y=Number(i&u);i>>=f,y>c&&(y-=h,i+=h0);let w=m,b=m+Math.abs(y)-1,E=p%2!==0,x=y<0;y===0?d=d.add(t(E,s[w])):l=l.add(t(x,s[b]))}return{p:l,f:d}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function Ca(r){return u0(r.Fp),vr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...d0(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Hr=BigInt(0),sr=BigInt(1),$l=BigInt(2),$R=BigInt(8),HR={zip215:!0};function qR(r){let e=Ca(r);return vr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function Hl(r){let e=qR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=$l<<BigInt(a*8)-sr,d=t.create,u=e.uvRatio||((C,A)=>{try{return{isValid:!0,value:t.sqrt(C*t.inv(A))}}catch{return{isValid:!1,value:Hr}}}),h=e.adjustScalarBytes||(C=>C),f=e.domain||((C,A,U)=>{if(A.length||U)throw new Error("Contexts/pre-hash are not supported");return C}),p=C=>typeof C=="bigint"&&Hr<C,m=(C,A)=>p(C)&&p(A)&&C<A,y=C=>C===Hr||m(C,l);function w(C,A){if(m(C,A))return C;throw new Error(`Expected valid scalar < ${A}, got ${typeof C} ${C}`)}function b(C){return C===Hr?C:w(C,n)}let E=new Map;function x(C){if(!(C instanceof v))throw new Error("ExtendedPoint expected")}class v{constructor(A,U,V,H){if(this.ex=A,this.ey=U,this.ez=V,this.et=H,!y(A))throw new Error("x required");if(!y(U))throw new Error("y required");if(!y(V))throw new Error("z required");if(!y(H))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(A){if(A instanceof v)throw new Error("extended point not allowed");let{x:U,y:V}=A||{};if(!y(U)||!y(V))throw new Error("invalid affine point");return new v(U,V,sr,d(U*V))}static normalizeZ(A){let U=t.invertBatch(A.map(V=>V.ez));return A.map((V,H)=>V.toAffine(U[H])).map(v.fromAffine)}_setWindowSize(A){this._WINDOW_SIZE=A,E.delete(this)}assertValidity(){let{a:A,d:U}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:H,ez:se,et:ie}=this,de=d(V*V),ae=d(H*H),ue=d(se*se),Be=d(ue*ue),Ne=d(de*A),gt=d(ue*d(Ne+ae)),yt=d(Be+d(U*d(de*ae)));if(gt!==yt)throw new Error("bad point: equation left != right (1)");let ct=d(V*H),Dt=d(se*ie);if(ct!==Dt)throw new Error("bad point: equation left != right (2)")}equals(A){x(A);let{ex:U,ey:V,ez:H}=this,{ex:se,ey:ie,ez:de}=A,ae=d(U*de),ue=d(se*H),Be=d(V*de),Ne=d(ie*H);return ae===ue&&Be===Ne}is0(){return this.equals(v.ZERO)}negate(){return new v(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:A}=e,{ex:U,ey:V,ez:H}=this,se=d(U*U),ie=d(V*V),de=d($l*d(H*H)),ae=d(A*se),ue=U+V,Be=d(d(ue*ue)-se-ie),Ne=ae+ie,gt=Ne-de,yt=ae-ie,ct=d(Be*gt),Dt=d(Ne*yt),gn=d(Be*yt),Ho=d(gt*Ne);return new v(ct,Dt,Ho,gn)}add(A){x(A);let{a:U,d:V}=e,{ex:H,ey:se,ez:ie,et:de}=this,{ex:ae,ey:ue,ez:Be,et:Ne}=A;if(U===BigInt(-1)){let n4=d((se-H)*(ue+ae)),o4=d((se+H)*(ue-ae)),_f=d(o4-n4);if(_f===Hr)return this.double();let s4=d(ie*$l*Ne),i4=d(de*$l*Be),a4=i4+s4,c4=o4+n4,l4=i4-s4,bb=d(a4*_f),xb=d(c4*l4),vb=d(a4*l4),Sb=d(_f*c4);return new v(bb,xb,Sb,vb)}let gt=d(H*ae),yt=d(se*ue),ct=d(de*V*Ne),Dt=d(ie*Be),gn=d((H+se)*(ae+ue)-gt-yt),Ho=Dt-ct,ca=Dt+ct,r4=d(yt-U*gt),gb=d(gn*Ho),yb=d(ca*r4),wb=d(gn*r4),Eb=d(Ho*ca);return new v(gb,yb,Eb,wb)}subtract(A){return this.add(A.negate())}wNAF(A){return S.wNAFCached(this,E,A,v.normalizeZ)}multiply(A){let{p:U,f:V}=this.wNAF(w(A,n));return v.normalizeZ([U,V])[0]}multiplyUnsafe(A){let U=b(A);return U===Hr?R:this.equals(R)||U===sr?this:this.equals(I)?this.wNAF(U).p:S.unsafeLadder(this,U)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return S.unsafeLadder(this,n).is0()}toAffine(A){let{ex:U,ey:V,ez:H}=this,se=this.is0();A==null&&(A=se?$R:t.inv(H));let ie=d(U*A),de=d(V*A),ae=d(H*A);if(se)return{x:Hr,y:sr};if(ae!==sr)throw new Error("invZ was invalid");return{x:ie,y:de}}clearCofactor(){let{h:A}=e;return A===sr?this:this.multiplyUnsafe(A)}static fromHex(A,U=!1){let{d:V,a:H}=e,se=t.BYTES;A=Ue("pointHex",A,se);let ie=A.slice(),de=A[se-1];ie[se-1]=de&-129;let ae=$r(ie);ae===Hr||(U?w(ae,l):w(ae,t.ORDER));let ue=d(ae*ae),Be=d(ue-sr),Ne=d(V*ue-H),{isValid:gt,value:yt}=u(Be,Ne);if(!gt)throw new Error("Point.fromHex: invalid y coordinate");let ct=(yt&sr)===sr,Dt=(de&128)!==0;if(!U&&yt===Hr&&Dt)throw new Error("Point.fromHex: x=0 and x_0=1");return Dt!==ct&&(yt=d(-yt)),v.fromAffine({x:yt,y:ae})}static fromPrivateKey(A){return N(A).point}toRawBytes(){let{x:A,y:U}=this.toAffine(),V=Tn(U,t.BYTES);return V[V.length-1]|=A&sr?128:0,V}toHex(){return In(this.toRawBytes())}}v.BASE=new v(e.Gx,e.Gy,sr,d(e.Gx*e.Gy)),v.ZERO=new v(Hr,sr,sr,Hr);let{BASE:I,ZERO:R}=v,S=Kl(v,a*8);function T(C){return Ie(C,n)}function L(C){return T($r(C))}function N(C){let A=a;C=Ue("private key",C,A);let U=Ue("hashed private key",s(C),2*A),V=h(U.slice(0,A)),H=U.slice(A,2*A),se=L(V),ie=I.multiply(se),de=ie.toRawBytes();return{head:V,prefix:H,scalar:se,point:ie,pointBytes:de}}function B(C){return N(C).pointBytes}function k(C=new Uint8Array,...A){let U=kn(...A);return L(s(f(U,Ue("context",C),!!o)))}function Y(C,A,U={}){C=Ue("message",C),o&&(C=o(C));let{prefix:V,scalar:H,pointBytes:se}=N(A),ie=k(U.context,V,C),de=I.multiply(ie).toRawBytes(),ae=k(U.context,de,se,C),ue=T(ie+ae*H);b(ue);let Be=kn(de,Tn(ue,t.BYTES));return Ue("result",Be,a*2)}let D=HR;function P(C,A,U,V=D){let{context:H,zip215:se}=V,ie=t.BYTES;C=Ue("signature",C,2*ie),A=Ue("message",A),o&&(A=o(A));let de=$r(C.slice(ie,2*ie)),ae,ue,Be;try{ae=v.fromHex(U,se),ue=v.fromHex(C.slice(0,ie),se),Be=I.multiplyUnsafe(de)}catch{return!1}if(!se&&ae.isSmallOrder())return!1;let Ne=k(H,ue.toRawBytes(),ae.toRawBytes(),A);return ue.add(ae.multiplyUnsafe(Ne)).subtract(Be).clearCofactor().equals(v.ZERO)}return I._setWindowSize(8),{CURVE:e,getPublicKey:B,sign:Y,verify:P,ExtendedPoint:v,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(C=8,A=v.BASE){return A._setWindowSize(C),A.multiply(BigInt(3)),A}}}}var Na=BigInt(0),p0=BigInt(1);function GR(r){return vr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function h6(r){let e=GR(r),{P:t}=e,n=E=>Ie(E,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(E=>E),c=e.powPminus2||(E=>l0(E,t-BigInt(2),t));function l(E,x,v){let I=n(E*(x-v));return x=n(x-I),v=n(v+I),[x,v]}function d(E){if(typeof E=="bigint"&&Na<=E&&E<t)return E;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function h(E,x){let v=d(E),I=d(x),R=v,S=p0,T=Na,L=v,N=p0,B=Na,k;for(let D=BigInt(o-1);D>=Na;D--){let P=I>>D&p0;B^=P,k=l(B,S,L),S=k[0],L=k[1],k=l(B,T,N),T=k[0],N=k[1],B=P;let $=S+T,C=n($*$),A=S-T,U=n(A*A),V=C-U,H=L+N,se=L-N,ie=n(se*$),de=n(H*A),ae=ie+de,ue=ie-de;L=n(ae*ae),N=n(R*n(ue*ue)),S=n(C*U),T=n(V*(C+n(u*V)))}k=l(B,S,L),S=k[0],L=k[1],k=l(B,T,N),T=k[0],N=k[1];let Y=c(T);return n(S*Y)}function f(E){return Tn(n(E),s)}function p(E){let x=Ue("u coordinate",E,s);return i===32&&(x[31]&=127),$r(x)}function m(E){let x=Ue("scalar",E),v=x.length;if(v!==s&&v!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${v}`);return $r(a(x))}function y(E,x){let v=p(x),I=m(E),R=h(v,I);if(R===Na)throw new Error("Invalid private or public key received");return f(R)}let w=f(e.Gu);function b(E){return y(E,w)}return{scalarMult:y,scalarMultBase:b,getSharedSecret:(E,x)=>y(E,x),getPublicKey:E=>b(E),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var Pa=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),p6=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),qV=BigInt(0),WR=BigInt(1),m0=BigInt(2),zR=BigInt(5),m6=BigInt(10),YR=BigInt(20),XR=BigInt(40),g6=BigInt(80);function y6(r){let e=Pa,n=r*r%e*r%e,o=Fe(n,m0,e)*n%e,s=Fe(o,WR,e)*r%e,i=Fe(s,zR,e)*s%e,a=Fe(i,m6,e)*i%e,c=Fe(a,YR,e)*a%e,l=Fe(c,XR,e)*c%e,d=Fe(l,g6,e)*l%e,u=Fe(d,g6,e)*l%e,h=Fe(u,m6,e)*i%e;return{pow_p_5_8:Fe(h,m0,e)*r%e,b2:n}}function w6(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function QR(r,e){let t=Pa,n=Ie(e*e*e,t),o=Ie(n*n*e,t),s=y6(r*o).pow_p_5_8,i=Ie(r*n*s,t),a=Ie(e*i*i,t),c=i,l=Ie(i*p6,t),d=a===r,u=a===Ie(-r,t),h=a===Ie(-r*p6,t);return d&&(i=c),(u||h)&&(i=l),l6(i,t)&&(i=Ie(-i,t)),{isValid:d||u,value:i}}var Cn=Vl(Pa,void 0,!0),g0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Cn,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:mo,randomBytes:as,adjustScalarBytes:w6,uvRatio:QR},pi=Hl(g0);function E6(r,e,t){if(e.length>255)throw new Error("Context is too big");return Pl(r0("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var GV=Hl({...g0,domain:E6}),WV=Hl({...g0,domain:E6,prehash:mo}),La=h6({P:Pa,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=Pa,{pow_p_5_8:t,b2:n}=y6(r);return Ie(Fe(t,BigInt(3),e)*n,e)},adjustScalarBytes:w6,randomBytes:as});var jR=(Cn.ORDER+BigInt(3))/BigInt(8),zV=Cn.pow(m0,jR),YV=Cn.sqrt(Cn.neg(Cn.ONE)),XV=(Cn.ORDER-BigInt(5))/BigInt(8),QV=BigInt(486662);var jV=u6(Cn,Cn.neg(BigInt(486664)));var ZV=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),JV=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),eK=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),tK=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var rK=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var mi=32,Nn=64,ql=32;function b6(){let r=pi.utils.randomPrivateKey(),e=pi.getPublicKey(r);return{privateKey:R6(r,e),publicKey:e}}function x6(r){if(r.length!==ql)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=pi.getPublicKey(e);return{privateKey:R6(e,t),publicKey:t}}function v6(r,e){let t=r.subarray(0,ql);return pi.sign(e instanceof Uint8Array?e:e.subarray(),t)}function S6(r,e,t){return pi.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function R6(r,e){let t=new Uint8Array(Nn);for(let n=0;n<ql;n++)t[n]=r[n],t[ql+n]=e[n];return t}var y0={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Gl(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=He.get();t*=8;async function c(u,h){let f=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof h=="string"&&(h=M(h));let y;if(h.length===0){y=await a.subtle.importKey("jwk",y0,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",y0,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(m,y,u);return ve([f,m.iv,new Uint8Array(w)])}async function l(u,h){let f=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),y={name:e,iv:p};typeof h=="string"&&(h=M(h));let w;if(h.length===0)try{let E={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,x,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",y0,{name:"AES-GCM"},!0,["decrypt"])}else{let E={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,x,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(y,w,m);return new Uint8Array(b)}return{encrypt:c,decrypt:l}}async function gi(r,e){let n=await Gl().encrypt(r,e);return ot.encode(n)}var yi={};pe(yi,{KeyType:()=>Ve,PrivateKey:()=>Gr,PublicKey:()=>qr});var Ve;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ve||(Ve={}));var w0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(w0||(w0={}));(function(r){r.codec=()=>$e(w0)})(Ve||(Ve={}));var qr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ve.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ve.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(qr||(qr={}));var Gr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ve.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ve.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(Gr||(Gr={}));var us=class{_key;constructor(e){this._key=wi(e,mi)}verify(e,t){return S6(this._key,t,e)}marshal(){return this._key}get bytes(){return qr.encode({Type:Ve.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return xr(e)?e.then(({bytes:t})=>t):e.bytes}},Pn=class{_key;_publicKey;constructor(e,t){this._key=wi(e,Nn),this._publicKey=wi(t,mi)}sign(e){return v6(this._key,e)}get public(){return new us(this._publicKey)}marshal(){return this._key}get bytes(){return Gr.encode({Type:Ve.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=Ce.digest(this.bytes),t;return xr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=$t.digest(this.public.bytes);return ze.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return gi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function JR(r){if(r.length>Nn){r=wi(r,Nn+mi);let n=r.subarray(0,Nn),o=r.subarray(Nn,r.length);return new Pn(n,o)}r=wi(r,Nn);let e=r.subarray(0,Nn),t=r.subarray(mi);return new Pn(e,t)}function e_(r){return r=wi(r,mi),new us(r)}async function t_(){let{privateKey:r,publicKey:e}=b6();return new Pn(r,e)}async function E0(r){let{privateKey:e,publicKey:t}=x6(r);return new Pn(e,t)}function wi(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new g(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var A6={"P-256":256,"P-384":384,"P-521":521},r_=Object.keys(A6),x0=r_.join(" / ");async function I6(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${x0}`,"ERR_INVALID_CURVE");let e=await He.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await He.get().subtle.importKey("jwk",o_(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await He.get().subtle.importKey("jwk",T6(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await He.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,A6[r]);return new Uint8Array(l,0,l.byteLength)},n=await He.get().subtle.exportKey("jwk",e.publicKey);return{key:n_(n),genSharedKey:t}}var D6={"P-256":32,"P-384":48,"P-521":66};function n_(r){if(r.crv==null||r.x==null||r.y==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new g(`Unknown curve: ${r.crv}. Must be ${x0}`,"ERR_INVALID_CURVE");let e=D6[r.crv];return ve([Uint8Array.from([4]),t0(r.x,e),t0(r.y,e)],1+e*2)}function T6(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${x0}`,"ERR_INVALID_CURVE");let t=D6[r];if(!Z(e.subarray(0,1),Uint8Array.from([4])))throw new g("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:O(e.subarray(1,t+1),"base64url"),y:O(e.subarray(1+t),"base64url"),ext:!0}}var o_=(r,e)=>({...T6(r,e.public),d:O(e.private,"base64url")});var k6=I6;async function C6(r,e){let t=ot.decode(r);return Gl().decrypt(t,e)}var N6={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function P6(r,e,t){let n=N6[r];if(n==null){let b=Object.keys(N6).join(" / ");throw new g(`unknown cipher type '${r}'. Must be ${b}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new g("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=M("key expansion"),c=2*(s+o+i),l=await Zm(e,t),d=await l.digest(a),u=[],h=0;for(;h<c;){let b=await l.digest(ve([d,a])),E=b.length;h+E>c&&(E=c-h),u.push(b),h+=E,d=await l.digest(d)}let f=c/2,p=ve(u),m=p.subarray(0,f),y=p.subarray(f,c),w=b=>({iv:b.subarray(0,s),cipherKey:b.subarray(s,s+o),macKey:b.subarray(s+o)});return{k1:w(m),k2:w(y)}}var N0={};pe(N0,{MAX_RSA_KEY_SIZE:()=>hs,RsaPrivateKey:()=>So,RsaPublicKey:()=>fs,fromJwk:()=>D_,generateKeyPair:()=>T_,unmarshalRsaPrivateKey:()=>k0,unmarshalRsaPublicKey:()=>I_});function Nt(r){if(isNaN(r)||r<=0)throw new g("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return as(r)}var vo={};pe(vo,{exportToPem:()=>S_,importFromPem:()=>T0,jwkToPkcs1:()=>E_,jwkToPkix:()=>x_,pkcs1ToJwk:()=>w_,pkixToJwk:()=>b_});var Wl=class extends di{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ss(e);let n=Kr(t);if(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 o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return ui(this),this.iHash.update(e),this}digestInto(e){ui(this),li(e,this.outputLen),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||(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}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},wo=(r,e,t)=>new Wl(r,e).update(t).digest();wo.create=(r,e)=>new Wl(r,e);function L6(r,e,t,n){ss(r);let o=t6({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(uo(s),uo(i),uo(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Kr(e),l=Kr(t),d=new Uint8Array(i),u=wo.create(r,c),h=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:h}}function O6(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function B6(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=L6(r,e,t,n),l,d=new Uint8Array(4),u=is(d),h=new Uint8Array(a.outputLen);for(let f=1,p=0;p<s;f++,p+=a.outputLen){let m=i.subarray(p,p+a.outputLen);u.setInt32(0,f,!1),(l=c._cloneInto(l)).update(d).digestInto(h),m.set(h.subarray(0,m.length));for(let y=1;y<o;y++){a._cloneInto(l).update(h).digestInto(h);for(let w=0;w<m.length;w++)m[w]^=h[w]}}return O6(a,c,i,l,h)}async function v0(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=L6(r,e,t,n),d,u=new Uint8Array(4),h=is(u),f=new Uint8Array(c.outputLen);for(let p=1,m=0;m<s;p++,m+=c.outputLen){let y=a.subarray(m,m+c.outputLen);h.setInt32(0,p,!1),(d=l._cloneInto(d)).update(u).digestInto(f),y.set(f.subarray(0,y.length)),await e6(o-1,i,()=>{c._cloneInto(d).update(f).digestInto(f);for(let w=0;w<y.length;w++)y[w]^=f[w]})}return O6(c,l,a,d,f)}var we=Ye(M6());function ds(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 Eo(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 Xl(...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 R0(){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=ds(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,ds(s,8)-n}function U6(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=Eo(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=Eo(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 F6(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 qt(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 qK=Math.log(2);function Ql(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function _0(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 Un(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 Ba=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return _0(this.items)}},Oa=[new Uint8Array([1])],V6="0123456789";var xi="",zr=new ArrayBuffer(0),A0=new Uint8Array(0),Ma="EndOfContent",$6="OCTET STRING",H6="BIT STRING";function Fn(r){var e;return e=class extends r{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?we.BufferSourceConverter.toUint8Array(s.valueHex):A0}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Un(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",zr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:we.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var On=class{constructor({blockLength:e=0,error:t=xi,warnings:n=[],valueBeforeDecode:o=A0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=we.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:we.Convert.ToHex(this.valueBeforeDecodeView)}}};On.NAME="baseBlock";var Pt=class extends On{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'")}};Pt.NAME="valueBlock";var jl=class extends Fn(On){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?we.BufferSourceConverter.toUint8Array(e.valueHex):A0,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",zr}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=Eo(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=we.BufferSourceConverter.toUint8Array(e);if(!Un(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 h=new Uint8Array(d);for(let f=0;f<l.length;f++)h[f]=l[f];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let h=0;h<c;h++)u[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=ds(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}}};jl.NAME="identificationBlock";var Zl=class extends On{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=we.BufferSourceConverter.toUint8Array(e);if(!Un(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=ds(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=Eo(this.length,8);if(o.byteLength>127)return this.error="Too big length",zr;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}}};Zl.NAME="lengthBlock";var G={},bt=class extends On{constructor({name:e=xi,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new jl(o),this.lenBlock=new Zl(o),this.valueBlock=s?new s(o):new Pt(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 Ba;t||q6(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?zr: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():we.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return F6(t,n)}};bt.NAME="BaseBlock";function q6(r){if(r instanceof G.Constructed)for(let e of r.valueBlock.value)q6(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Jl=class extends bt{constructor({value:e=xi,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=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}'`}};Jl.NAME="BaseStringBlock";var eu=class extends Fn(Pt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};eu.NAME="PrimitiveValueBlock";var G6,tu=class extends bt{constructor(e={}){super(e,eu),this.idBlock.isConstructed=!1}};G6=tu;G.Primitive=G6;tu.NAME="PRIMITIVE";function h_(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 Lu(r,e=0,t=r.length){let n=e,o=new bt({},Pt),s=new On;if(!Un(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=bt;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=G.EndOfContent;break;case 1:c=G.Boolean;break;case 2:c=G.Integer;break;case 3:c=G.BitString;break;case 4:c=G.OctetString;break;case 5:c=G.Null;break;case 6:c=G.ObjectIdentifier;break;case 10:c=G.Enumerated;break;case 12:c=G.Utf8String;break;case 13:c=G.RelativeObjectIdentifier;break;case 14:c=G.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=G.Sequence;break;case 17:c=G.Set;break;case 18:c=G.NumericString;break;case 19:c=G.PrintableString;break;case 20:c=G.TeletexString;break;case 21:c=G.VideotexString;break;case 22:c=G.IA5String;break;case 23:c=G.UTCTime;break;case 24:c=G.GeneralizedTime;break;case 25:c=G.GraphicString;break;case 26:c=G.VisibleString;break;case 27:c=G.GeneralString;break;case 28:c=G.UniversalString;break;case 29:c=G.CharacterString;break;case 30:c=G.BmpString;break;case 31:c=G.DATE;break;case 32:c=G.TimeOfDay;break;case 33:c=G.DateTime;break;case 34:c=G.Duration;break;default:{let l=o.idBlock.isConstructed?new G.Constructed:new G.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?G.Constructed:G.Primitive}return o=h_(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 vi(r){if(!r.byteLength){let e=new bt({},Pt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Lu(we.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function p_(r,e){return r?1:e}var an=class extends Pt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!Un(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(;p_(this.isIndefiniteForm,n)>0;){let i=Lu(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===Ma)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Ma?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Ba;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?zr: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 W6,bo=class extends bt{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(`
17
+ `});var sE=Te(()=>{oE();Kd();Vo();S3();Sc()});var I3,cae,iE=Te(()=>{Pw();Lw();Ow();Bw();Mw();m3();Uw();w3();Fw();Kw();Qw();Jw();eE();tE();sE();I3={...l3,...u3,...d3,...f3,...h3,...p3,...g3,...y3,...E3,...b3},cae={..._3,...A3}});function ta(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Gd=Te(()=>{});function Wd(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?ta(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var D3=Te(()=>{Gd()});function cE(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var aE,T3,kC,zd,k3=Te(()=>{iE();D3();aE=cE("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),T3=cE("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=Wd(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),kC={utf8:aE,"utf-8":aE,hex:I3.base16,latin1:T3,ascii:T3,binary:T3,...I3},zd=kC});var lE={};pe(lE,{toString:()=>CC});function CC(r,e="utf8"){let t=zd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):t.encoder.encode(r).substring(1)}var uE=Te(()=>{k3()});var dE={};pe(dE,{fromString:()=>NC});function NC(r,e="utf8"){let t=zd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?ta(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var fE=Te(()=>{k3();Gd()});var hE={};pe(hE,{concat:()=>PC});function PC(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=Wd(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return ta(t)}var pE=Te(()=>{D3();Gd()});var N3=Re((xae,bE)=>{"use strict";var mE=fw(),ra=Rw(),{names:Ac}=_w(),{toString:Yd}=(uE(),Nc(lE)),{fromString:LC}=(fE(),Nc(dE)),{concat:OC}=(pE(),Nc(hE)),na={};for(let r in Ac){let e=r;na[Ac[e]]=e}Object.freeze(na);function BC(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Yd(r,"base16")}function MC(r){return LC(r,"base16")}function UC(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Yd(mE.encode("base58btc",r)).slice(1)}function FC(r){let e=r instanceof Uint8Array?Yd(r):r;return mE.decode("z"+e)}function gE(r){if(!(r instanceof Uint8Array))throw new Error("multihash must be a Uint8Array");if(r.length<2)throw new Error("multihash too short. must be > 2 bytes.");let e=ra.decode(r);if(!wE(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(ra.decode.bytes);let t=ra.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(ra.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${Yd(r,"base16")}`);return{code:e,name:na[e],length:t,digest:r}}function VC(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=yE(e);if(!(r instanceof Uint8Array))throw new Error("digest should be a Uint8Array");if(t==null&&(t=r.length),t&&r.length!==t)throw new Error("digest length should be equal to specified length.");let o=ra.encode(n),s=ra.encode(t);return OC([o,s,r],o.length+s.length+r.length)}function yE(r){let e=r;if(typeof r=="string"){if(Ac[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=Ac[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(na[e]===void 0&&!C3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function C3(r){return r>0&&r<16}function wE(r){return!!(C3(r)||na[r])}function EE(r){gE(r)}function KC(r){return EE(r),r.subarray(0,2)}bE.exports={names:Ac,codes:na,toHexString:BC,fromHexString:MC,toB58String:UC,fromB58String:FC,decode:gE,encode:VC,coerceCode:yE,isAppCode:C3,validate:EE,prefix:KC,isValidCode:wE}});var PE=Re(Zd=>{"use strict";Object.defineProperty(Zd,"__esModule",{value:!0});var B3=class{constructor(){this.pullQueue=[],this.pushQueue=[],this.eventHandlers={},this.isPaused=!1,this.isStopped=!1}push(e){if(this.isStopped)return;let t={value:e,done:!1};if(this.pullQueue.length){let n=this.pullQueue.shift();n&&n.resolve(t)}else this.pushQueue.push(Promise.resolve(t)),this.highWaterMark!==void 0&&this.pushQueue.length>=this.highWaterMark&&!this.isPaused&&(this.isPaused=!0,this.eventHandlers.highWater?this.eventHandlers.highWater():console&&console.warn(`EventIterator queue reached ${this.pushQueue.length} items`))}stop(){if(!this.isStopped){this.isStopped=!0,this.remove();for(let e of this.pullQueue)e.resolve({value:void 0,done:!0});this.pullQueue.length=0}}fail(e){if(!this.isStopped)if(this.isStopped=!0,this.remove(),this.pullQueue.length){for(let t of this.pullQueue)t.reject(e);this.pullQueue.length=0}else{let t=Promise.reject(e);t.catch(()=>{}),this.pushQueue.push(t)}}remove(){Promise.resolve().then(()=>{this.removeCallback&&this.removeCallback()})}[Symbol.asyncIterator](){return{next:e=>{let t=this.pushQueue.shift();return t?(this.lowWaterMark!==void 0&&this.pushQueue.length<=this.lowWaterMark&&this.isPaused&&(this.isPaused=!1,this.eventHandlers.lowWater&&this.eventHandlers.lowWater()),t):this.isStopped?Promise.resolve({value:void 0,done:!0}):new Promise((n,o)=>{this.pullQueue.push({resolve:n,reject:o})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},jd=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new B3;o.highWaterMark=t,o.lowWaterMark=n,o.removeCallback=e({push:s=>o.push(s),stop:()=>o.stop(),fail:s=>o.fail(s),on:(s,i)=>{o.eventHandlers[s]=i}})||(()=>{}),this[Symbol.asyncIterator]=()=>o[Symbol.asyncIterator](),Object.freeze(this)}};Zd.EventIterator=jd;Zd.default=jd});var LE=Re(Ic=>{"use strict";Object.defineProperty(Ic,"__esModule",{value:!0});var M3=PE();Ic.EventIterator=M3.EventIterator;function XC(r,e,t){return new M3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}Ic.subscribe=XC;Ic.default=M3.EventIterator});var IN={};pe(IN,{DEFAULT_SESSION_MAX_PROVIDERS:()=>X5,DEFAULT_SESSION_MIN_PROVIDERS:()=>Y5,createHelia:()=>_N,libp2pDefaults:()=>rf});var m4=Symbol.for("@libp2p/connection");var rn=Symbol.for("@libp2p/content-routing");var qo=Symbol.for("@libp2p/peer-discovery");var la=Symbol.for("@libp2p/peer-id");function Ms(r){return r!=null&&!!r[la]}var nn=Symbol.for("@libp2p/peer-routing");var g4="keep-alive";var on=Symbol.for("@libp2p/transport");var eo;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(eo||(eo={}));var Vt=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),this.name="AbortError",this.code=r.code,this.type=r.type}static code="ABORT_ERR";static type="aborted"},g=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Pc=class extends AggregateError{code;props;constructor(e,t,n,o){super(e,t),this.code=n,this.name=o?.name??"AggregateCodeError",this.props=o??{}}};var bn="ERR_TIMEOUT";var y4="ERR_NOT_FOUND",Go="ERR_INVALID_MESSAGE";var G=(r,...e)=>{try{[...e]}catch{}};var me=class extends EventTarget{#e=new Map;constructor(){super(),G(1/0,this)}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 bt(e,t))}},Df=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},bt=globalThis.CustomEvent??Df;function Lc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function sn(...r){let e=[];for(let t of r)Lc(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 an(...r){let e=[];for(let t of r)Lc(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()}))}function Pe(r){let e=new globalThis.AbortController;function t(){e.abort();for(let s of r)s?.removeEventListener!=null&&s.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}function J(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Oc=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)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}},Us=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Oc(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 Oc(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 Tf=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function ft(r={}){return Lb(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 Lb(r,e){e=e??{};let t=e.onEnd,n=new Us,o,s,i,a=J(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=b=>{s=null,n.push(b);try{y(r(n))}catch(E){w(E)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=J()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new Us,s!=null?s({error:y}):(n.push({error:y}),o)),u=y=>{if(i)return o;if(e?.objectMode!==!0&&y?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:y})},h=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),f=()=>(n=new Us,h(),{done:!0}),p=y=>(h(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:f,throw:p,push:u,end:h,get readableLength(){return n.size},onEmpty:async y=>{let w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let b,E;w!=null&&(b=new Promise((x,v)=>{E=()=>{v(new Tf)},w.addEventListener("abort",E)}));try{await Promise.race([a.promise,b])}finally{E!=null&&w!=null&&w?.removeEventListener("abort",E)}}},t==null)return o;let m=o;return o={[Symbol.asyncIterator](){return this},next(){return m.next()},throw(y){return m.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return m.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return m.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return m.readableLength},onEmpty:y=>m.onEmpty(y)},o}var kf=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function jt(r,e,t,n){let o=new kf(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{function a(){t?.removeEventListener("abort",d),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=u=>{try{if(n?.filter?.(u)===!1)return}catch(h){a(),i(h);return}a(),s(u)},l=u=>{a(),i(u.detail)},d=()=>{a(),i(o)};t?.addEventListener("abort",d),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var Bc=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Ue(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Bc(t?.errorMessage,t?.errorCode));let n,o=new Bc(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((s,i)=>{n=()=>{i(o)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Mc=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=J(),this.where=e,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 Ob(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Uc=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=Ob(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,G(1/0,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 Mc(new Error("where").stack,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 Ue(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 Bb(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 Nr=class extends me{concurrency;queue;pending;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!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){if(this.queue[this.size-1]?.priority>=e.priority){this.queue.push(e);return}let t=Bb(this.queue,e,(n,o)=>o.priority-n.priority);this.queue.splice(t,0,e)}async add(e,t){t?.signal?.throwIfAborted();let n=new Uc(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s});return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),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 jt(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await jt(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await jt(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=ft({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)},i=()=>{n()},a=()=>{n(new g("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",o),this.addEventListener("error",s),this.addEventListener("idle",i),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("error",s),this.removeEventListener("idle",i),e?.signal?.removeEventListener("abort",a),n()}}};var pr=class extends Nr{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function Mb(r){return r[Symbol.asyncIterator]!=null}function Ub(r){if(Mb(r))return(async()=>{for await(let e of r);})();for(let e of r);}var mr=Ub;function Ae(r=0){return new Uint8Array(r)}function ze(r=0){return new Uint8Array(r)}var Fb=Math.pow(2,7),Vb=Math.pow(2,14),Kb=Math.pow(2,21),Cf=Math.pow(2,28),Nf=Math.pow(2,35),Pf=Math.pow(2,42),Lf=Math.pow(2,49),ke=128,Nt=127;function Se(r){if(r<Fb)return 1;if(r<Vb)return 2;if(r<Kb)return 3;if(r<Cf)return 4;if(r<Nf)return 5;if(r<Pf)return 6;if(r<Lf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Of(r,e,t=0){switch(Se(r)){case 8:e[t++]=r&255|ke,r/=128;case 7:e[t++]=r&255|ke,r/=128;case 6:e[t++]=r&255|ke,r/=128;case 5:e[t++]=r&255|ke,r/=128;case 4:e[t++]=r&255|ke,r>>>=7;case 3:e[t++]=r&255|ke,r>>>=7;case 2:e[t++]=r&255|ke,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function $b(r,e,t=0){switch(Se(r)){case 8:e.set(t++,r&255|ke),r/=128;case 7:e.set(t++,r&255|ke),r/=128;case 6:e.set(t++,r&255|ke),r/=128;case 5:e.set(t++,r&255|ke),r/=128;case 4:e.set(t++,r&255|ke),r>>>=7;case 3:e.set(t++,r&255|ke),r>>>=7;case 2:e.set(t++,r&255|ke),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Bf(r,e){let t=r[e],n=0;if(n+=t&Nt,t<ke||(t=r[e+1],n+=(t&Nt)<<7,t<ke)||(t=r[e+2],n+=(t&Nt)<<14,t<ke)||(t=r[e+3],n+=(t&Nt)<<21,t<ke)||(t=r[e+4],n+=(t&Nt)*Cf,t<ke)||(t=r[e+5],n+=(t&Nt)*Nf,t<ke)||(t=r[e+6],n+=(t&Nt)*Pf,t<ke)||(t=r[e+7],n+=(t&Nt)*Lf,t<ke))return n;throw new RangeError("Could not decode varint")}function Hb(r,e){let t=r.get(e),n=0;if(n+=t&Nt,t<ke||(t=r.get(e+1),n+=(t&Nt)<<7,t<ke)||(t=r.get(e+2),n+=(t&Nt)<<14,t<ke)||(t=r.get(e+3),n+=(t&Nt)<<21,t<ke)||(t=r.get(e+4),n+=(t&Nt)*Cf,t<ke)||(t=r.get(e+5),n+=(t&Nt)*Nf,t<ke)||(t=r.get(e+6),n+=(t&Nt)*Pf,t<ke)||(t=r.get(e+7),n+=(t&Nt)*Lf,t<ke))return n;throw new RangeError("Could not decode varint")}function $e(r,e,t=0){return e==null&&(e=ze(Se(r))),e instanceof Uint8Array?Of(r,e,t):$b(r,e,t)}function Bt(r,e=0){return r instanceof Uint8Array?Bf(r,e):Hb(r,e)}function ve(r,e){e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=ze(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}function Z(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}var E4=Symbol.for("@achingbrain/uint8arraylist");function w4(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 Fc(r){return!!r?.[E4]}var ce=class r{bufs;length;[E4]=!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(Fc(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(Fc(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=w4(this.bufs,e);return t.buf[t.index]}set(e,t){let n=w4(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(Fc(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 ve(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:ve(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(!Fc(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 h=l;h>=0;h--){let f=this.get(u+h);if(n[h]!==f){d=Math.max(1,h-a[f]);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=ze(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=ze(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(!Z(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 Vc(r){return r[Symbol.asyncIterator]!=null}var Kc=r=>{let e=Se(r),t=ze(e);return $e(r,t),Kc.bytes=e,t};Kc.bytes=0;function Kt(r,e){e=e??{};let t=e.lengthEncoder??Kc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return Vc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Kt.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Kc;return new ce(t(r.byteLength),r)};var Fs=Xe(Wo(),1);var Wb=8,zb=1024*1024*4,zo;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(zo||(zo={}));var Mf=r=>{let e=Bt(r);return Mf.bytes=Se(e),e};Mf.bytes=0;function $t(r,e){let t=new ce,n=zo.LENGTH,o=-1,s=e?.lengthDecoder??Mf,i=e?.maxLengthLength??Wb,a=e?.maxDataLength??zb;function*c(){for(;t.byteLength>0;){if(n===zo.LENGTH)try{if(o=s(t),o<0)throw(0,Fs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,Fs.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=s.bytes;t.consume(l),e?.onLength!=null&&e.onLength(o),n=zo.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,Fs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===zo.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=zo.LENGTH}}}return Vc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,Fs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,Fs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}$t.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 $t(n,{...e??{},onLength:s=>{t=s}})};function Yb(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 Vs=Yb;function Xb(r){return r[Symbol.asyncIterator]!=null}function Qb(r,e){let t=0;if(Xb(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=Vs(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 await(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 gr=Qb;function jb(r){return r[Symbol.asyncIterator]!=null}function Zb(...r){let e=[];for(let t of r)jb(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=ft({objectMode:!0});Promise.resolve().then(async()=>{try{await Promise.all(r.map(async n=>{for await(let o of n)t.push(o)})),t.end()}catch(n){t.end(n)}}),yield*t}()}var Mt=Zb;function Qe(r,...e){if(r==null)throw new Error("Empty pipeline");if(Uf(r)){let n=r;r=()=>n.source}else if(R4(r)||v4(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Uf(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++)Uf(t[n])&&(t[n]=ex(t[n]));return Jb(...t)}var Jb=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},v4=r=>r?.[Symbol.asyncIterator]!=null,R4=r=>r?.[Symbol.iterator]!=null,Uf=r=>r==null?!1:r.sink!=null&&r.source!=null,ex=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=ft({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(v4(s))o=async function*(){yield*s,n.end()};else if(R4(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Mt(n,o())}return r.source};function tx(r){return r[Symbol.asyncIterator]!=null}function rx(r,e){return tx(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 to=rx;var ge=class extends Event{constructor(e,t){super(e),this.detail=t}};var ua="/ipfs/bitswap/1.2.0";var Ff=new Float32Array([-0]),ro=new Uint8Array(Ff.buffer);function S4(r,e,t){Ff[0]=r,e[t]=ro[0],e[t+1]=ro[1],e[t+2]=ro[2],e[t+3]=ro[3]}function _4(r,e){return ro[0]=r[e],ro[1]=r[e+1],ro[2]=r[e+2],ro[3]=r[e+3],Ff[0]}var Vf=new Float64Array([-0]),Pt=new Uint8Array(Vf.buffer);function A4(r,e,t){Vf[0]=r,e[t]=Pt[0],e[t+1]=Pt[1],e[t+2]=Pt[2],e[t+3]=Pt[3],e[t+4]=Pt[4],e[t+5]=Pt[5],e[t+6]=Pt[6],e[t+7]=Pt[7]}function I4(r,e){return Pt[0]=r[e],Pt[1]=r[e+1],Pt[2]=r[e+2],Pt[3]=r[e+3],Pt[4]=r[e+4],Pt[5]=r[e+5],Pt[6]=r[e+6],Pt[7]=r[e+7],Vf[0]}var nx=BigInt(Number.MAX_SAFE_INTEGER),ox=BigInt(Number.MIN_SAFE_INTEGER),Zt=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 Yo;if(e<nx&&e>ox)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>D4&&(o=0n,++n>D4&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Yo;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):Yo}},Yo=new Zt(0,0);Yo.toBigInt=function(){return 0n};Yo.zzEncode=Yo.zzDecode=function(){return this};Yo.length=function(){return 1};var D4=4294967296n;function T4(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 k4(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 Kf(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 Pr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Hc(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var $f=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,Pr(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 Pr(this,4);return Hc(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Pr(this,4);return Hc(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Pr(this,4);let e=_4(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Pr(this,4);let e=I4(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 Pr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return k4(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Pr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Pr(this);while(this.buf[this.pos++]&128);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 Zt(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 Pr(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 Pr(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 Pr(this,8);let e=Hc(this.buf,this.pos+=4),t=Hc(this.buf,this.pos+=4);return new Zt(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=Bf(this.buf,this.pos);return this.pos+=Se(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 Hf(r){return new $f(r instanceof Uint8Array?r:r.subarray())}function te(r,e,t){let n=Hf(r);return e.decode(n,void 0,t)}var Yf={};pe(Yf,{base10:()=>ux});var jP=new Uint8Array(0);function N4(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 vn(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 P4(r){return new TextEncoder().encode(r)}function L4(r){return new TextDecoder().decode(r)}function sx(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 m=0,y=0,w=0,b=p.length;w!==b&&p[w]===0;)w++,m++;for(var E=(b-w)*d+1>>>0,x=new Uint8Array(E);w!==b;){for(var v=p[w],I=0,S=E-1;(v!==0||I<y)&&S!==-1;S--,I++)v+=256*x[S]>>>0,x[S]=v%a>>>0,v=v/a>>>0;if(v!==0)throw new Error("Non-zero carry");y=I,w++}for(var R=E-y;R!==E&&x[R]===0;)R++;for(var T=c.repeat(m);R<E;++R)T+=r.charAt(x[R]);return T}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var m=0;if(p[m]!==" "){for(var y=0,w=0;p[m]===c;)y++,m++;for(var b=(p.length-m)*l+1>>>0,E=new Uint8Array(b);p[m];){var x=t[p.charCodeAt(m)];if(x===255)return;for(var v=0,I=b-1;(x!==0||v<w)&&I!==-1;I--,v++)x+=a*E[I]>>>0,E[I]=x%256>>>0,x=x/256>>>0;if(x!==0)throw new Error("Non-zero carry");w=v,m++}if(p[m]!==" "){for(var S=b-w;S!==b&&E[S]===0;)S++;for(var R=new Uint8Array(y+(b-S)),T=y;S!==b;)R[T++]=E[S++];return R}}}function f(p){var m=h(p);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:h,decode:f}}var ix=sx,ax=ix,B4=ax;var qf=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")}},Gf=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),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 M4(this,e)}},Wf=class{decoders;constructor(e){this.decoders=e}or(e){return M4(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 M4(r,e){return new Wf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var zf=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 qf(e,t,n),this.decoder=new Gf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ks({name:r,prefix:e,encode:t,decode:n}){return new zf(r,e,t,n)}function no({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=B4(t,r);return Ks({prefix:e,name:r,encode:n,decode:s=>vn(o(s))})}function cx(r,e,t,n){let o={};for(let d=0;d<e.length;++d)o[e[d]]=d;let s=r.length;for(;r[s-1]==="=";)--s;let i=new Uint8Array(s*t/8|0),a=0,c=0,l=0;for(let d=0;d<s;++d){let u=o[r[d]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|u,a+=t,a>=8&&(a-=8,i[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return i}function lx(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;)s+="=";return s}function je({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Ks({prefix:e,name:r,encode(o){return lx(o,n,t)},decode(o){return cx(o,n,t,r)}})}var ux=no({prefix:"9",name:"base10",alphabet:"0123456789"});var Xf={};pe(Xf,{base16:()=>dx,base16upper:()=>fx});var dx=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),fx=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Qf={};pe(Qf,{base2:()=>hx});var hx=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var jf={};pe(jf,{base256emoji:()=>wx});var U4=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}"),px=U4.reduce((r,e,t)=>(r[t]=e,r),[]),mx=U4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function gx(r){return r.reduce((e,t)=>(e+=px[t],e),"")}function yx(r){let e=[];for(let t of r){let n=mx[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var wx=Ks({prefix:"\u{1F680}",name:"base256emoji",encode:gx,decode:yx});var Zf={};pe(Zf,{base32:()=>ut,base32hex:()=>xx,base32hexpad:()=>Rx,base32hexpadupper:()=>Sx,base32hexupper:()=>vx,base32pad:()=>Ex,base32padupper:()=>bx,base32upper:()=>F4,base32z:()=>_x});var ut=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),F4=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Ex=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bx=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),xx=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),vx=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Rx=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Sx=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),_x=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Jf={};pe(Jf,{base36:()=>oo,base36upper:()=>Ax});var oo=no({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ax=no({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var eh={};pe(eh,{base58btc:()=>Ye,base58flickr:()=>Ix});var Ye=no({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Ix=no({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var rh={};pe(rh,{base64:()=>st,base64pad:()=>Dx,base64url:()=>th,base64urlpad:()=>Tx});var st=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Dx=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),th=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Tx=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var nh={};pe(nh,{base8:()=>kx});var kx=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var oh={};pe(oh,{identity:()=>Cx});var Cx=Ks({prefix:"\0",name:"identity",encode:r=>L4(r),decode:r=>P4(r)});var hL=new TextEncoder,pL=new TextDecoder;var V4=512;var qc=85;var ch={};pe(ch,{identity:()=>Ht});var yr={};pe(yr,{Digest:()=>Xo,create:()=>Lr,decode:()=>Or,equals:()=>ah});var Nx=q4,$4=128,Px=127,Lx=~Px,Ox=Math.pow(2,31);function q4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Ox;)e[t++]=r&255|$4,r/=128;for(;r&Lx;)e[t++]=r&255|$4,r>>>=7;return e[t]=r|0,q4.bytes=t-n+1,e}var Bx=ih,Mx=128,H4=127;function ih(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw ih.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&H4)<<o:(i&H4)*Math.pow(2,o),o+=7}while(i>=Mx);return ih.bytes=s-n,t}var Ux=Math.pow(2,7),Fx=Math.pow(2,14),Vx=Math.pow(2,21),Kx=Math.pow(2,28),$x=Math.pow(2,35),Hx=Math.pow(2,42),qx=Math.pow(2,49),Gx=Math.pow(2,56),Wx=Math.pow(2,63),zx=function(r){return r<Ux?1:r<Fx?2:r<Vx?3:r<Kx?4:r<$x?5:r<Hx?6:r<qx?7:r<Gx?8:r<Wx?9:10},Yx={encode:Nx,decode:Bx,encodingLength:zx},Xx=Yx,da=Xx;function fa(r,e=0){return[da.decode(r,e),da.decode.bytes]}function $s(r,e,t=0){return da.encode(r,e,t),e}function Hs(r){return da.encodingLength(r)}function Lr(r,e){let t=e.byteLength,n=Hs(r),o=n+Hs(t),s=new Uint8Array(o+t);return $s(r,s,0),$s(t,s,n),s.set(e,o),new Xo(r,t,e,s)}function Or(r){let e=vn(r),[t,n]=fa(e),[o,s]=fa(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Xo(t,o,i,e)}function ah(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&N4(r.bytes,t.bytes)}}var Xo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};var G4=0,Qx="identity",W4=vn;function jx(r){return Lr(G4,W4(r))}var Ht={code:G4,name:Qx,encode:W4,digest:jx};var fh={};pe(fh,{sha256:()=>Ce,sha512:()=>dh});function uh({name:r,code:e,encode:t}){return new lh(r,e,t)}var lh=class{name;code;encode;constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Lr(this.code,t):t.then(n=>Lr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function Y4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Ce=uh({name:"sha2-256",code:18,encode:Y4("SHA-256")}),dh=uh({name:"sha2-512",code:19,encode:Y4("SHA-512")});function X4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Jx(t,hh(r),e??Ye.encoder);default:return ev(t,hh(r),e??ut.encoder)}}var Q4=new WeakMap;function hh(r){let e=Q4.get(r);if(e==null){let t=new Map;return Q4.set(r,t),t}return e}var le=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!==ha)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==tv)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=Lr(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&&ah(e.multihash,n.multihash)}toString(e){return X4(this,e)}toJSON(){return{"/":X4(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??j4(n,o,s.bytes))}else if(t[rv]===!0){let{version:n,multihash:o,code:s}=t,i=Or(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!==ha)throw new Error(`Version 0 CID must use dag-pb (code: ${ha}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=j4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,ha,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=vn(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 Xo(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,h]=fa(e.subarray(t));return t+=h,u},o=n(),s=ha;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]=Zx(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 hh(s).set(n,e),s}};function Zx(r,e){switch(r[0]){case"Q":{let t=e??Ye;return[Ye.prefix,t.decode(`${Ye.prefix}${r}`)]}case Ye.prefix:{let t=e??Ye;return[Ye.prefix,t.decode(r)]}case ut.prefix:{let t=e??ut;return[ut.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function Jx(r,e,t){let{prefix:n}=t;if(n!==Ye.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 ev(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 ha=112,tv=18;function j4(r,e,t){let n=Hs(r),o=n+Hs(e),s=new Uint8Array(o+t.byteLength);return $s(r,s,0),$s(e,s,n),s.set(t,o),s}var rv=Symbol.for("@ipld/js-cid/CID");var wr={...oh,...Qf,...nh,...Yf,...Xf,...Zf,...Jf,...eh,...rh,...jf},OL={...fh,...ch};function J4(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Z4=J4("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ph=J4("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=ze(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),nv={utf8:Z4,"utf-8":Z4,hex:wr.base16,latin1:ph,ascii:ph,binary:ph,...wr},Wc=nv;function M(r,e="utf8"){let t=Wc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function mh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return ze(i);o+i>e&&(n=ze(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var Qo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function gh(){}var wh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},ov=mh();function sv(r){return globalThis.Buffer!=null?ze(r):ov(r)}var ma=class{len;head;tail;states;constructor(){this.len=0,this.head=new Qo(gh,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Qo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Eh((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(zc,10,Zt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Zt.fromBigInt(e);return this._push(zc,t.length(),t)}uint64Number(e){return this._push(Of,Se(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=Zt.fromBigInt(e).zzEncode();return this._push(zc,t.length(),t)}sint64Number(e){let t=Zt.fromNumber(e).zzEncode();return this._push(zc,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(yh,1,e?1:0)}fixed32(e){return this._push(pa,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Zt.fromBigInt(e);return this._push(pa,4,t.lo)._push(pa,4,t.hi)}fixed64Number(e){let t=Zt.fromNumber(e);return this._push(pa,4,t.lo)._push(pa,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(S4,4,e)}double(e){return this._push(A4,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(yh,1,0):this.uint32(t)._push(av,t,e)}string(e){let t=T4(e);return t!==0?this.uint32(t)._push(Kf,t,e):this._push(yh,1,0)}fork(){return this.states=new wh(this),this.head=this.tail=new Qo(gh,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 Qo(gh,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=sv(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function yh(r,e,t){e[t]=r&255}function iv(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Eh=class extends Qo{next;constructor(e,t){super(iv,e,t),this.next=void 0}};function zc(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 pa(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 av(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ma.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(cv,e,r),this},ma.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(lv,e,r),this});function cv(r,e,t){e.set(r,t)}function lv(r,e,t){r.length<40?Kf(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(M(r),t)}function bh(){return new ma}function re(r,e){let t=bh();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var qs;(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"})(qs||(qs={}));function Yc(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function He(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 Yc("enum",qs.VARINT,t,n)}function ne(r,e){return Yc("message",qs.LENGTH_DELIMITED,r,e)}var Rn=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var rt;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(rt||(rt={}));var xh;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(xh||(xh={}));(function(r){r.codec=()=>He(xh)})(rt||(rt={}));var Gs;(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),rt.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=rt.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)})(Gs||(Gs={}));var Xc;(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),Gs.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 Rn('decode error - map field "entries" had too many elements',"ERR_MAX_LENGTH");s.entries.push(Gs.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)})(Xc||(Xc={}));var Ws;(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)})(Ws||(Ws={}));var Er;(function(r){r.HaveBlock="HaveBlock",r.DontHaveBlock="DontHaveBlock"})(Er||(Er={}));var Qc;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DontHaveBlock=1]="DontHaveBlock"})(Qc||(Qc={}));(function(r){r.codec=()=>He(Qc)})(Er||(Er={}));var zs;(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&&Qc[t.type]!==0&&(n.uint32(16),Er.codec().encode(t.type,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={cid:Ae(0),type:Er.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=Er.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)})(zs||(zs={}));var jo;(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),Xc.codec().encode(t.wantlist,n)),t.blocks!=null)for(let s of t.blocks)n.uint32(26),Ws.codec().encode(s,n);if(t.blockPresences!=null)for(let s of t.blockPresences)n.uint32(34),zs.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=Xc.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 Rn('decode error - map field "blocks" had too many elements',"ERR_MAX_LENGTH");s.blocks.push(Ws.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 Rn('decode error - map field "blockPresences" had too many elements',"ERR_MAX_LENGTH");s.blockPresences.push(zs.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)})(jo||(jo={}));function e8(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 uv=4193648,dv=uv+16;function*t8(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=jo.encode(l).byteLength,{added:u,hasMore:h,newSize:f}=vh(o,l.blocks,a,e,d,fv);a+=u,d=f;let p=h;({added:u,hasMore:h,newSize:f}=vh(n,l.blockPresences,i,e,d,hv)),i+=u,d=f;let m=h;if({added:u,hasMore:h,newSize:f}=vh(t,l.wantlist.entries,s,e,d,pv),s+=u,d=f,c=!p&&!m&&!h,c||(l.wantlist.full=!1),yield jo.encode(l),c)break}}function vh(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>dv)throw new g("Cannot send block as after encoding it is over the max message size","ERR_BLOCK_TOO_LARGE");let u=o+d;if(u>n){a=!0;break}e.push(l),i++,o=u}return{hasMore:a,added:i,newSize:o}}function fv(r){return Rh(3,Ws.encode(r))}function hv(r){return Rh(4,zs.encode(r))}function pv(r){return Rh(1,Gs.encode(r))}function Rh(r,e){let t=Se(r),n=Se(e.byteLength);return t+n+e.byteLength}var jc=class extends me{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnTransientConnections;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??[ua],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.runOnTransientConnections=t.runOnTransientConnections??!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 pr({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnections});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){if(!this.running)return;let{stream:t,connection:n}=e;Promise.resolve().then(async()=>{this.log("incoming new bitswap %s stream from %p",t.protocol,n.remotePeer);let o=()=>{t.status==="open"?t.abort(new g(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`,"ERR_TIMEOUT")):this.log("stream aborted with status %s",t.status)},s=AbortSignal.timeout(this.messageReceiveTimeout);G(1/0,s),s.addEventListener("abort",o),await t.closeWrite(),await Qe(t,i=>$t(i,{maxDataLength:this.maxIncomingMessageSize}),async i=>{for await(let a of i)try{let c=jo.decode(a);this.log("incoming new bitswap %s message from %p on stream",t.protocol,n.remotePeer,t.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:c}}),s.removeEventListener("abort",o),s=AbortSignal.timeout(this.messageReceiveTimeout),G(1/0,s),s.addEventListener("abort",o)}catch(c){this.log.error("error reading incoming bitswap message from %p on stream",n.remotePeer,t.id,c),t.abort(c);break}})}).catch(o=>{this.log.error("error handling incoming stream from %p",n.remotePeer,o),t.abort(o)})}async*findProviders(e,t){t?.onProgress?.(new ge("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnTransientConnection:this.runOnTransientConnections})&&(yield n)}async findAndConnect(e,t){await mr(gr(to(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=e8(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 g("No message to send","ERR_NO_MESSAGE");this.log("sendMessage to %p",e),s?.onProgress?.(new ge("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,ua,s);await a.closeRead();try{await Qe(t8(i,this.maxOutgoingMessageSize),c=>Kt(c),a),await a.close(s)}catch(c){s?.onProgress?.(new ge("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p",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 g("Network isn't running","ERR_NOT_STARTED");t?.onProgress?.(new ge("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),jt(this.libp2p,"peer:identify",t?.signal,{filter:o=>{if(!o.detail.peerId.equals(e))return!1;if(o.detail.protocols.includes(ua))return!0;throw new g(`${e} did not support ${ua}`,"ERR_BITSWAP_UNSUPPORTED_BY_PEER")}})]);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 Rv=Symbol.for("nodejs.util.inspect.custom"),r8=Object.values(wr).map(r=>r.decoder).reduce((r,e)=>r.or(e),wr.identity.decoder),n8=114,Sh=36,_h=37,ga=class{type;multihash;privateKey;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,this.privateKey=e.privateKey,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[la]=!0;toString(){return this.string==null&&(this.string=Ye.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return le.createV1(n8,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return ye(e).equals(this);if(e?.multihash?.bytes!=null)return Z(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[Rv](){return`PeerId(${this.toString()})`}},Zo=class extends ga{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Jo=class extends ga{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},es=class extends ga{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function o8(r){if(r.type==="RSA")return new Zo(r);if(r.type==="Ed25519")return new Jo(r);if(r.type==="secp256k1")return new es(r);throw new g("Not a PeerId","ERR_INVALID_PARAMETERS")}function ye(r,e){if(e=e??r8,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Or(Ye.decode(`z${r}`));return r.startsWith("12D")?new Jo({multihash:t}):r.startsWith("16U")?new es({multihash:t}):new Zo({multihash:t})}return Ze(r8.decode(r))}function Ze(r){try{let e=Or(r);if(e.code===Ht.code){if(e.digest.length===Sh)return new Jo({multihash:e});if(e.digest.length===_h)return new es({multihash:e})}if(e.code===Ce.code)return new Zo({multihash:e})}catch{return Sv(le.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function Sv(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==n8)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Ce.code)return new Zo({multihash:r.multihash});if(e.code===Ht.code){if(e.digest.length===Sh)return new Jo({multihash:r.multihash});if(e.digest.length===_h)return new es({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ht(r,e){return r.length===Sh?new Jo({multihash:Lr(Ht.code,r),privateKey:e}):r.length===_h?new es({multihash:Lr(Ht.code,r),privateKey:e}):new Zo({multihash:await Ce.digest(r),publicKey:r,privateKey:e})}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}var it=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),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=>[ye(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,ye(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return Ys(this.map.keys(),e=>ye(e))}values(){return this.map.values()}get size(){return this.map.size}};var pt=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=ye(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=ye(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Ys(this.set.values(),e=>ye(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}};var qe={get(r=globalThis){let e=r.crypto;if(e==null||e.subtle==null)throw Object.assign(new Error("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"),{code:"ERR_MISSING_WEB_CRYPTO"});return e}};var s8={SHA1:20,SHA256:32,SHA512:64};var Av={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},Iv=async(r,e)=>{let t=await qe.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function i8(r,e){let t=Av[r],n=await qe.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return Iv(n,o)},length:s8[r]}}var nu={};pe(nu,{Ed25519PrivateKey:()=>Cn,Ed25519PublicKey:()=>is,MAX_RSA_KEY_SIZE:()=>ls,RsaPrivateKey:()=>wo,RsaPublicKey:()=>cs,Secp256k1PrivateKey:()=>fs,Secp256k1PublicKey:()=>ds,generateEphemeralKeyPair:()=>U8,generateKeyPair:()=>Ca,generateKeyPairFromSeed:()=>RS,importKey:()=>li,keyStretcher:()=>K8,keysPBM:()=>ni,marshalPrivateKey:()=>f0,marshalPublicKey:()=>d0,supportedKeys:()=>Fn,unmarshalPrivateKey:()=>Sr,unmarshalPublicKey:()=>Gr});var Gh={};pe(Gh,{Ed25519PrivateKey:()=>Cn,Ed25519PublicKey:()=>is,generateKeyPair:()=>OR,generateKeyPairFromSeed:()=>qh,unmarshalEd25519PrivateKey:()=>PR,unmarshalEd25519PublicKey:()=>LR});function Ah(r,e){let t=M(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=ve([new Uint8Array(e-t.length),t])}return t}function br(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function so(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function Tv(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Xs(r,...e){if(!Tv(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function ts(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");so(r.outputLen),so(r.blockLen)}function Qs(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 a8(r,e){Xs(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Zc=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var rs=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Br=(r,e)=>r<<32-e|r>>>e,Jc=(r,e)=>r<<e|r>>>32-e>>>0,oB=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var kv=async()=>{};async function c8(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 kv(),n+=s)}}function Ih(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Mr(r){return typeof r=="string"&&(r=Ih(r)),Xs(r),r}function el(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];Xs(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}var js=class{clone(){return this._cloneInto()}},Cv={}.toString;function l8(r,e){if(e!==void 0&&Cv.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function Zs(r){let e=n=>r().update(Mr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ns(r=32){if(Zc&&typeof Zc.getRandomValues=="function")return Zc.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function Nv(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}var tl=(r,e,t)=>r&e^~r&t,rl=(r,e,t)=>r&e^r&t^e&t,io=class extends js{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=rs(this.buffer)}update(e){Qs(this);let{view:t,buffer:n,blockLen:o}=this;e=Mr(e);let s=e.length;for(let i=0;i<s;){let a=Math.min(o-this.pos,s-i);if(a===o){let c=rs(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){Qs(this),a8(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:s}=this,{pos:i}=this;t[i++]=128,this.buffer.subarray(i).fill(0),this.padOffset>o-i&&(this.process(n,0),i=0);for(let u=i;u<o;u++)t[u]=0;Nv(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=rs(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should 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||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:s,destroyed:i,pos:a}=this;return e.length=o,e.pos=a,e.finished=s,e.destroyed=i,o%t&&e.buffer.set(n),e}};var nl=BigInt(4294967295),Dh=BigInt(32);function u8(r,e=!1){return e?{h:Number(r&nl),l:Number(r>>Dh&nl)}:{h:Number(r>>Dh&nl)|0,l:Number(r&nl)|0}}function Pv(r,e=!1){let t=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let o=0;o<r.length;o++){let{h:s,l:i}=u8(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var Lv=(r,e)=>BigInt(r>>>0)<<Dh|BigInt(e>>>0),Ov=(r,e,t)=>r>>>t,Bv=(r,e,t)=>r<<32-t|e>>>t,Mv=(r,e,t)=>r>>>t|e<<32-t,Uv=(r,e,t)=>r<<32-t|e>>>t,Fv=(r,e,t)=>r<<64-t|e>>>t-32,Vv=(r,e,t)=>r>>>t-32|e<<64-t,Kv=(r,e)=>e,$v=(r,e)=>r,Hv=(r,e,t)=>r<<t|e>>>32-t,qv=(r,e,t)=>e<<t|r>>>32-t,Gv=(r,e,t)=>e<<t-32|r>>>64-t,Wv=(r,e,t)=>r<<t-32|e>>>64-t;function zv(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var Yv=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),Xv=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,Qv=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),jv=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,Zv=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),Jv=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var eR={fromBig:u8,split:Pv,toBig:Lv,shrSH:Ov,shrSL:Bv,rotrSH:Mv,rotrSL:Uv,rotrBH:Fv,rotrBL:Vv,rotr32H:Kv,rotr32L:$v,rotlSH:Hv,rotlSL:qv,rotlBH:Gv,rotlBL:Wv,add:zv,add3L:Yv,add3H:Xv,add4L:Qv,add4H:jv,add5H:Jv,add5L:Zv},fe=eR;var[tR,rR]=fe.split(["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))),ao=new Uint32Array(80),co=new Uint32Array(80),Th=class extends io{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}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:h,Gh:f,Gl:p,Hh:m,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,h,f,p,m,y]}set(e,t,n,o,s,i,a,c,l,d,u,h,f,p,m,y){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=h|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=y|0}process(e,t){for(let E=0;E<16;E++,t+=4)ao[E]=e.getUint32(t),co[E]=e.getUint32(t+=4);for(let E=16;E<80;E++){let x=ao[E-15]|0,v=co[E-15]|0,I=fe.rotrSH(x,v,1)^fe.rotrSH(x,v,8)^fe.shrSH(x,v,7),S=fe.rotrSL(x,v,1)^fe.rotrSL(x,v,8)^fe.shrSL(x,v,7),R=ao[E-2]|0,T=co[E-2]|0,L=fe.rotrSH(R,T,19)^fe.rotrBH(R,T,61)^fe.shrSH(R,T,6),N=fe.rotrSL(R,T,19)^fe.rotrBL(R,T,61)^fe.shrSL(R,T,6),B=fe.add4L(S,N,co[E-7],co[E-16]),k=fe.add4H(B,I,L,ao[E-7],ao[E-16]);ao[E]=k|0,co[E]=B|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:h,Fh:f,Fl:p,Gh:m,Gl:y,Hh:w,Hl:b}=this;for(let E=0;E<80;E++){let x=fe.rotrSH(u,h,14)^fe.rotrSH(u,h,18)^fe.rotrBH(u,h,41),v=fe.rotrSL(u,h,14)^fe.rotrSL(u,h,18)^fe.rotrBL(u,h,41),I=u&f^~u&m,S=h&p^~h&y,R=fe.add5L(b,v,S,rR[E],co[E]),T=fe.add5H(R,w,x,I,tR[E],ao[E]),L=R|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),B=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),k=n&s^n&a^s&a,X=o&i^o&c^i&c;w=m|0,b=y|0,m=f|0,y=p|0,f=u|0,p=h|0,{h:u,l:h}=fe.add(l|0,d|0,T|0,L|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let D=fe.add3L(L,B,X);n=fe.add3H(D,T,N,k),o=D|0}({h:n,l:o}=fe.add(this.Ah|0,this.Al|0,n|0,o|0)),{h:s,l:i}=fe.add(this.Bh|0,this.Bl|0,s|0,i|0),{h:a,l:c}=fe.add(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:d}=fe.add(this.Dh|0,this.Dl|0,l|0,d|0),{h:u,l:h}=fe.add(this.Eh|0,this.El|0,u|0,h|0),{h:f,l:p}=fe.add(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:y}=fe.add(this.Gh|0,this.Gl|0,m|0,y|0),{h:w,l:b}=fe.add(this.Hh|0,this.Hl|0,w|0,b|0),this.set(n,o,s,i,a,c,l,d,u,h,f,p,m,y,w,b)}roundClean(){ao.fill(0),co.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var lo=Zs(()=>new Th);var sl={};pe(sl,{abytes:()=>Js,bitGet:()=>lR,bitLen:()=>cR,bitMask:()=>ya,bitSet:()=>uR,bytesToHex:()=>_n,bytesToNumberBE:()=>An,bytesToNumberLE:()=>Ur,concatBytes:()=>Dn,createHmacDrbg:()=>Nh,ensureBytes:()=>Fe,equalBytes:()=>iR,hexToBytes:()=>os,hexToNumber:()=>Ch,isBytes:()=>uo,numberToBytesBE:()=>fo,numberToBytesLE:()=>In,numberToHexUnpadded:()=>p8,numberToVarBytesBE:()=>sR,utf8ToBytes:()=>aR,validateObject:()=>xr});var h8=BigInt(0),ol=BigInt(1),nR=BigInt(2);function uo(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Js(r){if(!uo(r))throw new Error("Uint8Array expected")}var oR=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function _n(r){Js(r);let e="";for(let t=0;t<r.length;t++)e+=oR[r[t]];return e}function p8(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function Ch(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var Sn={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function d8(r){if(r>=Sn._0&&r<=Sn._9)return r-Sn._0;if(r>=Sn._A&&r<=Sn._F)return r-(Sn._A-10);if(r>=Sn._a&&r<=Sn._f)return r-(Sn._a-10)}function os(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);let e=r.length,t=e/2;if(e%2)throw new Error("padded 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=d8(r.charCodeAt(s)),a=d8(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}function An(r){return Ch(_n(r))}function Ur(r){return Js(r),Ch(_n(Uint8Array.from(r).reverse()))}function fo(r,e){return os(r.toString(16).padStart(e*2,"0"))}function In(r,e){return fo(r,e).reverse()}function sR(r){return os(p8(r))}function Fe(r,e,t){let n;if(typeof e=="string")try{n=os(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(uo(e))n=Uint8Array.from(e);else throw new Error(`${r} must be hex string or Uint8Array`);let o=n.length;if(typeof t=="number"&&o!==t)throw new Error(`${r} expected ${t} bytes, got ${o}`);return n}function Dn(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];Js(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 iR(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function aR(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function cR(r){let e;for(e=0;r>h8;r>>=ol,e+=1);return e}function lR(r,e){return r>>BigInt(e)&ol}function uR(r,e,t){return r|(t?ol:h8)<<BigInt(e)}var ya=r=>(nR<<BigInt(r-1))-ol,kh=r=>new Uint8Array(r),f8=r=>Uint8Array.from(r);function Nh(r,e,t){if(typeof r!="number"||r<2)throw new Error("hashLen must be a number");if(typeof e!="number"||e<2)throw new Error("qByteLen must be a number");if(typeof t!="function")throw new Error("hmacFn must be a function");let n=kh(r),o=kh(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=kh())=>{o=a(f8([0]),u),n=a(),u.length!==0&&(o=a(f8([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,h=[];for(;u<e;){n=a();let f=n.slice();h.push(f),u+=n.length}return Dn(...h)};return(u,h)=>{i(),c(u);let f;for(;!(f=h(l()));)c();return i(),f}}var dR={bigint:r=>typeof r=="bigint",function:r=>typeof r=="function",boolean:r=>typeof r=="boolean",string:r=>typeof r=="string",stringOrUint8Array:r=>typeof r=="string"||uo(r),isSafeInteger:r=>Number.isSafeInteger(r),array:r=>Array.isArray(r),field:(r,e)=>e.Fp.isValid(r),hash:r=>typeof r=="function"&&Number.isSafeInteger(r.outputLen)};function xr(r,e,t={}){let n=(o,s,i)=>{let a=dR[s];if(typeof a!="function")throw new Error(`Invalid validator "${s}", expected function`);let c=r[o];if(!(i&&c===void 0)&&!a(c,r))throw new Error(`Invalid param ${String(o)}=${c} (${typeof c}), expected ${s}`)};for(let[o,s]of Object.entries(e))n(o,s,!1);for(let[o,s]of Object.entries(t))n(o,s,!0);return r}var dt=BigInt(0),Ge=BigInt(1),ss=BigInt(2),fR=BigInt(3),Ph=BigInt(4),m8=BigInt(5),g8=BigInt(8),hR=BigInt(9),pR=BigInt(16);function Ie(r,e){let t=r%e;return t>=dt?t:e+t}function Lh(r,e,t){if(t<=dt||e<dt)throw new Error("Expected power/modulo > 0");if(t===Ge)return dt;let n=Ge;for(;e>dt;)e&Ge&&(n=n*r%t),r=r*r%t,e>>=Ge;return n}function Ve(r,e,t){let n=r;for(;e-- >dt;)n*=n,n%=t;return n}function il(r,e){if(r===dt||e<=dt)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Ie(r,e),n=e,o=dt,s=Ge,i=Ge,a=dt;for(;t!==dt;){let l=n/t,d=n%t,u=o-i*l,h=s-a*l;n=t,t=d,o=i,s=a,i=u,a=h}if(n!==Ge)throw new Error("invert: does not exist");return Ie(o,e)}function mR(r){let e=(r-Ge)/ss,t,n,o;for(t=r-Ge,n=0;t%ss===dt;t/=ss,n++);for(o=ss;o<r&&Lh(o,e,r)!==r-Ge;o++);if(n===1){let i=(r+Ge)/Ph;return function(c,l){let d=c.pow(l,i);if(!c.eql(c.sqr(d),l))throw new Error("Cannot find square root");return d}}let s=(t+Ge)/ss;return function(a,c){if(a.pow(c,e)===a.neg(a.ONE))throw new Error("Cannot find square root");let l=n,d=a.pow(a.mul(a.ONE,o),t),u=a.pow(c,s),h=a.pow(c,t);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let f=1;for(let m=a.sqr(h);f<l&&!a.eql(m,a.ONE);f++)m=a.sqr(m);let p=a.pow(d,Ge<<BigInt(l-f-1));d=a.sqr(p),u=a.mul(u,p),h=a.mul(h,d),l=f}return u}}function gR(r){if(r%Ph===fR){let e=(r+Ge)/Ph;return function(n,o){let s=n.pow(o,e);if(!n.eql(n.sqr(s),o))throw new Error("Cannot find square root");return s}}if(r%g8===m8){let e=(r-m8)/g8;return function(n,o){let s=n.mul(o,ss),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,ss),i),l=n.mul(a,n.sub(c,n.ONE));if(!n.eql(n.sqr(l),o))throw new Error("Cannot find square root");return l}}return r%pR,mR(r)}var y8=(r,e)=>(Ie(r,e)&Ge)===Ge,yR=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Oh(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=yR.reduce((n,o)=>(n[o]="function",n),e);return xr(r,t)}function wR(r,e,t){if(t<dt)throw new Error("Expected power > 0");if(t===dt)return r.ONE;if(t===Ge)return e;let n=r.ONE,o=e;for(;t>dt;)t&Ge&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Ge;return n}function ER(r,e){let t=new Array(e.length),n=e.reduce((s,i,a)=>r.is0(i)?s:(t[a]=s,r.mul(s,i)),r.ONE),o=r.inv(n);return e.reduceRight((s,i,a)=>r.is0(i)?s:(t[a]=r.mul(s,t[a]),r.mul(s,i)),o),t}function Bh(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function al(r,e,t=!1,n={}){if(r<=dt)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=Bh(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=gR(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:ya(o),ZERO:dt,ONE:Ge,create:c=>Ie(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return dt<=c&&c<r},is0:c=>c===dt,isOdd:c=>(c&Ge)===Ge,neg:c=>Ie(-c,r),eql:(c,l)=>c===l,sqr:c=>Ie(c*c,r),add:(c,l)=>Ie(c+l,r),sub:(c,l)=>Ie(c-l,r),mul:(c,l)=>Ie(c*l,r),pow:(c,l)=>wR(a,c,l),div:(c,l)=>Ie(c*il(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>il(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>ER(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?In(c,s):fo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Ur(c):An(c)}});return Object.freeze(a)}function w8(r,e){if(!r.isOdd)throw new Error("Field doesn't have isOdd");let t=r.sqrt(e);return r.isOdd(t)?r.neg(t):t}function E8(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 Mh(r){let e=E8(r);return e+Math.ceil(e/2)}function b8(r,e,t=!1){let n=r.length,o=E8(e),s=Mh(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?An(r):Ur(r),a=Ie(i,e-Ge)+Ge;return t?In(a,o):fo(a,o)}var xR=BigInt(0),Uh=BigInt(1);function cl(r,e){let t=(o,s)=>{let i=s.negate();return o?i:s},n=o=>{let s=Math.ceil(e/o)+1,i=2**(o-1);return{windows:s,windowSize:i}};return{constTimeNegate:t,unsafeLadder(o,s){let i=r.ZERO,a=o;for(;s>xR;)s&Uh&&(i=i.add(a)),a=a.double(),s>>=Uh;return i},precomputeWindow(o,s){let{windows:i,windowSize:a}=n(s),c=[],l=o,d=l;for(let u=0;u<i;u++){d=l,c.push(d);for(let h=1;h<a;h++)d=d.add(l),c.push(d);l=d.double()}return c},wNAF(o,s,i){let{windows:a,windowSize:c}=n(o),l=r.ZERO,d=r.BASE,u=BigInt(2**o-1),h=2**o,f=BigInt(o);for(let p=0;p<a;p++){let m=p*c,y=Number(i&u);i>>=f,y>c&&(y-=h,i+=Uh);let w=m,b=m+Math.abs(y)-1,E=p%2!==0,x=y<0;y===0?d=d.add(t(E,s[w])):l=l.add(t(x,s[b]))}return{p:l,f:d}},wNAFCached(o,s,i,a){let c=o._WINDOW_SIZE||1,l=s.get(o);return l||(l=this.precomputeWindow(o,c),c!==1&&s.set(o,a(l))),this.wNAF(c,l,i)}}}function wa(r){return Oh(r.Fp),xr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Bh(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Fr=BigInt(0),Jt=BigInt(1),ll=BigInt(2),vR=BigInt(8),RR={zip215:!0};function SR(r){let e=wa(r);return xr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function ul(r){let e=SR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=ll<<BigInt(a*8)-Jt,d=t.create,u=e.uvRatio||((C,A)=>{try{return{isValid:!0,value:t.sqrt(C*t.inv(A))}}catch{return{isValid:!1,value:Fr}}}),h=e.adjustScalarBytes||(C=>C),f=e.domain||((C,A,U)=>{if(A.length||U)throw new Error("Contexts/pre-hash are not supported");return C}),p=C=>typeof C=="bigint"&&Fr<C,m=(C,A)=>p(C)&&p(A)&&C<A,y=C=>C===Fr||m(C,l);function w(C,A){if(m(C,A))return C;throw new Error(`Expected valid scalar < ${A}, got ${typeof C} ${C}`)}function b(C){return C===Fr?C:w(C,n)}let E=new Map;function x(C){if(!(C instanceof v))throw new Error("ExtendedPoint expected")}class v{constructor(A,U,V,H){if(this.ex=A,this.ey=U,this.ez=V,this.et=H,!y(A))throw new Error("x required");if(!y(U))throw new Error("y required");if(!y(V))throw new Error("z required");if(!y(H))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(A){if(A instanceof v)throw new Error("extended point not allowed");let{x:U,y:V}=A||{};if(!y(U)||!y(V))throw new Error("invalid affine point");return new v(U,V,Jt,d(U*V))}static normalizeZ(A){let U=t.invertBatch(A.map(V=>V.ez));return A.map((V,H)=>V.toAffine(U[H])).map(v.fromAffine)}_setWindowSize(A){this._WINDOW_SIZE=A,E.delete(this)}assertValidity(){let{a:A,d:U}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:H,ez:se,et:ie}=this,de=d(V*V),ae=d(H*H),ue=d(se*se),Me=d(ue*ue),Ne=d(de*A),wt=d(ue*d(Ne+ae)),Et=d(Me+d(U*d(de*ae)));if(wt!==Et)throw new Error("bad point: equation left != right (1)");let lt=d(V*H),Ct=d(se*ie);if(lt!==Ct)throw new Error("bad point: equation left != right (2)")}equals(A){x(A);let{ex:U,ey:V,ez:H}=this,{ex:se,ey:ie,ez:de}=A,ae=d(U*de),ue=d(se*H),Me=d(V*de),Ne=d(ie*H);return ae===ue&&Me===Ne}is0(){return this.equals(v.ZERO)}negate(){return new v(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:A}=e,{ex:U,ey:V,ez:H}=this,se=d(U*U),ie=d(V*V),de=d(ll*d(H*H)),ae=d(A*se),ue=U+V,Me=d(d(ue*ue)-se-ie),Ne=ae+ie,wt=Ne-de,Et=ae-ie,lt=d(Me*wt),Ct=d(Ne*Et),En=d(Me*Et),Ho=d(wt*Ne);return new v(lt,Ct,Ho,En)}add(A){x(A);let{a:U,d:V}=e,{ex:H,ey:se,ez:ie,et:de}=this,{ex:ae,ey:ue,ez:Me,et:Ne}=A;if(U===BigInt(-1)){let a4=d((se-H)*(ue+ae)),c4=d((se+H)*(ue-ae)),If=d(c4-a4);if(If===Fr)return this.double();let l4=d(ie*ll*Ne),u4=d(de*ll*Me),d4=u4+l4,f4=c4+a4,h4=u4-l4,_b=d(d4*If),Ab=d(f4*h4),Ib=d(d4*h4),Db=d(If*f4);return new v(_b,Ab,Db,Ib)}let wt=d(H*ae),Et=d(se*ue),lt=d(de*V*Ne),Ct=d(ie*Me),En=d((H+se)*(ae+ue)-wt-Et),Ho=Ct-lt,ca=Ct+lt,i4=d(Et-U*wt),xb=d(En*Ho),vb=d(ca*i4),Rb=d(En*i4),Sb=d(Ho*ca);return new v(xb,vb,Sb,Rb)}subtract(A){return this.add(A.negate())}wNAF(A){return R.wNAFCached(this,E,A,v.normalizeZ)}multiply(A){let{p:U,f:V}=this.wNAF(w(A,n));return v.normalizeZ([U,V])[0]}multiplyUnsafe(A){let U=b(A);return U===Fr?S:this.equals(S)||U===Jt?this:this.equals(I)?this.wNAF(U).p:R.unsafeLadder(this,U)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return R.unsafeLadder(this,n).is0()}toAffine(A){let{ex:U,ey:V,ez:H}=this,se=this.is0();A==null&&(A=se?vR:t.inv(H));let ie=d(U*A),de=d(V*A),ae=d(H*A);if(se)return{x:Fr,y:Jt};if(ae!==Jt)throw new Error("invZ was invalid");return{x:ie,y:de}}clearCofactor(){let{h:A}=e;return A===Jt?this:this.multiplyUnsafe(A)}static fromHex(A,U=!1){let{d:V,a:H}=e,se=t.BYTES;A=Fe("pointHex",A,se);let ie=A.slice(),de=A[se-1];ie[se-1]=de&-129;let ae=Ur(ie);ae===Fr||(U?w(ae,l):w(ae,t.ORDER));let ue=d(ae*ae),Me=d(ue-Jt),Ne=d(V*ue-H),{isValid:wt,value:Et}=u(Me,Ne);if(!wt)throw new Error("Point.fromHex: invalid y coordinate");let lt=(Et&Jt)===Jt,Ct=(de&128)!==0;if(!U&&Et===Fr&&Ct)throw new Error("Point.fromHex: x=0 and x_0=1");return Ct!==lt&&(Et=d(-Et)),v.fromAffine({x:Et,y:ae})}static fromPrivateKey(A){return N(A).point}toRawBytes(){let{x:A,y:U}=this.toAffine(),V=In(U,t.BYTES);return V[V.length-1]|=A&Jt?128:0,V}toHex(){return _n(this.toRawBytes())}}v.BASE=new v(e.Gx,e.Gy,Jt,d(e.Gx*e.Gy)),v.ZERO=new v(Fr,Jt,Jt,Fr);let{BASE:I,ZERO:S}=v,R=cl(v,a*8);function T(C){return Ie(C,n)}function L(C){return T(Ur(C))}function N(C){let A=a;C=Fe("private key",C,A);let U=Fe("hashed private key",s(C),2*A),V=h(U.slice(0,A)),H=U.slice(A,2*A),se=L(V),ie=I.multiply(se),de=ie.toRawBytes();return{head:V,prefix:H,scalar:se,point:ie,pointBytes:de}}function B(C){return N(C).pointBytes}function k(C=new Uint8Array,...A){let U=Dn(...A);return L(s(f(U,Fe("context",C),!!o)))}function X(C,A,U={}){C=Fe("message",C),o&&(C=o(C));let{prefix:V,scalar:H,pointBytes:se}=N(A),ie=k(U.context,V,C),de=I.multiply(ie).toRawBytes(),ae=k(U.context,de,se,C),ue=T(ie+ae*H);b(ue);let Me=Dn(de,In(ue,t.BYTES));return Fe("result",Me,a*2)}let D=RR;function P(C,A,U,V=D){let{context:H,zip215:se}=V,ie=t.BYTES;C=Fe("signature",C,2*ie),A=Fe("message",A),o&&(A=o(A));let de=Ur(C.slice(ie,2*ie)),ae,ue,Me;try{ae=v.fromHex(U,se),ue=v.fromHex(C.slice(0,ie),se),Me=I.multiplyUnsafe(de)}catch{return!1}if(!se&&ae.isSmallOrder())return!1;let Ne=k(H,ue.toRawBytes(),ae.toRawBytes(),A);return ue.add(ae.multiplyUnsafe(Ne)).subtract(Me).clearCofactor().equals(v.ZERO)}return I._setWindowSize(8),{CURVE:e,getPublicKey:B,sign:X,verify:P,ExtendedPoint:v,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(C=8,A=v.BASE){return A._setWindowSize(C),A.multiply(BigInt(3)),A}}}}var Ea=BigInt(0),Fh=BigInt(1);function _R(r){return xr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function x8(r){let e=_R(r),{P:t}=e,n=E=>Ie(E,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(E=>E),c=e.powPminus2||(E=>Lh(E,t-BigInt(2),t));function l(E,x,v){let I=n(E*(x-v));return x=n(x-I),v=n(v+I),[x,v]}function d(E){if(typeof E=="bigint"&&Ea<=E&&E<t)return E;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function h(E,x){let v=d(E),I=d(x),S=v,R=Fh,T=Ea,L=v,N=Fh,B=Ea,k;for(let D=BigInt(o-1);D>=Ea;D--){let P=I>>D&Fh;B^=P,k=l(B,R,L),R=k[0],L=k[1],k=l(B,T,N),T=k[0],N=k[1],B=P;let $=R+T,C=n($*$),A=R-T,U=n(A*A),V=C-U,H=L+N,se=L-N,ie=n(se*$),de=n(H*A),ae=ie+de,ue=ie-de;L=n(ae*ae),N=n(S*n(ue*ue)),R=n(C*U),T=n(V*(C+n(u*V)))}k=l(B,R,L),R=k[0],L=k[1],k=l(B,T,N),T=k[0],N=k[1];let X=c(T);return n(R*X)}function f(E){return In(n(E),s)}function p(E){let x=Fe("u coordinate",E,s);return i===32&&(x[31]&=127),Ur(x)}function m(E){let x=Fe("scalar",E),v=x.length;if(v!==s&&v!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${v}`);return Ur(a(x))}function y(E,x){let v=p(x),I=m(E),S=h(v,I);if(S===Ea)throw new Error("Invalid private or public key received");return f(S)}let w=f(e.Gu);function b(E){return y(E,w)}return{scalarMult:y,scalarMultBase:b,getSharedSecret:(E,x)=>y(E,x),getPublicKey:E=>b(E),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var ba=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),v8=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),kB=BigInt(0),AR=BigInt(1),Vh=BigInt(2),IR=BigInt(5),R8=BigInt(10),DR=BigInt(20),TR=BigInt(40),S8=BigInt(80);function _8(r){let e=ba,n=r*r%e*r%e,o=Ve(n,Vh,e)*n%e,s=Ve(o,AR,e)*r%e,i=Ve(s,IR,e)*s%e,a=Ve(i,R8,e)*i%e,c=Ve(a,DR,e)*a%e,l=Ve(c,TR,e)*c%e,d=Ve(l,S8,e)*l%e,u=Ve(d,S8,e)*l%e,h=Ve(u,R8,e)*i%e;return{pow_p_5_8:Ve(h,Vh,e)*r%e,b2:n}}function A8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function kR(r,e){let t=ba,n=Ie(e*e*e,t),o=Ie(n*n*e,t),s=_8(r*o).pow_p_5_8,i=Ie(r*n*s,t),a=Ie(e*i*i,t),c=i,l=Ie(i*v8,t),d=a===r,u=a===Ie(-r,t),h=a===Ie(-r*v8,t);return d&&(i=c),(u||h)&&(i=l),y8(i,t)&&(i=Ie(-i,t)),{isValid:d||u,value:i}}var Tn=al(ba,void 0,!0),Kh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Tn,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:lo,randomBytes:ns,adjustScalarBytes:A8,uvRatio:kR},ei=ul(Kh);function I8(r,e,t){if(e.length>255)throw new Error("Context is too big");return el(Ih("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var CB=ul({...Kh,domain:I8}),NB=ul({...Kh,domain:I8,prehash:lo}),xa=x8({P:ba,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=ba,{pow_p_5_8:t,b2:n}=_8(r);return Ie(Ve(t,BigInt(3),e)*n,e)},adjustScalarBytes:A8,randomBytes:ns});var CR=(Tn.ORDER+BigInt(3))/BigInt(8),PB=Tn.pow(Vh,CR),LB=Tn.sqrt(Tn.neg(Tn.ONE)),OB=(Tn.ORDER-BigInt(5))/BigInt(8),BB=BigInt(486662);var MB=w8(Tn,Tn.neg(BigInt(486664)));var UB=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),FB=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),VB=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),KB=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var $B=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ti=32,kn=64,dl=32;function D8(){let r=ei.utils.randomPrivateKey(),e=ei.getPublicKey(r);return{privateKey:N8(r,e),publicKey:e}}function T8(r){if(r.length!==dl)throw new TypeError('"seed" must be 32 bytes in length.');if(!(r instanceof Uint8Array))throw new TypeError('"seed" must be a node.js Buffer, or Uint8Array.');let e=r,t=ei.getPublicKey(e);return{privateKey:N8(e,t),publicKey:t}}function k8(r,e){let t=r.subarray(0,dl);return ei.sign(e instanceof Uint8Array?e:e.subarray(),t)}function C8(r,e,t){return ei.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function N8(r,e){let t=new Uint8Array(kn);for(let n=0;n<dl;n++)t[n]=r[n],t[dl+n]=e[n];return t}var $h={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function fl(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=qe.get();t*=8;async function c(u,h){let f=a.getRandomValues(new Uint8Array(s)),p=a.getRandomValues(new Uint8Array(n)),m={name:e,iv:p};typeof h=="string"&&(h=M(h));let y;if(h.length===0){y=await a.subtle.importKey("jwk",$h,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",$h,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(m,y,u);return ve([f,m.iv,new Uint8Array(w)])}async function l(u,h){let f=u.subarray(0,s),p=u.subarray(s,s+n),m=u.subarray(s+n),y={name:e,iv:p};typeof h=="string"&&(h=M(h));let w;if(h.length===0)try{let E={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,x,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",$h,{name:"AES-GCM"},!0,["decrypt"])}else{let E={name:"PBKDF2",salt:f,iterations:i,hash:{name:o}},x=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,x,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(y,w,m);return new Uint8Array(b)}return{encrypt:c,decrypt:l}}async function ri(r,e){let n=await fl().encrypt(r,e);return st.encode(n)}var ni={};pe(ni,{KeyType:()=>Ke,PrivateKey:()=>Kr,PublicKey:()=>Vr});var Ke;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ke||(Ke={}));var Hh;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(Hh||(Hh={}));(function(r){r.codec=()=>He(Hh)})(Ke||(Ke={}));var Vr;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ke.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ke.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Vr||(Vr={}));var Kr;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ke.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.Type=Ke.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Kr||(Kr={}));var is=class{_key;constructor(e){this._key=oi(e,ti)}verify(e,t){return C8(this._key,t,e)}marshal(){return this._key}get bytes(){return Vr.encode({Type:Ke.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return br(e)?e.then(({bytes:t})=>t):e.bytes}},Cn=class{_key;_publicKey;constructor(e,t){this._key=oi(e,kn),this._publicKey=oi(t,ti)}sign(e){return k8(this._key,e)}get public(){return new is(this._publicKey)}marshal(){return this._key}get bytes(){return Kr.encode({Type:Ke.Ed25519,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=Ce.digest(this.bytes),t;return br(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=Ht.digest(this.public.bytes);return Ye.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function PR(r){if(r.length>kn){r=oi(r,kn+ti);let n=r.subarray(0,kn),o=r.subarray(kn,r.length);return new Cn(n,o)}r=oi(r,kn);let e=r.subarray(0,kn),t=r.subarray(ti);return new Cn(e,t)}function LR(r){return r=oi(r,ti),new is(r)}async function OR(){let{privateKey:r,publicKey:e}=D8();return new Cn(r,e)}async function qh(r){let{privateKey:e,publicKey:t}=T8(r);return new Cn(e,t)}function oi(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new g(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}function O(r,e="utf8"){let t=Wc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var L8={"P-256":256,"P-384":384,"P-521":521},BR=Object.keys(L8),Wh=BR.join(" / ");async function O8(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${Wh}`,"ERR_INVALID_CURVE");let e=await qe.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await qe.get().subtle.importKey("jwk",UR(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await qe.get().subtle.importKey("jwk",M8(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await qe.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,L8[r]);return new Uint8Array(l,0,l.byteLength)},n=await qe.get().subtle.exportKey("jwk",e.publicKey);return{key:MR(n),genSharedKey:t}}var B8={"P-256":32,"P-384":48,"P-521":66};function MR(r){if(r.crv==null||r.x==null||r.y==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new g(`Unknown curve: ${r.crv}. Must be ${Wh}`,"ERR_INVALID_CURVE");let e=B8[r.crv];return ve([Uint8Array.from([4]),Ah(r.x,e),Ah(r.y,e)],1+e*2)}function M8(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${Wh}`,"ERR_INVALID_CURVE");let t=B8[r];if(!Z(e.subarray(0,1),Uint8Array.from([4])))throw new g("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:O(e.subarray(1,t+1),"base64url"),y:O(e.subarray(1+t),"base64url"),ext:!0}}var UR=(r,e)=>({...M8(r,e.public),d:O(e.private,"base64url")});var U8=O8;async function F8(r,e){let t=st.decode(r);return fl().decrypt(t,e)}var V8={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function K8(r,e,t){let n=V8[r];if(n==null){let b=Object.keys(V8).join(" / ");throw new g(`unknown cipher type '${r}'. Must be ${b}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new g("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=M("key expansion"),c=2*(s+o+i),l=await i8(e,t),d=await l.digest(a),u=[],h=0;for(;h<c;){let b=await l.digest(ve([d,a])),E=b.length;h+E>c&&(E=c-h),u.push(b),h+=E,d=await l.digest(d)}let f=c/2,p=ve(u),m=p.subarray(0,f),y=p.subarray(f,c),w=b=>({iv:b.subarray(0,s),cipherKey:b.subarray(s,s+o),macKey:b.subarray(s+o)});return{k1:w(m),k2:w(y)}}var n0={};pe(n0,{MAX_RSA_KEY_SIZE:()=>ls,RsaPrivateKey:()=>wo,RsaPublicKey:()=>cs,fromJwk:()=>cS,generateKeyPair:()=>lS,unmarshalRsaPrivateKey:()=>t0,unmarshalRsaPublicKey:()=>aS});function mt(r){if(isNaN(r)||r<=0)throw new g("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return ns(r)}var yo={};pe(yo,{exportToPem:()=>nS,importFromPem:()=>e0,jwkToPkcs1:()=>JR,jwkToPkix:()=>tS,pkcs1ToJwk:()=>ZR,pkixToJwk:()=>eS});var hl=class extends js{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ts(e);let n=Mr(t);if(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 o=this.blockLen,s=new Uint8Array(o);s.set(n.length>o?e.create().update(n).digest():n);for(let i=0;i<s.length;i++)s[i]^=54;this.iHash.update(s),this.oHash=e.create();for(let i=0;i<s.length;i++)s[i]^=106;this.oHash.update(s),s.fill(0)}update(e){return Qs(this),this.iHash.update(e),this}digestInto(e){Qs(this),Xs(e,this.outputLen),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||(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}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ho=(r,e,t)=>new hl(r,e).update(t).digest();ho.create=(r,e)=>new hl(r,e);function $8(r,e,t,n){ts(r);let o=l8({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(so(s),so(i),so(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Mr(e),l=Mr(t),d=new Uint8Array(i),u=ho.create(r,c),h=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:h}}function H8(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function q8(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=$8(r,e,t,n),l,d=new Uint8Array(4),u=rs(d),h=new Uint8Array(a.outputLen);for(let f=1,p=0;p<s;f++,p+=a.outputLen){let m=i.subarray(p,p+a.outputLen);u.setInt32(0,f,!1),(l=c._cloneInto(l)).update(d).digestInto(h),m.set(h.subarray(0,m.length));for(let y=1;y<o;y++){a._cloneInto(l).update(h).digestInto(h);for(let w=0;w<m.length;w++)m[w]^=h[w]}}return H8(a,c,i,l,h)}async function zh(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=$8(r,e,t,n),d,u=new Uint8Array(4),h=rs(u),f=new Uint8Array(c.outputLen);for(let p=1,m=0;m<s;p++,m+=c.outputLen){let y=a.subarray(m,m+c.outputLen);h.setInt32(0,p,!1),(d=l._cloneInto(d)).update(u).digestInto(f),y.set(f.subarray(0,y.length)),await c8(o-1,i,()=>{c._cloneInto(d).update(f).digestInto(f);for(let w=0;w<y.length;w++)y[w]^=f[w]})}return H8(c,l,a,d,f)}var we=Xe(G8());function as(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 po(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 gl(...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 Xh(){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=as(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,as(s,8)-n}function W8(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=po(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=po(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 z8(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 qt(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 NM=Math.log(2);function yl(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function Qh(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 Bn(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 Ra=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return Qh(this.items)}},va=[new Uint8Array([1])],Y8="0123456789";var ai="",Hr=new ArrayBuffer(0),jh=new Uint8Array(0),Sa="EndOfContent",Q8="OCTET STRING",j8="BIT STRING";function Mn(r){var e;return e=class extends r{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?we.BufferSourceConverter.toUint8Array(s.valueHex):jh}get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}fromBER(n,o,s){let i=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!Bn(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",Hr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:we.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Pn=class{constructor({blockLength:e=0,error:t=ai,warnings:n=[],valueBeforeDecode:o=jh}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=we.BufferSourceConverter.toUint8Array(o)}static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:we.Convert.ToHex(this.valueBeforeDecodeView)}}};Pn.NAME="baseBlock";var Lt=class extends Pn{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'")}};Lt.NAME="valueBlock";var wl=class extends Mn(Pn){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?we.BufferSourceConverter.toUint8Array(e.valueHex):jh,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",Hr}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=po(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=we.BufferSourceConverter.toUint8Array(e);if(!Bn(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 h=new Uint8Array(d);for(let f=0;f<l.length;f++)h[f]=l[f];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let h=0;h<c;h++)u[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=as(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}}};wl.NAME="identificationBlock";var El=class extends Pn{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=we.BufferSourceConverter.toUint8Array(e);if(!Bn(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=as(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=po(this.length,8);if(o.byteLength>127)return this.error="Too big length",Hr;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}}};El.NAME="lengthBlock";var W={},xt=class extends Pn{constructor({name:e=ai,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new wl(o),this.lenBlock=new El(o),this.valueBlock=s?new s(o):new Lt(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 Ra;t||Z8(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?Hr: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():we.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueBeforeDecodeView)}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return z8(t,n)}};xt.NAME="BaseBlock";function Z8(r){if(r instanceof W.Constructed)for(let e of r.valueBlock.value)Z8(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var bl=class extends xt{constructor({value:e=ai,...t}={},n){super(t,n),e&&this.fromString(e)}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=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}'`}};bl.NAME="BaseStringBlock";var xl=class extends Mn(Lt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};xl.NAME="PrimitiveValueBlock";var J8,vl=class extends xt{constructor(e={}){super(e,xl),this.idBlock.isConstructed=!1}};J8=vl;W.Primitive=J8;vl.NAME="PRIMITIVE";function zR(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 tu(r,e=0,t=r.length){let n=e,o=new xt({},Lt),s=new Pn;if(!Bn(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=xt;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=W.EndOfContent;break;case 1:c=W.Boolean;break;case 2:c=W.Integer;break;case 3:c=W.BitString;break;case 4:c=W.OctetString;break;case 5:c=W.Null;break;case 6:c=W.ObjectIdentifier;break;case 10:c=W.Enumerated;break;case 12:c=W.Utf8String;break;case 13:c=W.RelativeObjectIdentifier;break;case 14:c=W.TIME;break;case 15:return o.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:o};case 16:c=W.Sequence;break;case 17:c=W.Set;break;case 18:c=W.NumericString;break;case 19:c=W.PrintableString;break;case 20:c=W.TeletexString;break;case 21:c=W.VideotexString;break;case 22:c=W.IA5String;break;case 23:c=W.UTCTime;break;case 24:c=W.GeneralizedTime;break;case 25:c=W.GraphicString;break;case 26:c=W.VisibleString;break;case 27:c=W.GeneralString;break;case 28:c=W.UniversalString;break;case 29:c=W.CharacterString;break;case 30:c=W.BmpString;break;case 31:c=W.DATE;break;case 32:c=W.TimeOfDay;break;case 33:c=W.DateTime;break;case 34:c=W.Duration;break;default:{let l=o.idBlock.isConstructed?new W.Constructed:new W.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?W.Constructed:W.Primitive}return o=zR(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 ci(r){if(!r.byteLength){let e=new xt({},Lt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return tu(we.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function YR(r,e){return r?1:e}var cn=class extends Lt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);if(!Bn(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(;YR(this.isIndefiniteForm,n)>0;){let i=tu(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===Sa)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Sa?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Ra;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Hr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};cn.NAME="ConstructedValueBlock";var em,mo=class extends xt{constructor(e={}){super(e,cn),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(`
18
18
  `).map(o=>` ${o}`).join(`
19
19
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
20
20
  ${e.join(`
21
- `)}`:`${t} :`}};W6=bo;G.Constructed=W6;bo.NAME="CONSTRUCTED";var ru=class extends Pt{fromBER(e,t,n){return t}toBER(e){return zr}};ru.override="EndOfContentValueBlock";var z6,nu=class extends bt{constructor(e={}){super(e,ru),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};z6=nu;G.EndOfContent=z6;nu.NAME=Ma;var Y6,xo=class extends bt{constructor(e={}){super(e,Pt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Y6=xo;G.Null=Y6;xo.NAME="NULL";var ou=class extends Fn(Pt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=we.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);return Un(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,R0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};ou.NAME="BooleanValueBlock";var X6,su=class extends bt{constructor(e={}){super(e,ou),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};X6=su;G.Boolean=X6;su.NAME="BOOLEAN";var iu=class extends Fn(an){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=an.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===Ma){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==$6)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?an.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};iu.NAME="OctetStringValueBlock";var Q6,Bn=class r extends bt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},iu),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=Lu(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?bo.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return we.BufferSourceConverter.concat(e)}};Q6=Bn;G.OctetString=Q6;Bn.NAME=$6;var au=class extends Fn(an){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=an.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===Ma){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==H6)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=we.BufferSourceConverter.toUint8Array(e);if(!Un(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=Lu(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return an.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return zr;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};au.NAME="BitStringValueBlock";var j6,bi=class extends bt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},au),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return bo.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};j6=bi;G.BitString=j6;bi.NAME=H6;var Z6;function m_(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,d=c<i?i:c,u=0;for(let h=d;h>=0;h--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=Xl(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=Xl(t,s)),s}function K6(r){if(r>=Oa.length)for(let e=Oa.length;e<=r;e++){let t=new Uint8Array([0]),n=Oa[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=Xl(t,n)),Oa.push(n)}return Oa[r]}function g_(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,d=0;for(let u=c;u>=0;u--,d++)switch(l=s[i-d]-a[c-d]-t,!0){case l<0:t=1,s[i-d]=l+10;break;default:t=0,s[i-d]=l}if(t>0)for(let u=i-c+1;u>=0;u--,d++)if(l=s[i-d]-t,l<0)t=1,s[i-d]=l+10;else{t=0,s[i-d]=l;break}return s.slice()}var Ua=class extends Fn(Pt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=R0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(U6(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=g_(K6(n),t),i="-";break;default:t=m_(t,K6(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=V6.charAt(t[c]));return a===!1&&(i+=V6.charAt(0)),i}};Z6=Ua;Ua.NAME="IntegerValueBlock";Object.defineProperty(Z6.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var J6,it=class r extends bt{constructor(e={}){super(e,Ua),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Ql(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Ql();let t=BigInt(e),n=new Ba,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(we.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${we.Convert.ToHex(a)}`)+t,d=we.BufferSourceConverter.toUint8Array(we.Convert.FromHex(l.toString(16)));d[0]|=128,n.write(d)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};J6=it;G.Integer=J6;it.NAME="INTEGER";var e5,cu=class extends it{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};e5=cu;G.Enumerated=e5;cu.NAME="ENUMERATED";var Fa=class extends Fn(Pt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Un(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ds(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Ql();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Eo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",zr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=we.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Fa.NAME="sidBlock";var lu=class extends Pt{constructor({value:e=xi,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Fa;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,zr;t.push(o)}return _0(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new Fa;if(o>Number.MAX_SAFE_INTEGER){Ql();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};lu.NAME="ObjectIdentifierValueBlock";var t5,Wr=class extends bt{constructor(e={}){super(e,lu),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};t5=Wr;G.ObjectIdentifier=t5;Wr.NAME="OBJECT IDENTIFIER";var Va=class extends Fn(On){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Un(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=ds(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=Eo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",zr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=we.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Va.NAME="relativeSidBlock";var uu=class extends Pt{constructor({value:e=xi,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Va;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,zr;n.push(s)}return _0(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new Va;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};uu.NAME="RelativeObjectIdentifierValueBlock";var r5,du=class extends bt{constructor(e={}){super(e,uu),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};r5=du;G.RelativeObjectIdentifier=r5;du.NAME="RelativeObjectIdentifier";var n5,mt=class extends bo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};n5=mt;G.Sequence=n5;mt.NAME="SEQUENCE";var o5,fu=class extends bo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};o5=fu;G.Set=o5;fu.NAME="SET";var hu=class extends Fn(Pt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=xi}toJSON(){return{...super.toJSON(),value:this.value}}};hu.NAME="StringValueBlock";var pu=class extends hu{};pu.NAME="SimpleStringValueBlock";var Ut=class extends Jl{constructor({...e}={}){super(e,pu)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Ut.NAME="SIMPLE STRING";var mu=class extends Ut{fromBuffer(e){this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=we.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=we.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf8String(e)),this.valueBlock.value=e}};mu.NAME="Utf8StringValueBlock";var s5,Mn=class extends mu{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};s5=Mn;G.Utf8String=s5;Mn.NAME="UTF8String";var gu=class extends Ut{fromBuffer(e){this.valueBlock.value=we.Convert.ToUtf16String(e),this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf16String(e))}};gu.NAME="BmpStringValueBlock";var i5,yu=class extends gu{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};i5=yu;G.BmpString=i5;yu.NAME="BMPString";var wu=class extends Ut{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=Eo(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};wu.NAME="UniversalStringValueBlock";var a5,Eu=class extends wu{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};a5=Eu;G.UniversalString=a5;Eu.NAME="UniversalString";var c5,bu=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};c5=bu;G.NumericString=c5;bu.NAME="NumericString";var l5,xu=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};l5=xu;G.PrintableString=l5;xu.NAME="PrintableString";var u5,vu=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};u5=vu;G.TeletexString=u5;vu.NAME="TeletexString";var d5,Su=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};d5=Su;G.VideotexString=d5;Su.NAME="VideotexString";var f5,Ru=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};f5=Ru;G.IA5String=f5;Ru.NAME="IA5String";var h5,_u=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};h5=_u;G.GraphicString=h5;_u.NAME="GraphicString";var p5,Ka=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};p5=Ka;G.VisibleString=p5;Ka.NAME="VisibleString";var m5,Au=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};m5=Au;G.GeneralString=m5;Au.NAME="GeneralString";var g5,Iu=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};g5=Iu;G.CharacterString=g5;Iu.NAME="CharacterString";var y5,$a=class extends Ka{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=qt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=qt(this.month,2),t[2]=qt(this.day,2),t[3]=qt(this.hour,2),t[4]=qt(this.minute,2),t[5]=qt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};y5=$a;G.UTCTime=y5;$a.NAME="UTCTime";var w5,Du=class extends $a{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,h=n.indexOf("+"),f="";if(h===-1&&(h=n.indexOf("-"),u=-1),h!==-1){if(f=n.substring(h+1),n=n.substring(0,h),f.length!==2&&f.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(f.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,f.length===4){if(p=parseInt(f.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let d=i.exec(o);if(d===null)throw new Error("Wrong input string for conversion");for(let u=1;u<d.length;u++)switch(u){case 1:this.year=parseInt(d[u],10);break;case 2:this.month=parseInt(d[u],10);break;case 3:this.day=parseInt(d[u],10);break;case 4:this.hour=parseInt(d[u],10)+a;break;case 5:this.minute=parseInt(d[u],10)+c;break;case 6:this.second=parseInt(d[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(qt(this.year,4)),t.push(qt(this.month,2)),t.push(qt(this.day,2)),t.push(qt(this.hour,2)),t.push(qt(this.minute,2)),t.push(qt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(qt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};w5=Du;G.GeneralizedTime=w5;Du.NAME="GeneralizedTime";var E5,Tu=class extends Mn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};E5=Tu;G.DATE=E5;Tu.NAME="DATE";var b5,ku=class extends Mn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};b5=ku;G.TimeOfDay=b5;ku.NAME="TimeOfDay";var x5,Cu=class extends Mn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};x5=Cu;G.DateTime=x5;Cu.NAME="DateTime";var v5,Nu=class extends Mn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};v5=Nu;G.Duration=v5;Nu.NAME="Duration";var S5,Pu=class extends Mn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};S5=Pu;G.TIME=S5;Pu.NAME="TIME";function w_(r){let{result:e}=vi(r),t=e.valueBlock.value;return{n:O(cn(t[1].toBigInt()),"base64url"),e:O(cn(t[2].toBigInt()),"base64url"),d:O(cn(t[3].toBigInt()),"base64url"),p:O(cn(t[4].toBigInt()),"base64url"),q:O(cn(t[5].toBigInt()),"base64url"),dp:O(cn(t[6].toBigInt()),"base64url"),dq:O(cn(t[7].toBigInt()),"base64url"),qi:O(cn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function E_(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 g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new mt({value:[new it({value:0}),it.fromBigInt(ln(M(r.n,"base64url"))),it.fromBigInt(ln(M(r.e,"base64url"))),it.fromBigInt(ln(M(r.d,"base64url"))),it.fromBigInt(ln(M(r.p,"base64url"))),it.fromBigInt(ln(M(r.q,"base64url"))),it.fromBigInt(ln(M(r.dp,"base64url"))),it.fromBigInt(ln(M(r.dq,"base64url"))),it.fromBigInt(ln(M(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function b_(r){let{result:e}=vi(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:O(cn(t[0].toBigInt()),"base64url"),e:O(cn(t[1].toBigInt()),"base64url")}}function x_(r){if(r.n==null||r.e==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new mt({value:[new mt({value:[new Wr({value:"1.2.840.113549.1.1.1"}),new xo]}),new bi({valueHex:new mt({value:[it.fromBigInt(ln(M(r.n,"base64url"))),it.fromBigInt(ln(M(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function cn(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function ln(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var v_=16,I0=32,D0=1e4;async function S_(r,e){let t=He.get(),o=new mt({value:[new it({value:0}),new mt({value:[new Wr({value:"1.2.840.113549.1.1.1"}),new xo]}),new Bn({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Nt(v_),a=await v0(mo,e,i,{c:D0,dkLen:I0}),c=Nt(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),d=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new mt({value:[new Bn({valueHex:i}),new it({value:D0}),new it({value:I0}),new mt({value:[new Wr({value:"1.2.840.113549.2.11"}),new xo]})]}),h=new mt({value:[new Wr({value:"1.2.840.113549.1.5.13"}),new mt({value:[new mt({value:[new Wr({value:"1.2.840.113549.1.5.12"}),u]}),new mt({value:[new Wr({value:"2.16.840.1.101.3.4.1.42"}),new Bn({valueHex:c})]})]})]}),p=new mt({value:[h,new Bn({valueHex:d})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...O(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
22
- `)}async function T0(r,e){let t=He.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=M(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=vi(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=R_(s),u=await v0(mo,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),f=Ha(await t.subtle.decrypt({name:"AES-CBC",iv:i},h,d)),{result:p}=vi(f);n=R5(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=M(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=vi(o);n=R5(s)}else throw new g("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return k0(n)}function R_(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new g("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new g("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Ha(s.valueBlock.value[0].getValue()),a=D0,c=I0;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new g("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],d=l.valueBlock.value[0].toString();if(d!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(d!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new g("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Ha(l.valueBlock.value[1].getValue());return{cipherText:Ha(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function R5(r){return Ha(r.valueBlock.value[2].getValue())}function Ha(r){return new Uint8Array(r,0,r.byteLength)}async function _5(r){let e=await He.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await D5(e);return{privateKey:t[0],publicKey:t[1]}}async function C0(r){let t=[await He.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await __(r)],n=await D5({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function A5(r,e){let t=await He.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await He.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function I5(r,e,t){let n=await He.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return He.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function D5(r){if(r.privateKey==null||r.publicKey==null)throw new g("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([He.get().subtle.exportKey("jwk",r.privateKey),He.get().subtle.exportKey("jwk",r.publicKey)])}async function __(r){return He.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ou(r){if(r.kty!=="RSA")throw new g("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new g("invalid key modulus","ERR_INVALID_KEY_MODULUS");return M(r.n,"base64url").length*8}var hs=8192,fs=class{_key;constructor(e){this._key=e}verify(e,t){return I5(this._key,t,e)}marshal(){return vo.jwkToPkix(this._key)}get bytes(){return qr.encode({Type:Ve.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return xr(e)?e.then(({bytes:t})=>t):e.bytes}},So=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Nt(16)}sign(e){return A5(this._key,e)}get public(){if(this._publicKey==null)throw new g("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new fs(this._publicKey)}marshal(){return vo.jwkToPkcs1(this._key)}get bytes(){return Gr.encode({Type:Ve.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return O(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return vo.exportToPem(this,e);if(t==="libp2p-key")return gi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function k0(r){let e=vo.pkcs1ToJwk(r);if(Ou(e)>hs)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await C0(e);return new So(t.privateKey,t.publicKey)}function I_(r){let e=vo.pkixToJwk(r);if(Ou(e)>hs)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new fs(e)}async function D_(r){if(Ou(r)>hs)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await C0(r);return new So(e.privateKey,e.publicKey)}async function T_(r){if(r>hs)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await _5(r);return new So(e.privateKey,e.publicKey)}var M0={};pe(M0,{Secp256k1PrivateKey:()=>gs,Secp256k1PublicKey:()=>ms,generateKeyPair:()=>$_,unmarshalSecp256k1PrivateKey:()=>V_,unmarshalSecp256k1PublicKey:()=>K_});var k_=new Uint32Array([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]),Ro=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),_o=new Uint32Array(64),P0=class extends fo{constructor(){super(64,32,8,!1),this.A=Ro[0]|0,this.B=Ro[1]|0,this.C=Ro[2]|0,this.D=Ro[3]|0,this.E=Ro[4]|0,this.F=Ro[5]|0,this.G=Ro[6]|0,this.H=Ro[7]|0}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)_o[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let h=_o[u-15],f=_o[u-2],p=Vr(h,7)^Vr(h,18)^h>>>3,m=Vr(f,17)^Vr(f,19)^f>>>10;_o[u]=m+_o[u-7]+p+_o[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 h=Vr(a,6)^Vr(a,11)^Vr(a,25),f=d+h+Ll(a,c,l)+k_[u]+_o[u]|0,m=(Vr(n,2)^Vr(n,13)^Vr(n,22))+Ol(n,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=n,n=f+m|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(){_o.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ao=fi(()=>new P0);function C_(r){let e=Ca(r);vr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:N_,hexToBytes:P_}=Ul,ps={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=ps;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:N_(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=ps,t=typeof r=="string"?P_(r):r;hi(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=ps._parseInt(t.subarray(2)),{d:i,l:a}=ps._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let d=l.toString(16);return d.length&1?`0${d}`:d},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},Vn=BigInt(0),Rr=BigInt(1),g$=BigInt(2),T5=BigInt(3),y$=BigInt(4);function L_(r){let e=C_(r),{Fp:t}=e,n=e.toBytes||((p,m,y)=>{let w=m.toAffine();return kn(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(p=>{let m=p.subarray(1),y=t.fromBytes(m.subarray(0,t.BYTES)),w=t.fromBytes(m.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(p){let{a:m,b:y}=e,w=t.sqr(p),b=t.mul(w,p);return t.add(t.add(b,t.mul(p,m)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&Vn<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:m,nByteLength:y,wrapPrivateKey:w,n:b}=e;if(m&&typeof p!="bigint"){if(go(p)&&(p=In(p)),typeof p!="string"||!m.includes(p.length))throw new Error("Invalid key");p=p.padStart(y*2,"0")}let E;try{E=typeof p=="bigint"?p:Dn(Ue("private key",p,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof p}`)}return w&&(E=Ie(E,b)),a(E),E}let l=new Map;function d(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(m,y,w){if(this.px=m,this.py=y,this.pz=w,m==null||!t.isValid(m))throw new Error("x required");if(y==null||!t.isValid(y))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required")}static fromAffine(m){let{x:y,y:w}=m||{};if(!m||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(m instanceof u)throw new Error("projective point not allowed");let b=E=>t.eql(E,t.ZERO);return b(y)&&b(w)?u.ZERO:new u(y,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(m){let y=t.invertBatch(m.map(w=>w.pz));return m.map((w,b)=>w.toAffine(y[b])).map(u.fromAffine)}static fromHex(m){let y=u.fromAffine(o(Ue("pointHex",m)));return y.assertValidity(),y}static fromPrivateKey(m){return u.BASE.multiply(c(m))}_setWindowSize(m){this._WINDOW_SIZE=m,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:m,y}=this.toAffine();if(!t.isValid(m)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),b=s(m);if(!t.eql(w,b))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:m}=this.toAffine();if(t.isOdd)return!t.isOdd(m);throw new Error("Field doesn't support isOdd")}equals(m){d(m);let{px:y,py:w,pz:b}=this,{px:E,py:x,pz:v}=m,I=t.eql(t.mul(y,v),t.mul(E,b)),R=t.eql(t.mul(w,v),t.mul(x,b));return I&&R}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:m,b:y}=e,w=t.mul(y,T5),{px:b,py:E,pz:x}=this,v=t.ZERO,I=t.ZERO,R=t.ZERO,S=t.mul(b,b),T=t.mul(E,E),L=t.mul(x,x),N=t.mul(b,E);return N=t.add(N,N),R=t.mul(b,x),R=t.add(R,R),v=t.mul(m,R),I=t.mul(w,L),I=t.add(v,I),v=t.sub(T,I),I=t.add(T,I),I=t.mul(v,I),v=t.mul(N,v),R=t.mul(w,R),L=t.mul(m,L),N=t.sub(S,L),N=t.mul(m,N),N=t.add(N,R),R=t.add(S,S),S=t.add(R,S),S=t.add(S,L),S=t.mul(S,N),I=t.add(I,S),L=t.mul(E,x),L=t.add(L,L),S=t.mul(L,N),v=t.sub(v,S),R=t.mul(L,T),R=t.add(R,R),R=t.add(R,R),new u(v,I,R)}add(m){d(m);let{px:y,py:w,pz:b}=this,{px:E,py:x,pz:v}=m,I=t.ZERO,R=t.ZERO,S=t.ZERO,T=e.a,L=t.mul(e.b,T5),N=t.mul(y,E),B=t.mul(w,x),k=t.mul(b,v),Y=t.add(y,w),D=t.add(E,x);Y=t.mul(Y,D),D=t.add(N,B),Y=t.sub(Y,D),D=t.add(y,b);let P=t.add(E,v);return D=t.mul(D,P),P=t.add(N,k),D=t.sub(D,P),P=t.add(w,b),I=t.add(x,v),P=t.mul(P,I),I=t.add(B,k),P=t.sub(P,I),S=t.mul(T,D),I=t.mul(L,k),S=t.add(I,S),I=t.sub(B,S),S=t.add(B,S),R=t.mul(I,S),B=t.add(N,N),B=t.add(B,N),k=t.mul(T,k),D=t.mul(L,D),B=t.add(B,k),k=t.sub(N,k),k=t.mul(T,k),D=t.add(D,k),N=t.mul(B,D),R=t.add(R,N),N=t.mul(P,D),I=t.mul(Y,I),I=t.sub(I,N),N=t.mul(Y,B),S=t.mul(P,S),S=t.add(S,N),new u(I,R,S)}subtract(m){return this.add(m.negate())}is0(){return this.equals(u.ZERO)}wNAF(m){return f.wNAFCached(this,l,m,y=>{let w=t.invertBatch(y.map(b=>b.pz));return y.map((b,E)=>b.toAffine(w[E])).map(u.fromAffine)})}multiplyUnsafe(m){let y=u.ZERO;if(m===Vn)return y;if(a(m),m===Rr)return this;let{endo:w}=e;if(!w)return f.unsafeLadder(this,m);let{k1neg:b,k1:E,k2neg:x,k2:v}=w.splitScalar(m),I=y,R=y,S=this;for(;E>Vn||v>Vn;)E&Rr&&(I=I.add(S)),v&Rr&&(R=R.add(S)),S=S.double(),E>>=Rr,v>>=Rr;return b&&(I=I.negate()),x&&(R=R.negate()),R=new u(t.mul(R.px,w.beta),R.py,R.pz),I.add(R)}multiply(m){a(m);let y=m,w,b,{endo:E}=e;if(E){let{k1neg:x,k1:v,k2neg:I,k2:R}=E.splitScalar(y),{p:S,f:T}=this.wNAF(v),{p:L,f:N}=this.wNAF(R);S=f.constTimeNegate(x,S),L=f.constTimeNegate(I,L),L=new u(t.mul(L.px,E.beta),L.py,L.pz),w=S.add(L),b=T.add(N)}else{let{p:x,f:v}=this.wNAF(y);w=x,b=v}return u.normalizeZ([w,b])[0]}multiplyAndAddUnsafe(m,y,w){let b=u.BASE,E=(v,I)=>I===Vn||I===Rr||!v.equals(b)?v.multiplyUnsafe(I):v.multiply(I),x=E(this,y).add(E(m,w));return x.is0()?void 0:x}toAffine(m){let{px:y,py:w,pz:b}=this,E=this.is0();m==null&&(m=E?t.ONE:t.inv(b));let x=t.mul(y,m),v=t.mul(w,m),I=t.mul(b,m);if(E)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x,y:v}}isTorsionFree(){let{h:m,isTorsionFree:y}=e;if(m===Rr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:m,clearCofactor:y}=e;return m===Rr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(m=!0){return this.assertValidity(),n(u,this,m)}toHex(m=!0){return In(this.toRawBytes(m))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,f=Kl(u,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function O_(r){let e=Ca(r);return vr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function k5(r){let e=O_(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(D){return Vn<D&&D<t.ORDER}function a(D){return Ie(D,n)}function c(D){return Fl(D,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:h}=L_({...e,toBytes(D,P,$){let C=P.toAffine(),A=t.toBytes(C.x),U=kn;return $?U(Uint8Array.from([P.hasEvenY()?2:3]),A):U(Uint8Array.from([4]),A,t.toBytes(C.y))},fromBytes(D){let P=D.length,$=D[0],C=D.subarray(1);if(P===o&&($===2||$===3)){let A=Dn(C);if(!i(A))throw new Error("Point is not on curve");let U=u(A),V;try{V=t.sqrt(U)}catch(ie){let de=ie instanceof Error?": "+ie.message:"";throw new Error("Point is not on curve"+de)}let H=(V&Rr)===Rr;return($&1)===1!==H&&(V=t.neg(V)),{x:A,y:V}}else if(P===s&&$===4){let A=t.fromBytes(C.subarray(0,t.BYTES)),U=t.fromBytes(C.subarray(t.BYTES,2*t.BYTES));return{x:A,y:U}}else throw new Error(`Point of length ${P} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),f=D=>In(yo(D,e.nByteLength));function p(D){let P=n>>Rr;return D>P}function m(D){return p(D)?a(-D):D}let y=(D,P,$)=>Dn(D.slice(P,$));class w{constructor(P,$,C){this.r=P,this.s=$,this.recovery=C,this.assertValidity()}static fromCompact(P){let $=e.nByteLength;return P=Ue("compactSignature",P,$*2),new w(y(P,0,$),y(P,$,2*$))}static fromDER(P){let{r:$,s:C}=ps.toSig(Ue("DER",P));return new w($,C)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(P){return new w(this.r,this.s,P)}recoverPublicKey(P){let{r:$,s:C,recovery:A}=this,U=R(Ue("msgHash",P));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let V=A===2||A===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let H=A&1?"03":"02",se=l.fromHex(H+f(V)),ie=c(V),de=a(-U*ie),ae=a(C*ie),ue=l.BASE.multiplyAndAddUnsafe(se,de,ae);if(!ue)throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return cs(this.toDERHex())}toDERHex(){return ps.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return cs(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}let b={isValidPrivateKey(D){try{return d(D),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let D=f0(e.n);return f6(e.randomBytes(D),e.n)},precompute(D=8,P=l.BASE){return P._setWindowSize(D),P.multiply(BigInt(3)),P}};function E(D,P=!0){return l.fromPrivateKey(D).toRawBytes(P)}function x(D){let P=go(D),$=typeof D=="string",C=(P||$)&&D.length;return P?C===o||C===s:$?C===2*o||C===2*s:D instanceof l}function v(D,P,$=!0){if(x(D))throw new Error("first arg must be private key");if(!x(P))throw new Error("second arg must be public key");return l.fromHex(P).multiply(d(D)).toRawBytes($)}let I=e.bits2int||function(D){let P=Dn(D),$=D.length*8-e.nBitLength;return $>0?P>>BigInt($):P},R=e.bits2int_modN||function(D){return a(I(D))},S=ka(e.nBitLength);function T(D){if(typeof D!="bigint")throw new Error("bigint expected");if(!(Vn<=D&&D<S))throw new Error(`bigint expected < 2^${e.nBitLength}`);return yo(D,e.nByteLength)}function L(D,P,$=N){if(["recovered","canonical"].some(Ne=>Ne in $))throw new Error("sign() legacy options not supported");let{hash:C,randomBytes:A}=e,{lowS:U,prehash:V,extraEntropy:H}=$;U==null&&(U=!0),D=Ue("msgHash",D),V&&(D=Ue("prehashed msgHash",C(D)));let se=R(D),ie=d(P),de=[T(ie),T(se)];if(H!=null&&H!==!1){let Ne=H===!0?A(t.BYTES):H;de.push(Ue("extraEntropy",Ne))}let ae=kn(...de),ue=se;function Be(Ne){let gt=I(Ne);if(!h(gt))return;let yt=c(gt),ct=l.BASE.multiply(gt).toAffine(),Dt=a(ct.x);if(Dt===Vn)return;let gn=a(yt*a(ue+Dt*ie));if(gn===Vn)return;let Ho=(ct.x===Dt?0:2)|Number(ct.y&Rr),ca=gn;return U&&p(gn)&&(ca=m(gn),Ho^=1),new w(Dt,ca,Ho)}return{seed:ae,k2sig:Be}}let N={lowS:e.lowS,prehash:!1},B={lowS:e.lowS,prehash:!1};function k(D,P,$=N){let{seed:C,k2sig:A}=L(D,P,$),U=e;return a0(U.hash.outputLen,U.nByteLength,U.hmac)(C,A)}l.BASE._setWindowSize(8);function Y(D,P,$,C=B){let A=D;if(P=Ue("msgHash",P),$=Ue("publicKey",$),"strict"in C)throw new Error("options.strict was renamed to lowS");let{lowS:U,prehash:V}=C,H,se;try{if(typeof A=="string"||go(A))try{H=w.fromDER(A)}catch(ct){if(!(ct instanceof ps.Err))throw ct;H=w.fromCompact(A)}else if(typeof A=="object"&&typeof A.r=="bigint"&&typeof A.s=="bigint"){let{r:ct,s:Dt}=A;H=new w(ct,Dt)}else throw new Error("PARSE");se=l.fromHex($)}catch(ct){if(ct.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(U&&H.hasHighS())return!1;V&&(P=e.hash(P));let{r:ie,s:de}=H,ae=R(P),ue=c(de),Be=a(ae*ue),Ne=a(ie*ue),gt=l.BASE.multiplyAndAddUnsafe(se,Be,Ne)?.toAffine();return gt?a(gt.x)===ie:!1}return{CURVE:e,getPublicKey:E,getSharedSecret:v,sign:k,verify:Y,ProjectivePoint:l,Signature:w,utils:b}}function B_(r){return{hash:r,hmac:(e,...t)=>wo(r,e,Pl(...t)),randomBytes:as}}function C5(r,e){let t=n=>k5({...r,...B_(n)});return Object.freeze({...t(e),create:t})}var L5=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),N5=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),M_=BigInt(1),L0=BigInt(2),P5=(r,e)=>(r+e/L0)/e;function U_(r){let e=L5,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=Fe(d,t,e)*d%e,h=Fe(u,t,e)*d%e,f=Fe(h,L0,e)*l%e,p=Fe(f,o,e)*f%e,m=Fe(p,s,e)*p%e,y=Fe(m,a,e)*m%e,w=Fe(y,c,e)*y%e,b=Fe(w,a,e)*m%e,E=Fe(b,t,e)*d%e,x=Fe(E,i,e)*p%e,v=Fe(x,n,e)*l%e,I=Fe(v,L0,e);if(!O0.eql(O0.sqr(I),r))throw new Error("Cannot find square root");return I}var O0=Vl(L5,void 0,void 0,{sqrt:U_}),Yr=C5({a:BigInt(0),b:BigInt(7),Fp:O0,n:N5,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=N5,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-M_*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=P5(s*r,e),c=P5(-n*r,e),l=Ie(r-a*t-c*o,e),d=Ie(-a*n-c*s,e),u=l>i,h=d>i;if(u&&(l=e-l),h&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:h,k2:d}}}},Ao),A$=BigInt(0);var I$=Yr.ProjectivePoint;function O5(){return Yr.utils.randomPrivateKey()}function B5(r,e){let t=Ce.digest(e instanceof Uint8Array?e:e.subarray());if(xr(t))return t.then(({digest:n})=>Yr.sign(n,r).toDERRawBytes()).catch(n=>{throw new g(String(n),"ERR_INVALID_INPUT")});try{return Yr.sign(t.digest,r).toDERRawBytes()}catch(n){throw new g(String(n),"ERR_INVALID_INPUT")}}function M5(r,e,t){let n=Ce.digest(t instanceof Uint8Array?t:t.subarray());if(xr(n))return n.then(({digest:o})=>Yr.verify(e,o,r)).catch(o=>{throw new g(String(o),"ERR_INVALID_INPUT")});try{return Yr.verify(e,n.digest,r)}catch(o){throw new g(String(o),"ERR_INVALID_INPUT")}}function U5(r){return Yr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function F5(r){try{Yr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}function B0(r){try{Yr.ProjectivePoint.fromHex(r)}catch(e){throw new g(String(e),"ERR_INVALID_PUBLIC_KEY")}}function V5(r){try{return Yr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}var ms=class{_key;constructor(e){B0(e),this._key=e}verify(e,t){return M5(this._key,t,e)}marshal(){return U5(this._key)}get bytes(){return qr.encode({Type:Ve.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=Ce.digest(this.bytes),t;return xr(e)?{bytes:t}=await e:t=e.bytes,t}},gs=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??V5(e),F5(this._key),B0(this._publicKey)}sign(e){return B5(this._key,e)}get public(){return new ms(this._publicKey)}marshal(){return this._key}get bytes(){return Gr.encode({Type:Ve.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return xr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return O(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return gi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function V_(r){return new gs(r)}function K_(r){return new ms(r)}async function $_(){let r=O5();return new gs(r)}var Kn={rsa:N0,ed25519:b0,secp256k1:M0};function U0(r){let e=Object.keys(Kn).join(" / ");return new g(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function F0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Kn[r];throw U0(r)}async function qa(r,e){return F0(r).generateKeyPair(e??2048)}async function H_(r,e,t){if(r.toLowerCase()!=="ed25519")throw new g("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return E0(e)}function Xr(r){let e=qr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ve.RSA:return Kn.rsa.unmarshalRsaPublicKey(t);case Ve.Ed25519:return Kn.ed25519.unmarshalEd25519PublicKey(t);case Ve.Secp256k1:return Kn.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw U0(e.Type??"unknown")}}function V0(r,e){return e=(e??"rsa").toLowerCase(),F0(e),r.bytes}async function _r(r){let e=Gr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ve.RSA:return Kn.rsa.unmarshalRsaPrivateKey(t);case Ve.Ed25519:return Kn.ed25519.unmarshalEd25519PrivateKey(t);case Ve.Secp256k1:return Kn.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw U0(e.Type??"RSA")}}function K0(r,e){return e=(e??"rsa").toLowerCase(),F0(e),r.bytes}async function Si(r,e){try{let t=await C6(r,e);return await _r(t)}catch{}if(!r.includes("BEGIN"))throw new g("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return T0(r,e)}var Ga=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Io=new Uint32Array(80),$0=class extends fo{constructor(){super(64,20,8,!1),this.A=Ga[0]|0,this.B=Ga[1]|0,this.C=Ga[2]|0,this.D=Ga[3]|0,this.E=Ga[4]|0}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)Io[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Io[c]=Nl(Io[c-3]^Io[c-8]^Io[c-14]^Io[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=Ll(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=Ol(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=Nl(n,5)+l+a+d+Io[c]|0;a=i,i=s,s=Nl(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(){Io.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},K5=fi(()=>new $0);var $5={sha1:K5,"sha2-256":Ao,"sha2-512":mo};function Wa(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys($5).join(" / ");throw new g(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=$5[o],i=B6(s,r,e,{c:t,dkLen:n});return ot.encode(i).substring(1)}var H0=Ye(G5(),1);var q_=Math.LN2*Math.LN2,Uu=class r{static create(e,t=.005){let n=G_(e,t);return new r(n)}seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=W_(e.hashes??8),this.bits=e.bits??1024,this.buffer=Ae(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let o=H0.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(o)}}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let o=H0.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(o))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let o=this.buffer[t];o|=1<<n,this.buffer[t]=o}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function G_(r,e=.005){let t=Math.round(-1*r*Math.log(e)/q_),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function W_(r){let e,t,n=[];for(let o=0;o<r;o++)for(e=new ce(Nt(4)),n[o]=e.getUint32(0,!0),t=0;t<o;t++)if(n[o]===n[t]){o--;break}return n}var ys=class extends ye{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),j(1/0,this),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Uu.create(this.maxProviders)}async retrieve(e,t={}){let n=ot.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o;let s=J();if(this.requests.set(n,s.promise),this.providers.length===0){let l=!1;this.intialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.intialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.intialPeerSearchComplete,l&&this.log("found initial session peers for %c",e)}let i=!1,a=new Nr({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",l=>{this.log.error("error querying provider %o, evicting from session",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),a.addEventListener("success",l=>{i=!0,s.resolve(l.detail.result)}),a.addEventListener("idle",()=>{i||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let d=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(d)}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(l=>{this.log.error("could not find new providers for %c",e,l),s.reject(l)})});let c=l=>{a.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(d=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,d)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async l=>a.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,l)});try{return await s.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.providers.some(t=>this.equals(t,e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let o=J(),s=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);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"),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 g(`Found ${s} of ${t} ${this.name} providers for ${e}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(i=>{this.log.error("error searching routing for potential session peers for %c",e,i.errors??i),o.reject(i)}),o.promise}};var Fu=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;dns;metrics;log;constructor(e){this.logger=e.logger??oo(),this.log=this.logger.forComponent("helia"),this.hashers=Hm(e.hashers),this.dagWalkers=Vm(e.dagWalkers),this.dns=e.dns??il(),this.metrics=e.metrics;let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new Sl(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[rn]!=null&&s.push(o[rn]),o[nn]!=null&&s.push(o[nn]),s}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new kl(t);this.pins=new vl(e.datastore,n,this.dagWalkers),this.blockstore=new Rl(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(o=>o(t))}async start(){await $m(this.datastore),await Zn(this.blockstore,this.datastore,this.routing)}async stop(){await Jn(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await hr(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 me("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new me("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var q0=class extends ys{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let o=await this.wantList.wantSessionBlock(e,t,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 n.id}toEvictionKey(e){return e.toBytes()}equals(e,t){return e.equals(t)}};function W5(r,e){return new q0(r,e)}var Vu=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)}};var G0=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 Ku(r){let{name:e,metrics:t}=r,n;return t!=null?n=new G0({name:e,metrics:t}):n=new Map,n}function z_(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=Ot(r);e.push(t),r=r.slice(Re(t))}return e}var z5=z_;var $u=class extends ye{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),j(1/0,this),this.peers=ya({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=Ku({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",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",n.detail,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=O(e.multihash.bytes,"base64"),o=this.wants.get(n);o==null&&(o={cid:e,priority:t.priority??1,wantType:t.wantType??tt.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,o)),o.wantType===tt.WantHave&&t.wantType===tt.WantBlock&&(o.wantType=tt.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===tt.WantBlock?(await Cr(this,"block",t?.signal,{filter:a=>Z(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await Cr(this,"presence",t?.signal,{filter:i=>Z(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)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=J(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,o=new xn;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",s)}})).catch(e=>{this.log.error("error sending messages",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=O(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let o=new xn;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:tt.WantHave,priority:1}),await this.network.sendMessage(t,o),(await Cr(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&Z(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:tt.WantBlock})}async wantSessionBlock(e,t,n={}){let o=new xn;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:tt.WantBlock,priority:1}),await this.network.sendMessage(t,o),(await Cr(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&Z(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=O(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=z5(o.prefix),i=s[0],a=s[1],c=s[2],l=c===Ce.code?Ce:await this.hashLoader?.getHasher(c);if(l==null){this.log.error("unknown hash algorithm",c);continue}let d=l.digest(o.data);d.then!=null&&(d=await d);let u=le.create(i===0?0:1,a,d);this.log("received block from %p for %c",e,u),this.safeDispatchEvent("block",{detail:{sender:e,cid:u,block:o.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:u,has:!0,block:o.data}});let h=O(u.multihash.bytes,"base64"),f=this.wants.get(h);f!=null&&(f.cancel=!0,n=!0)}for(let{cid:o,type:s}of t.blockPresences){let i=le.decode(o);this.log("received %s from %p for %c",s,e,i),this.safeDispatchEvent("presence",{detail:{sender:e,cid:i,has:s===yr.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new xn(!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:tt.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,o)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var Hu=class{log;logger;stats;network;blockstore;peerWantLists;wantList;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.stats=new Vu(e),this.network=new jc(e,t),this.peerWantLists=new Jc({...e,network:this.network},t),this.wantList=new $u({...e,network:this.network},t)}createSession(e={}){return W5({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,o=Me([n.signal,t.signal]);j(1/0,n.signal,o),this.network.findAndConnect(e,{...t,signal:o}).catch(s=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,s)});try{return(await this.wantList.wantBlock(e,{...t,signal:o})).block}finally{n.abort(),o.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}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 Y5=(r,e={})=>new Hu(r,e);var W0=class{bitswap;started;constructor(e,t={}){let{hashers:n}=e;this.bitswap=Y5(e,{hashLoader:{getHasher:async o=>{let s;if(typeof o=="string"?s=Object.values(n).find(i=>i.name===o):s=n[o],s!=null)return s;throw new Error(`Could not load hasher for code/name "${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,n){await this.bitswap.notify(e,t,n)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{announce:async(n,o,s)=>{await this.bitswap.notify(n,o,s)},retrieve:async(n,o)=>t.retrieve(n,o)}}};function z0(r={}){return e=>new W0(e,r)}var qu=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 h=Number.parseInt(u,e);if(!Number.isNaN(h))return h});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 X5=45,Y_=15,Ri=new qu;function Y0(r){if(!(r.length>Y_))return Ri.new(r).parseWith(()=>Ri.readIPv4Addr())}function X0(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>X5))return Ri.new(r).parseWith(()=>Ri.readIPv6Addr())}function Gu(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>X5))return Ri.new(r).parseWith(()=>Ri.readIPAddr())}function _i(r){return!!Y0(r)}function Ai(r){return!!X0(r)}function Wu(r){return!!Gu(r)}var j5=Ye(Q5(),1),X_=["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"],Q_=X_.map(r=>new j5.Netmask(r));function j_(r){for(let e of Q_)if(e.contains(r))return!0;return!1}function Z_(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 Gt(r){return _i(r)?j_(r):Ai(r)?Z_(r):void 0}var Rq=parseInt("0xFFFF",16),_q=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var e7=_i,nA=Ai,Q0=function(r){let e=0;if(r=r.toString().trim(),e7(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(nA(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=e7(t[n]),i;s&&(i=Q0(t[n]),t[n]=O(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,O(i.slice(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++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},t7=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Ii={},j0={},sA=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];sA.forEach(r=>{let e=iA(...r);j0[e.code]=e,Ii[e.name]=e});function iA(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function ne(r){if(typeof r=="number"){if(j0[r]!=null)return j0[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ii[r]!=null)return Ii[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var iG=ne("ip4"),aG=ne("ip6"),cG=ne("ipcidr");function J0(r,e){switch(ne(r).code){case 4:case 41:return cA(e);case 42:return o7(e);case 6:case 273:case 33:case 132:return i7(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return o7(e);case 421:return fA(e);case 444:return s7(e);case 445:return s7(e);case 466:return dA(e);default:return O(e,"base16")}}function e2(r,e){switch(ne(r).code){case 4:return r7(e);case 41:return r7(e);case 42:return n7(e);case 6:case 273:case 33:case 132:return t2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return n7(e);case 421:return lA(e);case 444:return hA(e);case 445:return pA(e);case 466:return uA(e);default:return M(e,"base16")}}var Z0=Object.values(gr).map(r=>r.decoder),aA=function(){let r=Z0[0].or(Z0[1]);return Z0.slice(2).forEach(e=>r=r.or(e)),r}();function r7(r){if(!Wu(r))throw new Error("invalid ip address");return Q0(r)}function cA(r){let e=t7(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Wu(e))throw new Error("invalid ip address");return e}function t2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function i7(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function n7(r){let e=M(r),t=Uint8Array.from(Ke(e.length));return ve([t,e],t.length+e.length)}function o7(r){let e=Ot(r);if(r=r.slice(Re(e)),r.length!==e)throw new Error("inconsistent lengths");return O(r)}function lA(r){let e;r[0]==="Q"||r[0]==="1"?e=Or(ze.decode(`z${r}`)).bytes:e=le.parse(r).multihash.bytes;let t=Uint8Array.from(Ke(e.length));return ve([t,e],t.length+e.length)}function uA(r){let e=aA.decode(r),t=Uint8Array.from(Ke(e.length));return ve([t,e],t.length+e.length)}function dA(r){let e=Ot(r),t=r.slice(Re(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+O(t,"base64url")}function fA(r){let e=Ot(r),t=r.slice(Re(e));if(t.length!==e)throw new Error("inconsistent lengths");return O(t,"base58btc")}function hA(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=lt.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=t2(n);return ve([t,o],t.length+o.length)}function pA(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=lt.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=t2(n);return ve([t,o],t.length+o.length)}function s7(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=O(e,"base32"),o=i7(t);return`${n}:${o}`}function a7(r){r=r2(r);let e=[],t=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=ne(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw l7("invalid address: "+r);if(a.path===!0){n=r2(o.slice(s).join("/")),e.push([a.code,e2(a.code,n)]),t.push([a.code,n]);break}let c=e2(a.code,o[s]);e.push([a.code,c]),t.push([a.code,J0(a.code,c)])}return{string:c7(t),bytes:o2(e),tuples:e,stringTuples:t,path:n}}function n2(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Ot(r,o),i=Re(s),a=ne(s),c=mA(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw l7("Invalid address Uint8Array: "+O(r,"base16"));e.push([s,l]);let d=J0(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:c7(t),tuples:e,stringTuples:t,path:n}}function c7(r){let e=[];return r.map(t=>{let n=ne(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),r2(e.join("/"))}function o2(r){return ve(r.map(e=>{let t=ne(e[0]),n=Uint8Array.from(Ke(t.code));return e.length>1&&e[1]!=null&&(n=ve([n,e[1]])),n}))}function mA(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Ot(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Re(t)}}function r2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function l7(r){return new Error("Error parsing address: "+r)}var gA=Symbol.for("nodejs.util.inspect.custom"),s2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),yA=[ne("dns").code,ne("dns4").code,ne("dns6").code,ne("dnsaddr").code],zu=class r{bytes;#e;#t;#r;#o;[s2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=n2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=a7(e)}else if(Do(e))t=n2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#o=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=ne("tcp"),a=ne("udp"),c=ne("ip4"),l=ne("ip6"),d=ne("dns6"),u=ne("ip6zone");for(let[f,p]of this.stringTuples())f===u.code&&(s=`%${p??""}`),yA.includes(f)&&(t=i.name,o=443,n=`${p??""}${s}`,e=f===d.code?6:4),(f===i.code||f===a.code)&&(t=ne(f).name,o=parseInt(p??"")),(f===c.code||f===l.code)&&(t=ne(f).name,n=`${p??""}${s}`,e=f===l.code?6:4);if(e==null||t==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},ne(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ne(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(o2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Ii.p2p.code&&e.push([n,o]),n===Ii["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?O(ze.decode(`z${n}`),"base58btc"):O(le.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#o}equals(e){return Z(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=Di.get(t.name);if(n==null)throw new g(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>Q(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[gA](){return`Multiaddr(${this.#e})`}};var Di=new Map;function Do(r){return!!r?.[s2]}function Q(r){return new zu(r)}var wA=r=>r.toString().split("/").slice(1),Xa=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),De=r=>({match:e=>Xa(t=>t===r).match(e),pattern:r}),Qu=()=>({match:r=>Xa(e=>typeof e=="string").match(r),pattern:"{string}"}),ju=()=>({match:r=>Xa(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),xt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ze.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Yu=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Jf.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Ft=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),ir=(...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},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),Le=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function rt(...r){function e(o){let s=wA(o);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{matches:t,exactMatch:n}}var a2=Le(De("dns4"),Qu()),c2=Le(De("dns6"),Qu()),l2=Le(De("dnsaddr"),Qu()),u7=Le(De("dns"),Qu()),MG=rt(a2),UG=rt(c2),FG=rt(l2),Zu=rt(ir(u7,l2,a2,c2)),d7=Le(De("ip4"),Xa(_i)),f7=Le(De("ip6"),Xa(Ai)),h7=ir(d7,f7),un=ir(h7,u7,a2,c2,l2),p7=rt(un),VG=rt(d7),KG=rt(f7),m7=rt(h7),Ju=Le(un,De("tcp"),ju()),Qa=Le(un,De("udp"),ju()),EA=ir(Ju,Qa),$G=rt(Ju),HG=rt(Qa),u2=Le(Qa,De("quic")),e1=Le(Qa,De("quic-v1")),bA=ir(u2,e1),qG=rt(u2),GG=rt(e1),i2=ir(un,Ju,Qa,u2,e1),g7=ir(Le(i2,De("ws"),Ft(xt()))),WG=rt(g7),y7=ir(Le(i2,De("wss"),Ft(xt())),Le(i2,De("tls"),De("ws"),Ft(xt()))),zG=rt(y7),w7=Le(EA,De("webrtc-direct"),Yu(),Ft(Yu()),Ft(xt())),E7=rt(w7),b7=Le(e1,De("webtransport"),Yu(),Yu(),Ft(xt())),t1=rt(b7),Xu=ir(g7,y7,Le(Ju,Ft(xt())),Le(bA,Ft(xt())),Le(un,Ft(xt())),w7,b7,xt()),YG=rt(Xu),xA=Le(Xu,De("p2p-circuit"),xt()),ws=rt(xA),vA=ir(Le(Xu,De("p2p-circuit"),De("webrtc"),xt()),Le(Xu,De("webrtc"),Ft(xt())),De("webrtc")),x7=rt(vA),SA=ir(Le(un,De("tcp"),ju(),De("http"),Ft(xt())),Le(un,De("http"),Ft(xt()))),v7=rt(SA),RA=ir(Le(un,De("tcp"),ir(Le(De("443"),De("http")),Le(ju(),De("https"))),Ft(xt())),Le(un,De("tls"),De("http"),Ft(xt())),Le(un,De("https"),Ft(xt()))),S7=rt(RA);var _A=[ne("tcp").code,ne("dns").code,ne("dnsaddr").code,ne("dns4").code,ne("dns6").code];function R7(r){let e;try{e=ne("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function _7(r){return r.some(([e,t])=>e===ne("tls").code)}function ar(r,e,t){let n=A7[ne(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${ne(r).name}`);let o=n(e,t);return r===ne("ip6").code?`[${o}]`:o}var A7={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${ar(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${ar(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${ar(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${ar(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=_7(e),n=R7(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ar(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return ar(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return ar(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=ar(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=_7(e),n=R7(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=ar(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=ar(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${ar(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${ar(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${ar(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function r1(r,e){let n=Q(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=ne(o[0]),i=A7[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&_A.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var n1=class{url;#e=0;#t=0;#r=0;#o=0;#a=new Map;log;constructor(e,t){this.url=e instanceof URL?e:new URL(e),this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#l(e){let t=e.multihash.bytes;return ot.encode(t)}async getRawBlock(e,t){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${e.toString()}`,n.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 o=this.#l(e),s=new AbortController,i=()=>{s.abort()};t?.addEventListener("abort",i);try{let a=this.#a.get(o);return a==null&&(this.#e++,a=fetch(n.toString(),{signal:s.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"}).then(async c=>{if(this.log("GET %s %d",n,c.status),!c.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#o++,new Uint8Array(await c.arrayBuffer())}),this.#a.set(o,a)),await a}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}finally{t?.removeEventListener("abort",i),this.#a.delete(o)}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#o/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#e,errors:this.#t,invalidBlocks:this.#r,successes:this.#o,pendingResponses:this.#a.size}}};function AA(r,e,t){return r.filter(n=>S7.matches(n)||e&&v7.matches(n)?t||Zu.matches(n)?!0:Gt(n.toOptions().host)===!1:!1)}async function*o1(r,e,t,n,o,s){for await(let i of e.findProviders(r,s)){let a=AA(i.multiaddrs,n,o);if(a.length===0)continue;let c=r1(a[0]);yield new n1(c,t)}}var d2=class extends ys{routing;allowInsecure;allowLocal;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??s1,this.allowLocal=t.allowLocal??i1}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let o=await t.getRawBlock(e,n.signal);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(o),o}async*findNewProviders(e,t={}){yield*o1(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,t)}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}};function I7(r,e){return new d2(r,e)}var a1=class{allowInsecure;allowLocal;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??s1,this.allowLocal=t.allowLocal??i1}async retrieve(e,t={}){let n=[];for await(let o of o1(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,t)){this.log("getting block for %c from %s",e,o.url);try{let s=await o.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,o.url);try{await t.validateFn?.(s)}catch(i){this.log.error("failed to validate block for %c from %s",e,o.url,i);continue}return s}catch(s){if(this.log.error("failed to get block for %c from %s",e,o.url,s),s instanceof Error?n.push(s):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${o.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,o.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return I7({logger:this.logger,routing:this.routing},e)}};var s1=!1,i1=!1;function f2(r={}){return e=>new a1(e,r)}async function*c1(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var kA=Ye(Wo(),1);var CA=Ye(l1(),1);var D7="ERR_IPNS_EXPIRED_RECORD",u1="ERR_UNRECOGNIZED_VALIDITY";var $n="ERR_SIGNATURE_VERIFICATION";var p2="ERR_UNDEFINED_PARAMETER",T7="ERR_INVALID_RECORD_DATA",k7="ERR_INVALID_VALUE",C7="ERR_INVALID_EMBEDDED_KEY";var N7="ERR_RECORD_TOO_LARGE";var Wt;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(Wt||(Wt={}));var cr=Ye(Wo(),1);var L7=Jt("ipns:utils"),O7=M("/ipns/"),IA=114,B7=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw L7.error(n),(0,cr.default)(n,p2)}let t;if(e.pubKey!=null){try{t=Xr(e.pubKey)}catch(o){throw L7.error(o),o}if(!(await ft(e.pubKey)).equals(r))throw(0,cr.default)(new Error("Embedded public key did not match PeerID"),C7)}else r.publicKey!=null&&(t=Xr(r.publicKey));if(t!=null)return t;throw(0,cr.default)(new Error("no public key is available"),p2)};var M7=r=>{let e=M("ipns-signature:");return ve([e,r])},ja=r=>"signatureV1"in r?Wt.encode({value:M(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:M(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Wt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function dn(r){let e=Wt.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,cr.default)(new Error("missing data or signatureV2"),$n);let t=F7(e.data),n=DA(t.Value),o=O(t.Validity);if(e.value!=null&&e.signatureV1!=null)return TA(e),{value:n,validityType:Wt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:Wt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var m2=r=>ve([O7,r.toBytes()]),U7=r=>je(r.slice(O7.length));var F7=r=>{let e=br(r);if(e.ValidityType===0)e.ValidityType=Wt.ValidityType.EOL;else throw(0,cr.default)(new Error("Unknown validity type"),u1);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},DA=r=>{if(r!=null){if(Ms(r))return`/ipns/${r.toCID().toString(no)}`;if(r instanceof Uint8Array){let n=O(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=le.asCID(r);if(t!=null)return t.code===IA?`/ipns/${t.toString(no)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${le.decode(r).toV1().toString()}`:`/ipfs/${le.parse(e).toV1().toString()}`}catch{}}throw(0,cr.default)(new Error("Value must be a valid content path starting with /"),k7)},TA=r=>{if(r.data==null)throw(0,cr.default)(new Error("Record data is missing"),T7);let e=F7(r.data);if(!Z(e.Value,r.value??new Uint8Array(0)))throw(0,cr.default)(new Error('Field "value" did not match between protobuf and CBOR'),$n);if(!Z(e.Validity,r.validity??new Uint8Array(0)))throw(0,cr.default)(new Error('Field "validity" did not match between protobuf and CBOR'),$n);if(e.ValidityType!==r.validityType)throw(0,cr.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),$n);if(e.Sequence!==r.sequence)throw(0,cr.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),$n);if(e.TTL!==r.ttl)throw(0,cr.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),$n)};var KW=Jt("ipns"),$W=$t.code,HW=60*60*1e9,NA="/ipns/",qW=NA.length;var Za=Ye(Wo(),1),V7=Ye(l1(),1);var d1=Jt("ipns:validator"),PA=1024*10,LA=async(r,e)=>{let t=dn(e),n;try{let o=M7(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw d1.error("record signature verification failed"),(0,Za.default)(new Error("record signature verification failed"),$n);if(t.validityType===Wt.ValidityType.EOL){if(V7.default.fromString(t.validity).toDate().getTime()<Date.now())throw d1.error("record has expired"),(0,Za.default)(new Error("record has expired"),D7)}else if(t.validityType!=null)throw d1.error("unrecognized validity type"),(0,Za.default)(new Error("unrecognized validity type"),u1);d1("ipns record for %s is valid",t.value)};async function f1(r,e){if(e.byteLength>PA)throw(0,Za.default)(new Error("record too large"),N7);let t=U7(r),n=dn(e),o=await B7(t,n);await LA(o,e)}async function*Ja(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}function OA(r){return r[Symbol.asyncIterator]!=null}function BA(r){if(OA(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Es=BA;var g2=M("/ipns/");function K7(r){return Z(r.subarray(0,g2.byteLength),g2)}var $7=r=>je(r.slice(g2.length)),h1=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*pr(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!K7(e))return;let o=$7(e),s=dn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!K7(e))throw new g("Not found","ERR_NOT_FOUND");let n=$7(e);try{let o=await this.client.getIPNS(n,t);return ja(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new g("Not found","ERR_NOT_FOUND"):o}}},p1=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await Es(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var zt=Jt("delegated-routing-v1-http-api-client"),H7={concurrentRequests:4,timeout:3e4},m1=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,j(1/0,this.shutDownController.signal),this.httpQueue=new Ht({concurrency:t.concurrentRequests??H7.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??H7.timeout,this.contentRouting=new h1(this),this.peerRouting=new p1(this)}get[rn](){return this.contentRouting}get[nn](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){zt("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Me([this.shutDownController.signal,n,t.signal]);j(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/providers/${e.toString()}`,l=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(l.headers.get("Content-Type")==="application/json"){let u=await l.json();for(let h of u.Providers){let f=this.#e(h);f!=null&&(yield f)}}else for await(let u of Ja(c1(l.body))){let h=this.#e(u);h!=null&&(yield h)}}catch(a){zt.error("getProviders errored:",a)}finally{o.clear(),i.resolve(),zt("getProviders finished: %c",e)}}async*getPeers(e,t={}){zt("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Me([this.shutDownController.signal,n,t.signal]);j(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,l=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(l.headers.get("Content-Type")==="application/json"){let u=await l.json();for(let h of u.Peers){let f=this.#e(h);f!=null&&(yield f)}}else for await(let u of Ja(c1(l.body))){let h=this.#e(u);h!=null&&(yield h)}}catch(a){zt.error("getPeers errored:",a)}finally{o.clear(),i.resolve(),zt("getPeers finished: %c",e)}}async getIPNS(e,t={}){zt("getIPNS starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Me([this.shutDownController.signal,n,t.signal]);j(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let l=await fetch(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(zt("getIPNS GET %s %d",a,l.status),l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("GET ipns response had no body","ERR_BAD_RESPONSE");let d=await l.arrayBuffer(),u=new Uint8Array(d,0,d.byteLength);return t.validate!==!1&&await f1(m2(e),u),dn(u)}catch(c){throw zt.error("getIPNS GET %s error:",a,c),c}finally{o.clear(),i.resolve(),zt("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){zt("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=Me([this.shutDownController.signal,o,n.signal]);j(1/0,o,s);let i=J(),a=J();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await i.promise;let l=ja(t),u=await fetch(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:s});if(zt("putIPNS PUT %s %d",c,u.status),u.status!==200)throw new g("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(l){throw zt.error("putIPNS PUT %s error:",c,l.stack),l}finally{s.clear(),a.resolve(),zt("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(Q)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ge(e.ID),Addrs:n,Protocols:t}}};function q7(r,e={}){return new m1(new URL(r),e)}var G7="[a-fA-F\\d:]",To=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${G7})|(?<=${G7})(?=\\s|$))`:"",Qr="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",at="[a-fA-F\\d]{1,4}",g1=`
21
+ `)}`:`${t} :`}};em=mo;W.Constructed=em;mo.NAME="CONSTRUCTED";var Rl=class extends Lt{fromBER(e,t,n){return t}toBER(e){return Hr}};Rl.override="EndOfContentValueBlock";var tm,Sl=class extends xt{constructor(e={}){super(e,Rl),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};tm=Sl;W.EndOfContent=tm;Sl.NAME=Sa;var rm,go=class extends xt{constructor(e={}){super(e,Lt),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let o=new Uint8Array(n);o[0]=5,o[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};rm=go;W.Null=rm;go.NAME="NULL";var _l=class extends Mn(Lt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=we.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let o=we.BufferSourceConverter.toUint8Array(e);return Bn(this,o,t,n)?(this.valueHexView=o.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,Xh.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};_l.NAME="BooleanValueBlock";var nm,Al=class extends xt{constructor(e={}){super(e,_l),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};nm=Al;W.Boolean=nm;Al.NAME="BOOLEAN";var Il=class extends Mn(cn){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let o=0;if(this.isConstructed){if(this.isHexOnly=!1,o=cn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let s=0;s<this.value.length;s++){let i=this.value[s].constructor.NAME;if(i===Sa){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==Q8)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,o=super.fromBER(e,t,n),this.blockLength=n;return o}toBER(e,t){return this.isConstructed?cn.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Il.NAME="OctetStringValueBlock";var om,Ln=class r extends xt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Il),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let s=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(s.byteLength){let i=tu(s,0,s.byteLength);i.offset!==-1&&i.offset===n&&(this.valueBlock.value=[i.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?mo.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${we.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return we.BufferSourceConverter.concat(e)}};om=Ln;W.OctetString=om;Ln.NAME=Q8;var Dl=class extends Mn(cn){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let o=-1;if(this.isConstructed){if(o=cn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===Sa){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==j8)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let l=a.valueBlock;if(this.unusedBits>0&&l.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=l.unusedBits}return o}let s=we.BufferSourceConverter.toUint8Array(e);if(!Bn(this,s,t,n))return-1;let i=s.subarray(t,t+n);if(this.unusedBits=i[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=i.subarray(1);try{if(a.byteLength){let c=tu(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=i.subarray(1),this.blockLength=i.length,t+n}toBER(e,t){if(this.isConstructed)return cn.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Hr;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};Dl.NAME="BitStringValueBlock";var sm,ii=class extends xt{constructor({idBlock:e={},lenBlock:t={},...n}={}){var o,s;(o=n.isConstructed)!==null&&o!==void 0||(n.isConstructed=!!(!((s=n.value)===null||s===void 0)&&s.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},Dl),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return mo.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let o of t)e.push(o.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};sm=ii;W.BitString=sm;ii.NAME=j8;var im;function XR(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l=0,d=c<i?i:c,u=0;for(let h=d;h>=0;h--,u++){switch(!0){case u<a.length:l=s[i-u]+a[c-u]+t[0];break;default:l=s[i-u]+t[0]}switch(t[0]=l/10,!0){case u>=s.length:s=gl(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=gl(t,s)),s}function X8(r){if(r>=va.length)for(let e=va.length;e<=r;e++){let t=new Uint8Array([0]),n=va[e-1].slice(0);for(let o=n.length-1;o>=0;o--){let s=new Uint8Array([(n[o]<<1)+t[0]]);t[0]=s[0]/10,n[o]=s[0]%10}t[0]>0&&(n=gl(t,n)),va.push(n)}return va[r]}function QR(r,e){let t=0,n=new Uint8Array(r),o=new Uint8Array(e),s=n.slice(0),i=s.length-1,a=o.slice(0),c=a.length-1,l,d=0;for(let u=c;u>=0;u--,d++)switch(l=s[i-d]-a[c-d]-t,!0){case l<0:t=1,s[i-d]=l+10;break;default:t=0,s[i-d]=l}if(t>0)for(let u=i-c+1;u>=0;u--,d++)if(l=s[i-d]-t,l<0)t=1,s[i-d]=l+10;else{t=0,s[i-d]=l;break}return s.slice()}var _a=class extends Mn(Lt){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=Xh.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(W8(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,o=0){let s=this.fromBER(e,t,n);if(s===-1)return s;let i=this.valueHexView;return i[0]===0&&i[1]&128?this.valueHexView=i.subarray(1):o!==0&&i.length<o&&(o-i.length>1&&(o=i.length+1),this.valueHexView=i.subarray(o-i.length)),s}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let o=super.fromBER(e,t,n);return o===-1||this.setValueHex(),o}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,o,s=this.valueHexView,i="",a=!1;for(let c=s.byteLength-1;c>=0;c--){o=s[c];for(let l=0;l<8;l++){if((o&1)===1)switch(n){case e:t=QR(X8(n),t),i="-";break;default:t=XR(t,X8(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=Y8.charAt(t[c]));return a===!1&&(i+=Y8.charAt(0)),i}};im=_a;_a.NAME="IntegerValueBlock";Object.defineProperty(im.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var am,at=class r extends xt{constructor(e={}){super(e,_a),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return yl(),BigInt(this.valueBlock.toString())}static fromBigInt(e){yl();let t=BigInt(e),n=new Ra,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(we.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${we.Convert.ToHex(a)}`)+t,d=we.BufferSourceConverter.toUint8Array(we.Convert.FromHex(l.toString(16)));d[0]|=128,n.write(d)}else s[0]&128&&n.write(new Uint8Array([0])),n.write(s);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};am=at;W.Integer=am;at.NAME="INTEGER";var cm,Tl=class extends at{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};cm=Tl;W.Enumerated=cm;Tl.NAME="ENUMERATED";var Aa=class extends Mn(Lt){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Bn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=as(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){yl();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let o=0;o<n.length;o++)n[o]=parseInt(t.slice(o*7,o*7+7),2)+(o+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=po(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Hr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n}toString(){let e="";if(this.isHexOnly)e=we.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};Aa.NAME="sidBlock";var kl=class extends Lt{constructor({value:e=ai,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Aa;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.value.length===0&&(s.isFirstSid=!0),this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let o=this.value[n].toBER(e);if(o.byteLength===0)return this.error=this.value[n].error,Hr;t.push(o)}return Qh(t)}fromString(e){this.value=[];let t=0,n=0,o="",s=!1;do if(n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1,s){let i=this.value[0],a=0;switch(i.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(o,10);if(isNaN(c))return;i.valueDec=c+a,s=!1}else{let i=new Aa;if(o>Number.MAX_SAFE_INTEGER){yl();let a=BigInt(o);i.valueBigInt=a}else if(i.valueDec=parseInt(o,10),isNaN(i.valueDec))return;this.value.length||(i.isFirstSid=!0,s=!0),this.value.push(i)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t?(o=`{${o}}`,this.value[n].isFirstSid?e=`2.{${o} - 80}`:e+=o):e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};kl.NAME="ObjectIdentifierValueBlock";var lm,$r=class extends xt{constructor(e={}){super(e,kl),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};lm=$r;W.ObjectIdentifier=lm;$r.NAME="OBJECT IDENTIFIER";var Ia=class extends Mn(Pn){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=we.BufferSourceConverter.toUint8Array(e);if(!Bn(this,o,t,n))return-1;let s=o.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=s[a]&127,this.blockLength++,!!(s[a]&128));a++);let i=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)i[a]=this.valueHexView[a];return this.valueHexView=i,s[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=as(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let o=this.valueHexView,s=new Uint8Array(this.blockLength);for(let i=0;i<this.blockLength-1;i++)s[i]=o[i]|128;return s[this.blockLength-1]=o[this.blockLength-1],s.buffer}let t=po(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Hr;let n=new Uint8Array(t.byteLength);if(!e){let o=new Uint8Array(t),s=t.byteLength-1;for(let i=0;i<s;i++)n[i]=o[i]|128;n[s]=o[s]}return n.buffer}toString(){let e="";return this.isHexOnly?e=we.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Ia.NAME="relativeSidBlock";var Cl=class extends Lt{constructor({value:e=ai,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Ia;if(o=s.fromBER(e,o,n),o===-1)return this.blockLength=0,this.error=s.error,o;this.blockLength+=s.blockLength,n-=s.blockLength,this.value.push(s)}return o}toBER(e,t){let n=[];for(let o=0;o<this.value.length;o++){let s=this.value[o].toBER(e);if(s.byteLength===0)return this.error=this.value[o].error,Hr;n.push(s)}return Qh(n)}fromString(e){this.value=[];let t=0,n=0,o="";do{n=e.indexOf(".",t),n===-1?o=e.substring(t):o=e.substring(t,n),t=n+1;let s=new Ia;if(s.valueDec=parseInt(o,10),isNaN(s.valueDec))return!0;this.value.push(s)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let o=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(o=`{${o}}`),e+=o}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};Cl.NAME="RelativeObjectIdentifierValueBlock";var um,Nl=class extends xt{constructor(e={}){super(e,Cl),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};um=Nl;W.RelativeObjectIdentifier=um;Nl.NAME="RelativeObjectIdentifier";var dm,gt=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};dm=gt;W.Sequence=dm;gt.NAME="SEQUENCE";var fm,Pl=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};fm=Pl;W.Set=fm;Pl.NAME="SET";var Ll=class extends Mn(Lt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ai}toJSON(){return{...super.toJSON(),value:this.value}}};Ll.NAME="StringValueBlock";var Ol=class extends Ll{};Ol.NAME="SimpleStringValueBlock";var Ut=class extends bl{constructor({...e}={}){super(e,Ol)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let o=0;o<t;o++)n[o]=e.charCodeAt(o);this.valueBlock.value=e}};Ut.NAME="SIMPLE STRING";var Bl=class extends Ut{fromBuffer(e){this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=we.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=we.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf8String(e)),this.valueBlock.value=e}};Bl.NAME="Utf8StringValueBlock";var hm,On=class extends Bl{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};hm=On;W.Utf8String=hm;On.NAME="UTF8String";var Ml=class extends Ut{fromBuffer(e){this.valueBlock.value=we.Convert.ToUtf16String(e),this.valueBlock.valueHexView=we.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(we.Convert.FromUtf16String(e))}};Ml.NAME="BmpStringValueBlock";var pm,Ul=class extends Ml{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};pm=Ul;W.BmpString=pm;Ul.NAME="BMPString";var Fl=class extends Ut{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let o=0;o<n.length;o+=4)n[o]=n[o+3],n[o+1]=n[o+2],n[o+2]=0,n[o+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let o=0;o<t;o++){let s=po(e.charCodeAt(o),8),i=new Uint8Array(s);if(i.length>4)continue;let a=4-i.length;for(let c=i.length-1;c>=0;c--)n[o*4+c+a]=i[c]}this.valueBlock.value=e}};Fl.NAME="UniversalStringValueBlock";var mm,Vl=class extends Fl{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};mm=Vl;W.UniversalString=mm;Vl.NAME="UniversalString";var gm,Kl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};gm=Kl;W.NumericString=gm;Kl.NAME="NumericString";var ym,$l=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};ym=$l;W.PrintableString=ym;$l.NAME="PrintableString";var wm,Hl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};wm=Hl;W.TeletexString=wm;Hl.NAME="TeletexString";var Em,ql=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};Em=ql;W.VideotexString=Em;ql.NAME="VideotexString";var bm,Gl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};bm=Gl;W.IA5String=bm;Gl.NAME="IA5String";var xm,Wl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};xm=Wl;W.GraphicString=xm;Wl.NAME="GraphicString";var vm,Da=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};vm=Da;W.VisibleString=vm;Da.NAME="VisibleString";var Rm,zl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};Rm=zl;W.GeneralString=Rm;zl.NAME="GeneralString";var Sm,Yl=class extends Ut{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};Sm=Yl;W.CharacterString=Sm;Yl.NAME="CharacterString";var _m,Ta=class extends Da{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let o=0;o<e.length;o++)this.valueBlock.valueHexView[o]=e.charCodeAt(o)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,we.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let o=parseInt(n[1],10);o>=50?this.year=1900+o:this.year=2e3+o,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=qt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=qt(this.month,2),t[2]=qt(this.day,2),t[3]=qt(this.hour,2),t[4]=qt(this.minute,2),t[5]=qt(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};_m=Ta;W.UTCTime=_m;Ta.NAME="UTCTime";var Am,Xl=class extends Ta{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",o="",s=0,i,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let u=new Number(e[e.length-1]);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let u=1,h=n.indexOf("+"),f="";if(h===-1&&(h=n.indexOf("-"),u=-1),h!==-1){if(f=n.substring(h+1),n=n.substring(0,h),f.length!==2&&f.length!==4)throw new Error("Wrong input string for conversion");let p=parseInt(f.substring(0,2),10);if(isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*p,f.length===4){if(p=parseInt(f.substring(2,4),10),isNaN(p.valueOf()))throw new Error("Wrong input string for conversion");c=u*p}}}let l=n.indexOf(".");if(l===-1&&(l=n.indexOf(",")),l!==-1){let u=new Number(`0${n.substring(l)}`);if(isNaN(u.valueOf()))throw new Error("Wrong input string for conversion");s=u.valueOf(),o=n.substring(0,l)}else o=n;switch(!0){case o.length===8:if(i=/(\d{4})(\d{2})(\d{2})/ig,l!==-1)throw new Error("Wrong input string for conversion");break;case o.length===10:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.minute=Math.floor(u),u=60*(u-this.minute),this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===12:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=60*s;this.second=Math.floor(u),u=1e3*(u-this.second),this.millisecond=Math.floor(u)}break;case o.length===14:if(i=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,l!==-1){let u=1e3*s;this.millisecond=Math.floor(u)}break;default:throw new Error("Wrong input string for conversion")}let d=i.exec(o);if(d===null)throw new Error("Wrong input string for conversion");for(let u=1;u<d.length;u++)switch(u){case 1:this.year=parseInt(d[u],10);break;case 2:this.month=parseInt(d[u],10);break;case 3:this.day=parseInt(d[u],10);break;case 4:this.hour=parseInt(d[u],10)+a;break;case 5:this.minute=parseInt(d[u],10)+c;break;case 6:this.second=parseInt(d[u],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let u=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=u.getUTCFullYear(),this.month=u.getUTCMonth(),this.day=u.getUTCDay(),this.hour=u.getUTCHours(),this.minute=u.getUTCMinutes(),this.second=u.getUTCSeconds(),this.millisecond=u.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(qt(this.year,4)),t.push(qt(this.month,2)),t.push(qt(this.day,2)),t.push(qt(this.hour,2)),t.push(qt(this.minute,2)),t.push(qt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(qt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Am=Xl;W.GeneralizedTime=Am;Xl.NAME="GeneralizedTime";var Im,Ql=class extends On{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Im=Ql;W.DATE=Im;Ql.NAME="DATE";var Dm,jl=class extends On{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};Dm=jl;W.TimeOfDay=Dm;jl.NAME="TimeOfDay";var Tm,Zl=class extends On{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};Tm=Zl;W.DateTime=Tm;Zl.NAME="DateTime";var km,Jl=class extends On{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};km=Jl;W.Duration=km;Jl.NAME="Duration";var Cm,eu=class extends On{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};Cm=eu;W.TIME=Cm;eu.NAME="TIME";function ZR(r){let{result:e}=ci(r),t=e.valueBlock.value;return{n:O(ln(t[1].toBigInt()),"base64url"),e:O(ln(t[2].toBigInt()),"base64url"),d:O(ln(t[3].toBigInt()),"base64url"),p:O(ln(t[4].toBigInt()),"base64url"),q:O(ln(t[5].toBigInt()),"base64url"),dp:O(ln(t[6].toBigInt()),"base64url"),dq:O(ln(t[7].toBigInt()),"base64url"),qi:O(ln(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function JR(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 g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new gt({value:[new at({value:0}),at.fromBigInt(un(M(r.n,"base64url"))),at.fromBigInt(un(M(r.e,"base64url"))),at.fromBigInt(un(M(r.d,"base64url"))),at.fromBigInt(un(M(r.p,"base64url"))),at.fromBigInt(un(M(r.q,"base64url"))),at.fromBigInt(un(M(r.dp,"base64url"))),at.fromBigInt(un(M(r.dq,"base64url"))),at.fromBigInt(un(M(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function eS(r){let{result:e}=ci(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:O(ln(t[0].toBigInt()),"base64url"),e:O(ln(t[1].toBigInt()),"base64url")}}function tS(r){if(r.n==null||r.e==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new gt({value:[new gt({value:[new $r({value:"1.2.840.113549.1.1.1"}),new go]}),new ii({valueHex:new gt({value:[at.fromBigInt(un(M(r.n,"base64url"))),at.fromBigInt(un(M(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ln(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),o=0,s=0;for(;o<t;)n[o]=parseInt(e.slice(s,s+2),16),o+=1,s+=2;return n}function un(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var rS=16,Zh=32,Jh=1e4;async function nS(r,e){let t=qe.get(),o=new gt({value:[new at({value:0}),new gt({value:[new $r({value:"1.2.840.113549.1.1.1"}),new go]}),new Ln({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=mt(rS),a=await zh(lo,e,i,{c:Jh,dkLen:Zh}),c=mt(16),l=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),d=await t.subtle.encrypt({name:"AES-CBC",iv:c},l,s),u=new gt({value:[new Ln({valueHex:i}),new at({value:Jh}),new at({value:Zh}),new gt({value:[new $r({value:"1.2.840.113549.2.11"}),new go]})]}),h=new gt({value:[new $r({value:"1.2.840.113549.1.5.13"}),new gt({value:[new gt({value:[new $r({value:"1.2.840.113549.1.5.12"}),u]}),new gt({value:[new $r({value:"2.16.840.1.101.3.4.1.42"}),new Ln({valueHex:c})]})]})]}),p=new gt({value:[h,new Ln({valueHex:d})]}).toBER(),m=new Uint8Array(p,0,p.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...O(m,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
22
+ `)}async function e0(r,e){let t=qe.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=M(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ci(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=oS(s),u=await zh(lo,e,a,{c,dkLen:l}),h=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),f=ka(await t.subtle.decrypt({name:"AES-CBC",iv:i},h,d)),{result:p}=ci(f);n=Nm(p)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=M(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ci(o);n=Nm(s)}else throw new g("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return t0(n)}function oS(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new g("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new g("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=ka(s.valueBlock.value[0].getValue()),a=Jh,c=Zh;if(s.valueBlock.value.length===3)a=Number(s.valueBlock.value[1].toBigInt()),c=Number(s.valueBlock.value[2].toBigInt());else if(s.valueBlock.value.length===2)throw new g("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let l=e.valueBlock.value[1].valueBlock.value[1],d=l.valueBlock.value[0].toString();if(d!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(d!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(d!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new g("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=ka(l.valueBlock.value[1].getValue());return{cipherText:ka(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function Nm(r){return ka(r.valueBlock.value[2].getValue())}function ka(r){return new Uint8Array(r,0,r.byteLength)}async function Pm(r){let e=await qe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Bm(e);return{privateKey:t[0],publicKey:t[1]}}async function r0(r){let t=[await qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await sS(r)],n=await Bm({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Lm(r,e){let t=await qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await qe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Om(r,e,t){let n=await qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return qe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Bm(r){if(r.privateKey==null||r.publicKey==null)throw new g("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([qe.get().subtle.exportKey("jwk",r.privateKey),qe.get().subtle.exportKey("jwk",r.publicKey)])}async function sS(r){return qe.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function ru(r){if(r.kty!=="RSA")throw new g("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new g("invalid key modulus","ERR_INVALID_KEY_MODULUS");return M(r.n,"base64url").length*8}var ls=8192,cs=class{_key;constructor(e){this._key=e}verify(e,t){return Om(this._key,t,e)}marshal(){return yo.jwkToPkix(this._key)}get bytes(){return Vr.encode({Type:Ke.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return br(e)?e.then(({bytes:t})=>t):e.bytes}},wo=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return mt(16)}sign(e){return Lm(this._key,e)}get public(){if(this._publicKey==null)throw new g("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new cs(this._publicKey)}marshal(){return yo.jwkToPkcs1(this._key)}get bytes(){return Kr.encode({Type:Ke.RSA,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return br(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return O(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return yo.exportToPem(this,e);if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function t0(r){let e=yo.pkcs1ToJwk(r);if(ru(e)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await r0(e);return new wo(t.privateKey,t.publicKey)}function aS(r){let e=yo.pkixToJwk(r);if(ru(e)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new cs(e)}async function cS(r){if(ru(r)>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await r0(r);return new wo(e.privateKey,e.publicKey)}async function lS(r){if(r>ls)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Pm(r);return new wo(e.privateKey,e.publicKey)}var c0={};pe(c0,{Secp256k1PrivateKey:()=>fs,Secp256k1PublicKey:()=>ds,generateKeyPair:()=>vS,unmarshalSecp256k1PrivateKey:()=>bS,unmarshalSecp256k1PublicKey:()=>xS});var uS=new Uint32Array([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]),Eo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),bo=new Uint32Array(64),o0=class extends io{constructor(){super(64,32,8,!1),this.A=Eo[0]|0,this.B=Eo[1]|0,this.C=Eo[2]|0,this.D=Eo[3]|0,this.E=Eo[4]|0,this.F=Eo[5]|0,this.G=Eo[6]|0,this.H=Eo[7]|0}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)bo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let h=bo[u-15],f=bo[u-2],p=Br(h,7)^Br(h,18)^h>>>3,m=Br(f,17)^Br(f,19)^f>>>10;bo[u]=m+bo[u-7]+p+bo[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 h=Br(a,6)^Br(a,11)^Br(a,25),f=d+h+tl(a,c,l)+uS[u]+bo[u]|0,m=(Br(n,2)^Br(n,13)^Br(n,22))+rl(n,o,s)|0;d=l,l=c,c=a,a=i+f|0,i=s,s=o,o=n,n=f+m|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(){bo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var xo=Zs(()=>new o0);function dS(r){let e=wa(r);xr(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:o}=e;if(t){if(!n.eql(o,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:fS,hexToBytes:hS}=sl,us={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=us;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:fS(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=us,t=typeof r=="string"?hS(r):r;Js(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:o,l:s}=us._parseInt(t.subarray(2)),{d:i,l:a}=us._parseInt(s);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:o,s:i}},hexFromSig(r){let e=l=>Number.parseInt(l[0],16)&8?"00"+l:l,t=l=>{let d=l.toString(16);return d.length&1?`0${d}`:d},n=e(t(r.s)),o=e(t(r.r)),s=n.length/2,i=o.length/2,a=t(s),c=t(i);return`30${t(i+s+4)}02${c}${o}02${a}${n}`}},Un=BigInt(0),Rr=BigInt(1),oU=BigInt(2),Mm=BigInt(3),sU=BigInt(4);function pS(r){let e=dS(r),{Fp:t}=e,n=e.toBytes||((p,m,y)=>{let w=m.toAffine();return Dn(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(p=>{let m=p.subarray(1),y=t.fromBytes(m.subarray(0,t.BYTES)),w=t.fromBytes(m.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(p){let{a:m,b:y}=e,w=t.sqr(p),b=t.mul(w,p);return t.add(t.add(b,t.mul(p,m)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(p){return typeof p=="bigint"&&Un<p&&p<e.n}function a(p){if(!i(p))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(p){let{allowedPrivateKeyLengths:m,nByteLength:y,wrapPrivateKey:w,n:b}=e;if(m&&typeof p!="bigint"){if(uo(p)&&(p=_n(p)),typeof p!="string"||!m.includes(p.length))throw new Error("Invalid key");p=p.padStart(y*2,"0")}let E;try{E=typeof p=="bigint"?p:An(Fe("private key",p,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof p}`)}return w&&(E=Ie(E,b)),a(E),E}let l=new Map;function d(p){if(!(p instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(m,y,w){if(this.px=m,this.py=y,this.pz=w,m==null||!t.isValid(m))throw new Error("x required");if(y==null||!t.isValid(y))throw new Error("y required");if(w==null||!t.isValid(w))throw new Error("z required")}static fromAffine(m){let{x:y,y:w}=m||{};if(!m||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(m instanceof u)throw new Error("projective point not allowed");let b=E=>t.eql(E,t.ZERO);return b(y)&&b(w)?u.ZERO:new u(y,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(m){let y=t.invertBatch(m.map(w=>w.pz));return m.map((w,b)=>w.toAffine(y[b])).map(u.fromAffine)}static fromHex(m){let y=u.fromAffine(o(Fe("pointHex",m)));return y.assertValidity(),y}static fromPrivateKey(m){return u.BASE.multiply(c(m))}_setWindowSize(m){this._WINDOW_SIZE=m,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:m,y}=this.toAffine();if(!t.isValid(m)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),b=s(m);if(!t.eql(w,b))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:m}=this.toAffine();if(t.isOdd)return!t.isOdd(m);throw new Error("Field doesn't support isOdd")}equals(m){d(m);let{px:y,py:w,pz:b}=this,{px:E,py:x,pz:v}=m,I=t.eql(t.mul(y,v),t.mul(E,b)),S=t.eql(t.mul(w,v),t.mul(x,b));return I&&S}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:m,b:y}=e,w=t.mul(y,Mm),{px:b,py:E,pz:x}=this,v=t.ZERO,I=t.ZERO,S=t.ZERO,R=t.mul(b,b),T=t.mul(E,E),L=t.mul(x,x),N=t.mul(b,E);return N=t.add(N,N),S=t.mul(b,x),S=t.add(S,S),v=t.mul(m,S),I=t.mul(w,L),I=t.add(v,I),v=t.sub(T,I),I=t.add(T,I),I=t.mul(v,I),v=t.mul(N,v),S=t.mul(w,S),L=t.mul(m,L),N=t.sub(R,L),N=t.mul(m,N),N=t.add(N,S),S=t.add(R,R),R=t.add(S,R),R=t.add(R,L),R=t.mul(R,N),I=t.add(I,R),L=t.mul(E,x),L=t.add(L,L),R=t.mul(L,N),v=t.sub(v,R),S=t.mul(L,T),S=t.add(S,S),S=t.add(S,S),new u(v,I,S)}add(m){d(m);let{px:y,py:w,pz:b}=this,{px:E,py:x,pz:v}=m,I=t.ZERO,S=t.ZERO,R=t.ZERO,T=e.a,L=t.mul(e.b,Mm),N=t.mul(y,E),B=t.mul(w,x),k=t.mul(b,v),X=t.add(y,w),D=t.add(E,x);X=t.mul(X,D),D=t.add(N,B),X=t.sub(X,D),D=t.add(y,b);let P=t.add(E,v);return D=t.mul(D,P),P=t.add(N,k),D=t.sub(D,P),P=t.add(w,b),I=t.add(x,v),P=t.mul(P,I),I=t.add(B,k),P=t.sub(P,I),R=t.mul(T,D),I=t.mul(L,k),R=t.add(I,R),I=t.sub(B,R),R=t.add(B,R),S=t.mul(I,R),B=t.add(N,N),B=t.add(B,N),k=t.mul(T,k),D=t.mul(L,D),B=t.add(B,k),k=t.sub(N,k),k=t.mul(T,k),D=t.add(D,k),N=t.mul(B,D),S=t.add(S,N),N=t.mul(P,D),I=t.mul(X,I),I=t.sub(I,N),N=t.mul(X,B),R=t.mul(P,R),R=t.add(R,N),new u(I,S,R)}subtract(m){return this.add(m.negate())}is0(){return this.equals(u.ZERO)}wNAF(m){return f.wNAFCached(this,l,m,y=>{let w=t.invertBatch(y.map(b=>b.pz));return y.map((b,E)=>b.toAffine(w[E])).map(u.fromAffine)})}multiplyUnsafe(m){let y=u.ZERO;if(m===Un)return y;if(a(m),m===Rr)return this;let{endo:w}=e;if(!w)return f.unsafeLadder(this,m);let{k1neg:b,k1:E,k2neg:x,k2:v}=w.splitScalar(m),I=y,S=y,R=this;for(;E>Un||v>Un;)E&Rr&&(I=I.add(R)),v&Rr&&(S=S.add(R)),R=R.double(),E>>=Rr,v>>=Rr;return b&&(I=I.negate()),x&&(S=S.negate()),S=new u(t.mul(S.px,w.beta),S.py,S.pz),I.add(S)}multiply(m){a(m);let y=m,w,b,{endo:E}=e;if(E){let{k1neg:x,k1:v,k2neg:I,k2:S}=E.splitScalar(y),{p:R,f:T}=this.wNAF(v),{p:L,f:N}=this.wNAF(S);R=f.constTimeNegate(x,R),L=f.constTimeNegate(I,L),L=new u(t.mul(L.px,E.beta),L.py,L.pz),w=R.add(L),b=T.add(N)}else{let{p:x,f:v}=this.wNAF(y);w=x,b=v}return u.normalizeZ([w,b])[0]}multiplyAndAddUnsafe(m,y,w){let b=u.BASE,E=(v,I)=>I===Un||I===Rr||!v.equals(b)?v.multiplyUnsafe(I):v.multiply(I),x=E(this,y).add(E(m,w));return x.is0()?void 0:x}toAffine(m){let{px:y,py:w,pz:b}=this,E=this.is0();m==null&&(m=E?t.ONE:t.inv(b));let x=t.mul(y,m),v=t.mul(w,m),I=t.mul(b,m);if(E)return{x:t.ZERO,y:t.ZERO};if(!t.eql(I,t.ONE))throw new Error("invZ was invalid");return{x,y:v}}isTorsionFree(){let{h:m,isTorsionFree:y}=e;if(m===Rr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:m,clearCofactor:y}=e;return m===Rr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(m=!0){return this.assertValidity(),n(u,this,m)}toHex(m=!0){return _n(this.toRawBytes(m))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let h=e.nBitLength,f=cl(u,e.endo?Math.ceil(h/2):h);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function mS(r){let e=wa(r);return xr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function Um(r){let e=mS(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(D){return Un<D&&D<t.ORDER}function a(D){return Ie(D,n)}function c(D){return il(D,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:h}=pS({...e,toBytes(D,P,$){let C=P.toAffine(),A=t.toBytes(C.x),U=Dn;return $?U(Uint8Array.from([P.hasEvenY()?2:3]),A):U(Uint8Array.from([4]),A,t.toBytes(C.y))},fromBytes(D){let P=D.length,$=D[0],C=D.subarray(1);if(P===o&&($===2||$===3)){let A=An(C);if(!i(A))throw new Error("Point is not on curve");let U=u(A),V;try{V=t.sqrt(U)}catch(ie){let de=ie instanceof Error?": "+ie.message:"";throw new Error("Point is not on curve"+de)}let H=(V&Rr)===Rr;return($&1)===1!==H&&(V=t.neg(V)),{x:A,y:V}}else if(P===s&&$===4){let A=t.fromBytes(C.subarray(0,t.BYTES)),U=t.fromBytes(C.subarray(t.BYTES,2*t.BYTES));return{x:A,y:U}}else throw new Error(`Point of length ${P} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),f=D=>_n(fo(D,e.nByteLength));function p(D){let P=n>>Rr;return D>P}function m(D){return p(D)?a(-D):D}let y=(D,P,$)=>An(D.slice(P,$));class w{constructor(P,$,C){this.r=P,this.s=$,this.recovery=C,this.assertValidity()}static fromCompact(P){let $=e.nByteLength;return P=Fe("compactSignature",P,$*2),new w(y(P,0,$),y(P,$,2*$))}static fromDER(P){let{r:$,s:C}=us.toSig(Fe("DER",P));return new w($,C)}assertValidity(){if(!h(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!h(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(P){return new w(this.r,this.s,P)}recoverPublicKey(P){let{r:$,s:C,recovery:A}=this,U=S(Fe("msgHash",P));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let V=A===2||A===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let H=A&1?"03":"02",se=l.fromHex(H+f(V)),ie=c(V),de=a(-U*ie),ae=a(C*ie),ue=l.BASE.multiplyAndAddUnsafe(se,de,ae);if(!ue)throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return p(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return os(this.toDERHex())}toDERHex(){return us.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return os(this.toCompactHex())}toCompactHex(){return f(this.r)+f(this.s)}}let b={isValidPrivateKey(D){try{return d(D),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let D=Mh(e.n);return b8(e.randomBytes(D),e.n)},precompute(D=8,P=l.BASE){return P._setWindowSize(D),P.multiply(BigInt(3)),P}};function E(D,P=!0){return l.fromPrivateKey(D).toRawBytes(P)}function x(D){let P=uo(D),$=typeof D=="string",C=(P||$)&&D.length;return P?C===o||C===s:$?C===2*o||C===2*s:D instanceof l}function v(D,P,$=!0){if(x(D))throw new Error("first arg must be private key");if(!x(P))throw new Error("second arg must be public key");return l.fromHex(P).multiply(d(D)).toRawBytes($)}let I=e.bits2int||function(D){let P=An(D),$=D.length*8-e.nBitLength;return $>0?P>>BigInt($):P},S=e.bits2int_modN||function(D){return a(I(D))},R=ya(e.nBitLength);function T(D){if(typeof D!="bigint")throw new Error("bigint expected");if(!(Un<=D&&D<R))throw new Error(`bigint expected < 2^${e.nBitLength}`);return fo(D,e.nByteLength)}function L(D,P,$=N){if(["recovered","canonical"].some(Ne=>Ne in $))throw new Error("sign() legacy options not supported");let{hash:C,randomBytes:A}=e,{lowS:U,prehash:V,extraEntropy:H}=$;U==null&&(U=!0),D=Fe("msgHash",D),V&&(D=Fe("prehashed msgHash",C(D)));let se=S(D),ie=d(P),de=[T(ie),T(se)];if(H!=null&&H!==!1){let Ne=H===!0?A(t.BYTES):H;de.push(Fe("extraEntropy",Ne))}let ae=Dn(...de),ue=se;function Me(Ne){let wt=I(Ne);if(!h(wt))return;let Et=c(wt),lt=l.BASE.multiply(wt).toAffine(),Ct=a(lt.x);if(Ct===Un)return;let En=a(Et*a(ue+Ct*ie));if(En===Un)return;let Ho=(lt.x===Ct?0:2)|Number(lt.y&Rr),ca=En;return U&&p(En)&&(ca=m(En),Ho^=1),new w(Ct,ca,Ho)}return{seed:ae,k2sig:Me}}let N={lowS:e.lowS,prehash:!1},B={lowS:e.lowS,prehash:!1};function k(D,P,$=N){let{seed:C,k2sig:A}=L(D,P,$),U=e;return Nh(U.hash.outputLen,U.nByteLength,U.hmac)(C,A)}l.BASE._setWindowSize(8);function X(D,P,$,C=B){let A=D;if(P=Fe("msgHash",P),$=Fe("publicKey",$),"strict"in C)throw new Error("options.strict was renamed to lowS");let{lowS:U,prehash:V}=C,H,se;try{if(typeof A=="string"||uo(A))try{H=w.fromDER(A)}catch(lt){if(!(lt instanceof us.Err))throw lt;H=w.fromCompact(A)}else if(typeof A=="object"&&typeof A.r=="bigint"&&typeof A.s=="bigint"){let{r:lt,s:Ct}=A;H=new w(lt,Ct)}else throw new Error("PARSE");se=l.fromHex($)}catch(lt){if(lt.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(U&&H.hasHighS())return!1;V&&(P=e.hash(P));let{r:ie,s:de}=H,ae=S(P),ue=c(de),Me=a(ae*ue),Ne=a(ie*ue),wt=l.BASE.multiplyAndAddUnsafe(se,Me,Ne)?.toAffine();return wt?a(wt.x)===ie:!1}return{CURVE:e,getPublicKey:E,getSharedSecret:v,sign:k,verify:X,ProjectivePoint:l,Signature:w,utils:b}}function gS(r){return{hash:r,hmac:(e,...t)=>ho(r,e,el(...t)),randomBytes:ns}}function Fm(r,e){let t=n=>Um({...r,...gS(n)});return Object.freeze({...t(e),create:t})}var $m=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Vm=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),yS=BigInt(1),s0=BigInt(2),Km=(r,e)=>(r+e/s0)/e;function wS(r){let e=$m,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=Ve(d,t,e)*d%e,h=Ve(u,t,e)*d%e,f=Ve(h,s0,e)*l%e,p=Ve(f,o,e)*f%e,m=Ve(p,s,e)*p%e,y=Ve(m,a,e)*m%e,w=Ve(y,c,e)*y%e,b=Ve(w,a,e)*m%e,E=Ve(b,t,e)*d%e,x=Ve(E,i,e)*p%e,v=Ve(x,n,e)*l%e,I=Ve(v,s0,e);if(!i0.eql(i0.sqr(I),r))throw new Error("Cannot find square root");return I}var i0=al($m,void 0,void 0,{sqrt:wS}),qr=Fm({a:BigInt(0),b:BigInt(7),Fp:i0,n:Vm,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Vm,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-yS*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=Km(s*r,e),c=Km(-n*r,e),l=Ie(r-a*t-c*o,e),d=Ie(-a*n-c*s,e),u=l>i,h=d>i;if(u&&(l=e-l),h&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:h,k2:d}}}},xo),pU=BigInt(0);var mU=qr.ProjectivePoint;function Hm(){return qr.utils.randomPrivateKey()}function qm(r,e){let t=Ce.digest(e instanceof Uint8Array?e:e.subarray());if(br(t))return t.then(({digest:n})=>qr.sign(n,r).toDERRawBytes()).catch(n=>{throw new g(String(n),"ERR_INVALID_INPUT")});try{return qr.sign(t.digest,r).toDERRawBytes()}catch(n){throw new g(String(n),"ERR_INVALID_INPUT")}}function Gm(r,e,t){let n=Ce.digest(t instanceof Uint8Array?t:t.subarray());if(br(n))return n.then(({digest:o})=>qr.verify(e,o,r)).catch(o=>{throw new g(String(o),"ERR_INVALID_INPUT")});try{return qr.verify(e,n.digest,r)}catch(o){throw new g(String(o),"ERR_INVALID_INPUT")}}function Wm(r){return qr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function zm(r){try{qr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}function a0(r){try{qr.ProjectivePoint.fromHex(r)}catch(e){throw new g(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Ym(r){try{return qr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}var ds=class{_key;constructor(e){a0(e),this._key=e}verify(e,t){return Gm(this._key,t,e)}marshal(){return Wm(this._key)}get bytes(){return Vr.encode({Type:Ke.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}async hash(){let e=Ce.digest(this.bytes),t;return br(e)?{bytes:t}=await e:t=e.bytes,t}},fs=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Ym(e),zm(this._key),a0(this._publicKey)}sign(e){return qm(this._key,e)}get public(){return new ds(this._publicKey)}marshal(){return this._key}get bytes(){return Kr.encode({Type:Ke.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return Z(this.bytes,e.bytes)}hash(){let e=Ce.digest(this.bytes);return br(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return O(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ri(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function bS(r){return new fs(r)}function xS(r){return new ds(r)}async function vS(){let r=Hm();return new fs(r)}var Fn={rsa:n0,ed25519:Gh,secp256k1:c0};function l0(r){let e=Object.keys(Fn).join(" / ");return new g(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function u0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Fn[r];throw l0(r)}async function Ca(r,e){return u0(r).generateKeyPair(e??2048)}async function RS(r,e,t){if(r.toLowerCase()!=="ed25519")throw new g("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return qh(e)}function Gr(r){let e=Vr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ke.RSA:return Fn.rsa.unmarshalRsaPublicKey(t);case Ke.Ed25519:return Fn.ed25519.unmarshalEd25519PublicKey(t);case Ke.Secp256k1:return Fn.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw l0(e.Type??"unknown")}}function d0(r,e){return e=(e??"rsa").toLowerCase(),u0(e),r.bytes}async function Sr(r){let e=Kr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ke.RSA:return Fn.rsa.unmarshalRsaPrivateKey(t);case Ke.Ed25519:return Fn.ed25519.unmarshalEd25519PrivateKey(t);case Ke.Secp256k1:return Fn.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw l0(e.Type??"RSA")}}function f0(r,e){return e=(e??"rsa").toLowerCase(),u0(e),r.bytes}async function li(r,e){try{let t=await F8(r,e);return await Sr(t)}catch{}if(!r.includes("BEGIN"))throw new g("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return e0(r,e)}var Na=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),vo=new Uint32Array(80),h0=class extends io{constructor(){super(64,20,8,!1),this.A=Na[0]|0,this.B=Na[1]|0,this.C=Na[2]|0,this.D=Na[3]|0,this.E=Na[4]|0}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)vo[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)vo[c]=Jc(vo[c-3]^vo[c-8]^vo[c-14]^vo[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=tl(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=rl(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=Jc(n,5)+l+a+d+vo[c]|0;a=i,i=s,s=Jc(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(){vo.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},Xm=Zs(()=>new h0);var Qm={sha1:Xm,"sha2-256":xo,"sha2-512":lo};function Pa(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(Qm).join(" / ");throw new g(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=Qm[o],i=q8(s,r,e,{c:t,dkLen:n});return st.encode(i).substring(1)}var p0=class extends it{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 Oa(r){let{name:e,metrics:t}=r,n;return t!=null?n=new p0({name:e,metrics:t}):n=new it,n}var Vn=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=st.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=st.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=st.encode(e.multihash.bytes);this.blocks.set(n,t)}};function SS(r){let e=new Uint8Array(r.reduce((n,o)=>n+Se(o),0)),t=0;for(let n of r)e=$e(n,e,t),t+=Se(n);return e}var e6=SS;function m0(r){return e6([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var su=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;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}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)}async sendBlocksToPeer(e){let t=new Vn,n=new Set;for(let[o,s]of this.wants.entries())try{let i=await this.blockstore.get(s.cid,e);s.wantType===rt.WantHave?i.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",s.cid),n.add(o),t.addBlock(s.cid,{data:i,prefix:m0(s.cid)})):(this.log("sending have for %c",s.cid),t.addBlockPresence(s.cid,{cid:s.cid.bytes,type:Er.HaveBlock})):(this.log("sending block for %c",s.cid),n.add(o),t.addBlock(s.cid,{data:i,prefix:m0(s.cid)}))}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i;if(this.log("do not have block for %c",s.cid),!s.sendDontHave||s.sentDontHave===!0)continue;s.sentDontHave=!0,t.addBlockPresence(s.cid,{cid:s.cid.bytes,type:Er.DontHaveBlock})}if(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((o,s)=>o+s.data.byteLength,0));for(let o of n)this.wants.delete(o)}}};var iu=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=Oa({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",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.wants.values()]}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.peerId)}async receiveMessage(e,t){let n=this.ledgerMap.get(e);if(n==null&&(n=new su({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((o,s)=>o+s.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let o of t.wantlist.entries){let s=le.decode(o.cid),i=O(s.multihash.bytes,"base64");o.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,s),n.wants.delete(i)):(o.wantType===rt.WantHave?this.log("peer %p wanted block presence for %c",e,s):this.log("peer %p wanted block for %c",e,s),n.wants.set(i,{cid:s,priority:o.priority,wantType:o.wantType??rt.WantBlock,sendDontHave:o.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=O(e.multihash.bytes,"base64"),o=[];for(let s of this.ledgerMap.values())s.wants.has(n)&&o.push(s);await Promise.all(o.map(async s=>s.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};var tr=Xe(s6(),1);tr.default.formatters.b=r=>r==null?"undefined":Ye.baseEncode(r);tr.default.formatters.t=r=>r==null?"undefined":ut.baseEncode(r);tr.default.formatters.m=r=>r==null?"undefined":st.baseEncode(r);tr.default.formatters.p=r=>r==null?"undefined":r.toString();tr.default.formatters.c=r=>r==null?"undefined":r.toString();tr.default.formatters.k=r=>r==null?"undefined":r.toString();tr.default.formatters.a=r=>r==null?"undefined":r.toString();function MS(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 Ro(){return{forComponent(r){return rr(r)}}}function rr(r){let e=MS(`${r}:trace`);return tr.default.enabled(`${r}:trace`)&&tr.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,tr.default)(`${r}:trace`)),Object.assign((0,tr.default)(r),{error:(0,tr.default)(`${r}:error`),trace:e})}var y0=Xe(a6(),1);var So=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},w0=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},c6=r=>globalThis.DOMException===void 0?new w0(r):new DOMException(r),l6=r=>{let e=r.reason===void 0?c6("This operation was aborted."):r.reason;return e instanceof Error?e:c6(e)};function Wr(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:s={setTimeout,clearTimeout}}=e,i,c=new Promise((l,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:h}=e;h.aborted&&d(l6(h)),h.addEventListener("abort",()=>{d(l6(h))})}if(t===Number.POSITIVE_INFINITY){r.then(l,d);return}let u=new So;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(h){d(h)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?l():o instanceof Error?d(o):(u.message=o??`Promise timed out after ${t} milliseconds`,d(u))},t),(async()=>{try{l(await r)}catch(h){d(h)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function E0(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 Ma=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,run:e};if(this.size&&this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let o=E0(this.#e,n,(s,i)=>i.priority-s.priority);this.#e.splice(o,0,n)}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 Gt=class extends y0.default{#e;#t;#r=0;#o;#a;#l=0;#s;#u;#n;#m;#i=0;#d;#c;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Ma,...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})`);this.#e=e.carryoverConcurrencyCount,this.#t=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#o=e.intervalCap,this.#a=e.interval,this.#n=new e.queueClass,this.#m=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#g=e.throwOnTimeout===!0,this.#c=e.autoStart===!1}get#E(){return this.#t||this.#r<this.#o}get#b(){return this.#i<this.#d}#x(){this.#i--,this.#f(),this.emit("next")}#v(){this.#w(),this.#y(),this.#u=void 0}get#R(){let e=Date.now();if(this.#s===void 0){let t=this.#l-e;if(t<0)this.#r=this.#e?this.#i:0;else return this.#u===void 0&&(this.#u=setTimeout(()=>{this.#v()},t)),!0}return!1}#f(){if(this.#n.size===0)return this.#s&&clearInterval(this.#s),this.#s=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#c){let e=!this.#R;if(this.#E&&this.#b){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#s!==void 0||(this.#s=setInterval(()=>{this.#w()},this.#a),this.#l=Date.now()+this.#a)}#w(){this.#r===0&&this.#i===0&&this.#s&&(clearInterval(this.#s),this.#s=void 0),this.#r=this.#e?this.#i:0,this.#h()}#h(){for(;this.#f(););}get concurrency(){return this.#d}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.#d=e,this.#h()}async#S(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}async add(e,t={}){return t={timeout:this.timeout,throwOnTimeout:this.#g,...t},new Promise((n,o)=>{this.#n.enqueue(async()=>{this.#i++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=Wr(Promise.resolve(s),{milliseconds:t.timeout})),t.signal&&(s=Promise.race([s,this.#S(t.signal)]));let i=await s;n(i),this.emit("completed",i)}catch(s){if(s instanceof So&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#f()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#c?(this.#c=!1,this.#h(),this):this}pause(){this.#c=!0}clear(){this.#n=new this.#m}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.#i===0&&this.#n.size===0||await this.#p("idle")}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.#i}get isPaused(){return this.#c}};function uu(r){let e=[nr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var b0=60;function du(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:nr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:nr[e.type],TTL:e.TTL??e.ttl??b0,data:e.data instanceof Uint8Array?O(e.data):e.data}))}}var VS=4;function x0(r,e={}){let t=new Gt({concurrency:e.queryConcurrency??VS});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),uu(o.types).forEach(a=>{s.append("type",nr[a])}),o.onProgress?.(new ge("dns:query",{detail:n}));let i=await t.add(async()=>{let a=await fetch(`${r}?${s}`,{headers:{accept:"application/dns-json"},signal:o?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=du(await a.json());return o.onProgress?.(new ge("dns:response",{detail:c})),c},{signal:o.signal});if(i==null)throw new Error("No DNS response received");return i}}function u6(){return[x0("https://cloudflare-dns.com/dns-query"),x0("https://dns.google/resolve")]}var f6=Xe(v0(),1);var R0=class{lru;constructor(e){this.lru=(0,f6.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 du({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:nr[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??b0)*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 h6(r){return new R0(r)}var KS=1e3,fu=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=h6(e.cacheSize??KS),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["."]=u6())}async query(e,t={}){let n=uu(t.types),o=t.cached!==!1?this.cache.get(e,n):void 0;if(o!=null)return t.onProgress?.(new ge("dns:cache",{detail: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,types:n});for(let d of l.Answer)this.cache.add(e,d);return l}catch(l){a.push(l),t.onProgress?.(new ge("dns:error",{detail:l}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var nr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(nr||(nr={}));function hu(r={}){return new fu(r)}var $S=["string","number","bigint","symbol"],HS=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function p6(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if($S.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(qS(r))return"Buffer";let t=GS(r);return t||"Object"}function qS(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function GS(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(HS.includes(e))return e}var _=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}};_.uint=new _(0,"uint",!0);_.negint=new _(1,"negint",!0);_.bytes=new _(2,"bytes",!0);_.string=new _(3,"string",!0);_.array=new _(4,"array",!1);_.map=new _(5,"map",!1);_.tag=new _(6,"tag",!1);_.float=new _(7,"float",!0);_.false=new _(7,"false",!0);_.true=new _(7,"true",!0);_.null=new _(7,"null",!0);_.undefined=new _(7,"undefined",!0);_.break=new _(7,"break",!0);var F=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 hi=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",WS=new TextDecoder,zS=new TextEncoder;function pu(r){return hi&&globalThis.Buffer.isBuffer(r)}function Ua(r){return r instanceof Uint8Array?pu(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var w6=hi?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):g6(r,e,t):(r,e,t)=>t-e>64?WS.decode(r.subarray(e,t)):g6(r,e,t),mu=hi?r=>r.length>64?globalThis.Buffer.from(r):m6(r):r=>r.length>64?zS.encode(r):m6(r),dn=r=>Uint8Array.from(r),pi=hi?(r,e,t)=>pu(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),E6=hi?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Ua(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},b6=hi?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function x6(r,e){if(pu(r)&&pu(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 m6(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):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128)}return e}function g6(r,e,t){let n=[];for(;e<t;){let o=r[e],s=null,i=o>239?4:o>223?3:o>191?2:1;if(e+i<=t){let a,c,l,d;switch(i){case 1:o<128&&(s=o);break;case 2:a=r[e+1],(a&192)===128&&(d=(o&31)<<6|a&63,d>127&&(s=d));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(d=(o&15)<<12|(a&63)<<6|c&63,d>2047&&(d<55296||d>57343)&&(s=d));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(d=(o&15)<<18|(a&63)<<12|(c&63)<<6|l&63,d>65535&&d<1114112&&(s=d))}}s===null?(s=65533,i=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),e+=i}return S0(n)}var y6=4096;function S0(r){let e=r.length;if(e<=y6)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=y6));return t}var YS=256,Fa=class{constructor(e=YS){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=b6(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=pi(n,0,this.cursor)}else t=E6(this.chunks,this.cursor);return e&&this.reset(),t}};var Q="CBOR decode error:",mi="CBOR encode error:",Va=[];Va[23]=1;Va[24]=2;Va[25]=3;Va[26]=5;Va[27]=9;function Kn(r,e,t){if(r.length-e<t)throw new Error(`${Q} not enough data for type`)}var yt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function or(r,e,t){Kn(r,e,1);let n=r[e];if(t.strict===!0&&n<yt[0])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function sr(r,e,t){Kn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<yt[1])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function ir(r,e,t){Kn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<yt[2])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function ar(r,e,t){Kn(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<yt[3])throw new Error(`${Q} 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(`${Q} integers outside of the safe integer range are not supported`)}function v6(r,e,t,n){return new F(_.uint,or(r,e+1,n),2)}function R6(r,e,t,n){return new F(_.uint,sr(r,e+1,n),3)}function S6(r,e,t,n){return new F(_.uint,ir(r,e+1,n),5)}function _6(r,e,t,n){return new F(_.uint,ar(r,e+1,n),9)}function _r(r,e){return vt(r,0,e.value)}function vt(r,e,t){if(t<yt[0]){let n=Number(t);r.push([e|n])}else if(t<yt[1]){let n=Number(t);r.push([e|24,n])}else if(t<yt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<yt[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<yt[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(`${Q} encountered BigInt larger than allowable range`)}}_r.encodedSize=function(e){return vt.encodedSize(e.value)};vt.encodedSize=function(e){return e<yt[0]?1:e<yt[1]?2:e<yt[2]?3:e<yt[3]?5:9};_r.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function A6(r,e,t,n){return new F(_.negint,-1-or(r,e+1,n),2)}function I6(r,e,t,n){return new F(_.negint,-1-sr(r,e+1,n),3)}function D6(r,e,t,n){return new F(_.negint,-1-ir(r,e+1,n),5)}var _0=BigInt(-1),T6=BigInt(1);function k6(r,e,t,n){let o=ar(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new F(_.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${Q} integers outside of the safe integer range are not supported`);return new F(_.negint,_0-BigInt(o),9)}function gu(r,e){let t=e.value,n=typeof t=="bigint"?t*_0-T6:t*-1-1;vt(r,e.type.majorEncoded,n)}gu.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*_0-T6:t*-1-1;return n<yt[0]?1:n<yt[1]?2:n<yt[2]?3:n<yt[3]?5:9};gu.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Ka(r,e,t,n){Kn(r,e,t+n);let o=pi(r,e+t,e+t+n);return new F(_.bytes,o,t+n)}function C6(r,e,t,n){return Ka(r,e,1,t)}function N6(r,e,t,n){return Ka(r,e,2,or(r,e+1,n))}function P6(r,e,t,n){return Ka(r,e,3,sr(r,e+1,n))}function L6(r,e,t,n){return Ka(r,e,5,ir(r,e+1,n))}function O6(r,e,t,n){let o=ar(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer bytes lengths not supported`);return Ka(r,e,9,o)}function yu(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===_.string?mu(r.value):r.value),r.encodedBytes}function gi(r,e){let t=yu(e);vt(r,e.type.majorEncoded,t.length),r.push(t)}gi.encodedSize=function(e){let t=yu(e);return vt.encodedSize(t.length)+t.length};gi.compareTokens=function(e,t){return QS(yu(e),yu(t))};function QS(r,e){return r.length<e.length?-1:r.length>e.length?1:x6(r,e)}function $a(r,e,t,n,o){let s=t+n;Kn(r,e,s);let i=new F(_.string,w6(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=pi(r,e+t,e+s)),i}function B6(r,e,t,n){return $a(r,e,1,t,n)}function M6(r,e,t,n){return $a(r,e,2,or(r,e+1,n),n)}function U6(r,e,t,n){return $a(r,e,3,sr(r,e+1,n),n)}function F6(r,e,t,n){return $a(r,e,5,ir(r,e+1,n),n)}function V6(r,e,t,n){let o=ar(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer string lengths not supported`);return $a(r,e,9,o,n)}var K6=gi;function yi(r,e,t,n){return new F(_.array,n,t)}function $6(r,e,t,n){return yi(r,e,1,t)}function H6(r,e,t,n){return yi(r,e,2,or(r,e+1,n))}function q6(r,e,t,n){return yi(r,e,3,sr(r,e+1,n))}function G6(r,e,t,n){return yi(r,e,5,ir(r,e+1,n))}function W6(r,e,t,n){let o=ar(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer array lengths not supported`);return yi(r,e,9,o)}function z6(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return yi(r,e,1,1/0)}function wu(r,e){vt(r,_.array.majorEncoded,e.value)}wu.compareTokens=_r.compareTokens;wu.encodedSize=function(e){return vt.encodedSize(e.value)};function wi(r,e,t,n){return new F(_.map,n,t)}function Y6(r,e,t,n){return wi(r,e,1,t)}function X6(r,e,t,n){return wi(r,e,2,or(r,e+1,n))}function Q6(r,e,t,n){return wi(r,e,3,sr(r,e+1,n))}function j6(r,e,t,n){return wi(r,e,5,ir(r,e+1,n))}function Z6(r,e,t,n){let o=ar(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer map lengths not supported`);return wi(r,e,9,o)}function J6(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return wi(r,e,1,1/0)}function Eu(r,e){vt(r,_.map.majorEncoded,e.value)}Eu.compareTokens=_r.compareTokens;Eu.encodedSize=function(e){return vt.encodedSize(e.value)};function e5(r,e,t,n){return new F(_.tag,t,1)}function t5(r,e,t,n){return new F(_.tag,or(r,e+1,n),2)}function r5(r,e,t,n){return new F(_.tag,sr(r,e+1,n),3)}function n5(r,e,t,n){return new F(_.tag,ir(r,e+1,n),5)}function o5(r,e,t,n){return new F(_.tag,ar(r,e+1,n),9)}function bu(r,e){vt(r,_.tag.majorEncoded,e.value)}bu.compareTokens=_r.compareTokens;bu.encodedSize=function(e){return vt.encodedSize(e.value)};var r_=20,n_=21,o_=22,s_=23;function s5(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${Q} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new F(_.null,null,1):new F(_.undefined,void 0,1)}function i5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return new F(_.break,void 0,1)}function A0(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${Q} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${Q} Infinity values are not supported`)}return new F(_.float,r,e)}function a5(r,e,t,n){return A0(I0(r,e+1),3,n)}function c5(r,e,t,n){return A0(D0(r,e+1),5,n)}function l5(r,e,t,n){return A0(h5(r,e+1),9,n)}function xu(r,e,t){let n=e.value;if(n===!1)r.push([_.float.majorEncoded|r_]);else if(n===!0)r.push([_.float.majorEncoded|n_]);else if(n===null)r.push([_.float.majorEncoded|o_]);else if(n===void 0)r.push([_.float.majorEncoded|s_]);else{let o,s=!1;(!t||t.float64!==!0)&&(d5(n),o=I0(zr,1),n===o||Number.isNaN(n)?(zr[0]=249,r.push(zr.slice(0,3)),s=!0):(f5(n),o=D0(zr,1),n===o&&(zr[0]=250,r.push(zr.slice(0,5)),s=!0))),s||(i_(n),o=h5(zr,1),zr[0]=251,r.push(zr.slice(0,9)))}}xu.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){d5(n);let o=I0(zr,1);if(n===o||Number.isNaN(n))return 3;if(f5(n),o=D0(zr,1),n===o)return 5}return 9};var u5=new ArrayBuffer(9),Ar=new DataView(u5,1),zr=new Uint8Array(u5,0);function d5(r){if(r===1/0)Ar.setUint16(0,31744,!1);else if(r===-1/0)Ar.setUint16(0,64512,!1);else if(Number.isNaN(r))Ar.setUint16(0,32256,!1);else{Ar.setFloat32(0,r);let e=Ar.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Ar.setUint16(0,31744,!1);else if(t===0)Ar.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?Ar.setUint16(0,0):o<-14?Ar.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):Ar.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function I0(r,e){if(r.length-e<2)throw new Error(`${Q} 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 f5(r){Ar.setFloat32(0,r,!1)}function D0(r,e){if(r.length-e<4)throw new Error(`${Q} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function i_(r){Ar.setFloat64(0,r,!1)}function h5(r,e){if(r.length-e<8)throw new Error(`${Q} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}xu.compareTokens=_r.compareTokens;function _e(r,e,t){throw new Error(`${Q} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function vu(r){return()=>{throw new Error(`${Q} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=_e;K[24]=v6;K[25]=R6;K[26]=S6;K[27]=_6;K[28]=_e;K[29]=_e;K[30]=_e;K[31]=_e;for(let r=32;r<=55;r++)K[r]=_e;K[56]=A6;K[57]=I6;K[58]=D6;K[59]=k6;K[60]=_e;K[61]=_e;K[62]=_e;K[63]=_e;for(let r=64;r<=87;r++)K[r]=C6;K[88]=N6;K[89]=P6;K[90]=L6;K[91]=O6;K[92]=_e;K[93]=_e;K[94]=_e;K[95]=vu("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=B6;K[120]=M6;K[121]=U6;K[122]=F6;K[123]=V6;K[124]=_e;K[125]=_e;K[126]=_e;K[127]=vu("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=$6;K[152]=H6;K[153]=q6;K[154]=G6;K[155]=W6;K[156]=_e;K[157]=_e;K[158]=_e;K[159]=z6;for(let r=160;r<=183;r++)K[r]=Y6;K[184]=X6;K[185]=Q6;K[186]=j6;K[187]=Z6;K[188]=_e;K[189]=_e;K[190]=_e;K[191]=J6;for(let r=192;r<=215;r++)K[r]=e5;K[216]=t5;K[217]=r5;K[218]=n5;K[219]=o5;K[220]=_e;K[221]=_e;K[222]=_e;K[223]=_e;for(let r=224;r<=243;r++)K[r]=vu("simple values are not supported");K[244]=_e;K[245]=_e;K[246]=_e;K[247]=s5;K[248]=vu("simple values are not supported");K[249]=a5;K[250]=c5;K[251]=l5;K[252]=_e;K[253]=_e;K[254]=_e;K[255]=i5;var Yr=[];for(let r=0;r<24;r++)Yr[r]=new F(_.uint,r,1);for(let r=-1;r>=-24;r--)Yr[31-r]=new F(_.negint,r,1);Yr[64]=new F(_.bytes,new Uint8Array(0),1);Yr[96]=new F(_.string,"",1);Yr[128]=new F(_.array,0,1);Yr[160]=new F(_.map,0,1);Yr[244]=new F(_.false,!1,1);Yr[245]=new F(_.true,!0,1);Yr[246]=new F(_.null,null,1);function p5(r){switch(r.type){case _.false:return dn([244]);case _.true:return dn([245]);case _.null:return dn([246]);case _.bytes:return r.value.length?void 0:dn([64]);case _.string:return r.value===""?dn([96]):void 0;case _.array:return r.value===0?dn([128]):void 0;case _.map:return r.value===0?dn([160]):void 0;case _.uint:return r.value<24?dn([Number(r.value)]):void 0;case _.negint:if(r.value>=-24)return dn([31-Number(r.value)])}}var c_={float64:!1,mapSorter:d_,quickEncodeToken:p5};function l_(){let r=[];return r[_.uint.major]=_r,r[_.negint.major]=gu,r[_.bytes.major]=gi,r[_.string.major]=K6,r[_.array.major]=wu,r[_.map.major]=Eu,r[_.tag.major]=bu,r[_.float.major]=xu,r}var m5=l_(),T0=new Fa,Su=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(`${mi} object contains circular references`);return new r(t,e)}},_o={null:new F(_.null,null),undefined:new F(_.undefined,void 0),true:new F(_.true,!0),false:new F(_.false,!1),emptyArray:new F(_.array,0),emptyMap:new F(_.map,0)},Ao={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new F(_.float,r):r>=0?new F(_.uint,r):new F(_.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new F(_.uint,r):new F(_.negint,r)},Uint8Array(r,e,t,n){return new F(_.bytes,r)},string(r,e,t,n){return new F(_.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 F(_.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new F(_.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[_o.emptyArray,new F(_.break)]:_o.emptyArray;n=Su.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Ru(i,t,n);return t.addBreakTokens?[new F(_.array,r.length),o,new F(_.break)]:[new F(_.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;if(!i)return t.addBreakTokens===!0?[_o.emptyMap,new F(_.break)]:_o.emptyMap;n=Su.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Ru(l,t,n),Ru(o?r.get(l):r[l],t,n)];return u_(a,t),t.addBreakTokens?[new F(_.map,i),a,new F(_.break)]:[new F(_.map,i),a]}};Ao.Map=Ao.Object;Ao.Buffer=Ao.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))Ao[`${r}Array`]=Ao.DataView;function Ru(r,e={},t){let n=p6(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||Ao[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=Ao[n];if(!s)throw new Error(`${mi} unsupported type: ${n}`);return s(r,n,e,t)}function u_(r,e){e.mapSorter&&r.sort(e.mapSorter)}function d_(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=m5[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function g5(r,e,t,n){if(Array.isArray(e))for(let o of e)g5(r,o,t,n);else t[e.type.major](r,e,n)}function y5(r,e,t){let n=Ru(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let o=t.quickEncodeToken(n);if(o)return o;let s=e[n.type.major];if(s.encodedSize){let i=s.encodedSize(n,t),a=new Fa(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return Ua(a.chunks[0])}}return T0.reset(),g5(T0,n,e,t),T0.toBytes(!0)}function Ei(r,e){return e=Object.assign({},c_,e),y5(r,m5,e)}var f_={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},_u=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=Yr[e];if(t===void 0){let n=K[e];if(!n)throw new Error(`${Q} 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}},Ha=Symbol.for("DONE"),Au=Symbol.for("BREAK");function h_(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=bi(e,t);if(s===Au){if(r.value===1/0)break;throw new Error(`${Q} got unexpected break to lengthed array`)}if(s===Ha)throw new Error(`${Q} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function p_(r,e,t){let n=t.useMaps===!0,o=n?void 0:{},s=n?new Map:void 0;for(let i=0;i<r.value;i++){let a=bi(e,t);if(a===Au){if(r.value===1/0)break;throw new Error(`${Q} got unexpected break to lengthed map`)}if(a===Ha)throw new Error(`${Q} found map but not enough entries (got ${i} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${Q} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&s.has(a)||!n&&a in o))throw new Error(`${Q} found repeat map key "${a}"`);let c=bi(e,t);if(c===Ha)throw new Error(`${Q} found map but not enough entries (got ${i} [no value], expected ${r.value})`);n?s.set(a,c):o[a]=c}return n?s:o}function bi(r,e){if(r.done())return Ha;let t=r.next();if(t.type===_.break)return Au;if(t.type.terminal)return t.value;if(t.type===_.array)return h_(t,r,e);if(t.type===_.map)return p_(t,r,e);if(t.type===_.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=bi(r,e);return e.tags[t.value](n)}throw new Error(`${Q} tag not supported (${t.value})`)}throw new Error("unsupported")}function k0(r,e){if(!(r instanceof Uint8Array))throw new Error(`${Q} data to decode must be a Uint8Array`);e=Object.assign({},f_,e);let t=e.tokenizer||new _u(r,e),n=bi(t,e);if(n===Ha)throw new Error(`${Q} did not find any content to decode`);if(n===Au)throw new Error(`${Q} got unexpected break`);return[n,r.subarray(t.pos())]}function Ir(r,e){let[t,n]=k0(r,e);if(n.length>0)throw new Error(`${Q} too many terminals, data makes no sense`);return t}var $n="/",w5=new TextEncoder().encode($n),Du=w5[0],Le=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=M(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]!==Du)throw new Error("Invalid key")}toString(e="utf8"){return O(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join($n))}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=w5),this._buf[0]!==Du){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Du,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Du;)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($n).slice(1)}type(){return m_(this.baseNamespace())}name(){return g_(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith($n)||(e+=$n),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r($n):new r(e.slice(0,-1).join($n))}child(e){return this.toString()===$n?e:e.toString()===$n?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(),...y_(e.map(t=>t.namespaces()))])}};function m_(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function g_(r){let e=r.split(":");return e[e.length-1]}function y_(r){return[].concat(...r)}var v5="/pin/",E5="/pinned-block/",C0=oo,b5=1;function x5(r){return r.version===0&&(r=r.toV1()),new Le(`${v5}${r.toString(C0)}`)}var Tu=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=x5(e);if(await this.datastore.has(n))throw new Error("Already pinned");let o=Math.round(t.depth??1/0);if(o<0)throw new Error("Depth must be greater than or equal to 0");let s=new Nr({concurrency:b5});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>Z(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,Ei(i),t)}async*#e(e,t,n){if(n.depth===-1)return;let o=this.dagWalkers[e.code];if(o==null)throw new Error(`No dag walker found for cid codec ${e.code}`);let s=await this.blockstore.get(e,n);yield e;for await(let i of o.walk(s))yield*await t.add(async()=>this.#e(i,t,{...n,depth:n.depth-1}))}async#t(e,t,n){let o=new Le(`${E5}${C0.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=Ir(await this.datastore.get(o,n))}catch(a){if(a.code!=="ERR_NOT_FOUND")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,Ei(s),n),n.onProgress?.(new ge("helia:pin:add",e))}}async*rm(e,t={}){let n=x5(e),o=await this.datastore.get(n,t),s=Ir(o);await this.datastore.delete(n,t);let i=new Nr({concurrency:b5});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=>Z(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:v5+(e.cid!=null?`${e.cid.toString(oo)}`:"")},e)){let o=le.parse(t.toString().substring(5),oo),s=Ir(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Le(`${E5}${C0.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};var w_=5,ku=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??w_}async start(){await sn(...this.routers)}async stop(){await an(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");let n=new pr({concurrency:this.providerLookupConcurrency});n.addEventListener("error",()=>{});for await(let o of Mt(n.toGenerator(),...xi(this.routers,"findProviders").map(s=>s.findProviders(e,t))))if(o!=null){if(o.multiaddrs.length===0){if(n.find(o.id)!=null)continue;n.add(async()=>{try{let s=await this.findPeer(o.id,t);return s.multiaddrs.length===0?null:s}catch(s){return this.log.error("could not load multiaddrs for peer %p",o.id,s),null}},{peerId:o.id,signal:t.signal}).catch(s=>{this.log.error("could not load multiaddrs for peer %p",o.id,s)})}yield o}}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(xi(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(xi(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(xi(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=Mt(...xi(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 g("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");for await(let n of Mt(...xi(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function xi(r,e){return r.filter(t=>t[e]!=null)}var Io={},vi=r=>{r.addEventListener("message",e=>{vi.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{vi.dispatchEvent("message",r,e)})};vi.addEventListener=(r,e)=>{Io[r]==null&&(Io[r]=[]),Io[r].push(e)};vi.removeEventListener=(r,e)=>{Io[r]!=null&&(Io[r]=Io[r].filter(t=>t===e))};vi.dispatchEvent=function(r,e,t){Io[r]!=null&&Io[r].forEach(n=>n(e,t))};var N0=vi;var P0="lock:worker:request-read",L0="lock:worker:release-read",O0="lock:master:grant-read",B0="lock:worker:request-write",M0="lock:worker:release-write",U0="lock:master:grant-write";var R5=(r=21)=>Math.random().toString().substring(2);var S5=(r,e,t,n,o)=>(s,i)=>{if(i.data.type!==t)return;let a={type:i.data.type,name:i.data.name,identifier:i.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{s.postMessage({type:o,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=d=>{if(d==null||d.data==null)return;let u={type:d.data.type,name:d.data.name,identifier:d.data.identifier};u.type===n&&u.identifier===a.identifier&&(s.removeEventListener("message",l),c())};s.addEventListener("message",l)})}}}))},_5=(r,e,t,n)=>async()=>{let o=R5();return globalThis.postMessage({type:e,identifier:o,name:r}),new Promise(s=>{let i=a=>{if(a==null||a.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===o&&(globalThis.removeEventListener("message",i),s(()=>{globalThis.postMessage({type:n,identifier:o,name:r})}))};globalThis.addEventListener("message",i)})},E_={singleProcess:!1},A5=r=>{if(r=Object.assign({},E_,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return N0.addEventListener("message",S5(t,"requestReadLock",P0,L0,O0)),N0.addEventListener("message",S5(t,"requestWriteLock",B0,M0,U0)),t}return{isWorker:!0,readLock:t=>_5(t,P0,O0,L0),writeLock:t=>_5(t,B0,U0,M0)}};var ms={},Do;async function F0(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>Wr((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var b_=(r,e)=>{if(Do.isWorker===!0)return{readLock:Do.readLock(r,e),writeLock:Do.writeLock(r,e)};let t=new Gt({concurrency:1}),n;return{async readLock(){if(n!=null)return F0(n,e);n=new Gt({concurrency:e.concurrency,autoStart:!1});let o=n,s=F0(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,F0(t,e)}}},x_={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function qa(r){let e=Object.assign({},x_,r);return Do==null&&(Do=A5(e),Do.isWorker!==!0&&(Do.addEventListener("requestReadLock",t=>{ms[t.data.name]!=null&&ms[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Do.addEventListener("requestWriteLock",async t=>{ms[t.data.name]!=null&&ms[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),ms[e.name]==null&&(ms[e.name]=b_(e.name,e)),ms[e.name]}var Cu=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=qa({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await sn(this.child),this.started=!0}async stop(){await an(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{return await 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 Error("CID was pinned");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 Error("CID was pinned");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 D5=42;function v_(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=le.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new F(_.tag,D5),new F(_.bytes,t)]}function R_(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function S_(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 I5={float64:!0,typeEncoders:{Object:v_,undefined:R_,number:S_}},LK={...I5,typeEncoders:{...I5.typeEncoders}};function __(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return le.decode(r.subarray(1))}var V0={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};V0.tags[D5]=__;var OK={...V0,tags:V0.tags.slice()};var T5=113;var k5=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===_.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===_.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[_.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)}[_.negint.major](e,t){this[_.uint.major](e,t)}[_.bytes.major](e,t){throw new Error(`${mi} unsupported type: Uint8Array`)}[_.string.major](e,t){this.prefix(e);let n=mu(JSON.stringify(t.value));e.push(n.length>32?Ua(n):n)}[_.array.major](e,t){this.prefix(e),this.inRecursive.push({type:_.array,elements:0}),e.push([91])}[_.map.major](e,t){this.prefix(e),this.inRecursive.push({type:_.map,elements:0}),e.push([123])}[_.tag.major](e,t){}[_.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===_.array)e.push([93]);else if(i.type===_.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(`${mi} 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)}};var gs=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(`${Q} 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(`${Q} 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 F(_.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(`${Q} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${Q} 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 F(_.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new F(i>=0?_.uint:_.negint,i,this._pos-e):new F(i>=0?_.uint:_.negint,BigInt(s),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${Q} 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 F(_.string,c,i)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${Q} 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(`${Q} 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(`${Q} 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(`${Q} 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(`${Q} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new F(_.string,S0(t),this._pos-e);default:if(s<32)throw new Error(`${Q} invalid control character at position ${this._pos}`);s<128?(t.push(s),this._pos++):o()}}throw new Error(`${Q} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new F(_.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new F(_.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new F(_.null,null,4);case 102:return this.expect([102,97,108,115,101]),new F(_.false,!1,5);case 116:return this.expect([116,114,117,101]),new F(_.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(`${Q} 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 F(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${Q} 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 F(_.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 F(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${Q} 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 F(_.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${Q} 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(`${Q} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function Nu(r,e){return e=Object.assign({tokenizer:new gs(r,e)},e),Ir(r,e)}var D_={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};D_.tags[42]=le.parse;var N5=297;var ZK=new TextDecoder;var JK=new TextEncoder;var k_=new TextDecoder;function K0(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 Pu(r,e){let t;[t,e]=K0(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 P5(r,e){let t;return[t,e]=K0(r,e),[t&7,t>>3,e]}function C_(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=P5(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]=Pu(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]=Pu(r,n),e.Name=k_.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]=K0(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 L5(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=P5(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]=Pu(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]=Pu(r,t),n.push(C_(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 t$=new TextEncoder,r$=2**32,n$=2**31;var i$=new TextEncoder;function O5(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var B5=112;function M5(r){let e=O5(r),t=L5(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=le.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}var P_={codec:B5,*walk(r){yield*M5(r).Links.map(t=>t.Hash)}},L_={codec:qc,*walk(){}},U5=42,O_={codec:T5,*walk(r){let e=[],t=[];t[U5]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=le.decode(n.subarray(1));return e.push(o),o},Ir(r,{tags:t}),yield*e}},$0=class extends gs{tokenBuffer;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(e.type===_.map){let t=this._next();if(t.type===_.string&&t.value==="/"){let n=this._next();if(n.type===_.string){if(this._next().type!==_.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new F(_.tag,42,0)}if(n.type===_.map){let o=this._next();if(o.type===_.string&&o.value==="bytes"){let s=this._next();if(s.type===_.string){for(let a=0;a<2;a++)if(this._next().type!==_.break)throw new Error("Invalid encoded Bytes form");let i=st.decode(`m${s.value}`);return new F(_.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},B_={codec:N5,*walk(r){let e=[],t=[];t[U5]=n=>{let o=le.parse(n);return e.push(o),o},Nu(r,{tags:t,tokenizer:new $0(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},M_={codec:V4,*walk(){}};function F5(r=[]){let e={};return[P_,L_,O_,B_,M_,...r].forEach(t=>{e[t.codec]=t}),e}var H0=new Le("/version"),V5=1;async function K5(r){if(!await r.has(H0)){await r.put(H0,M(`${V5}`));return}let e=await r.get(H0),t=O(e);if(parseInt(t,10)!==V5)throw new Error("Unknown datastore version, a datastore migration may be required")}function $5(r=[]){let e={};return[Ce,dh,Ht,...r].forEach(t=>{e[t.code]=t}),e}var Hn=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,block:o}of e)await this.put(n,o,t),yield n}get(e,t){return Promise.reject(new Error(".get is not implemented"))}async*getMany(e,t){for await(let n of e)yield{cid:n,block:await 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 Ri={};pe(Ri,{abortedError:()=>$_,closeFailedError:()=>F_,deleteFailedError:()=>q5,getFailedError:()=>V_,hasFailedError:()=>K_,notFoundError:()=>Ga,openFailedError:()=>U_,putFailedError:()=>H5});var qn=Xe(Wo(),1);function U_(r){return r=r??new Error("Open failed"),(0,qn.default)(r,"ERR_OPEN_FAILED")}function F_(r){return r=r??new Error("Close failed"),(0,qn.default)(r,"ERR_CLOSE_FAILED")}function H5(r){return r=r??new Error("Put failed"),(0,qn.default)(r,"ERR_PUT_FAILED")}function V_(r){return r=r??new Error("Get failed"),(0,qn.default)(r,"ERR_GET_FAILED")}function q5(r){return r=r??new Error("Delete failed"),(0,qn.default)(r,"ERR_DELETE_FAILED")}function K_(r){return r=r??new Error("Has failed"),(0,qn.default)(r,"ERR_HAS_FAILED")}function Ga(r){return r=r??new Error("Not Found"),(0,qn.default)(r,"ERR_NOT_FOUND")}function $_(r){return r=r??new Error("Aborted"),(0,qn.default)(r,"ERR_ABORTED")}var Wa=class extends Hn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(ut.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(ut.encode(e.multihash.bytes));if(t==null)throw Ga();return t}has(e){return this.data.has(ut.encode(e.multihash.bytes))}async delete(e){this.data.delete(ut.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:le.createV1(qc,Or(ut.decode(e))),block:t}}};function H_(r){return r[Symbol.asyncIterator]!=null}function q_(r,e){let t=0;if(H_(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=Vs(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 await(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 Xr=q_;var H$=rr("blockstore:core:tiered");var G5={...Ri};var Lu=0,Ou=class extends Hn{child;constructor(e){super(),this.child=e}put(e,t){return e.multihash.code===Lu||this.child==null?e:this.child.put(e,t)}get(e){if(e.multihash.code===Lu)return e.multihash.digest;if(this.child==null)throw G5.notFoundError();return this.child.get(e)}has(e){return e.multihash.code===Lu?!0:this.child==null?!1:this.child.has(e)}delete(e){if(e.code!==Lu&&this.child!=null)return this.child.delete(e)}getAll(e){return this.child!=null?this.child.getAll(e):[]}};function G_(r){return r[Symbol.asyncIterator]!=null}function W5(r){return r?.then!=null}function W_(r,e){let t=0;if(G_(r))return async function*(){for await(let c of r){let l=e(c,t++);W5(l)&&await l,yield c}}();let n=Vs(r),{value:o,done:s}=n.next();if(s===!0)return function*(){}();if(typeof e(o,t++)?.then=="function")return async function*(){yield o;for await(let c of n){let l=e(c,t++);W5(l)&&await l,yield c}}();let a=e;return function*(){yield o;for(let c of n)a(c,t++),yield c}()}var za=W_;var Bu=class{child;hashers;log;logger;components;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Ou(e.blockstore),this.hashers=e.hashers??{}}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new ge("blocks:put:duplicate",e)),e):(n.onProgress?.(new ge("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,t,n))),n.onProgress?.(new ge("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=Xr(e,async({cid:s})=>{let i=await this.child.has(s,t);return i&&t.onProgress?.(new ge("blocks:put-many:duplicate",s)),!i}),o=za(n,async({cid:s,block:i})=>{t.onProgress?.(new ge("blocks:put-many:providers:notify",s)),await Promise.all(this.components.blockBrokers.map(async a=>a.announce?.(s,i,t)))});t.onProgress?.(new ge("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(o,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e,t)){t.onProgress?.(new ge("blocks:get:providers:get",e));let n=await z5(e,this.components.blockBrokers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new ge("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new ge("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,n,t))),n}return t.onProgress?.(new ge("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new ge("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(za(e,async n=>{if(t.offline!==!0&&!await this.child.has(n,t)){t.onProgress?.(new ge("blocks:get-many:providers:get",n));let o=await z5(n,this.components.blockBrokers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new ge("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new ge("blocks:get-many:providers:notify",n)),await Promise.all(this.components.blockBrokers.map(async s=>s.announce?.(n,o,t)))}}))}async delete(e,t={}){t.onProgress?.(new ge("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new ge("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 ge("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},Mu=class extends Bu{started;constructor(e){super(e),this.started=!1}isStarted(){return this.started}async start(){await sn(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await an(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(o=>o.createSession==null?o:o.createSession(t));return new q0({blockstore:this.child,blockBrokers:n,hashers:this.hashers,logger:this.logger},{root:e})}},q0=class extends Bu{closeController;constructor(e,t){super(e),this.closeController=new AbortController,G(1/0,this.closeController.signal),this.log=e.logger.forComponent(`helia:session-storage${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let o=Pe([this.closeController.signal,n.signal]);G(1/0,o);try{return await super.put(e,t,{...n,signal:o})}finally{o.clear()}}async*putMany(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async get(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{return await super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=Pe([this.closeController.signal,t.signal]);G(1/0,n);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=Pe([this.closeController.signal,e.signal]);G(1/0,t);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function z_(r){return typeof r.retrieve=="function"}var Y_=(r,e)=>{if(e==null)throw new g(`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`,"ERR_UNKNOWN_HASH_ALG");return async t=>{let n=await e.digest(t);if(!Z(n.digest,r.multihash.digest))throw new g("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function z5(r,e,t,n){let o=Y_(r,t),s=new AbortController,i=Pe([s.signal,n.signal]);G(1/0,s.signal,i);let a=[];for(let c of e)z_(c)&&a.push(c);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),l=!0}});return l||await o(d),d}catch(l){throw n.log.error("could not retrieve verified block for %c",r,l),l}}))}finally{s.abort(),i.clear()}}var Y5=1,X5=5;var G0=Xe(Jm(),1);var X_=Math.LN2*Math.LN2,Uu=class r{static create(e,t=.005){let n=Q_(e,t);return new r(n)}seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=j_(e.hashes??8),this.bits=e.bits??1024,this.buffer=Ae(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let o=G0.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(o)}}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let o=G0.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(o))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let o=this.buffer[t];o|=1<<n,this.buffer[t]=o}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function Q_(r,e=.005){let t=Math.round(-1*r*Math.log(e)/X_),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function j_(r){let e,t,n=[];for(let o=0;o<r;o++)for(e=new ce(mt(4)),n[o]=e.getUint32(0,!0),t=0;t<o;t++)if(n[o]===n[t]){o--;break}return n}var ys=class extends me{intialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),G(1/0,this),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Uu.create(this.maxProviders)}async retrieve(e,t={}){let n=st.encode(e.multihash.bytes),o=this.requests.get(n);if(o!=null)return this.log("join existing request for %c",e),o;let s=J();if(this.requests.set(n,s.promise),this.providers.length===0){let l=!1;this.intialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.intialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.intialPeerSearchComplete,l&&this.log("found initial session peers for %c",e)}let i=!1,a=new Nr({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",l=>{this.log.error("error querying provider %o, evicting from session",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),a.addEventListener("success",l=>{i=!0,s.resolve(l.detail.result)}),a.addEventListener("idle",()=>{i||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let d=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(d)}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(l=>{this.log.error("could not find new providers for %c",e,l),s.reject(l)})});let c=l=>{a.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(d=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,d)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async l=>a.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,l)});try{return await s.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.providers.some(t=>this.equals(t,e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let o=J(),s=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);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"),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 g(`Found ${s} of ${t} ${this.name} providers for ${e}`,"ERR_INSUFFICIENT_PROVIDERS_FOUND")}).catch(i=>{this.log.error("error searching routing for potential session peers for %c",e,i.errors??i),o.reject(i)}),o.promise}};var Fu=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;dns;metrics;log;constructor(e){this.logger=e.logger??Ro(),this.log=this.logger.forComponent("helia"),this.hashers=$5(e.hashers),this.dagWalkers=F5(e.dagWalkers),this.dns=e.dns??hu(),this.metrics=e.metrics;let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new ku(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[rn]!=null&&s.push(o[rn]),o[nn]!=null&&s.push(o[nn]),s}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new Mu(t);this.pins=new Tu(e.datastore,n,this.dagWalkers),this.blockstore=new Cu(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(o=>o(t))}async start(){await K5(this.datastore),await sn(this.blockstore,this.datastore,this.routing)}async stop(){await an(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,o=this.blockstore.unwrap();this.log("gc start"),await mr(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 ge("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new ge("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var W0=class extends ys{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let o=await this.wantList.wantSessionBlock(e,t,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 n.id}toEvictionKey(e){return e.toBytes()}equals(e,t){return e.equals(t)}};function Q5(r,e){return new W0(r,e)}var Vu=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)}};var z0=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 Ku(r){let{name:e,metrics:t}=r,n;return t!=null?n=new z0({name:e,metrics:t}):n=new Map,n}function Z_(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=Bt(r);e.push(t),r=r.slice(Se(t))}return e}var j5=Z_;var $u=class extends me{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),G(1/0,this),this.peers=Oa({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=Ku({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",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",n.detail,o)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=O(e.multihash.bytes,"base64"),o=this.wants.get(n);o==null&&(o={cid:e,priority:t.priority??1,wantType:t.wantType??rt.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,o)),o.wantType===rt.WantHave&&t.wantType===rt.WantBlock&&(o.wantType=rt.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===rt.WantBlock?(await jt(this,"block",t?.signal,{filter:a=>Z(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await jt(this,"presence",t?.signal,{filter:i=>Z(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)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=J(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,o=new Vn;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",s)}})).catch(e=>{this.log.error("error sending messages",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=O(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let o=new Vn;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:rt.WantHave,priority:1}),await this.network.sendMessage(t,o),(await jt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&Z(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:rt.WantBlock})}async wantSessionBlock(e,t,n={}){let o=new Vn;return o.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:rt.WantBlock,priority:1}),await this.network.sendMessage(t,o),(await jt(this,"presence",n.signal,{filter:i=>t.equals(i.detail.sender)&&Z(e.multihash.digest,i.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=O(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=j5(o.prefix),i=s[0],a=s[1],c=s[2],l=c===Ce.code?Ce:await this.hashLoader?.getHasher(c);if(l==null){this.log.error("unknown hash algorithm",c);continue}let d=l.digest(o.data);d.then!=null&&(d=await d);let u=le.create(i===0?0:1,a,d);this.log("received block from %p for %c",e,u),this.safeDispatchEvent("block",{detail:{sender:e,cid:u,block:o.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:u,has:!0,block:o.data}});let h=O(u.multihash.bytes,"base64"),f=this.wants.get(h);f!=null&&(f.cancel=!0,n=!0)}for(let{cid:o,type:s}of t.blockPresences){let i=le.decode(o);this.log("received %s from %p for %c",s,e,i),this.safeDispatchEvent("presence",{detail:{sender:e,cid:i,has:s===Er.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new Vn(!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:rt.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,o)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var Hu=class{log;logger;stats;network;blockstore;peerWantLists;wantList;constructor(e,t={}){this.logger=e.logger,this.log=e.logger.forComponent("helia:bitswap"),this.blockstore=e.blockstore,this.stats=new Vu(e),this.network=new jc(e,t),this.peerWantLists=new iu({...e,network:this.network},t),this.wantList=new $u({...e,network:this.network},t)}createSession(e={}){return Q5({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,o=Pe([n.signal,t.signal]);G(1/0,n.signal,o),this.network.findAndConnect(e,{...t,signal:o}).catch(s=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,s)});try{return(await this.wantList.wantBlock(e,{...t,signal:o})).block}finally{n.abort(),o.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}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 Z5=(r,e={})=>new Hu(r,e);var Y0=class{bitswap;started;constructor(e,t={}){let{hashers:n}=e;this.bitswap=Z5(e,{hashLoader:{getHasher:async o=>{let s;if(typeof o=="string"?s=Object.values(n).find(i=>i.name===o):s=n[o],s!=null)return s;throw new Error(`Could not load hasher for code/name "${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,n){await this.bitswap.notify(e,t,n)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{announce:async(n,o,s)=>{await this.bitswap.notify(n,o,s)},retrieve:async(n,o)=>t.retrieve(n,o)}}};function X0(r={}){return e=>new Y0(e,r)}var qu=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 h=Number.parseInt(u,e);if(!Number.isNaN(h))return h});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 J5=45,J_=15,Si=new qu;function Q0(r){if(!(r.length>J_))return Si.new(r).parseWith(()=>Si.readIPv4Addr())}function j0(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>J5))return Si.new(r).parseWith(()=>Si.readIPv6Addr())}function Gu(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>J5))return Si.new(r).parseWith(()=>Si.readIPAddr())}function _i(r){return!!Q0(r)}function Ai(r){return!!j0(r)}function Wu(r){return!!Gu(r)}var t7=Xe(e7(),1),eA=["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"],tA=eA.map(r=>new t7.Netmask(r));function rA(r){for(let e of tA)if(e.contains(r))return!0;return!1}function nA(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.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 Wt(r){return _i(r)?rA(r):Ai(r)?nA(r):void 0}var Tq=parseInt("0xFFFF",16),kq=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);var o7=_i,cA=Ai,Z0=function(r){let e=0;if(r=r.toString().trim(),o7(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(cA(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=o7(t[n]),i;s&&(i=Z0(t[n]),t[n]=O(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,O(i.slice(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++){let s=parseInt(t[n],16);o[e++]=s>>8&255,o[e++]=s&255}return o}throw new Error("invalid ip address")},s7=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let o=[];for(let s=0;s<t;s++)o.push(r[e+s]);return o.join(".")}if(t===16){let o=[];for(let s=0;s<t;s+=2)o.push(n.getUint16(e+s).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Ii={},J0={},uA=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[777,-1,"memory"]];uA.forEach(r=>{let e=dA(...r);J0[e.code]=e,Ii[e.name]=e});function dA(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function ee(r){if(typeof r=="number"){if(J0[r]!=null)return J0[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ii[r]!=null)return Ii[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var dG=ee("ip4"),fG=ee("ip6"),hG=ee("ipcidr");function t2(r,e){switch(ee(r).code){case 4:case 41:return hA(e);case 42:return c7(e);case 6:case 273:case 33:case 132:return u7(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return c7(e);case 421:return yA(e);case 444:return l7(e);case 445:return l7(e);case 466:return gA(e);default:return O(e,"base16")}}function r2(r,e){switch(ee(r).code){case 4:return i7(e);case 41:return i7(e);case 42:return a7(e);case 6:case 273:case 33:case 132:return n2(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return a7(e);case 421:return pA(e);case 444:return wA(e);case 445:return EA(e);case 466:return mA(e);default:return M(e,"base16")}}var e2=Object.values(wr).map(r=>r.decoder),fA=function(){let r=e2[0].or(e2[1]);return e2.slice(2).forEach(e=>r=r.or(e)),r}();function i7(r){if(!Wu(r))throw new Error("invalid ip address");return Z0(r)}function hA(r){let e=s7(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Wu(e))throw new Error("invalid ip address");return e}function n2(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function u7(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function a7(r){let e=M(r),t=Uint8Array.from($e(e.length));return ve([t,e],t.length+e.length)}function c7(r){let e=Bt(r);if(r=r.slice(Se(e)),r.length!==e)throw new Error("inconsistent lengths");return O(r)}function pA(r){let e;r[0]==="Q"||r[0]==="1"?e=Or(Ye.decode(`z${r}`)).bytes:e=le.parse(r).multihash.bytes;let t=Uint8Array.from($e(e.length));return ve([t,e],t.length+e.length)}function mA(r){let e=fA.decode(r),t=Uint8Array.from($e(e.length));return ve([t,e],t.length+e.length)}function gA(r){let e=Bt(r),t=r.slice(Se(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+O(t,"base64url")}function yA(r){let e=Bt(r),t=r.slice(Se(e));if(t.length!==e)throw new Error("inconsistent lengths");return O(t,"base58btc")}function wA(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=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=n2(n);return ve([t,o],t.length+o.length)}function EA(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=n2(n);return ve([t,o],t.length+o.length)}function l7(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=O(e,"base32"),o=u7(t);return`${n}:${o}`}function d7(r){r=o2(r);let e=[],t=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let s=0;s<o.length;s++){let i=o[s],a=ee(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw h7("invalid address: "+r);if(a.path===!0){n=o2(o.slice(s).join("/")),e.push([a.code,r2(a.code,n)]),t.push([a.code,n]);break}let c=r2(a.code,o[s]);e.push([a.code,c]),t.push([a.code,t2(a.code,c)])}return{string:f7(t),bytes:i2(e),tuples:e,stringTuples:t,path:n}}function s2(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Bt(r,o),i=Se(s),a=ee(s),c=bA(a,r.slice(o+i));if(c===0){e.push([s]),t.push([s]),o+=i;continue}let l=r.slice(o+i,o+i+c);if(o+=c+i,o>r.length)throw h7("Invalid address Uint8Array: "+O(r,"base16"));e.push([s,l]);let d=t2(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:f7(t),tuples:e,stringTuples:t,path:n}}function f7(r){let e=[];return r.map(t=>{let n=ee(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),o2(e.join("/"))}function i2(r){return ve(r.map(e=>{let t=ee(e[0]),n=Uint8Array.from($e(t.code));return e.length>1&&e[1]!=null&&(n=ve([n,e[1]])),n}))}function bA(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Bt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Se(t)}}function o2(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function h7(r){return new Error("Error parsing address: "+r)}var xA=Symbol.for("nodejs.util.inspect.custom"),a2=Symbol.for("@multiformats/js-multiaddr/multiaddr"),vA=[ee("dns").code,ee("dns4").code,ee("dns6").code,ee("dnsaddr").code],zu=class r{bytes;#e;#t;#r;#o;[a2]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=s2(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=d7(e)}else if(To(e))t=s2(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#o=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=ee("tcp"),a=ee("udp"),c=ee("ip4"),l=ee("ip6"),d=ee("dns6"),u=ee("ip6zone");for(let[f,p]of this.stringTuples())f===u.code&&(s=`%${p??""}`),vA.includes(f)&&(t=i.name,o=443,n=`${p??""}${s}`,e=f===d.code?6:4),(f===i.code||f===a.code)&&(t=ee(f).name,o=parseInt(p??"")),(f===c.code||f===l.code)&&(t=ee(f).name,n=`${p??""}${s}`,e=f===l.code?6:4);if(e==null||t==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:o}}protos(){return this.#t.map(([e])=>Object.assign({},ee(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ee(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,o))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(i2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Ii.p2p.code&&e.push([n,o]),n===Ii["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?O(Ye.decode(`z${n}`),"base58btc"):O(le.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#o}equals(e){return Z(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=Di.get(t.name);if(n==null)throw new g(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>j(s))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[xA](){return`Multiaddr(${this.#e})`}};var Di=new Map;function To(r){return!!r?.[a2]}function j(r){return new zu(r)}var RA=r=>r.toString().split("/").slice(1),Xa=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),De=r=>({match:e=>Xa(t=>t===r).match(e),pattern:r}),Qu=()=>({match:r=>Xa(e=>typeof e=="string").match(r),pattern:"{string}"}),ju=()=>({match:r=>Xa(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Rt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Ye.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Yu=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{th.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),St=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),cr=(...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},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),Oe=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e},pattern:`and(${r.map(e=>e.pattern).join(", ")})`});function nt(...r){function e(o){let s=RA(o);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{matches:t,exactMatch:n}}var l2=Oe(De("dns4"),Qu()),u2=Oe(De("dns6"),Qu()),d2=Oe(De("dnsaddr"),Qu()),p7=Oe(De("dns"),Qu()),$G=nt(l2),HG=nt(u2),qG=nt(d2),Zu=nt(cr(p7,d2,l2,u2)),m7=Oe(De("ip4"),Xa(_i)),g7=Oe(De("ip6"),Xa(Ai)),y7=cr(m7,g7),fn=cr(y7,p7,l2,u2,d2),w7=nt(fn),GG=nt(m7),WG=nt(g7),E7=nt(y7),Ju=Oe(fn,De("tcp"),ju()),Qa=Oe(fn,De("udp"),ju()),SA=cr(Ju,Qa),zG=nt(Ju),YG=nt(Qa),f2=Oe(Qa,De("quic")),e1=Oe(Qa,De("quic-v1")),_A=cr(f2,e1),XG=nt(f2),QG=nt(e1),c2=cr(fn,Ju,Qa,f2,e1),b7=cr(Oe(c2,De("ws"),St(Rt()))),jG=nt(b7),x7=cr(Oe(c2,De("wss"),St(Rt())),Oe(c2,De("tls"),De("ws"),St(Rt()))),ZG=nt(x7),v7=Oe(SA,De("webrtc-direct"),Yu(),St(Yu()),St(Rt())),R7=nt(v7),S7=Oe(e1,De("webtransport"),St(Yu()),St(Yu()),St(Rt())),t1=nt(S7),Xu=cr(b7,x7,Oe(Ju,St(Rt())),Oe(_A,St(Rt())),Oe(fn,St(Rt())),v7,S7,Rt()),JG=nt(Xu),AA=Oe(Xu,De("p2p-circuit"),Rt()),ws=nt(AA),IA=cr(Oe(Xu,De("p2p-circuit"),De("webrtc"),Rt()),Oe(Xu,De("webrtc"),St(Rt())),De("webrtc")),_7=nt(IA),DA=cr(Oe(fn,De("tcp"),ju(),De("http"),St(Rt())),Oe(fn,De("http"),St(Rt()))),A7=nt(DA),TA=cr(Oe(fn,De("tcp"),cr(Oe(De("443"),De("http")),Oe(ju(),De("https"))),St(Rt())),Oe(fn,De("tls"),De("http"),St(Rt())),Oe(fn,De("https"),St(Rt()))),I7=nt(TA);var kA=[ee("tcp").code,ee("dns").code,ee("dnsaddr").code,ee("dns4").code,ee("dns6").code];function D7(r){let e;try{e=ee("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function T7(r){return r.some(([e,t])=>e===ee("tls").code)}function lr(r,e,t){let n=k7[ee(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${ee(r).name}`);let o=n(e,t);return r===ee("ip6").code?`[${o}]`:o}var k7={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`tcp://${lr(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`udp://${lr(t[0],t[1]??"",e)}:${r}`},dnsaddr:(r,e)=>r,dns4:(r,e)=>r,dns6:(r,e)=>r,dns:(r,e)=>r,ipfs:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${lr(t[0],t[1]??"",e)}/ipfs/${r}`},p2p:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${lr(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=T7(e),n=D7(e);if(t&&n!==null)return`https://${n}`;let o=t?"https://":"http://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=lr(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},tls:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return lr(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return lr(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=lr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=T7(e),n=D7(e);if(t&&n!==null)return`wss://${n}`;let o=t?"wss://":"ws://",s=e.pop();if(s===void 0)throw new Error("Unexpected end of multiaddr");let i=lr(s[0],s[1]??"",e);return i=i.replace("tcp://",""),`${o}${i}`},wss:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");let n=lr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`},"p2p-websocket-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${lr(t[0],t[1]??"",e)}/p2p-websocket-star`},"p2p-webrtc-star":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${lr(t[0],t[1]??"",e)}/p2p-webrtc-star`},"p2p-webrtc-direct":(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return`${lr(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function r1(r,e){let n=j(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=ee(o[0]),i=k7[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&kA.includes(o[0])&&(a=a.replace(/^.*:\/\//,""),o[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var n1=class{url;#e=0;#t=0;#r=0;#o=0;#a=new Map;log;constructor(e,t){this.url=e instanceof URL?e:new URL(e),this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#l(e){let t=e.multihash.bytes;return st.encode(t)}async getRawBlock(e,t){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${e.toString()}`,n.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 o=this.#l(e),s=new AbortController,i=()=>{s.abort()};t?.addEventListener("abort",i);try{let a=this.#a.get(o);return a==null&&(this.#e++,a=fetch(n.toString(),{signal:s.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"}).then(async c=>{if(this.log("GET %s %d",n,c.status),!c.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#o++,new Uint8Array(await c.arrayBuffer())}),this.#a.set(o,a)),await a}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#t++,new Error(`unable to fetch raw block for CID ${e}`))}finally{t?.removeEventListener("abort",i),this.#a.delete(o)}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#o/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}getStats(){return{attempts:this.#e,errors:this.#t,invalidBlocks:this.#r,successes:this.#o,pendingResponses:this.#a.size}}};function CA(r,e,t){return r.filter(n=>I7.matches(n)||e&&A7.matches(n)?t||Zu.matches(n)?!0:Wt(n.toOptions().host)===!1:!1)}async function*o1(r,e,t,n,o,s){for await(let i of e.findProviders(r,s)){let a=CA(i.multiaddrs,n,o);if(a.length===0)continue;let c=r1(a[0]);yield new n1(c,t)}}var h2=class extends ys{routing;allowInsecure;allowLocal;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??s1,this.allowLocal=t.allowLocal??i1}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let o=await t.getRawBlock(e,n.signal);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(o),o}async*findNewProviders(e,t={}){yield*o1(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,t)}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}};function C7(r,e){return new h2(r,e)}var a1=class{allowInsecure;allowLocal;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??s1,this.allowLocal=t.allowLocal??i1}async retrieve(e,t={}){let n=[];for await(let o of o1(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,t)){this.log("getting block for %c from %s",e,o.url);try{let s=await o.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,o.url);try{await t.validateFn?.(s)}catch(i){this.log.error("failed to validate block for %c from %s",e,o.url,i);continue}return s}catch(s){if(this.log.error("failed to get block for %c from %s",e,o.url,s),s instanceof Error?n.push(s):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${o.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,o.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return C7({logger:this.logger,routing:this.routing},e)}};var s1=!1,i1=!1;function p2(r={}){return e=>new a1(e,r)}async function*c1(r,e={}){let t=r.getReader();try{for(;;){let n=await t.read();if(n.done)return;yield n.value}}finally{e.preventCancel!==!0&&await t.cancel(),t.releaseLock()}}var OA=Xe(Wo(),1);var BA=Xe(l1(),1);var N7="ERR_IPNS_EXPIRED_RECORD",u1="ERR_UNRECOGNIZED_VALIDITY";var Gn="ERR_SIGNATURE_VERIFICATION";var g2="ERR_UNDEFINED_PARAMETER",P7="ERR_INVALID_RECORD_DATA",L7="ERR_INVALID_VALUE",O7="ERR_INVALID_EMBEDDED_KEY";var B7="ERR_RECORD_TOO_LARGE";var zt;(function(r){let e;(function(o){o.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(o){o[o.EOL=0]="EOL"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.value!=null&&(s.uint32(10),s.bytes(o.value)),o.signatureV1!=null&&(s.uint32(18),s.bytes(o.signatureV1)),o.validityType!=null&&(s.uint32(24),r.ValidityType.codec().encode(o.validityType,s)),o.validity!=null&&(s.uint32(34),s.bytes(o.validity)),o.sequence!=null&&(s.uint32(40),s.uint64(o.sequence)),o.ttl!=null&&(s.uint32(48),s.uint64(o.ttl)),o.pubKey!=null&&(s.uint32(58),s.bytes(o.pubKey)),o.signatureV2!=null&&(s.uint32(66),s.bytes(o.signatureV2)),o.data!=null&&(s.uint32(74),s.bytes(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.value=o.bytes();break;case 2:i.signatureV1=o.bytes();break;case 3:i.validityType=r.ValidityType.codec().decode(o);break;case 4:i.validity=o.bytes();break;case 5:i.sequence=o.uint64();break;case 6:i.ttl=o.uint64();break;case 7:i.pubKey=o.bytes();break;case 8:i.signatureV2=o.bytes();break;case 9:i.data=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(zt||(zt={}));var ur=Xe(Wo(),1);var U7=rr("ipns:utils"),F7=M("/ipns/"),NA=114,V7=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw U7.error(n),(0,ur.default)(n,g2)}let t;if(e.pubKey!=null){try{t=Gr(e.pubKey)}catch(o){throw U7.error(o),o}if(!(await ht(e.pubKey)).equals(r))throw(0,ur.default)(new Error("Embedded public key did not match PeerID"),O7)}else r.publicKey!=null&&(t=Gr(r.publicKey));if(t!=null)return t;throw(0,ur.default)(new Error("no public key is available"),g2)};var K7=r=>{let e=M("ipns-signature:");return ve([e,r])},ja=r=>"signatureV1"in r?zt.encode({value:M(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:M(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):zt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function hn(r){let e=zt.decode(r);if(e.sequence!=null&&(e.sequence=BigInt(e.sequence)),e.ttl!=null&&(e.ttl=BigInt(e.ttl)),e.signatureV2==null||e.data==null)throw(0,ur.default)(new Error("missing data or signatureV2"),Gn);let t=H7(e.data),n=PA(t.Value),o=O(t.Validity);if(e.value!=null&&e.signatureV1!=null)return LA(e),{value:n,validityType:zt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV1:e.signatureV1,signatureV2:e.signatureV2,data:e.data};if(e.signatureV2!=null)return{value:n,validityType:zt.ValidityType.EOL,validity:o,sequence:t.Sequence,ttl:t.TTL,pubKey:e.pubKey,signatureV2:e.signatureV2,data:e.data};throw new Error("invalid record: does not include signatureV1 or signatureV2")}var y2=r=>ve([F7,r.toBytes()]),$7=r=>Ze(r.slice(F7.length));var H7=r=>{let e=Ir(r);if(e.ValidityType===0)e.ValidityType=zt.ValidityType.EOL;else throw(0,ur.default)(new Error("Unknown validity type"),u1);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},PA=r=>{if(r!=null){if(Ms(r))return`/ipns/${r.toCID().toString(oo)}`;if(r instanceof Uint8Array){let n=O(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=le.asCID(r);if(t!=null)return t.code===NA?`/ipns/${t.toString(oo)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${le.decode(r).toV1().toString()}`:`/ipfs/${le.parse(e).toV1().toString()}`}catch{}}throw(0,ur.default)(new Error("Value must be a valid content path starting with /"),L7)},LA=r=>{if(r.data==null)throw(0,ur.default)(new Error("Record data is missing"),P7);let e=H7(r.data);if(!Z(e.Value,r.value??new Uint8Array(0)))throw(0,ur.default)(new Error('Field "value" did not match between protobuf and CBOR'),Gn);if(!Z(e.Validity,r.validity??new Uint8Array(0)))throw(0,ur.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Gn);if(e.ValidityType!==r.validityType)throw(0,ur.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Gn);if(e.Sequence!==r.sequence)throw(0,ur.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Gn);if(e.TTL!==r.ttl)throw(0,ur.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Gn)};var WW=rr("ipns"),zW=Ht.code,YW=60*60*1e9,MA="/ipns/",XW=MA.length;var Za=Xe(Wo(),1),q7=Xe(l1(),1);var d1=rr("ipns:validator"),UA=1024*10,FA=async(r,e)=>{let t=hn(e),n;try{let o=K7(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw d1.error("record signature verification failed"),(0,Za.default)(new Error("record signature verification failed"),Gn);if(t.validityType===zt.ValidityType.EOL){if(q7.default.fromString(t.validity).toDate().getTime()<Date.now())throw d1.error("record has expired"),(0,Za.default)(new Error("record has expired"),N7)}else if(t.validityType!=null)throw d1.error("unrecognized validity type"),(0,Za.default)(new Error("unrecognized validity type"),u1);d1("ipns record for %s is valid",t.value)};async function f1(r,e){if(e.byteLength>UA)throw(0,Za.default)(new Error("record too large"),B7);let t=$7(r),n=hn(e),o=await V7(t,n);await FA(o,e)}async function*Ja(r){let e=/\r?\n/,t=new TextDecoder("utf8"),n="";for await(let o of r){typeof o=="string"&&(o=new TextEncoder().encode(o)),n+=t.decode(o,{stream:!0});let s=n.split(e);n=s.pop()??"";for(let i=0;i<s.length;i++)yield JSON.parse(s[i])}n+=t.decode(),n!==""&&(yield JSON.parse(n))}function VA(r){return r[Symbol.asyncIterator]!=null}function KA(r){if(VA(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Es=KA;var w2=M("/ipns/");function G7(r){return Z(r.subarray(0,w2.byteLength),w2)}var W7=r=>Ze(r.slice(w2.length)),h1=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*gr(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!G7(e))return;let o=W7(e),s=hn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!G7(e))throw new g("Not found","ERR_NOT_FOUND");let n=W7(e);try{let o=await this.client.getIPNS(n,t);return ja(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new g("Not found","ERR_NOT_FOUND"):o}}},p1=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await Es(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var Yt=rr("delegated-routing-v1-http-api-client"),z7={concurrentRequests:4,timeout:3e4},m1=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,G(1/0,this.shutDownController.signal),this.httpQueue=new Gt({concurrency:t.concurrentRequests??z7.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??z7.timeout,this.contentRouting=new h1(this),this.peerRouting=new p1(this)}get[rn](){return this.contentRouting}get[nn](){return this.peerRouting}isStarted(){return this.started}start(){this.started=!0}stop(){this.httpQueue.clear(),this.shutDownController.abort(),this.started=!1}async*getProviders(e,t={}){Yt("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Pe([this.shutDownController.signal,n,t.signal]);G(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/providers/${e.toString()}`,l=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(l.headers.get("Content-Type")==="application/json"){let u=await l.json();for(let h of u.Providers){let f=this.#e(h);f!=null&&(yield f)}}else for await(let u of Ja(c1(l.body))){let h=this.#e(u);h!=null&&(yield h)}}catch(a){Yt.error("getProviders errored:",a)}finally{o.clear(),i.resolve(),Yt("getProviders finished: %c",e)}}async*getPeers(e,t={}){Yt("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Pe([this.shutDownController.signal,n,t.signal]);G(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));try{await s.promise;let a=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,l=await fetch(a,{headers:{Accept:"application/x-ndjson"},signal:o});if(l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(l.headers.get("Content-Type")==="application/json"){let u=await l.json();for(let h of u.Peers){let f=this.#e(h);f!=null&&(yield f)}}else for await(let u of Ja(c1(l.body))){let h=this.#e(u);h!=null&&(yield h)}}catch(a){Yt.error("getPeers errored:",a)}finally{o.clear(),i.resolve(),Yt("getPeers finished: %c",e)}}async getIPNS(e,t={}){Yt("getIPNS starts: %c",e);let n=AbortSignal.timeout(this.timeout),o=Pe([this.shutDownController.signal,n,t.signal]);G(1/0,n,o);let s=J(),i=J();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let l=await fetch(a,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:o});if(Yt("getIPNS GET %s %d",a,l.status),l.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(l.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(l.body==null)throw new g("GET ipns response had no body","ERR_BAD_RESPONSE");let d=await l.arrayBuffer(),u=new Uint8Array(d,0,d.byteLength);return t.validate!==!1&&await f1(y2(e),u),hn(u)}catch(c){throw Yt.error("getIPNS GET %s error:",a,c),c}finally{o.clear(),i.resolve(),Yt("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){Yt("putIPNS starts: %c",e);let o=AbortSignal.timeout(this.timeout),s=Pe([this.shutDownController.signal,o,n.signal]);G(1/0,o,s);let i=J(),a=J();this.httpQueue.add(async()=>(i.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await i.promise;let l=ja(t),u=await fetch(c,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:s});if(Yt("putIPNS PUT %s %d",c,u.status),u.status!==200)throw new g("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(l){throw Yt.error("putIPNS PUT %s error:",c,l.stack),l}finally{s.clear(),a.resolve(),Yt("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(j)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:ye(e.ID),Addrs:n,Protocols:t}}};function Y7(r,e={}){return new m1(new URL(r),e)}var X7="[a-fA-F\\d:]",ko=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${X7})|(?<=${X7})(?=\\s|$))`:"",Qr="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",ct="[a-fA-F\\d]{1,4}",g1=`
23
23
  (?:
24
- (?:${at}:){7}(?:${at}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
25
- (?:${at}:){6}(?:${Qr}|:${at}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
26
- (?:${at}:){5}(?::${Qr}|(?::${at}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
27
- (?:${at}:){4}(?:(?::${at}){0,1}:${Qr}|(?::${at}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
28
- (?:${at}:){3}(?:(?::${at}){0,2}:${Qr}|(?::${at}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
29
- (?:${at}:){2}(?:(?::${at}){0,3}:${Qr}|(?::${at}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
30
- (?:${at}:){1}(?:(?::${at}){0,4}:${Qr}|(?::${at}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
31
- (?::(?:(?::${at}){0,5}:${Qr}|(?::${at}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
24
+ (?:${ct}:){7}(?:${ct}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
25
+ (?:${ct}:){6}(?:${Qr}|:${ct}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
26
+ (?:${ct}:){5}(?::${Qr}|(?::${ct}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
27
+ (?:${ct}:){4}(?:(?::${ct}){0,1}:${Qr}|(?::${ct}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
28
+ (?:${ct}:){3}(?:(?::${ct}){0,2}:${Qr}|(?::${ct}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
29
+ (?:${ct}:){2}(?:(?::${ct}){0,3}:${Qr}|(?::${ct}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
30
+ (?:${ct}:){1}(?:(?::${ct}){0,4}:${Qr}|(?::${ct}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
31
+ (?::(?:(?::${ct}){0,5}:${Qr}|(?::${ct}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
32
32
  )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
33
- `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),MA=new RegExp(`(?:^${Qr}$)|(?:^${g1}$)`),UA=new RegExp(`^${Qr}$`),FA=new RegExp(`^${g1}$`),y2=r=>r&&r.exact?MA:new RegExp(`(?:${To(r)}${Qr}${To(r)})|(?:${To(r)}${g1}${To(r)})`,"g");y2.v4=r=>r&&r.exact?UA:new RegExp(`${To(r)}${Qr}${To(r)}`,"g");y2.v6=r=>r&&r.exact?FA:new RegExp(`${To(r)}${g1}${To(r)}`,"g");var w2=y2;function E2(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function W7(){return!1}var{toString:VA}=Object.prototype;function b2(r){return VA.call(r)==="[object RegExp]"}var z7={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function x2(r,e={}){if(!b2(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(z7).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?z7[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function v2(r,e,{timeout:t}={}){try{return E2(()=>x2(r).test(e),{timeout:t})()}catch(n){if(W7(n))return!1;throw n}}var KA=15,$A=45,Y7={timeout:400};function S2(r){return r.length>$A?!1:v2(w2.v6({exact:!0}),r,Y7)}function X7(r){return r.length>KA?!1:v2(w2.v4({exact:!0}),r,Y7)}var Q7={http:"80",https:"443",ws:"80",wss:"443"},HA=["http","https","ws","wss"];function j7(r,e){e=e??{};let t=e.defaultDnsType??"dns4",{scheme:n,hostname:o,port:s}=qA(r),a="/"+[GA(o,t),WA(s,n),zA(n)].filter(c=>!!c).reduce((c,l)=>c.concat(l),[]).join("/");return Q(a)}function qA(r){let[e]=r.split(":");HA.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o}=new URL(r);if(o==null||o===""){let s=YA(e);s!=null&&(o=s),s==null&&t==="http:"&&(o="80")}return{scheme:e,hostname:n,port:o}}function GA(r,e){if(!(r==null||r==="")){if(X7(r))return["ip4",r];if(S2(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(S2(t))return["ip6",t]}return[e,r]}}function WA(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function zA(r){if(r.match(/^tcp$|^udp$/)==null)return[r]}function YA(r){if(!(r==null||r===""||Q7[r]==null))return Q7[r]}var XA=["https://trustless-gateway.link","https://4everland.io"],QA=2336,jA=Symbol.for("nodejs.util.inspect.custom"),R2=class{type="url";multihash;privateKey;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=$t.digest(M(this.url))}[jA](){return`PeerId(${this.url})`}[la]=!0;toString(){return this.toCID().toString()}toCID(){return le.createV1(QA,this.multihash)}toBytes(){return this.toCID().bytes}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=O(e)),e.toString()===this.toString())}};function ZA(r){return r=r.toString(),{id:new R2(new URL(r)),multiaddrs:[j7(r)]}}var _2=class{gateways;constructor(e={}){this.gateways=(e.gateways??XA).map(t=>ZA(t))}async*findProviders(e,t){yield*this.gateways.toSorted(()=>Math.random()>.5?1:-1).map(n=>({...n,protocols:["transport-ipfs-gateway-http"]}))}};function A2(r={}){return new _2(r)}var I2=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(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)}};function D2(r){return new I2(r)}var Z7=Ye(Wo(),1);function y1(r){return r=r??new Error("Not Found"),(0,Z7.default)(r,"ERR_NOT_FOUND")}var J7="SHARDING";function eI(r){return r[Symbol.asyncIterator]!=null}function tI(r){if(eI(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 tc=tI;function rI(r){return r[Symbol.asyncIterator]!=null}function nI(r,e){return rI(r)?async function*(){yield*(await tc(r)).sort(e)}():function*(){yield*tc(r).sort(e)}()}var w1=nI;var Hn=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 hr(this.putMany(e,n)),e=[],await hr(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=Fr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Fr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>w1(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Fr(n,()=>o++>=s)}return e.limit!=null&&(n=eo(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Fr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Fr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>w1(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Fr(n,()=>s++>=o)}return e.limit!=null&&(n=eo(n,e.limit)),n}};var bs=class extends Hn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw y1();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Pe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Pe(e)}};var _Y=new Pe(J7);var MY=Jt("datastore:core:tiered");var E1=class extends Fu{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var T2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=J(),this.haveNext=J()}[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=J(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),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 new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=J(),await Lt(this.readNext.promise,t?.signal,t)}};function tg(){return new T2}var b1=class extends Error{code;constructor(e,t){super(e),this.code=t}},k2=class extends b1{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function rg(r,e){let t=tg();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new ce;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new k2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:h}=await Promise.race([n.next(),l]);return u===!0?new ce:h}for(;o.byteLength<i;){let{value:u,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new b1("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let d=o.sublist(0,i);return o.consume(i),d}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var x1=class extends Error{code;constructor(e,t){super(e),this.code=t}};function fn(r,e={}){let t=rg(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Re(e.maxDataLength));let n=e?.lengthDecoder??Ot,o=e?.lengthEncoder??Ke;return{read:async i=>{let a=-1,c=new ce;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new x1("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new x1("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new ce(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new ce(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function C2(){let r=J(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function ng(){let r=C2(),e=C2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Ti=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var qn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function og(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var sg=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),iI=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!iI)throw new Error("Non little-endian hardware is not supported");function v1(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function S1(r){if(typeof r=="string")r=v1(r);else if(og(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var aI=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function ig(r,e){if(e!==void 0&&(typeof e!="object"||!aI(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function xs(r,e){if(!og(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function ag(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}var N2=(r,e)=>(Object.assign(e,r),e);function P2(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}function R1(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function L2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function cI(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function ki(r,...e){if(!cI(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function O2(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 cg(r,e){ki(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var vt=(r,e)=>r[e++]&255|(r[e++]&255)<<8,B2=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=S1(e),xs(e,32);let t=vt(e,0),n=vt(e,2),o=vt(e,4),s=vt(e,6),i=vt(e,8),a=vt(e,10),c=vt(e,12),l=vt(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=vt(e,16+2*d)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],h=i[5],f=i[6],p=i[7],m=i[8],y=i[9],w=vt(e,t+0),b=vt(e,t+2),E=vt(e,t+4),x=vt(e,t+6),v=vt(e,t+8),I=vt(e,t+10),R=vt(e,t+12),S=vt(e,t+14),T=s[0]+(w&8191),L=s[1]+((w>>>13|b<<3)&8191),N=s[2]+((b>>>10|E<<6)&8191),B=s[3]+((E>>>7|x<<9)&8191),k=s[4]+((x>>>4|v<<12)&8191),Y=s[5]+(v>>>1&8191),D=s[6]+((v>>>14|I<<2)&8191),P=s[7]+((I>>>11|R<<5)&8191),$=s[8]+((R>>>8|S<<8)&8191),C=s[9]+(S>>>5|o),A=0,U=A+T*a+L*(5*y)+N*(5*m)+B*(5*p)+k*(5*f);A=U>>>13,U&=8191,U+=Y*(5*h)+D*(5*u)+P*(5*d)+$*(5*l)+C*(5*c),A+=U>>>13,U&=8191;let V=A+T*c+L*a+N*(5*y)+B*(5*m)+k*(5*p);A=V>>>13,V&=8191,V+=Y*(5*f)+D*(5*h)+P*(5*u)+$*(5*d)+C*(5*l),A+=V>>>13,V&=8191;let H=A+T*l+L*c+N*a+B*(5*y)+k*(5*m);A=H>>>13,H&=8191,H+=Y*(5*p)+D*(5*f)+P*(5*h)+$*(5*u)+C*(5*d),A+=H>>>13,H&=8191;let se=A+T*d+L*l+N*c+B*a+k*(5*y);A=se>>>13,se&=8191,se+=Y*(5*m)+D*(5*p)+P*(5*f)+$*(5*h)+C*(5*u),A+=se>>>13,se&=8191;let ie=A+T*u+L*d+N*l+B*c+k*a;A=ie>>>13,ie&=8191,ie+=Y*(5*y)+D*(5*m)+P*(5*p)+$*(5*f)+C*(5*h),A+=ie>>>13,ie&=8191;let de=A+T*h+L*u+N*d+B*l+k*c;A=de>>>13,de&=8191,de+=Y*a+D*(5*y)+P*(5*m)+$*(5*p)+C*(5*f),A+=de>>>13,de&=8191;let ae=A+T*f+L*h+N*u+B*d+k*l;A=ae>>>13,ae&=8191,ae+=Y*c+D*a+P*(5*y)+$*(5*m)+C*(5*p),A+=ae>>>13,ae&=8191;let ue=A+T*p+L*f+N*h+B*u+k*d;A=ue>>>13,ue&=8191,ue+=Y*l+D*c+P*a+$*(5*y)+C*(5*m),A+=ue>>>13,ue&=8191;let Be=A+T*m+L*p+N*f+B*h+k*u;A=Be>>>13,Be&=8191,Be+=Y*d+D*l+P*c+$*a+C*(5*y),A+=Be>>>13,Be&=8191;let Ne=A+T*y+L*m+N*p+B*f+k*h;A=Ne>>>13,Ne&=8191,Ne+=Y*u+D*d+P*l+$*c+C*a,A+=Ne>>>13,Ne&=8191,A=(A<<2)+A|0,A=A+U|0,U=A&8191,A=A>>>13,V+=A,s[0]=U,s[1]=V,s[2]=H,s[3]=se,s[4]=ie,s[5]=de,s[6]=ae,s[7]=ue,s[8]=Be,s[9]=Ne}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){O2(this);let{buffer:t,blockLen:n}=this;e=S1(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){O2(this),cg(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function lI(r){let e=(n,o)=>r(o).update(S1(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var lg=lI(r=>new B2(r));var uI=v1("expand 16-byte k"),dI=v1("expand 32-byte k"),fI=qn(uI),hI=qn(dI);function z(r,e){return r<<e|r>>>32-e}function M2(r){return r.byteOffset%4===0}var _1=64,pI=16,dg=2**32-1,ug=new Uint32Array;function mI(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(_1),d=qn(l),u=M2(o)&&M2(s),h=u?qn(o):ug,f=u?qn(s):ug;for(let p=0;p<c;i++){if(r(e,t,n,d,i,a),i>=dg)throw new Error("arx: counter overflow");let m=Math.min(_1,c-p);if(u&&m===_1){let y=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let w=0,b;w<pI;w++)b=y+w,f[b]=h[b]^d[w];p+=_1;continue}for(let y=0,w;y<m;y++)w=p+y,s[w]=o[w]^l[y];p+=m}}function U2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=ig({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return R1(o),R1(i),L2(s),L2(t),(a,c,l,d,u=0)=>{ki(a),ki(c),ki(l);let h=l.length;if(d||(d=new Uint8Array(h)),ki(d),R1(u),u<0||u>=dg)throw new Error("arx: counter overflow");if(d.length<h)throw new Error(`arx: output (${d.length}) is shorter than data (${h})`);let f=[],p=a.length,m,y;if(p===32)m=a.slice(),f.push(m),y=hI;else if(p===16&&t)m=new Uint8Array(32),m.set(a),m.set(a,16),y=fI,f.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);M2(c)||(c=c.slice(),f.push(c));let w=qn(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,qn(c.subarray(0,16)),w),c=c.subarray(16)}let b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let x=new Uint8Array(12);x.set(c,s?0:12-c.length),c=x,f.push(c)}let E=qn(c);for(mI(r,y,w,E,l,d,u,i);f.length>0;)f.pop().fill(0);return d}}function pg(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],d=e[0],u=e[1],h=e[2],f=e[3],p=e[4],m=e[5],y=e[6],w=e[7],b=o,E=t[0],x=t[1],v=t[2],I=i,R=a,S=c,T=l,L=d,N=u,B=h,k=f,Y=p,D=m,P=y,$=w,C=b,A=E,U=x,V=v;for(let se=0;se<s;se+=2)I=I+L|0,C=z(C^I,16),Y=Y+C|0,L=z(L^Y,12),I=I+L|0,C=z(C^I,8),Y=Y+C|0,L=z(L^Y,7),R=R+N|0,A=z(A^R,16),D=D+A|0,N=z(N^D,12),R=R+N|0,A=z(A^R,8),D=D+A|0,N=z(N^D,7),S=S+B|0,U=z(U^S,16),P=P+U|0,B=z(B^P,12),S=S+B|0,U=z(U^S,8),P=P+U|0,B=z(B^P,7),T=T+k|0,V=z(V^T,16),$=$+V|0,k=z(k^$,12),T=T+k|0,V=z(V^T,8),$=$+V|0,k=z(k^$,7),I=I+N|0,V=z(V^I,16),P=P+V|0,N=z(N^P,12),I=I+N|0,V=z(V^I,8),P=P+V|0,N=z(N^P,7),R=R+B|0,C=z(C^R,16),$=$+C|0,B=z(B^$,12),R=R+B|0,C=z(C^R,8),$=$+C|0,B=z(B^$,7),S=S+k|0,A=z(A^S,16),Y=Y+A|0,k=z(k^Y,12),S=S+k|0,A=z(A^S,8),Y=Y+A|0,k=z(k^Y,7),T=T+L|0,U=z(U^T,16),D=D+U|0,L=z(L^D,12),T=T+L|0,U=z(U^T,8),D=D+U|0,L=z(L^D,7);let H=0;n[H++]=i+I|0,n[H++]=a+R|0,n[H++]=c+S|0,n[H++]=l+T|0,n[H++]=d+L|0,n[H++]=u+N|0,n[H++]=h+B|0,n[H++]=f+k|0,n[H++]=p+Y|0,n[H++]=m+D|0,n[H++]=y+P|0,n[H++]=w+$|0,n[H++]=b+C|0,n[H++]=E+A|0,n[H++]=x+U|0,n[H++]=v+V|0}function gI(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],d=e[2],u=e[3],h=e[4],f=e[5],p=e[6],m=e[7],y=t[0],w=t[1],b=t[2],E=t[3];for(let v=0;v<20;v+=2)o=o+c|0,y=z(y^o,16),h=h+y|0,c=z(c^h,12),o=o+c|0,y=z(y^o,8),h=h+y|0,c=z(c^h,7),s=s+l|0,w=z(w^s,16),f=f+w|0,l=z(l^f,12),s=s+l|0,w=z(w^s,8),f=f+w|0,l=z(l^f,7),i=i+d|0,b=z(b^i,16),p=p+b|0,d=z(d^p,12),i=i+d|0,b=z(b^i,8),p=p+b|0,d=z(d^p,7),a=a+u|0,E=z(E^a,16),m=m+E|0,u=z(u^m,12),a=a+u|0,E=z(E^a,8),m=m+E|0,u=z(u^m,7),o=o+l|0,E=z(E^o,16),p=p+E|0,l=z(l^p,12),o=o+l|0,E=z(E^o,8),p=p+E|0,l=z(l^p,7),s=s+d|0,y=z(y^s,16),m=m+y|0,d=z(d^m,12),s=s+d|0,y=z(y^s,8),m=m+y|0,d=z(d^m,7),i=i+u|0,w=z(w^i,16),h=h+w|0,u=z(u^h,12),i=i+u|0,w=z(w^i,8),h=h+w|0,u=z(u^h,7),a=a+c|0,b=z(b^a,16),f=f+b|0,c=z(c^f,12),a=a+c|0,b=z(b^a,8),f=f+b|0,c=z(c^f,7);let x=0;n[x++]=o,n[x++]=s,n[x++]=i,n[x++]=a,n[x++]=y,n[x++]=w,n[x++]=b,n[x++]=E}var yI=U2(pg,{counterRight:!1,counterLength:4,allowShortKeys:!1}),wI=U2(pg,{counterRight:!1,counterLength:8,extendNonceFn:gI,allowShortKeys:!1});var EI=new Uint8Array(16),fg=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(EI.subarray(t))},bI=new Uint8Array(32);function hg(r,e,t,n,o){let s=r(e,t,bI),i=lg.create(s);o&&fg(i,o),fg(i,n);let a=new Uint8Array(16),c=sg(a);P2(c,0,BigInt(o?o.length:0),!0),P2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var mg=r=>(e,t,n)=>(xs(e,32),xs(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?xs(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=hg(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?xs(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),d=s.subarray(-16),u=hg(r,e,t,l,n);if(!ag(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),F2=N2({blockSize:64,nonceLength:12,tagLength:16},mg(yI)),TX=N2({blockSize:64,nonceLength:24,tagLength:16},mg(wI));function yg(r,e,t){return ss(r),t===void 0&&(t=new Uint8Array(r.outputLen)),wo(r,Kr(t),Kr(e))}var V2=new Uint8Array([0]),gg=new Uint8Array;function wg(r,e,t,n=32){if(ss(r),uo(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=gg);let s=new Uint8Array(o*r.outputLen),i=wo.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)V2[0]=l+1,a.update(l===0?gg:c).update(t).update(V2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),V2.fill(0),s.slice(0,n)}var K2={hashSHA256(r){return Ao(r.subarray())},getHKDF(r,e){let t=yg(Ao,e,r),o=wg(Ao,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=La.utils.randomPrivateKey();return{publicKey:La.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:La.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return La.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return F2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return F2(n,e,t).decrypt(r.subarray(),o)}};var Eg=K2;function bg(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Ci=r=>{let e=We(2);return e[0]=r>>8,e[1]=r,e};Ci.bytes=2;var rc=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};rc.bytes=2;function xg(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function $2(r,e){!e.enabled||!Ti||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${O(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${O(r.privateKey,"hex")}`)):e("Missing local static keys."))}function H2(r,e){!e.enabled||!Ti||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${O(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${O(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function vg(r,e){!e.enabled||!Ti||e(r?`REMOTE_STATIC_PUBLIC_KEY ${O(r.subarray(),"hex")}`:"Missing remote static public key.")}function q2(r,e){!e.enabled||!Ti||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${O(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function G2(r,e,t){!t.enabled||!Ti||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&O(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&O(e.k,"hex")}`))}function Gn(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=We(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function A1(r,e){for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}var I1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Ni=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var xI=0,vI=4294967295,SI="Cipherstate has reached maximum n, a new handshake must be performed",D1=class{n;bytes;view;constructor(e=xI){this.n=e,this.bytes=Ae(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>vI)throw new Error(SI)}};var vs=Ae(0),Pi=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new D1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},W2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=M(t,"utf-8");this.h=RI(e,n),this.ck=this.h,this.cs=new Pi(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Pi(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new ce(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,vs);return[new Pi(this.crypto,e),new Pi(this.crypto,t)]}},z2=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new W2(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},nc=class extends z2{writeMessageA(e){return new ce(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new ce(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new ce(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ni(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Ni(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Ni(`handshake stage 2 validation fail: ${t.message}`)}}};function RI(r,e){if(e.length<=32){let t=Ae(32);return t.set(e),t}else return r.hash(e)}var T1;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(T1||(T1={}));var oc;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),T1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Ae(0),identitySig:Ae(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=T1.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(oc||(oc={}));async function Y2(r,e,t){let n=await r.sign(Sg(e));return oc.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function X2(r,e,t){try{let n=oc.decode(r);if(t){let i=t.subarray();if(!Z(i,n.identityKey))throw new Error(`Payload identity key ${O(n.identityKey,"hex")} does not match expected remote identity key ${O(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=Sg(e);if(!await Xr(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new I1(n.message)}}function Sg(r){let e=M("noise-libp2p-static-key:");return r instanceof Uint8Array?ve([e,r],e.length+r.length):(r.prepend(e),r)}async function Rg(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await Y2(o,i.publicKey,c),d=new nc({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});$2(d.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(d.writeMessageA(vs)),e.trace("Stage 0 - Initiator finished sending first message."),H2(d.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=d.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),q2(d.re,e),vg(d.rs,e),e.trace("Initiator going to check remote's signature...");let h=await X2(u,d.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(d.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[f,p]=d.ss.split();return G2(f,p,e),{payload:h,encrypt:m=>f.encryptWithAd(vs,m),decrypt:(m,y)=>p.decryptWithAd(vs,m,y)}}async function _g(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await Y2(o,i.publicKey,c),d=new nc({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});$2(d.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),q2(d.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(d.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),H2(d.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=d.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let h=await X2(u,d.rs,a),[f,p]=d.ss.split();return G2(f,p,e),{payload:h,encrypt:m=>p.encryptWithAd(vs,m),decrypt:(m,y)=>f.decryptWithAd(vs,m,y)}}var Ig=16;function Dg(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new ce(Ci(i.byteLength),i)}}}function Tg(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Ig<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Ig);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var k1=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??Eg;this.crypto=bg(c),this.extensions=o,this.metrics=a?xg(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Ae(0)}async secureOutbound(e,t,n){let o=fn(t,{lengthEncoder:Ci,lengthDecoder:rc,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await _r(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ft(a.payload.identityKey)}}async secureInbound(e,t,n){let o=fn(t,{lengthEncoder:Ci,lengthDecoder:rc,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await _r(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ft(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Rg({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await _g({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=ng(),s=e.unwrap();return await Xe(n,Dg(t,this.metrics),s,i=>Kt(i,{lengthDecoder:rc}),Tg(t,this.metrics),n),o}};function Li(r={}){return e=>new k1(e,r)}function C1(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Oi="ERR_INVALID_FRAME",Q2="ERR_UNREQUESTED_PING",j2="ERR_NOT_MATCHING_PING",Z2="ERR_STREAM_ALREADY_EXISTS",J2="ERR_DECODE_INVALID_VERSION",ep="ERR_BOTH_CLIENTS",tp="ERR_RECV_WINDOW_EXCEEDED",kg=new Set([Oi,Q2,j2,Z2,J2,ep,tp]),ko="ERR_INVALID_CONFIG",N1="ERR_MUXER_LOCAL_CLOSED",rp="ERR_MUXER_REMOTE_CLOSED";var Cg="ERR_STREAM_ABORT",Ng="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Pg="ERR_DECODE_IN_PROGRESS",ic=256*1024,Lg=16*1024*1024;var Og={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:ic,maxStreamWindowSize:Lg,maxMessageSize:64*1024};function Bg(r){if(r.keepAliveInterval<=0)throw new g("keep-alive interval must be positive",ko);if(r.maxInboundStreams<0)throw new g("max inbound streams must be larger or equal 0",ko);if(r.maxOutboundStreams<0)throw new g("max outbound streams must be larger or equal 0",ko);if(r.initialStreamWindowSize<ic)throw new g("InitialStreamWindowSize must be larger or equal 256 kB",ko);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new g("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",ko);if(r.maxStreamWindowSize>2**32-1)throw new g("MaxStreamWindowSize must be less than equal MAX_UINT32",ko);if(r.maxMessageSize<1024)throw new g("MaxMessageSize must be greater than a kilobyte",ko)}var Ze;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(Ze||(Ze={}));var Ge;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(Ge||(Ge={}));var sj=Object.values(Ge).filter(r=>typeof r!="string"),Mg=0,Ar;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Ar||(Ar={}));var Co=12;var Ug=2**24;function _I(r){if(r[0]!==Mg)throw new g("Invalid frame version",J2);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Ug+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Ug+(r[9]<<16)+(r[10]<<8)+r[11]}}var P1=class{source;buffer;frameInProgress;constructor(e){this.source=AI(e),this.buffer=new ce,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===Ze.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new g("decoding frame already in progress",Pg);if(this.buffer.length<Co)return;let e=_I(this.buffer.subarray(0,Co));return this.buffer.consume(Co),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function AI(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function np(r){let e=new Uint8Array(Co);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function Fg(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function L1(r,e){let t=C1(r).return?.();Fg(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var II="ERR_STREAM_RESET",DI="ERR_SINK_INVALID_STATE",TI=5e3;function op(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var No=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(e){this.sinkController=new AbortController,this.sinkEnd=J(),this.closed=J(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??TI,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=dt({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new g(`writable end state is "${this.writeStatus}" not "ready"`,DI);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);op(o)&&await o}let n=()=>{L1(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new ce(o):o;let s=this.sendData(o,t);op(s)&&(this.sendingData=J(),await s,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Lt(Promise.all([this.closeWrite(e),this.closeRead(e),this.closed.promise]),e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await Lt(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Lt(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Lt(this.sinkEnd.promise,e.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();op(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new g("stream reset",II);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var Ir;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(Ir||(Ir={}));var O1=class extends No{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=Ir.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=ic,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=Ta(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&(this.log?.trace("wait for send window capacity, status %s",this.status),await this.waitForSendWindowCapacity(t),this.status==="closed"||this.status==="aborted"||this.status==="reset")){this.log?.trace("%s while waiting for send window capacity",this.status);return}let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-Co,e.length),o=this.getSendFlags();this.sendFrame({type:Ze.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:Ze.WindowUpdate,flag:Ge.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|Ge.FIN;this.sendFrame({type:Ze.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"||this.status==="closing"?n(new g("stream aborted",Cg)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new g("receive window exceeded",tp,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&Ge.ACK)===Ge.ACK&&this.state===Ir.SYNSent&&(this.state=Ir.Established),(e&Ge.FIN)===Ge.FIN&&this.remoteCloseWrite(),(e&Ge.RST)===Ge.RST&&this.reset()}getSendFlags(){switch(this.state){case Ir.Init:return this.state=Ir.SYNSent,Ge.SYN;case Ir.SYNReceived:return this.state=Ir.Established,Ge.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:Ze.WindowUpdate,flag:e,streamID:this._id,length:o})}};var Vg="/yamux/1.0.0",kI=500,B1=class{protocol=Vg;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new sp(this._components,{...this._init,...e})}},sp=class{protocol=Vg;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Og,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Bg(this.config),this.closeController=new AbortController,j(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=dt({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=C1(n);if(a.return!=null){let c=a.return();CI(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new P1(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=Ar.NormalTermination}catch(a){let c=a.code;kg.has(c)?(this.log?.error("protocol error in sink",a),s=Ar.ProtocolError):(this.log?.error("internal error in sink",a),s=Ar.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",rp);if(this.localGoAway!==void 0)throw new g("muxer closed locally",N1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new g("max outbound streams exceeded",Ng);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,Ir.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",rp);if(this.localGoAway!==void 0)throw new g("muxer closed locally",N1);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new g("muxer closed locally",N1))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??Ar.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(kI);j(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??Ar.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new g("Stream already exists",Z2,{id:e});let s=new O1({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case Ze.Ping:{this.handlePing(e);return}case Ze.GoAway:{this.handleGoAway(s);return}default:throw new g("Invalid frame type",Oi,{header:e})}else switch(e.type){case Ze.Data:case Ze.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new g("Invalid frame type",Oi,{header:e})}}handlePing(e){if(e.flag===Ge.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,Ge.ACK);else if(e.flag===Ge.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new g("Invalid frame flag",Oi,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new g("ping not requested",Q2);if(this.activePing.id!==e)throw new g("ping doesn't match our id",j2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Ar[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&Ge.SYN)===Ge.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===Ze.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case Ze.WindowUpdate:{i.handleWindowUpdate(e);return}case Ze.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new g("both endpoints are clients",ep);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:Ze.WindowUpdate,flag:Ge.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:Ze.WindowUpdate,flag:Ge.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,Ir.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===Ze.Data){if(t===void 0)throw new g("invalid frame",Oi);this.source.push(new ce(np(e),t))}else this.source.push(np(e))}sendPing(e,t=Ge.SYN){t===Ge.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:Ze.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Ar.NormalTermination){this.log?.("sending GoAway reason=%s",Ar[e]),this.localGoAway=e,this.sendFrame({type:Ze.GoAway,flag:0,streamID:0,length:e})}};function CI(r){return r!=null&&typeof r.then=="function"}function Kg(r={}){return e=>new B1(e,r)}var M1=async()=>{let r=await qa("Ed25519"),e=await NI(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function NI(r){return ft(V0(r.public),K0(r))}var U1=globalThis.CustomEvent??Event;async function*Wn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=J(),a=J(),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=J(),await i.promise),d)break;let m={done:!1};s.push(m),p().then(y=>{m.done=!0,m.ok=!0,m.value=y,o.dispatchEvent(new U1("task-complete"))},y=>{m.done=!0,m.err=y,o.dispatchEvent(new U1("task-complete"))})}c=!0,o.dispatchEvent(new U1("task-complete"))}catch(p){l=p,o.dispatchEvent(new U1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*h(){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*f(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let m=s[p];if(s.splice(p,1),p--,m.ok)yield m.value;else throw d=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(u()||(a=J(),await a.promise),l!=null)throw l;if(n?yield*h():yield*f(),c&&s.length===0)break}}var $g="libp2p",Hg="autonat",qg="1.0.0";var he;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>$e(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>$e(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let d;l.codec=()=>(d==null&&(d=re((u,h,f={})=>{if(f.lengthDelimited!==!1&&h.fork(),u.id!=null&&(h.uint32(10),h.bytes(u.id)),u.addrs!=null)for(let p of u.addrs)h.uint32(18),h.bytes(p);f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={addrs:[]},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.id=u.bytes();break;case 2:f.addrs.push(u.bytes());break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>te(u,l.codec()),l.decode=u=>ee(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let d;l.codec=()=>(d==null&&(d=re((u,h,f={})=>{f.lengthDelimited!==!1&&h.fork(),u.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(u.peer,h)),f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>te(u,l.codec()),l.decode=u=>ee(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let d;l.codec=()=>(d==null&&(d=re((u,h,f={})=>{f.lengthDelimited!==!1&&h.fork(),u.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(u.status,h)),u.statusText!=null&&(h.uint32(18),h.string(u.statusText)),u.addr!=null&&(h.uint32(26),h.bytes(u.addr)),f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.status=r.ResponseStatus.codec().decode(u);break;case 2:f.statusText=u.string();break;case 3:f.addr=u.bytes();break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>te(u,l.codec()),l.decode=u=>ee(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=re((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.type!=null&&(d.uint32(8),r.MessageType.codec().encode(l.type,d)),l.dial!=null&&(d.uint32(18),r.Dial.codec().encode(l.dial,d)),l.dialResponse!=null&&(d.uint32(26),r.DialResponse.codec().encode(l.dialResponse,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={},h=d==null?l.len:l.pos+d;for(;l.pos<h;){let f=l.uint32();switch(f>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(f&7);break}}return u})),c),r.encode=l=>te(l,r.codec()),r.decode=l=>ee(l,r.codec())})(he||(he={}));var ip=4,F1=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??$g}/${Hg}/${qg}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new g("handleIncomingAutonatStream timeout",yn))};t.addEventListener("abort",n,{once:!0}),j(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Xe(e.stream,i=>Kt(i),async function*(i){let a=await Es(i);if(a==null){s.log("no message received"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=he.decode(a)}catch(m){s.log.error("could not decode message",m),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let d,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{d=je(u.id)}catch(m){s.log.error("invalid PeerId",m),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",d),!e.connection.remotePeer.equals(d)){s.log("target peer %p did not equal sending peer %p",d,e.connection.remotePeer),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let h=u.addrs.map(m=>Q(m)).filter(m=>{let y=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,y),y}).filter(m=>{let y=m.toOptions().host,w=!(Gt(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(m=>{let y=m.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(m=>{let y=!!s.components.transportManager.transportForMultiaddr(m);return s.log.trace("transport for %a is supported %s",m,y),y}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${d.toString()}`)),m));if(h.length===0){s.log("no valid multiaddrs for %p in message",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",h.map(m=>m.toString()).join(", "),d);let f="",p=h[0];for await(let m of h){let y;p=m;try{if(y=await s.components.connectionManager.openConnection(m,{signal:t}),!y.remoteAddr.equals(m))throw s.log.error("tried to dial %a but dialed %a",m,y.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.OK,addr:y.remoteAddr.decapsulateCode(ne("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),f=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:f,addr:p.bytes}})},i=>Vt(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!(Gt(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);j(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=he.encode({type:he.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await M1()).toBytes(),c={},l=[],d=async u=>{let h=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let f=await o.components.connectionManager.openConnection(u.id,{signal:n}),p=await f.newStream(this.protocol,{signal:n});h=()=>{p.abort(new g("verifyAddress timeout",yn))},n.addEventListener("abort",h,{once:!0});let m=await Xe([s],w=>Vt(w),p,w=>Kt(w),async w=>Es(w));if(m==null){this.log("no response received from %p",f.remotePeer);return}let y=he.decode(m);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",f.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=f.remoteAddr.toOptions(),b;if(w.family===4)b=w.host.split(".")[0];else if(w.family===6)b=w.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',w.host);return}if(l.includes(b)){this.log("already have response from network segment %d - %s",b,w.host);return}l.push(b)}return y.dialResponse}catch(f){this.log.error("error asking remote to verify multiaddr",f)}finally{n.removeEventListener("abort",h)}};for await(let u of Wn(pr(this.components.peerRouting.getClosestPeers(a,{signal:n}),h=>async()=>d(h)),{concurrency:ip}))try{if(u==null)continue;let h=u.addr==null?t[0]:Q(u.addr);if(this.log("autonat response for %a is %s",h,u.status),u.status===he.ResponseStatus.E_BAD_REQUEST||u.status===he.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(h))){this.log("peer reported %a as %s but it was not in our observed address list",h,u.status);continue}let f=h.toString();if(c[f]==null&&(c[f]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[f].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[f].failure++,c[f].success===ip){this.log("%a is externally dialable",h),e.confirmObservedAddr(h);return}if(c[f].failure===ip){this.log("%a is not externally dialable",h),e.removeObservedAddr(h);return}}catch(h){this.log.error("could not verify external address",h)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function Gg(r={}){return e=>new F1(e,r)}var UI=q("dns4"),FI=q("dns6"),VI=q("dnsaddr"),Lo=nt(q("dns"),VI,UI,FI),V1=nt(q("ip4"),q("ip6")),Bi=nt(oe(V1,q("tcp")),oe(Lo,q("tcp"))),K1=oe(V1,q("udp")),KI=oe(K1,q("utp")),$I=oe(K1,q("quic")),HI=oe(K1,q("quic-v1")),ap=nt(oe(Bi,q("ws")),oe(Lo,q("ws"))),Mi=nt(oe(ap,q("p2p")),ap),cp=nt(oe(Bi,q("wss")),oe(Lo,q("wss")),oe(Bi,q("tls"),q("ws")),oe(Lo,q("tls"),q("ws"))),Ss=nt(oe(cp,q("p2p")),cp),lp=nt(oe(Bi,q("http")),oe(V1,q("http")),oe(Lo,q("http"))),up=nt(oe(Bi,q("https")),oe(V1,q("https")),oe(Lo,q("https"))),Wg=oe(K1,q("webrtc-direct"),q("certhash")),Xg=nt(oe(Wg,q("p2p")),Wg),zg=oe(HI,q("webtransport"),q("certhash"),q("certhash")),Qg=nt(oe(zg,q("p2p")),zg),jg=nt(oe(Mi,q("p2p-webrtc-star"),q("p2p")),oe(Ss,q("p2p-webrtc-star"),q("p2p")),oe(Mi,q("p2p-webrtc-star")),oe(Ss,q("p2p-webrtc-star"))),gZ=nt(oe(Mi,q("p2p-websocket-star"),q("p2p")),oe(Ss,q("p2p-websocket-star"),q("p2p")),oe(Mi,q("p2p-websocket-star")),oe(Ss,q("p2p-websocket-star"))),Zg=nt(oe(lp,q("p2p-webrtc-direct"),q("p2p")),oe(up,q("p2p-webrtc-direct"),q("p2p")),oe(lp,q("p2p-webrtc-direct")),oe(up,q("p2p-webrtc-direct"))),Rs=nt(ap,cp,lp,up,jg,Zg,Bi,KI,$I,Lo,Xg,Qg),yZ=nt(oe(Rs,q("p2p-stardust"),q("p2p")),oe(Rs,q("p2p-stardust"))),Po=nt(oe(Rs,q("p2p")),jg,Zg,Xg,Qg,q("p2p")),Yg=nt(oe(Po,q("p2p-circuit"),Po),oe(Po,q("p2p-circuit")),oe(q("p2p-circuit"),Po),oe(Rs,q("p2p-circuit")),oe(q("p2p-circuit"),Rs),q("p2p-circuit")),Jg=()=>nt(oe(Yg,Jg),Yg),jr=Jg(),e9=nt(oe(jr,Po,jr),oe(Po,jr),oe(jr,Po),jr,Po);var wZ=nt(oe(jr,q("webrtc"),q("p2p")),oe(jr,q("webrtc")),oe(Rs,q("webrtc"),q("p2p")),oe(Rs,q("webrtc")),q("webrtc"));function t9(r){function e(t){let n;try{n=Q(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function oe(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:t9(e),partialMatch:e}}function nt(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:t9(e),partialMatch:e}}function q(r){let e=r;function t(o){let s;try{s=Q(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var qI="bootstrap",GI=50,WI=12e4,zI=1e3,dp=class extends ye{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??zI,this.list=[];for(let n of t.list){if(!e9.matches(n)){this.log.error("Invalid multiaddr");continue}let o=Q(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:ge(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[qo]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??qI]:{value:this._init.tagValue??GI,ttl:this._init.tagTTL??WI}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function n9(r){return e=>new dp(e,r)}var o9={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var ac;(function(r){let e;r.codec=()=>(e==null&&(e=re((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)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(ac||(ac={}));var Zr=class r{static createFromProtobuf=async e=>{let t=ac.decode(e),n=await ft(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=s9(n,o,s),c=await(await _r(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new g("envelope signature is not valid for the given domain",o9.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=ac.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return Z(this.marshal(),e.marshal())}async validate(e){let t=s9(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Xr(this.peerId.publicKey).verify(t.subarray(),this.signature)}},s9=(r,e,t)=>{let n=M(r),o=Ke(n.byteLength),s=Ke(e.length),i=Ke(t.length);return new ce(o,n,s,e,i,t)};function i9(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 a9="libp2p-peer-record",c9=Uint8Array.from([3,1]);var cc;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=re((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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>te(s,n.codec()),n.decode=s=>ee(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=re((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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>te(n,r.codec()),r.decode=n=>ee(n,r.codec())})(cc||(cc={}));var lr=class r{static createFromProtobuf=e=>{let t=cc.decode(e),n=je(t.peerId),o=(t.addresses??[]).map(i=>Q(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=a9;static CODEC=c9;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=cc.encode({peerId:this.peerId.toBytes(),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||!i9(this.multiaddrs,e.multiaddrs))}};function Je(r,e){let t=fn(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 l9="/libp2p/relay";var u9="circuit-relay-relay";var jZ=BigInt(131072),_s="/libp2p/circuit/relay/0.2.0/hop",fp="/libp2p/circuit/relay/0.2.0/stop",ZZ=30*1e3,JZ=30*1e3,hp=300;var pp="ERR_RELAYED_DIAL",d9="ERR_HOP_REQUEST_FAILED";var Oo;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ui.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),$1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Fi.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),St.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ui.codec().decode(o,o.uint32());break;case 3:i.reservation=$1.codec().decode(o,o.uint32());break;case 4:i.limit=Fi.codec().decode(o,o.uint32());break;case 5:i.status=St.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(Oo||(Oo={}));var hn;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ui.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Fi.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),St.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ui.codec().decode(o,o.uint32());break;case 3:i.limit=Fi.codec().decode(o,o.uint32());break;case 4:i.status=St.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(hn||(hn={}));var Ui;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(Ui||(Ui={}));var $1;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})($1||($1={}));var Fi;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(Fi||(Fi={}));var St;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(St||(St={}));var mp;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(mp||(mp={}));(function(r){r.codec=()=>$e(mp)})(St||(St={}));var f9;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(f9||(f9={}));async function h9(r){let e=new TextEncoder().encode(r),t=await Ce.digest(e);return le.createV0(t)}function gp(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var H1=class extends ye{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(_s,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(_s)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await h9(l9),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var XI=60*1e3*10,QI=60*1e3*5,jI=30*1e3,q1=class extends ye{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new st,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new fr({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(gp(n.reservation.expire)>XI){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((d,u)=>(u.type==="discovered"&&d++,d),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=gp(i.expire),c=Math.min(Math.max(a-QI,jI),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(d=>{this.log.error("could not refresh reservation to relay %p",e,d)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[u9]:{value:1,ttl:a}}}),await this.transportManager.listen([Q(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(_s,t),s=Je(n).pb(Oo);await s.write({type:Oo.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===St.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let d of i.reservation.addrs)if(Z(l,d)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function yp(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async h=>{await a(h),u(!0)};let c=e.abort.bind(e);e.abort=h=>{c(h),u(!0)};let l=e.sink.bind(e);e.sink=async h=>{try{await l(h)}catch(f){f.type!=="aborted"&&o.error("%s error in sink",t,f)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let h of e.source)h instanceof Uint8Array?yield h:yield*h}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(h){h===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var wp=class extends ye{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new st,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new g("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>Q(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function p9(r){return new wp(r)}var JI=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Q)}catch{return!1}return!0},Ep={maxInboundStopStreams:hp,maxOutboundStopStreams:hp,stopTimeout:3e4},G1=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??Ep.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Ep.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Ep.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new H1(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new q1(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(fp,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(fp),this.started=!1}[on]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw this.log.error(p,e),new g(p,pp)}let n=e.toString().split("/p2p-circuit"),o=Q(n[0]),s=Q(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(p),new g(p,pp)}let c=ge(i),l=ge(a),d=!1,h=this.connectionManager.getConnections(c)[0];h==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),h=await this.connectionManager.openConnection(c,t),d=!0);let f;try{return f=await h.newStream(_s),await this.connectV2({stream:f,connection:h,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(p){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,p),f?.abort(p),d&&await h.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=Je(e),l=c.pb(Oo);await l.write({type:Oo.Type.CONNECT,peer:{id:n.toBytes(),addrs:[Q(o).bytes]}});let d=await l.read();if(d.status!==St.OK)throw new g(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,d9);let u=yp({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return p9({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>jr.matches(t))}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",d)}let n=AbortSignal.timeout(this.stopTimeout),o=Je(t).pb(hn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:hn.Type.STATUS,status:St.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==hn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:hn.Type.STATUS,status:St.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!JI(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:hn.Type.STATUS,status:St.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=je(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:hn.Type.STATUS,status:St.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:hn.Type.STATUS,status:St.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=yp({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function bp(r={}){return e=>new G1(e,r)}var m9=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},eD=new WeakMap;function tD({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(m9());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(m9())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((h,f)=>{i=()=>{d(),h(n)},a=f,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),eD.set(u,()=>{c(s),s=null,i()}),u}}var rD=tD(),W1=rD;var Jr;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(Jr||(Jr={}));function xp(r,e){return ws.matches(r)||e.transportForMultiaddr(r)==null?!1:Zu.matches(r)?!0:m7.matches(r)?Gt(r.toOptions().host)===!1:!1}var g9=1024*4,y9=100,z1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},Y1=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??z1.timeout,this.retries=t.retries??z1.retries,this.maxInboundStreams=t.maxInboundStreams??z1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??z1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(lc,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(lc,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(lc),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([lc],{signal:o.signal,runOnTransientConnection:!0});let s=Je(t,{maxDataLength:g9}).pb(Jr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Jr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==Jr.Type.CONNECT)throw this.log("A sent wrong message type"),new g("DCUtR message type was incorrect",Go);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Jr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await W1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:y9});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,d.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>xp(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=Je(e,{maxDataLength:g9}).pb(Jr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Jr.Type.CONNECT)throw this.log("B sent wrong message type"),new g("DCUtR message type was incorrect",Go);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new g("DCUtR connect message had no dialable multiaddrs",Go);if(this.log("A sending connect"),await o.write({type:Jr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Jr.Type.SYNC)throw new g("DCUtR message type was incorrect",Go);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:y9,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=Q(n);if(!xp(o,this.transportManager))continue;t.push(o)}catch{}return t}};var lc="/libp2p/dcutr";function w9(r={}){return e=>new Y1(e,r)}var E9="0.1.0",b9="id",x9="id/push",v9="1.0.0",S9="1.0.0";var A9=Ye(_9(),1),vp=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,X1=(0,A9.default)(),Q1=vp&&!X1,I9=X1&&!vp,D9=X1&&vp,T9=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!X1,j1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,aee=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",k9=typeof navigator<"u"&&navigator.product==="ReactNative";var As;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(As||(As={}));var Sp=1024*8,Dr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},Z1=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??Dr.protocolPrefix}/${b9}/${v9}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Dr.protocolPrefix}/${x9}/${S9}`,this.timeout=t.timeout??Dr.timeout,this.maxInboundStreams=t.maxInboundStreams??Dr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Dr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Dr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Dr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Dr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Dr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Dr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Dr.protocolPrefix}/${E9}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Dr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(T9||I9?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(Q1||j1||D9||k9)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:M(this.host.agentVersion),ProtocolVersion:M(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(d=>d.decapsulateCode(ne("p2p").code)),n=new lr({peerId:this.peerId,multiaddrs:t}),o=await Zr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=O(i.metadata.get("AgentVersion")??M(this.host.agentVersion)),c=O(i.metadata.get("ProtocolVersion")??M(this.host.protocolVersion)),l=e.map(async d=>{let u,h=AbortSignal.timeout(this.timeout);j(1/0,h);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:h,runOnTransientConnection:this.runOnTransientConnection}),await Je(u,{maxDataLength:this.maxIdentifyMessageSize??Sp}).pb(As).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:h}),await u.close({signal:h})}catch(f){this.log.error("could not push identify update to peer",f),u?.abort(f)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==h4)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);j(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Je(n,{maxDataLength:this.maxIdentifyMessageSize??Sp}).pb(As).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new g("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await ft(o);if(!e.remotePeer.equals(a))throw new g("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new g("identified peer is our own peer id?","ERR_INVALID_PEER");let c=oD(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);j(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(ne("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new lr({peerId:this.peerId,multiaddrs:a});c=(await Zr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;p7.matches(t.remoteAddr)||(l=void 0),await Je(n).pb(As).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await Je(n,{maxDataLength:this.maxIdentifyMessageSize??Sp}).pb(As).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new g("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:Q(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await ft(t.publicKey)).equals(e.remotePeer)))throw new g("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await Zr.openAndCertify(i,lr.DOMAIN),c=lr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new g("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new g("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let d=await Zr.createFromProtobuf(l.peerRecordEnvelope),u=lr.createFromProtobuf(d.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=M(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=M(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>Q(i)),observedAddr:t.observedAddr==null?void 0:Q(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function oD(r){if(r!=null&&r.length>0)try{return Q(r)}catch{}}function C9(r={}){return e=>new Z1(e,r)}var N9="/ipfs/kad/1.0.0",P9="/dht/record",Rp="/dht/provider";var uc;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={key:Ae(0),value:Ae(0),timeReceived:""},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 5:{s.timeReceived=t.string();break}default:{t.skipType(a&7);break}}}return s})),e),r.encode=t=>te(t,r.codec()),r.decode=(t,n)=>ee(t,r.codec(),n)})(uc||(uc={}));function L9(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function O9(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var Rt=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return uc.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:L9(this.timeReceived)}}static deserialize(e){let t=uc.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=O9(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var B9;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(B9||(B9={}));var be;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(be||(be={}));var J1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(J1||(J1={}));(function(r){r.codec=()=>$e(J1)})(be||(be={}));var Ki;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Ki||(Ki={}));var _p;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(_p||(_p={}));(function(r){r.codec=()=>$e(_p)})(Ki||(Ki={}));var Vi;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Ki.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Ae(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Ki.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(Vi||(Vi={}));var Tr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&J1[t.type]!==0&&(n.uint32(8),be.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Vi.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Vi.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:be.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=be.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(Vi.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Vi.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(Tr||(Tr={}));function Ap(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new wt("kad-dht:query:send-query",{detail:t})),t}function dc(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new wt("kad-dht:query:peer-response",{detail:t})),t}function ed(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new wt("kad-dht:query:final-peer",{detail:t})),t}function ur(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new wt("kad-dht:query:query-error",{detail:t})),t}function Ip(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new wt("kad-dht:query:provider",{detail:t})),t}function fc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new wt("kad-dht:query:value",{detail:t})),t}function Dp(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new wt("kad-dht:query:dial-peer",{detail:t})),t}function M9(r,e,t){if(t.length===0){let i="No records given";throw new g(i,"ERR_NO_RECORDS_RECEIVED")}let o=O(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new g(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new g(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function iD(r,e){return 0}var U9={pk:iD};async function $i(r,e){let t=e.key,o=O(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new g(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var aD=async(r,e)=>{if(!(r instanceof Uint8Array))throw new g('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new g("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(O(r.subarray(0,4))!=="/pk/")throw new g("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await Ce.digest(e);if(!Z(n,o.bytes))throw new g("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},F9={pk:aD};var cD=M("/pk/");function V9(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=Gt(n);return o==null?!0:!o})}}async function Bo(r){return(await Ce.digest(r)).digest}async function en(r){return Bo(r.toBytes())}function Mo(r){return new Pe(`${P9}/${O(r,"base32")}`,!1)}function K9(r){return ve([cD,r.toBytes()])}function $9(r){return O(r.subarray(0,4))==="/pk/"}function H9(r){return je(r.subarray(4))}function Tp(r,e){let t=new Date;return new Rt(r,e,t).serialize()}function q9(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var lD=290,uD=54,dD=55,fD=56,hD=4,pD=41;function G9(r){let e=r.stringTuples();for(let t of e)if(t[0]===lD)return!1;if(e[0][0]===uD||e[0][0]===dD||e[0][0]===fD)return!0;if(e[0][0]===hD||e[0][0]===pD){let t=Gt(`${e[0][1]}`);return t==null||!t}return!1}var td=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Mo(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=Rt.deserialize(n);return await $i(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=Tp(e,n);for(let{value:i,from:a}of t){if(Z(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=Mo(e);this.log(`Storing corrected record for key ${d.toString()}`),await this.components.datastore.put(d,s.subarray())}catch(d){this.log.error("Failed error correcting self",d)}continue}let c=!1,l={type:be.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&Z(d.record.value,Rt.deserialize(s).value)&&(c=!0),yield d;c||(yield ur({from:a,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=Tp(e,t),s=Mo(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Xe(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>pr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:be.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let d of this.network.sendRequest(a.peer.id,l,n))c.push(d),d.name==="PEER_RESPONSE"&&(d.record!=null&&Z(d.record.value,Rt.deserialize(o).value)||c.push(ur({from:a.peer.id,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Wn(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=M9(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new g("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield fc({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield fc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function W9(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function hc(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:je(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>Q(e))}}var rd=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:be.ADD_PROVIDER,key:e.multihash.bytes,providers:[W9({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(ur({from:a.peer.id,error:l},n))}return c};yield*Xe(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>pr(a,c=>i(c)),a=>Wn(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,s=e.multihash.bytes,i=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let d=[];for(let u of a.slice(0,n))try{let h=await this.components.peerStore.get(u);d.push({id:u,multiaddrs:h.addresses.map(({multiaddr:f})=>f)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",u)}if(yield dc({from:this.components.peerId,messageType:be.GET_PROVIDERS,providers:d},t),yield Ip({from:this.components.peerId,providers:d},t),o+=d.length,o>=n)return}let c=async function*({peer:d,signal:u}){let h={type:be.GET_PROVIDERS,key:s};yield*i.network.sendRequest(d,h,{...t,signal:u})},l=new ht(a);for await(let d of this.queryManager.run(s,c,t))if(yield d,d.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",d.providers.length,e,d.closer.length);let u=[];for(let h of d.providers)l.has(h.id)||(l.add(h.id),u.push(h));if(u.length>0&&(yield Ip({from:d.from,providers:u},t),o+=u.length,o>=n))return}}};var nd=class extends ye{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new bn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Dp({peer:e},n),yield Ap({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield dc({from:e,messageType:c.type,closer:c.closer.map(hc),providers:c.providers.map(hc),record:c.record==null?void 0:Rt.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield ur({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new bn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield Dp({peer:e},n),yield Ap({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield dc({from:e,messageType:o},n)}catch(i){yield ur({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=Je(e);await o.write(t,Tr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=Je(e);await o.write(t,Tr,n);let s=await o.read(Tr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:hc(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:hc(i)})}),s}};var od=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await en(e),n={peerId:e,distance:Gn(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>A1(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(en)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Gn(this.originDhtKey,o);if(A1(s,n)<0)return!0}return!1}};var sd=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:be.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=K9(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await ft(Bu.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new g("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new g("public key missing","ERR_PUBLIC_KEY_MISSING");yield fc({from:e,value:s.publicKey},t)}throw new g(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield ed({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:be.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let d=l.closer.find(u=>u.id.equals(e));d!=null&&(yield ed({from:l.from,peer:d},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield ur({from:this.peerId,error:new g("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Bo(e),o=this.routingTable.closestPeers(n),s=this,i=new od(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",O(e,"base32"),c);let d={type:be.FIND_NODE,key:e};yield*s.network.sendRequest(c,d,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield ed({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:d})=>d)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield ur({from:o.from,error:new g(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new g("invalid record received","ERR_INVALID_RECORD");await $i(this.validators,new Rt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Bo(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p",e,t),s}};var z9=Ye(Nh(),1);var id=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,z9.default)(n??256),this.syncQueue=new Ht({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:Rp});for await(let a of i)try{let{cid:c,peerId:l}=Y9(a.key),d=X9(a.value).getTime(),u=Date.now(),h=u-d,f=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,h,this.provideValidity,f?"(expired)":""),f){n++,s.delete(a.key);let p=o.get(c)??new Set;p.add(l),o.set(c,p)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=pc(a),d=this.cache.get(l);if(d!=null){for(let u of c)d.delete(u);d.size===0?this.cache.remove(l):this.cache.set(l,d)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=pc(e),n=this.cache.get(t);return n==null&&(n=await ED(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=pc(e);this.cache.set(s,n),await wD(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ge(n))),{throwOnTimeout:!0})}};function pc(r){let e=typeof r=="string"?r:O(r.multihash.bytes,"base32");return`${Rp}/${e}`}async function wD(r,e,t,n){let o=[pc(e),"/",t.toString()].join(""),s=new Pe(o),i=Ke(n.getTime());await r.put(s,i)}function Y9(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function ED(r,e){let t=new Map,n=r.query({prefix:pc(e)});for await(let o of n){let{peerId:s}=Y9(o.key);t.set(s,X9(o.value))}return t}function X9(r){return new Date(Ot(r))}async function*Q9(r,e,t,n){let o=dt({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new g("Query aborted","ERR_QUERY_ABORTED"))},d=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",d);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",d)}}var bD=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*j9(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:d,log:u,peersSeen:h}=r,f=new Ht({concurrency:i}),p=await Bo(e);function m(y,w){if(y==null)return;h.add(y);let b=BigInt("0x"+O(Gn(w,p),"base16"));f.add(async()=>{let E=[o];d!=null&&E.push(AbortSignal.timeout(d));let x=Me(E);j(1/0,x);try{for await(let v of s({key:e,peer:y,signal:x,pathIndex:a,numPaths:c})){if(x.aborted)return;if(v.name==="PEER_RESPONSE")for(let I of v.closer){if(h.has(I.id)){u("already seen %p in query",I.id);continue}if(n.equals(I.id)){u("not querying ourselves");continue}let R=await en(I.id);if(BigInt("0x"+O(Gn(R,p),"base16"))>b){u("skipping %p as they are not closer to %b than %p",I.id,e,y);continue}u("querying closer peer %p",I.id),m(I.id,R)}f.emit("completed",v)}}catch(v){if(!o.aborted)return ur({from:y,error:v},r)}finally{x.clear()}},{priority:bD-b}).catch(E=>{u.error(E)})}m(t,await en(t)),yield*Q9(f,o,l,u)}var ad=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,j(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,j(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);j(1/0,u),n={...n,signal:u}}let s=new AbortController,i=Me([this.shutDownController.signal,s.signal,n.signal]);j(1/0,i,s.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+O(e,"base58btc")),c=Date.now(),l=new ye,d=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await Lt(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Bo(e),h=this.routingTable.closestPeers(u),f=h.slice(0,Math.min(this.disjointPaths,h.length));if(h.length===0){a.error("Running query with no peers");return}let p=new ht,m=f.map((y,w)=>j9({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:f.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let y of Bt(...m))y.name==="QUERY_ERROR"&&a.error("query error",y.error),yield y;d=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{d||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new wt("cleanup")),a("query:done in %dms",Date.now()-c)}}};function xD(r){return r[Symbol.asyncIterator]!=null}function vD(r){if(xD(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var cd=vD;var SD=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 RD(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!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}=SD(r),u=(...f)=>{let p=t.multiArgs?f:f[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),s(c)))},h=f=>{n(),i(f)};n=()=>{for(let f of a)d(f,u);for(let f of t.rejectionEvents)d(f,h)};for(let f of a)l(f,u);for(let f of t.rejectionEvents)l(f,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Br(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function mc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=RD(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var ld=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=J(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=Me([this.controller.signal,e]);j(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await mc(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await Xe(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),s=>eo(s,this.count),async s=>cd(s));this.log("self-query found %d peers in %dms",o,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function J9(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function Np(){return{contacts:[],dontSplit:!1,left:null,right:null}}function gc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var ud=class r extends ye{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,gc("option.localNodeId as parameter 1",this.localNodeId),this.root=Np()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){gc("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(gc("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){gc("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(J9(e.contacts[n].id,t))return n;return-1}remove(e){gc("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=Np(),e.right=Np();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!J9(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var _D="kad-close",AD=50,ey=20,ID=1e4,DD=10,dd=class extends ye{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??ey,this.pingTimeout=o??ID,this.pingConcurrency=i??DD,this.running=!1,this.protocol=a,this.tagName=c??_D,this.tagValue=l??AD,this.pingQueue=new fr({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",d=>{this.log.error("error pinging peer",d.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new ud({localNodeId:await en(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new ht,n=q9(()=>{let o=new ht(e.closest(e.localNodeId,ey).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=Je(c);await u.write({type:be.PING},Tr,l);let h=await u.read(Tr,l);if(await u.unwrap().close(),h.type!==be.PING)throw new g(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await en(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await en(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await en(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var ty=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var fd=15,hd=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async start(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await cd(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>fd&&(e=fd);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=Nt(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return je(o)}async _makePeerId(e,t,n){if(n>fd)throw new Error(`Cannot generate peer ID for common prefix length greater than ${fd}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=ty[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,Ce.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Gn(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var pd=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new g("Missing key","ERR_MISSING_KEY");let n;try{n=le.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>Q(s).toString())),await this.providers.addProvider(n,je(o.id))}))}};var md=class{peerRouting;peerInfoMapper;peerId;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e),o={type:be.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).filter(({id:s})=>!s.equals(this.peerId)).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var gd=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new g("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=le.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:be.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var yd=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new g("Invalid key","ERR_INVALID_KEY");let o={type:be.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if($9(n)){this.log("is public key");let a=H9(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new g("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new Rt(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Mo(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=Rt.deserialize(n);if(o==null)throw new g("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var wd=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Ed=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new g(o,"ERR_EMPTY_RECORD")}try{let o=Rt.deserialize(t.record);await $i(this.validators,o),o.timeReceived=new Date;let s=Mo(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var bd=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[be.GET_VALUE.toString()]:new yd(e,{peerRouting:o,logPrefix:i}),[be.PUT_VALUE.toString()]:new Ed(e,{validators:s,logPrefix:i}),[be.FIND_NODE.toString()]:new md(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[be.ADD_PROVIDER.toString()]:new pd(e,{providers:n,logPrefix:i}),[be.GET_PROVIDERS.toString()]:new gd(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[be.PING.toString()]:new wd(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await Xe(t,i=>Kt(i),async function*(i){for await(let a of i){let c=Tr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield Tr.encode(l))}},i=>Vt(i),t)}).catch(t=>{this.log.error(t)})}};var xd=class extends ye{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new wt("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var Pp=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await hr(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await hr(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new g("Not found","ERR_NOT_FOUND")}},Lp=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},TD=32,kD=64,vd=class extends ye{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:d,pingConcurrency:u,maxInboundStreams:h,maxOutboundStreams:f,providers:p}=t,m=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(m),this.protocol=c??N9,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=h??TD,this.maxOutboundStreams=f??kD,this.peerInfoMapper=t.peerInfoMapper??V9,this.routingTable=new dd(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:m}),this.providers=new id(e,p??{}),this.validators={...F9,...s},this.selectors={...U9,...i},this.network=new nd(e,{protocol:this.protocol,logPrefix:m});let y=J();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new ad(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:m,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new sd(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:m}),this.contentFetching=new td(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:m}),this.contentRouting=new rd(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:m}),this.routingTableRefresh=new hd(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:m}),this.rpc=new bd(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:m,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new xd(e,{protocol:this.protocol,logPrefix:m}),this.querySelf=new ld(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:m,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.network.addEventListener("peer",w=>{let b=w.detail;this.onPeerConnect(b).catch(E=>{this.log.error("could not add %p to routing table",b.id,E)}),this.dispatchEvent(new wt("peer",{detail:b}))}),this.topologyListener.addEventListener("peer",w=>{let b=w.detail;Promise.resolve().then(async()=>{let E=await this.components.peerStore.get(b),x={id:b,multiaddrs:E.addresses.map(({multiaddr:v})=>v),protocols:E.protocols};await this.onPeerConnect(x)}).catch(E=>{this.log.error("could not add %p to routing table",b,E)})}),this.dhtPeerRouting=new Lp(this),this.dhtContentRouting=new Pp(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",w=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let b=w.detail.peer.addresses.some(({multiaddr:x})=>G9(x)),E=this.getMode();b&&E==="client"?await this.setMode("server"):E==="server"&&!b&&await this.setMode("client")}).catch(b=>{this.log.error("error setting dht server mode",b)})})}get[rn](){return this.dhtContentRouting}get[nn](){return this.dhtPeerRouting}get[qo](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),this.querySelf.start(),await Promise.all([this.providers.start(),this.queryManager.start(),this.network.start(),this.routingTable.start(),this.topologyListener.start(),this.routingTableRefresh.start()])}async stop(){this.running=!1,this.querySelf.stop(),await Promise.all([this.providers.stop(),this.queryManager.stop(),this.network.stop(),this.routingTable.stop(),this.routingTableRefresh.stop(),this.topologyListener.stop()])}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var ry;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(ry||(ry={}));function ny(r){return e=>new vd(e,r)}var fy=Ye(dy(),1),Gi=fy.default;var vy=Ye(xy(),1);var xe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(xe||(xe={}));var YD="/pkcs8/",Sy="/info/",Is=new WeakMap,Ds={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},Bp={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function zn(r){return r==null||typeof r!="string"?!1:r===(0,vy.default)(r.trim())&&r.length>0}async function Oe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function pn(r){return new Pe(YD+r)}function Uo(r){return new Pe(Sy+r)}var _d=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Gi(Bp,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<Ds.minKeyLength)throw new Error(`dek.keyLength must be least ${Ds.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Ds.minSaltLength)throw new Error(`dek.saltLength must be least ${Ds.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Ds.minIterationCount)throw new Error(`dek.iterationCount must be least ${Ds.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?Wa(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},Bp),t=Math.ceil(Ds.minSaltLength/3)*3;return e.dek.salt=O(Nt(t),"base64"),e}static get options(){return Bp}async createKey(e,t,n=2048){if(!zn(e)||e==="self")throw await Oe(),new g("Invalid key name",xe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Oe(),new g("Invalid key type",xe.ERR_INVALID_KEY_TYPE);let o=pn(e);if(await this.components.datastore.has(o))throw await Oe(),new g("Key name already exists",xe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Oe(),new g("Invalid RSA key size",xe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await qa(t,n),c=await a.id(),l=Is.get(this);if(l==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let h=this.components.datastore.batch();h.put(o,M(u)),h.put(Uo(e),M(JSON.stringify(i))),await h.commit()}catch(a){throw await Oe(),a}return i}async listKeys(){let e={prefix:Sy},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(O(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new g(`Key with id '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Oe(),t}}async findKeyByName(e){if(!zn(e))throw await Oe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=Uo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(O(n))}catch(n){throw await Oe(),this.log.error(n),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!zn(e)||e==="self")throw await Oe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=pn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Uo(e)),await o.commit(),n}async renameKey(e,t){if(!zn(e)||e==="self")throw await Oe(),new g(`Invalid old key name '${e}'`,xe.ERR_OLD_KEY_NAME_INVALID);if(!zn(t)||t==="self")throw await Oe(),new g(`Invalid new key name '${t}'`,xe.ERR_NEW_KEY_NAME_INVALID);let n=pn(e),o=pn(t),s=Uo(e),i=Uo(t);if(await this.components.datastore.has(o))throw await Oe(),new g(`Key '${t}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(O(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,M(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Oe(),c}}async exportKey(e,t){if(!zn(e))throw await Oe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Oe(),new g("Password is required",xe.ERR_PASSWORD_REQUIRED);let n=pn(e);try{let o=await this.components.datastore.get(n),s=O(o),i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await Si(s,a)).export(t)}catch(o){throw await Oe(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await Si(n,t);return ft(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!zn(e)||e==="self")throw await Oe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Oe(),new g("PEM encoded key is required",xe.ERR_PEM_REQUIRED);let o=pn(e);if(await this.components.datastore.has(o))throw await Oe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await Si(t,n)}catch{throw await Oe(),new g("Cannot read the key, most likely the password is wrong",xe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=Is.get(this);if(d==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let u=d.dek;t=await i.export(u)}catch(d){throw await Oe(),d}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,M(t)),l.put(Uo(e),M(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!zn(e))throw new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw new g("PeerId is required",xe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new g("PeerId.privKey is required",xe.ERR_MISSING_PRIVATE_KEY);let n=await _r(t.privateKey),o=pn(e);if(await this.components.datastore.has(o))throw await Oe(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},d=this.components.datastore.batch();return d.put(o,M(c)),d.put(Uo(e),M(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Oe(),n}}async getPrivateKey(e){if(!zn(e))throw await Oe(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);try{let t=pn(e),n=await this.components.datastore.get(t);return O(n)}catch(t){throw await Oe(),this.log.error(t),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Oe(),new g(`Invalid old pass type '${typeof e}'`,xe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Oe(),new g(`Invalid new pass type '${typeof t}'`,xe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Oe(),new g(`Invalid pass length ${t.length}`,xe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Is.get(this);if(n==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?Wa(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(pn(a.name)),l=O(c),d=await Si(l,o),u=s.toString(),h=await d.export(u),f=this.components.datastore.batch(),p={name:a.name,id:a.id};f.put(pn(a.name),M(h)),f.put(Uo(a.name),M(JSON.stringify(p))),await f.commit()}this.log("keychain reconstructed")}};function Ad(r={}){return e=>new _d(e,r)}var Wi=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Mp}async 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 g("Rate limit exceeded","ERR_RATE_LIMIT_EXCEEDED",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await W1(a)}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)}},Mp=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}};var Ee;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(Ee||(Ee={}));var yc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Up=Object.freeze({NEW_STREAM:Ee.NEW_STREAM,MESSAGE:Ee.MESSAGE_INITIATOR,CLOSE:Ee.CLOSE_INITIATOR,RESET:Ee.RESET_INITIATOR}),Ry=Object.freeze({MESSAGE:Ee.MESSAGE_RECEIVER,CLOSE:Ee.CLOSE_RECEIVER,RESET:Ee.RESET_RECEIVER});var Fp=1<<20,XD=4<<20,Id=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=Fp,t=XD){this._buffer=new ce,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===Ee.NEW_STREAM||o===Ee.MESSAGE_INITIATOR||o===Ee.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=Ay(e),{value:o,offset:s}=Ay(e,n),i=t&7;if(yc[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},QD=128,_y=127;function Ay(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&_y)<<n:(s&_y)*Math.pow(2,n),n+=7}while(s>=QD);return e=o-e,{value:t,offset:e}}var Vp=10*1024,Kp=class{_pool;_poolOffset;constructor(){this._pool=We(Vp),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;Ke(e.id<<3|e.type,n,o),o+=Re(e.id<<3|e.type),(e.type===Ee.NEW_STREAM||e.type===Ee.MESSAGE_INITIATOR||e.type===Ee.MESSAGE_RECEIVER)&&e.data!=null?(Ke(e.data.length,n,o),o+=Re(e.data.length)):(Ke(0,n,o),o+=Re(0));let s=n.subarray(this._poolOffset,o);Vp-o<100?(this._pool=We(Vp),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===Ee.NEW_STREAM||e.type===Ee.MESSAGE_INITIATOR||e.type===Ee.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},jD=new Kp;async function*Iy(r){for await(let e of r){let t=new ce;jD.write(e,t),yield t}}var $p=class extends No{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Up:Ry,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:Up.NEW_STREAM,data:new ce(M(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function Dy(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=Fp}=r;return new $p({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var ZD=1024,JD=1024,eT=1024*1024*4,tT=5,rT=500;function Ty(r){let e={...r,type:`${yc[r.type]} (${r.type})`};return r.type===Ee.NEW_STREAM&&(e.data=O(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===Ee.MESSAGE_INITIATOR||r.type===Ee.MESSAGE_RECEIVER)&&(e.data=O(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var Dd=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??rT,this.sink=this._createSink(),this._source=dt({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=Xe(this._source,n=>Iy(n)),this.closeController=new AbortController,this.rateLimiter=new Wi({points:t.disconnectThreshold??tT,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??JD))throw new g("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=Dy({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,Ty(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{L1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new Id(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",Ty(e)),e.type===Ee.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??ZD)){this.log("too many inbound streams open"),this._source.push({id:t,type:Ee.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:O(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,yc[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??eT;try{switch(n){case Ee.MESSAGE_INITIATOR:case Ee.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===Ee.MESSAGE_INITIATOR?Ee.RESET_RECEIVER:Ee.RESET_INITIATOR}),new g("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case Ee.CLOSE_INITIATOR:case Ee.CLOSE_RECEIVER:s.remoteCloseWrite();break;case Ee.RESET_INITIATOR:case Ee.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var Hp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new Dd(this.components,{...e,...this._init})}};function ky(r={}){return e=>new Hp(e,r)}var Cy="1.0.0",Ny="ping",Py="ipfs";var qp="ERR_WRONG_PING_ACK";var Td=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??Py}/${Ny}/${Cy}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();Xe(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=Nt(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new g("ping timeout",yn))},t.signal?.addEventListener("abort",a,{once:!0});let c=await Xe([o],i,async d=>Es(d)),l=Date.now()-n;if(c==null)throw new g(`Did not receive a ping ack after ${l}ms`,qp);if(!Z(o,c.subarray()))throw new g(`Received wrong ping ack after ${l}ms`,qp);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function Ly(r={}){return e=>new Td(e,r)}var dr;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(dr||(dr={}));var Fo=class extends g{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var Gp=class extends Fo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,dr.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function jp(r,e){return new Gp(r,e)}var Wp=class extends Fo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,dr.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function kd(r){return new Wp(r)}var zp=class extends Fo{constructor(e){super(`There was a problem with a provided argument: ${e}`,dr.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function wc(r){return new zp(r)}var Yp=class extends Fo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,dr.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function Zp(r,e){return new Yp(r,e)}var Xp=class extends Fo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,dr.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function Oy(r){return new Xp(r)}var Qp=class extends Fo{constructor(e){super(`unsupported hash algorithm: ${e}`,dr.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function By(r){return new Qp(r)}var My=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},aT=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var cT=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var lT=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var uT=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var dT=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var fT=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,hT=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,Uy=3,pT=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",fT]],Fy=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Ky(r){return r?Vy(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new dT:typeof navigator<"u"?Vy(navigator.userAgent):yT()}function mT(r){return r!==""&&pT.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function Vy(r){var e=mT(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new uT;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<Uy&&(o=My(My([],o,!0),wT(Uy-o.length),!0)):o=[];var s=o.join("."),i=gT(r),a=hT.exec(r);return a&&a[1]?new lT(t,s,i,a[1]):new aT(t,s,i)}function gT(r){for(var e=0,t=Fy.length;e<t;e++){var n=Fy[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function yT(){var r=typeof process<"u"&&process.version;return r?new cT(process.version.slice(1)):null}function wT(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var $y=Ky(),Ec=$y!=null&&$y.name==="firefox",Cd=async function*(){},Nd=async r=>{},ET=30*1e3;function Hy(r,e,t=ET,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=J(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await Br(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var Ts=class{log;peerConnection;remoteAddr;timeline;metrics;source=Cd();sink=Nd;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var Yt;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(Yt||(Yt={}));var bT=16*1024*1024,xT=30*1e3,vT=5,ST=2,RT=16*1024,_T=5e3,AT=5e3,Jp=class extends No{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await Br(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=dt(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??xT,this.maxBufferedAmount=e.maxBufferedAmount??bT,this.maxMessageSize=(e.maxMessageSize??RT)-vT-ST,this.receiveFinAck=J(),this.finAckTimeout=e.closeTimeout??_T,this.openTimeout=e.openTimeout??AT,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new g("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of Kt(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new ce(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await mc(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof so?new g(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new g(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await mc(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=Yt.encode({message:n}),s=Vt.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(Yt.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(Yt.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await Lt(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(Yt.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=Yt.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===Yt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Yt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===Yt.Flag.RESET&&this.reset(),t.flag===Yt.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===Yt.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=Yt.encode({flag:e}),n=Vt.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function zi(r){let{channel:e,direction:t}=r;return new Jp({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var qy="/webrtc",ks=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??qy,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=zi({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new e3(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},e3=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??qy,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=zi({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),Hy(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=Cd();sink=Nd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=zi({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Yi=globalThis.RTCPeerConnection,Pd=globalThis.RTCSessionDescription,Gy=globalThis.RTCIceCandidate;var Xt;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>$e(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(Xt||(Xt={}));var Ld=async(r,e,t)=>{try{let n=J();for(DT(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==Xt.Type.ICE_CANDIDATE)throw new g("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new Gy(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function IT(r){return Ec?r.iceConnectionState:r.connectionState}function DT(r,e){r[Ec?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(IT(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new g("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function Wy({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=zy(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new g("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(ge(c)),d,u=!1;l.length===0?(d=await s.dial(a,{signal:e}),u=!0):d=l[0];try{let h=await d.newStream(Od,{signal:e,runOnTransientConnection:!0}),f=Je(h).pb(Xt);try{let p=r.createDataChannel("init");r.onicecandidate=({candidate:b})=>{let E=JSON.stringify(b?.toJSON()??null);i.trace("initiator sending ICE candidate %s",E),f.write({type:Xt.Type.ICE_CANDIDATE,data:E},{signal:e}).catch(x=>{i.error("error sending ICE candidate",x)})},r.onicecandidateerror=b=>{i.error("initiator ICE candidate error",b)};let m=await r.createOffer().catch(b=>{throw i.error("could not execute createOffer",b),new g("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",m.sdp),await f.write({type:Xt.Type.SDP_OFFER,data:m.sdp},{signal:e}),await r.setLocalDescription(m).catch(b=>{throw i.error("could not execute setLocalDescription",b),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await f.read({signal:e});if(y.type!==Xt.Type.SDP_ANSWER)throw new g("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",y.data);let w=new Pd({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(b=>{throw i.error("could not execute setRemoteDescription",b),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await Ld(r,f,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),p.close(),i.trace("initiator closing signalling stream"),await f.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(p){throw r.close(),h.abort(p),p}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(h){d.abort(h)}}}var Bd=class extends ye{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>jr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function Yy({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=Je(e).pb(Xt);try{r.onicecandidate=({candidate:d})=>{let u=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:Xt.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(h=>{o.error("error sending ICE candidate",h)})};let a=await s.read({signal:t});if(a.type!==Xt.Type.SDP_OFFER)throw new g(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new Pd({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(d=>{throw o.error("could not execute setRemoteDescription",d),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(d=>{throw o.error("could not execute createAnswer",d),new g("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:Xt.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(d=>{throw o.error("could not execute setLocalDescription",d),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await Ld(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=Q(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var TT="/webrtc",kT="/p2p-circuit",Od="/webrtc-signaling/0.0.1",CT=30*1e3,Md=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,j(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(Od,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(Od),this._started=!1}createListener(e){return new Bd(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[on]=!0;filter(e){return e.filter(x7.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Yi(this.init.rtcConfiguration),o=new ks(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await Wy({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new Ts(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??CT),o=new Yi(this.init.rtcConfiguration),s=new ks(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await Yy({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new Ts(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function zy(r){let e=r.toString().split(TT+"/");if(e.length!==2)throw new g("webrtc protocol was not present in multiaddr",dr.ERR_INVALID_MULTIADDR);if(!e[0].includes(kT))throw new g("p2p-circuit protocol was not present in multiaddr",dr.ERR_INVALID_MULTIADDR);let t=Q(e[0]),o=Q("/"+e[1]).getPeerId();if(o==null)throw new g("destination peer id was missing",dr.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new g("invalid multiaddr",dr.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ge(o)}}var RE=Ye(k3(),1);var yE=Ye(k3(),1);var C3=Object.values(gr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function wE(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:UC(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw Zp("","no fingerprint on local certificate");return n}var MC=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function UC(r){return r.match(MC)?.groups?.fingerprint}function FC(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Xd(r){let t=r.stringTuples().filter(n=>n[0]===xE).map(n=>n[1])[0];if(t===void 0||t==="")throw kd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function N3(r){let e=C3.decode(r);return yE.decode(e)}function VC(r){let e=N3(Xd(r)),t=P3(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw Zp(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function P3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw By(r)}}function KC(r,e){let{host:t,port:n}=r.toOptions(),o=FC(r),[s]=VC(r);return`v=0
33
+ `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),$A=new RegExp(`(?:^${Qr}$)|(?:^${g1}$)`),HA=new RegExp(`^${Qr}$`),qA=new RegExp(`^${g1}$`),E2=r=>r&&r.exact?$A:new RegExp(`(?:${ko(r)}${Qr}${ko(r)})|(?:${ko(r)}${g1}${ko(r)})`,"g");E2.v4=r=>r&&r.exact?HA:new RegExp(`${ko(r)}${Qr}${ko(r)}`,"g");E2.v6=r=>r&&r.exact?qA:new RegExp(`${ko(r)}${g1}${ko(r)}`,"g");var b2=E2;function x2(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function Q7(){return!1}var{toString:GA}=Object.prototype;function v2(r){return GA.call(r)==="[object RegExp]"}var j7={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function R2(r,e={}){if(!v2(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(j7).map(o=>(typeof e[o]=="boolean"?e[o]:r[o])?j7[o]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function S2(r,e,{timeout:t}={}){try{return x2(()=>R2(r).test(e),{timeout:t})()}catch(n){if(Q7(n))return!1;throw n}}var WA=15,zA=45,Z7={timeout:400};function _2(r){return r.length>zA?!1:S2(b2.v6({exact:!0}),r,Z7)}function J7(r){return r.length>WA?!1:S2(b2.v4({exact:!0}),r,Z7)}var eg={http:"80",https:"443",ws:"80",wss:"443"},YA=["http","https","ws","wss"];function tg(r,e){e=e??{};let t=e.defaultDnsType??"dns4",{scheme:n,hostname:o,port:s}=XA(r),a="/"+[QA(o,t),jA(s,n),ZA(n)].filter(c=>!!c).reduce((c,l)=>c.concat(l),[]).join("/");return j(a)}function XA(r){let[e]=r.split(":");YA.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:o}=new URL(r);if(o==null||o===""){let s=JA(e);s!=null&&(o=s),s==null&&t==="http:"&&(o="80")}return{scheme:e,hostname:n,port:o}}function QA(r,e){if(!(r==null||r==="")){if(J7(r))return["ip4",r];if(_2(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(_2(t))return["ip6",t]}return[e,r]}}function jA(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function ZA(r){if(r.match(/^tcp$|^udp$/)==null)return[r]}function JA(r){if(!(r==null||r===""||eg[r]==null))return eg[r]}var eI=["https://trustless-gateway.link","https://4everland.io"],tI=2336,rI=Symbol.for("nodejs.util.inspect.custom"),A2=class{type="url";multihash;privateKey;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Ht.digest(M(this.url))}[rI](){return`PeerId(${this.url})`}[la]=!0;toString(){return this.toCID().toString()}toCID(){return le.createV1(tI,this.multihash)}toBytes(){return this.toCID().bytes}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=O(e)),e.toString()===this.toString())}};function nI(r){return r=r.toString(),{id:new A2(new URL(r)),multiaddrs:[tg(r)]}}var I2=class{gateways;constructor(e={}){this.gateways=(e.gateways??eI).map(t=>nI(t))}async*findProviders(e,t){yield*this.gateways.toSorted(()=>Math.random()>.5?1:-1).map(n=>({...n,protocols:["transport-ipfs-gateway-http"]}))}};function D2(r={}){return new I2(r)}var T2=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(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)}};function k2(r){return new T2(r)}var rg=Xe(Wo(),1);function y1(r){return r=r??new Error("Not Found"),(0,rg.default)(r,"ERR_NOT_FOUND")}var ng="SHARDING";function sI(r){return r[Symbol.asyncIterator]!=null}function iI(r){if(sI(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 tc=iI;function aI(r){return r[Symbol.asyncIterator]!=null}function cI(r,e){return aI(r)?async function*(){yield*(await tc(r)).sort(e)}():function*(){yield*tc(r).sort(e)}()}var w1=cI;var Wn=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 mr(this.putMany(e,n)),e=[],await mr(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=Xr(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Xr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>w1(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Xr(n,()=>o++>=s)}return e.limit!=null&&(n=to(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Xr(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Xr(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>w1(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Xr(n,()=>s++>=o)}return e.limit!=null&&(n=to(n,e.limit)),n}};var bs=class extends Wn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(e.toString(),t),e}get(e){let t=this.data.get(e.toString());if(t==null)throw y1();return t}has(e){return this.data.has(e.toString())}delete(e){this.data.delete(e.toString())}*_all(){for(let[e,t]of this.data.entries())yield{key:new Le(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Le(e)}};var kY=new Le(ng);var $Y=rr("datastore:core:tiered");var E1=class extends Fu{libp2p;constructor(e){super({...e,components:{libp2p:e.libp2p}}),this.libp2p=e.libp2p}async start(){await super.start(),await this.libp2p.start()}async stop(){await super.stop(),await this.libp2p.stop()}};var C2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=J(),this.haveNext=J()}[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=J(),e}async throw(e){return this.ended=!0,e!=null&&this.haveNext.reject(e),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),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 new Error("Cannot push value onto an ended pushable");if(this.nextResult!=null&&(await this.readNext.promise,this.nextResult!=null))throw new Error("NeedNext promise resolved but nextResult was not consumed");e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=J(),await Ue(this.readNext.promise,t?.signal,t)}};function sg(){return new C2}var b1=class extends Error{code;constructor(e,t){super(e),this.code=t}},N2=class extends b1{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function ig(r,e){let t=sg();r.sink(t).catch(async i=>{await t.end(i)}),r.sink=async i=>{for await(let a of i)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let o=new ce;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new N2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:h}=await Promise.race([n.next(),l]);return u===!0?new ce:h}for(;o.byteLength<i;){let{value:u,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new b1("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(u)}let d=o.sublist(0,i);return o.consume(i),d}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(i,a)=>{a?.signal?.throwIfAborted(),i instanceof Uint8Array?await t.push(i,a):await t.push(i.subarray(),a)},unwrap:()=>{if(o.byteLength>0){let i=r.source;r.source=async function*(){e?.yieldBytes===!1?yield o:yield*o,yield*i}()}return r}}}var x1=class extends Error{code;constructor(e,t){super(e),this.code=t}};function pn(r,e={}){let t=ig(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Se(e.maxDataLength));let n=e?.lengthDecoder??Bt,o=e?.lengthEncoder??$e;return{read:async i=>{let a=-1,c=new ce;for(;;){c.append(await t.read(1,i));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new x1("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new x1("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new ce(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new ce(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function P2(){let r=J(),e=!1;return{sink:async t=>{if(e)throw new Error("already piped");e=!0,r.resolve(t)},source:async function*(){yield*await r.promise}()}}function ag(){let r=P2(),e=P2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Ti=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var zn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function cg(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var lg=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),dI=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!dI)throw new Error("Non little-endian hardware is not supported");function v1(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function R1(r){if(typeof r=="string")r=v1(r);else if(cg(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var fI=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function ug(r,e){if(e!==void 0&&(typeof e!="object"||!fI(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function xs(r,e){if(!cg(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function dg(r,e){if(r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}var L2=(r,e)=>(Object.assign(e,r),e);function O2(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let o=BigInt(32),s=BigInt(4294967295),i=Number(t>>o&s),a=Number(t&s),c=n?4:0,l=n?0:4;r.setUint32(e+c,i,n),r.setUint32(e+l,a,n)}function S1(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function B2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function hI(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function ki(r,...e){if(!hI(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function M2(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 fg(r,e){ki(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var _t=(r,e)=>r[e++]&255|(r[e++]&255)<<8,U2=class{constructor(e){this.blockLen=16,this.outputLen=16,this.buffer=new Uint8Array(16),this.r=new Uint16Array(10),this.h=new Uint16Array(10),this.pad=new Uint16Array(8),this.pos=0,this.finished=!1,e=R1(e),xs(e,32);let t=_t(e,0),n=_t(e,2),o=_t(e,4),s=_t(e,6),i=_t(e,8),a=_t(e,10),c=_t(e,12),l=_t(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|a<<2)&8191,this.r[7]=(a>>>11|c<<5)&8065,this.r[8]=(c>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let d=0;d<8;d++)this.pad[d]=_t(e,16+2*d)}process(e,t,n=!1){let o=n?0:2048,{h:s,r:i}=this,a=i[0],c=i[1],l=i[2],d=i[3],u=i[4],h=i[5],f=i[6],p=i[7],m=i[8],y=i[9],w=_t(e,t+0),b=_t(e,t+2),E=_t(e,t+4),x=_t(e,t+6),v=_t(e,t+8),I=_t(e,t+10),S=_t(e,t+12),R=_t(e,t+14),T=s[0]+(w&8191),L=s[1]+((w>>>13|b<<3)&8191),N=s[2]+((b>>>10|E<<6)&8191),B=s[3]+((E>>>7|x<<9)&8191),k=s[4]+((x>>>4|v<<12)&8191),X=s[5]+(v>>>1&8191),D=s[6]+((v>>>14|I<<2)&8191),P=s[7]+((I>>>11|S<<5)&8191),$=s[8]+((S>>>8|R<<8)&8191),C=s[9]+(R>>>5|o),A=0,U=A+T*a+L*(5*y)+N*(5*m)+B*(5*p)+k*(5*f);A=U>>>13,U&=8191,U+=X*(5*h)+D*(5*u)+P*(5*d)+$*(5*l)+C*(5*c),A+=U>>>13,U&=8191;let V=A+T*c+L*a+N*(5*y)+B*(5*m)+k*(5*p);A=V>>>13,V&=8191,V+=X*(5*f)+D*(5*h)+P*(5*u)+$*(5*d)+C*(5*l),A+=V>>>13,V&=8191;let H=A+T*l+L*c+N*a+B*(5*y)+k*(5*m);A=H>>>13,H&=8191,H+=X*(5*p)+D*(5*f)+P*(5*h)+$*(5*u)+C*(5*d),A+=H>>>13,H&=8191;let se=A+T*d+L*l+N*c+B*a+k*(5*y);A=se>>>13,se&=8191,se+=X*(5*m)+D*(5*p)+P*(5*f)+$*(5*h)+C*(5*u),A+=se>>>13,se&=8191;let ie=A+T*u+L*d+N*l+B*c+k*a;A=ie>>>13,ie&=8191,ie+=X*(5*y)+D*(5*m)+P*(5*p)+$*(5*f)+C*(5*h),A+=ie>>>13,ie&=8191;let de=A+T*h+L*u+N*d+B*l+k*c;A=de>>>13,de&=8191,de+=X*a+D*(5*y)+P*(5*m)+$*(5*p)+C*(5*f),A+=de>>>13,de&=8191;let ae=A+T*f+L*h+N*u+B*d+k*l;A=ae>>>13,ae&=8191,ae+=X*c+D*a+P*(5*y)+$*(5*m)+C*(5*p),A+=ae>>>13,ae&=8191;let ue=A+T*p+L*f+N*h+B*u+k*d;A=ue>>>13,ue&=8191,ue+=X*l+D*c+P*a+$*(5*y)+C*(5*m),A+=ue>>>13,ue&=8191;let Me=A+T*m+L*p+N*f+B*h+k*u;A=Me>>>13,Me&=8191,Me+=X*d+D*l+P*c+$*a+C*(5*y),A+=Me>>>13,Me&=8191;let Ne=A+T*y+L*m+N*p+B*f+k*h;A=Ne>>>13,Ne&=8191,Ne+=X*u+D*d+P*l+$*c+C*a,A+=Ne>>>13,Ne&=8191,A=(A<<2)+A|0,A=A+U|0,U=A&8191,A=A>>>13,V+=A,s[0]=U,s[1]=V,s[2]=H,s[3]=se,s[4]=ie,s[5]=de,s[6]=ae,s[7]=ue,s[8]=Me,s[9]=Ne}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),o=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=o,o=e[a]>>>13,e[a]&=8191;e[0]+=o*5,o=e[0]>>>13,e[0]&=8191,e[1]+=o,o=e[1]>>>13,e[1]&=8191,e[2]+=o,n[0]=e[0]+5,o=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+o,o=n[a]>>>13,n[a]&=8191;n[9]-=8192;let s=(o^1)-1;for(let a=0;a<10;a++)n[a]&=s;s=~s;for(let a=0;a<10;a++)e[a]=e[a]&s|n[a];e[0]=(e[0]|e[1]<<13)&65535,e[1]=(e[1]>>>3|e[2]<<10)&65535,e[2]=(e[2]>>>6|e[3]<<7)&65535,e[3]=(e[3]>>>9|e[4]<<4)&65535,e[4]=(e[4]>>>12|e[5]<<1|e[6]<<14)&65535,e[5]=(e[6]>>>2|e[7]<<11)&65535,e[6]=(e[7]>>>5|e[8]<<8)&65535,e[7]=(e[8]>>>8|e[9]<<5)&65535;let i=e[0]+t[0];e[0]=i&65535;for(let a=1;a<8;a++)i=(e[a]+t[a]|0)+(i>>>16)|0,e[a]=i&65535}update(e){M2(this);let{buffer:t,blockLen:n}=this;e=R1(e);let o=e.length;for(let s=0;s<o;){let i=Math.min(n-this.pos,o-s);if(i===n){for(;n<=o-s;s+=n)this.process(e,s);continue}t.set(e.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){this.h.fill(0),this.r.fill(0),this.buffer.fill(0),this.pad.fill(0)}digestInto(e){M2(this),fg(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:o}=this;if(o){for(t[o++]=1;o<16;o++)t[o]=0;this.process(t,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)e[s++]=n[i]>>>0,e[s++]=n[i]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function pI(r){let e=(n,o)=>r(o).update(R1(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var hg=pI(r=>new U2(r));var mI=v1("expand 16-byte k"),gI=v1("expand 32-byte k"),yI=zn(mI),wI=zn(gI);function Y(r,e){return r<<e|r>>>32-e}function F2(r){return r.byteOffset%4===0}var _1=64,EI=16,mg=2**32-1,pg=new Uint32Array;function bI(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(_1),d=zn(l),u=F2(o)&&F2(s),h=u?zn(o):pg,f=u?zn(s):pg;for(let p=0;p<c;i++){if(r(e,t,n,d,i,a),i>=mg)throw new Error("arx: counter overflow");let m=Math.min(_1,c-p);if(u&&m===_1){let y=p/4;if(p%4!==0)throw new Error("arx: invalid block position");for(let w=0,b;w<EI;w++)b=y+w,f[b]=h[b]^d[w];p+=_1;continue}for(let y=0,w;y<m;y++)w=p+y,s[w]=o[w]^l[y];p+=m}}function V2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=ug({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return S1(o),S1(i),B2(s),B2(t),(a,c,l,d,u=0)=>{ki(a),ki(c),ki(l);let h=l.length;if(d||(d=new Uint8Array(h)),ki(d),S1(u),u<0||u>=mg)throw new Error("arx: counter overflow");if(d.length<h)throw new Error(`arx: output (${d.length}) is shorter than data (${h})`);let f=[],p=a.length,m,y;if(p===32)m=a.slice(),f.push(m),y=wI;else if(p===16&&t)m=new Uint8Array(32),m.set(a),m.set(a,16),y=yI,f.push(m);else throw new Error(`arx: invalid 32-byte key, got length=${p}`);F2(c)||(c=c.slice(),f.push(c));let w=zn(m);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,zn(c.subarray(0,16)),w),c=c.subarray(16)}let b=16-o;if(b!==c.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let x=new Uint8Array(12);x.set(c,s?0:12-c.length),c=x,f.push(c)}let E=zn(c);for(bI(r,y,w,E,l,d,u,i);f.length>0;)f.pop().fill(0);return d}}function wg(r,e,t,n,o,s=20){let i=r[0],a=r[1],c=r[2],l=r[3],d=e[0],u=e[1],h=e[2],f=e[3],p=e[4],m=e[5],y=e[6],w=e[7],b=o,E=t[0],x=t[1],v=t[2],I=i,S=a,R=c,T=l,L=d,N=u,B=h,k=f,X=p,D=m,P=y,$=w,C=b,A=E,U=x,V=v;for(let se=0;se<s;se+=2)I=I+L|0,C=Y(C^I,16),X=X+C|0,L=Y(L^X,12),I=I+L|0,C=Y(C^I,8),X=X+C|0,L=Y(L^X,7),S=S+N|0,A=Y(A^S,16),D=D+A|0,N=Y(N^D,12),S=S+N|0,A=Y(A^S,8),D=D+A|0,N=Y(N^D,7),R=R+B|0,U=Y(U^R,16),P=P+U|0,B=Y(B^P,12),R=R+B|0,U=Y(U^R,8),P=P+U|0,B=Y(B^P,7),T=T+k|0,V=Y(V^T,16),$=$+V|0,k=Y(k^$,12),T=T+k|0,V=Y(V^T,8),$=$+V|0,k=Y(k^$,7),I=I+N|0,V=Y(V^I,16),P=P+V|0,N=Y(N^P,12),I=I+N|0,V=Y(V^I,8),P=P+V|0,N=Y(N^P,7),S=S+B|0,C=Y(C^S,16),$=$+C|0,B=Y(B^$,12),S=S+B|0,C=Y(C^S,8),$=$+C|0,B=Y(B^$,7),R=R+k|0,A=Y(A^R,16),X=X+A|0,k=Y(k^X,12),R=R+k|0,A=Y(A^R,8),X=X+A|0,k=Y(k^X,7),T=T+L|0,U=Y(U^T,16),D=D+U|0,L=Y(L^D,12),T=T+L|0,U=Y(U^T,8),D=D+U|0,L=Y(L^D,7);let H=0;n[H++]=i+I|0,n[H++]=a+S|0,n[H++]=c+R|0,n[H++]=l+T|0,n[H++]=d+L|0,n[H++]=u+N|0,n[H++]=h+B|0,n[H++]=f+k|0,n[H++]=p+X|0,n[H++]=m+D|0,n[H++]=y+P|0,n[H++]=w+$|0,n[H++]=b+C|0,n[H++]=E+A|0,n[H++]=x+U|0,n[H++]=v+V|0}function xI(r,e,t,n){let o=r[0],s=r[1],i=r[2],a=r[3],c=e[0],l=e[1],d=e[2],u=e[3],h=e[4],f=e[5],p=e[6],m=e[7],y=t[0],w=t[1],b=t[2],E=t[3];for(let v=0;v<20;v+=2)o=o+c|0,y=Y(y^o,16),h=h+y|0,c=Y(c^h,12),o=o+c|0,y=Y(y^o,8),h=h+y|0,c=Y(c^h,7),s=s+l|0,w=Y(w^s,16),f=f+w|0,l=Y(l^f,12),s=s+l|0,w=Y(w^s,8),f=f+w|0,l=Y(l^f,7),i=i+d|0,b=Y(b^i,16),p=p+b|0,d=Y(d^p,12),i=i+d|0,b=Y(b^i,8),p=p+b|0,d=Y(d^p,7),a=a+u|0,E=Y(E^a,16),m=m+E|0,u=Y(u^m,12),a=a+u|0,E=Y(E^a,8),m=m+E|0,u=Y(u^m,7),o=o+l|0,E=Y(E^o,16),p=p+E|0,l=Y(l^p,12),o=o+l|0,E=Y(E^o,8),p=p+E|0,l=Y(l^p,7),s=s+d|0,y=Y(y^s,16),m=m+y|0,d=Y(d^m,12),s=s+d|0,y=Y(y^s,8),m=m+y|0,d=Y(d^m,7),i=i+u|0,w=Y(w^i,16),h=h+w|0,u=Y(u^h,12),i=i+u|0,w=Y(w^i,8),h=h+w|0,u=Y(u^h,7),a=a+c|0,b=Y(b^a,16),f=f+b|0,c=Y(c^f,12),a=a+c|0,b=Y(b^a,8),f=f+b|0,c=Y(c^f,7);let x=0;n[x++]=o,n[x++]=s,n[x++]=i,n[x++]=a,n[x++]=y,n[x++]=w,n[x++]=b,n[x++]=E}var vI=V2(wg,{counterRight:!1,counterLength:4,allowShortKeys:!1}),RI=V2(wg,{counterRight:!1,counterLength:8,extendNonceFn:xI,allowShortKeys:!1});var SI=new Uint8Array(16),gg=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(SI.subarray(t))},_I=new Uint8Array(32);function yg(r,e,t,n,o){let s=r(e,t,_I),i=hg.create(s);o&&gg(i,o),gg(i,n);let a=new Uint8Array(16),c=lg(a);O2(c,0,BigInt(o?o.length:0),!0),O2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var Eg=r=>(e,t,n)=>(xs(e,32),xs(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?xs(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=yg(r,e,t,i.subarray(0,-16),n);return i.set(l,a),i},decrypt:(s,i)=>{let a=s.length,c=a-16;if(a<16)throw new Error("encrypted data must be at least 16 bytes");i?xs(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),d=s.subarray(-16),u=yg(r,e,t,l,n);if(!dg(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),K2=L2({blockSize:64,nonceLength:12,tagLength:16},Eg(vI)),LX=L2({blockSize:64,nonceLength:24,tagLength:16},Eg(RI));function xg(r,e,t){return ts(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ho(r,Mr(t),Mr(e))}var $2=new Uint8Array([0]),bg=new Uint8Array;function vg(r,e,t,n=32){if(ts(r),so(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=bg);let s=new Uint8Array(o*r.outputLen),i=ho.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)$2[0]=l+1,a.update(l===0?bg:c).update(t).update($2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),$2.fill(0),s.slice(0,n)}var H2={hashSHA256(r){return xo(r.subarray())},getHKDF(r,e){let t=xg(xo,e,r),o=vg(xo,t,void 0,96),s=o.subarray(0,32),i=o.subarray(32,64),a=o.subarray(64,96);return[s,i,a]},generateX25519KeyPair(){let r=xa.utils.randomPrivateKey();return{publicKey:xa.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:xa.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return xa.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return K2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return K2(n,e,t).decrypt(r.subarray(),o)}};var Rg=H2;function Sg(r){return{generateKeypair:r.generateX25519KeyPair,dh:(e,t)=>r.generateX25519SharedKey(e.privateKey,t).subarray(0,32),encrypt:r.chaCha20Poly1305Encrypt,decrypt:r.chaCha20Poly1305Decrypt,hash:r.hashSHA256,hkdf:r.getHKDF}}var Ci=r=>{let e=ze(2);return e[0]=r>>8,e[1]=r,e};Ci.bytes=2;var rc=r=>{if(r.length<2)throw RangeError("Could not decode int16BE");if(r instanceof Uint8Array){let e=0;return e+=r[0]<<8,e+=r[1],e}return r.getUint16(0)};rc.bytes=2;function _g(r){return{xxHandshakeSuccesses:r.registerCounter("libp2p_noise_xxhandshake_successes_total",{help:"Total count of noise xxHandshakes successes_"}),xxHandshakeErrors:r.registerCounter("libp2p_noise_xxhandshake_error_total",{help:"Total count of noise xxHandshakes errors"}),encryptedPackets:r.registerCounter("libp2p_noise_encrypted_packets_total",{help:"Total count of noise encrypted packets successfully"}),decryptedPackets:r.registerCounter("libp2p_noise_decrypted_packets_total",{help:"Total count of noise decrypted packets"}),decryptErrors:r.registerCounter("libp2p_noise_decrypt_errors_total",{help:"Total count of noise decrypt errors"})}}function q2(r,e){!e.enabled||!Ti||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${O(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${O(r.privateKey,"hex")}`)):e("Missing local static keys."))}function G2(r,e){!e.enabled||!Ti||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${O(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${O(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Ag(r,e){!e.enabled||!Ti||e(r?`REMOTE_STATIC_PUBLIC_KEY ${O(r.subarray(),"hex")}`:"Missing remote static public key.")}function W2(r,e){!e.enabled||!Ti||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${O(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function z2(r,e,t){!t.enabled||!Ti||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&O(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&O(e.k,"hex")}`))}function Yn(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=ze(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function A1(r,e){for(let t=0;t<r.byteLength;t++){if(r[t]<e[t])return-1;if(r[t]>e[t])return 1}return r.byteLength>e.byteLength?1:r.byteLength<e.byteLength?-1:0}var I1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Ni=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var AI=0,II=4294967295,DI="Cipherstate has reached maximum n, a new handshake must be performed",D1=class{n;bytes;view;constructor(e=AI){this.n=e,this.bytes=Ae(12),this.view=new DataView(this.bytes.buffer,this.bytes.byteOffset,this.bytes.byteLength),this.view.setUint32(4,e,!0)}increment(){this.n++,this.view.setUint32(4,this.n,!0)}getBytes(){return this.bytes}getUint64(){return this.n}assertValue(){if(this.n>II)throw new Error(DI)}};var vs=Ae(0),Pi=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new D1(n)}hasKey(){return!!this.k}encryptWithAd(e,t){if(!this.hasKey())return t;this.n.assertValue();let n=this.crypto.encrypt(t,this.n.getBytes(),e,this.k);return this.n.increment(),n}decryptWithAd(e,t,n){if(!this.hasKey())return t;this.n.assertValue();let o=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),o}},Y2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=M(t,"utf-8");this.h=TI(e,n),this.ck=this.h,this.cs=new Pi(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Pi(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new ce(this.h,e))}encryptAndHash(e){let t=this.cs.encryptWithAd(this.h,e);return this.mixHash(t),t}decryptAndHash(e){let t=this.cs.decryptWithAd(this.h,e);return this.mixHash(e),t}split(){let[e,t]=this.crypto.hkdf(this.ck,vs);return[new Pi(this.crypto,e),new Pi(this.crypto,t)]}},X2=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:o,initiator:s,s:i,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new Y2(t,n),this.ss.mixHash(o),this.initiator=s,this.s=i,this.e=a,this.rs=c,this.re=l}writeE(){if(this.e)throw new Error("ephemeral keypair is already set");let e=this.crypto.generateKeypair();return this.ss.mixHash(e.publicKey),this.e=e,e.publicKey}writeS(){if(!this.s)throw new Error("static keypair is not set");return this.ss.encryptAndHash(this.s.publicKey)}writeEE(){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.re))}writeES(){if(this.initiator){if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}else{if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}}writeSE(){if(this.initiator){if(!this.s)throw new Error("static keypair is not set");if(!this.re)throw new Error("remote ephemeral public key is not set");this.ss.mixKey(this.crypto.dh(this.s,this.re))}else{if(!this.e)throw new Error("ephemeral keypair is not set");if(!this.rs)throw new Error("remote static public key is not set");this.ss.mixKey(this.crypto.dh(this.e,this.rs))}}readE(e,t=0){if(this.re)throw new Error("remote ephemeral public key is already set");if(e.byteLength<t+32)throw new Error("message is not long enough");this.re=e.sublist(t,t+32),this.ss.mixHash(this.re)}readS(e,t=0){if(this.rs)throw new Error("remote static public key is already set");let n=32+(this.ss.cs.hasKey()?16:0);if(e.byteLength<t+n)throw new Error("message is not long enough");let o=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(o),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},nc=class extends X2{writeMessageA(e){return new ce(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new ce(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new ce(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ni(`handshake stage 0 validation fail: ${t.message}`)}}readMessageB(e){try{this.readE(e),this.readEE();let t=this.readS(e,32);return this.readES(),this.ss.decryptAndHash(e.sublist(32+t))}catch(t){throw new Ni(`handshake stage 1 validation fail: ${t.message}`)}}readMessageC(e){try{let t=this.readS(e);return this.readSE(),this.ss.decryptAndHash(e.sublist(t))}catch(t){throw new Ni(`handshake stage 2 validation fail: ${t.message}`)}}};function TI(r,e){if(e.length<=32){let t=Ae(32);return t.set(e),t}else return r.hash(e)}var T1;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let s of t.webtransportCerthashes)n.uint32(10),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={webtransportCerthashes:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.webtransportCerthashes.push(t.bytes());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(T1||(T1={}));var oc;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.identityKey!=null&&t.identityKey.byteLength>0&&(n.uint32(10),n.bytes(t.identityKey)),t.identitySig!=null&&t.identitySig.byteLength>0&&(n.uint32(18),n.bytes(t.identitySig)),t.extensions!=null&&(n.uint32(34),T1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Ae(0),identitySig:Ae(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=T1.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(oc||(oc={}));async function Q2(r,e,t){let n=await r.sign(Ig(e));return oc.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function j2(r,e,t){try{let n=oc.decode(r);if(t){let i=t.subarray();if(!Z(i,n.identityKey))throw new Error(`Payload identity key ${O(n.identityKey,"hex")} does not match expected remote identity key ${O(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=Ig(e);if(!await Gr(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new I1(n.message)}}function Ig(r){let e=M("noise-libp2p-static-key:");return r instanceof Uint8Array?ve([e,r],e.length+r.length):(r.prepend(e),r)}async function Dg(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await Q2(o,i.publicKey,c),d=new nc({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});q2(d.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(d.writeMessageA(vs)),e.trace("Stage 0 - Initiator finished sending first message."),G2(d.e,e),e.trace("Stage 1 - Initiator waiting to receive first message from responder...");let u=d.readMessageB(await t.read());e.trace("Stage 1 - Initiator received the message."),W2(d.re,e),Ag(d.rs,e),e.trace("Initiator going to check remote's signature...");let h=await j2(u,d.rs,a);e.trace("All good with the signature!"),e.trace("Stage 2 - Initiator sending third handshake message."),await t.write(d.writeMessageC(l)),e.trace("Stage 2 - Initiator sent message with signed payload.");let[f,p]=d.ss.split();return z2(f,p,e),{payload:h,encrypt:m=>f.encryptWithAd(vs,m),decrypt:(m,y)=>p.decryptWithAd(vs,m,y)}}async function Tg(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await Q2(o,i.publicKey,c),d=new nc({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});q2(d.s,e),e.trace("Stage 0 - Responder waiting to receive first message."),d.readMessageA(await t.read()),e.trace("Stage 0 - Responder received first message."),W2(d.re,e),e.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await t.write(d.writeMessageB(l)),e.trace("Stage 1 - Responder sent the second handshake message with signed payload."),G2(d.e,e),e.trace("Stage 2 - Responder waiting for third handshake message...");let u=d.readMessageC(await t.read());e.trace("Stage 2 - Responder received the message, finished handshake.");let h=await j2(u,d.rs,a),[f,p]=d.ss.split();return z2(f,p,e),{payload:h,encrypt:m=>p.encryptWithAd(vs,m),decrypt:(m,y)=>f.decryptWithAd(vs,m,y)}}var Cg=16;function Ng(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65519){let s=o+65519;s>n.length&&(s=n.length);let i;n instanceof Uint8Array?i=r.encrypt(n.subarray(o,s)):i=r.encrypt(n.sublist(o,s)),e?.encryptedPackets.increment(),yield new ce(Ci(i.byteLength),i)}}}function Pg(r,e){return async function*(t){for await(let n of t)for(let o=0;o<n.length;o+=65535){let s=o+65535;if(s>n.length&&(s=n.length),s-Cg<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Cg);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var k1=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:o,crypto:s,prologueBytes:i}=t,{metrics:a}=e;this.components=e;let c=s??Rg;this.crypto=Sg(c),this.extensions=o,this.metrics=a?_g(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Ae(0)}async secureOutbound(e,t,n){let o=pn(t,{lengthEncoder:Ci,lengthDecoder:rc,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Sr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeInitiator(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ht(a.payload.identityKey)}}async secureInbound(e,t,n){let o=pn(t,{lengthEncoder:Ci,lengthDecoder:rc,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Sr(e.privateKey),i=n?.publicKey,a=await this.performHandshakeResponder(o,s,i),c=await this.createSecureConnection(o,a);return t.source=c.source,t.sink=c.sink,{conn:t,remoteExtensions:a.payload.extensions,remotePeer:await ht(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Dg({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async performHandshakeResponder(e,t,n){let o;try{o=await Tg({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:this.extensions}),this.metrics?.xxHandshakeSuccesses.increment()}catch(s){throw this.metrics?.xxHandshakeErrors.increment(),s}return o}async createSecureConnection(e,t){let[n,o]=ag(),s=e.unwrap();return await Qe(n,Ng(t,this.metrics),s,i=>$t(i,{lengthDecoder:rc}),Pg(t,this.metrics),n),o}};function Li(r={}){return e=>new k1(e,r)}function C1(r){if(r!=null){if(typeof r[Symbol.iterator]=="function")return r[Symbol.iterator]();if(typeof r[Symbol.asyncIterator]=="function")return r[Symbol.asyncIterator]();if(typeof r.next=="function")return r}throw new Error("argument is not an iterator or iterable")}var Oi="ERR_INVALID_FRAME",Z2="ERR_UNREQUESTED_PING",J2="ERR_NOT_MATCHING_PING",ep="ERR_STREAM_ALREADY_EXISTS",tp="ERR_DECODE_INVALID_VERSION",rp="ERR_BOTH_CLIENTS",np="ERR_RECV_WINDOW_EXCEEDED",Lg=new Set([Oi,Z2,J2,ep,tp,rp,np]),Co="ERR_INVALID_CONFIG",N1="ERR_MUXER_LOCAL_CLOSED",op="ERR_MUXER_REMOTE_CLOSED";var Og="ERR_STREAM_ABORT",Bg="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Mg="ERR_DECODE_IN_PROGRESS",ic=256*1024,Ug=16*1024*1024;var Fg={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:ic,maxStreamWindowSize:Ug,maxMessageSize:64*1024};function Vg(r){if(r.keepAliveInterval<=0)throw new g("keep-alive interval must be positive",Co);if(r.maxInboundStreams<0)throw new g("max inbound streams must be larger or equal 0",Co);if(r.maxOutboundStreams<0)throw new g("max outbound streams must be larger or equal 0",Co);if(r.initialStreamWindowSize<ic)throw new g("InitialStreamWindowSize must be larger or equal 256 kB",Co);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new g("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",Co);if(r.maxStreamWindowSize>2**32-1)throw new g("MaxStreamWindowSize must be less than equal MAX_UINT32",Co);if(r.maxMessageSize<1024)throw new g("MaxMessageSize must be greater than a kilobyte",Co)}var Je;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(Je||(Je={}));var We;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(We||(We={}));var uj=Object.values(We).filter(r=>typeof r!="string"),Kg=0,Dr;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Dr||(Dr={}));var No=12;var $g=2**24;function kI(r){if(r[0]!==Kg)throw new g("Invalid frame version",tp);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*$g+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*$g+(r[9]<<16)+(r[10]<<8)+r[11]}}var P1=class{source;buffer;frameInProgress;constructor(e){this.source=CI(e),this.buffer=new ce,this.frameInProgress=!1}async*emitFrames(){for await(let e of this.source)for(this.buffer.append(e);;){let t=this.readHeader();if(t===void 0)break;let{type:n,length:o}=t;n===Je.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,o)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new g("decoding frame already in progress",Mg);if(this.buffer.length<No)return;let e=kI(this.buffer.subarray(0,No));return this.buffer.consume(No),e}async readBytes(e){if(this.buffer.length<e){for await(let n of this.source)if(this.buffer.append(n),this.buffer.length>=e)break}let t=this.buffer.sublist(0,e);return this.buffer.consume(e),this.frameInProgress=!1,t}};function CI(r){if(r[Symbol.iterator]!==void 0){let e=r[Symbol.iterator]();return e.return=void 0,{[Symbol.iterator](){return e}}}else if(r[Symbol.asyncIterator]!==void 0){let e=r[Symbol.asyncIterator]();return e.return=void 0,{[Symbol.asyncIterator](){return e}}}else throw new Error("a source must be either an iterable or an async iterable")}function sp(r){let e=new Uint8Array(No);return e[1]=r.type,e[2]=r.flag>>>8,e[3]=r.flag,e[4]=r.streamID>>>24,e[5]=r.streamID>>>16,e[6]=r.streamID>>>8,e[7]=r.streamID,e[8]=r.length>>>24,e[9]=r.length>>>16,e[10]=r.length>>>8,e[11]=r.length,e}function Hg(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function L1(r,e){let t=C1(r).return?.();Hg(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var NI="ERR_STREAM_RESET",PI="ERR_SINK_INVALID_STATE",LI=5e3;function ip(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var mn=class{id;direction;timeline;protocol;metadata;source;status;readStatus;writeStatus;log;sinkController;sinkEnd;closed;endErr;streamSource;onEnd;onCloseRead;onCloseWrite;onReset;onAbort;sendCloseWriteTimeout;sendingData;constructor(e){this.sinkController=new AbortController,this.sinkEnd=J(),this.closed=J(),this.log=e.log,this.status="open",this.readStatus="ready",this.writeStatus="ready",this.id=e.id,this.metadata=e.metadata??{},this.direction=e.direction,this.timeline={open:Date.now()},this.sendCloseWriteTimeout=e.sendCloseWriteTimeout??LI,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=ft({onEnd:t=>{t!=null?this.log.trace("source ended with error",t):this.log.trace("source ended"),this.onSourceEnd(t)}}),this.sink=this.sink.bind(this)}async sink(e){if(this.writeStatus!=="ready")throw new g(`writable end state is "${this.writeStatus}" not "ready"`,PI);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);ip(o)&&await o}let n=()=>{L1(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let o of e){o=o instanceof Uint8Array?new ce(o):o;let s=this.sendData(o,t);ip(s)&&(this.sendingData=J(),await s,this.sendingData.resolve(),this.sendingData=void 0)}}finally{this.sinkController.signal.removeEventListener("abort",n)}this.log.trace('sink finished reading from source, write status is "%s"',this.writeStatus),this.writeStatus==="writing"&&(this.writeStatus="closing",this.log.trace("send close write to remote"),await this.sendCloseWrite({signal:AbortSignal.timeout(this.sendCloseWriteTimeout)}),this.writeStatus="closed"),this.onSinkEnd()}catch(t){throw this.log.trace("sink ended with error, calling abort with error",t),this.abort(t),t}finally{this.log.trace("resolve sink end"),this.sinkEnd.resolve()}}onSourceEnd(e){this.timeline.closeRead==null&&(this.timeline.closeRead=Date.now(),this.readStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseRead?.(),this.timeline.closeWrite!=null?(this.log.trace("source and sink ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("source ended, waiting for sink to end"))}onSinkEnd(e){this.timeline.closeWrite==null&&(this.timeline.closeWrite=Date.now(),this.writeStatus="closed",e!=null&&this.endErr==null&&(this.endErr=e),this.onCloseWrite?.(),this.timeline.closeRead!=null?(this.log.trace("sink and source ended"),this.timeline.close=Date.now(),this.status!=="aborted"&&this.status!=="reset"&&(this.status="closed"),this.onEnd!=null&&this.onEnd(this.endErr),this.closed.resolve()):this.log.trace("sink ended, waiting for source to end"))}async close(e){this.log.trace("closing gracefully"),this.status="closing",await Ue(Promise.all([this.closeWrite(e),this.closeRead(e),this.closed.promise]),e?.signal),this.status="closed",this.log.trace("closed gracefully")}async closeRead(e={}){if(this.readStatus==="closing"||this.readStatus==="closed")return;this.log.trace('closing readable end of stream with starting read status "%s"',this.readStatus);let t=this.readStatus;this.readStatus="closing",this.status!=="reset"&&this.status!=="aborted"&&this.timeline.closeRead==null&&(this.log.trace("send close read to remote"),await this.sendCloseRead(e)),t==="ready"&&(this.log.trace("ending internal source queue with %d queued bytes",this.streamSource.readableLength),this.streamSource.end()),this.log.trace("closed readable end of stream")}async closeWrite(e={}){this.writeStatus==="closing"||this.writeStatus==="closed"||(this.log.trace('closing writable end of stream with starting write status "%s"',this.writeStatus),this.writeStatus==="ready"&&(this.log.trace("sink was never sunk, sink an empty array"),await Ue(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Ue(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Ue(this.sinkEnd.promise,e.signal)),this.writeStatus="closed",this.log.trace("closed writable end of stream"))}abort(e){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;this.log("abort with error",e),this.log("try to send reset to remote");let t=this.sendReset();ip(t)&&t.catch(n=>{this.log.error("error sending reset message",n)}),this.status="aborted",this.timeline.abort=Date.now(),this._closeSinkAndSource(e),this.onAbort?.(e)}reset(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset")return;let e=new g("stream reset",NI);this.status="reset",this.timeline.reset=Date.now(),this._closeSinkAndSource(e),this.onReset?.()}_closeSinkAndSource(e){this._closeSink(e),this._closeSource(e)}_closeSink(e){this.writeStatus==="writing"&&(this.log.trace("end sink source"),this.sinkController.abort()),this.onSinkEnd(e)}_closeSource(e){this.readStatus!=="closing"&&this.readStatus!=="closed"&&(this.log.trace("ending source with %d bytes to be read by consumer",this.streamSource.readableLength),this.readStatus="closing",this.streamSource.end(e))}remoteCloseWrite(){if(this.readStatus==="closing"||this.readStatus==="closed"){this.log("received remote close write but local source is already closed");return}this.log.trace("remote close write"),this._closeSource()}remoteCloseRead(){if(this.writeStatus==="closing"||this.writeStatus==="closed"){this.log("received remote close read but local sink is already closed");return}this.log.trace("remote close read"),this._closeSink()}destroy(){if(this.status==="closed"||this.status==="aborted"||this.status==="reset"){this.log("received destroy but we are already closed");return}this.log.trace("stream destroyed"),this._closeSinkAndSource()}sourcePush(e){this.streamSource.push(e)}sourceReadableLength(){return this.streamSource.readableLength}};var Tr;(function(r){r[r.Init=0]="Init",r[r.SYNSent=1]="SYNSent",r[r.SYNReceived=2]="SYNReceived",r[r.Established=3]="Established",r[r.Finished=4]="Finished"})(Tr||(Tr={}));var O1=class extends mn{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=Tr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=ic,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=za(this.source,()=>{this.sendWindowUpdate()})}async sendNewStream(){}async sendData(e,t={}){for(e=e.sublist();e.byteLength!==0;){if(this.sendWindowCapacity===0&&(this.log?.trace("wait for send window capacity, status %s",this.status),await this.waitForSendWindowCapacity(t),this.status==="closed"||this.status==="aborted"||this.status==="reset")){this.log?.trace("%s while waiting for send window capacity",this.status);return}let n=Math.min(this.sendWindowCapacity,this.config.maxMessageSize-No,e.length),o=this.getSendFlags();this.sendFrame({type:Je.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:Je.WindowUpdate,flag:We.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|We.FIN;this.sendFrame({type:Je.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,o=()=>{this.status==="open"||this.status==="closing"?n(new g("stream aborted",Og)):t()};e.signal?.addEventListener("abort",o);try{await new Promise((s,i)=>{this.sendWindowCapacityUpdate=()=>{s()},n=i,t=s})}finally{e.signal?.removeEventListener("abort",o)}}handleWindowUpdate(e){this.log?.trace("stream received window update id=%s",this._id),this.processFlags(e.flag);let t=this.sendWindowCapacity;this.sendWindowCapacity+=e.length,t===0&&e.length>0&&this.sendWindowCapacityUpdate?.()}async handleData(e,t){if(this.log?.trace("stream received data id=%s",this._id),this.processFlags(e.flag),this.recvWindowCapacity<e.length)throw new g("receive window exceeded",np,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&We.ACK)===We.ACK&&this.state===Tr.SYNSent&&(this.state=Tr.Established),(e&We.FIN)===We.FIN&&this.remoteCloseWrite(),(e&We.RST)===We.RST&&this.reset()}getSendFlags(){switch(this.state){case Tr.Init:return this.state=Tr.SYNSent,We.SYN;case Tr.SYNReceived:return this.state=Tr.Established,We.ACK;default:return 0}}sendWindowUpdate(){let e=this.getSendFlags(),t=Date.now(),n=this.getRTT();if(e===0&&n>-1&&t-this.epochStart<n*4&&(this.recvWindow=Math.min(this.recvWindow*2,this.config.maxStreamWindowSize)),this.recvWindowCapacity>=this.recvWindow&&e===0)return;let o=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:Je.WindowUpdate,flag:e,streamID:this._id,length:o})}};var qg="/yamux/1.0.0",OI=500,B1=class{protocol=qg;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new ap(this._components,{...this._init,...e})}},ap=class{protocol=qg;source;sink;config;log;logger;closeController;nextStreamID;_streams;nextPingID;activePing;rtt;client;localGoAway;remoteGoAway;numInboundStreams;numOutboundStreams;onIncomingStream;onStreamEnd;constructor(e,t){this.client=t.direction==="outbound",this.config={...Fg,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Vg(this.config),this.closeController=new AbortController,G(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=ft({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=C1(n);if(a.return!=null){let c=a.return();BI(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new P1(n);try{this.closeController.signal.addEventListener("abort",o);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",o)}s=Dr.NormalTermination}catch(a){let c=a.code;Lg.has(c)?(this.log?.error("protocol error in sink",a),s=Dr.ProtocolError):(this.log?.error("internal error in sink",a),s=Dr.InternalError),i=a}this.log?.trace("muxer sink ended"),i!=null?this.abort(i,s):await this.close({reason:s})},this.numInboundStreams=0,this.numOutboundStreams=0,this.nextStreamID=this.client?1:2,this.nextPingID=0,this.rtt=-1,this.log?.trace("muxer created"),this.config.enableKeepAlive&&this.keepAliveLoop().catch(n=>this.log?.error("keepalive error: %s",n)),this.ping().catch(n=>this.log?.error("ping error: %s",n))}get streams(){return Array.from(this._streams.values())}newStream(e){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",op);if(this.localGoAway!==void 0)throw new g("muxer closed locally",N1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new g("max outbound streams exceeded",Bg);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,Tr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new g("muxer closed remotely",op);if(this.localGoAway!==void 0)throw new g("muxer closed locally",N1);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new g("muxer closed locally",N1))};this.closeController.signal.addEventListener("abort",i,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",i),o()}}),resolve:e};let t=Date.now();this.sendPing(this.activePing.id);try{await this.activePing.promise}finally{delete this.activePing}let n=Date.now();this.rtt=n-t}else await this.activePing.promise;return this.rtt}getRTT(){return this.rtt}async close(e={}){if(this.closeController.signal.aborted)return;let t=e?.reason??Dr.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(OI);G(1/0,n),e={...e,signal:n}}try{await Promise.all([...this._streams.values()].map(async n=>n.close(e))),this.sendGoAway(t),this._closeMuxer()}catch(n){this.abort(n)}}abort(e,t){if(!this.closeController.signal.aborted){t=t??Dr.InternalError,this.log?.error("muxer abort reason=%s error=%s",t,e);for(let n of this._streams.values())n.abort(e);this.sendGoAway(t),this._closeMuxer()}}isClosed(){return this.closeController.signal.aborted}_closeMuxer(){this.closeController.abort(),this.source.end()}_newStream(e,t,n,o){if(this._streams.get(e)!=null)throw new g("Stream already exists",ep,{id:e});let s=new O1({id:e.toString(),name:t,state:n,direction:o,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(s)},log:this.logger.forComponent(`libp2p:yamux:${o}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return s}closeStream(e){this.client===(e%2===0)?this.numInboundStreams--:this.numOutboundStreams--,this._streams.delete(e)}async keepAliveLoop(){let e=new Promise((t,n)=>{this.closeController.signal.addEventListener("abort",n,{once:!0})});for(this.log?.trace("muxer keepalive enabled interval=%s",this.config.keepAliveInterval);;){let t;try{await Promise.race([e,new Promise(n=>{t=setTimeout(n,this.config.keepAliveInterval)})]),this.ping().catch(n=>this.log?.error("ping error: %s",n))}catch{clearInterval(t);return}}}async handleFrame(e,t){let{streamID:n,type:o,length:s}=e;if(this.log?.trace("received frame %o",e),n===0)switch(o){case Je.Ping:{this.handlePing(e);return}case Je.GoAway:{this.handleGoAway(s);return}default:throw new g("Invalid frame type",Oi,{header:e})}else switch(e.type){case Je.Data:case Je.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new g("Invalid frame type",Oi,{header:e})}}handlePing(e){if(e.flag===We.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,We.ACK);else if(e.flag===We.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new g("Invalid frame flag",Oi,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new g("ping not requested",Z2);if(this.activePing.id!==e)throw new g("ping doesn't match our id",J2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Dr[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:o,type:s}=e;(o&We.SYN)===We.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===Je.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.("frame for missing stream id=%s",n);return}switch(s){case Je.WindowUpdate:{i.handleWindowUpdate(e);return}case Je.Data:{if(t===void 0)throw new Error("unreachable");await i.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new g("both endpoints are clients",rp);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:Je.WindowUpdate,flag:We.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:Je.WindowUpdate,flag:We.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,Tr.SYNReceived,"inbound");this.numInboundStreams++,this._streams.set(e,t),this.onIncomingStream?.(t)}sendFrame(e,t){if(this.log?.trace("sending frame %o",e),e.type===Je.Data){if(t===void 0)throw new g("invalid frame",Oi);this.source.push(new ce(sp(e),t))}else this.source.push(sp(e))}sendPing(e,t=We.SYN){t===We.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:Je.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Dr.NormalTermination){this.log?.("sending GoAway reason=%s",Dr[e]),this.localGoAway=e,this.sendFrame({type:Je.GoAway,flag:0,streamID:0,length:e})}};function BI(r){return r!=null&&typeof r.then=="function"}function Gg(r={}){return e=>new B1(e,r)}var M1=async()=>{let r=await Ca("Ed25519"),e=await MI(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function MI(r){return ht(d0(r.public),f0(r))}var U1=globalThis.CustomEvent??Event;async function*Xn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered==null?!1:e.ordered,o=new EventTarget,s=[],i=J(),a=J(),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=J(),await i.promise),d)break;let m={done:!1};s.push(m),p().then(y=>{m.done=!0,m.ok=!0,m.value=y,o.dispatchEvent(new U1("task-complete"))},y=>{m.done=!0,m.err=y,o.dispatchEvent(new U1("task-complete"))})}c=!0,o.dispatchEvent(new U1("task-complete"))}catch(p){l=p,o.dispatchEvent(new U1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(p=>p.done)}function*h(){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*f(){for(;u();)for(let p=0;p<s.length;p++)if(s[p].done){let m=s[p];if(s.splice(p,1),p--,m.ok)yield m.value;else throw d=!0,i.resolve(),m.err;i.resolve()}}for(;;){if(u()||(a=J(),await a.promise),l!=null)throw l;if(n?yield*h():yield*f(),c&&s.length===0)break}}var Wg="libp2p",zg="autonat",Yg="1.0.0";var he;(function(r){let e;(function(l){l.DIAL="DIAL",l.DIAL_RESPONSE="DIAL_RESPONSE"})(e=r.MessageType||(r.MessageType={}));let t;(function(l){l[l.DIAL=0]="DIAL",l[l.DIAL_RESPONSE=1]="DIAL_RESPONSE"})(t||(t={})),function(l){l.codec=()=>He(t)}(e=r.MessageType||(r.MessageType={}));let n;(function(l){l.OK="OK",l.E_DIAL_ERROR="E_DIAL_ERROR",l.E_DIAL_REFUSED="E_DIAL_REFUSED",l.E_BAD_REQUEST="E_BAD_REQUEST",l.E_INTERNAL_ERROR="E_INTERNAL_ERROR"})(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){l[l.OK=0]="OK",l[l.E_DIAL_ERROR=100]="E_DIAL_ERROR",l[l.E_DIAL_REFUSED=101]="E_DIAL_REFUSED",l[l.E_BAD_REQUEST=200]="E_BAD_REQUEST",l[l.E_INTERNAL_ERROR=300]="E_INTERNAL_ERROR"})(o||(o={})),function(l){l.codec=()=>He(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let d;l.codec=()=>(d==null&&(d=ne((u,h,f={})=>{if(f.lengthDelimited!==!1&&h.fork(),u.id!=null&&(h.uint32(10),h.bytes(u.id)),u.addrs!=null)for(let p of u.addrs)h.uint32(18),h.bytes(p);f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={addrs:[]},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.id=u.bytes();break;case 2:f.addrs.push(u.bytes());break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>re(u,l.codec()),l.decode=u=>te(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let d;l.codec=()=>(d==null&&(d=ne((u,h,f={})=>{f.lengthDelimited!==!1&&h.fork(),u.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(u.peer,h)),f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>re(u,l.codec()),l.decode=u=>te(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let d;l.codec=()=>(d==null&&(d=ne((u,h,f={})=>{f.lengthDelimited!==!1&&h.fork(),u.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(u.status,h)),u.statusText!=null&&(h.uint32(18),h.string(u.statusText)),u.addr!=null&&(h.uint32(26),h.bytes(u.addr)),f.lengthDelimited!==!1&&h.ldelim()},(u,h)=>{let f={},p=h==null?u.len:u.pos+h;for(;u.pos<p;){let m=u.uint32();switch(m>>>3){case 1:f.status=r.ResponseStatus.codec().decode(u);break;case 2:f.statusText=u.string();break;case 3:f.addr=u.bytes();break;default:u.skipType(m&7);break}}return f})),d),l.encode=u=>re(u,l.codec()),l.decode=u=>te(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=ne((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.type!=null&&(d.uint32(8),r.MessageType.codec().encode(l.type,d)),l.dial!=null&&(d.uint32(18),r.Dial.codec().encode(l.dial,d)),l.dialResponse!=null&&(d.uint32(26),r.DialResponse.codec().encode(l.dialResponse,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={},h=d==null?l.len:l.pos+d;for(;l.pos<h;){let f=l.uint32();switch(f>>>3){case 1:u.type=r.MessageType.codec().decode(l);break;case 2:u.dial=r.Dial.codec().decode(l,l.uint32());break;case 3:u.dialResponse=r.DialResponse.codec().decode(l,l.uint32());break;default:l.skipType(f&7);break}}return u})),c),r.encode=l=>re(l,r.codec()),r.decode=l=>te(l,r.codec())})(he||(he={}));var cp=4,F1=class{components;startupDelay;refreshInterval;protocol;timeout;maxInboundStreams;maxOutboundStreams;verifyAddressTimeout;started;log;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:autonat"),this.started=!1,this.protocol=`/${t.protocolPrefix??Wg}/${zg}/${Yg}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??1,this.maxOutboundStreams=t.maxOutboundStreams??1,this.startupDelay=t.startupDelay??5e3,this.refreshInterval=t.refreshInterval??6e4,this._verifyExternalAddresses=this._verifyExternalAddresses.bind(this)}isStarted(){return this.started}async start(){this.started||(await this.components.registrar.handle(this.protocol,e=>{this.handleIncomingAutonatStream(e).catch(t=>{this.log.error("error handling incoming autonat stream",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.startupDelay),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),clearTimeout(this.verifyAddressTimeout),this.started=!1}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout),n=()=>{e.stream.abort(new g("handleIncomingAutonatStream timeout",bn))};t.addEventListener("abort",n,{once:!0}),G(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Qe(e.stream,i=>$t(i),async function*(i){let a=await Es(i);if(a==null){s.log("no message received"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No message was sent"}});return}let c;try{c=he.decode(a)}catch(m){s.log.error("could not decode message",m),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"Could not decode message"}});return}let l=c.dial;if(l==null){s.log.error("dial was missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}});return}let d,u=l.peer;if(u==null||u.id==null){s.log.error("PeerId missing from message"),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}});return}try{d=Ze(u.id)}catch(m){s.log.error("invalid PeerId",m),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}});return}if(s.log("incoming request from %p",d),!e.connection.remotePeer.equals(d)){s.log("target peer %p did not equal sending peer %p",d,e.connection.remotePeer),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}});return}let h=u.addrs.map(m=>j(m)).filter(m=>{let y=m.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",m,e.connection.remoteAddr,y),y}).filter(m=>{let y=m.toOptions().host,w=!(Wt(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(m=>{let y=m.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(m=>{let y=!!s.components.transportManager.dialTransportForMultiaddr(m);return s.log.trace("transport for %a is supported %s",m,y),y}).map(m=>(m.getPeerId()==null&&(m=m.encapsulate(`/p2p/${d.toString()}`)),m));if(h.length===0){s.log("no valid multiaddrs for %p in message",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}});return}s.log("dial multiaddrs %s for peer %p",h.map(m=>m.toString()).join(", "),d);let f="",p=h[0];for await(let m of h){let y;p=m;try{if(y=await s.components.connectionManager.openConnection(m,{signal:t}),!y.remoteAddr.equals(m))throw s.log.error("tried to dial %a but dialed %a",m,y.remoteAddr),new Error("Unexpected remote address");s.log("Success %p",d),yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.OK,addr:y.remoteAddr.decapsulateCode(ee("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),f=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:f,addr:p.bytes}})},i=>Kt(i),e.stream)}catch(s){this.log.error("error handling incoming autonat stream",s)}finally{t.removeEventListener("abort",n)}}_verifyExternalAddresses(){this.verifyExternalAddresses().catch(e=>{this.log.error("error verifying external address",e)})}async verifyExternalAddresses(){if(clearTimeout(this.verifyAddressTimeout),!this.isStarted())return;let e=this.components.addressManager,t=e.getObservedAddrs().filter(s=>{let i=s.toOptions();return!(Wt(i.host)??!1)});if(t.length===0){this.log("no public addresses found, not requesting verification"),this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval);return}let n=AbortSignal.timeout(this.timeout);G(1/0,n);let o=this;try{this.log("verify multiaddrs %s",t.map(u=>u.toString()).join(", "));let s=he.encode({type:he.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toBytes(),addrs:t.map(u=>u.bytes)}}}),a=(await M1()).toBytes(),c={},l=[],d=async u=>{let h=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let f=await o.components.connectionManager.openConnection(u.id,{signal:n}),p=await f.newStream(this.protocol,{signal:n});h=()=>{p.abort(new g("verifyAddress timeout",bn))},n.addEventListener("abort",h,{once:!0});let m=await Qe([s],w=>Kt(w),p,w=>$t(w),async w=>Es(w));if(m==null){this.log("no response received from %p",f.remotePeer);return}let y=he.decode(m);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",f.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=f.remoteAddr.toOptions(),b;if(w.family===4)b=w.host.split(".")[0];else if(w.family===6)b=w.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',w.host);return}if(l.includes(b)){this.log("already have response from network segment %d - %s",b,w.host);return}l.push(b)}return y.dialResponse}catch(f){this.log.error("error asking remote to verify multiaddr",f)}finally{n.removeEventListener("abort",h)}};for await(let u of Xn(gr(this.components.peerRouting.getClosestPeers(a,{signal:n}),h=>async()=>d(h)),{concurrency:cp}))try{if(u==null)continue;let h=u.addr==null?t[0]:j(u.addr);if(this.log("autonat response for %a is %s",h,u.status),u.status===he.ResponseStatus.E_BAD_REQUEST||u.status===he.ResponseStatus.E_DIAL_REFUSED||u.addr==null&&t.length>1)continue;if(!t.some(p=>p.equals(h))){this.log("peer reported %a as %s but it was not in our observed address list",h,u.status);continue}let f=h.toString();if(c[f]==null&&(c[f]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[f].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[f].failure++,c[f].success===cp){this.log("%a is externally dialable",h),e.confirmObservedAddr(h);return}if(c[f].failure===cp){this.log("%a is not externally dialable",h),e.removeObservedAddr(h);return}}catch(h){this.log.error("could not verify external address",h)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function Xg(r={}){return e=>new F1(e,r)}var HI=q("dns4"),qI=q("dns6"),GI=q("dnsaddr"),Lo=ot(q("dns"),GI,HI,qI),V1=ot(q("ip4"),q("ip6")),Bi=ot(oe(V1,q("tcp")),oe(Lo,q("tcp"))),K1=oe(V1,q("udp")),WI=oe(K1,q("utp")),zI=oe(K1,q("quic")),YI=oe(K1,q("quic-v1")),lp=ot(oe(Bi,q("ws")),oe(Lo,q("ws"))),Mi=ot(oe(lp,q("p2p")),lp),up=ot(oe(Bi,q("wss")),oe(Lo,q("wss")),oe(Bi,q("tls"),q("ws")),oe(Lo,q("tls"),q("ws"))),Rs=ot(oe(up,q("p2p")),up),dp=ot(oe(Bi,q("http")),oe(V1,q("http")),oe(Lo,q("http"))),fp=ot(oe(Bi,q("https")),oe(V1,q("https")),oe(Lo,q("https"))),Qg=oe(K1,q("webrtc-direct"),q("certhash")),Jg=ot(oe(Qg,q("p2p")),Qg),jg=oe(YI,q("webtransport"),q("certhash"),q("certhash")),e9=ot(oe(jg,q("p2p")),jg),t9=ot(oe(Mi,q("p2p-webrtc-star"),q("p2p")),oe(Rs,q("p2p-webrtc-star"),q("p2p")),oe(Mi,q("p2p-webrtc-star")),oe(Rs,q("p2p-webrtc-star"))),xZ=ot(oe(Mi,q("p2p-websocket-star"),q("p2p")),oe(Rs,q("p2p-websocket-star"),q("p2p")),oe(Mi,q("p2p-websocket-star")),oe(Rs,q("p2p-websocket-star"))),r9=ot(oe(dp,q("p2p-webrtc-direct"),q("p2p")),oe(fp,q("p2p-webrtc-direct"),q("p2p")),oe(dp,q("p2p-webrtc-direct")),oe(fp,q("p2p-webrtc-direct"))),Ss=ot(lp,up,dp,fp,t9,r9,Bi,WI,zI,Lo,Jg,e9),vZ=ot(oe(Ss,q("p2p-stardust"),q("p2p")),oe(Ss,q("p2p-stardust"))),Po=ot(oe(Ss,q("p2p")),t9,r9,Jg,e9,q("p2p")),Zg=ot(oe(Po,q("p2p-circuit"),Po),oe(Po,q("p2p-circuit")),oe(q("p2p-circuit"),Po),oe(Ss,q("p2p-circuit")),oe(q("p2p-circuit"),Ss),q("p2p-circuit")),n9=()=>ot(oe(Zg,n9),Zg),jr=n9(),o9=ot(oe(jr,Po,jr),oe(Po,jr),oe(jr,Po),jr,Po);var RZ=ot(oe(jr,q("webrtc"),q("p2p")),oe(jr,q("webrtc")),oe(Ss,q("webrtc"),q("p2p")),oe(Ss,q("webrtc")),q("webrtc"));function s9(r){function e(t){let n;try{n=j(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function oe(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(o=>(n=typeof o=="function"?o().partialMatch(t):o.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:s9(e),partialMatch:e}}function ot(...r){function e(n){let o=null;return r.some(s=>{let i=typeof s=="function"?s().partialMatch(n):s.partialMatch(n);return i!=null?(o=i,!0):!1}),o}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:s9(e),partialMatch:e}}function q(r){let e=r;function t(o){let s;try{s=j(o)}catch{return!1}let i=s.protoNames();return i.length===1&&i[0]===e}function n(o){return o.length===0?null:o[0]===e?o.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var XI="bootstrap",QI=50,jI=12e4,ZI=1e3,hp=class extends me{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??ZI,this.list=[];for(let n of t.list){if(!o9.matches(n)){this.log.error("Invalid multiaddr");continue}let o=j(n),s=o.getPeerId();if(s==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let i={id:ye(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[qo]=this;[Symbol.toStringTag]="@libp2p/bootstrap";isStarted(){return!!this.timer}start(){this.isStarted()||(this.log("Starting bootstrap node discovery, discovering peers after %s ms",this.timeout),this.timer=setTimeout(()=>{this._discoverBootstrapPeers().catch(e=>{this.log.error(e)})},this.timeout))}async _discoverBootstrapPeers(){if(this.timer!=null)for(let e of this.list){if(await this.components.peerStore.merge(e.id,{tags:{[this._init.tagName??XI]:{value:this._init.tagValue??QI,ttl:this._init.tagTTL??jI}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function a9(r){return e=>new hp(e,r)}var c9={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var ac;(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)=>{let o={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.publicKey=t.bytes();break;case 2:o.payloadType=t.bytes();break;case 3:o.payload=t.bytes();break;case 5:o.signature=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(ac||(ac={}));var Zr=class r{static createFromProtobuf=async e=>{let t=ac.decode(e),n=await ht(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,o=e.codec,s=e.marshal(),i=l9(n,o,s),c=await(await Sr(t.privateKey)).sign(i.subarray());return new r({peerId:t,payloadType:o,payload:s,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new g("envelope signature is not valid for the given domain",c9.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:o,signature:s}=e;this.peerId=t,this.payloadType=n,this.payload=o,this.signature=s}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=ac.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return Z(this.marshal(),e.marshal())}async validate(e){let t=l9(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Gr(this.peerId.publicKey).verify(t.subarray(),this.signature)}},l9=(r,e,t)=>{let n=M(r),o=$e(n.byteLength),s=$e(e.length),i=$e(t.length);return new ce(o,n,s,e,i,t)};function u9(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 d9="libp2p-peer-record",f9=Uint8Array.from([3,1]);var cc;(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)=>{let a={multiaddr:new Uint8Array(0)},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let l=s.uint32();switch(l>>>3){case 1:a.multiaddr=s.bytes();break;default:s.skipType(l&7);break}}return a})),o),n.encode=s=>re(s,n.codec()),n.decode=s=>te(s,n.codec())})(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)=>{let s={peerId:new Uint8Array(0),seq:0n,addresses:[]},i=o==null?n.len:n.pos+o;for(;n.pos<i;){let a=n.uint32();switch(a>>>3){case 1:s.peerId=n.bytes();break;case 2:s.seq=n.uint64();break;case 3:s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32()));break;default:n.skipType(a&7);break}}return s})),t),r.encode=n=>re(n,r.codec()),r.decode=n=>te(n,r.codec())})(cc||(cc={}));var dr=class r{static createFromProtobuf=e=>{let t=cc.decode(e),n=Ze(t.peerId),o=(t.addresses??[]).map(i=>j(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=d9;static CODEC=f9;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=cc.encode({peerId:this.peerId.toBytes(),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||!u9(this.multiaddrs,e.multiaddrs))}};function et(r,e){let t=pn(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 h9="/libp2p/relay";var p9="circuit-relay-relay";var rJ=BigInt(131072),_s="/libp2p/circuit/relay/0.2.0/hop",pp="/libp2p/circuit/relay/0.2.0/stop",nJ=30*1e3,oJ=30*1e3,mp=300;var gp="ERR_RELAYED_DIAL",m9="ERR_HOP_REQUEST_FAILED";var Oo;(function(r){let e;(function(o){o.RESERVE="RESERVE",o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.RESERVE=0]="RESERVE",o[o.CONNECT=1]="CONNECT",o[o.STATUS=2]="STATUS"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ui.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),$1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Fi.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),At.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ui.codec().decode(o,o.uint32());break;case 3:i.reservation=$1.codec().decode(o,o.uint32());break;case 4:i.limit=Fi.codec().decode(o,o.uint32());break;case 5:i.status=At.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(Oo||(Oo={}));var gn;(function(r){let e;(function(o){o.CONNECT="CONNECT",o.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.CONNECT=0]="CONNECT",o[o.STATUS=1]="STATUS"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.peer!=null&&(s.uint32(18),Ui.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Fi.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),At.codec().encode(o.status,s)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.peer=Ui.codec().decode(o,o.uint32());break;case 3:i.limit=Fi.codec().decode(o,o.uint32());break;case 4:i.status=At.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(gn||(gn={}));var Ui;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:new Uint8Array(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.id=t.bytes();break;case 2:o.addrs.push(t.bytes());break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Ui||(Ui={}));var $1;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let s of t.addrs)n.uint32(18),n.bytes(s);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.expire=t.uint64();break;case 2:o.addrs.push(t.bytes());break;case 3:o.voucher=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})($1||($1={}));var Fi;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.duration=t.uint32();break;case 2:o.data=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Fi||(Fi={}));var At;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(At||(At={}));var yp;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(yp||(yp={}));(function(r){r.codec=()=>He(yp)})(At||(At={}));var g9;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={relay:new Uint8Array(0),peer:new Uint8Array(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.relay=t.bytes();break;case 2:o.peer=t.bytes();break;case 3:o.expiration=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(g9||(g9={}));async function y9(r){let e=new TextEncoder().encode(r),t=await Ce.digest(e);return le.createV0(t)}function wp(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var H1=class extends me{peerId;peerStore;contentRouting;registrar;started;topologyId;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.contentRouting=e.contentRouting,this.registrar=e.registrar}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(_s,{notifyOnTransient:!0,onConnect:e=>{this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}afterStart(){this.discover().catch(e=>{this.log.error("error discovering relays",e)})}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async discover(){this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[t=>t.protocols.includes(_s)],orders:[()=>Math.random()<.5?1:-1]});for(let t of e)this.log("found relay peer %p in content peer store",t.id),this.safeDispatchEvent("relay:discover",{detail:t.id});this.log("found %d relay peers in peer store",e.length);try{this.log("searching content routing for relays");let t=await y9(h9),n=0;for await(let o of this.contentRouting.findProviders(t))if(o.multiaddrs.length>0&&!o.id.equals(this.peerId)){let s=o.id;n++,await this.peerStore.merge(s,{multiaddrs:o.multiaddrs}),this.log("found relay peer %p in content routing",s),this.safeDispatchEvent("relay:discover",{detail:s})}this.log("found %d relay peers in content routing",n)}catch(t){this.log.error("failed when finding relays on the network",t)}}};var eD=60*1e3*10,tD=60*1e3*5,rD=30*1e3,q1=class extends me{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new it,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new pr({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding relay as the queue is full");return}if(this.reserveQueue.has(e)){this.log("relay peer is already in the reservation queue");return}this.log("add relay %p",e),await this.reserveQueue.add(async()=>{try{let n=this.reservations.get(e);if(n!=null){if(wp(n.reservation.expire)>eD){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(n.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((d,u)=>(u.type==="discovered"&&d++,d),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let o=AbortSignal.timeout(this.reservationCompletionTimeout),s=await this.connectionManager.openConnection(e,{signal:o});if(s.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let i=await this.#e(s,{signal:o});this.log("created reservation on relay peer %p",e);let a=wp(i.expire),c=Math.min(Math.max(a-tD,rD),Math.pow(2,31)-1),l=setTimeout(()=>{this.addRelay(e,t).catch(d=>{this.log.error("could not refresh reservation to relay %p",e,d)})},c);this.reservations.set(e,{timeout:l,reservation:i,type:t}),await this.peerStore.merge(e,{tags:{[p9]:{value:1,ttl:a}}}),await this.transportManager.listen([j(`/p2p/${e.toString()}/p2p-circuit`)])}catch(n){this.log.error("could not reserve slot on %p",e,n);let o=this.reservations.get(e);o!=null&&clearTimeout(o.timeout),this.reservations.delete(e)}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(_s,t),s=et(n).pb(Oo);await s.write({type:Oo.Type.RESERVE},t);let i;try{i=await s.read(t)}catch(c){throw this.log.error("error parsing reserve message response from %p because",e.remotePeer,c),n.abort(c),c}finally{await n.close()}if(i.status===At.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let d of i.reservation.addrs)if(Z(l,d)){c=!0;break}return c||i.reservation.addrs.push(l),i.reservation}let a=`reservation failed with status ${i.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};function Ep(r){let{stream:e,remoteAddr:t,logger:n}=r,o=n.forComponent("libp2p:stream:converter"),s=!1,i=!1,a=e.close.bind(e);e.close=async h=>{await a(h),u(!0)};let c=e.abort.bind(e);e.abort=h=>{c(h),u(!0)};let l=e.sink.bind(e);e.sink=async h=>{try{await l(h)}catch(f){f.type!=="aborted"&&o.error("%s error in sink",t,f)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let h of e.source)h instanceof Uint8Array?yield h:yield*h}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(h){h===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var bp=class extends me{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new it,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let o=this.relayStore.getReservation(n.remotePeer);if(o==null)throw new g("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,o.addrs.map(s=>j(s).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function w9(r){return new bp(r)}var oD=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(j)}catch{return!1}return!0},xp={maxInboundStopStreams:mp,maxOutboundStopStreams:mp,stopTimeout:3e4},G1=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??xp.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??xp.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??xp.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new H1(e),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(o=>{this.log.error("could not add discovered relay %p",n.detail,o)})})),this.reservationStore=new q1(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.discover().catch(n=>{this.log.error("could not discover relays",n)})}),this.started=!1}isStarted(){return this.started}async start(){this.reservationStore.start(),await this.registrar.handle(pp,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await this.discovery?.start(),this.started=!0}afterStart(){this.discovery?.afterStart()}async stop(){this.discovery?.stop(),this.reservationStore.stop(),await this.registrar.unhandle(pp),this.started=!1}[on]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(p=>p===290).length!==1){let p="Invalid circuit relay address";throw this.log.error(p,e),new g(p,gp)}let n=e.toString().split("/p2p-circuit"),o=j(n[0]),s=j(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let p=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(p),new g(p,gp)}let c=ye(i),l=ye(a),d=!1,h=this.connectionManager.getConnections(c)[0];h==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),h=await this.connectionManager.openConnection(c,t),d=!0);let f;try{return f=await h.newStream(_s),await this.connectV2({stream:f,connection:h,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(p){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,p),f?.abort(p),d&&await h.close(),p}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=et(e),l=c.pb(Oo);await l.write({type:Oo.Type.CONNECT,peer:{id:n.toBytes(),addrs:[j(o).bytes]}});let d=await l.read();if(d.status!==At.OK)throw new g(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,m9);let u=Ep({stream:c.unwrap(),remoteAddr:i,localAddr:s.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound transient connection %a",u.remoteAddr),await this.upgrader.upgradeOutbound(u,{transient:!0})}catch(c){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,c),a&&await t.close(),c}}createListener(e){return w9({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>jr.matches(t))}dialFilter(e){return this.listenFilter(e)}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(d){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",d)}let n=AbortSignal.timeout(this.stopTimeout),o=et(t).pb(gn),s=await o.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,s.type),s?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await o.write({type:gn.Type.STATUS,status:At.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==gn.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:gn.Type.STATUS,status:At.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!oD(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:gn.Type.STATUS,status:At.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=Ze(s.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,i)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await o.write({type:gn.Type.STATUS,status:At.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:gn.Type.STATUS,status:At.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=Ep({stream:o.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound transient connection %a",l.remoteAddr),await this.upgrader.upgradeInbound(l,{transient:!0}),this.log("%s connection %a upgraded","inbound",l.remoteAddr)}};function vp(r={}){return e=>new G1(e,r)}var E9=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},sD=new WeakMap;function iD({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(E9());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(E9())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((h,f)=>{i=()=>{d(),h(n)},a=f,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),sD.set(u,()=>{c(s),s=null,i()}),u}}var aD=iD(),W1=aD;var Jr;(function(r){let e;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.observedAddresses!=null)for(let a of o.observedAddresses)s.uint32(18),s.bytes(a);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={observedAddresses:[]},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.observedAddresses.push(o.bytes());break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(Jr||(Jr={}));function Rp(r,e){return ws.matches(r)||e.dialTransportForMultiaddr(r)==null?!1:Zu.matches(r)?!0:E7.matches(r)?Wt(r.toOptions().host)===!1:!1}var b9=1024*4,x9=100,z1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},Y1=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.timeout=t.timeout??z1.timeout,this.retries=t.retries??z1.retries,this.maxInboundStreams=t.maxInboundStreams??z1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??z1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(lc,{notifyOnTransient:!0,onConnect:(e,t)=>{t.transient&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(lc,e=>{this.handleIncomingUpgrade(e.stream,e.connection).catch(t=>{this.log.error("error during incoming DCUtR attempt",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(lc),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(e){if(await this.attemptUnilateralConnectionUpgrade(e))return;let t;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([lc],{signal:o.signal,runOnTransientConnection:!0});let s=et(t,{maxDataLength:b9}).pb(Jr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Jr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(u=>u.bytes)},o),this.log("B receiving connect from %p",e.remotePeer);let a=await s.read(o);if(a.type!==Jr.Type.CONNECT)throw this.log("A sent wrong message type"),new g("DCUtR message type was incorrect",Go);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Jr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await W1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:x9});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,d.remoteAddr),await e.close(o);break}catch(s){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,s),t?.abort(s),n===this.retries)throw s}finally{t!=null&&await t.close(o)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(o=>{let s=o.multiaddr;return s.getPeerId()==null?s.encapsulate(`/p2p/${e.remotePeer}`):s}).filter(o=>Rp(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let s=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(s.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,s.remoteAddr),await e.close({signal:o}),!0}catch(s){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,s)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",e.remotePeer);return!1}async handleIncomingUpgrade(e,t){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=et(e,{maxDataLength:b9}).pb(Jr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Jr.Type.CONNECT)throw this.log("B sent wrong message type"),new g("DCUtR message type was incorrect",Go);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new g("DCUtR connect message had no multiaddrs",Go);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new g("DCUtR connect message had no dialable multiaddrs",Go);if(this.log("A sending connect"),await o.write({type:Jr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Jr.Type.SYNC)throw new g("DCUtR message type was incorrect",Go);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:x9,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",t.remotePeer,o),e.abort(o)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let o=j(n);if(!Rp(o,this.transportManager))continue;t.push(o)}catch{}return t}};var lc="/libp2p/dcutr";function v9(r={}){return e=>new Y1(e,r)}var R9="0.1.0",S9="id",_9="id/push",A9="1.0.0",I9="1.0.0";var k9=Xe(T9(),1),Sp=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,X1=(0,k9.default)(),Q1=Sp&&!X1,C9=X1&&!Sp,N9=X1&&Sp,P9=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!X1,j1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,fee=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",L9=typeof navigator<"u"&&navigator.product==="ReactNative";var As;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.protocolVersion!=null&&(n.uint32(42),n.string(t.protocolVersion)),t.agentVersion!=null&&(n.uint32(50),n.string(t.agentVersion)),t.publicKey!=null&&(n.uint32(10),n.bytes(t.publicKey)),t.listenAddrs!=null)for(let s of t.listenAddrs)n.uint32(18),n.bytes(s);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let s of t.protocols)n.uint32(26),n.string(s);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 5:o.protocolVersion=t.string();break;case 6:o.agentVersion=t.string();break;case 1:o.publicKey=t.bytes();break;case 2:o.listenAddrs.push(t.bytes());break;case 4:o.observedAddr=t.bytes();break;case 3:o.protocols.push(t.string());break;case 8:o.signedPeerRecord=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(As||(As={}));var _p=1024*8,kr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},Z1=class{identifyProtocolStr;identifyPushProtocolStr;host;started;timeout;peerId;peerStore;registrar;connectionManager;addressManager;maxInboundStreams;maxOutboundStreams;maxPushIncomingStreams;maxPushOutgoingStreams;maxIdentifyMessageSize;maxObservedAddresses;events;runOnTransientConnection;log;constructor(e,t={}){this.started=!1,this.peerId=e.peerId,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.connectionManager=e.connectionManager,this.events=e.events,this.log=e.logger.forComponent("libp2p:identify"),this.identifyProtocolStr=`/${t.protocolPrefix??kr.protocolPrefix}/${S9}/${A9}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??kr.protocolPrefix}/${_9}/${I9}`,this.timeout=t.timeout??kr.timeout,this.maxInboundStreams=t.maxInboundStreams??kr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??kr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??kr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??kr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??kr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??kr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??kr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??kr.protocolPrefix}/${R9}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??kr.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let o=n.detail;this.identify(o).catch(s=>{this.log.error("error during identify trigged by connection:open",s)})}),e.events.addEventListener("self:peer:update",n=>{this.push().catch(o=>{this.log.error(o)})}),this.host.agentVersion===`${e.nodeInfo.name}/${e.nodeInfo.version}`&&(P9||C9?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(Q1||j1||N9||L9)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:M(this.host.agentVersion),ProtocolVersion:M(this.host.protocolVersion)}}),await this.registrar.handle(this.identifyProtocolStr,e=>{this._handleIdentify(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),await this.registrar.handle(this.identifyPushProtocolStr,e=>{this._handlePush(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxPushIncomingStreams,maxOutboundStreams:this.maxPushOutgoingStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.identifyProtocolStr),await this.registrar.unhandle(this.identifyPushProtocolStr),this.started=!1}async pushToConnections(e){let t=this.addressManager.getAddresses().map(d=>d.decapsulateCode(ee("p2p").code)),n=new dr({peerId:this.peerId,multiaddrs:t}),o=await Zr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=O(i.metadata.get("AgentVersion")??M(this.host.agentVersion)),c=O(i.metadata.get("ProtocolVersion")??M(this.host.protocolVersion)),l=e.map(async d=>{let u,h=AbortSignal.timeout(this.timeout);G(1/0,h);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:h,runOnTransientConnection:this.runOnTransientConnection}),await et(u,{maxDataLength:this.maxIdentifyMessageSize??_p}).pb(As).write({listenAddrs:t.map(p=>p.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:h}),await u.close({signal:h})}catch(f){this.log.error("could not push identify update to peer",f),u?.abort(f)}});await Promise.all(l)}async push(){if(!this.isStarted())return;let e=[];await Promise.all(this.connectionManager.getConnections().map(async t=>{try{if(!(await this.peerStore.get(t.remotePeer)).protocols.includes(this.identifyPushProtocolStr))return;e.push(t)}catch(n){if(n.code!==y4)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);G(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await et(n,{maxDataLength:this.maxIdentifyMessageSize??_p}).pb(As).read(t);return await n.close(t),s}catch(o){throw this.log.error("error while reading identify message",o),n?.abort(o),o}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:o,protocols:s,observedAddr:i}=n;if(o==null)throw new g("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await ht(o);if(!e.remotePeer.equals(a))throw new g("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new g("identified peer is our own peer id?","ERR_INVALID_PEER");let c=lD(i);return this.log("identify completed for peer %p and protocols %o",a,s),this.log("our observed address is %a",c),c!=null&&this.addressManager.getObservedAddrs().length<(this.maxObservedAddresses??1/0)&&(this.log("storing our observed address %a",c),this.addressManager.addObservedAddr(c)),this.#e(e,n)}async _handleIdentify(e){let{connection:t,stream:n}=e,o=AbortSignal.timeout(this.timeout);G(1/0,o);try{let s=this.peerId.publicKey??new Uint8Array(0),i=await this.peerStore.get(this.peerId),a=this.addressManager.getAddresses().map(u=>u.decapsulateCode(ee("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new dr({peerId:this.peerId,multiaddrs:a});c=(await Zr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;w7.matches(t.remoteAddr)||(l=void 0),await et(n).pb(As).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:s,listenAddrs:a.map(u=>u.bytes),signedPeerRecord:c,observedAddr:l,protocols:i.protocols},{signal:o}),await n.close({signal:o})}catch(s){this.log.error("could not respond to identify request",s),n.abort(s)}}async _handlePush(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let o={signal:AbortSignal.timeout(this.timeout)},i=await et(n,{maxDataLength:this.maxIdentifyMessageSize??_p}).pb(As).read(o);await n.close(o),await this.#e(t,i)}catch(o){this.log.error("received invalid message",o),n.abort(o);return}this.log("handled push from %p",t.remotePeer)}async#e(e,t){if(this.log("received identify from %p",e.remotePeer),t==null)throw new g("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:j(i)}))),t.protocols.length>0&&(n.protocols=t.protocols),t.publicKey!=null&&(n.publicKey=t.publicKey,!(await ht(t.publicKey)).equals(e.remotePeer)))throw new g("public key did not match remote PeerId","ERR_INVALID_PUBLIC_KEY");let o;if(t.signedPeerRecord!=null){this.log("received signedPeerRecord from %p",e.remotePeer);let i=t.signedPeerRecord,a=await Zr.openAndCertify(i,dr.DOMAIN),c=dr.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new g("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new g("signing key does not match remote PeerId","ERR_INVALID_PEER_RECORD_KEY");let l;try{l=await this.peerStore.get(c.peerId)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d}if(l!=null&&(n.metadata=l.metadata,l.peerRecordEnvelope!=null)){let d=await Zr.createFromProtobuf(l.peerRecordEnvelope),u=dr.createFromProtobuf(d.payload);u.seqNumber>=c.seqNumber&&(this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",u.seqNumber,c.seqNumber),c=u,i=l.peerRecordEnvelope)}n.peerRecordEnvelope=i,n.addresses=c.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),o={seq:c.seqNumber,addresses:c.multiaddrs}}else this.log("%p did not send a signed peer record",e.remotePeer);if(this.log("patching %p with",e.remotePeer,n),await this.peerStore.patch(e.remotePeer,n),t.agentVersion!=null||t.protocolVersion!=null){let i={};t.agentVersion!=null&&(i.AgentVersion=M(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=M(t.protocolVersion)),this.log("merging %p metadata",e.remotePeer,i),await this.peerStore.merge(e.remotePeer,{metadata:i})}let s={peerId:e.remotePeer,protocolVersion:t.protocolVersion,agentVersion:t.agentVersion,publicKey:t.publicKey,listenAddrs:t.listenAddrs.map(i=>j(i)),observedAddr:t.observedAddr==null?void 0:j(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function lD(r){if(r!=null&&r.length>0)try{return j(r)}catch{}}function O9(r={}){return e=>new Z1(e,r)}var B9="/ipfs/kad/1.0.0",M9="/dht/record",Ap="/dht/provider";var uc;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&t.key.byteLength>0&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&t.value.byteLength>0&&(n.uint32(18),n.bytes(t.value)),t.timeReceived!=null&&t.timeReceived!==""&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n,o={})=>{let s={key:Ae(0),value:Ae(0),timeReceived:""},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let a=t.uint32();switch(a>>>3){case 1:{s.key=t.bytes();break}case 2:{s.value=t.bytes();break}case 5:{s.timeReceived=t.string();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)})(uc||(uc={}));function U9(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),s=String(r.getUTCMinutes()).padStart(2,"0"),i=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${s}:${i}.${c}Z`}function F9(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,s=parseInt(t[3],10),i=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,s,i,a,c,l))}var It=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return uc.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:U9(this.timeReceived)}}static deserialize(e){let t=uc.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=F9(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var V9;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.key!=null&&(n.uint32(10),n.bytes(t.key)),t.value!=null&&(n.uint32(18),n.bytes(t.value)),t.author!=null&&(n.uint32(26),n.bytes(t.author)),t.signature!=null&&(n.uint32(34),n.bytes(t.signature)),t.timeReceived!=null&&(n.uint32(42),n.string(t.timeReceived)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.key=t.bytes();break}case 2:{o.value=t.bytes();break}case 3:{o.author=t.bytes();break}case 4:{o.signature=t.bytes();break}case 5:{o.timeReceived=t.string();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(V9||(V9={}));var be;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})(be||(be={}));var J1;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(J1||(J1={}));(function(r){r.codec=()=>He(J1)})(be||(be={}));var Ki;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Ki||(Ki={}));var Ip;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(Ip||(Ip={}));(function(r){r.codec=()=>He(Ip)})(Ki||(Ki={}));var Vi;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let s of t.multiaddrs)n.uint32(18),n.bytes(s);t.connection!=null&&(n.uint32(24),Ki.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Ae(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.id=t.bytes();break}case 2:{o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Ki.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Vi||(Vi={}));var Cr;(function(r){let e;r.codec=()=>(e==null&&(e=ne((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&J1[t.type]!==0&&(n.uint32(8),be.codec().encode(t.type,n)),t.clusterLevel!=null&&(n.uint32(80),n.int32(t.clusterLevel)),t.key!=null&&(n.uint32(18),n.bytes(t.key)),t.record!=null&&(n.uint32(26),n.bytes(t.record)),t.closer!=null)for(let s of t.closer)n.uint32(66),Vi.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Vi.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:be.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.type=be.codec().decode(t);break}case 10:{o.clusterLevel=t.int32();break}case 2:{o.key=t.bytes();break}case 3:{o.record=t.bytes();break}case 8:{o.closer.push(Vi.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Vi.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(Cr||(Cr={}));function Dp(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new bt("kad-dht:query:send-query",{detail:t})),t}function dc(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer!=null?r.closer:[],providers:r.providers!=null?r.providers:[]};return e.onProgress?.(new bt("kad-dht:query:peer-response",{detail:t})),t}function ed(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new bt("kad-dht:query:final-peer",{detail:t})),t}function fr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new bt("kad-dht:query:query-error",{detail:t})),t}function Tp(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new bt("kad-dht:query:provider",{detail:t})),t}function fc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new bt("kad-dht:query:value",{detail:t})),t}function kp(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new bt("kad-dht:query:dial-peer",{detail:t})),t}function K9(r,e,t){if(t.length===0){let i="No records given";throw new g(i,"ERR_NO_RECORDS_RECEIVED")}let o=O(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new g(i,"ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")}let s=r[o[1].toString()];if(s==null){let i=`No selector function configured for key type "${o[1]}"`;throw new g(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function dD(r,e){return 0}var $9={pk:dD};async function $i(r,e){let t=e.key,o=O(t).split("/");if(o.length<3)return;let s=r[o[1].toString()];if(s==null){let i=`No validator available for key type "${o[1]}"`;throw new g(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var fD=async(r,e)=>{if(!(r instanceof Uint8Array))throw new g('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new g("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(O(r.subarray(0,4))!=="/pk/")throw new g("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await Ce.digest(e);if(!Z(n,o.bytes))throw new g("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},H9={pk:fD};var hD=M("/pk/");function q9(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>{let[[t,n]]=e.stringTuples();if(t===53||t===54||t===55)return n!=="localhost";if(t!==4&&t!==6||n==null)return!1;let o=Wt(n);return o==null?!0:!o})}}async function Bo(r){return(await Ce.digest(r)).digest}async function en(r){return Bo(r.toBytes())}function Mo(r){return new Le(`${M9}/${O(r,"base32")}`,!1)}function G9(r){return ve([hD,r.toBytes()])}function W9(r){return O(r.subarray(0,4))==="/pk/"}function z9(r){return Ze(r.subarray(4))}function Cp(r,e){let t=new Date;return new It(r,e,t).serialize()}function Y9(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var pD=290,mD=54,gD=55,yD=56,wD=4,ED=41;function X9(r){let e=r.stringTuples();for(let t of e)if(t[0]===pD)return!1;if(e[0][0]===mD||e[0][0]===gD||e[0][0]===yD)return!0;if(e[0][0]===wD||e[0][0]===ED){let t=Wt(`${e[0][1]}`);return t==null||!t}return!1}var td=class{log;components;validators;selectors;peerRouting;queryManager;network;constructor(e,t){let{validators:n,selectors:o,peerRouting:s,queryManager:i,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.validators=n,this.selectors=o,this.peerRouting=s,this.queryManager=i,this.network=a}async getLocal(e){this.log("getLocal %b",e);let t=Mo(e);this.log("fetching record for key %k",t);let n=await this.components.datastore.get(t);this.log("found %k in local datastore",t);let o=It.deserialize(n);return await $i(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=Cp(e,n);for(let{value:i,from:a}of t){if(Z(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=Mo(e);this.log(`Storing corrected record for key ${d.toString()}`),await this.components.datastore.put(d,s.subarray())}catch(d){this.log.error("Failed error correcting self",d)}continue}let c=!1,l={type:be.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&Z(d.record.value,It.deserialize(s).value)&&(c=!0),yield d;c||(yield fr({from:a,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},o)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let o=Cp(e,t),s=Mo(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Qe(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>gr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:be.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let d of this.network.sendRequest(a.peer.id,l,n))c.push(d),d.name==="PEER_RESPONSE"&&(d.record!=null&&Z(d.record.value,It.deserialize(o).value)||c.push(fr({from:a.peer.id,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Xn(i,{ordered:!1,concurrency:3}),async function*(i){for await(let a of i)yield*a})}async*get(e,t={}){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t))a.name==="VALUE"&&n.push(a),yield a;if(n.length===0)return;let o=n.map(a=>a.value),s=0;try{s=K9(this.selectors,e,o)}catch(a){if(a.code!=="ERR_NO_SELECTOR_FUNCTION_FOR_RECORD_KEY")throw a}let i=o[s];if(this.log("GetValue %b %b",e,i),i==null)throw new g("best value was not found","ERR_NOT_FOUND");yield*this.sendCorrectionRecord(e,n,i,t),yield n[s]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let s=await this.getLocal(e);yield fc({value:s.value,from:this.components.peerId},t)}catch(s){this.log("error getting local value for %b",e,s)}let n=this,o=async function*({peer:s,signal:i}){for await(let a of n.peerRouting.getValueOrPeers(s,e,{signal:i}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield fc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function Q9(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function hc(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:Ze(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>j(e))}}var rd=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:s,routingTable:i,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=s,this.routingTable=i,this.providers=a}async*provide(e,t,n={}){this.log("provide %s",e),await this.providers.addProvider(e,this.components.peerId);let o={type:be.ADD_PROVIDER,key:e.multihash.bytes,providers:[Q9({id:this.components.peerId,multiaddrs:t})]},s=0,i=a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[];this.log("putProvider %s to %p",e,a.peer.id);try{this.log("sending provider record for %s to %p",e,a.peer.id);for await(let l of this.network.sendMessage(a.peer.id,o,n))l.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,a.peer.id),s++),c.push(l)}catch(l){this.log.error("error sending provide record to peer %p",a.peer.id,l),c.push(fr({from:a.peer.id,error:l},n))}return c};yield*Qe(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>gr(a,c=>i(c)),a=>Xn(a,{ordered:!1,concurrency:3}),async function*(a){for await(let c of a)yield*c}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,s=e.multihash.bytes,i=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let d=[];for(let u of a.slice(0,n))try{let h=await this.components.peerStore.get(u);d.push({id:u,multiaddrs:h.addresses.map(({multiaddr:f})=>f)})}catch(h){if(h.code!=="ERR_NOT_FOUND")throw h;this.log("no peer store entry for %p",u)}if(yield dc({from:this.components.peerId,messageType:be.GET_PROVIDERS,providers:d},t),yield Tp({from:this.components.peerId,providers:d},t),o+=d.length,o>=n)return}let c=async function*({peer:d,signal:u}){let h={type:be.GET_PROVIDERS,key:s};yield*i.network.sendRequest(d,h,{...t,signal:u})},l=new pt(a);for await(let d of this.queryManager.run(s,c,t))if(yield d,d.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",d.providers.length,e,d.closer.length);let u=[];for(let h of d.providers)l.has(h.id)||(l.add(h.id),u.push(h));if(u.length>0&&(yield Tp({from:d.from,providers:u},t),o+=u.length,o>=n))return}}};var nd=class extends me{log;protocol;running;components;constructor(e,t){super();let{protocol:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=n}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Rn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield kp({peer:e},n),yield Dp({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),c=await this._writeReadMessage(a,t,n);yield dc({from:e,messageType:c.type,closer:c.closer.map(hc),providers:c.providers.map(hc),record:c.record==null?void 0:It.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield fr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async*sendMessage(e,t,n={}){if(!this.running)return;let o=t.type;if(o==null)throw new Rn("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield kp({peer:e},n),yield Dp({to:e,type:o},n);let s;try{let a=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);await this._writeMessage(a,t,n),yield dc({from:e,messageType:o},n)}catch(i){yield fr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=et(e);await o.write(t,Cr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=et(e);await o.write(t,Cr,n);let s=await o.read(Cr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:hc(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:hc(i)})}),s}};var od=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return this.peerDistances.map(e=>e.peerId)}async add(e){if(this.peerDistances.find(o=>o.peerId.equals(e))!=null)return;let t=await en(e),n={peerId:e,distance:Yn(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>A1(o.distance,s.distance)),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async anyCloser(e){if(e.length===0)return!1;if(this.length===0)return!0;let t=await Promise.all(e.map(en)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Yn(this.originDhtKey,o);if(A1(s,n)<0)return!0}return!1}};var sd=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){let{routingTable:n,network:o,validators:s,queryManager:i,logPrefix:a}=t;this.routingTable=n,this.network=o,this.validators=s,this.queryManager=i,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${a}:peer-routing`)}async findPeerLocal(e){let t,n=await this.routingTable.find(e);if(n!=null){this.log("findPeerLocal found %p in routing table",e);try{t=await this.peerStore.get(n)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}}if(t==null)try{t=await this.peerStore.get(e)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(o=>o.multiaddr)}}async*_getValueSingle(e,t,n={}){let o={type:be.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=G9(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await ht(nu.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new g("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new g("public key missing","ERR_PUBLIC_KEY_MISSING");yield fc({from:e,value:s.publicKey},t)}throw new g(`Node not responding with its public key: ${e.toString()}`,"ERR_INVALID_RECORD")}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e);if(o!=null){this.log("found local"),yield ed({from:this.peerId,peer:o},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,s=async function*({peer:i,signal:a}){let c={type:be.FIND_NODE,key:e.toBytes()};for await(let l of o.network.sendRequest(i,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let d=l.closer.find(u=>u.id.equals(e));d!=null&&(yield ed({from:l.from,peer:d},t))}};for await(let i of this.queryManager.run(e.toBytes(),s,t))i.name==="FINAL_PEER"&&(n=!0),yield i}n||(yield fr({from:this.peerId,error:new g("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Bo(e),o=this.routingTable.closestPeers(n),s=this,i=new od(n,this.routingTable.kBucketSize);await Promise.all(o.map(async c=>{await i.add(c)}));let a=async function*({peer:c,signal:l}){s.log("closerPeersSingle %s from %p",O(e,"base32"),c);let d={type:be.FIND_NODE,key:e};yield*s.network.sendRequest(c,d,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))yield c,c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await i.add(l.id)}));this.log("found %d peers close to %b",i.length,e);for(let c of i.peers)try{let l=await this.peerStore.get(c);yield ed({from:this.peerId,peer:{id:c,multiaddrs:l.addresses.map(({multiaddr:d})=>d)}},t)}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}}async*getValueOrPeers(e,t,n={}){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record)}catch{let i="invalid record received, discarded";this.log(i),yield fr({from:o.from,error:new g(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new g("invalid record received","ERR_INVALID_RECORD");await $i(this.validators,new It(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Bo(e),o=this.routingTable.closestPeers(n),s=[];for(let i of o)if(!i.equals(t))try{let a=await this.peerStore.get(i);s.push({id:i,multiaddrs:a.addresses.map(({multiaddr:c})=>c)})}catch(a){if(a.code!=="ERR_NOT_FOUND")throw a}return s.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",s.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),s}};var j9=Xe(v0(),1);var id=class{log;datastore;cache;cleanupInterval;provideValidity;syncQueue;started;cleaner;constructor(e,t={}){let{cacheSize:n,cleanupInterval:o,provideValidity:s}=t;this.log=e.logger.forComponent("libp2p:kad-dht:providers"),this.datastore=e.datastore,this.cleanupInterval=o??36e5,this.provideValidity=s??864e5,this.cache=(0,j9.default)(n??256),this.syncQueue=new Gt({concurrency:1}),this.started=!1}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cleaner=setInterval(()=>{this._cleanup().catch(e=>{this.log.error(e)})},this.cleanupInterval))}async stop(){this.started=!1,this.cleaner!=null&&(clearInterval(this.cleaner),this.cleaner=void 0)}async _cleanup(){await this.syncQueue.add(async()=>{let e=Date.now(),t=0,n=0,o=new Map,s=this.datastore.batch(),i=this.datastore.query({prefix:Ap});for await(let a of i)try{let{cid:c,peerId:l}=Z9(a.key),d=J9(a.value).getTime(),u=Date.now(),h=u-d,f=h>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,h,this.provideValidity,f?"(expired)":""),f){n++,s.delete(a.key);let p=o.get(c)??new Set;p.add(l),o.set(c,p)}t++}catch(c){this.log.error(c.message)}o.size>0?(this.log("deleting %d / %d entries",n,t),await s.commit()):this.log("nothing to delete");for(let[a,c]of o){let l=pc(a),d=this.cache.get(l);if(d!=null){for(let u of c)d.delete(u);d.size===0?this.cache.remove(l):this.cache.set(l,d)}}this.log("Cleanup successful (%dms)",Date.now()-e)})}async _getProvidersMap(e){let t=pc(e),n=this.cache.get(t);return n==null&&(n=await SD(this.datastore,e),this.cache.set(t,n)),n}async addProvider(e,t){await this.syncQueue.add(async()=>{this.log("%p provides %s",t,e);let n=await this._getProvidersMap(e);this.log("loaded %s provs",n.size);let o=new Date;n.set(t.toString(),o);let s=pc(e);this.cache.set(s,n),await RD(this.datastore,e,t,o)})}async getProviders(e){return this.syncQueue.add(async()=>(this.log("get providers for %s",e),[...(await this._getProvidersMap(e)).keys()].map(n=>ye(n))),{throwOnTimeout:!0})}};function pc(r){let e=typeof r=="string"?r:O(r.multihash.bytes,"base32");return`${Ap}/${e}`}async function RD(r,e,t,n){let o=[pc(e),"/",t.toString()].join(""),s=new Le(o),i=$e(n.getTime());await r.put(s,i)}function Z9(r){let e=r.toString().split("/");if(e.length!==5)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:e[3],peerId:e[4]}}async function SD(r,e){let t=new Map,n=r.query({prefix:pc(e)});for await(let o of n){let{peerId:s}=Z9(o.key);t.set(s,J9(o.value))}return t}function J9(r){return new Date(Bt(r))}async function*ey(r,e,t,n){let o=ft({objectMode:!0}),s=u=>{n("clean up queue, results %d, queue size %d, pending tasks %d",o.readableLength,r.size,r.pending),r.clear(),o.end(u)},i=u=>{u!=null&&o.push(u)},a=u=>{n("queue error",u),s(u)},c=()=>{n("queue idle"),s()},l=()=>{n("abort queue"),s(new g("Query aborted","ERR_QUERY_ABORTED"))},d=()=>{s()};r.on("completed",i),r.on("error",a),r.on("idle",c),e.addEventListener("abort",l),t.addEventListener("cleanup",d);try{yield*o}finally{r.removeListener("completed",i),r.removeListener("error",a),r.removeListener("idle",c),e.removeEventListener("abort",l),t.removeEventListener("cleanup",d)}}var _D=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*ty(r){let{key:e,startingPeer:t,ourPeerId:n,signal:o,query:s,alpha:i,pathIndex:a,numPaths:c,cleanUp:l,queryFuncTimeout:d,log:u,peersSeen:h}=r,f=new Gt({concurrency:i}),p=await Bo(e);function m(y,w){if(y==null)return;h.add(y);let b=BigInt("0x"+O(Yn(w,p),"base16"));f.add(async()=>{let E=[o];d!=null&&E.push(AbortSignal.timeout(d));let x=Pe(E);G(1/0,x);try{for await(let v of s({key:e,peer:y,signal:x,pathIndex:a,numPaths:c})){if(x.aborted)return;if(v.name==="PEER_RESPONSE")for(let I of v.closer){if(h.has(I.id)){u("already seen %p in query",I.id);continue}if(n.equals(I.id)){u("not querying ourselves");continue}let S=await en(I.id);if(BigInt("0x"+O(Yn(S,p),"base16"))>b){u("skipping %p as they are not closer to %b than %p",I.id,e,y);continue}u("querying closer peer %p",I.id),m(I.id,S)}f.emit("completed",v)}}catch(v){if(!o.aborted)return fr({from:y,error:v},r)}finally{x.clear()}},{priority:_D-b}).catch(E=>{u.error(E)})}m(t,await en(t)),yield*ey(f,o,l,u)}var ad=class{disjointPaths;alpha;shutDownController;running;queries;logger;peerId;routingTable;initialQuerySelfHasRun;logPrefix;metrics;constructor(e,t){let{disjointPaths:n=20,alpha:o=3,logPrefix:s}=t;this.logPrefix=s,this.disjointPaths=n??20,this.running=!1,this.alpha=o??3,this.queries=0,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,e.metrics!=null&&(this.metrics={runningQueries:e.metrics.registerMetric(`${s.replaceAll(":","_")}_running_queries`),queryTime:e.metrics.registerMetric(`${s.replaceAll(":","_")}_query_time_seconds`)}),this.shutDownController=new AbortController,G(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0,this.shutDownController=new AbortController,G(1/0,this.shutDownController.signal)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");let o=this.metrics?.queryTime.timer();if(n.signal==null){let u=AbortSignal.timeout(3e4);G(1/0,u),n={...n,signal:u}}let s=new AbortController,i=Pe([this.shutDownController.signal,s.signal,n.signal]);G(1/0,i,s.signal);let a=this.logger.forComponent(`${this.logPrefix}:query:`+O(e,"base58btc")),c=Date.now(),l=new me,d=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(a("waiting for initial query-self query before continuing"),await Ue(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),a("query:start"),this.queries++,this.metrics?.runningQueries.update(this.queries);let u=await Bo(e),h=this.routingTable.closestPeers(u),f=h.slice(0,Math.min(this.disjointPaths,h.length));if(h.length===0){a.error("Running query with no peers");return}let p=new pt,m=f.map((y,w)=>ty({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:f.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:p,onProgress:n.onProgress}));for await(let y of Mt(...m))y.name==="QUERY_ERROR"&&a.error("query error",y.error),yield y;d=!0}catch(u){if(!(!this.running&&u.code==="ERR_QUERY_ABORTED"))throw u}finally{d||(a("query exited early"),s.abort()),i.clear(),this.queries--,this.metrics?.runningQueries.update(this.queries),o?.(),l.dispatchEvent(new bt("cleanup")),a("query:done in %dms",Date.now()-c)}}};function AD(r){return r[Symbol.asyncIterator]!=null}function ID(r){if(AD(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var cd=ID;var DD=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 TD(r,e,t){let n,o=new Promise((s,i)=>{if(t={rejectionEvents:["error"],multiArgs:!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}=DD(r),u=(...f)=>{let p=t.multiArgs?f:f[0];t.filter&&!t.filter(p)||(c.push(p),t.count===c.length&&(n(),s(c)))},h=f=>{n(),i(f)};n=()=>{for(let f of a)d(f,u);for(let f of t.rejectionEvents)d(f,h)};for(let f of a)l(f,u);for(let f of t.rejectionEvents)l(f,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Wr(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function mc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=TD(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var ld=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;started;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){let{peerRouting:n,logPrefix:o,count:s,interval:i,queryTimeout:a,routingTable:c}=t;this.peerId=e.peerId,this.log=e.logger.forComponent(`${o}:query-self`),this.started=!1,this.peerRouting=n,this.routingTable=c,this.count=s??20,this.interval=i??3e5,this.initialInterval=t.initialInterval??1e3,this.queryTimeout=a??5e3,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun}isStarted(){return this.started}start(){this.started||(this.started=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.started=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.started){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=J(),this.started){this.controller=new AbortController;let e=AbortSignal.timeout(this.queryTimeout),t=Pe([this.controller.signal,e]);G(1/0,t,this.controller.signal,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await mc(this.routingTable,"peer:add",{signal:t})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await Qe(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:t,isSelfQuery:!0}),s=>to(s,this.count),async s=>cd(s));this.log("self-query found %d peers in %dms",o,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.started&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};function ny(r,e){if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;++t)if(r[t]!==e[t])return!1;return!0}function Lp(){return{contacts:[],dontSplit:!1,left:null,right:null}}function gc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var ud=class r extends me{localNodeId;root;numberOfNodesPerKBucket;numberOfNodesToPing;distance;arbiter;constructor(e){super(),this.localNodeId=e.localNodeId,this.numberOfNodesPerKBucket=e.numberOfNodesPerKBucket??20,this.numberOfNodesToPing=e.numberOfNodesToPing??3,this.distance=e.distance??r.distance,this.arbiter=e.arbiter??r.arbiter,gc("option.localNodeId as parameter 1",this.localNodeId),this.root=Lp()}static arbiter(e,t){return(e.vectorClock??0)>(t.vectorClock??0)?e:t}static distance(e,t){let n=0,o=0,s=Math.min(e.length,t.length),i=Math.max(e.length,t.length);for(;o<s;++o)n=n*256+(e[o]^t[o]);for(;o<i;++o)n=n*256+255;return n}add(e){gc("contact.id",e?.id);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e.id,t++);let o=this._indexOf(n,e.id);return o>=0?(this._update(n,o,e),this):n.contacts.length<this.numberOfNodesPerKBucket?(n.contacts.push(e),this.safeDispatchEvent("added",{detail:e}),this):n.dontSplit?(this.safeDispatchEvent("ping",{detail:{oldContacts:n.contacts.slice(0,this.numberOfNodesToPing),newContact:e}}),this):(this._split(n,t),this.add(e))}closest(e,t=1/0){if(gc("id",e),!Number.isInteger(t)&&t!==1/0||t<=0)throw new TypeError("n is not positive number");let n=[];for(let o=[this.root],s=0;o.length>0&&n.length<t;){let i=o.pop();if(i!=null)if(i.contacts===null){let a=this._determineNode(i,e,s++);o.push(i.left===a?i.right:i.left),o.push(a)}else n=n.concat(i.contacts)}return n.map(o=>({distance:this.distance(o.id,e),contact:o})).sort((o,s)=>o.distance-s.distance).slice(0,t).map(o=>o.contact)}count(){let e=0;for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e+=n.contacts.length)}return e}_determineNode(e,t,n){let o=n>>3,s=n%8;return t.length<=o&&s!==0?e.left:t[o]&1<<7-s?e.right:e.left}get(e){gc("id",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);return o>=0?n.contacts[o]:void 0}_indexOf(e,t){for(let n=0;n<e.contacts.length;++n)if(ny(e.contacts[n].id,t))return n;return-1}remove(e){gc("the id as parameter 1",e);let t=0,n=this.root;for(;n.contacts===null;)n=this._determineNode(n,e,t++);let o=this._indexOf(n,e);if(o>=0){let s=n.contacts.splice(o,1)[0];this.safeDispatchEvent("removed",{detail:s})}return this}_split(e,t){e.left=Lp(),e.right=Lp();for(let s of e.contacts)this._determineNode(e,s.id,t).contacts.push(s);e.contacts=null;let n=this._determineNode(e,this.localNodeId,t),o=e.left===n?e.right:e.left;o.dontSplit=!0}toArray(){let e=[];for(let t=[this.root];t.length>0;){let n=t.pop();n!=null&&(n.contacts===null?t.push(n.right,n.left):e=e.concat(n.contacts))}return e}*toIterable(){for(let e=[this.root];e.length>0;){let t=e.pop();t!=null&&(t.contacts===null?e.push(t.right,t.left):yield*t.contacts)}}_update(e,t,n){if(!ny(e.contacts[t].id,n.id))throw new Error("wrong index for _update");let o=e.contacts[t],s=this.arbiter(o,n);s===o&&o!==n||(e.contacts.splice(t,1),e.contacts.push(s),this.safeDispatchEvent("updated",{detail:{incumbent:o,selection:s}}))}};var kD="kad-close",CD=50,oy=20,ND=1e4,PD=10,dd=class extends me{kBucketSize;kb;pingQueue;log;components;pingTimeout;pingConcurrency;running;protocol;tagName;tagValue;metrics;constructor(e,t){super();let{kBucketSize:n,pingTimeout:o,logPrefix:s,pingConcurrency:i,protocol:a,tagName:c,tagValue:l}=t;this.components=e,this.log=e.logger.forComponent(`${s}:routing-table`),this.kBucketSize=n??oy,this.pingTimeout=o??ND,this.pingConcurrency=i??PD,this.running=!1,this.protocol=a,this.tagName=c??kD,this.tagValue=l??CD,this.pingQueue=new pr({concurrency:this.pingConcurrency,metricName:`${s.replaceAll(":","_")}_ping_queue`,metrics:this.components.metrics}),this.pingQueue.addEventListener("error",d=>{this.log.error("error pinging peer",d.detail)}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${s.replaceAll(":","_")}_routing_table_size`)})}isStarted(){return this.running}async start(){this.running=!0;let e=new ud({localNodeId:await en(this.components.peerId),numberOfNodesPerKBucket:this.kBucketSize,numberOfNodesToPing:1});this.kb=e,e.addEventListener("ping",t=>{this._onPing(t).catch(n=>{this.log.error("could not process k-bucket ping event",n)})}),this._tagPeers(e)}async stop(){this.running=!1,this.pingQueue.clear(),this.kb=void 0}_tagPeers(e){let t=new pt,n=Y9(()=>{let o=new pt(e.closest(e.localNodeId,oy).map(a=>a.peer)),s=o.difference(t),i=t.difference(o);Promise.resolve().then(async()=>{for(let a of s)await this.components.peerStore.merge(a,{tags:{[this.tagName]:{value:this.tagValue}}});for(let a of i)await this.components.peerStore.merge(a,{tags:{[this.tagName]:void 0}})}).catch(a=>{this.log.error("Could not update peer tags",a)}),t=o});e.addEventListener("added",o=>{n(),this.safeDispatchEvent("peer:add",{detail:o.detail.peer})}),e.addEventListener("removed",o=>{n(),this.safeDispatchEvent("peer:remove",{detail:o.detail.peer})})}async _onPing(e){if(!this.running)return;let{oldContacts:t,newContact:n}=e.detail,s=(await Promise.all(t.map(async i=>{let a=this.pingQueue.find(i.peer);return a!=null?a.join():this.pingQueue.add(async()=>{let c;try{let l={signal:AbortSignal.timeout(this.pingTimeout)};this.log("pinging old contact %p",i.peer),c=await(await this.components.connectionManager.openConnection(i.peer,l)).newStream(this.protocol,l);let u=et(c);await u.write({type:be.PING},Cr,l);let h=await u.read(Cr,l);if(await u.unwrap().close(),h.type!==be.PING)throw new g(`Incorrect message type received, expected PING got ${h.type}`,"ERR_BAD_PING_RESPONSE");return!0}catch(l){return this.running&&this.kb!=null&&(this.log.error("could not ping peer %p",i.peer,l),this.log("evicting old contact after ping failed %p",i.peer),this.kb.remove(i.id)),c?.abort(l),!1}finally{this.metrics?.routingTableSize.update(this.size)}},{peerId:i.peer})}))).filter(i=>i).length;this.running&&s<t.length&&this.kb!=null&&(this.log("adding new contact %p",n.peer),this.kb.add(n))}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await en(e),n=this.closestPeer(t);if(n!=null&&e.equals(n))return n}closestPeer(e){let t=this.closestPeers(e,1);if(t.length>0)return t[0]}closestPeers(e,t=this.kBucketSize){return this.kb==null?[]:this.kb.closest(e,t).map(o=>o.peer)}async add(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await en(e);this.kb.add({id:t,peer:e}),this.log("added %p with kad id %b",e,t),this.metrics?.routingTableSize.update(this.size)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await en(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var sy=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var fd=15,hd=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:s,refreshQueryTimeout:i,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=s??3e5,this.refreshQueryTimeout=i??3e4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(o=>o.toISOString()).join(", ")} ]`),Promise.all(n.map(async(o,s)=>{try{if(await this._refreshCommonPrefixLength(s,o,e),this._numPeersForCpl(t)===0){let i=Math.min(2*(s+1),n.length-1);for(let a=s+1;a<i+1;a++)try{await this._refreshCommonPrefixLength(a,o,e)}catch(c){this.log.error(c)}}}catch(i){this.log.error(i)}})).catch(o=>{this.log.error(o)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(o=>{this.log.error(o)})}async _refreshCommonPrefixLength(e,t,n){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let o=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,o,this.routingTable.size);let s=await cd(this.peerRouting.getClosestPeers(o.toBytes(),{signal:AbortSignal.timeout(this.refreshQueryTimeout)}));this.log(`found ${s} peers that were close to imaginary peer %p`,o),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,o,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>fd&&(e=fd);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}async _generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");let t=mt(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return Ze(o)}async _makePeerId(e,t,n){if(n>fd)throw new Error(`Cannot generate peer ID for common prefix length greater than ${fd}`);let i=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=i&a|t&~a,l=sy[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,Ce.code),u.setUint8(1,32),u.setUint32(2,l,!1),new Uint8Array(u.buffer,u.byteOffset,u.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb!=null)for(let{id:e}of this.routingTable.kb.toIterable()){let t=Yn(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var pd=class{providers;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.providers=t.providers}async handle(e,t){if(this.log("start"),t.key==null||t.key.length===0)throw new g("Missing key","ERR_MISSING_KEY");let n;try{n=le.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),await Promise.all(t.providers.map(async o=>{if(!e.equals(o.id)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log("received provider %p for %s (addrs %s)",e,n,o.multiaddrs.map(s=>j(s).toString())),await this.providers.addProvider(n,Ze(o.id))}))}};var md=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);Z(this.peerId.toBytes(),t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(ee("p2p").code))});let o={type:be.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:s})=>s.length).map(s=>({id:s.id.toBytes(),multiaddrs:s.multiaddrs.map(i=>i.bytes)})),providers:[]};return o.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),o}};var gd=class{peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:s}=t;this.log=e.logger.forComponent(`${s}:rpc:handlers:get-providers`),this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new g("Invalid GET_PROVIDERS message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=le.decode(t.key)}catch{throw new g("Invalid CID","ERR_INVALID_CID")}this.log("%p asking for providers for %s",e,n);let[o,s]=await Promise.all([this.providers.getProviders(n),this.peerRouting.getCloserPeersOffline(t.key,e)]),i=await this._getPeers(o),a=await this._getPeers(s.map(({id:l})=>l)),c={type:be.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:a.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)})),providers:i.map(this.peerInfoMapper).filter(({multiaddrs:l})=>l.length).map(l=>({id:l.id.toBytes(),multiaddrs:l.multiaddrs.map(d=>d.bytes)}))};return this.log("got %s providers %s closerPeers",c.providers.length,c.closer.length),c}async _getAddresses(e){return[]}async _getPeers(e){let t=[];for(let n of e)try{let o=await this.peerStore.get(n),s=this.peerInfoMapper({id:n,multiaddrs:o.addresses.map(({multiaddr:i})=>i)});s.multiaddrs.length>0&&t.push(s)}catch(o){if(o.code!=="ERR_NOT_FOUND")throw o}return t}};var yd=class{peerStore;datastore;peerRouting;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new g("Invalid key","ERR_INVALID_KEY");let o={type:be.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(W9(n)){this.log("is public key");let a=z9(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new g("No public key found in key book","ERR_NOT_FOUND");c=l.id.publicKey}catch(l){if(l.code!=="ERR_NOT_FOUND")throw l}if(c!=null)return this.log("returning found public key"),o.record=new It(n,c,new Date).serialize(),o}let[s,i]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return s!=null&&(this.log("had record for %b in local datastore",n),o.record=s.serialize()),i.length>0&&(this.log("had %s closer peers in routing table",i.length),o.closer=i.map(a=>({id:a.id.toBytes(),multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Mo(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=It.deserialize(n);if(o==null)throw new g("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var wd=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Ed=class{components;validators;log;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null){let o=`Empty record from: ${e.toString()}`;throw this.log.error(o),new g(o,"ERR_EMPTY_RECORD")}try{let o=It.deserialize(t.record);await $i(this.validators,o),o.timeReceived=new Date;let s=Mo(o.key);await this.components.datastore.put(s,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,s)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var bd=class{handlers;routingTable;log;constructor(e,t){let{providers:n,peerRouting:o,validators:s,logPrefix:i,peerInfoMapper:a}=t;this.log=e.logger.forComponent(`${i}:rpc`),this.routingTable=t.routingTable,this.handlers={[be.GET_VALUE.toString()]:new yd(e,{peerRouting:o,logPrefix:i}),[be.PUT_VALUE.toString()]:new Ed(e,{validators:s,logPrefix:i}),[be.FIND_NODE.toString()]:new md(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[be.ADD_PROVIDER.toString()]:new pd(e,{providers:n,logPrefix:i}),[be.GET_PROVIDERS.toString()]:new gd(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[be.PING.toString()]:new wd(e,{logPrefix:i})}}async handleMessage(e,t){try{await this.routingTable.add(e)}catch(o){this.log.error("Failed to update the kbucket store",o)}let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}return n.handle(e,t)}onIncomingStream(e){Promise.resolve().then(async()=>{let{stream:t,connection:n}=e,o=n.remotePeer;try{await this.routingTable.add(o)}catch(i){this.log.error(i)}let s=this;await Qe(t,i=>$t(i),async function*(i){for await(let a of i){let c=Cr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield Cr.encode(l))}},i=>Kt(i),t)}).catch(t=>{this.log.error(t)})}};var xd=class extends me{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new bt("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var Op=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await mr(this.dht.provide(e,t))}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers)}async put(e,t,n){await mr(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new g("Not found","ERR_NOT_FOUND")}},Bp=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new g("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},LD=32,OD=64,vd=class extends me{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;constructor(e,t){super();let{kBucketSize:n,clientMode:o,validators:s,selectors:i,querySelfInterval:a,protocol:c,logPrefix:l,pingTimeout:d,pingConcurrency:u,maxInboundStreams:h,maxOutboundStreams:f,providers:p}=t,m=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(m),this.protocol=c??B9,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=h??LD,this.maxOutboundStreams=f??OD,this.peerInfoMapper=t.peerInfoMapper??q9,this.routingTable=new dd(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:m}),this.providers=new id(e,p??{}),this.validators={...H9,...s},this.selectors={...$9,...i},this.network=new nd(e,{protocol:this.protocol,logPrefix:m});let y=J();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new ad(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:m,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new sd(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:m}),this.contentFetching=new td(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:m}),this.contentRouting=new rd(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:m}),this.routingTableRefresh=new hd(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:m}),this.rpc=new bd(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:m,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new xd(e,{protocol:this.protocol,logPrefix:m}),this.querySelf=new ld(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:m,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.network.addEventListener("peer",w=>{let b=w.detail;this.onPeerConnect(b).catch(E=>{this.log.error("could not add %p to routing table",b.id,E)}),this.dispatchEvent(new bt("peer",{detail:b}))}),this.topologyListener.addEventListener("peer",w=>{let b=w.detail;Promise.resolve().then(async()=>{let E=await this.components.peerStore.get(b),x={id:b,multiaddrs:E.addresses.map(({multiaddr:v})=>v),protocols:E.protocols};await this.onPeerConnect(x)}).catch(E=>{this.log.error("could not add %p to routing table",b,E)})}),this.dhtPeerRouting=new Bp(this),this.dhtContentRouting=new Op(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",w=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let b=w.detail.peer.addresses.some(({multiaddr:x})=>X9(x)),E=this.getMode();b&&E==="client"?await this.setMode("server"):E==="server"&&!b&&await this.setMode("client")}).catch(b=>{this.log.error("error setting dht server mode",b)})})}get[rn](){return this.dhtContentRouting}get[nn](){return this.dhtPeerRouting}get[qo](){return this}async onPeerConnect(e){if(this.log("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(t=>t.toString()));return}try{await this.routingTable.add(e.id)}catch(t){this.log.error("could not add %p to routing table",e.id,t)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e){await this.components.registrar.unhandle(this.protocol),e==="client"?(this.log("enabling client mode"),this.clientMode=!0):(this.log("enabling server mode"),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running=!0,await this.setMode(this.clientMode?"client":"server"),await sn(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.topologyListener,this.routingTableRefresh)}async stop(){this.running=!1,await an(this.querySelf,this.providers,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(){this.routingTableRefresh.refreshTable(!0)}};var iy;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER"})(iy||(iy={}));function ay(r){return e=>new vd(e,r)}var gy=Xe(my(),1),Gi=gy.default;var Ay=Xe(_y(),1);var xe;(function(r){r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH"})(xe||(xe={}));var JD="/pkcs8/",Iy="/info/",Is=new WeakMap,Ds={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},Up={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function Qn(r){return r==null||typeof r!="string"?!1:r===(0,Ay.default)(r.trim())&&r.length>0}async function Be(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function yn(r){return new Le(JD+r)}function Uo(r){return new Le(Iy+r)}var _d=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Gi(Up,t),this.init.pass!=null&&this.init.pass?.length<20)throw new Error("pass must be least 20 characters");if(this.init.dek?.keyLength!=null&&this.init.dek.keyLength<Ds.minKeyLength)throw new Error(`dek.keyLength must be least ${Ds.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Ds.minSaltLength)throw new Error(`dek.saltLength must be least ${Ds.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Ds.minIterationCount)throw new Error(`dek.iterationCount must be least ${Ds.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?Pa(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},Up),t=Math.ceil(Ds.minSaltLength/3)*3;return e.dek.salt=O(mt(t),"base64"),e}static get options(){return Up}async createKey(e,t,n=2048){if(!Qn(e)||e==="self")throw await Be(),new g("Invalid key name",xe.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Be(),new g("Invalid key type",xe.ERR_INVALID_KEY_TYPE);let o=yn(e);if(await this.components.datastore.has(o))throw await Be(),new g("Key name already exists",xe.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Be(),new g("Invalid RSA key size",xe.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await Ca(t,n),c=await a.id(),l=Is.get(this);if(l==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let h=this.components.datastore.batch();h.put(o,M(u)),h.put(Uo(e),M(JSON.stringify(i))),await h.commit()}catch(a){throw await Be(),a}return i}async listKeys(){let e={prefix:Iy},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(O(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new g(`Key with id '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Be(),t}}async findKeyByName(e){if(!Qn(e))throw await Be(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=Uo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(O(n))}catch(n){throw await Be(),this.log.error(n),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!Qn(e)||e==="self")throw await Be(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);let t=yn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Uo(e)),await o.commit(),n}async renameKey(e,t){if(!Qn(e)||e==="self")throw await Be(),new g(`Invalid old key name '${e}'`,xe.ERR_OLD_KEY_NAME_INVALID);if(!Qn(t)||t==="self")throw await Be(),new g(`Invalid new key name '${t}'`,xe.ERR_NEW_KEY_NAME_INVALID);let n=yn(e),o=yn(t),s=Uo(e),i=Uo(t);if(await this.components.datastore.has(o))throw await Be(),new g(`Key '${t}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(O(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,M(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Be(),c}}async exportKey(e,t){if(!Qn(e))throw await Be(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Be(),new g("Password is required",xe.ERR_PASSWORD_REQUIRED);let n=yn(e);try{let o=await this.components.datastore.get(n),s=O(o),i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await li(s,a)).export(t)}catch(o){throw await Be(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await li(n,t);return ht(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!Qn(e)||e==="self")throw await Be(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw await Be(),new g("PEM encoded key is required",xe.ERR_PEM_REQUIRED);let o=yn(e);if(await this.components.datastore.has(o))throw await Be(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i;try{i=await li(t,n)}catch{throw await Be(),new g("Cannot read the key, most likely the password is wrong",xe.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=Is.get(this);if(d==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let u=d.dek;t=await i.export(u)}catch(d){throw await Be(),d}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,M(t)),l.put(Uo(e),M(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!Qn(e))throw new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);if(t==null)throw new g("PeerId is required",xe.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new g("PeerId.privKey is required",xe.ERR_MISSING_PRIVATE_KEY);let n=await Sr(t.privateKey),o=yn(e);if(await this.components.datastore.has(o))throw await Be(),new g(`Key '${e}' already exists`,xe.ERR_KEY_ALREADY_EXISTS);let i=Is.get(this);if(i==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let a=i.dek,c=await n.export(a),l={name:e,id:t.toString()},d=this.components.datastore.batch();return d.put(o,M(c)),d.put(Uo(e),M(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Be(),n}}async getPrivateKey(e){if(!Qn(e))throw await Be(),new g(`Invalid key name '${e}'`,xe.ERR_INVALID_KEY_NAME);try{let t=yn(e),n=await this.components.datastore.get(t);return O(n)}catch(t){throw await Be(),this.log.error(t),new g(`Key '${e}' does not exist.`,xe.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Be(),new g(`Invalid old pass type '${typeof e}'`,xe.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Be(),new g(`Invalid new pass type '${typeof t}'`,xe.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Be(),new g(`Invalid pass length ${t.length}`,xe.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Is.get(this);if(n==null)throw new g("dek missing",xe.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?Pa(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";Is.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(yn(a.name)),l=O(c),d=await li(l,o),u=s.toString(),h=await d.export(u),f=this.components.datastore.batch(),p={name:a.name,id:a.id};f.put(yn(a.name),M(h)),f.put(Uo(a.name),M(JSON.stringify(p))),await f.commit()}this.log("keychain reconstructed")}};function Ad(r={}){return e=>new _d(e,r)}var Wi=class{memoryStorage;points;duration;blockDuration;execEvenly;execEvenlyMinDelayMs;keyPrefix;constructor(e={}){this.points=e.points??4,this.duration=e.duration??1,this.blockDuration=e.blockDuration??0,this.execEvenly=e.execEvenly??!1,this.execEvenlyMinDelayMs=e.execEvenlyMinDelayMs??this.duration*1e3/this.points,this.keyPrefix=e.keyPrefix??"rlflx",this.memoryStorage=new Fp}async 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 g("Rate limit exceeded","ERR_RATE_LIMIT_EXCEEDED",i);if(this.execEvenly&&i.msBeforeNext>0&&!i.isFirstInDuration){let a=Math.ceil(i.msBeforeNext/(i.remainingPoints+2));a<this.execEvenlyMinDelayMs&&(a=i.consumedPoints*this.execEvenlyMinDelayMs),await W1(a)}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)}},Fp=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}};var Ee;(function(r){r[r.NEW_STREAM=0]="NEW_STREAM",r[r.MESSAGE_RECEIVER=1]="MESSAGE_RECEIVER",r[r.MESSAGE_INITIATOR=2]="MESSAGE_INITIATOR",r[r.CLOSE_RECEIVER=3]="CLOSE_RECEIVER",r[r.CLOSE_INITIATOR=4]="CLOSE_INITIATOR",r[r.RESET_RECEIVER=5]="RESET_RECEIVER",r[r.RESET_INITIATOR=6]="RESET_INITIATOR"})(Ee||(Ee={}));var yc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Vp=Object.freeze({NEW_STREAM:Ee.NEW_STREAM,MESSAGE:Ee.MESSAGE_INITIATOR,CLOSE:Ee.CLOSE_INITIATOR,RESET:Ee.RESET_INITIATOR}),Dy=Object.freeze({MESSAGE:Ee.MESSAGE_RECEIVER,CLOSE:Ee.CLOSE_RECEIVER,RESET:Ee.RESET_RECEIVER});var Kp=1<<20,eT=4<<20,Id=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=Kp,t=eT){this._buffer=new ce,this._headerInfo=null,this._maxMessageSize=e,this._maxUnprocessedMessageQueueSize=t}write(e){if(e==null||e.length===0)return[];if(this._buffer.append(e),this._buffer.byteLength>this._maxUnprocessedMessageQueueSize)throw Object.assign(new Error("unprocessed message queue size too large!"),{code:"ERR_MSG_QUEUE_TOO_BIG"});let t=[];for(;this._buffer.length!==0;){if(this._headerInfo==null)try{this._headerInfo=this._decodeHeader(this._buffer)}catch(l){if(l.code==="ERR_MSG_TOO_BIG")throw l;break}let{id:n,type:o,length:s,offset:i}=this._headerInfo;if(this._buffer.length-i<s)break;let c={id:n,type:o};(o===Ee.NEW_STREAM||o===Ee.MESSAGE_INITIATOR||o===Ee.MESSAGE_RECEIVER)&&(c.data=this._buffer.sublist(i,i+s)),t.push(c),this._buffer.consume(i+s),this._headerInfo=null}return t}_decodeHeader(e){let{value:t,offset:n}=ky(e),{value:o,offset:s}=ky(e,n),i=t&7;if(yc[i]==null)throw new Error(`Invalid type received: ${i}`);if(o>this._maxMessageSize)throw Object.assign(new Error("message size too large!"),{code:"ERR_MSG_TOO_BIG"});return{id:t>>3,type:i,offset:n+s,length:o}}},tT=128,Ty=127;function ky(r,e=0){let t=0,n=0,o=e,s,i=r.length;do{if(o>=i||n>49)throw e=0,new RangeError("Could not decode varint");s=r.get(o++),t+=n<28?(s&Ty)<<n:(s&Ty)*Math.pow(2,n),n+=7}while(s>=tT);return e=o-e,{value:t,offset:e}}var $p=10*1024,Hp=class{_pool;_poolOffset;constructor(){this._pool=ze($p),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;$e(e.id<<3|e.type,n,o),o+=Se(e.id<<3|e.type),(e.type===Ee.NEW_STREAM||e.type===Ee.MESSAGE_INITIATOR||e.type===Ee.MESSAGE_RECEIVER)&&e.data!=null?($e(e.data.length,n,o),o+=Se(e.data.length)):($e(0,n,o),o+=Se(0));let s=n.subarray(this._poolOffset,o);$p-o<100?(this._pool=ze($p),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===Ee.NEW_STREAM||e.type===Ee.MESSAGE_INITIATOR||e.type===Ee.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},rT=new Hp;async function*Cy(r){for await(let e of r){let t=new ce;rT.write(e,t),yield t}}var qp=class extends mn{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Vp:Dy,this.send=e.send,this.name=e.name,this.streamId=e.streamId,this.maxDataSize=e.maxDataSize}async sendNewStream(){await this.send({id:this.streamId,type:Vp.NEW_STREAM,data:new ce(M(this.name))})}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxDataSize);await this.send({id:this.streamId,type:this.types.MESSAGE,data:e.sublist(0,t)}),e.consume(t)}}async sendReset(){await this.send({id:this.streamId,type:this.types.RESET})}async sendCloseWrite(){await this.send({id:this.streamId,type:this.types.CLOSE})}async sendCloseRead(){}};function Ny(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=Kp}=r;return new qp({id:s==="initiator"?`i${e}`:`r${e}`,streamId:e,name:`${t??e}`,direction:s==="initiator"?"outbound":"inbound",maxDataSize:i,onEnd:o,send:n,log:r.logger.forComponent(`libp2p:mplex:stream:${s}:${e}`)})}var nT=1024,oT=1024,sT=1024*1024*4,iT=5,aT=500;function Py(r){let e={...r,type:`${yc[r.type]} (${r.type})`};return r.type===Ee.NEW_STREAM&&(e.data=O(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===Ee.MESSAGE_INITIATOR||r.type===Ee.MESSAGE_RECEIVER)&&(e.data=O(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var Dd=class{protocol="/mplex/6.7.0";sink;source;log;_streamId;_streams;_init;_source;closeController;rateLimiter;closeTimeout;logger;constructor(e,t){t=t??{},this.log=e.logger.forComponent("libp2p:mplex"),this.logger=e.logger,this._streamId=0,this._streams={initiators:new Map,receivers:new Map},this._init=t,this.closeTimeout=t.closeTimeout??aT,this.sink=this._createSink(),this._source=ft({objectMode:!0,onEnd:()=>{for(let n of this._streams.initiators.values())n.destroy();for(let n of this._streams.receivers.values())n.destroy()}}),this.source=Qe(this._source,n=>Cy(n)),this.closeController=new AbortController,this.rateLimiter=new Wi({points:t.disconnectThreshold??iT,duration:1})}get streams(){let e=[];for(let t of this._streams.initiators.values())e.push(t);for(let t of this._streams.receivers.values())e.push(t);return e}newStream(e){if(this.closeController.signal.aborted)throw new Error("Muxer already closed");let t=this._streamId++;e=e==null?t.toString():e.toString();let n=this._streams.initiators;return this._newStream({id:t,name:e,type:"initiator",registry:n})}async close(e){if(this.closeController.signal.aborted)return;let t=e?.signal??AbortSignal.timeout(this.closeTimeout);try{await Promise.all(this.streams.map(async n=>n.close({signal:t}))),this._source.end(),await this._source.onEmpty({signal:t}),this.closeController.abort()}catch(n){this.abort(n)}}abort(e){this.closeController.signal.aborted||(this.streams.forEach(t=>{t.abort(e)}),this.closeController.abort(e))}_newReceiverStream(e){let{id:t,name:n}=e,o=this._streams.receivers;return this._newStream({id:t,name:n,type:"receiver",registry:o})}_newStream(e){let{id:t,name:n,type:o,registry:s}=e;if(this.log("new %s stream %s",o,t),o==="initiator"&&this._streams.initiators.size===(this._init.maxOutboundStreams??oT))throw new g("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=Ny({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,Py(l)),this._source.push(l)},type:o,onEnd:()=>{this.log("%s stream with id %s and protocol %s ended",o,t,c.protocol),s.delete(t),this._init.onStreamEnd!=null&&this._init.onStreamEnd(c)},maxMsgSize:this._init.maxMsgSize,logger:this.logger});return s.set(t,c),c}_createSink(){return async t=>{let n=()=>{L1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new Id(this._init.maxMsgSize,this._init.maxUnprocessedMessageQueueSize);for await(let s of t)for(let i of o.write(s))await this._handleIncoming(i);this._source.end()}catch(o){this.log("error in sink",o),this._source.end(o)}finally{this.closeController.signal.removeEventListener("abort",n)}}}async _handleIncoming(e){let{id:t,type:n}=e;if(this.log.enabled&&this.log.trace("incoming message",Py(e)),e.type===Ee.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??nT)){this.log("too many inbound streams open"),this._source.push({id:t,type:Ee.RESET_RECEIVER});try{await this.rateLimiter.consume("new-stream",1)}catch{this.log("rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection"),this.abort(new Error("Too many open streams"));return}return}let a=this._newReceiverStream({id:t,name:O(e.data instanceof Uint8Array?e.data:e.data.subarray())});this._init.onIncomingStream!=null&&this._init.onIncomingStream(a);return}let s=((n&1)===1?this._streams.initiators:this._streams.receivers).get(t);if(s==null){this.log("missing stream %s for message type %s",t,yc[n]);try{await this.rateLimiter.consume("missing-stream",1)}catch{this.log("rate limit hit when receiving messages for streams that do not exist - closing remote connection"),this.abort(new Error("Too many messages for missing streams"));return}return}let i=this._init.maxStreamBufferSize??sT;try{switch(n){case Ee.MESSAGE_INITIATOR:case Ee.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===Ee.MESSAGE_INITIATOR?Ee.RESET_RECEIVER:Ee.RESET_INITIATOR}),new g("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case Ee.CLOSE_INITIATOR:case Ee.CLOSE_RECEIVER:s.remoteCloseWrite();break;case Ee.RESET_INITIATOR:case Ee.RESET_RECEIVER:s.reset();break;default:this.log("unknown message type %s",n)}}catch(a){this.log.error("error while processing message",a),s.abort(a)}}};var Gp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new Dd(this.components,{...e,...this._init})}};function Ly(r={}){return e=>new Gp(e,r)}var Oy="1.0.0",By="ping",My="ipfs";var Wp="ERR_WRONG_PING_ACK";var Td=class{protocol;components;started;timeout;maxInboundStreams;maxOutboundStreams;runOnTransientConnection;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("libp2p:ping"),this.started=!1,this.protocol=`/${t.protocolPrefix??My}/${By}/${Oy}`,this.timeout=t.timeout??1e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??1,this.runOnTransientConnection=t.runOnTransientConnection??!0,this.handleMessage=this.handleMessage.bind(this)}async start(){await this.components.registrar.handle(this.protocol,this.handleMessage,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:this.runOnTransientConnection}),this.started=!0}async stop(){await this.components.registrar.unhandle(this.protocol),this.started=!1}isStarted(){return this.started}handleMessage(e){this.log("incoming ping from %p",e.connection.remotePeer);let{stream:t}=e,n=Date.now();Qe(t,t).catch(o=>{this.log.error("incoming ping from %p failed with error",e.connection.remotePeer,o)}).finally(()=>{let o=Date.now()-n;this.log("incoming ping from %p complete in %dms",e.connection.remotePeer,o)})}async ping(e,t={}){this.log("pinging %p",e);let n=Date.now(),o=mt(32),s=await this.components.connectionManager.openConnection(e,t),i,a=()=>{};if(t.signal==null){let c=AbortSignal.timeout(this.timeout);t={...t,signal:c}}try{i=await s.newStream(this.protocol,{...t,runOnTransientConnection:this.runOnTransientConnection}),a=()=>{i?.abort(new g("ping timeout",bn))},t.signal?.addEventListener("abort",a,{once:!0});let c=await Qe([o],i,async d=>Es(d)),l=Date.now()-n;if(c==null)throw new g(`Did not receive a ping ack after ${l}ms`,Wp);if(!Z(o,c.subarray()))throw new g(`Received wrong ping ack after ${l}ms`,Wp);return this.log("ping %p complete in %dms",s.remotePeer,l),l}catch(c){throw this.log.error("error while pinging %p",s.remotePeer,c),i?.abort(c),c}finally{t.signal?.removeEventListener("abort",a),i!=null&&await i.close()}}};function Uy(r={}){return e=>new Td(e,r)}var hr;(function(r){r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_DATA_CHANNEL="ERR_DATA_CHANNEL",r.ERR_CONNECTION_CLOSED="ERR_CONNECTION_CLOSED",r.ERR_HASH_NOT_SUPPORTED="ERR_HASH_NOT_SUPPORTED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_INVALID_FINGERPRINT="ERR_INVALID_FINGERPRINT",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS"})(hr||(hr={}));var Fo=class extends g{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var zp=class extends Fo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,hr.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function Jp(r,e){return new zp(r,e)}var Yp=class extends Fo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,hr.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function kd(r){return new Yp(r)}var Xp=class extends Fo{constructor(e){super(`There was a problem with a provided argument: ${e}`,hr.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function wc(r){return new Xp(r)}var Qp=class extends Fo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,hr.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function e3(r,e){return new Qp(r,e)}var jp=class extends Fo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,hr.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function Fy(r){return new jp(r)}var Zp=class extends Fo{constructor(e){super(`unsupported hash algorithm: ${e}`,hr.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function Vy(r){return new Zp(r)}var Ky=function(r,e,t){if(t||arguments.length===2)for(var n=0,o=e.length,s;n<o;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},fT=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var hT=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var pT=function(){function r(e,t,n,o){this.name=e,this.version=t,this.os=n,this.bot=o,this.type="bot-device"}return r}();var mT=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var gT=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var yT=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,wT=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,$y=3,ET=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["pie",/^Microsoft Pocket Internet Explorer\/(\d+\.\d+)$/],["pie",/^Mozilla\/\d\.\d+\s\(compatible;\s(?:MSP?IE|MSInternet Explorer) (\d+\.\d+);.*Windows CE.*\)$/],["netfront",/^Mozilla\/\d\.\d+.*NetFront\/(\d.\d)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FB[AS]V\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["curl",/^curl\/([0-9\.]+)$/],["searchbot",yT]],Hy=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Windows CE",/Windows CE|WinCE|Microsoft Pocket Internet Explorer/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Gy(r){return r?qy(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new gT:typeof navigator<"u"?qy(navigator.userAgent):vT()}function bT(r){return r!==""&&ET.reduce(function(e,t){var n=t[0],o=t[1];if(e)return e;var s=o.exec(r);return!!s&&[n,s]},!1)}function qy(r){var e=bT(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new mT;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<$y&&(o=Ky(Ky([],o,!0),RT($y-o.length),!0)):o=[];var s=o.join("."),i=xT(r),a=wT.exec(r);return a&&a[1]?new pT(t,s,i,a[1]):new fT(t,s,i)}function xT(r){for(var e=0,t=Hy.length;e<t;e++){var n=Hy[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function vT(){var r=typeof process<"u"&&process.version;return r?new hT(process.version.slice(1)):null}function RT(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var Wy=Gy(),Ec=Wy!=null&&Wy.name==="firefox",Cd=async function*(){},Nd=async r=>{},ST=30*1e3;function zy(r,e,t=ST,n){r.readyState==="open"&&Promise.resolve().then(async()=>{if(r.bufferedAmount>0){n.log("%s drain channel with %d buffered bytes",e,r.bufferedAmount);let o=J(),s=!1;r.bufferedAmountLowThreshold=0;let i=()=>{s||(n.log("%s drain channel closed before drain",e),o.resolve())};r.addEventListener("close",i,{once:!0}),r.addEventListener("bufferedamountlow",()=>{s=!0,r.removeEventListener("close",i),o.resolve()}),await Wr(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var Ts=class{log;peerConnection;remoteAddr;timeline;metrics;source=Cd();sink=Nd;constructor(e,t){this.log=e.logger.forComponent("libp2p:webrtc:maconn"),this.remoteAddr=t.remoteAddr,this.timeline=t.timeline,this.peerConnection=t.peerConnection;let n=this.peerConnection.connectionState;this.peerConnection.onconnectionstatechange=()=>{this.log.trace("peer connection state change",this.peerConnection.connectionState,"initial state",n),(this.peerConnection.connectionState==="disconnected"||this.peerConnection.connectionState==="failed"||this.peerConnection.connectionState==="closed")&&(this.timeline.close=Date.now())}}async close(e){this.log.trace("closing connection"),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({close:!0})}abort(e){this.log.error("closing connection due to error",e),this.peerConnection.close(),this.timeline.close=Date.now(),this.metrics?.increment({abort:!0})}};var Xt;(function(r){let e;(function(o){o.FIN="FIN",o.STOP_SENDING="STOP_SENDING",o.RESET="RESET",o.FIN_ACK="FIN_ACK"})(e=r.Flag||(r.Flag={}));let t;(function(o){o[o.FIN=0]="FIN",o[o.STOP_SENDING=1]="STOP_SENDING",o[o.RESET=2]="RESET",o[o.FIN_ACK=3]="FIN_ACK"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.flag!=null&&(s.uint32(8),r.Flag.codec().encode(o.flag,s)),o.message!=null&&(s.uint32(18),s.bytes(o.message)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.flag=r.Flag.codec().decode(o);break;case 2:i.message=o.bytes();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(Xt||(Xt={}));var _T=16*1024*1024,AT=30*1e3,IT=5,DT=2,TT=16*1024,kT=5e3,CT=5e3,t3=class extends mn{channel;incomingData;maxBufferedAmount;bufferedAmountLowEventTimeout;maxMessageSize;receiveFinAck;finAckTimeout;openTimeout;constructor(e){let t=e.onEnd;switch(e.onEnd=o=>{this.log.trace("readable and writeable ends closed",this.status),Promise.resolve(async()=>{if(!(this.timeline.abort!=null||this.timeline.reset!==null))try{await Wr(this.receiveFinAck.promise,{milliseconds:this.finAckTimeout})}catch(s){this.log.error("error receiving FIN_ACK",s)}}).then(()=>{this.incomingData.end(),t?.(o)}).catch(s=>{this.log.error("error ending stream",s)})},super(e),this.channel=e.channel,this.channel.binaryType="arraybuffer",this.incomingData=ft(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??AT,this.maxBufferedAmount=e.maxBufferedAmount??_T,this.maxMessageSize=(e.maxMessageSize??TT)-IT-DT,this.receiveFinAck=J(),this.finAckTimeout=e.closeTimeout??kT,this.openTimeout=e.openTimeout??CT,this.channel.readyState){case"open":this.timeline.open=new Date().getTime();break;case"closed":case"closing":(this.timeline.close===void 0||this.timeline.close===0)&&(this.timeline.close=Date.now());break;case"connecting":break;default:throw this.log.error("unknown datachannel state %s",this.channel.readyState),new g("Unknown datachannel state","ERR_INVALID_STATE")}this.channel.onopen=o=>{this.timeline.open=new Date().getTime()},this.channel.onclose=o=>{this.receiveFinAck.resolve(),this.close().catch(s=>{this.log.error("error closing stream after channel closed",s)})},this.channel.onerror=o=>{let s=o.error;this.abort(s)},this.channel.onmessage=async o=>{let{data:s}=o;s===null||s.byteLength===0||this.incomingData.push(new Uint8Array(s,0,s.byteLength))};let n=this;Promise.resolve().then(async()=>{for await(let o of $t(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new ce(s))}}).catch(o=>{this.log.error("error processing incoming data channel messages",o)})}sendNewStream(){}async _sendMessage(e,t=!0){if(t&&this.channel.bufferedAmount>this.maxBufferedAmount)try{this.log('channel buffer is %d, wait for "bufferedamountlow" event',this.channel.bufferedAmount),await mc(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof So?new g(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`,"ERR_BUFFER_CLEAR_TIMEOUT"):n}if(this.channel.readyState==="closed"||this.channel.readyState==="closing")throw new g(`Invalid datachannel state - ${this.channel.readyState}`,"ERR_INVALID_STATE");this.channel.readyState!=="open"&&(this.log('channel state is "%s" and not "open", waiting for "open" event before sending data',this.channel.readyState),await mc(this.channel,"open",{timeout:this.openTimeout}),this.log('channel state is now "%s", sending data',this.channel.readyState)),this.channel.send(e.subarray())}async sendData(e){for(e=e.sublist();e.byteLength>0;){let t=Math.min(e.byteLength,this.maxMessageSize),n=e.subarray(0,t),o=Xt.encode({message:n}),s=Kt.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(Xt.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(Xt.Flag.FIN)){this.log.trace("awaiting FIN_ACK");try{await Ue(this.receiveFinAck.promise,e?.signal,{errorMessage:"sending close-write was aborted before FIN_ACK was received",errorCode:"ERR_FIN_ACK_NOT_RECEIVED"})}catch(n){this.log.error("failed to await FIN_ACK",n)}}else this.log.trace("sending FIN failed, not awaiting FIN_ACK");this.receiveFinAck.resolve()}async sendCloseRead(){await this._sendFlag(Xt.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=Xt.decode(e);if(t.flag!==void 0&&(this.log.trace('incoming flag %s, write status "%s", read status "%s"',t.flag,this.writeStatus,this.readStatus),t.flag===Xt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Xt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===Xt.Flag.RESET&&this.reset(),t.flag===Xt.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===Xt.Flag.FIN_ACK&&(this.log.trace("received FIN_ACK"),this.receiveFinAck.resolve())),this.readStatus==="ready")return t.message}async _sendFlag(e){if(this.channel.readyState!=="open")return this.log.trace('not sending flag %s because channel is "%s" and not "open"',this.channel.readyState,e.toString()),!1;this.log.trace("sending flag %s",e.toString());let t=Xt.encode({flag:e}),n=Kt.single(t);try{return await this._sendMessage(n,!1),!0}catch(o){this.log.error("could not send flag %s",e.toString(),o)}return!1}};function zi(r){let{channel:e,direction:t}=r;return new t3({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var Yy="/webrtc",ks=class{protocol;peerConnection;bufferedStreams=[];metrics;dataChannelOptions;components;log;constructor(e,t){this.components=e,this.peerConnection=t.peerConnection,this.metrics=t.metrics,this.protocol=t.protocol??Yy,this.dataChannelOptions=t.dataChannelOptions??{},this.log=e.logger.forComponent("libp2p:webrtc:datachannelmuxerfactory"),this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace('incoming early datachannel with channel id %d and label "%s"',n.id),n.label==="init"){this.log.trace("closing early init channel"),n.close();return}let o={},s=zi({channel:n,direction:"inbound",onEnd:i=>{o.onEnd(i)},logger:e.logger,...this.dataChannelOptions});o.stream=s,o.channel=n,o.onEnd=()=>{this.bufferedStreams=this.bufferedStreams.filter(i=>i.stream.id!==s.id)},this.bufferedStreams.push(o)}}createStreamMuxer(e){return new r3(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},r3=class{init;streams;protocol;log;peerConnection;dataChannelOptions;metrics;logger;constructor(e,t){this.init=t,this.log=e.logger.forComponent("libp2p:webrtc:muxer"),this.logger=e.logger,this.streams=t.streams.map(n=>n.stream),this.peerConnection=t.peerConnection,this.protocol=t.protocol??Yy,this.metrics=t.metrics,this.dataChannelOptions=t.dataChannelOptions??{},this.peerConnection.ondatachannel=({channel:n})=>{if(this.log.trace("incoming datachannel with channel id %d",n.id),n.label==="init"){this.log.trace("closing init channel"),n.close();return}let o=zi({channel:n,direction:"inbound",onEnd:()=>{this.log("incoming channel %s ended with state %s",n.id,n.readyState),this.#e(o,n)},logger:this.logger,...this.dataChannelOptions});this.streams.push(o),this.metrics?.increment({incoming_stream:!0}),t?.onIncomingStream?.(o)},this.init.streams.length>0&&queueMicrotask(()=>{this.init.streams.forEach(n=>{n.onEnd=()=>{this.log("incoming early channel %s ended with state %s",n.channel.id,n.channel.readyState),this.#e(n.stream,n.channel)},this.metrics?.increment({incoming_stream:!0}),this.init?.onIncomingStream?.(n.stream)})})}#e(e,t){this.log.trace("stream %s %s %s onEnd",e.direction,e.id,e.protocol),zy(t,`${e.direction} ${e.id} ${e.protocol}`,this.dataChannelOptions.drainTimeout,{log:this.log}),this.streams=this.streams.filter(n=>n.id!==e.id),this.metrics?.increment({stream_end:!0}),this.init?.onStreamEnd?.(e)}async close(e){try{await Promise.all(this.streams.map(async t=>t.close(e)))}catch(t){this.abort(t)}}abort(e){for(let t of this.streams)t.abort(e)}source=Cd();sink=Nd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=zi({channel:e,direction:"outbound",onEnd:()=>{this.log("outgoing channel %s ended with state %s",e.id,e.readyState),this.#e(t,e)},logger:this.logger,...this.dataChannelOptions});return this.streams.push(t),this.metrics?.increment({outgoing_stream:!0}),t}};var Yi=globalThis.RTCPeerConnection,Pd=globalThis.RTCSessionDescription,Xy=globalThis.RTCIceCandidate;var Qt;(function(r){let e;(function(o){o.SDP_OFFER="SDP_OFFER",o.SDP_ANSWER="SDP_ANSWER",o.ICE_CANDIDATE="ICE_CANDIDATE"})(e=r.Type||(r.Type={}));let t;(function(o){o[o.SDP_OFFER=0]="SDP_OFFER",o[o.SDP_ANSWER=1]="SDP_ANSWER",o[o.ICE_CANDIDATE=2]="ICE_CANDIDATE"})(t||(t={})),function(o){o.codec=()=>He(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=ne((o,s,i={})=>{i.lengthDelimited!==!1&&s.fork(),o.type!=null&&(s.uint32(8),r.Type.codec().encode(o.type,s)),o.data!=null&&(s.uint32(18),s.string(o.data)),i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.type=r.Type.codec().decode(o);break;case 2:i.data=o.string();break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(Qt||(Qt={}));var Ld=async(r,e,t)=>{try{let n=J();for(PT(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==Qt.Type.ICE_CANDIDATE)throw new g("ICE candidate message expected","ERR_NOT_ICE_CANDIDATE");let s=JSON.parse(o.data??"null");if(s===""||s===null){t.log.trace("end-of-candidates received");continue}let i=new Xy(s);t.log.trace("%s received new ICE candidate",t.direction,i);try{await r.addIceCandidate(i)}catch(a){t.log.error("%s bad candidate received",t.direction,s,a)}}}catch(n){if(t.log.error("%s error parsing ICE candidate",t.direction,n),t.signal?.aborted===!0)throw n}};function NT(r){return Ec?r.iceConnectionState:r.connectionState}function PT(r,e){r[Ec?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(NT(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new g("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function Qy({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=jy(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new g("Relay peer was missing","ERR_INVALID_ADDRESS");let l=o.getConnections(ye(c)),d,u=!1;l.length===0?(d=await s.dial(a,{signal:e}),u=!0):d=l[0];try{let h=await d.newStream(Od,{signal:e,runOnTransientConnection:!0}),f=et(h).pb(Qt);try{let p=r.createDataChannel("init");r.onicecandidate=({candidate:b})=>{let E=JSON.stringify(b?.toJSON()??null);i.trace("initiator sending ICE candidate %s",E),f.write({type:Qt.Type.ICE_CANDIDATE,data:E},{signal:e}).catch(x=>{i.error("error sending ICE candidate",x)})},r.onicecandidateerror=b=>{i.error("initiator ICE candidate error",b)};let m=await r.createOffer().catch(b=>{throw i.error("could not execute createOffer",b),new g("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",m.sdp),await f.write({type:Qt.Type.SDP_OFFER,data:m.sdp},{signal:e}),await r.setLocalDescription(m).catch(b=>{throw i.error("could not execute setLocalDescription",b),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await f.read({signal:e});if(y.type!==Qt.Type.SDP_ANSWER)throw new g("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",y.data);let w=new Pd({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(b=>{throw i.error("could not execute setRemoteDescription",b),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await Ld(r,f,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),p.close(),i.trace("initiator closing signalling stream"),await f.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(p){throw r.close(),h.abort(p),p}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(h){d.abort(h)}}}var Bd=class extends me{peerId;transportManager;shutdownController;constructor(e,t){super(),this.peerId=e.peerId,this.transportManager=e.transportManager,this.shutdownController=t.shutdownController}async listen(){this.safeDispatchEvent("listening",{})}getAddrs(){return this.transportManager.getListeners().filter(e=>e!==this).map(e=>e.getAddrs().filter(t=>jr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function Zy({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=et(e).pb(Qt);try{r.onicecandidate=({candidate:d})=>{let u=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:Qt.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(h=>{o.error("error sending ICE candidate",h)})};let a=await s.read({signal:t});if(a.type!==Qt.Type.SDP_OFFER)throw new g(`expected message type SDP_OFFER, received: ${a.type??"undefined"} `,"ERR_SDP_HANDSHAKE_FAILED");o.trace("recipient receive SDP offer %s",a.data);let c=new Pd({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(d=>{throw o.error("could not execute setRemoteDescription",d),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(d=>{throw o.error("could not execute createAnswer",d),new g("Failed to create answer","ERR_SDP_HANDSHAKE_FAILED")});o.trace("recipient send SDP answer %s",l.sdp),await s.write({type:Qt.Type.SDP_ANSWER,data:l.sdp},{signal:t}),await r.setLocalDescription(l).catch(d=>{throw o.error("could not execute setLocalDescription",d),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await Ld(r,s,{direction:"recipient",signal:t,log:o})}catch(a){if(r.connectionState!=="connected")throw o.error("error while handling signaling stream from peer %a",n.remoteAddr,a),r.close(),a;o("error while handling signaling stream from peer %a, ignoring as the RTCPeerConnection is already connected",n.remoteAddr,a)}let i=j(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var LT="/webrtc",OT="/p2p-circuit",Od="/webrtc-signaling/0.0.1",BT=30*1e3,Md=class{components;init;log;_started=!1;metrics;shutdownController;constructor(e,t={}){this.components=e,this.init=t,this.log=e.logger.forComponent("libp2p:webrtc"),this.shutdownController=new AbortController,G(1/0,this.shutdownController.signal),e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_dialer_events_total",{label:"event",help:"Total count of WebRTC dialer events by type"}),listenerEvents:e.metrics.registerCounterGroup("libp2p_webrtc_listener_events_total",{label:"event",help:"Total count of WebRTC listener events by type"})})}isStarted(){return this._started}async start(){await this.components.registrar.handle(Od,e=>{this._onProtocol(e).catch(t=>{this.log.error("failed to handle incoming connect from %p",e.connection.remotePeer,t)})},{runOnTransientConnection:!0}),this._started=!0}async stop(){await this.components.registrar.unhandle(Od),this._started=!1}createListener(e){return new Bd(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[on]=!0;listenFilter(e){return e.filter(_7.exactMatch)}dialFilter(e){return this.listenFilter(e)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Yi(this.init.rtcConfiguration),o=new ks(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await Qy({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new Ts(this.components,{peerConnection:n,timeline:{open:Date.now()},remoteAddr:s,metrics:this.metrics?.dialerEvents}),a=await t.upgrader.upgradeOutbound(i,{skipProtection:!0,skipEncryption:!0,muxerFactory:o});return this._closeOnShutdown(n,i),a}async _onProtocol({connection:e,stream:t}){let n=AbortSignal.timeout(this.init.inboundConnectionTimeout??BT),o=new Yi(this.init.rtcConfiguration),s=new ks(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await Zy({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new Ts(this.components,{peerConnection:o,timeline:{open:new Date().getTime()},remoteAddr:i,metrics:this.metrics?.listenerEvents});this._closeOnShutdown(o,a),await this.components.upgrader.upgradeInbound(a,{skipEncryption:!0,skipProtection:!0,muxerFactory:s}),await t.close({signal:n})}catch(i){throw t.abort(i),i}}_closeOnShutdown(e,t){let n=()=>{t.close().catch(o=>{this.log.error("could not close WebRTCMultiaddrConnection",o)})};this.shutdownController.signal.addEventListener("abort",n),e.addEventListener("close",()=>{this.shutdownController.signal.removeEventListener("abort",n)})}};function jy(r){let e=r.toString().split(LT+"/");if(e.length!==2)throw new g("webrtc protocol was not present in multiaddr",hr.ERR_INVALID_MULTIADDR);if(!e[0].includes(OT))throw new g("p2p-circuit protocol was not present in multiaddr",hr.ERR_INVALID_MULTIADDR);let t=j(e[0]),o=j("/"+e[1]).getPeerId();if(o==null)throw new g("destination peer id was missing",hr.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new g("invalid multiaddr",hr.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ye(o)}}var DE=Xe(N3(),1);var xE=Xe(N3(),1);var P3=Object.values(wr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function vE(r,e){let t=r.getConfiguration().certificates?.at(0);if(t==null||t.getFingerprints==null){e.log.trace("fetching fingerprint from local SDP");let o=r.localDescription;return o==null?void 0:HC(o.sdp)}if(e.log.trace("fetching fingerprint from local certificate"),t.getFingerprints().length===0)return;let n=t.getFingerprints()[0].value;if(n==null)throw e3("","no fingerprint on local certificate");return n}var $C=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function HC(r){return r.match($C)?.groups?.fingerprint}function qC(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Xd(r){let t=r.stringTuples().filter(n=>n[0]===_E).map(n=>n[1])[0];if(t===void 0||t==="")throw kd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function L3(r){let e=P3.decode(r);return xE.decode(e)}function GC(r){let e=L3(Xd(r)),t=O3(e.name),n=e.digest.reduce((s,i)=>s+i.toString(16).padStart(2,"0"),""),o=n.match(/.{1,2}/g);if(o==null)throw e3(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function O3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw Vy(r)}}function WC(r,e){let{host:t,port:n}=r.toOptions(),o=qC(r),[s]=GC(r);return`v=0
34
34
  o=- 0 0 IN ${o} ${t}
35
35
  s=-
36
36
  c=IN ${o} ${t}
@@ -45,24 +45,24 @@ a=fingerprint:${s}
45
45
  a=sctp-port:5000
46
46
  a=max-message-size:16384
47
47
  a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host\r
48
- `}function EE(r,e){return{type:"answer",sdp:KC(r,e)}}function bE(r,e){if(r.sdp===void 0)throw wc("Can't munge a missing SDP");return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
48
+ `}function RE(r,e){return{type:"answer",sdp:WC(r,e)}}function SE(r,e){if(r.sdp===void 0)throw wc("Can't munge a missing SDP");return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
49
49
  a=ice-ufrag:`+e+`
50
50
  `).replace(/\na=ice-pwd:[^\n]*\n/,`
51
51
  a=ice-pwd:`+e+`
52
- `),r}var vE=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),SE=r=>[...Array(r)].map(()=>vE.at(Math.floor(Math.random()*vE.length))).join("");var HC=1e4,Nae=ne("webrtc-direct").code,xE=ne("certhash").code,Qd=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"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw Oy("WebRTCTransport.createListener")}filter(e){return e.filter(E7.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[on]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw kd("we need to have the remote's PeerId");let i=ge(s),a=N3(Xd(e)),c=await Yi.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:P3(a.name)}),l=new Yi({certificates:[c]});try{let d=new Promise((S,T)=>{let L=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let B=`Data channel was never opened: state: ${L.readyState}`;this.log.error(B),this.metrics?.dialerEvents.increment({open_error:!0}),T(jp("data",B))},HC);L.onopen=B=>{clearTimeout(N),S(L)},L.onerror=B=>{clearTimeout(N);let Y=`Error opening a data channel for handshaking: ${B.target?.toString()??"not specified"}`;this.log.error(Y),this.metrics?.dialerEvents.increment({unknown_error:!0}),T(jp("data",Y))}}),u="libp2p+webrtc+v1/"+SE(32),h=await l.createOffer(),f=bE(h,u);await l.setLocalDescription(f);let p=EE(e,u);await l.setRemoteDescription(p);let m=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),b=Li({prologueBytes:w})(this.components),E=zi({channel:m,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),x={...E,sink:E.sink.bind(E),source:async function*(){for await(let S of E.source)for(let T of S)yield T}()},v=new Ts(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),I=Ec?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(I,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":v.close().catch(S=>{this.log.error("error closing connection",S)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let R=new ks(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await b.secureInbound(y,x,i),await t.upgrader.upgradeOutbound(v,{skipProtection:!0,skipEncryption:!0,muxerFactory:R})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw wc("no local certificate");let o=wE(e,{log:this.log});if(o==null)throw wc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=M(s,"hex"),a=RE.encode(i,t),c=C3.decode(Xd(n)),l=M("libp2p-webrtc-noise:");return ve([l,a,c])}};function _E(r){return e=>new Qd(e,r)}function AE(r){return e=>new Md(e,r)}var IE=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var DE=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await IE(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var NE=Ye(kE(),1);function CE(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var PE=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=d=>{r.removeEventListener("open",c),r.removeEventListener("error",l),d()},c=()=>{a(s)},l=d=>{a(()=>{i(d.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new NE.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let h=null;typeof u.data=="string"&&(h=M(u.data)),CE(u.data)&&(h=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(h=u.data),h!=null&&i(h)},d=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",d),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",d),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield CE(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var LE=(r,e)=>{e=e??{};let t=PE(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:DE(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var OE=WebSocket;var GC={"http:":"ws:","https:":"wss:"},BE="ws:",ME=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??BE}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??BE,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(GC))t.protocol===n&&(t.protocol=o);return t};function UE(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=ME(r,t),o=new OE(n.toString(),e.websocket);return LE(o,e)}function FE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Mi.matches(t)||Ss.matches(t)})}function VE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ss.matches(t)})}function KE(){throw new Error("WebSocket Servers can not be created in the browser!")}function $E(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new g("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var B3=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[on]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=$E(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new kr;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=J(),s=UE(r1(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new g(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new kr),s.close().catch(d=>{this.log.error("error closing raw socket",d)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return KE({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Q1||j1?VE(e):FE(e)}};function HE(r={}){return e=>new B3(e,r)}async function M3(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=r.writable.getWriter(),c=r.readable.getReader();await a.ready;function l(){let p=n.findIndex(m=>m===f);p!==-1&&(n.splice(p,1),f.timeline.close=Date.now(),o?.(f))}let d=!1,u=!1;(async function(){let p=await a.closed.catch(m=>m);if(p!=null){let m=p.message;m.includes("aborted by the remote server")||m.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${p.message}`)}d=!0,d&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let p=await c.closed.catch(m=>m);p!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${p.message}`),u=!0,d&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let h=!1,f={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(p){d||(a.abort(p).catch(m=>{i.error("could not abort stream",m)}),d=!0),u=!0,this.status="aborted",this.writeStatus="closed",this.readStatus="closed",this.timeline.reset=this.timeline.close=this.timeline.closeRead=this.timeline.closeWrite=Date.now(),l()},async close(p){this.status="closing",await Promise.all([f.closeRead(p),f.closeWrite(p)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(p){if(!u){this.readStatus="closing";try{await c.cancel()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(d=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}d&&l()},async closeWrite(p){if(!d){d=!0,this.writeStatus="closing";try{await a.close()}catch(m){m.toString().includes("RESET_STREAM")===!0&&(u=!0)}this.timeline.closeWrite=Date.now(),this.writeStatus="closed"}u&&l()},direction:t,timeline:{open:Date.now()},metadata:{},source:async function*(){for(;;){let p=await c.read();if(p.done){u=!0,d&&l();return}yield new ce(p.value)}}(),sink:async function(p){if(h)throw new Error("sink already called on stream");h=!0;try{this.writeStatus="writing";for await(let m of p)if(m instanceof Uint8Array)await a.write(m);else for(let y of m)await a.write(y);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await f.closeWrite()}},log:i};return f}function U3(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function qE(r,e){return e.filter(n=>!!r.find(o=>Z(n,o))).length===e.length}var XC=Object.values(gr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function QC(r){return mr.decode(XC.decode(r))}function GE(r){if(!t1.matches(r))throw new g("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===ne("certhash").code).map(([i,a])=>QC(a??"")),n=e.filter(([i,a])=>i===ne("p2p").code).map(([i,a])=>ge(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var F3=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={maxInboundStreams:t.maxInboundStreams??1e3},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[on]=!0;async dial(e,t){t?.signal?.throwIfAborted(),this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new Error("Need a local peerid");t=t??{};let{url:o,certhashes:s,remotePeer:i}=GE(e);if(i==null)throw new Error("Need a target peerid");if(s.length===0)throw new Error("Expected multiaddr to contain certhashes");let a,c,l=()=>{},d=!1,u=!1,h=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let f=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(p=>({algorithm:"sha-256",value:p.digest}))});if(l=p=>{if(!d)try{this.metrics?.dialerEvents.increment({[p]:!0}),f.close()}catch(m){this.log.error("error closing wt session",m)}finally{c!=null&&(c.timeline.close=Date.now()),d=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),await Promise.race([f.closed,f.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),f.closed.catch(p=>{this.log.error("error on remote wt session close",p)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(f,n,i,s))throw new Error("Failed to authenticate webtransport");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("Closing webtransport"),l("close")},abort:p=>{this.log("aborting webtransport due to passed err",p),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...U3()},h=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(f),skipProtection:!0})}catch(f){throw this.log.error("caught wt session err",f),l(h?"upgrade_error":u?"noise_error":"ready_error"),f}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o){let s=await e.createBidirectionalStream(),i=s.writable.getWriter(),a=s.readable.getReader();await i.ready;let c={source:async function*(){for(;;){let u=await a.read();if(u.value!=null&&(yield u.value),u.done)break}}(),sink:async function(u){for await(let h of u)h instanceof Uint8Array?await i.write(h):await i.write(h.subarray())}},l=Li()(this.components),{remoteExtensions:d}=await l.secureOutbound(t,c,n);if(i.close().catch(u=>{this.log.error(`Failed to close authentication stream writer: ${u.message}`)}),a.cancel().catch(u=>{this.log.error(`Failed to close authentication stream reader: ${u.message}`)}),!qE(d?.webtransportCerthashes??[],o.map(u=>u.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}webtransportMuxer(e){let t=0,n=this.config,o=this;return{protocol:"webtransport",createStreamMuxer:s=>{typeof s=="function"&&(s={onIncomingStream:s});let i=[];return async function(){let c=e.incomingBidirectionalStreams.getReader();for(;;){let{done:l,value:d}=await c.read();if(l)break;if(i.length>=n.maxInboundStreams)d.writable.close().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),d.readable.cancel().catch(u=>{o.log.error(`Failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await M3(d,String(t++),"inbound",i,s?.onStreamEnd,o.components.logger);i.push(u),s?.onIncomingStream?.(u)}}}().catch(()=>{this.log.error("WebTransport failed to receive incoming stream")}),{protocol:"webtransport",streams:i,newStream:async c=>{let l=await e.createBidirectionalStream(),d=await M3(l,String(t++),s?.direction??"outbound",i,s?.onStreamEnd,o.components.logger);return i.push(d),d},close:async c=>{this.log("Closing webtransport muxer"),await Promise.all(i.map(async l=>l.close(c)))},abort:c=>{this.log("Aborting webtransport muxer with err:",c);for(let l of i)l.abort(c)},...U3()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(t1.exactMatch)}};function WE(r={}){return e=>new F3(e,r)}var V3=Ye(l1(),1);function zE(r,e){let t=e.map((n,o)=>({record:dn(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===Wt.ValidityType.EOL&&o.record.validityType===Wt.ValidityType.EOL){let a=V3.default.fromString(n.record.validity).toDate(),c=V3.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 Jd="1.4.3",ef="libp2p";var XE="4.1.2-7419dfc",QE="helia";var jE={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function tf(r={}){return{peerId:r.peerId,dns:r.dns,addresses:{listen:["/webrtc"]},transports:[bp({discoverRelays:1}),AE(),_E(),WE(),HE()],connectionEncryption:[Li()],streamMuxers:[Kg(),ky()],peerDiscovery:[n9(jE)],services:{autoNAT:Gg(),dcutr:w9(),delegatedRouting:()=>q7("https://delegated-ipfs.dev"),dht:ny({clientMode:!0,validators:{ipns:f1},selectors:{ipns:zE}}),identify:C9({agentVersion:`${QE}/${XE} ${ef}/${Jd} UserAgent=${globalThis.navigator.userAgent}`}),keychain:Ad(r.keychain),ping:Ly()}}}var At={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var oa;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=re((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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>te(i,o.codec()),o.decode=i=>ee(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=re((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),nf.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=nf.codec().decode(i,i.uint32());break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>te(i,o.codec()),o.decode=i=>ee(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=re((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),rf.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(rf.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>te(o,r.codec()),r.decode=o=>ee(o,r.codec())})(oa||(oa={}));var rf;(function(r){let e;r.codec=()=>(e==null&&(e=re((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)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(rf||(rf={}));var nf;(function(r){let e;r.codec=()=>(e==null&&(e=re((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)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(nf||(nf={}));function sa(r,e){let t=oa.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=e8({...r,publicKey:r.publicKey}));let n=new Map,o=BigInt(Date.now());for(let[s,i]of t.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...t,id:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:Q(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var K3="/peers/";function ia(r){if(!Ms(r)||r.type==null)throw new g("Invalid PeerId",At.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Pe(`${K3}${e}`)}async function ZE(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=Q(o.multiaddr)),!Do(o.multiaddr))throw new g("Multiaddr was invalid",At.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function sf(r,e,t,n){if(e==null)throw new g("Invalid PeerData",At.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!Z(e.publicKey,r.publicKey))throw new g("publicKey bytes do not match peer id publicKey bytes",At.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new g("peer id did not match existing peer id",At.ERR_INVALID_PARAMETERS);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(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=of(u,{validate:JE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=of(u,{validate:eb,map:tb})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,f]of u)f==null?a.delete(h):a.set(h,f);a=of([...a.entries()],{validate:JE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[f,p]of u)p==null?h.delete(f):h.set(f,p);c=of([...h.entries()],{validate:eb,map:tb})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await ZE(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,h)=>u.localeCompare(h)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function of(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 JE(r,e){if(typeof r!="string")throw new g("Metadata key must be a string",At.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new g("Metadata value must be a Uint8Array",At.ERR_INVALID_PARAMETERS)}function eb(r,e){if(typeof r!="string")throw new g("Tag name must be a string",At.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new g("Tag value must be an integer",At.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new g("Tag value must be between 0-100",At.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new g("Tag ttl must be an integer",At.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new g("Tag ttl must be between greater than 0",At.ERR_INVALID_PARAMETERS)}}function tb(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function af(r,e,t){let n=r.toString().split("/")[2],o=lt.decode(n),s=je(o),i=t.get(s);if(i!=null)return i;let a=sa(s,e);return t.set(s,a),a}function jC(r,e){return r==null?{}:{prefix:K3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(af(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(af(n.key,n.value,e),af(o.key,o.value,e)))}}var cf=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=Aa({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(ia(e))}async delete(e){if(this.peerId.equals(e))throw new g("Cannot delete self peer",At.ERR_INVALID_PARAMETERS);await this.datastore.delete(ia(e))}async load(e){let t=await this.datastore.get(ia(e));return sa(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await sf(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await sf(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await sf(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new st;for await(let{key:n,value:o}of this.datastore.query(jC(e??{},t))){let s=af(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(ia(e)),n=sa(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=oa.encode(t);return n!=null&&Z(s,n)?{peer:sa(e,s),previous:o,updated:!1}:(await this.datastore.put(ia(e),s),{peer:sa(e,s),previous:o,updated:!0})}};var lf=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 cf(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await tc(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await Zr.openAndCertify(e,lr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=lr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await Zr.createFromProtobuf(s.peerRecordEnvelope),a=lr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!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 rb(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var ZC=r=>r;function $3(r,e){let t=r.getPeerId();return t!=null&&ge(t).equals(e)&&(r=r.decapsulate(Q(`/p2p/${e.toString()}`))),r}var uf=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??ZC,this._updatePeerStoreAddresses=rb(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>Q(t))).map(t=>t.getPeerId()===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",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>Q(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>Q(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>Q(e))}addObservedAddr(e){e=$3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=$3(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=$3(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>Q(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var H3=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=oo())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Lc(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")}},JC=["metrics","connectionProtector","dns"],eN=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function nb(r={}){let e=new H3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!eN.includes(o)){let i=e.components[o];if(i==null&&!JC.includes(o))throw new g(`${o} not set`,"ERR_SERVICE_MISSING");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 ob(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!Gt(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}function q3(r){try{let{address:e}=r.nodeAddress();return!!Gt(e)}catch{return!0}}function tN(r,e){let t=q3(r.multiaddr),n=q3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function rN(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function nN(r,e){let t=ws.exactMatch(r.multiaddr),n=ws.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function aa(r,e){let t=tN(r,e);if(t!==0)return t;let n=nN(r,e);return n!==0?n:rN(r,e)}var oN=32,{code:sN}=ne("dnsaddr"),Ps=async function(e,t={}){let n=t.maxRecursiveDepth??oN;if(n===0)throw new g("Max recursive depth reached","ERR_MAX_RECURSIVE_DEPTH_REACHED");let[,o]=e.stringTuples().find(([l])=>l===sN)??[],i=await(t?.dns??il()).query(`_dnsaddr.${o}`,{signal:t?.signal,types:[er.TXT]}),a=e.getPeerId(),c=[];for(let l of i.Answer){let d=l.data.split("=")[1];if(d==null||a!=null&&!d.includes(a))continue;let u=Q(d);if(d.startsWith("/dnsaddr")){let h=await u.resolve({...t,maxRecursiveDepth:n-1});c.push(...h.map(f=>f.toString()))}else c.push(u.toString())}return c};var Qn;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Qn||(Qn={}));var W;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(W||(W={}));var iN={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Ps},addressSorter:aa},transportManager:{faultTolerance:jn.FATAL_ALL}};async function sb(r){let e=Gi(iN,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new g(Qn.ERR_PROTECTOR_REQUIRED,W.ERR_PROTECTOR_REQUIRED);if(!(await ft(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new g("Private key doesn't match peer id",W.ERR_INVALID_KEY);return e}function df(r){if(Ms(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:ge(t),r.forEach(n=>{if(!Do(n))throw new g("Invalid Multiaddr",W.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new g("Multiaddrs must all have the same peer id or have no peer id",W.ERR_INVALID_PARAMETERS)}else{let s=ge(o);if(e==null||!e.equals(s))throw new g("Multiaddrs must all have the same peer id or have no peer id",W.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var ff="last-dial-failure";var hf=5,pf=100,mf=50,ib=1e3*60*7;var Ls={minConnections:hf,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:ib,autoDialDiscoveredPeersDebounce:10},gf=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Ls.minConnections,this.autoDialPriority=t.autoDialPriority??Ls.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ls.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ls.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ls.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ls.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new fr({concurrency:t.autoDialConcurrency??Ls.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new ht(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new st;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((d,u)=>d+u.value,0));let c=s.sort((l,d)=>{let u=i.get(l.id)??0,h=i.get(d.id)??0;return u>h?-1:u<h?1:0}).filter(l=>{let d=l.metadata.get(ff);if(d==null)return!0;let u=parseInt(O(d));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let d=this.connectionManager.getConnectionsMap().size;if(d>=this.minConnections){this.log("got enough connections now %d/%d",d,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(d=>{this.log.error("could not connect to peerStore stored peer",d)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var ab={maxConnections:pf,allow:[]},yf=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??ab.maxConnections,this.allow=t.allow??ab.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new st;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((d,u)=>d+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,d=o.get(c.remotePeer)??0;if(l>d)return 1;if(l<d)return-1;let u=a.timeline.open,h=c.timeline.open;return u<h?1:u>h?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function cb(r,e){let t=!1;for(let o of Di.keys())if(t=r.protoNames().includes(o),t)break;if(!t)return[r];let n=await r.resolve(e);return e.log("resolved %s to",r,n.map(o=>o.toString())),n}var Dc={addressSorter:aa,maxParallelDials:mf,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:5e3,resolvers:{dnsaddr:Ps}},wf=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??Dc.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Dc.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Dc.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Dc.dialTimeout,this.connections=t.connections??new st,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,j(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))Di.set(n,o);this.queue=new Nr({concurrency:t.maxParallelDials??Dc.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController,j(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=df(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),s;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let l of o)if(c.has(l.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of o)i.options.multiaddrs.add(a.toString());return i.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new g("Dial queue is full","ERR_DIAL_QUEUE_FULL");return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:d})=>d.toString()).forEach(d=>{a?.multiaddrs.add(d)})}catch(d){throw c.clear(),d}try{let d=0,u=[];for(let h of l){if(d===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",d,n),new g("Peer had more than maxPeerAddrsToDial",W.ERR_TOO_MANY_ADDRESSES);d++;try{let f=await this.components.transportManager.dial(h.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",h.multiaddr),f}catch(f){if(this.log.error("dial failed to %a",h.multiaddr,f),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[ff]:M(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new g(f.message,yn);u.push(f)}}throw u.length===1?u[0]:new Pc(u,"All multiaddr dials failed",W.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=Me([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return j(1/0,t),t}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 g("Tried to dial self",W.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new g("The dial request is blocked by gater.allowDialPeer",W.ERR_PEER_DIAL_INTERCEPTED);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:h})=>h.toString()))}catch(u){if(u.code!==W.ERR_NOT_FOUND)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);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:h})=>h.toString())),o.push(...u.multiaddrs.map(h=>({multiaddr:h,isCertified:!1})))}catch(u){u.code!==W.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let h=await cb(u.multiaddr,{dns:this.components.dns,...n,log:this.log});return h.length===1&&h[0].equals(u.multiaddr)?u:h.map(f=>({multiaddr:f,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(h=>h.multiaddr.protos().pop()?.path===!0?h:h.multiaddr.getPeerId()==null?{multiaddr:h.multiaddr.encapsulate(u),isCertified:h.isCertified}:h)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let h=u.multiaddr.getPeerId();return e!=null&&h!=null?e.equals(h):!0}),a=new Map;for(let u of i){let h=u.multiaddr.toString(),f=a.get(h);if(f!=null){f.isCertified=f.isCertified||u.isCertified||!1;continue}a.set(h,u)}let c=[...a.values()];if(c.length===0)throw new g("The dial request has no valid addresses",W.ERR_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=l.sort(this.addressSorter);if(d.length===0)throw new g("The connection gater denied all addresses in the dial request",W.ERR_NO_VALID_ADDRESSES);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.runOnTransientConnection===!1?n.find(o=>!ws.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var dN=50,Os={minConnections:hf,maxConnections:pf,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},Ef=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Os.maxConnections;let n=t.minConnections??Os.minConnections;if(this.maxConnections<n)throw new g("Connection Manager maxConnections must be greater than minConnections",W.ERR_INVALID_PARAMETERS);this.connections=new st,this.started=!1,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.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>Q(o)),this.deny=(t.deny??[]).map(o=>Q(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Os.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Wi({points:t.inboundConnectionThreshold??Os.inboundConnectionThreshold,duration:1}),this.autoDial=new gf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Os.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Os.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Os.autoDialMaxQueueLength}),this.connectionPruner=new yf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new wf(e,{addressSorter:t.addressSorter??aa,maxParallelDials:t.maxParallelDials??mf,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??5e3,resolvers:t.resolvers??{dnsaddr:Ps},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;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.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(f4)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}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.isStarted())throw new g("Not started",W.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=df(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??dN}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!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 bf=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}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 g("No content routers available",W.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new ht;for await(let s of Bt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available",W.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new g(Qn.NOT_STARTED_YET,W.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new g(Qn.NOT_STARTED_YET,W.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var xf=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??[]}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available",W.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new g("Should not try to find self",W.ERR_FIND_SELF);let n=this,o=Bt(...this.routers.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.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),s;throw new g(Qn.NOT_FOUND,W.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available",W.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new ht;for await(let s of Wn(async function*(){let i=Bt(...n.routers.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",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}};var j3=32,Z3=64,vf=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,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)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new g(`No handler registered for protocol ${e}`,W.ERR_NO_HANDLER_FOR_PROTOCOL);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))throw new g(`Handler already registered for protocol ${e}`,W.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=Gi.bind({ignoreUndefined:!0})({maxInboundStreams:j3,maxOutboundStreams:Z3},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new g("invalid topology",W.ERR_INVALID_PARAMETERS);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))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==W.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var Sf=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=new Map,this.listeners=Ku({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??jn.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new g("Transport must have a valid tag",W.ERR_INVALID_KEY);if(this.transports.has(t))throw new g(`There is already a transport with the tag ${t}`,W.ERR_DUPLICATE_TRANSPORT);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.transportForMultiaddr(e);if(n==null)throw new g(`No transport available for address ${String(e)}`,W.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=W.ERR_TRANSPORT_DIAL_FAILED),o}}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()}transportForMultiaddr(e){for(let t of this.transports.values())if(t.filter([e]).length>0)return t}async listen(e){if(!this.isStarted())throw new g("Not started",W.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.filter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let d=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(d),d.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:d})}),d.addEventListener("close",()=>{let h=u.findIndex(f=>f===d);u.splice(h,1),this.components.events.safeDispatchEvent("transport:close",{detail:d})}),i.push(d.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==jn.NO_FATAL)throw new g(`Transport (${n}) could not listen on any available address`,W.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===jn.FATAL_ALL)throw new g(n,W.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var It="/multistream/1.0.0";var fN=M(`
53
- `);async function Bs(r,e,t){await r.write(e,t)}async function lb(r,e,t){await r.writeV(e,t)}async function hN(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==fN[0])throw e.log.error("Invalid mss message - missing newline",t),new g("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function $o(r,e){let t=await hN(r,e);return O(t.subarray())}async function Tc(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return pN(r,e[0],t);let n=fn(r,{...t,maxDataLength:1024}),o=e.shift();if(o==null)throw new Error("At least one protocol must be specified");t.log.trace('select: write ["%s", "%s"]',It,o);let s=M(`${It}
52
+ `),r}var AE=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),IE=r=>[...Array(r)].map(()=>AE.at(Math.floor(Math.random()*AE.length))).join("");var YC=1e4,Fae=ee("webrtc-direct").code,_E=ee("certhash").code,Qd=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"})})}async dial(e,t){let n=await this._connect(e,t);return this.log("dialing address: %a",e),n}createListener(e){throw Fy("WebRTCTransport.createListener")}listenFilter(e){return e.filter(R7.exactMatch)}dialFilter(e){return this.listenFilter(e)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[on]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw kd("we need to have the remote's PeerId");let i=ye(s),a=L3(Xd(e)),c=await Yi.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:O3(a.name)}),l=new Yi({certificates:[c]});try{let d=new Promise((R,T)=>{let L=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let B=`Data channel was never opened: state: ${L.readyState}`;this.log.error(B),this.metrics?.dialerEvents.increment({open_error:!0}),T(Jp("data",B))},YC);L.onopen=B=>{clearTimeout(N),R(L)},L.onerror=B=>{clearTimeout(N);let X=`Error opening a data channel for handshaking: ${B.target?.toString()??"not specified"}`;this.log.error(X),this.metrics?.dialerEvents.increment({unknown_error:!0}),T(Jp("data",X))}}),u="libp2p+webrtc+v1/"+IE(32),h=await l.createOffer(),f=SE(h,u);await l.setLocalDescription(f);let p=RE(e,u);await l.setRemoteDescription(p);let m=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),b=Li({prologueBytes:w})(this.components),E=zi({channel:m,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),x={...E,sink:E.sink.bind(E),source:async function*(){for await(let R of E.source)for(let T of R)yield T}()},v=new Ts(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),I=Ec?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(I,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":v.close().catch(R=>{this.log.error("error closing connection",R)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let S=new ks(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await b.secureInbound(y,x,i),await t.upgrader.upgradeOutbound(v,{skipProtection:!0,skipEncryption:!0,muxerFactory:S})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw wc("no local certificate");let o=vE(e,{log:this.log});if(o==null)throw wc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=M(s,"hex"),a=DE.encode(i,t),c=P3.decode(Xd(n)),l=M("libp2p-webrtc-noise:");return ve([l,a,c])}};function TE(r){return e=>new Qd(e,r)}function kE(r){return e=>new Md(e,r)}var CE=async r=>{if(r.readyState>=2)throw new Error("socket closed");r.readyState!==1&&await new Promise((e,t)=>{function n(){r.removeEventListener("open",o),r.removeEventListener("error",s)}function o(){n(),e()}function s(i){n(),t(i.error??new Error(`connect ECONNREFUSED ${r.url}`))}r.addEventListener("open",o),r.addEventListener("error",s)})};var NE=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await CE(r)}catch(s){if(s.message==="socket closed")break;throw s}if(r.readyState===r.CLOSING||r.readyState===r.CLOSED)break;r.send(o)}e.closeOnEnd!=null&&r.readyState<=1&&await new Promise((o,s)=>{r.addEventListener("close",i=>{if(i.wasClean||i.code===1006)o();else{let a=Object.assign(new Error("ws error"),{event:i});s(a)}}),setTimeout(()=>{r.close()})})});var BE=Xe(LE(),1);function OE(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var ME=r=>{r.binaryType="arraybuffer";let e=async()=>{await new Promise((s,i)=>{if(n){s();return}if(o!=null){i(o);return}let a=d=>{r.removeEventListener("open",c),r.removeEventListener("error",l),d()},c=()=>{a(s)},l=d=>{a(()=>{i(d.error??new Error(`connect ECONNREFUSED ${r.url}`))})};r.addEventListener("open",c),r.addEventListener("error",l)})},t=async function*(){let s=new BE.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let h=null;typeof u.data=="string"&&(h=M(u.data)),OE(u.data)&&(h=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(h=u.data),h!=null&&i(h)},d=u=>{c(u.error??new Error("Socket error"))};return r.addEventListener("message",l),r.addEventListener("error",d),r.addEventListener("close",a),()=>{r.removeEventListener("message",l),r.removeEventListener("error",d),r.removeEventListener("close",a)}},{highWaterMark:1/0});await e();for await(let i of s)yield OE(i)?new Uint8Array(i):i}(),n=r.readyState===1,o;return r.addEventListener("open",()=>{n=!0,o=null}),r.addEventListener("close",()=>{n=!1,o=null}),r.addEventListener("error",s=>{n||(o=s.error??new Error(`connect ECONNREFUSED ${r.url}`))}),Object.assign(t,{connected:e})};var UE=(r,e)=>{e=e??{};let t=ME(r),n=e.remoteAddress,o=e.remotePort;if(r.url!=null)try{let i=new URL(r.url);n=i.hostname,o=parseInt(i.port,10)}catch{}if(n==null||o==null)throw new Error("Remote connection did not have address and/or port");return{sink:NE(r,e),source:t,connected:async()=>{await t.connected()},close:async()=>{(r.readyState===r.CONNECTING||r.readyState===r.OPEN)&&await new Promise(i=>{r.addEventListener("close",()=>{i()}),r.close()})},destroy:()=>{r.terminate!=null?r.terminate():r.close()},remoteAddress:n,remotePort:o,socket:r}};var FE=WebSocket;var QC={"http:":"ws:","https:":"wss:"},VE="ws:",KE=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??VE}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??VE,o=e.host,s=e.port!=null&&o?.endsWith(`:${e.port}`)!==!0?`:${e.port}`:"";r=`${n}//${o}${s}${r}`}let t=new URL(r);for(let[n,o]of Object.entries(QC))t.protocol===n&&(t.protocol=o);return t};function $E(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=KE(r,t),o=new FE(n.toString(),e.websocket);return UE(o,e)}function HE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Mi.matches(t)||Rs.matches(t)})}function qE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Rs.matches(t)})}function GE(){throw new Error("WebSocket Servers can not be created in the browser!")}function WE(r,e,t){let n=t.logger.forComponent("libp2p:websockets:maconn"),o={log:n,async sink(s){try{await r.sink(async function*(){for await(let i of s)i instanceof Uint8Array?yield i:yield i.subarray()}())}catch(i){i.type!=="aborted"&&n.error(i)}},source:r.source,remoteAddr:e,timeline:{open:Date.now()},async close(s={}){let i=Date.now();if(s.signal==null){let c=AbortSignal.timeout(500);s={...s,signal:c}}let a=()=>{let{host:c,port:l}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s after %dms, destroying it manually",c,l,Date.now()-i),this.abort(new g("Socket close timeout","ERR_SOCKET_CLOSE_TIMEOUT"))};s.signal?.addEventListener("abort",a);try{await r.close()}catch(c){n.error("error closing WebSocket gracefully",c),this.abort(c)}finally{s.signal?.removeEventListener("abort",a),o.timeline.close=Date.now()}},abort(s){let{host:i,port:a}=o.remoteAddr.toOptions();n("timeout closing stream to %s:%s due to error",i,a,s),r.destroy(),o.timeline.close=Date.now()}};return r.socket.addEventListener("close",()=>{o.timeline.close==null&&(o.timeline.close=Date.now())},{once:!0}),o}var U3=class{log;init;logger;constructor(e,t){this.log=e.logger.forComponent("libp2p:websockets"),this.logger=e.logger,this.init=t}[Symbol.toStringTag]="@libp2p/websockets";[on]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=WE(n,e,{logger:this.logger});this.log("new outbound connection %s",o.remoteAddr);let s=await t.upgrader.upgradeOutbound(o);return this.log("outbound connection %s upgraded",o.remoteAddr),s}async _connect(e,t){if(t?.signal?.aborted===!0)throw new Vt;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=J(),s=$E(r1(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new g(`Could not connect to ${e.toString()}`,"ERR_CONNECTION_FAILED");this.log.error("connection error:",c),o.reject(c)}),t.signal==null)return await Promise.race([s.connected(),o.promise]),this.log("connected %s",e),s;let i,a=new Promise((c,l)=>{if(i=()=>{l(new Vt),s.close().catch(d=>{this.log.error("error closing raw socket",d)})},t?.signal?.aborted===!0){i();return}t?.signal?.addEventListener("abort",i)});try{await Promise.race([a,o.promise,s.connected()])}finally{i!=null&&t?.signal?.removeEventListener("abort",i)}return this.log("connected %s",e),s}createListener(e){return GE({logger:this.logger},{...this.init,...e})}listenFilter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):Q1||j1?qE(e):HE(e)}dialFilter(e){return this.listenFilter(e)}};function zE(r={}){return e=>new U3(e,r)}function F3(r){throw new Error("Not implemented")}var V3=class extends mn{writer;reader;constructor(e){super(e),this.writer=e.bidiStream.writable.getWriter(),this.reader=e.bidiStream.readable.getReader(),Promise.resolve().then(async()=>{for(;;){let t=await this.reader.read();if(t.done){e.log("remote closed write");return}t.value!=null&&this.sourcePush(new ce(t.value))}}).catch(t=>{e.log.error("error reading from stream",t),this.abort(t)}).finally(()=>{this.remoteCloseWrite()}),this.writer.closed.then(()=>{e.log("writer closed")}).catch(t=>{e.log("writer close promise rejected",t)}).finally(()=>{this.remoteCloseRead()})}sendNewStream(e){}async sendData(e,t){for await(let n of e)this.log("sendData waiting for writer to be ready"),await Ue(this.writer.ready,t?.signal),this.writer.write(n).catch(o=>{this.log.error("error sending stream data",o)})}async sendReset(e){this.log("sendReset aborting writer"),await Ue(this.writer.abort(),e?.signal),this.log("sendReset aborted writer")}async sendCloseWrite(e){this.log("sendCloseWrite closing writer"),await Ue(this.writer.close(),e?.signal),this.log("sendCloseWrite closed writer")}async sendCloseRead(e){this.log("sendCloseRead cancelling reader"),await Ue(this.reader.cancel(),e?.signal),this.log("sendCloseRead cancelled reader")}};async function K3(r,e,t,n,o,s){let i=s.forComponent(`libp2p:webtransport:stream:${t}:${e}`),a=new V3({bidiStream:r,id:e,direction:t,log:i,onEnd:()=>{let c=n.findIndex(l=>l===a);c!==-1&&n.splice(c,1),o?.(a)}});return a}function Jd(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function YE(r,e,t,n){let o=0,s=t.forComponent("libp2p:webtransport:muxer");return{protocol:"webtransport",createStreamMuxer:i=>{typeof i=="function"&&(i={onIncomingStream:i});let a=[];return Promise.resolve().then(async()=>{for(;;){let{done:l,value:d}=await e.read();if(l)break;if(a.length>=n.maxInboundStreams)s(`too many inbound streams open - ${a.length}/${n.maxInboundStreams}, closing new incoming stream`),d.writable.close().catch(u=>{s.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)}),d.readable.cancel().catch(u=>{s.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${u.message}`)});else{let u=await K3(d,String(o++),"inbound",a,i?.onStreamEnd,t);a.push(u),i?.onIncomingStream?.(u)}}}),{protocol:"webtransport",streams:a,newStream:async l=>{s("new outgoing stream",l);let d=await r.createBidirectionalStream(),u=await K3(d,String(o++),i?.direction??"outbound",a,i?.onStreamEnd,t);return a.push(u),u},close:async()=>{s("closing webtransport muxer gracefully"),r.close()},abort:l=>{s("closing webtransport muxer with err:",l),r.close()},...Jd()}}}}function XE(r,e){return e.filter(n=>!!r.find(o=>Z(n,o))).length===e.length}var eN=Object.values(wr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function tN(r){return yr.decode(eN.decode(r))}function $3(r){if(!t1.matches(r))throw new g("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===ee("certhash").code).map(([i,a])=>tN(a??"")),n=e.filter(([i,a])=>i===ee("p2p").code).map(([i,a])=>ye(a??""))[0],o=r.toOptions(),s=o.host;return o.family===6&&s?.includes(":")&&(s=`[${s}]`),{url:`https://${s}:${o.port}`,certhashes:t,remotePeer:n}}var QE=WebTransport;var H3=class{log;components;config;metrics;constructor(e,t={}){this.log=e.logger.forComponent("libp2p:webtransport"),this.components=e,this.config={...t,maxInboundStreams:t.maxInboundStreams??1e3,certificates:t.certificates??[]},e.metrics!=null&&(this.metrics={dialerEvents:e.metrics.registerCounterGroup("libp2p_webtransport_dialer_events_total",{label:"event",help:"Total count of WebTransport dialer events by type"})})}[Symbol.toStringTag]="@libp2p/webtransport";[on]=!0;async dial(e,t){if(t?.signal?.aborted===!0)throw new Vt;this.log("dialing %s",e);let n=this.components.peerId;if(n===void 0)throw new g("Need a local peerid","ERR_INVALID_PARAMETERS");t=t??{};let{url:o,certhashes:s,remotePeer:i}=$3(e);if(i==null)throw new g("Need a target peerid","ERR_INVALID_PARAMETERS");if(s.length===0)throw new g("Expected multiaddr to contain certhashes","ERR_INVALID_PARAMETERS");let a,c,l=()=>{},d=!1,u=!1,h=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let f=new QE(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(p=>({algorithm:"sha-256",value:p.digest}))});if(l=p=>{if(!d)try{this.metrics?.dialerEvents.increment({[p]:!0}),f.close()}catch(m){this.log.error("error closing wt session",m)}finally{c!=null&&(c.timeline.close=Date.now()),d=!0}},a=()=>{l(u?"noise_timeout":"ready_timeout")},t.signal?.addEventListener("abort",a,{once:!0}),this.log("wait for session to be ready"),await Promise.race([f.closed,f.ready]),this.log("session became ready"),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),f.closed.catch(p=>{this.log.error("error on remote wt session close",p)}).finally(()=>{l("remote_close")}),h=await Ue(this.authenticateWebTransport(f,n,i,s),t.signal),!h)throw new g("Failed to authenticate webtransport","ERR_AUTHENTICATION_FAILED");return this.metrics?.dialerEvents.increment({open:!0}),c={close:async()=>{this.log("closing webtransport"),l("close")},abort:p=>{this.log("aborting webtransport due to passed err",p),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...Jd()},await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:YE(f,f.incomingBidirectionalStreams.getReader(),this.components.logger,this.config),skipProtection:!0})}catch(f){throw this.log.error("caught wt session err",f),l(h?"upgrade_error":u?"noise_error":"ready_error"),f}finally{a!=null&&t.signal?.removeEventListener("abort",a)}}async authenticateWebTransport(e,t,n,o,s){if(s?.aborted===!0)throw new Vt;let i=await e.createBidirectionalStream(),a=i.writable.getWriter(),c=i.readable.getReader(),l={source:async function*(){for(;;){let h=await c.read();if(h.value!=null&&(yield h.value),h.done)break}}(),sink:async h=>{for await(let f of h){await Ue(a.ready,s);let p=f instanceof Uint8Array?f:f.subarray();a.write(p).catch(m=>{this.log.error("could not write chunk during authentication of WebTransport stream",m)})}}},d=Li()(this.components),{remoteExtensions:u}=await d.secureOutbound(t,l,n);if(a.close().catch(h=>{this.log.error(`Failed to close authentication stream writer: ${h.message}`)}),c.cancel().catch(h=>{this.log.error(`Failed to close authentication stream reader: ${h.message}`)}),!XE(u?.webtransportCerthashes??[],o.map(h=>h.bytes)))throw new Error("Our certhashes are not a subset of the remote's reported certhashes");return!0}createListener(e){return F3(this.components,{...e,certificates:this.config.certificates,maxInboundStreams:this.config.maxInboundStreams})}listenFilter(){return[]}dialFilter(e){return e.filter(t=>{if(!t1.exactMatch(t))return!1;let{url:n,certhashes:o,remotePeer:s}=$3(t);return n!=null&&s!=null&&o.length>0})}};function jE(r={}){return e=>new H3(e,r)}var q3=Xe(l1(),1);function ZE(r,e){let t=e.map((n,o)=>({record:hn(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===zt.ValidityType.EOL&&o.record.validityType===zt.ValidityType.EOL){let a=q3.default.fromString(n.record.validity).toDate(),c=q3.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 ef="1.5.0",tf="libp2p";var eb="4.1.2-b0d50e9",tb="helia";var rb={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function rf(r={}){return{peerId:r.peerId,dns:r.dns,addresses:{listen:["/webrtc"]},transports:[vp({discoverRelays:1}),kE(),TE(),jE(),zE()],connectionEncryption:[Li()],streamMuxers:[Gg(),Ly()],peerDiscovery:[a9(rb)],services:{autoNAT:Xg(),dcutr:v9(),delegatedRouting:()=>Y7("https://delegated-ipfs.dev"),dht:ay({clientMode:!0,validators:{ipns:f1},selectors:{ipns:ZE}}),identify:O9({agentVersion:`${tb}/${eb} ${tf}/${ef} UserAgent=${globalThis.navigator.userAgent}`}),keychain:Ad(r.keychain),ping:Uy()}}}var Tt={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var oa;(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)=>{let c={key:"",value:new Uint8Array(0)},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=i.bytes();break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>re(i,o.codec()),o.decode=i=>te(i,o.codec())})(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),of.codec().encode(i.value,a)),c.lengthDelimited!==!1&&a.ldelim()},(i,a)=>{let c={key:""},l=a==null?i.len:i.pos+a;for(;i.pos<l;){let d=i.uint32();switch(d>>>3){case 1:c.key=i.string();break;case 2:c.value=of.codec().decode(i,i.uint32());break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>re(i,o.codec()),o.decode=i=>te(i,o.codec())})(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),nf.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);i.lengthDelimited!==!1&&s.ldelim()},(o,s)=>{let i={addresses:[],protocols:[],metadata:new Map,tags:new Map},a=s==null?o.len:o.pos+s;for(;o.pos<a;){let c=o.uint32();switch(c>>>3){case 1:i.addresses.push(nf.codec().decode(o,o.uint32()));break;case 2:i.protocols.push(o.string());break;case 4:i.publicKey=o.bytes();break;case 5:i.peerRecordEnvelope=o.bytes();break;case 6:{let l=r.Peer$metadataEntry.codec().decode(o,o.uint32());i.metadata.set(l.key,l.value);break}case 7:{let l=r.Peer$tagsEntry.codec().decode(o,o.uint32());i.tags.set(l.key,l.value);break}default:o.skipType(c&7);break}}return i})),n),r.encode=o=>re(o,r.codec()),r.decode=o=>te(o,r.codec())})(oa||(oa={}));var nf;(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)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={multiaddr:new Uint8Array(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.multiaddr=t.bytes();break;case 2:o.isCertified=t.bool();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(nf||(nf={}));var of;(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)=>{let o={value:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:o.value=t.uint32();break;case 2:o.expiry=t.uint64();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>re(t,r.codec()),r.decode=t=>te(t,r.codec())})(of||(of={}));function sa(r,e){let t=oa.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=o8({...r,publicKey:r.publicKey}));let n=new Map,o=BigInt(Date.now());for(let[s,i]of t.tags.entries())i.expiry!=null&&i.expiry<o||n.set(s,i);return{...t,id:r,addresses:t.addresses.map(({multiaddr:s,isCertified:i})=>({multiaddr:j(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var G3="/peers/";function ia(r){if(!Ms(r)||r.type==null)throw new g("Invalid PeerId",Tt.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Le(`${G3}${e}`)}async function nb(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=j(o.multiaddr)),!To(o.multiaddr))throw new g("Multiaddr was invalid",Tt.ERR_INVALID_PARAMETERS);if(!await e(r,o.multiaddr))continue;let s=o.isCertified??!1,i=o.multiaddr.toString(),a=n.get(i);a!=null?o.isCertified=a.isCertified||s:n.set(i,{multiaddr:o.multiaddr,isCertified:s})}return[...n.values()].sort((o,s)=>o.multiaddr.toString().localeCompare(s.multiaddr.toString())).map(({isCertified:o,multiaddr:s})=>({isCertified:o,multiaddr:s.bytes}))}async function af(r,e,t,n){if(e==null)throw new g("Invalid PeerData",Tt.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!Z(e.publicKey,r.publicKey))throw new g("publicKey bytes do not match peer id publicKey bytes",Tt.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new g("peer id did not match existing peer id",Tt.ERR_INVALID_PARAMETERS);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(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses)),e.protocols!=null&&(i=new Set(e.protocols)),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);a=sf(u,{validate:ob})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=sf(u,{validate:sb,map:ib})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}if(t==="merge"){if(e.multiaddrs!=null&&s.push(...e.multiaddrs.map(u=>({isCertified:!1,multiaddr:u}))),e.addresses!=null&&s.push(...e.addresses),e.protocols!=null&&(i=new Set([...i,...e.protocols])),e.metadata!=null){let u=e.metadata instanceof Map?[...e.metadata.entries()]:Object.entries(e.metadata);for(let[h,f]of u)f==null?a.delete(h):a.set(h,f);a=sf([...a.entries()],{validate:ob})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),h=new Map(c);for(let[f,p]of u)p==null?h.delete(f):h.set(f,p);c=sf([...h.entries()],{validate:sb,map:ib})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await nb(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,h)=>u.localeCompare(h)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function sf(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 ob(r,e){if(typeof r!="string")throw new g("Metadata key must be a string",Tt.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new g("Metadata value must be a Uint8Array",Tt.ERR_INVALID_PARAMETERS)}function sb(r,e){if(typeof r!="string")throw new g("Tag name must be a string",Tt.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new g("Tag value must be an integer",Tt.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new g("Tag value must be between 0-100",Tt.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new g("Tag ttl must be an integer",Tt.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new g("Tag ttl must be between greater than 0",Tt.ERR_INVALID_PARAMETERS)}}function ib(r,e){let t;return e.expiry!=null&&(t=e.expiry),e.ttl!=null&&(t=BigInt(Date.now()+Number(e.ttl))),{value:e.value??0,expiry:t}}function cf(r,e,t){let n=r.toString().split("/")[2],o=ut.decode(n),s=Ze(o),i=t.get(s);if(i!=null)return i;let a=sa(s,e);return t.set(s,a),a}function rN(r,e){return r==null?{}:{prefix:G3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(cf(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(cf(n.key,n.value,e),cf(o.key,o.value,e)))}}var lf=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=qa({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(ia(e))}async delete(e){if(this.peerId.equals(e))throw new g("Cannot delete self peer",Tt.ERR_INVALID_PARAMETERS);await this.datastore.delete(ia(e))}async load(e){let t=await this.datastore.get(ia(e));return sa(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await af(e,t,"patch",{addressFilter:this.addressFilter});return this.#t(e,s,n,o)}async patch(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await af(e,t,"patch",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async merge(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await af(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new it;for await(let{key:n,value:o}of this.datastore.query(rN(e??{},t))){let s=cf(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(ia(e)),n=sa(e,t);return{existingBuf:t,existingPeer:n}}catch(t){if(t.code!=="ERR_NOT_FOUND")throw t}return{}}async#t(e,t,n,o){let s=oa.encode(t);return n!=null&&Z(s,n)?{peer:sa(e,s),previous:o,updated:!1}:(await this.datastore.put(ia(e),s),{peer:sa(e,s),previous:o,updated:!0})}};var uf=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 lf(e,t)}async forEach(e,t){this.log.trace("forEach await read lock");let n=await this.store.lock.readLock();this.log.trace("forEach got read lock");try{for await(let o of this.store.all(t))e(o)}finally{this.log.trace("forEach release read lock"),n()}}async all(e){this.log.trace("all await read lock");let t=await this.store.lock.readLock();this.log.trace("all got read lock");try{return await tc(this.store.all(e))}finally{this.log.trace("all release read lock"),t()}}async delete(e){this.log.trace("delete await write lock");let t=await this.store.lock.writeLock();this.log.trace("delete got write lock");try{await this.store.delete(e)}finally{this.log.trace("delete release write lock"),t()}}async has(e){this.log.trace("has await read lock");let t=await this.store.lock.readLock();this.log.trace("has got read lock");try{return await this.store.has(e)}finally{this.log.trace("has release read lock"),t()}}async get(e){this.log.trace("get await read lock");let t=await this.store.lock.readLock();this.log.trace("get got read lock");try{return await this.store.load(e)}finally{this.log.trace("get release read lock"),t()}}async save(e,t){this.log.trace("save await write lock");let n=await this.store.lock.writeLock();this.log.trace("save got write lock");try{let o=await this.store.save(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("save release write lock"),n()}}async patch(e,t){this.log.trace("patch await write lock");let n=await this.store.lock.writeLock();this.log.trace("patch got write lock");try{let o=await this.store.patch(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("patch release write lock"),n()}}async merge(e,t){this.log.trace("merge await write lock");let n=await this.store.lock.writeLock();this.log.trace("merge got write lock");try{let o=await this.store.merge(e,t);return this.#e(e,o),o.peer}finally{this.log.trace("merge release write lock"),n()}}async consumePeerRecord(e,t){let n=await Zr.openAndCertify(e,dr.DOMAIN);if(t?.equals(n.peerId)===!1)return this.log("envelope peer id was not the expected peer id - expected: %p received: %p",t,n.peerId),!1;let o=dr.createFromProtobuf(n.payload),s;try{s=await this.get(n.peerId)}catch(i){if(i.code!=="ERR_NOT_FOUND")throw i}if(s?.peerRecordEnvelope!=null){let i=await Zr.createFromProtobuf(s.peerRecordEnvelope),a=dr.createFromProtobuf(i.payload);if(a.seqNumber>=o.seqNumber)return this.log("sequence number was lower or equal to existing sequence number - stored: %d received: %d",a.seqNumber,o.seqNumber),!1}return await this.patch(o.peerId,{peerRecordEnvelope:e,addresses:o.multiaddrs.map(i=>({isCertified:!0,multiaddr:i}))}),!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 ab(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var nN=r=>r;function W3(r,e){let t=r.getPeerId();return t!=null&&ye(t).equals(e)&&(r=r.decapsulate(j(`/p2p/${e.toString()}`))),r}var df=class{log;components;listen;announce;observed;announceFilter;constructor(e,t={}){let{listen:n=[],announce:o=[]}=t;this.components=e,this.log=e.logger.forComponent("libp2p:address-manager"),this.listen=n.map(s=>s.toString()),this.announce=new Set(o.map(s=>s.toString())),this.observed=new Map,this.announceFilter=t.announceFilter??nN,this._updatePeerStoreAddresses=ab(this._updatePeerStoreAddresses.bind(this),1e3),e.events.addEventListener("transport:listening",()=>{this._updatePeerStoreAddresses()}),e.events.addEventListener("transport:close",()=>{this._updatePeerStoreAddresses()})}_updatePeerStoreAddresses(){let e=this.getAnnounceAddrs().concat(this.components.transportManager.getAddrs()).concat([...this.observed.entries()].filter(([t,n])=>n.confident).map(([t])=>j(t))).map(t=>t.getPeerId()===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",t)})}getListenAddrs(){return Array.from(this.listen).map(e=>j(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>j(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>j(e))}addObservedAddr(e){e=W3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=W3(e,this.components.peerId);let t=e.toString(),o=(this.observed.get(t)??{confident:!1}).confident;this.observed.set(t,{confident:!0}),o||this._updatePeerStoreAddresses()}removeObservedAddr(e){e=W3(e,this.components.peerId);let t=e.toString();this.observed.delete(t)}getAddresses(){let e=this.getAnnounceAddrs().map(n=>n.toString());e.length===0&&(e=this.components.transportManager.getAddrs().map(n=>n.toString())),e=e.concat(Array.from(this.observed).filter(([n,o])=>o.confident).map(([n])=>n));let t=new Set(e);return this.announceFilter(Array.from(t).map(n=>j(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var z3=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=Ro())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>Lc(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")}},oN=["metrics","connectionProtector","dns"],sN=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function cb(r={}){let e=new z3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!sN.includes(o)){let i=e.components[o];if(i==null&&!oN.includes(o))throw new g(`${o} not set`,"ERR_SERVICE_MISSING");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 lb(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!Wt(`${t[0][1]}`):!1},denyInboundConnection:async()=>!1,denyOutboundConnection:async()=>!1,denyInboundEncryptedConnection:async()=>!1,denyOutboundEncryptedConnection:async()=>!1,denyInboundUpgradedConnection:async()=>!1,denyOutboundUpgradedConnection:async()=>!1,filterMultiaddrForPeer:async()=>!0,...r}}function Y3(r){try{let{address:e}=r.nodeAddress();return!!Wt(e)}catch{return!0}}function iN(r,e){let t=Y3(r.multiaddr),n=Y3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function aN(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function cN(r,e){let t=ws.exactMatch(r.multiaddr),n=ws.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function aa(r,e){let t=iN(r,e);if(t!==0)return t;let n=cN(r,e);return n!==0?n:aN(r,e)}var lN=32,{code:uN}=ee("dnsaddr"),Ps=async function(e,t={}){let n=t.maxRecursiveDepth??lN;if(n===0)throw new g("Max recursive depth reached","ERR_MAX_RECURSIVE_DEPTH_REACHED");let[,o]=e.stringTuples().find(([l])=>l===uN)??[],i=await(t?.dns??hu()).query(`_dnsaddr.${o}`,{signal:t?.signal,types:[nr.TXT]}),a=e.getPeerId(),c=[];for(let l of i.Answer){let d=l.data.split("=")[1];if(d==null||a!=null&&!d.includes(a))continue;let u=j(d);if(d.startsWith("/dnsaddr")){let h=await u.resolve({...t,maxRecursiveDepth:n-1});c.push(...h.map(f=>f.toString()))}else c.push(u.toString())}return c};var Jn;(function(r){r.NOT_STARTED_YET="The libp2p node is not started yet",r.ERR_PROTECTOR_REQUIRED="Private network is enforced, but no protector was provided",r.NOT_FOUND="Not found"})(Jn||(Jn={}));var z;(function(r){r.ERR_PROTECTOR_REQUIRED="ERR_PROTECTOR_REQUIRED",r.ERR_PEER_DIAL_INTERCEPTED="ERR_PEER_DIAL_INTERCEPTED",r.ERR_CONNECTION_INTERCEPTED="ERR_CONNECTION_INTERCEPTED",r.ERR_INVALID_PROTOCOLS_FOR_STREAM="ERR_INVALID_PROTOCOLS_FOR_STREAM",r.ERR_CONNECTION_ENDED="ERR_CONNECTION_ENDED",r.ERR_CONNECTION_FAILED="ERR_CONNECTION_FAILED",r.ERR_NODE_NOT_STARTED="ERR_NODE_NOT_STARTED",r.ERR_ALREADY_ABORTED="ERR_ALREADY_ABORTED",r.ERR_TOO_MANY_ADDRESSES="ERR_TOO_MANY_ADDRESSES",r.ERR_NO_VALID_ADDRESSES="ERR_NO_VALID_ADDRESSES",r.ERR_RELAYED_DIAL="ERR_RELAYED_DIAL",r.ERR_DIALED_SELF="ERR_DIALED_SELF",r.ERR_DISCOVERED_SELF="ERR_DISCOVERED_SELF",r.ERR_DUPLICATE_TRANSPORT="ERR_DUPLICATE_TRANSPORT",r.ERR_ENCRYPTION_FAILED="ERR_ENCRYPTION_FAILED",r.ERR_HOP_REQUEST_FAILED="ERR_HOP_REQUEST_FAILED",r.ERR_INVALID_KEY="ERR_INVALID_KEY",r.ERR_INVALID_MESSAGE="ERR_INVALID_MESSAGE",r.ERR_INVALID_PARAMETERS="ERR_INVALID_PARAMETERS",r.ERR_INVALID_PEER="ERR_INVALID_PEER",r.ERR_MUXER_UNAVAILABLE="ERR_MUXER_UNAVAILABLE",r.ERR_NOT_FOUND="ERR_NOT_FOUND",r.ERR_TRANSPORT_UNAVAILABLE="ERR_TRANSPORT_UNAVAILABLE",r.ERR_TRANSPORT_DIAL_FAILED="ERR_TRANSPORT_DIAL_FAILED",r.ERR_UNSUPPORTED_PROTOCOL="ERR_UNSUPPORTED_PROTOCOL",r.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED="ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED",r.ERR_INVALID_MULTIADDR="ERR_INVALID_MULTIADDR",r.ERR_SIGNATURE_NOT_VALID="ERR_SIGNATURE_NOT_VALID",r.ERR_FIND_SELF="ERR_FIND_SELF",r.ERR_NO_ROUTERS_AVAILABLE="ERR_NO_ROUTERS_AVAILABLE",r.ERR_CONNECTION_NOT_MULTIPLEXED="ERR_CONNECTION_NOT_MULTIPLEXED",r.ERR_NO_DIAL_TOKENS="ERR_NO_DIAL_TOKENS",r.ERR_INVALID_CMS="ERR_INVALID_CMS",r.ERR_MISSING_KEYS="ERR_MISSING_KEYS",r.ERR_NO_KEY="ERR_NO_KEY",r.ERR_INVALID_KEY_NAME="ERR_INVALID_KEY_NAME",r.ERR_INVALID_KEY_TYPE="ERR_INVALID_KEY_TYPE",r.ERR_KEY_ALREADY_EXISTS="ERR_KEY_ALREADY_EXISTS",r.ERR_INVALID_KEY_SIZE="ERR_INVALID_KEY_SIZE",r.ERR_KEY_NOT_FOUND="ERR_KEY_NOT_FOUND",r.ERR_OLD_KEY_NAME_INVALID="ERR_OLD_KEY_NAME_INVALID",r.ERR_NEW_KEY_NAME_INVALID="ERR_NEW_KEY_NAME_INVALID",r.ERR_PASSWORD_REQUIRED="ERR_PASSWORD_REQUIRED",r.ERR_PEM_REQUIRED="ERR_PEM_REQUIRED",r.ERR_CANNOT_READ_KEY="ERR_CANNOT_READ_KEY",r.ERR_MISSING_PRIVATE_KEY="ERR_MISSING_PRIVATE_KEY",r.ERR_MISSING_PUBLIC_KEY="ERR_MISSING_PUBLIC_KEY",r.ERR_INVALID_OLD_PASS_TYPE="ERR_INVALID_OLD_PASS_TYPE",r.ERR_INVALID_NEW_PASS_TYPE="ERR_INVALID_NEW_PASS_TYPE",r.ERR_INVALID_PASS_LENGTH="ERR_INVALID_PASS_LENGTH",r.ERR_NOT_IMPLEMENTED="ERR_NOT_IMPLEMENTED",r.ERR_WRONG_PING_ACK="ERR_WRONG_PING_ACK",r.ERR_INVALID_RECORD="ERR_INVALID_RECORD",r.ERR_ALREADY_SUCCEEDED="ERR_ALREADY_SUCCEEDED",r.ERR_NO_HANDLER_FOR_PROTOCOL="ERR_NO_HANDLER_FOR_PROTOCOL",r.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS",r.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS="ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS",r.ERR_CONNECTION_DENIED="ERR_CONNECTION_DENIED",r.ERR_TRANSFER_LIMIT_EXCEEDED="ERR_TRANSFER_LIMIT_EXCEEDED"})(z||(z={}));var dN={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Ps},addressSorter:aa},transportManager:{faultTolerance:eo.FATAL_ALL}};async function ub(r){let e=Gi(dN,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new g(Jn.ERR_PROTECTOR_REQUIRED,z.ERR_PROTECTOR_REQUIRED);if(!(await ht(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new g("Private key doesn't match peer id",z.ERR_INVALID_KEY);return e}function ff(r){if(Ms(r))return{peerId:r,multiaddrs:[]};Array.isArray(r)||(r=[r]);let e;if(r.length>0){let t=r[0].getPeerId();e=t==null?void 0:ye(t),r.forEach(n=>{if(!To(n))throw new g("Invalid Multiaddr",z.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}else{let s=ye(o);if(e==null||!e.equals(s))throw new g("Multiaddrs must all have the same peer id or have no peer id",z.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var hf="last-dial-failure";var pf=5,mf=100,gf=50,db=1e3*60*7;var Ls={minConnections:pf,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:db,autoDialDiscoveredPeersDebounce:10},yf=class{connectionManager;peerStore;queue;minConnections;autoDialPriority;autoDialIntervalMs;autoDialMaxQueueLength;autoDialPeerRetryThresholdMs;autoDialDiscoveredPeersDebounce;autoDialInterval;started;running;log;constructor(e,t){this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.minConnections=t.minConnections??Ls.minConnections,this.autoDialPriority=t.autoDialPriority??Ls.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ls.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ls.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ls.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ls.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new pr({concurrency:t.autoDialConcurrency??Ls.autoDialConcurrency,metricName:"libp2p_autodial_queue",metrics:e.metrics}),this.queue.addEventListener("error",o=>{this.log.error("error during auto-dial",o.detail)}),e.events.addEventListener("connection:close",()=>{this.autoDial().catch(o=>{this.log.error(o)})});let n;e.events.addEventListener("peer:discovery",()=>{clearTimeout(n),n=setTimeout(()=>{this.autoDial().catch(o=>{this.log.error(o)})},this.autoDialDiscoveredPeersDebounce)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})}stop(){this.queue.clear(),clearTimeout(this.autoDialInterval),this.started=!1,this.running=!1}async autoDial(){if(!this.started||this.running)return;let e=this.connectionManager.getConnectionsMap(),t=e.size;if(t>=this.minConnections){this.minConnections>0&&this.log.trace("have enough connections %d/%d",t,this.minConnections);return}if(this.queue.size>this.autoDialMaxQueueLength){this.log("not enough connections %d/%d but auto dial queue is full",t,this.minConnections),this.sheduleNextAutodial();return}this.running=!0,this.log("not enough connections %d/%d - will dial peers to increase the number of connections",t,this.minConnections);let n=new pt(this.connectionManager.getDialQueue().map(l=>l.peerId).filter(Boolean)),o=await this.peerStore.all({filters:[l=>l.addresses.length===0?(this.log.trace("not autodialing %p because they have no addresses",l.id),!1):e.has(l.id)?(this.log.trace("not autodialing %p because they are already connected",l.id),!1):n.has(l.id)?(this.log.trace("not autodialing %p because they are already being dialed",l.id),!1):this.queue.has(l.id)?(this.log.trace("not autodialing %p because they are already being autodialed",l.id),!1):!0]}),s=o.sort(()=>Math.random()>.5?1:-1),i=new it;for(let l of s)i.has(l.id)||i.set(l.id,[...l.tags.values()].reduce((d,u)=>d+u.value,0));let c=s.sort((l,d)=>{let u=i.get(l.id)??0,h=i.get(d.id)??0;return u>h?-1:u<h?1:0}).filter(l=>{let d=l.metadata.get(hf);if(d==null)return!0;let u=parseInt(O(d));return isNaN(u)?!0:Date.now()-u>this.autoDialPeerRetryThresholdMs});this.log("selected %d/%d peers to dial",c.length,o.length);for(let l of c)this.queue.add(async()=>{let d=this.connectionManager.getConnectionsMap().size;if(d>=this.minConnections){this.log("got enough connections now %d/%d",d,this.minConnections),this.queue.clear();return}this.log("connecting to a peerStore stored peer %p",l.id),await this.connectionManager.openConnection(l.id,{priority:this.autoDialPriority})},{peerId:l.id}).catch(d=>{this.log.error("could not connect to peerStore stored peer",d)});this.running=!1,this.sheduleNextAutodial()}sheduleNextAutodial(){this.started&&(this.autoDialInterval=setTimeout(()=>{this.autoDial().catch(e=>{this.log.error("error while autodialing",e)})},this.autoDialIntervalMs))}};var fb={maxConnections:mf,allow:[]},wf=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??fb.maxConnections,this.allow=t.allow??fb.allow,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.log=e.logger.forComponent("libp2p:connection-manager:connection-pruner"),e.events.addEventListener("connection:open",()=>{this.maybePruneConnections().catch(n=>{this.log.error(n)})})}async maybePruneConnections(){let e=this.connectionManager.getConnections(),t=e.length,n=Math.max(t-this.maxConnections,0);if(this.log("checking max connections limit %d/%d",t,this.maxConnections),t<=this.maxConnections)return;this.log("max connections limit exceeded %d/%d, pruning %d connection(s)",t,this.maxConnections,n);let o=new it;for(let a of e){let c=a.remotePeer;if(!o.has(c)){o.set(c,0);try{let l=await this.peerStore.get(c);o.set(c,[...l.tags.values()].reduce((d,u)=>d+u.value,0))}catch(l){l.code!=="ERR_NOT_FOUND"&&this.log.error("error loading peer tags",l)}}}let s=e.sort((a,c)=>{let l=o.get(a.remotePeer)??0,d=o.get(c.remotePeer)??0;if(l>d)return 1;if(l<d)return-1;let u=a.timeline.open,h=c.timeline.open;return u<h?1:u>h?-1:0}),i=[];for(let a of s)if(this.log("too many connections open - closing a connection to %p",a.remotePeer),this.allow.some(l=>a.remoteAddr.toString().startsWith(l.toString()))||i.push(a),i.length===n)break;await Promise.all(i.map(async a=>{try{await a.close()}catch(c){this.log.error(c)}})),this.events.safeDispatchEvent("connection:prune",{detail:i})}};async function hb(r,e){let t=!1;for(let o of Di.keys())if(t=r.protoNames().includes(o),t)break;if(!t)return[r];let n=await r.resolve(e);return e.log("resolved %s to",r,n.map(o=>o.toString())),n}var Dc={addressSorter:aa,maxParallelDials:gf,maxDialQueueLength:500,maxPeerAddrsToDial:25,dialTimeout:5e3,resolvers:{dnsaddr:Ps}},Ef=class{queue;components;addressSorter;maxPeerAddrsToDial;maxDialQueueLength;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??Dc.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??Dc.maxPeerAddrsToDial,this.maxDialQueueLength=t.maxDialQueueLength??Dc.maxDialQueueLength,this.dialTimeout=t.dialTimeout??Dc.dialTimeout,this.connections=t.connections??new it,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,G(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))Di.set(n,o);this.queue=new Nr({concurrency:t.maxParallelDials??Dc.maxParallelDials,metricName:"libp2p_dial_queue",metrics:e.metrics}),this.queue.addEventListener("error",n=>{this.log.error("error in dial queue",n.detail)})}start(){this.shutDownController=new AbortController,G(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=ff(e),s=Array.from(this.connections.values()).flat().find(a=>t.force===!0?!1:a.remotePeer.equals(n)?!0:o.find(c=>c.equals(a.remoteAddr)));if(s!=null)return this.log("already connected to %a",s.remoteAddr),s;let i=this.queue.queue.find(a=>{if(n?.equals(a.options.peerId)===!0)return!0;let c=a.options.multiaddrs;if(c==null)return!1;for(let l of o)if(c.has(l.toString()))return!0;return!1});if(i!=null){this.log("joining existing dial target for %p",n);for(let a of o)i.options.multiaddrs.add(a.toString());return i.join(t)}if(this.queue.size>=this.maxDialQueueLength)throw new g("Dial queue is full","ERR_DIAL_QUEUE_FULL");return this.log("creating dial target for %p",n,o.map(a=>a.toString())),this.queue.add(async a=>{let c=this.createDialAbortController(a?.signal),l;try{l=await this.calculateMultiaddrs(n,a?.multiaddrs,{...a,signal:c}),l.map(({multiaddr:d})=>d.toString()).forEach(d=>{a?.multiaddrs.add(d)})}catch(d){throw c.clear(),d}try{let d=0,u=[];for(let h of l){if(d===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",d,n),new g("Peer had more than maxPeerAddrsToDial",z.ERR_TOO_MANY_ADDRESSES);d++;try{let f=await this.components.transportManager.dial(h.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",h.multiaddr),f}catch(f){if(this.log.error("dial failed to %a",h.multiaddr,f),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[hf]:M(Date.now().toString())}})}catch(p){this.log.error("could not update last dial failure key for %p",n,p)}if(c.aborted)throw new g(f.message,bn);u.push(f)}}throw u.length===1?u[0]:new Pc(u,"All multiaddr dials failed",z.ERR_TRANSPORT_DIAL_FAILED)}finally{c.clear()}},{peerId:n,priority:t.priority,multiaddrs:new Set(o.map(a=>a.toString())),signal:t.signal})}createDialAbortController(e){let t=Pe([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return G(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:j(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new g("Tried to dial self",z.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new g("The dial request is blocked by gater.allowDialPeer",z.ERR_PEER_DIAL_INTERCEPTED);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:h})=>h.toString()))}catch(u){if(u.code!==z.ERR_NOT_FOUND)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);this.log("found multiaddrs for %p in the peer routing",e,o.map(({multiaddr:h})=>h.toString())),o.push(...u.multiaddrs.map(h=>({multiaddr:h,isCertified:!1})))}catch(u){u.code!==z.ERR_NO_ROUTERS_AVAILABLE&&this.log.error("looking up multiaddrs for %p in the peer routing failed",e,u)}}}let s=(await Promise.all(o.map(async u=>{let h=await hb(u.multiaddr,{dns:this.components.dns,...n,log:this.log});return h.length===1&&h[0].equals(u.multiaddr)?u:h.map(f=>({multiaddr:f,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(h=>h.multiaddr.protos().pop()?.path===!0?h:h.multiaddr.getPeerId()==null?{multiaddr:h.multiaddr.encapsulate(u),isCertified:h.isCertified}:h)}let i=s.filter(u=>{if(this.components.transportManager.dialTransportForMultiaddr(u.multiaddr)==null)return!1;let h=u.multiaddr.getPeerId();return e!=null&&h!=null?e.equals(h):!0}),a=new Map;for(let u of i){let h=u.multiaddr.toString(),f=a.get(h);if(f!=null){f.isCertified=f.isCertified||u.isCertified||!1;continue}a.set(h,u)}let c=[...a.values()];if(c.length===0)throw new g("The dial request has no valid addresses",z.ERR_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=l.sort(this.addressSorter);if(d.length===0)throw new g("The connection gater denied all addresses in the dial request",z.ERR_NO_VALID_ADDRESSES);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.runOnTransientConnection===!1?n.find(o=>!ws.matches(o.multiaddr))!=null:!0}catch(n){this.log.trace("error calculating if multiaddr(s) were dialable",n)}return!1}};var gN=50,Os={minConnections:pf,maxConnections:mf,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},bf=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Os.maxConnections;let n=t.minConnections??Os.minConnections;if(this.maxConnections<n)throw new g("Connection Manager maxConnections must be greater than minConnections",z.ERR_INVALID_PARAMETERS);this.connections=new it,this.started=!1,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.events.addEventListener("connection:open",this.onConnect),this.events.addEventListener("connection:close",this.onDisconnect),this.allow=(t.allow??[]).map(o=>j(o)),this.deny=(t.deny??[]).map(o=>j(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??Os.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Wi({points:t.inboundConnectionThreshold??Os.inboundConnectionThreshold,duration:1}),this.autoDial=new yf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Os.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Os.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Os.autoDialMaxQueueLength}),this.connectionPruner=new wf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new Ef(e,{addressSorter:t.addressSorter??aa,maxParallelDials:t.maxParallelDials??gf,maxDialQueueLength:t.maxDialQueueLength??500,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??5e3,resolvers:t.resolvers??{dnsaddr:Ps},connections:this.connections})}isStarted(){return this.started}async start(){this.metrics?.registerMetricGroup("libp2p_connection_manager_connections",{calculate:()=>{let e={inbound:0,outbound:0};for(let t of this.connections.values())for(let n of t)n.direction==="inbound"?e.inbound++:e.outbound++;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.dialQueue.start(),this.autoDial.start(),this.started=!0,this.log("started")}async afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(g4)]});await Promise.all(e.map(async t=>{await this.openConnection(t.id).catch(n=>{this.log.error(n)})}))}).catch(e=>{this.log.error(e)}),this.autoDial.afterStart()}async stop(){this.dialQueue.stop(),this.autoDial.stop();let e=[];for(let t of this.connections.values())for(let n of t)e.push((async()=>{try{await n.close()}catch(o){this.log.error(o)}})());this.log("closing %d connections",e.length),await Promise.all(e),this.connections.clear(),this.log("stopped")}onConnect(e){this._onConnect(e).catch(t=>{this.log.error(t)})}async _onConnect(e){let{detail:t}=e;if(!this.started){await t.close();return}let n=t.remotePeer,o=this.connections.get(n),s=!1;o!=null?o.push(t):(s=!0,this.connections.set(n,[t])),n.publicKey!=null&&n.type==="RSA"&&await this.peerStore.patch(n,{publicKey:n.publicKey}),s&&this.events.safeDispatchEvent("peer:connect",{detail:t.remotePeer})}onDisconnect(e){let{detail:t}=e;if(!this.started)return;let n=t.remotePeer,o=this.connections.get(n);o!=null&&o.length>1?(o=o.filter(s=>s.id!==t.id),this.connections.set(n,o)):o!=null&&(this.connections.delete(n),this.events.safeDispatchEvent("peer:disconnect",{detail:t.remotePeer}))}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.isStarted())throw new g("Not started",z.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=ff(e);if(n!=null&&t.force!==!0){this.log("dial %p",n);let a=this.getConnections(n).find(c=>!c.transient);if(a!=null)return this.log("had an existing non-transient connection to %p",n),a}let o=await this.dialQueue.dial(e,{...t,priority:t.priority??gN}),s=this.connections.get(o.remotePeer);s==null&&(s=[],this.connections.set(o.remotePeer,s));let i=!1;for(let a of s)a.id===o.id&&(i=!0);return i||s.push(o),o}async closeConnections(e,t={}){let n=this.connections.get(e)??[];await Promise.all(n.map(async o=>{try{await o.close(t)}catch(s){o.abort(s)}}))}async acceptIncomingConnection(e){if(this.deny.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.log("connection from %a refused - connection remote address was in deny list",e.remoteAddr),!1;if(this.allow.some(o=>e.remoteAddr.toString().startsWith(o.toString())))return this.incomingPendingConnections++,!0;if(this.incomingPendingConnections===this.maxIncomingPendingConnections)return this.log("connection from %a refused - incomingPendingConnections exceeded by host",e.remoteAddr),!1;if(e.remoteAddr.isThinWaistAddress()){let o=e.remoteAddr.nodeAddress().address;try{await this.inboundConnectionRateLimiter.consume(o,1)}catch{return this.log("connection from %a refused - inboundConnectionThreshold exceeded by host %s",e.remoteAddr,o),!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=>j(n))}))}async isDialable(e,t={}){return this.dialQueue.isDialable(e,t)}};var xf=class{routers;started;components;constructor(e,t){this.routers=t.routers??[],this.started=!1,this.components=e}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 g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new pt;for await(let s of Mt(...n.routers.map(i=>i.findProviders(e,t))))s!=null&&(s.multiaddrs.length>0&&await this.components.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}async provide(e,t={}){if(this.routers.length===0)throw new g("No content routers available",z.ERR_NO_ROUTERS_AVAILABLE);await Promise.all(this.routers.map(async n=>{await n.provide(e,t)}))}async put(e,t,n){if(!this.isStarted())throw new g(Jn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);await Promise.all(this.routers.map(async o=>{await o.put(e,t,n)}))}async get(e,t){if(!this.isStarted())throw new g(Jn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var vf=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??[]}async findPeer(e,t){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new g("Should not try to find self",z.ERR_FIND_SELF);let n=this,o=Mt(...this.routers.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.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),s;throw new g(Jn.NOT_FOUND,z.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new g("No peer routers available",z.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new pt;for await(let s of Xn(async function*(){let i=Mt(...n.routers.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",c);return}return a}}()))s!=null&&(s.multiaddrs.length>0&&await this.peerStore.merge(s.id,{multiaddrs:s.multiaddrs}),!o.has(s.id)&&(o.add(s.id),yield s))}};var Rf=class extends me{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,G(1/0,this.shutdownController.signal)}start(){this.shutdownController=new AbortController,G(1/0,this.shutdownController.signal)}stop(){this.shutdownController.abort()}async*walk(e){this.walking||this.startWalk(),this.walkers++;let t=Pe([this.shutdownController.signal,e?.signal]);G(1/0,t);try{for(;;)this.needNext?.resolve(),this.needNext=J(),yield(await jt(this,"walk:peer",t,{errorEvent:"walk:error"})).detail}finally{t.clear(),this.walkers--,this.walkers===0&&(this.walkController?.abort(),this.walkController=void 0)}}startWalk(){this.walking=!0,this.walkController=new AbortController,G(1/0,this.walkController.signal);let e=Pe([this.walkController.signal,this.shutdownController.signal]);G(1/0,e);let t=Date.now(),n=0;Promise.resolve().then(async()=>{for(this.log("start walk");this.walkers>0;)try{for await(let o of this.peerRouting.getClosestPeers(mt(32),{signal:e}))e.throwIfAborted(),this.log("found peer %p",o.id),n++,this.safeDispatchEvent("walk:peer",{detail:o}),this.walkers===1&&this.needNext!=null&&await Ue(this.needNext.promise,e)}catch(o){this.log.error("randomwalk errored",o),this.safeDispatchEvent("walk:error",{detail:o})}}).catch(o=>{this.log.error("randomwalk errored",o)}).finally(()=>{this.log("finished walk, found %d peers after %dms",n,Date.now()-t),this.walking=!1})}};var t4=32,r4=64,Sf=class{log;topologies;handlers;components;constructor(e){this.log=e.logger.forComponent("libp2p:registrar"),this.topologies=new Map,this.handlers=new Map,this.components=e,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)}getProtocols(){return Array.from(new Set([...this.handlers.keys()])).sort()}getHandler(e){let t=this.handlers.get(e);if(t==null)throw new g(`No handler registered for protocol ${e}`,z.ERR_NO_HANDLER_FOR_PROTOCOL);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))throw new g(`Handler already registered for protocol ${e}`,z.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=Gi.bind({ignoreUndefined:!0})({maxInboundStreams:t4,maxOutboundStreams:r4},n);this.handlers.set(e,{handler:t,options:o}),await this.components.peerStore.merge(this.components.peerId,{protocols:[e]})}async unhandle(e){(Array.isArray(e)?e:[e]).forEach(n=>{this.handlers.delete(n)}),await this.components.peerStore.patch(this.components.peerId,{protocols:this.getProtocols()})}async register(e,t){if(t==null)throw new g("invalid topology",z.ERR_INVALID_PARAMETERS);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))}_onDisconnect(e){let t=e.detail;this.components.peerStore.get(t).then(n=>{for(let o of n.protocols){let s=this.topologies.get(o);if(s!=null)for(let i of s.values())i.onDisconnect?.(t)}}).catch(n=>{n.code!==z.ERR_NOT_FOUND&&this.log.error("could not inform topologies of disconnecting peer %p",t,n)})}_onPeerUpdate(e){let{peer:t,previous:n}=e.detail,o=(n?.protocols??[]).filter(s=>!t.protocols.includes(s));for(let s of o){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())a.onDisconnect?.(t.id)}}_onPeerIdentify(e){let t=e.detail.protocols,n=e.detail.connection,o=e.detail.peerId;for(let s of t){let i=this.topologies.get(s);if(i!=null)for(let a of i.values())n.transient&&a.notifyOnTransient!==!0||a.onConnect?.(o,n)}}};var _f=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=new Map,this.listeners=Ku({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??eo.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new g("Transport must have a valid tag",z.ERR_INVALID_KEY);if(this.transports.has(t))throw new g(`There is already a transport with the tag ${t}`,z.ERR_DUPLICATE_TRANSPORT);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 g(`No transport available for address ${String(e)}`,z.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=z.ERR_TRANSPORT_DIAL_FAILED),o}}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 g("Not started",z.ERR_NODE_NOT_STARTED);if(e==null||e.length===0){this.log("no addresses were provided for listening, this node is dial only");return}let t=[];for(let[n,o]of this.transports.entries()){let s=o.listenFilter(e),i=[];for(let l of s){this.log("creating listener for %s on %a",n,l);let d=o.createListener({upgrader:this.components.upgrader}),u=this.listeners.get(n)??[];u==null&&(u=[],this.listeners.set(n,u)),u.push(d),d.addEventListener("listening",()=>{this.components.events.safeDispatchEvent("transport:listening",{detail:d})}),d.addEventListener("close",()=>{let h=u.findIndex(f=>f===d);u.splice(h,1),this.components.events.safeDispatchEvent("transport:close",{detail:d})}),i.push(d.listen(l))}if(i.length===0){t.push(n);continue}if((await Promise.allSettled(i)).find(l=>l.status==="fulfilled")==null&&this.faultTolerance!==eo.NO_FATAL)throw new g(`Transport (${n}) could not listen on any available address`,z.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===eo.FATAL_ALL)throw new g(n,z.ERR_NO_VALID_ADDRESSES);this.log(`libp2p in dial mode only: ${n}`)}}async remove(e){let t=this.listeners.get(e)??[];this.log.trace("removing transport %s",e);let n=[];for(this.log.trace("closing listeners for %s",e);t.length>0;){let o=t.pop();o!=null&&n.push(o.close())}await Promise.all(n),this.transports.delete(e),this.listeners.delete(e)}async removeAll(){let e=[];for(let t of this.transports.keys())e.push(this.remove(t));await Promise.all(e)}};var kt="/multistream/1.0.0";var yN=M(`
53
+ `);async function Bs(r,e,t){await r.write(e,t)}async function pb(r,e,t){await r.writeV(e,t)}async function wN(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==yN[0])throw e.log.error("Invalid mss message - missing newline",t),new g("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function $o(r,e){let t=await wN(r,e);return O(t.subarray())}async function Tc(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return EN(r,e[0],t);let n=pn(r,{...t,maxDataLength:1024}),o=e.shift();if(o==null)throw new Error("At least one protocol must be specified");t.log.trace('select: write ["%s", "%s"]',kt,o);let s=M(`${kt}
54
54
  `),i=M(`${o}
55
- `);await lb(n,[s,i],t),t.log.trace("select: reading multistream-select header");let a=await $o(n,t);if(t.log.trace('select: read "%s"',a),a===It&&(t.log.trace("select: reading protocol response"),a=await $o(n,t),t.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of e){t.log.trace('select: write "%s"',c),await Bs(n,M(`${c}
56
- `),t),t.log.trace("select: reading protocol response");let l=await $o(n,t);if(t.log.trace('select: read "%s" for "%s"',l,c),l===c)return{stream:n.unwrap(),protocol:c}}throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function pN(r,e,t){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=J(),c=!1,l=!1,d=J(),u=!1,h=!1,f=J(),p=fn({sink:n,source:o},{...t,maxDataLength:1024});r.sink=async b=>{let{sink:E}=p.unwrap();await E(async function*(){let x=!1;for await(let v of b){if(l&&await d.promise,c)yield v;else{l=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',It,e,v.byteLength);let I=`${e}
57
- `;yield new ce(Uint8Array.from([19]),M(`${It}
58
- `),Ke(I.length),M(I),v).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',It,e,v.byteLength),c=!0,l=!1,d.resolve(),m().catch(R=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,R)})}x=!0}x||await m()}())};async function m(){if(i){t.log.trace("optimistic: already negotiating %s stream",e),await a.promise;return}i=!0;try{c||(t.log.trace("optimistic: doing send protocol for %s stream",e),await y()),u||(t.log.trace("optimistic: doing read protocol for %s stream",e),await w())}finally{i=!1,s=!0,a.resolve()}}async function y(){if(l){await d.promise;return}l=!0;try{t.log.trace('optimistic: write ["%s", "%s", data] in source',It,e),await p.writeV([M(`${It}
55
+ `);await pb(n,[s,i],t),t.log.trace("select: reading multistream-select header");let a=await $o(n,t);if(t.log.trace('select: read "%s"',a),a===kt&&(t.log.trace("select: reading protocol response"),a=await $o(n,t),t.log.trace('select: read "%s"',a)),a===o)return{stream:n.unwrap(),protocol:o};for(let c of e){t.log.trace('select: write "%s"',c),await Bs(n,M(`${c}
56
+ `),t),t.log.trace("select: reading protocol response");let l=await $o(n,t);if(t.log.trace('select: read "%s" for "%s"',l,c),l===c)return{stream:n.unwrap(),protocol:c}}throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function EN(r,e,t){let n=r.sink.bind(r),o=r.source,s=!1,i=!1,a=J(),c=!1,l=!1,d=J(),u=!1,h=!1,f=J(),p=pn({sink:n,source:o},{...t,maxDataLength:1024});r.sink=async b=>{let{sink:E}=p.unwrap();await E(async function*(){let x=!1;for await(let v of b){if(l&&await d.promise,c)yield v;else{l=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',kt,e,v.byteLength);let I=`${e}
57
+ `;yield new ce(Uint8Array.from([19]),M(`${kt}
58
+ `),$e(I.length),M(I),v).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',kt,e,v.byteLength),c=!0,l=!1,d.resolve(),m().catch(S=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,S)})}x=!0}x||await m()}())};async function m(){if(i){t.log.trace("optimistic: already negotiating %s stream",e),await a.promise;return}i=!0;try{c||(t.log.trace("optimistic: doing send protocol for %s stream",e),await y()),u||(t.log.trace("optimistic: doing read protocol for %s stream",e),await w())}finally{i=!1,s=!0,a.resolve()}}async function y(){if(l){await d.promise;return}l=!0;try{t.log.trace('optimistic: write ["%s", "%s", data] in source',kt,e),await p.writeV([M(`${kt}
59
59
  `),M(`${e}
60
- `)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',It,e)}finally{c=!0,l=!1,d.resolve()}}async function w(){if(h){await f.promise;return}h=!0;try{t.log.trace("optimistic: reading multistream select header");let b=await $o(p,t);if(t.log.trace('optimistic: read multistream select header "%s"',b),b===It&&(b=await $o(p,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',b,e),b!==e)throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{u=!0,h=!1,f.resolve()}}if(r.source=async function*(){await m(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*p.unwrap().source}(),r.closeRead!=null){let b=r.closeRead.bind(r);r.closeRead=async E=>{s||await m().catch(x=>{t.log.error("could not negotiate protocol before close read",x)}),await b(E)}}if(r.closeWrite!=null){let b=r.closeWrite.bind(r);r.closeWrite=async E=>{s||await m().catch(x=>{t.log.error("could not negotiate protocol before close write",x)}),await b(E)}}if(r.close!=null){let b=r.close.bind(r);r.close=async E=>{let x=[];l&&x.push(d.promise),h&&x.push(f.promise),x.length>0?await Lt(Promise.all(x),E?.signal):(s=!0,i=!1,a.resolve()),await b(E)}}return{stream:r,protocol:e}}async function kc(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=fn(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let o=await $o(n,t);if(t.log.trace('handle: read "%s"',o),o===It){t.log.trace('handle: respond with "%s" for "%s"',It,o),await Bs(n,M(`${It}
61
- `),t),t.log.trace('handle: responded with "%s" for "%s"',It,o);continue}if(e.includes(o))return t.log.trace('handle: respond with "%s" for "%s"',o,o),await Bs(n,M(`${o}
62
- `),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new ce(...e.map(i=>Vt.single(M(`${i}
60
+ `)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',kt,e)}finally{c=!0,l=!1,d.resolve()}}async function w(){if(h){await f.promise;return}h=!0;try{t.log.trace("optimistic: reading multistream select header");let b=await $o(p,t);if(t.log.trace('optimistic: read multistream select header "%s"',b),b===kt&&(b=await $o(p,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',b,e),b!==e)throw new g("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{u=!0,h=!1,f.resolve()}}if(r.source=async function*(){await m(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*p.unwrap().source}(),r.closeRead!=null){let b=r.closeRead.bind(r);r.closeRead=async E=>{s||await m().catch(x=>{t.log.error("could not negotiate protocol before close read",x)}),await b(E)}}if(r.closeWrite!=null){let b=r.closeWrite.bind(r);r.closeWrite=async E=>{s||await m().catch(x=>{t.log.error("could not negotiate protocol before close write",x)}),await b(E)}}if(r.close!=null){let b=r.close.bind(r);r.close=async E=>{let x=[];l&&x.push(d.promise),h&&x.push(f.promise),x.length>0?await Ue(Promise.all(x),E?.signal):(s=!0,i=!1,a.resolve()),await b(E)}}return{stream:r,protocol:e}}async function kc(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=pn(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let o=await $o(n,t);if(t.log.trace('handle: read "%s"',o),o===kt){t.log.trace('handle: respond with "%s" for "%s"',kt,o),await Bs(n,M(`${kt}
61
+ `),t),t.log.trace('handle: responded with "%s" for "%s"',kt,o);continue}if(e.includes(o))return t.log.trace('handle: respond with "%s" for "%s"',o,o),await Bs(n,M(`${o}
62
+ `),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new ce(...e.map(i=>Kt.single(M(`${i}
63
63
  `))),M(`
64
64
  `));t.log.trace('handle: respond with "%s" for %s',e,o),await Bs(n,s,t),t.log.trace('handle: responded with "%s" for %s',e,o);continue}t.log('handle: respond with "na" for "%s"',o),await Bs(n,M(`na
65
- `),t),t.log('handle: responded with "na" for "%s"',o)}}var gN=500,e4=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[d4]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new g("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new g("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(gN);j(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function db(r){return new e4(r)}var yN=3e4;function wN(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==W.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return j3}function EN(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==W.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??Z3}function fb(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var Rf=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??2e3,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new g(`The multiaddr connection is blocked by gater.${n}`,W.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new g("connection denied",W.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),d=()=>{e.abort(new g("inbound upgrade timeout",yn))};l.addEventListener("abort",d,{once:!0}),j(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new g("The multiaddr connection is blocked by gater.acceptConnection",W.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let h=this.components.connectionProtector;h!=null&&(e.log("protecting the inbound connection"),u=await h.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let h={...u,...o};await this.shouldBlockConnection(s,h,"denyInboundEncryptedConnection")}else{let h=e.remoteAddr.getPeerId();if(h==null)throw new g("inbound connection that skipped encryption must have a peer id",W.ERR_INVALID_MULTIADDR);let f=ge(h);c="native",s=f}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let h=await this._multiplexInbound({...u,...o},this.muxers);a=h.muxerFactory,i=h.stream}}catch(h){throw e.log.error("failed to upgrade inbound connection",h),h}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",d),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=ge(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let d=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(d=await u.protect(e))}try{if(s=d,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(d,o));let u={...d,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new g("Encryption was skipped but no peer id was passed",W.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...d,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,d,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:p=>{u!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await kc(p,m,{log:p.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let b=wN(w,this.components.registrar);if(fb(w,"inbound",u)===b){let x=new g(`Too many inbound protocol streams for protocol "${w}" - limit ${b}`,W.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw p.abort(x),x}p.source=y.source,p.sink=y.sink,p.protocol=w,y.closeWrite!=null&&(p.closeWrite=y.closeWrite),y.closeRead!=null&&(p.closeRead=y.closeRead),y.close!=null&&(p.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(p,u),this._onStream({connection:u,stream:p,protocol:w})}).catch(async m=>{u.log.error("error handling incoming stream id %s",p.id,m.message,m.code,m.stack),p.timeline.close==null&&await p.close()})}}),d=async(p,m={})=>{if(l==null)throw new g("Stream is not multiplexed",W.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",p);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,p);try{if(m.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let v=AbortSignal.timeout(yN);j(1/0,v),m={...m,signal:v}}y.log.trace("selecting protocol from protocols %s",p);let{stream:w,protocol:b}=await Tc(y,p,{...m,log:y.log,yieldBytes:!0});y.log("selected protocol %s",b);let E=EN(b,this.components.registrar,m),x=fb(b,"outbound",u);if(x>=E){let v=new g(`Too many outbound protocol streams for protocol "${b}" - ${x}/${E}`,W.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(v),v}return await this.components.peerStore.merge(i,{protocols:[b]}),y.source=w.source,y.sink=w.sink,y.protocol=b,w.closeWrite!=null&&(y.closeWrite=w.closeWrite),w.closeRead!=null&&(y.closeRead=w.closeRead),w.close!=null&&(y.close=w.close),this.components.metrics?.trackProtocolStream(y,u),y}catch(w){throw u.log.error("could not create new stream for protocols %s",p,w),y.timeline.close==null&&y.abort(w),w.code!=null?w:new g(String(w),W.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(p=>{u.log.error("error piping data through muxer",p)}));let h=o.timeline;o.timeline=new Proxy(h,{set:(...p)=>(u!=null&&p[1]==="close"&&p[2]!=null&&h.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(m){u.log.error("error closing connection after timeline close",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(m=>{u.log.error("error thrown while dispatching connection:close event",m)}),Reflect.set(...p))}),o.timeline.upgraded=Date.now();let f=()=>{throw new g("connection is not multiplexed",W.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=db({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:d??f,getStreams:()=>l!=null?l.streams:[],close:async p=>{l!=null&&(u.log.trace("close muxer"),await l.close(p)),u.log.trace("close maconn"),await o.close(p),u.log.trace("closed maconn")},abort:p=>{o.abort(p),l?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await kc(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new g(n.message,W.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await Tc(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %s",t,i),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new g(o.message,W.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await Tc(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new g(String(o),W.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await kc(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new g(String(o),W.ERR_MUXER_UNAVAILABLE)}}};var t4=class extends ye{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new ye,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new wt(a.type,{detail:a.detail}));return c||l},j(1/0,t),this.peerId=e.peerId,this.logger=e.logger??oo(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=nb({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:ef,version:Jd},logger:this.logger,events:t,datastore:e.datastore??new bs,connectionGater:ob(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",new lf(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new Rf(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new Sf(this.components,e.transportManager)),this.configureComponent("connectionManager",new Ef(this.components,e.connectionManager)),this.configureComponent("registrar",new vf(this.components)),this.configureComponent("addressManager",new uf(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new xf(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new bf(this.components,{routers:i})),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[rn]!=null&&(this.log("registering service %s for content routing",a),i.push(l[rn])),l[nn]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[nn])),l[qo]!=null&&(this.log("registering service %s for peer discovery",a),l[qo].addEventListener?.("peer",d=>{this.#e(d)}))}}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")}catch(e){throw this.log.error("An error occurred starting libp2p",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 ht;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 g("no protocols were provided to open a stream",W.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new g("no protocols were provided to open a stream",W.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){Do(e)&&(e=ge(e.getPeerId()??"")),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 s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==W.ERR_NOT_FOUND)throw s}let n=ve([M("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return Xr(o),await this.peerStore.patch(e,{publicKey:o}),o}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){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(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(new Error(W.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function hb(r={}){let e=r.peerId??=await M1();if(e.privateKey==null)throw new g("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await _r(e.privateKey),new t4(await sb(r))}async function pb(r={}){let e=await hb(r);return r.start!==!1&&await e.start(),e}async function mb(r){let e=r.libp2p?.peerId,t=r.logger??oo(),n=new Pe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=Ad(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=tf(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await pb({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function bN(r={}){let e=r.datastore??new bs,t=r.blockstore??new Da,n;xN(r.libp2p)?n=r.libp2p:n=await mb({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e});let o=new E1({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[f2(),z0()],routers:[D2(n),A2()],metrics:n.metrics});return r.start!==!1&&await o.start(),o}function xN(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Nc(vN);})();
65
+ `),t),t.log('handle: responded with "na" for "%s"',o)}}var xN=500,o4=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;transient;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:o,close:s,abort:i,getStreams:a}=e;this.id=`${parseInt(String(Math.random()*1e9)).toString(36)}${Date.now()}`,this.remoteAddr=t,this.remotePeer=n,this.direction=e.direction,this.status="open",this.timeline=e.timeline,this.multiplexer=e.multiplexer,this.encryption=e.encryption,this.transient=e.transient??!1,this.log=e.logger.forComponent(`libp2p:connection:${this.direction}:${this.id}`),this.remoteAddr.getPeerId()==null&&(this.remoteAddr=this.remoteAddr.encapsulate(`/p2p/${this.remotePeer}`)),this._newStream=o,this._close=s,this._abort=i,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[m4]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new g("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new g("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");let n=await this._newStream(e,t);return n.direction="outbound",n}async close(e={}){if(!(this.status==="closed"||this.status==="closing")){if(this.log("closing connection to %a",this.remoteAddr),this.status="closing",e.signal==null){let t=AbortSignal.timeout(xN);G(1/0,t),e={...e,signal:t}}try{this.log.trace("closing all streams"),await Promise.all(this.streams.map(async t=>t.close(e))),this.log.trace("closing underlying transport"),await this._close(e),this.log.trace("updating timeline with close time"),this.status="closed",this.timeline.close=Date.now()}catch(t){this.log.error("error encountered during graceful close of connection to %a",this.remoteAddr,t),this.abort(t)}}}abort(e){this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this.streams.forEach(t=>{t.abort(e)}),this.log.error("all streams aborted",this.streams.length),this._abort(e),this.timeline.close=Date.now(),this.status="closed"}};function gb(r){return new o4(r)}var vN=3e4;function RN(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return t4}function SN(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==z.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??r4}function yb(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var Af=class{components;connectionEncryption;muxers;inboundUpgradeTimeout;events;constructor(e,t){this.components=e,this.connectionEncryption=new Map,t.connectionEncryption.forEach(n=>{this.connectionEncryption.set(n.protocol,n)}),this.muxers=new Map,t.muxers.forEach(n=>{this.muxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??2e3,this.events=e.events}async shouldBlockConnection(e,t,n){let o=this.components.connectionGater[n];if(o!==void 0&&await o(e,t))throw new g(`The multiaddr connection is blocked by gater.${n}`,z.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new g("connection denied",z.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),d=()=>{e.abort(new g("inbound upgrade timeout",bn))};l.addEventListener("abort",d,{once:!0}),G(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new g("The multiaddr connection is blocked by gater.acceptConnection",z.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let h=this.components.connectionProtector;h!=null&&(e.log("protecting the inbound connection"),u=await h.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let h={...u,...o};await this.shouldBlockConnection(s,h,"denyInboundEncryptedConnection")}else{let h=e.remoteAddr.getPeerId();if(h==null)throw new g("inbound connection that skipped encryption must have a peer id",z.ERR_INVALID_MULTIADDR);let f=ye(h);c="native",s=f}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let h=await this._multiplexInbound({...u,...o},this.muxers);a=h.muxerFactory,i=h.stream}}catch(h){throw e.log.error("failed to upgrade inbound connection",h),h}return await this.shouldBlockConnection(s,e,"denyInboundUpgradedConnection"),e.log("successfully upgraded inbound connection"),this._createConnection({cryptoProtocol:c,direction:"inbound",maConn:e,upgradedConn:i,muxerFactory:a,remotePeer:s,transient:t?.transient})}finally{l.removeEventListener("abort",d),this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){let n=e.remoteAddr.getPeerId(),o;n!=null&&(o=ye(n),await this.shouldBlockConnection(o,e,"denyOutboundConnection"));let s,i,a,c,l;this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the outbound connection upgrade");let d=e;if(t?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(d=await u.protect(e))}try{if(s=d,t?.skipEncryption!==!0){({conn:s,remotePeer:i,protocol:c}=await this._encryptOutbound(d,o));let u={...d,...s};await this.shouldBlockConnection(i,u,"denyOutboundEncryptedConnection")}else{if(o==null)throw new g("Encryption was skipped but no peer id was passed",z.ERR_INVALID_PEER);c="native",i=o}if(a=s,t?.muxerFactory!=null)l=t.muxerFactory;else if(this.muxers.size>0){let u=await this._multiplexOutbound({...d,...s},this.muxers);l=u.muxerFactory,a=u.stream}}catch(u){throw e.log.error("failed to upgrade outbound connection",u),await e.close(u),u}return await this.shouldBlockConnection(i,e,"denyOutboundUpgradedConnection"),e.log("successfully upgraded outbound connection"),this._createConnection({cryptoProtocol:c,direction:"outbound",maConn:e,upgradedConn:a,muxerFactory:l,remotePeer:i,transient:t?.transient})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:o,upgradedConn:s,remotePeer:i,muxerFactory:a,transient:c}=e,l,d,u;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:p=>{u!=null&&Promise.resolve().then(async()=>{let m=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await kc(p,m,{log:p.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let b=RN(w,this.components.registrar);if(yb(w,"inbound",u)===b){let x=new g(`Too many inbound protocol streams for protocol "${w}" - limit ${b}`,z.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw p.abort(x),x}p.source=y.source,p.sink=y.sink,p.protocol=w,y.closeWrite!=null&&(p.closeWrite=y.closeWrite),y.closeRead!=null&&(p.closeRead=y.closeRead),y.close!=null&&(p.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(p,u),this._onStream({connection:u,stream:p,protocol:w})}).catch(async m=>{u.log.error("error handling incoming stream id %s",p.id,m.message,m.code,m.stack),p.timeline.close==null&&await p.close()})}}),d=async(p,m={})=>{if(l==null)throw new g("Stream is not multiplexed",z.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",p);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,p);try{if(m.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",p);let v=AbortSignal.timeout(vN);G(1/0,v),m={...m,signal:v}}y.log.trace("selecting protocol from protocols %s",p);let{stream:w,protocol:b}=await Tc(y,p,{...m,log:y.log,yieldBytes:!0});y.log("selected protocol %s",b);let E=SN(b,this.components.registrar,m),x=yb(b,"outbound",u);if(x>=E){let v=new g(`Too many outbound protocol streams for protocol "${b}" - ${x}/${E}`,z.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(v),v}return await this.components.peerStore.merge(i,{protocols:[b]}),y.source=w.source,y.sink=w.sink,y.protocol=b,w.closeWrite!=null&&(y.closeWrite=w.closeWrite),w.closeRead!=null&&(y.closeRead=w.closeRead),w.close!=null&&(y.close=w.close),this.components.metrics?.trackProtocolStream(y,u),y}catch(w){throw u.log.error("could not create new stream for protocols %s",p,w),y.timeline.close==null&&y.abort(w),w.code!=null?w:new g(String(w),z.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(p=>{u.log.error("error piping data through muxer",p)}));let h=o.timeline;o.timeline=new Proxy(h,{set:(...p)=>(u!=null&&p[1]==="close"&&p[2]!=null&&h.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(m){u.log.error("error closing connection after timeline close",m)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(m=>{u.log.error("error thrown while dispatching connection:close event",m)}),Reflect.set(...p))}),o.timeline.upgraded=Date.now();let f=()=>{throw new g("connection is not multiplexed",z.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=gb({remoteAddr:o.remoteAddr,remotePeer:i,status:"open",direction:n,timeline:o.timeline,multiplexer:l?.protocol,encryption:t,transient:c,logger:this.components.logger,newStream:d??f,getStreams:()=>l!=null?l.streams:[],close:async p=>{l!=null&&(u.log.trace("close muxer"),await l.close(p)),u.log.trace("close maconn"),await o.close(p),u.log.trace("closed maconn")},abort:p=>{o.abort(p),l?.abort(p)}}),this.events.safeDispatchEvent("connection:open",{detail:u}),u}_onStream(e){let{connection:t,stream:n,protocol:o}=e,{handler:s,options:i}=this.components.registrar.getHandler(o);if(t.transient&&i.runOnTransientConnection!==!0)throw new g("Cannot open protocol stream on transient connection","ERR_TRANSIENT_CONNECTION");s({connection:t,stream:n})}async _encryptInbound(e){let t=Array.from(this.connectionEncryption.keys());e.log("handling inbound crypto protocol selection",t);try{let{stream:n,protocol:o}=await kc(e,t,{log:e.log}),s=this.connectionEncryption.get(o);if(s==null)throw new Error(`no crypto module found for ${o}`);return e.log("encrypting inbound connection using",o),{...await s.secureInbound(this.components.peerId,n),protocol:o}}catch(n){throw e.log.error("encrypting inbound connection to %p failed",n),new g(n.message,z.ERR_ENCRYPTION_FAILED)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncryption.keys());e.log("selecting outbound crypto protocol",n);try{e.log.trace("selecting encrypter from %s",n);let{stream:o,protocol:s}=await Tc(e,n,{log:e.log,yieldBytes:!0}),i=this.connectionEncryption.get(s);if(i==null)throw new Error(`no crypto module found for ${s}`);return e.log("encrypting outbound connection to %p using %s",t,i),{...await i.secureOutbound(this.components.peerId,o,t),protocol:s}}catch(o){throw e.log.error("encrypting outbound connection to %p failed",o),new g(o.message,z.ERR_ENCRYPTION_FAILED)}}async _multiplexOutbound(e,t){let n=Array.from(t.keys());e.log("outbound selecting muxer %s",n);try{e.log.trace("selecting stream muxer from %s",n);let{stream:o,protocol:s}=await Tc(e,n,{log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}async _multiplexInbound(e,t){let n=Array.from(t.keys());e.log("inbound handling muxers %s",n);try{let{stream:o,protocol:s}=await kc(e,n,{log:e.log}),i=t.get(s);return{stream:o,muxerFactory:i}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new g(String(o),z.ERR_MUXER_UNAVAILABLE)}}};var s4=class extends me{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new me,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new bt(a.type,{detail:a.detail}));return c||l},G(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Ro(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=cb({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:tf,version:ef},logger:this.logger,events:t,datastore:e.datastore??new bs,connectionGater:lb(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",new uf(o,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),o.events.addEventListener("peer:update",a=>{if(a.detail.previous==null){let c={id:a.detail.peer.id,multiaddrs:a.detail.peer.addresses.map(l=>l.multiaddr)};o.events.safeDispatchEvent("peer:discovery",{detail:c})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(o)),this.components.upgrader=new Af(this.components,{connectionEncryption:(e.connectionEncryption??[]).map((a,c)=>this.configureComponent(`connection-encryption-${c}`,a(this.components))),muxers:(e.streamMuxers??[]).map((a,c)=>this.configureComponent(`stream-muxers-${c}`,a(this.components))),inboundUpgradeTimeout:e.connectionManager.inboundUpgradeTimeout}),this.configureComponent("transportManager",new _f(this.components,e.transportManager)),this.configureComponent("connectionManager",new bf(this.components,e.connectionManager)),this.configureComponent("registrar",new Sf(this.components)),this.configureComponent("addressManager",new df(this.components,e.addresses));let s=(e.peerRouters??[]).map((a,c)=>this.configureComponent(`peer-router-${c}`,a(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new vf(this.components,{routers:s}));let i=(e.contentRouters??[]).map((a,c)=>this.configureComponent(`content-router-${c}`,a(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new xf(this.components,{routers:i})),this.configureComponent("randomWalk",new Rf(this.components)),(e.peerDiscovery??[]).forEach((a,c)=>{this.configureComponent(`peer-discovery-${c}`,a(this.components)).addEventListener("peer",d=>{this.#e(d)})}),e.transports?.forEach((a,c)=>{this.components.transportManager.add(this.configureComponent(`transport-${c}`,a(this.components)))}),e.services!=null)for(let a of Object.keys(e.services)){let c=e.services[a],l=c(this.components);if(l==null){this.log.error("service factory %s returned null or undefined instance",a);continue}this.services[a]=l,this.configureComponent(a,l),l[rn]!=null&&(this.log("registering service %s for content routing",a),i.push(l[rn])),l[nn]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[nn])),l[qo]!=null&&(this.log("registering service %s for peer discovery",a),l[qo].addEventListener?.("peer",d=>{this.#e(d)}))}}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")}catch(e){throw this.log.error("An error occurred starting libp2p",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 pt;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 g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new g("no protocols were provided to open a stream",z.ERR_INVALID_PROTOCOLS_FOR_STREAM);return(await this.dial(e,n)).newStream(t,n)}getMultiaddrs(){return this.components.addressManager.getAddresses()}getProtocols(){return this.components.registrar.getProtocols()}async hangUp(e,t={}){To(e)&&(e=ye(e.getPeerId()??"")),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 s=await this.peerStore.get(e);if(s.id.publicKey!=null)return s.id.publicKey}catch(s){if(s.code!==z.ERR_NOT_FOUND)throw s}let n=ve([M("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return Gr(o),await this.peerStore.patch(e,{publicKey:o}),o}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){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(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(new Error(z.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function wb(r={}){let e=r.peerId??=await M1();if(e.privateKey==null)throw new g("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await Sr(e.privateKey),new s4(await ub(r))}async function Eb(r={}){let e=await wb(r);return r.start!==!1&&await e.start(),e}async function bb(r){let e=r.libp2p?.peerId,t=r.logger??Ro(),n=new Le("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=Ad(r.keychain)({datastore:r.datastore,logger:t}),await r.datastore.has(n)&&(r.libp2p=r.libp2p??{},r.libp2p.peerId=await o.exportPeerId("self")));let s=rf(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await Eb({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function _N(r={}){let e=r.datastore??new bs,t=r.blockstore??new Wa,n;AN(r.libp2p)?n=r.libp2p:n=await bb({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e});let o=new E1({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[p2(),X0()],routers:[k2(n),D2()],metrics:n.metrics});return r.start!==!1&&await o.start(),o}function AN(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Nc(IN);})();
66
66
  /*! Bundled license information:
67
67
 
68
68
  pvtsutils/build/index.js:
@@ -164,7 +164,7 @@ asn1js/build/index.es.js:
164
164
  @noble/ciphers/esm/utils.js:
165
165
  (*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) *)
166
166
 
167
- @libp2p/webtransport/dist/src/index.js:
167
+ @libp2p/webtransport/dist/src/muxer.js:
168
168
  (*! TODO unclear how to add backpressure here? *)
169
169
  */
170
170
  return Helia}));