helia 4.0.2 → 4.1.0-329652a
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 +20 -20
- package/dist/src/index.d.ts +5 -54
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/utils/libp2p-defaults.browser.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.browser.js +1 -0
- package/dist/src/utils/libp2p-defaults.browser.js.map +1 -1
- package/dist/src/utils/libp2p-defaults.d.ts.map +1 -1
- package/dist/src/utils/libp2p-defaults.js +1 -0
- package/dist/src/utils/libp2p-defaults.js.map +1 -1
- package/dist/src/utils/libp2p.d.ts +2 -0
- package/dist/src/utils/libp2p.d.ts.map +1 -1
- package/dist/src/utils/libp2p.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +7 -62
- package/src/utils/libp2p-defaults.browser.ts +1 -0
- package/src/utils/libp2p-defaults.ts +1 -0
- package/src/utils/libp2p.ts +2 -0
- package/src/version.ts +1 -1
- package/dist/typedoc-urls.json +0 -12
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 rx=Object.create;var Ac=Object.defineProperty;var nx=Object.getOwnPropertyDescriptor;var ox=Object.getOwnPropertyNames;var sx=Object.getPrototypeOf,ix=Object.prototype.hasOwnProperty;var Ie=(r,e)=>()=>(r&&(e=r(r=0)),e);var ae=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),me=(r,e)=>{for(var t in e)Ac(r,t,{get:e[t],enumerable:!0})},Q3=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ox(e))!ix.call(r,o)&&o!==t&&Ac(r,o,{get:()=>e[o],enumerable:!(n=nx(e,o))||n.enumerable});return r};var ke=(r,e,t)=>(t=r!=null?rx(sx(r)):{},Q3(e||!r||!r.__esModule?Ac(t,"default",{value:r,enumerable:!0}):t,r)),Ic=r=>Q3(Ac({},"__esModule",{value:!0}),r);var b4=ae((ZO,w4)=>{w4.exports=y4;var g4=128,zx=127,Gx=~zx,Yx=Math.pow(2,31);function y4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Yx;)e[t++]=r&255|g4,r/=128;for(;r&Gx;)e[t++]=r&255|g4,r>>>=7;return e[t]=r|0,y4.bytes=t-n+1,e}});var v4=ae((JO,x4)=>{x4.exports=Df;var Xx=128,E4=127;function Df(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Df.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&E4)<<o:(i&E4)*Math.pow(2,o),o+=7}while(i>=Xx);return Df.bytes=s-n,t}});var S4=ae((eP,_4)=>{var Qx=Math.pow(2,7),jx=Math.pow(2,14),Zx=Math.pow(2,21),Jx=Math.pow(2,28),ev=Math.pow(2,35),tv=Math.pow(2,42),rv=Math.pow(2,49),nv=Math.pow(2,56),ov=Math.pow(2,63);_4.exports=function(r){return r<Qx?1:r<jx?2:r<Zx?3:r<Jx?4:r<ev?5:r<tv?6:r<rv?7:r<nv?8:r<ov?9:10}});var A4=ae((tP,R4)=>{R4.exports={encode:b4(),decode:v4(),encodingLength:S4()}});var T4=ae((rP,D4)=>{"use strict";var I4=A4();D4.exports=r=>{if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=I4.decode(r);e.push(t),r=r.slice(I4.decode.bytes)}return e}});var Tf=ae((nP,k4)=>{var $s=1e3,Hs=$s*60,qs=Hs*60,Yo=qs*24,sv=Yo*7,iv=Yo*365.25;k4.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return av(r);if(t==="number"&&isFinite(r))return e.long?lv(r):cv(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function av(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*iv;case"weeks":case"week":case"w":return t*sv;case"days":case"day":case"d":return t*Yo;case"hours":case"hour":case"hrs":case"hr":case"h":return t*qs;case"minutes":case"minute":case"mins":case"min":case"m":return t*Hs;case"seconds":case"second":case"secs":case"sec":case"s":return t*$s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function cv(r){var e=Math.abs(r);return e>=Yo?Math.round(r/Yo)+"d":e>=qs?Math.round(r/qs)+"h":e>=Hs?Math.round(r/Hs)+"m":e>=$s?Math.round(r/$s)+"s":r+"ms"}function lv(r){var e=Math.abs(r);return e>=Yo?Cc(r,e,Yo,"day"):e>=qs?Cc(r,e,qs,"hour"):e>=Hs?Cc(r,e,Hs,"minute"):e>=$s?Cc(r,e,$s,"second"):r+" ms"}function Cc(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var N4=ae((oP,C4)=>{function uv(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=Tf(),t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,f=null,m,h;function p(...y){if(!p.enabled)return;let w=p,E=Number(new Date),b=E-(u||E);w.diff=b,w.prev=u,w.curr=E,u=E,y[0]=t.coerce(y[0]),typeof y[0]!="string"&&y.unshift("%O");let S=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(A,D)=>{if(A==="%%")return"%";S++;let _=t.formatters[D];if(typeof _=="function"){let k=y[S];A=_.call(w,k),y.splice(S,1),S--}return A}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}return p.namespace=d,p.useColors=t.useColors(),p.color=t.selectColor(d),p.extend=n,p.destroy=t.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(m!==t.namespaces&&(m=t.namespaces,h=t.enabled(d)),h),set:y=>{f=y}}),typeof t.init=="function"&&t.init(p),p}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),m=f.length;for(u=0;u<m;u++)f[u]&&(d=f[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,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack||d.message:d}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}C4.exports=uv});var kf=ae((zt,Nc)=>{zt.formatArgs=fv;zt.save=hv;zt.load=pv;zt.useColors=dv;zt.storage=mv();zt.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`."))}})();zt.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 fv(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Nc.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)}zt.log=console.debug||console.log||(()=>{});function hv(r){try{r?zt.storage.setItem("debug",r):zt.storage.removeItem("debug")}catch{}}function pv(){let r;try{r=zt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function mv(){try{return localStorage}catch{}}Nc.exports=N4()(zt);var{formatters:gv}=Nc.exports;gv.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var L4=ae((EP,P4)=>{P4.exports=Of;var O4=128,Ev=127,xv=~Ev,vv=Math.pow(2,31);function Of(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw Of.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=vv;)e[t++]=r&255|O4,r/=128;for(;r&xv;)e[t++]=r&255|O4,r>>>=7;return e[t]=r|0,Of.bytes=t-n+1,e}});var U4=ae((xP,M4)=>{M4.exports=Pf;var _v=128,B4=127;function Pf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a||o>49)throw Pf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&B4)<<o:(i&B4)*Math.pow(2,o),o+=7}while(i>=_v);return Pf.bytes=s-n,t}});var V4=ae((vP,F4)=>{var Sv=Math.pow(2,7),Rv=Math.pow(2,14),Av=Math.pow(2,21),Iv=Math.pow(2,28),Dv=Math.pow(2,35),Tv=Math.pow(2,42),kv=Math.pow(2,49),Cv=Math.pow(2,56),Nv=Math.pow(2,63);F4.exports=function(r){return r<Sv?1:r<Rv?2:r<Av?3:r<Iv?4:r<Dv?5:r<Tv?6:r<kv?7:r<Cv?8:r<Nv?9:10}});var $4=ae((_P,K4)=>{K4.exports={encode:L4(),decode:U4(),encodingLength:V4()}});var Zo=ae((AB,f8)=>{"use strict";function d8(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function p_(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 d8(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),d8(new o,t)}}f8.exports=p_});var g8=ae((zB,m8)=>{"use strict";m8.exports=function(){return Date.now()}});var w8=ae((GB,y8)=>{"use strict";var Yc=g8(),fh=class{constructor(e,t,n){let o=this;this._started=Yc(),this._rescheduled=0,this._scheduled=t,this._args=n,this._triggered=!1,this._timerWrapper=()=>{o._rescheduled>0?(o._scheduled=o._rescheduled-(Yc()-o._started),o._schedule(o._scheduled)):(o._triggered=!0,e.apply(null,o._args))},this._timer=setTimeout(this._timerWrapper,t)}reschedule(e){e||(e=this._scheduled);let t=Yc();t+e-(this._started+this._scheduled)<0?(clearTimeout(this._timer),this._schedule(e)):this._triggered?this._schedule(e):(this._started=t,this._rescheduled=e)}_schedule(e){this._triggered=!1,this._started=Yc(),this._rescheduled=0,this._scheduled=e,this._timer=setTimeout(this._timerWrapper,e)}clear(){clearTimeout(this._timer)}};function A_(){if(typeof arguments[0]!="function")throw new Error("callback needed");if(typeof arguments[1]!="number")throw new Error("timeout needed");let r;if(arguments.length>0){r=new Array(arguments.length-2);for(var e=0;e<r.length;e++)r[e]=arguments[e+2]}return new fh(arguments[0],arguments[1],r)}y8.exports=A_});var x8=ae((YB,E8)=>{"use strict";var{AbortController:I_}=globalThis,b8=w8(),hh=class r extends I_{constructor(e){super(),this._ms=e,this._timer=b8(()=>this.abort(),e),Object.setPrototypeOf(this,r.prototype)}abort(){return this._timer.clear(),super.abort()}clear(){this._timer.clear()}reset(){this._timer.clear(),this._timer=b8(()=>this.abort(),this._ms)}};E8.exports={TimeoutController:hh}});var Zc=ae((sM,yh)=>{"use strict";var Ys=typeof Reflect=="object"?Reflect:null,I8=Ys&&typeof Ys.apply=="function"?Ys.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},Qc;Ys&&typeof Ys.ownKeys=="function"?Qc=Ys.ownKeys:Object.getOwnPropertySymbols?Qc=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Qc=function(e){return Object.getOwnPropertyNames(e)};function C_(r){console&&console.warn&&console.warn(r)}var T8=Number.isNaN||function(e){return e!==e};function Ne(){Ne.init.call(this)}yh.exports=Ne;yh.exports.once=L_;Ne.EventEmitter=Ne;Ne.prototype._events=void 0;Ne.prototype._eventsCount=0;Ne.prototype._maxListeners=void 0;var D8=10;function jc(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(Ne,"defaultMaxListeners",{enumerable:!0,get:function(){return D8},set:function(r){if(typeof r!="number"||r<0||T8(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");D8=r}});Ne.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Ne.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||T8(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function k8(r){return r._maxListeners===void 0?Ne.defaultMaxListeners:r._maxListeners}Ne.prototype.getMaxListeners=function(){return k8(this)};Ne.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var o=e==="error",s=this._events;if(s!==void 0)o=o&&s.error===void 0;else if(!o)return!1;if(o){var i;if(t.length>0&&(i=t[0]),i instanceof Error)throw i;var a=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw a.context=i,a}var c=s[e];if(c===void 0)return!1;if(typeof c=="function")I8(c,this,t);else for(var l=c.length,d=L8(c,l),n=0;n<l;++n)I8(d[n],this,t);return!0};function C8(r,e,t,n){var o,s,i;if(jc(t),s=r._events,s===void 0?(s=r._events=Object.create(null),r._eventsCount=0):(s.newListener!==void 0&&(r.emit("newListener",e,t.listener?t.listener:t),s=r._events),i=s[e]),i===void 0)i=s[e]=t,++r._eventsCount;else if(typeof i=="function"?i=s[e]=n?[t,i]:[i,t]:n?i.unshift(t):i.push(t),o=k8(r),o>0&&i.length>o&&!i.warned){i.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=i.length,C_(a)}return r}Ne.prototype.addListener=function(e,t){return C8(this,e,t,!1)};Ne.prototype.on=Ne.prototype.addListener;Ne.prototype.prependListener=function(e,t){return C8(this,e,t,!0)};function N_(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function N8(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=N_.bind(n);return o.listener=t,n.wrapFn=o,o}Ne.prototype.once=function(e,t){return jc(t),this.on(e,N8(this,e,t)),this};Ne.prototype.prependOnceListener=function(e,t){return jc(t),this.prependListener(e,N8(this,e,t)),this};Ne.prototype.removeListener=function(e,t){var n,o,s,i,a;if(jc(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():O_(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};Ne.prototype.off=Ne.prototype.removeListener;Ne.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o<s.length;++o)i=s[o],i!=="removeListener"&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(t=n[e],typeof t=="function")this.removeListener(e,t);else if(t!==void 0)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this};function O8(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?P_(o):L8(o,o.length)}Ne.prototype.listeners=function(e){return O8(this,e,!0)};Ne.prototype.rawListeners=function(e){return O8(this,e,!1)};Ne.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):P8.call(r,e)};Ne.prototype.listenerCount=P8;function P8(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}Ne.prototype.eventNames=function(){return this._eventsCount>0?Qc(this._events):[]};function L8(r,e){for(var t=new Array(e),n=0;n<e;++n)t[n]=r[n];return t}function O_(r,e){for(;e+1<r.length;e++)r[e]=r[e+1];r.pop()}function P_(r){for(var e=new Array(r.length),t=0;t<e.length;++t)e[t]=r[t].listener||r[t];return e}function L_(r,e){return new Promise(function(t,n){function o(i){r.removeListener(e,s),n(i)}function s(){typeof r.removeListener=="function"&&r.removeListener("error",o),t([].slice.call(arguments))}B8(r,e,s,{once:!0}),e!=="error"&&B_(r,o,{once:!0})})}function B_(r,e,t){typeof r.on=="function"&&B8(r,"error",e,t)}function B8(r,e,t,n){if(typeof r.on=="function")n.once?r.once(e,t):r.on(e,t);else if(typeof r.addEventListener=="function")r.addEventListener(e,function o(s){n.once&&r.removeEventListener(e,o),t(s)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof r)}});var $8=ae((V8,K8)=>{"use strict";var M_=Math.exp;V8=K8.exports=function(e){if(typeof e!="number")throw new Error("must provide a timespan to the moving average constructor");if(e<=0)throw new Error("must provide a timespan > 0 to the moving average constructor");let t,n=0,o=0,s=0,i,a={};function c(l,d){return 1-M_(-(l-d)/e)}return a.push=function(d,u){if(i){let f=c(d,i),m=u-t,h=f*m;t=f*u+(1-f)*t,n=(1-f)*(n+m*h),o=Math.sqrt(n),s=t+f*m}else t=u;i=d},a.movingAverage=function(){return t},a.variance=function(){return n},a.deviation=function(){return o},a.forecast=function(){return s},a}});var Zm=ae(ai=>{"use strict";var RR="[object ArrayBuffer]",In=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===RR}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",AR=/^[0-9a-f]+$/i,IR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,DR=/^[a-zA-Z0-9-_]+$/,Rl=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=In.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},pr=class{static toString(e,t=!1){let n=In.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}},Al=class r{static isHex(e){return typeof e===s0&&AR.test(e)}static isBase64(e){return typeof e===s0&&IR.test(e)}static isBase64Url(e){return typeof e===s0&&DR.test(e)}static ToString(e,t="utf8"){let n=In.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 pr.toString(n,!0);case"utf16":case"utf16be":return pr.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 pr.fromString(e,!0);case"utf16":case"utf16be":return pr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=In.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 Rl.fromString(e);case"utf16":case"utf16be":return pr.fromString(e);case"utf16le":case"usc2":return pr.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 Rl.toString(e);case"utf16":case"utf16be":return pr.toString(e);case"utf16le":case"usc2":return pr.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=In.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=In.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 pr.toString(e,t)}static FromUtf16String(e,t=!1){return pr.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,"")||""}};Al.DEFAULT_UTF8_ENCODING="utf8";function TR(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let o=arguments[n];for(let s in o)t[s]=o[s]}return t}function kR(...r){let e=r.map(o=>o.byteLength).reduce((o,s)=>o+s),t=new Uint8Array(e),n=0;return r.map(o=>new Uint8Array(o)).forEach(o=>{for(let s of o)t[n++]=s}),t.buffer}function CR(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let o=0;o<r.byteLength;o++)if(t[o]!==n[o])return!1;return!0}ai.BufferSourceConverter=In;ai.Convert=Al;ai.assign=TR;ai.combine=kR;ai.isEqual=CR});var gu=ae((m$,S0)=>{var p$=function(){typeof S0<"u"&&(S0.exports=p);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(_){var k=_-_%1;return k==0&&(_<0||_===0&&1/_!=1/0)?-0:k},d=p.prototype,u=(p.fromDate=function(_){return new p(+_)},p.fromInt64BE=S(0,1,2,3,0,4),p.fromInt64LE=S(3,2,1,0,4,0),p.fromString=function(N){var k,O=new p,N=(N+="").replace(/^\s*[+\-]?\d+/,function(F){var F=+F,Y=1970+(F-1970)%400;return O.year=F-Y,Y}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(P,F,Y){return F<0&&(Y*=-1),k=6e4*(60*+F+ +Y),""}).replace(/\.\d+$/,function(P){return O.nano=+(P+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,O.time=k=Date.UTC.apply(Date,N)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return y(O)},p.fromTimeT=function(_){return E(_,0)},d.year=0,d.time=0,d.nano=0,d.addNano=function(_){return this.nano+=+_||0,this},d.getNano=function(){var _=y(this);return(_.time%1e3*a+ +_.nano+1e9)%1e9},d.getTimeT=function(){var k=y(this),_=Math.floor(k.time/1e3),k=k.year;return k&&(_+=k*t*r/e),_},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(_){var k=this,O=k.toDate(),N={H:function(){return A(O.getUTCHours())},L:function(){return D(O.getUTCMilliseconds(),3)},M:function(){return A(O.getUTCMinutes())},N:function(){return D(k.getNano(),9)},S:function(){return A(O.getUTCSeconds())},Y:function(){var P=k.getYear();return 999999<P?"+"+P:9999<P?"+"+D(P,6):0<=P?D(P,4):-999999<=P?"-"+D(-P,6):P},a:function(){return m[O.getUTCDay()]},b:function(){return f[O.getUTCMonth()]},d:function(){return A(O.getUTCDate())},e:function(){return function(P){return(9<P?"":" ")+(0|P)}(O.getUTCDate())},m:function(){return A(O.getUTCMonth()+1)}};return function P(F){return F.replace(/%./g,function(Y){var C=Y[1],I=h[C],C=N[C];return I?P(I):C?C():Y})}(_||u)},d.writeInt64BE=b(0,1,2,3,0,4),d.writeInt64LE=b(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
-
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return p;function p(_,k,O){var N=this;if(!(N instanceof p))return new p(_,k,O);N.time=+_||0,N.nano=+k||0,N.year=+O||0,y(N)}function y(_){var k,O,N,P=_.year,F=_.time,Y=_.nano,I=((Y<0||a<=Y)&&(Y-=(O=Math.floor(Y/a))*a,F+=O,O=1),P%e);return(F<-s||s<F||I)&&((k=l(F/o))&&(P+=k*e,F-=k*o),(N=w(F)).setUTCFullYear(I+N.getUTCFullYear()),N=(F=+N)+(k=l((P-=I)/e))*o,k&&-s<=N&&N<=s&&(P-=k*e,F=N),O=1),O&&(_.year=P,_.time=F,_.nano=Y),_}function w(_){var k=new Date(0);return k.setTime(_),k}function E(P,N){P=+P||0;var O=l((N=(N|0)*i)/n)+l(P/n),N=N%n+P%n,P=l(N/n);return P&&(O+=P,N-=P*n),new p(1e3*N,0,O*e)}function b(_,k,O,N,P,F){return function(I,C){var T=y(this);I=I||new Array(8),R(I,C|=0);var v=Math.floor(T.time/1e3),T=T.year*(t*r/e),$=l(T/i)+l(v/i),T=T%i+v%i,v=Math.floor(T/i);return v&&($+=v,T-=v*i),Y(I,C+P,$),Y(I,C+F,T),I};function Y(I,C,$){I[C+_]=$>>24&255,I[C+k]=$>>16&255,I[C+O]=$>>8&255,I[C+N]=255&$}}function S(_,k,O,N,P,F){return function(I,C){R(I,C|=0);var $=Y(I,C+P);return E(Y(I,C+F),$)};function Y(I,C){return 16777216*I[C+_]+(I[C+k]<<16|I[C+O]<<8|I[C+N])}}function R(_,k){if(_=_&&_.length,_==null)throw new TypeError("Invalid Buffer");if(_<k+8)throw new RangeError("Out of range")}function A(_){return(9<_?"":"0")+(0|_)}function D(_,k){return(c+(0|_)).substr(-k)}}()});var x7=ae((QH,L0)=>{"use strict";var QA=Object.prototype.hasOwnProperty,Pt="~";function Ua(){}Object.create&&(Ua.prototype=Object.create(null),new Ua().__proto__||(Pt=!1));function jA(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function E7(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new jA(t,n||r,o),i=Pt?Pt+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 Ou(r,e){--r._eventsCount===0?r._events=new Ua:delete r._events[e]}function Ct(){this._events=new Ua,this._eventsCount=0}Ct.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)QA.call(t,n)&&e.push(Pt?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Ct.prototype.listeners=function(e){var t=Pt?Pt+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=Pt?Pt+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=Pt?Pt+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,d,u;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,o),!0;case 5:return c.fn.call(c.context,t,n,o,s),!0;case 6:return c.fn.call(c.context,t,n,o,s,i),!0}for(u=1,d=new Array(l-1);u<l;u++)d[u-1]=arguments[u];c.fn.apply(c.context,d)}else{var f=c.length,m;for(u=0;u<f;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!d)for(m=1,d=new Array(l-1);m<l;m++)d[m-1]=arguments[m];c[u].fn.apply(c[u].context,d)}}return!0};Ct.prototype.on=function(e,t,n){return E7(this,e,t,n,!1)};Ct.prototype.once=function(e,t,n){return E7(this,e,t,n,!0)};Ct.prototype.removeListener=function(e,t,n,o){var s=Pt?Pt+e:e;if(!this._events[s])return this;if(!t)return Ou(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Ou(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:Ou(this,s)}return this};Ct.prototype.removeAllListeners=function(e){var t;return e?(t=Pt?Pt+e:e,this._events[t]&&Ou(this,t)):(this._events=new Ua,this._eventsCount=0),this};Ct.prototype.off=Ct.prototype.removeListener;Ct.prototype.addListener=Ct.prototype.on;Ct.prefixed=Pt;Ct.EventEmitter=Ct;typeof L0<"u"&&(L0.exports=Ct)});var qg=ae(Qa=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,f;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,f=c&255,[l,d,u,f].join(".")},i=function(c){var l,d,u,f,m,h;for(l=[],u=f=0;f<=3&&c.length!==0;u=++f){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=e(c),m=h[0],d=h[1],c=c.substring(d),l.push(m)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,d,u,f,m;for(f=0,l=10,d="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,d="7")),m=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)f=f*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")f=f*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")f=f*l+(10+t(c[u])-o)>>>0;else break;else break;if(f>4294967295)throw new Error("too large");u++}if(u===m)throw new Error("empty octet");return[f,u]},r=function(){function c(l,d){var u,f,m,h;if(typeof l!="string")throw new Error("Missing `net' parameter");if(d||(h=l.split("/",2),l=h[0],d=h[1]),d||(d=32),typeof d=="string"&&d.indexOf(".")>-1){try{this.maskLong=i(d)}catch(p){throw u=p,new Error("Invalid mask: "+d)}for(f=m=32;m>=0;f=--m)if(this.maskLong===4294967295<<32-f>>>0){this.bitmask=f;break}}else if(d||d===0)this.bitmask=parseInt(d,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(p){throw u=p,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+d);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var d,u,f;for(f=i(this.first),u=i(this.last),d=0;f<=u;)l(a(f),f,d),d++,f++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),Qa.ip2long=i,Qa.long2ip=a,Qa.Netmask=r}).call(Qa)});var H9=ae((qJ,$9)=>{function WD(){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)}$9.exports=WD});var py=ae((Vte,hy)=>{hy.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 Dy=ae((Zne,Iy)=>{"use strict";Iy.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var Py=ae((Ny,Oy)=>{"use strict";var ad=Dy(),{hasOwnProperty:ky}=Object.prototype,{propertyIsEnumerable:xT}=Object,Bi=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),vT=Ny,Ty={concatArrays:!1,ignoreUndefined:!1},cd=r=>{let e=[];for(let t in r)ky.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)xT.call(r,n)&&e.push(n)}return e};function Mi(r){return Array.isArray(r)?_T(r):ad(r)?ST(r):r}function _T(r){let e=r.slice(0,0);return cd(r).forEach(t=>{Bi(e,t,Mi(r[t]))}),e}function ST(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return cd(r).forEach(t=>{Bi(e,t,Mi(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)?Bi(r,o,yp(r[o],e[o],n)):Bi(r,o,Mi(e[o])))}),r),RT=(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++)ky.call(s,a)&&(i.push(String(a)),s===r?Bi(n,o++,s[a]):Bi(n,o++,Mi(s[a])));n=Cy(n,s,cd(s).filter(a=>!i.includes(a)),t)}),n};function yp(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?RT(r,e,t):!ad(e)||!ad(r)?Mi(e):Cy(r,e,cd(e),t)}Oy.exports=function(...r){let e=yp(Mi(Ty),this!==vT&&this||{},Ty),t={_:{}};for(let n of r)if(n!==void 0){if(!ad(n))throw new TypeError("`"+n+"` is not an Option Object");t=yp(t,{_:n},e)}return t._}});var My=ae((eoe,By)=>{"use strict";function AT(r){return r>=55296&&r<=56319}function IT(r){return r>=56320&&r<=57343}By.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],AT(i)&&IT(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 Fy=ae((toe,Uy)=>{"use strict";function DT(r){return r>=55296&&r<=56319}function TT(r){return r>=56320&&r<=57343}Uy.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),TT(o)?s!=null&&DT(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 Ky=ae((roe,Vy)=>{"use strict";var kT=My(),CT=Fy();Vy.exports=kT.bind(null,CT)});var qy=ae((noe,Hy)=>{"use strict";var NT=Ky(),OT=/[\/\?<>\\:\*\|"]/g,PT=/[\x00-\x1f\x80-\x9f]/g,LT=/^\.+$/,BT=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,MT=/[\. ]+$/;function $y(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(OT,e).replace(PT,e).replace(LT,e).replace(BT,e).replace(MT,e);return NT(t,255)}Hy.exports=function(r,e){var t=e&&e.replacement||"",n=$y(r,t);return t===""?n:$y(n,"")}});var bw=ae((pie,ww)=>{"use strict";function vk(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(m){if(m instanceof Uint8Array||(ArrayBuffer.isView(m)?m=new Uint8Array(m.buffer,m.byteOffset,m.byteLength):Array.isArray(m)&&(m=Uint8Array.from(m))),!(m instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(m.length===0)return"";for(var h=0,p=0,y=0,w=m.length;y!==w&&m[y]===0;)y++,h++;for(var E=(w-y)*l+1>>>0,b=new Uint8Array(E);y!==w;){for(var S=m[y],R=0,A=E-1;(S!==0||R<p)&&A!==-1;A--,R++)S+=256*b[A]>>>0,b[A]=S%i>>>0,S=S/i>>>0;if(S!==0)throw new Error("Non-zero carry");p=R,y++}for(var D=E-p;D!==E&&b[D]===0;)D++;for(var _=a.repeat(h);D<E;++D)_+=r.charAt(b[D]);return _}function u(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var h=0;if(m[h]!==" "){for(var p=0,y=0;m[h]===a;)p++,h++;for(var w=(m.length-h)*c+1>>>0,E=new Uint8Array(w);m[h];){var b=e[m.charCodeAt(h)];if(b===255)return;for(var S=0,R=w-1;(b!==0||S<y)&&R!==-1;R--,S++)b+=i*E[R]>>>0,E[R]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");y=S,h++}if(m[h]!==" "){for(var A=w-y;A!==w&&E[A]===0;)A++;for(var D=new Uint8Array(p+(w-A)),_=p;A!==w;)D[_++]=E[A++];return D}}}function f(m){var h=u(m);if(h)return h;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:f}}ww.exports=vk});var vd=ae((mie,Ew)=>{"use strict";var _k=new TextDecoder,Sk=r=>_k.decode(r),Rk=new TextEncoder,Ak=r=>Rk.encode(r);function Ik(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}Ew.exports={decodeText:Sk,encodeText:Ak,concat:Ik}});var vw=ae((gie,xw)=>{"use strict";var{encodeText:Dk}=vd(),Mp=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=Dk(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)}};xw.exports=Mp});var Sw=ae((yie,_w)=>{"use strict";var Tk=(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},kk=(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},Ck=r=>e=>({encode(t){return kk(t,e,r)},decode(t){return Tk(t,e,r)}});_w.exports={rfc4648:Ck}});var Dw=ae((wie,Iw)=>{"use strict";var gc=bw(),Nk=vw(),{rfc4648:vt}=Sw(),{decodeText:Ok,encodeText:Pk}=vd(),Lk=()=>({encode:Ok,decode:Pk}),Rw=[["identity","\0",Lk,""],["base2","0",vt(1),"01"],["base8","7",vt(3),"01234567"],["base10","9",gc,"0123456789"],["base16","f",vt(4),"0123456789abcdef"],["base16upper","F",vt(4),"0123456789ABCDEF"],["base32hex","v",vt(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",vt(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",vt(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",vt(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",vt(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",vt(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",vt(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",gc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",gc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",gc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",gc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",vt(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],Aw=Rw.reduce((r,e)=>(r[e[0]]=new Nk(e[0],e[1],e[2],e[3]),r),{}),Bk=Rw.reduce((r,e)=>(r[e[1]]=Aw[e[0]],r),{});Iw.exports={names:Aw,codes:Bk}});var Cw=ae((zn,kw)=>{"use strict";var $i=Dw(),{encodeText:Mk,decodeText:_d,concat:Tw}=vd();function Uk(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=Cs(r);return $k(t,e),Tw([n,e],n.length+e.length)}function Fk(r,e){let t=Cs(r),n=Mk(t.encode(e));return Tw([t.codeBuf,n],t.codeBuf.length+n.length)}function Vk(r){r instanceof Uint8Array&&(r=_d(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 Kk(r){if(r instanceof Uint8Array&&(r=_d(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return Cs(r[0]).name}catch{return!1}}function $k(r,e){Cs(r).decode(_d(e))}function Cs(r){if(Object.prototype.hasOwnProperty.call($i.names,r))return $i.names[r];if(Object.prototype.hasOwnProperty.call($i.codes,r))return $i.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function Hk(r){return r instanceof Uint8Array&&(r=_d(r)),Cs(r[0])}zn=kw.exports=Uk;zn.encode=Fk;zn.decode=Vk;zn.isEncoded=Kk;zn.encoding=Cs;zn.encodingFromData=Hk;var qk=Object.freeze($i.names),Wk=Object.freeze($i.codes);zn.names=qk;zn.codes=Wk});var Lw=ae((bie,Pw)=>{Pw.exports=Ow;var Nw=128,zk=127,Gk=~zk,Yk=Math.pow(2,31);function Ow(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Yk;)e[t++]=r&255|Nw,r/=128;for(;r&Gk;)e[t++]=r&255|Nw,r>>>=7;return e[t]=r|0,Ow.bytes=t-n+1,e}});var Uw=ae((Eie,Mw)=>{Mw.exports=Up;var Xk=128,Bw=127;function Up(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Up.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Bw)<<o:(i&Bw)*Math.pow(2,o),o+=7}while(i>=Xk);return Up.bytes=s-n,t}});var Vw=ae((xie,Fw)=>{var Qk=Math.pow(2,7),jk=Math.pow(2,14),Zk=Math.pow(2,21),Jk=Math.pow(2,28),eC=Math.pow(2,35),tC=Math.pow(2,42),rC=Math.pow(2,49),nC=Math.pow(2,56),oC=Math.pow(2,63);Fw.exports=function(r){return r<Qk?1:r<jk?2:r<Zk?3:r<Jk?4:r<eC?5:r<tC?6:r<rC?7:r<nC?8:r<oC?9:10}});var $w=ae((vie,Kw)=>{Kw.exports={encode:Lw(),decode:Uw(),encodingLength:Vw()}});var qw=ae((_ie,Hw)=>{"use strict";var sC=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});Hw.exports={names:sC}});function iC(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(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var aC,cC,Ww,zw=Ie(()=>{aC=iC,cC=aC,Ww=cC});var Rie,Gw,Gn,Yw,Xw,Fo=Ie(()=>{Rie=new Uint8Array(0),Gw=(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},Gn=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")},Yw=r=>new TextEncoder().encode(r),Xw=r=>new TextDecoder().decode(r)});var Fp,Vp,Kp,jw,$p,Hi,Vo,lC,uC,je,Qr=Ie(()=>{zw();Fo();Fp=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")}},Vp=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 jw(this,e)}},Kp=class{constructor(e){this.decoders=e}or(e){return jw(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`)}},jw=(r,e)=>new Kp({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),$p=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Fp(e,t,n),this.decoder=new Vp(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},Hi=({name:r,prefix:e,encode:t,decode:n})=>new $p(r,e,t,n),Vo=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=Ww(t,e);return Hi({prefix:r,name:e,encode:n,decode:s=>Gn(o(s))})},lC=(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},uC=(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},je=({name:r,prefix:e,bitsPerChar:t,alphabet:n})=>Hi({prefix:e,name:r,encode(o){return uC(o,n,t)},decode(o){return lC(o,n,t,r)}})});var Hp={};me(Hp,{identity:()=>dC});var dC,Zw=Ie(()=>{Qr();Fo();dC=Hi({prefix:"\0",name:"identity",encode:r=>Xw(r),decode:r=>Yw(r)})});var qp={};me(qp,{base2:()=>fC});var fC,Jw=Ie(()=>{Qr();fC=je({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var Wp={};me(Wp,{base8:()=>hC});var hC,eb=Ie(()=>{Qr();hC=je({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var zp={};me(zp,{base10:()=>pC});var pC,tb=Ie(()=>{Qr();pC=Vo({prefix:"9",name:"base10",alphabet:"0123456789"})});var Gp={};me(Gp,{base16:()=>mC,base16upper:()=>gC});var mC,gC,rb=Ie(()=>{Qr();mC=je({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),gC=je({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var Yp={};me(Yp,{base32:()=>qi,base32hex:()=>EC,base32hexpad:()=>vC,base32hexpadupper:()=>_C,base32hexupper:()=>xC,base32pad:()=>wC,base32padupper:()=>bC,base32upper:()=>yC,base32z:()=>SC});var qi,yC,wC,bC,EC,xC,vC,_C,SC,Xp=Ie(()=>{Qr();qi=je({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),yC=je({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),wC=je({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),bC=je({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),EC=je({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xC=je({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vC=je({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),_C=je({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),SC=je({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var Qp={};me(Qp,{base36:()=>RC,base36upper:()=>AC});var RC,AC,nb=Ie(()=>{Qr();RC=Vo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),AC=Vo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var jp={};me(jp,{base58btc:()=>pn,base58flickr:()=>IC});var pn,IC,Zp=Ie(()=>{Qr();pn=Vo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),IC=Vo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var Jp={};me(Jp,{base64:()=>DC,base64pad:()=>TC,base64url:()=>kC,base64urlpad:()=>CC});var DC,TC,kC,CC,ob=Ie(()=>{Qr();DC=je({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),TC=je({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),kC=je({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),CC=je({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var e3={};me(e3,{base256emoji:()=>BC});function PC(r){return r.reduce((e,t)=>(e+=NC[t],e),"")}function LC(r){let e=[];for(let t of r){let n=OC[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var sb,NC,OC,BC,ib=Ie(()=>{Qr();sb=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}"),NC=sb.reduce((r,e,t)=>(r[t]=e,r),[]),OC=sb.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);BC=Hi({prefix:"\u{1F680}",name:"base256emoji",encode:PC,decode:LC})});function lb(r,e,t){e=e||[],t=t||0;for(var n=t;r>=VC;)e[t++]=r&255|ab,r/=128;for(;r&FC;)e[t++]=r&255|ab,r>>>=7;return e[t]=r|0,lb.bytes=t-n+1,e}function t3(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw t3.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&cb)<<o:(i&cb)*Math.pow(2,o),o+=7}while(i>=$C);return t3.bytes=s-n,t}var MC,ab,UC,FC,VC,KC,$C,cb,HC,qC,WC,zC,GC,YC,XC,QC,jC,ZC,JC,eN,yc,ub=Ie(()=>{MC=lb,ab=128,UC=127,FC=~UC,VC=Math.pow(2,31);KC=t3,$C=128,cb=127;HC=Math.pow(2,7),qC=Math.pow(2,14),WC=Math.pow(2,21),zC=Math.pow(2,28),GC=Math.pow(2,35),YC=Math.pow(2,42),XC=Math.pow(2,49),QC=Math.pow(2,56),jC=Math.pow(2,63),ZC=function(r){return r<HC?1:r<qC?2:r<WC?3:r<zC?4:r<GC?5:r<YC?6:r<XC?7:r<QC?8:r<jC?9:10},JC={encode:MC,decode:KC,encodingLength:ZC},eN=JC,yc=eN});var wc,Wi,zi,Rd=Ie(()=>{ub();wc=(r,e=0)=>[yc.decode(r,e),yc.decode.bytes],Wi=(r,e,t=0)=>(yc.encode(r,e,t),e),zi=r=>yc.encodingLength(r)});var Ns,db,fb,Gi,Ec=Ie(()=>{Fo();Rd();Ns=(r,e)=>{let t=e.byteLength,n=zi(r),o=n+zi(t),s=new Uint8Array(o+t);return Wi(r,s,0),Wi(t,s,n),s.set(e,o),new Gi(r,t,e,s)},db=r=>{let e=Gn(r),[t,n]=wc(e),[o,s]=wc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Gi(t,o,i,e)},fb=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&Gw(r.bytes,e.bytes),Gi=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var n3,r3,o3=Ie(()=>{Ec();n3=({name:r,code:e,encode:t})=>new r3(r,e,t),r3=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={};me(s3,{sha256:()=>tN,sha512:()=>rN});var pb,tN,rN,mb=Ie(()=>{o3();pb=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),tN=n3({name:"sha2-256",code:18,encode:pb("SHA-256")}),rN=n3({name:"sha2-512",code:19,encode:pb("SHA-512")})});var i3={};me(i3,{identity:()=>sN});var gb,nN,yb,oN,sN,wb=Ie(()=>{Fo();Ec();gb=0,nN="identity",yb=Gn,oN=r=>Ns(gb,yb(r)),sN={code:gb,name:nN,encode:yb,digest:oN}});var bb=Ie(()=>{Fo()});var zie,Gie,Eb=Ie(()=>{zie=new TextEncoder,Gie=new TextDecoder});var Dd,cN,lN,uN,xc,dN,xb,vb,Ad,Id,fN,hN,pN,_b=Ie(()=>{Rd();Ec();Zp();Xp();Fo();Dd=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:Id,byteLength:Id,code:Ad,version:Ad,multihash:Ad,bytes:Ad,_baseCache:Id,asCID:Id})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==xc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==dN)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&&fb(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return lN(t,o,e||pn.encoder);default:return uN(t,o,e||qi.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 hN(/^0\.0/,pN),!!(e&&(e[vb]||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||xb(t,n,o.bytes))}else if(e!=null&&e[vb]===!0){let{version:t,multihash:n,code:o}=e,s=db(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!==xc)throw new Error(`Version 0 CID must use dag-pb (code: ${xc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=xb(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,xc,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=Gn(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 Gi(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=wc(e.subarray(t));return t+=f,u},o=n(),s=xc;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]=cN(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},cN=(r,e)=>{switch(r[0]){case"Q":{let t=e||pn;return[pn.prefix,t.decode(`${pn.prefix}${r}`)]}case pn.prefix:{let t=e||pn;return[pn.prefix,t.decode(r)]}case qi.prefix:{let t=e||qi;return[qi.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)]}}},lN=(r,e,t)=>{let{prefix:n}=t;if(n!==pn.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},uN=(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},xc=112,dN=18,xb=(r,e,t)=>{let n=zi(r),o=n+zi(e),s=new Uint8Array(o+t.byteLength);return Wi(r,s,0),Wi(e,s,n),s.set(t,o),s},vb=Symbol.for("@ipld/js-cid/CID"),Ad={writable:!1,configurable:!1,enumerable:!0},Id={writable:!1,enumerable:!1,configurable:!1},fN="0.0.0-dev",hN=(r,e)=>{if(r.test(fN))console.warn(e);else throw new Error(e)},pN=`CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
2
|
+
"use strict";var Helia=(()=>{var VE=Object.create;var _c=Object.defineProperty;var KE=Object.getOwnPropertyDescriptor;var $E=Object.getOwnPropertyNames;var HE=Object.getPrototypeOf,qE=Object.prototype.hasOwnProperty;var Ae=(r,e)=>()=>(r&&(e=r(r=0)),e);var Ie=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),pe=(r,e)=>{for(var t in e)_c(r,t,{get:e[t],enumerable:!0})},$3=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of $E(e))!qE.call(r,o)&&o!==t&&_c(r,o,{get:()=>e[o],enumerable:!(n=KE(e,o))||n.enumerable});return r};var Ye=(r,e,t)=>(t=r!=null?VE(HE(r)):{},$3(e||!r||!r.__esModule?_c(t,"default",{value:r,enumerable:!0}):t,r)),Ac=r=>$3(_c({},"__esModule",{value:!0}),r);var $4=Ie((BO,K4)=>{var Hs=1e3,qs=Hs*60,Ws=qs*60,qo=Ws*24,Ax=qo*7,Ix=qo*365.25;K4.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return Dx(r);if(t==="number"&&isFinite(r))return e.long?kx(r):Tx(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function Dx(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*Ix;case"weeks":case"week":case"w":return t*Ax;case"days":case"day":case"d":return t*qo;case"hours":case"hour":case"hrs":case"hr":case"h":return t*Ws;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*Hs;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function Tx(r){var e=Math.abs(r);return e>=qo?Math.round(r/qo)+"d":e>=Ws?Math.round(r/Ws)+"h":e>=qs?Math.round(r/qs)+"m":e>=Hs?Math.round(r/Hs)+"s":r+"ms"}function kx(r){var e=Math.abs(r);return e>=qo?Yc(r,e,qo,"day"):e>=Ws?Yc(r,e,Ws,"hour"):e>=qs?Yc(r,e,qs,"minute"):e>=Hs?Yc(r,e,Hs,"second"):r+" ms"}function Yc(r,e,t,n){var o=e>=t*1.5;return Math.round(r/t)+" "+n+(o?"s":"")}});var q4=Ie((UO,H4)=>{function Cx(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=o,t.enabled=i,t.humanize=$4(),t.destroy=l,Object.keys(r).forEach(d=>{t[d]=r[d]}),t.names=[],t.skips=[],t.formatters={};function e(d){let u=0;for(let f=0;f<d.length;f++)u=(u<<5)-u+d.charCodeAt(f),u|=0;return t.colors[Math.abs(u)%t.colors.length]}t.selectColor=e;function t(d){let u,f=null,g,h;function p(...y){if(!p.enabled)return;let w=p,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 S=0;y[0]=y[0].replace(/%([a-zA-Z%])/g,(A,D)=>{if(A==="%%")return"%";S++;let R=t.formatters[D];if(typeof R=="function"){let k=y[S];A=R.call(w,k),y.splice(S,1),S--}return A}),t.formatArgs.call(w,y),(w.log||t.log).apply(w,y)}return p.namespace=d,p.useColors=t.useColors(),p.color=t.selectColor(d),p.extend=n,p.destroy=t.destroy,Object.defineProperty(p,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(g!==t.namespaces&&(g=t.namespaces,h=t.enabled(d)),h),set:y=>{f=y}}),typeof t.init=="function"&&t.init(p),p}function n(d,u){let f=t(this.namespace+(typeof u>"u"?":":u)+d);return f.log=this.log,f}function o(d){t.save(d),t.namespaces=d,t.names=[],t.skips=[];let u,f=(typeof d=="string"?d:"").split(/[\s,]+/),g=f.length;for(u=0;u<g;u++)f[u]&&(d=f[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,f;for(u=0,f=t.skips.length;u<f;u++)if(t.skips[u].test(d))return!1;for(u=0,f=t.names.length;u<f;u++)if(t.names[u].test(d))return!0;return!1}function a(d){return d.toString().substring(2,d.toString().length-2).replace(/\.\*\?$/,"*")}function c(d){return d instanceof Error?d.stack||d.message:d}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.enable(t.load()),t}H4.exports=Cx});var ph=Ie((Jt,Qc)=>{Jt.formatArgs=Px;Jt.save=Ox;Jt.load=Lx;Jt.useColors=Nx;Jt.storage=Bx();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 Nx(){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 Px(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Qc.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 Ox(r){try{r?Jt.storage.setItem("debug",r):Jt.storage.removeItem("debug")}catch{}}function Lx(){let r;try{r=Jt.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function Bx(){try{return localStorage}catch{}}Qc.exports=q4()(Jt);var{formatters:Ux}=Qc.exports;Ux.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Wo=Ie((YO,Y4)=>{"use strict";function z4(r,e){for(let t in e)Object.defineProperty(r,t,{value:e[t],enumerable:!0,configurable:!0});return r}function Vx(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 z4(r,t)}catch{t.message=r.message,t.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),z4(new o,t)}}Y4.exports=Vx});var m8=Ie(ga=>{(function(){var r,e,t,n,o,s,i,a;a=function(c){var l,d,u,f;return l=(c&255<<24)>>>24,d=(c&255<<16)>>>16,u=(c&65280)>>>8,f=c&255,[l,d,u,f].join(".")},i=function(c){var l,d,u,f,g,h;for(l=[],u=f=0;f<=3&&c.length!==0;u=++f){if(u>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}h=e(c),g=h[0],d=h[1],c=c.substring(d),l.push(g)}if(c.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},t=function(c){return c.charCodeAt(0)},n=t("0"),s=t("a"),o=t("A"),e=function(c){var l,d,u,f,g;for(f=0,l=10,d="9",u=0,c.length>1&&c[u]==="0"&&(c[u+1]==="x"||c[u+1]==="X"?(u+=2,l=16):"0"<=c[u+1]&&c[u+1]<="9"&&(u++,l=8,d="7")),g=u;u<c.length;){if("0"<=c[u]&&c[u]<=d)f=f*l+(t(c[u])-n)>>>0;else if(l===16)if("a"<=c[u]&&c[u]<="f")f=f*l+(10+t(c[u])-s)>>>0;else if("A"<=c[u]&&c[u]<="F")f=f*l+(10+t(c[u])-o)>>>0;else break;else break;if(f>4294967295)throw new Error("too large");u++}if(u===g)throw new Error("empty octet");return[f,u]},r=function(){function c(l,d){var u,f,g,h;if(typeof l!="string")throw new Error("Missing `net' parameter");if(d||(h=l.split("/",2),l=h[0],d=h[1]),d||(d=32),typeof d=="string"&&d.indexOf(".")>-1){try{this.maskLong=i(d)}catch(p){throw u=p,new Error("Invalid mask: "+d)}for(f=g=32;g>=0;f=--g)if(this.maskLong===4294967295<<32-f>>>0){this.bitmask=f;break}}else if(d||d===0)this.bitmask=parseInt(d,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(i(l)&this.maskLong)>>>0}catch(p){throw u=p,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+d);this.size=Math.pow(2,32-this.bitmask),this.base=a(this.netLong),this.mask=a(this.maskLong),this.hostmask=a(~this.maskLong),this.first=this.bitmask<=30?a(this.netLong+1):this.base,this.last=this.bitmask<=30?a(this.netLong+this.size-2):a(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?a(this.netLong+this.size-1):void 0}return c.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new c(l)),l instanceof c?this.contains(l.base)&&this.contains(l.broadcast||l.last):(i(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},c.prototype.next=function(l){return l==null&&(l=1),new c(a(this.netLong+this.size*l),this.mask)},c.prototype.forEach=function(l){var d,u,f;for(f=i(this.first),u=i(this.last),d=0;f<=u;)l(a(f),f,d),d++,f++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),ga.ip2long=i,ga.long2ip=a,ga.Netmask=r}).call(ga)});var a6=Ie(ii=>{"use strict";var KR="[object ArrayBuffer]",An=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===KR}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}},c0="string",$R=/^[0-9a-f]+$/i,HR=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,qR=/^[a-zA-Z0-9-_]+$/,Bl=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=An.toUint8Array(e),n="";for(let s=0;s<t.length;s++)n+=String.fromCharCode(t[s]);return decodeURIComponent(escape(n))}},xr=class{static toString(e,t=!1){let n=An.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}},Ul=class r{static isHex(e){return typeof e===c0&&$R.test(e)}static isBase64(e){return typeof e===c0&&HR.test(e)}static isBase64Url(e){return typeof e===c0&&qR.test(e)}static ToString(e,t="utf8"){let n=An.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 xr.toString(n,!0);case"utf16":case"utf16be":return xr.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 xr.fromString(e,!0);case"utf16":case"utf16be":return xr.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=An.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 Bl.fromString(e);case"utf16":case"utf16be":return xr.fromString(e);case"utf16le":case"usc2":return xr.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 Bl.toString(e);case"utf16":case"utf16be":return xr.toString(e);case"utf16le":case"usc2":return xr.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=An.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return n}static ToHex(e){let t=An.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 xr.toString(e,t)}static FromUtf16String(e,t=!1){return xr.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,"")||""}};Ul.DEFAULT_UTF8_ENCODING="utf8";function WR(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 GR(...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 zR(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}ii.BufferSourceConverter=An;ii.Convert=Ul;ii.assign=WR;ii.combine=GR;ii.isEqual=zR});var Iu=Ie((oK,I0)=>{var nK=function(){typeof I0<"u"&&(I0.exports=p);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 k=R-R%1;return k==0&&(R<0||R===0&&1/R!=1/0)?-0:k},d=p.prototype,u=(p.fromDate=function(R){return new p(+R)},p.fromInt64BE=S(0,1,2,3,0,4),p.fromInt64LE=S(3,2,1,0,4,0),p.fromString=function(N){var k,O=new p,N=(N+="").replace(/^\s*[+\-]?\d+/,function(F){var F=+F,Y=1970+(F-1970)%400;return O.year=F-Y,Y}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(L,F,Y){return F<0&&(Y*=-1),k=6e4*(60*+F+ +Y),""}).replace(/\.\d+$/,function(L){return O.nano=+(L+c).substr(1,9),""}).split(/\D+/);if(1<N.length?N[1]--:N[1]=0,O.time=k=Date.UTC.apply(Date,N)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return y(O)},p.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 k=y(this),R=Math.floor(k.time/1e3),k=k.year;return k&&(R+=k*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 k=this,O=k.toDate(),N={H:function(){return A(O.getUTCHours())},L:function(){return D(O.getUTCMilliseconds(),3)},M:function(){return A(O.getUTCMinutes())},N:function(){return D(k.getNano(),9)},S:function(){return A(O.getUTCSeconds())},Y:function(){var L=k.getYear();return 999999<L?"+"+L:9999<L?"+"+D(L,6):0<=L?D(L,4):-999999<=L?"-"+D(-L,6):L},a:function(){return g[O.getUTCDay()]},b:function(){return f[O.getUTCMonth()]},d:function(){return A(O.getUTCDate())},e:function(){return function(L){return(9<L?"":" ")+(0|L)}(O.getUTCDate())},m:function(){return A(O.getUTCMonth()+1)}};return function L(F){return F.replace(/%./g,function(Y){var C=Y[1],I=h[C],C=N[C];return I?L(I):C?C():Y})}(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"),f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],g=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h={"%":"%",F:"%Y-%m-%d",n:`
|
|
3
|
+
`,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return p;function p(R,k,O){var N=this;if(!(N instanceof p))return new p(R,k,O);N.time=+R||0,N.nano=+k||0,N.year=+O||0,y(N)}function y(R){var k,O,N,L=R.year,F=R.time,Y=R.nano,I=((Y<0||a<=Y)&&(Y-=(O=Math.floor(Y/a))*a,F+=O,O=1),L%e);return(F<-s||s<F||I)&&((k=l(F/o))&&(L+=k*e,F-=k*o),(N=w(F)).setUTCFullYear(I+N.getUTCFullYear()),N=(F=+N)+(k=l((L-=I)/e))*o,k&&-s<=N&&N<=s&&(L-=k*e,F=N),O=1),O&&(R.year=L,R.time=F,R.nano=Y),R}function w(R){var k=new Date(0);return k.setTime(R),k}function b(L,N){L=+L||0;var O=l((N=(N|0)*i)/n)+l(L/n),N=N%n+L%n,L=l(N/n);return L&&(O+=L,N-=L*n),new p(1e3*N,0,O*e)}function E(R,k,O,N,L,F){return function(I,C){var T=y(this);I=I||new Array(8),_(I,C|=0);var v=Math.floor(T.time/1e3),T=T.year*(t*r/e),$=l(T/i)+l(v/i),T=T%i+v%i,v=Math.floor(T/i);return v&&($+=v,T-=v*i),Y(I,C+L,$),Y(I,C+F,T),I};function Y(I,C,$){I[C+R]=$>>24&255,I[C+k]=$>>16&255,I[C+O]=$>>8&255,I[C+N]=255&$}}function S(R,k,O,N,L,F){return function(I,C){_(I,C|=0);var $=Y(I,C+L);return b(Y(I,C+F),$)};function Y(I,C){return 16777216*I[C+R]+(I[C+k]<<16|I[C+O]<<8|I[C+N])}}function _(R,k){if(R=R&&R.length,R==null)throw new TypeError("Invalid Buffer");if(R<k+8)throw new RangeError("Out of range")}function A(R){return(9<R?"":"0")+(0|R)}function D(R,k){return(c+(0|R)).substr(-k)}}()});var k5=Ie((V$,U0)=>{"use strict";var u_=Object.prototype.hasOwnProperty,Ft="~";function $a(){}Object.create&&($a.prototype=Object.create(null),new $a().__proto__||(Ft=!1));function d_(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function T5(r,e,t,n,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new d_(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 Wu(r,e){--r._eventsCount===0?r._events=new $a:delete r._events[e]}function Ot(){this._events=new $a,this._eventsCount=0}Ot.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)u_.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 f=c.length,g;for(u=0;u<f;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),l){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,o);break;default:if(!d)for(g=1,d=new Array(l-1);g<l;g++)d[g-1]=arguments[g];c[u].fn.apply(c[u].context,d)}}return!0};Ot.prototype.on=function(e,t,n){return T5(this,e,t,n,!1)};Ot.prototype.once=function(e,t,n){return T5(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 Wu(this,s),this;var i=this._events[s];if(i.fn)i.fn===t&&(!o||i.once)&&(!n||i.context===n)&&Wu(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:Wu(this,s)}return this};Ot.prototype.removeAllListeners=function(e){var t;return e?(t=Ft?Ft+e:e,this._events[t]&&Wu(this,t)):(this._events=new $a,this._eventsCount=0),this};Ot.prototype.off=Ot.prototype.removeListener;Ot.prototype.addListener=Ot.prototype.on;Ot.prefixed=Ft;Ot.EventEmitter=Ot;typeof U0<"u"&&(U0.exports=Ot)});var Y0=Ie((tW,K5)=>{K5.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 Fg=Ie((Zj,Mg)=>{function zA(){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)}Mg.exports=zA});var x9=Ie((ore,b9)=>{"use strict";b9.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var I9=Ie((_9,A9)=>{"use strict";var dd=x9(),{hasOwnProperty:R9}=Object.prototype,{propertyIsEnumerable:xI}=Object,Li=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),vI=_9,v9={concatArrays:!1,ignoreUndefined:!1},fd=r=>{let e=[];for(let t in r)R9.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)xI.call(r,n)&&e.push(n)}return e};function Bi(r){return Array.isArray(r)?RI(r):dd(r)?SI(r):r}function RI(r){let e=r.slice(0,0);return fd(r).forEach(t=>{Li(e,t,Bi(r[t]))}),e}function SI(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return fd(r).forEach(t=>{Li(e,t,Bi(r[t]))}),e}var S9=(r,e,t,n)=>(t.forEach(o=>{typeof e[o]>"u"&&n.ignoreUndefined||(o in r&&r[o]!==Object.getPrototypeOf(r)?Li(r,o,pp(r[o],e[o],n)):Li(r,o,Bi(e[o])))}),r),_I=(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++)R9.call(s,a)&&(i.push(String(a)),s===r?Li(n,o++,s[a]):Li(n,o++,Bi(s[a])));n=S9(n,s,fd(s).filter(a=>!i.includes(a)),t)}),n};function pp(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?_I(r,e,t):!dd(e)||!dd(r)?Bi(e):S9(r,e,fd(e),t)}A9.exports=function(...r){let e=pp(Bi(v9),this!==vI&&this||{},v9),t={_:{}};for(let n of r)if(n!==void 0){if(!dd(n))throw new TypeError("`"+n+"` is not an Option Object");t=pp(t,{_:n},e)}return t._}});var k9=Ie((ire,T9)=>{"use strict";function AI(r){return r>=55296&&r<=56319}function II(r){return r>=56320&&r<=57343}T9.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],AI(i)&&II(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 N9=Ie((are,C9)=>{"use strict";function DI(r){return r>=55296&&r<=56319}function TI(r){return r>=56320&&r<=57343}C9.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),TI(o)?s!=null&&DI(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 O9=Ie((cre,P9)=>{"use strict";var kI=k9(),CI=N9();P9.exports=kI.bind(null,CI)});var U9=Ie((lre,B9)=>{"use strict";var NI=O9(),PI=/[\/\?<>\\:\*\|"]/g,OI=/[\x00-\x1f\x80-\x9f]/g,LI=/^\.+$/,BI=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,UI=/[\. ]+$/;function L9(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(PI,e).replace(OI,e).replace(LI,e).replace(BI,e).replace(UI,e);return NI(t,255)}B9.exports=function(r,e){var t=e&&e.replacement||"",n=L9(r,t);return t===""?n:L9(n,"")}});var fy=Ie((boe,dy)=>{"use strict";function vD(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(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var h=0,p=0,y=0,w=g.length;y!==w&&g[y]===0;)y++,h++;for(var b=(w-y)*l+1>>>0,E=new Uint8Array(b);y!==w;){for(var S=g[y],_=0,A=b-1;(S!==0||_<p)&&A!==-1;A--,_++)S+=256*E[A]>>>0,E[A]=S%i>>>0,S=S/i>>>0;if(S!==0)throw new Error("Non-zero carry");p=_,y++}for(var D=b-p;D!==b&&E[D]===0;)D++;for(var R=a.repeat(h);D<b;++D)R+=r.charAt(E[D]);return R}function u(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var h=0;if(g[h]!==" "){for(var p=0,y=0;g[h]===a;)p++,h++;for(var w=(g.length-h)*c+1>>>0,b=new Uint8Array(w);g[h];){var E=e[g.charCodeAt(h)];if(E===255)return;for(var S=0,_=w-1;(E!==0||S<y)&&_!==-1;_--,S++)E+=i*b[_]>>>0,b[_]=E%256>>>0,E=E/256>>>0;if(E!==0)throw new Error("Non-zero carry");y=S,h++}if(g[h]!==" "){for(var A=w-y;A!==w&&b[A]===0;)A++;for(var D=new Uint8Array(p+(w-A)),R=p;A!==w;)D[R++]=b[A++];return D}}}function f(g){var h=u(g);if(h)return h;throw new Error("Non-base"+i+" character")}return{encode:d,decodeUnsafe:u,decode:f}}dy.exports=vD});var Ad=Ie((xoe,hy)=>{"use strict";var RD=new TextDecoder,SD=r=>RD.decode(r),_D=new TextEncoder,AD=r=>_D.encode(r);function ID(r,e){let t=new Uint8Array(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}hy.exports={decodeText:SD,encodeText:AD,concat:ID}});var my=Ie((voe,py)=>{"use strict";var{encodeText:DD}=Ad(),Op=class{constructor(e,t,n,o){this.name=e,this.code=t,this.codeBuf=DD(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)}};py.exports=Op});var yy=Ie((Roe,gy)=>{"use strict";var TD=(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},kD=(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},CD=r=>e=>({encode(t){return kD(t,e,r)},decode(t){return TD(t,e,r)}});gy.exports={rfc4648:CD}});var xy=Ie((Soe,by)=>{"use strict";var mc=fy(),ND=my(),{rfc4648:At}=yy(),{decodeText:PD,encodeText:OD}=Ad(),LD=()=>({encode:PD,decode:OD}),wy=[["identity","\0",LD,""],["base2","0",At(1),"01"],["base8","7",At(3),"01234567"],["base10","9",mc,"0123456789"],["base16","f",At(4),"0123456789abcdef"],["base16upper","F",At(4),"0123456789ABCDEF"],["base32hex","v",At(5),"0123456789abcdefghijklmnopqrstuv"],["base32hexupper","V",At(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV"],["base32hexpad","t",At(5),"0123456789abcdefghijklmnopqrstuv="],["base32hexpadupper","T",At(5),"0123456789ABCDEFGHIJKLMNOPQRSTUV="],["base32","b",At(5),"abcdefghijklmnopqrstuvwxyz234567"],["base32upper","B",At(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"],["base32pad","c",At(5),"abcdefghijklmnopqrstuvwxyz234567="],["base32padupper","C",At(5),"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="],["base32z","h",At(5),"ybndrfg8ejkmcpqxot1uwisza345h769"],["base36","k",mc,"0123456789abcdefghijklmnopqrstuvwxyz"],["base36upper","K",mc,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"],["base58btc","z",mc,"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],["base58flickr","Z",mc,"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],["base64","m",At(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],["base64pad","M",At(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],["base64url","u",At(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"],["base64urlpad","U",At(6),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="]],Ey=wy.reduce((r,e)=>(r[e[0]]=new ND(e[0],e[1],e[2],e[3]),r),{}),BD=wy.reduce((r,e)=>(r[e[1]]=Ey[e[0]],r),{});by.exports={names:Ey,codes:BD}});var Sy=Ie((qn,Ry)=>{"use strict";var Ki=xy(),{encodeText:UD,decodeText:Id,concat:vy}=Ad();function MD(r,e){if(!e)throw new Error("requires an encoded Uint8Array");let{name:t,codeBuf:n}=As(r);return $D(t,e),vy([n,e],n.length+e.length)}function FD(r,e){let t=As(r),n=UD(t.encode(e));return vy([t.codeBuf,n],t.codeBuf.length+n.length)}function VD(r){r instanceof Uint8Array&&(r=Id(r));let e=r[0];return["f","F","v","V","t","T","b","B","c","C","h","k","K"].includes(e)&&(r=r.toLowerCase()),As(r[0]).decode(r.substring(1))}function KD(r){if(r instanceof Uint8Array&&(r=Id(r)),Object.prototype.toString.call(r)!=="[object String]")return!1;try{return As(r[0]).name}catch{return!1}}function $D(r,e){As(r).decode(Id(e))}function As(r){if(Object.prototype.hasOwnProperty.call(Ki.names,r))return Ki.names[r];if(Object.prototype.hasOwnProperty.call(Ki.codes,r))return Ki.codes[r];throw new Error(`Unsupported encoding: ${r}`)}function HD(r){return r instanceof Uint8Array&&(r=Id(r)),As(r[0])}qn=Ry.exports=MD;qn.encode=FD;qn.decode=VD;qn.isEncoded=KD;qn.encoding=As;qn.encodingFromData=HD;var qD=Object.freeze(Ki.names),WD=Object.freeze(Ki.codes);qn.names=qD;qn.codes=WD});var Dy=Ie((_oe,Iy)=>{Iy.exports=Ay;var _y=128,GD=127,zD=~GD,YD=Math.pow(2,31);function Ay(r,e,t){e=e||[],t=t||0;for(var n=t;r>=YD;)e[t++]=r&255|_y,r/=128;for(;r&zD;)e[t++]=r&255|_y,r>>>=7;return e[t]=r|0,Ay.bytes=t-n+1,e}});var Cy=Ie((Aoe,ky)=>{ky.exports=Lp;var QD=128,Ty=127;function Lp(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Lp.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&Ty)<<o:(i&Ty)*Math.pow(2,o),o+=7}while(i>=QD);return Lp.bytes=s-n,t}});var Py=Ie((Ioe,Ny)=>{var XD=Math.pow(2,7),jD=Math.pow(2,14),ZD=Math.pow(2,21),JD=Math.pow(2,28),eT=Math.pow(2,35),tT=Math.pow(2,42),rT=Math.pow(2,49),nT=Math.pow(2,56),oT=Math.pow(2,63);Ny.exports=function(r){return r<XD?1:r<jD?2:r<ZD?3:r<JD?4:r<eT?5:r<tT?6:r<rT?7:r<nT?8:r<oT?9:10}});var Ly=Ie((Doe,Oy)=>{Oy.exports={encode:Dy(),decode:Cy(),encodingLength:Py()}});var Uy=Ie((Toe,By)=>{"use strict";var sT=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});By.exports={names:sT}});function iT(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(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,b=h.length;w!==b&&h[w]===0;)w++,p++;for(var E=(b-w)*d+1>>>0,S=new Uint8Array(E);w!==b;){for(var _=h[w],A=0,D=E-1;(_!==0||A<y)&&D!==-1;D--,A++)_+=256*S[D]>>>0,S[D]=_%a>>>0,_=_/a>>>0;if(_!==0)throw new Error("Non-zero carry");y=A,w++}for(var R=E-y;R!==E&&S[R]===0;)R++;for(var k=c.repeat(p);R<E;++R)k+=r.charAt(S[R]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var b=(h.length-p)*l+1>>>0,E=new Uint8Array(b);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var _=0,A=b-1;(S!==0||_<w)&&A!==-1;A--,_++)S+=a*E[A]>>>0,E[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=_,p++}if(h[p]!==" "){for(var D=b-w;D!==b&&E[D]===0;)D++;for(var R=new Uint8Array(y+(b-D)),k=y;D!==b;)R[k++]=E[D++];return R}}}function g(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:g}}var aT,cT,My,Fy=Ae(()=>{aT=iT,cT=aT,My=cT});var Coe,Vy,Wn,Ky,$y,Bo=Ae(()=>{Coe=new Uint8Array(0),Vy=(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},Wn=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")},Ky=r=>new TextEncoder().encode(r),$y=r=>new TextDecoder().decode(r)});var Bp,Up,Mp,qy,Fp,$i,Uo,lT,uT,tt,Zr=Ae(()=>{Fy();Bo();Bp=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")}},Up=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 qy(this,e)}},Mp=class{constructor(e){this.decoders=e}or(e){return qy(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`)}},qy=(r,e)=>new Mp({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}}),Fp=class{constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Bp(e,t,n),this.decoder=new Up(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},$i=({name:r,prefix:e,encode:t,decode:n})=>new Fp(r,e,t,n),Uo=({prefix:r,name:e,alphabet:t})=>{let{encode:n,decode:o}=My(t,e);return $i({prefix:r,name:e,encode:n,decode:s=>Wn(o(s))})},lT=(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},uT=(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})=>$i({prefix:e,name:r,encode(o){return uT(o,n,t)},decode(o){return lT(o,n,t,r)}})});var Vp={};pe(Vp,{identity:()=>dT});var dT,Wy=Ae(()=>{Zr();Bo();dT=$i({prefix:"\0",name:"identity",encode:r=>$y(r),decode:r=>Ky(r)})});var Kp={};pe(Kp,{base2:()=>fT});var fT,Gy=Ae(()=>{Zr();fT=tt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})});var $p={};pe($p,{base8:()=>hT});var hT,zy=Ae(()=>{Zr();hT=tt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})});var Hp={};pe(Hp,{base10:()=>pT});var pT,Yy=Ae(()=>{Zr();pT=Uo({prefix:"9",name:"base10",alphabet:"0123456789"})});var qp={};pe(qp,{base16:()=>mT,base16upper:()=>gT});var mT,gT,Qy=Ae(()=>{Zr();mT=tt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),gT=tt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});var Wp={};pe(Wp,{base32:()=>Hi,base32hex:()=>bT,base32hexpad:()=>vT,base32hexpadupper:()=>RT,base32hexupper:()=>xT,base32pad:()=>wT,base32padupper:()=>ET,base32upper:()=>yT,base32z:()=>ST});var Hi,yT,wT,ET,bT,xT,vT,RT,ST,Gp=Ae(()=>{Zr();Hi=tt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),yT=tt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),wT=tt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ET=tt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),bT=tt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),xT=tt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),vT=tt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),RT=tt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ST=tt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})});var zp={};pe(zp,{base36:()=>_T,base36upper:()=>AT});var _T,AT,Xy=Ae(()=>{Zr();_T=Uo({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),AT=Uo({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})});var Yp={};pe(Yp,{base58btc:()=>fn,base58flickr:()=>IT});var fn,IT,Qp=Ae(()=>{Zr();fn=Uo({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),IT=Uo({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});var Xp={};pe(Xp,{base64:()=>DT,base64pad:()=>TT,base64url:()=>kT,base64urlpad:()=>CT});var DT,TT,kT,CT,jy=Ae(()=>{Zr();DT=tt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),TT=tt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),kT=tt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),CT=tt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});var jp={};pe(jp,{base256emoji:()=>BT});function OT(r){return r.reduce((e,t)=>(e+=NT[t],e),"")}function LT(r){let e=[];for(let t of r){let n=PT[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Zy,NT,PT,BT,Jy=Ae(()=>{Zr();Zy=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}"),NT=Zy.reduce((r,e,t)=>(r[t]=e,r),[]),PT=Zy.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);BT=$i({prefix:"\u{1F680}",name:"base256emoji",encode:OT,decode:LT})});function rw(r,e,t){e=e||[],t=t||0;for(var n=t;r>=VT;)e[t++]=r&255|ew,r/=128;for(;r&FT;)e[t++]=r&255|ew,r>>>=7;return e[t]=r|0,rw.bytes=t-n+1,e}function Zp(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Zp.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&tw)<<o:(i&tw)*Math.pow(2,o),o+=7}while(i>=$T);return Zp.bytes=s-n,t}var UT,ew,MT,FT,VT,KT,$T,tw,HT,qT,WT,GT,zT,YT,QT,XT,jT,ZT,JT,ek,gc,nw=Ae(()=>{UT=rw,ew=128,MT=127,FT=~MT,VT=Math.pow(2,31);KT=Zp,$T=128,tw=127;HT=Math.pow(2,7),qT=Math.pow(2,14),WT=Math.pow(2,21),GT=Math.pow(2,28),zT=Math.pow(2,35),YT=Math.pow(2,42),QT=Math.pow(2,49),XT=Math.pow(2,56),jT=Math.pow(2,63),ZT=function(r){return r<HT?1:r<qT?2:r<WT?3:r<GT?4:r<zT?5:r<YT?6:r<QT?7:r<XT?8:r<jT?9:10},JT={encode:UT,decode:KT,encodingLength:ZT},ek=JT,gc=ek});var yc,qi,Wi,Td=Ae(()=>{nw();yc=(r,e=0)=>[gc.decode(r,e),gc.decode.bytes],qi=(r,e,t=0)=>(gc.encode(r,e,t),e),Wi=r=>gc.encodingLength(r)});var Is,ow,sw,Gi,Ec=Ae(()=>{Bo();Td();Is=(r,e)=>{let t=e.byteLength,n=Wi(r),o=n+Wi(t),s=new Uint8Array(o+t);return qi(r,s,0),qi(t,s,n),s.set(e,o),new Gi(r,t,e,s)},ow=r=>{let e=Wn(r),[t,n]=yc(e),[o,s]=yc(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Gi(t,o,i,e)},sw=(r,e)=>r===e?!0:r.code===e.code&&r.size===e.size&&Vy(r.bytes,e.bytes),Gi=class{constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}}});var e3,Jp,t3=Ae(()=>{Ec();e3=({name:r,code:e,encode:t})=>new Jp(r,e,t),Jp=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?Is(this.code,t):t.then(n=>Is(this.code,n))}else throw Error("Unknown type, must be binary type")}}});var r3={};pe(r3,{sha256:()=>tk,sha512:()=>rk});var aw,tk,rk,cw=Ae(()=>{t3();aw=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),tk=e3({name:"sha2-256",code:18,encode:aw("SHA-256")}),rk=e3({name:"sha2-512",code:19,encode:aw("SHA-512")})});var n3={};pe(n3,{identity:()=>sk});var lw,nk,uw,ok,sk,dw=Ae(()=>{Bo();Ec();lw=0,nk="identity",uw=Wn,ok=r=>Is(lw,uw(r)),sk={code:lw,name:nk,encode:uw,digest:ok}});var fw=Ae(()=>{Bo()});var Zoe,Joe,hw=Ae(()=>{Zoe=new TextEncoder,Joe=new TextDecoder});var Nd,ck,lk,uk,bc,dk,pw,mw,kd,Cd,fk,hk,pk,gw=Ae(()=>{Td();Ec();Qp();Gp();Bo();Nd=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:Cd,byteLength:Cd,code:kd,version:kd,multihash:kd,bytes:kd,_baseCache:Cd,asCID:Cd})}toV0(){switch(this.version){case 0:return this;default:{let{code:e,multihash:t}=this;if(e!==bc)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==dk)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=Is(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&&sw(this.multihash,e.multihash)}toString(e){let{bytes:t,version:n,_baseCache:o}=this;switch(n){case 0:return lk(t,o,e||fn.encoder);default:return uk(t,o,e||Hi.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 hk(/^0\.0/,pk),!!(e&&(e[mw]||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||pw(t,n,o.bytes))}else if(e!=null&&e[mw]===!0){let{version:t,multihash:n,code:o}=e,s=ow(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!==bc)throw new Error(`Version 0 CID must use dag-pb (code: ${bc}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=pw(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,bc,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=Wn(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 Gi(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=yc(e.subarray(t));return t+=f,u},o=n(),s=bc;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]=ck(e,t),s=r.decode(o);return s._baseCache.set(n,e),s}},ck=(r,e)=>{switch(r[0]){case"Q":{let t=e||fn;return[fn.prefix,t.decode(`${fn.prefix}${r}`)]}case fn.prefix:{let t=e||fn;return[fn.prefix,t.decode(r)]}case Hi.prefix:{let t=e||Hi;return[Hi.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)]}}},lk=(r,e,t)=>{let{prefix:n}=t;if(n!==fn.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},uk=(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},bc=112,dk=18,pw=(r,e,t)=>{let n=Wi(r),o=n+Wi(e),s=new Uint8Array(o+t.byteLength);return qi(r,s,0),qi(e,s,n),s.set(t,o),s},mw=Symbol.for("@ipld/js-cid/CID"),kd={writable:!1,configurable:!1,enumerable:!0},Cd={writable:!1,enumerable:!1,configurable:!1},fk="0.0.0-dev",hk=(r,e)=>{if(r.test(fk))console.warn(e);else throw new Error(e)},pk=`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,12 +14,12 @@ if (cid) {
|
|
|
14
14
|
// Make sure to use cid instead of value
|
|
15
15
|
doSomethingWithCID(cid)
|
|
16
16
|
}
|
|
17
|
-
`});var Sb=Ie(()=>{_b();Rd();Fo();o3();Ec()});var a3,tae,Rb=Ie(()=>{Zw();Jw();eb();tb();rb();Xp();nb();Zp();ob();ib();mb();wb();bb();Eb();Sb();a3={...Hp,...qp,...Wp,...zp,...Gp,...Yp,...Qp,...jp,...Jp,...e3},tae={...s3,...i3}});function Yi(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Td=Ie(()=>{});function kd(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?Yi(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var c3=Ie(()=>{Td()});function Ib(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Ab,l3,mN,Cd,u3=Ie(()=>{Rb();c3();Ab=Ib("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),l3=Ib("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=kd(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),mN={utf8:Ab,"utf-8":Ab,hex:a3.base16,latin1:l3,ascii:l3,binary:l3,...a3},Cd=mN});var Db={};me(Db,{toString:()=>gN});function gN(r,e="utf8"){let t=Cd[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 Tb=Ie(()=>{u3()});var kb={};me(kb,{fromString:()=>yN});function yN(r,e="utf8"){let t=Cd[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?Yi(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var Cb=Ie(()=>{u3();Td()});var Nb={};me(Nb,{concat:()=>wN});function wN(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=kd(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return Yi(t)}var Ob=Ie(()=>{c3();Td()});var f3=ae((pae,Fb)=>{"use strict";var Pb=Cw(),Xi=$w(),{names:vc}=qw(),{toString:Nd}=(Tb(),Ic(Db)),{fromString:bN}=(Cb(),Ic(kb)),{concat:EN}=(Ob(),Ic(Nb)),Qi={};for(let r in vc){let e=r;Qi[vc[e]]=e}Object.freeze(Qi);function xN(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Nd(r,"base16")}function vN(r){return bN(r,"base16")}function _N(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Nd(Pb.encode("base58btc",r)).slice(1)}function SN(r){let e=r instanceof Uint8Array?Nd(r):r;return Pb.decode("z"+e)}function Lb(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=Xi.decode(r);if(!Mb(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(Xi.decode.bytes);let t=Xi.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(Xi.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${Nd(r,"base16")}`);return{code:e,name:Qi[e],length:t,digest:r}}function RN(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=Bb(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=Xi.encode(n),s=Xi.encode(t);return EN([o,s,r],o.length+s.length+r.length)}function Bb(r){let e=r;if(typeof r=="string"){if(vc[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=vc[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Qi[e]===void 0&&!d3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function d3(r){return r>0&&r<16}function Mb(r){return!!(d3(r)||Qi[r])}function Ub(r){Lb(r)}function AN(r){return Ub(r),r.subarray(0,2)}Fb.exports={names:vc,codes:Qi,toHexString:xN,fromHexString:vN,toB58String:_N,fromB58String:SN,decode:Lb,encode:RN,coerceCode:Bb,isAppCode:d3,validate:Ub,prefix:AN,isValidCode:Mb}});var rE=ae(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var g3=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}))}}},Ld=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new g3;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)}};Bd.EventIterator=Ld;Bd.default=Ld});var nE=ae(_c=>{"use strict";Object.defineProperty(_c,"__esModule",{value:!0});var y3=rE();_c.EventIterator=y3.EventIterator;function LN(r,e,t){return new y3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}_c.subscribe=LN;_c.default=y3.EventIterator});var PE=ae((oue,OE)=>{"use strict";OE.exports=NE;var XN=Tf(),Ko=NE.prototype,QN=new Date%1e9;function jN(){return(Math.random()*1e9>>>0)+QN++}function NE(r){r=r||{},this.id=r.id||jN(),this.max=r.max||1/0,this.items=r.items||[],this._lookup={},this.size=this.items.length,this.lastModified=new Date(r.lastModified||new Date);for(var e,t,n=this.items.length;n--;)e=this.items[n],t=new Date(e.expires)-new Date,this._lookup[e.key]=e,t>0?this.expire(e.key,t):t<=0&&this.delete(e.key)}Ko.has=function(r){return r in this._lookup};Ko.get=function(r){if(!this.has(r))return null;var e=this._lookup[r];return e.refresh&&this.expire(r,e.refresh),this.items.splice(this.items.indexOf(e),1),this.items.push(e),e.value};Ko.meta=function(r){if(!this.has(r))return null;var e=this._lookup[r];return"meta"in e?e.meta:null};Ko.set=function(r,e,t){var n=this._lookup[r],o=this._lookup[r]={key:r,value:e};return this.lastModified=new Date,n?(clearTimeout(n.timeout),this.items.splice(this.items.indexOf(n),1,o)):(this.size>=this.max&&this.delete(this.items[0].key),this.items.push(o),this.size++),t&&("ttl"in t&&this.expire(r,t.ttl),"meta"in t&&(o.meta=t.meta),t.refresh&&(o.refresh=t.ttl)),this};Ko.delete=function(r){var e=this._lookup[r];return e?(this.lastModified=new Date,this.items.splice(this.items.indexOf(e),1),clearTimeout(e.timeout),delete this._lookup[r],this.size--,this):!1};Ko.expire=function(r,e){var t=e||0,n=this._lookup[r];if(!n)return this;if(typeof t=="string"&&(t=XN(e)),typeof t!="number")throw new TypeError("Expiration time must be a string or number.");return clearTimeout(n.timeout),n.timeout=setTimeout(this.delete.bind(this,n.key),t),n.expires=Number(new Date)+t,this};Ko.clear=function(){for(var r=this.items.length;r--;)this.delete(this.items[r].key);return this};Ko.toJSON=function(){for(var r=new Array(this.items.length),e,t=r.length;t--;)e=this.items[t],r[t]={key:e.key,meta:e.meta,value:e.value,expires:e.expires,refresh:e.refresh};return{id:this.id,max:isFinite(this.max)?this.max:void 0,lastModified:this.lastModified,items:r}}});var yO={};me(yO,{createHelia:()=>mO,libp2pDefaults:()=>Fd});function lt(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 ax(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 Ms=ax;function cx(r){return r[Symbol.asyncIterator]!=null}function j3(r){return r?.then!=null}function lx(r,e){if(cx(r))return async function*(){for await(let a of r){let c=e(a);j3(c)&&await c,yield a}}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);j3(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var qo=lx;var gf={};me(gf,{base32:()=>it,base32hex:()=>yx,base32hexpad:()=>bx,base32hexpadupper:()=>Ex,base32hexupper:()=>wx,base32pad:()=>mx,base32padupper:()=>gx,base32upper:()=>o4,base32z:()=>xx});var _O=new Uint8Array(0);function Z3(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 gn(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 J3(r){return new TextEncoder().encode(r)}function e4(r){return new TextDecoder().decode(r)}function ux(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(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,E=h.length;w!==E&&h[w]===0;)w++,p++;for(var b=(E-w)*d+1>>>0,S=new Uint8Array(b);w!==E;){for(var R=h[w],A=0,D=b-1;(R!==0||A<y)&&D!==-1;D--,A++)R+=256*S[D]>>>0,S[D]=R%a>>>0,R=R/a>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,w++}for(var _=b-y;_!==b&&S[_]===0;)_++;for(var k=c.repeat(p);_<b;++_)k+=r.charAt(S[_]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var E=(h.length-p)*l+1>>>0,b=new Uint8Array(E);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var R=0,A=E-1;(S!==0||R<w)&&A!==-1;A--,R++)S+=a*b[A]>>>0,b[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=R,p++}if(h[p]!==" "){for(var D=E-w;D!==E&&b[D]===0;)D++;for(var _=new Uint8Array(y+(E-D)),k=y;D!==E;)_[k++]=b[D++];return _}}}function m(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:m}}var dx=ux,fx=dx,r4=fx;var ff=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 n4(this,e)}},pf=class{decoders;constructor(e){this.decoders=e}or(e){return n4(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 n4(r,e){return new pf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var mf=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 ff(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 Us({name:r,prefix:e,encode:t,decode:n}){return new mf(r,e,t,n)}function Xn({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=r4(t,r);return Us({prefix:e,name:r,encode:n,decode:s=>gn(o(s))})}function hx(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 px(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 We({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Us({prefix:e,name:r,encode(o){return px(o,n,t)},decode(o){return hx(o,n,t,r)}})}var it=We({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),o4=We({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),mx=We({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),gx=We({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),yx=We({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),wx=We({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),bx=We({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ex=We({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),xx=We({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var yf={};me(yf,{base58btc:()=>ce,base58flickr:()=>vx});var ce=Xn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),vx=Xn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var ir={};me(ir,{Digest:()=>Wo,create:()=>Dr,decode:()=>Tr,equals:()=>bf});var _x=a4,s4=128,Sx=127,Rx=~Sx,Ax=Math.pow(2,31);function a4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=Ax;)e[t++]=r&255|s4,r/=128;for(;r&Rx;)e[t++]=r&255|s4,r>>>=7;return e[t]=r|0,a4.bytes=t-n+1,e}var Ix=wf,Dx=128,i4=127;function wf(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw wf.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&i4)<<o:(i&i4)*Math.pow(2,o),o+=7}while(i>=Dx);return wf.bytes=s-n,t}var Tx=Math.pow(2,7),kx=Math.pow(2,14),Cx=Math.pow(2,21),Nx=Math.pow(2,28),Ox=Math.pow(2,35),Px=Math.pow(2,42),Lx=Math.pow(2,49),Bx=Math.pow(2,56),Mx=Math.pow(2,63),Ux=function(r){return r<Tx?1:r<kx?2:r<Cx?3:r<Nx?4:r<Ox?5:r<Px?6:r<Lx?7:r<Bx?8:r<Mx?9:10},Fx={encode:_x,decode:Ix,encodingLength:Ux},Vx=Fx,na=Vx;function oa(r,e=0){return[na.decode(r,e),na.decode.bytes]}function Fs(r,e,t=0){return na.encode(r,e,t),e}function Vs(r){return na.encodingLength(r)}function Dr(r,e){let t=e.byteLength,n=Vs(r),o=n+Vs(t),s=new Uint8Array(o+t);return Fs(r,s,0),Fs(t,s,n),s.set(e,o),new Wo(r,t,e,s)}function Tr(r){let e=gn(r),[t,n]=oa(e),[o,s]=oa(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new Wo(t,o,i,e)}function bf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Z3(r.bytes,t.bytes)}}var Wo=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function c4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return $x(t,Ef(r),e??ce.encoder);default:return Hx(t,Ef(r),e??it.encoder)}}var l4=new WeakMap;function Ef(r){let e=l4.get(r);if(e==null){let t=new Map;return l4.set(r,t),t}return e}var oe=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!==sa)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=Dr(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&&bf(e.multihash,n.multihash)}toString(e){return c4(this,e)}toJSON(){return{"/":c4(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??u4(n,o,s.bytes))}else if(t[Wx]===!0){let{version:n,multihash:o,code:s}=t,i=Tr(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!==sa)throw new Error(`Version 0 CID must use dag-pb (code: ${sa}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=u4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,sa,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=gn(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 Wo(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=oa(e.subarray(t));return t+=f,u},o=n(),s=sa;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]=Kx(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 Ef(s).set(n,e),s}};function Kx(r,e){switch(r[0]){case"Q":{let t=e??ce;return[ce.prefix,t.decode(`${ce.prefix}${r}`)]}case ce.prefix:{let t=e??ce;return[ce.prefix,t.decode(r)]}case it.prefix:{let t=e??it;return[it.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 $x(r,e,t){let{prefix:n}=t;if(n!==ce.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 Hx(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 sa=112,qx=18;function u4(r,e,t){let n=Vs(r),o=n+Vs(e),s=new Uint8Array(o+t.byteLength);return Fs(r,s,0),Fs(e,s,n),s.set(t,o),s}var Wx=Symbol.for("@ipld/js-cid/CID");var xf=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 jr(r){let{name:e,metrics:t}=r,n;return t!=null?n=new xf({name:e,metrics:t}):n=new Map,n}var d4=Symbol.for("@libp2p/connection");var Zr=Symbol.for("@libp2p/content-routing");var zo=Symbol.for("@libp2p/peer-discovery");var vf=Symbol.for("@libp2p/peer-id");function Ks(r){return r!=null&&!!r[vf]}var Jr=Symbol.for("@libp2p/peer-routing");var f4="keep-alive";var en=Symbol.for("@libp2p/transport");var Qn;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Qn||(Qn={}));var kr=class r extends Error{code;type;constructor(e="The operation was aborted"){super(e),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??{}}},Tc=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 ge=(r,...e)=>{try{[...e]}catch{}};var Ce=class extends EventTarget{#e=new Map;constructor(){super(),ge(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 mt(e,t))}},_f=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},mt=globalThis.CustomEvent??_f;function kc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function jn(...r){let e=[];for(let t of r)kc(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 Zn(...r){let e=[];for(let t of r)kc(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}var If={};me(If,{sha256:()=>Re,sha512:()=>Af});function Rf({name:r,code:e,encode:t}){return new Sf(r,e,t)}var Sf=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?Dr(this.code,t):t.then(n=>Dr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function m4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Re=Rf({name:"sha2-256",code:18,encode:m4("SHA-256")}),Af=Rf({name:"sha2-512",code:19,encode:m4("SHA-512")});var s8=ke(T4(),1);var Gt=ke(kf(),1);var Nf={};me(Nf,{base64:()=>ar,base64pad:()=>yv,base64url:()=>Cf,base64urlpad:()=>wv});var ar=We({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),yv=We({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Cf=We({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),wv=We({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});Gt.default.formatters.b=r=>r==null?"undefined":ce.baseEncode(r);Gt.default.formatters.t=r=>r==null?"undefined":it.baseEncode(r);Gt.default.formatters.m=r=>r==null?"undefined":ar.baseEncode(r);Gt.default.formatters.p=r=>r==null?"undefined":r.toString();Gt.default.formatters.c=r=>r==null?"undefined":r.toString();Gt.default.formatters.k=r=>r==null?"undefined":r.toString();Gt.default.formatters.a=r=>r==null?"undefined":r.toString();function bv(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 Jn(){return{forComponent(r){return Nt(r)}}}function Nt(r){let e=bv(`${r}:trace`);return Gt.default.enabled(`${r}:trace`)&&Gt.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,Gt.default)(`${r}:trace`)),Object.assign((0,Gt.default)(r),{error:(0,Gt.default)(`${r}:error`),trace:e})}function j(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 Xo=class{_refCounter;cid;priority;wantType;constructor(e,t,n){this._refCounter=1,this.cid=e,this.priority=t??1,this.wantType=n}inc(){this._refCounter+=1}dec(){this._refCounter=Math.max(0,this._refCounter-1)}hasRefs(){return this._refCounter>0}get[Symbol.toStringTag](){return`WantlistEntry <key: ${this.cid.toString(ce)}, priority: ${this.priority}, refs: ${this._refCounter}>`}equals(e){return this._refCounter===e._refCounter&&this.cid.equals(e.cid)&&this.priority===e.priority&&this.wantType===e.wantType}};var eo=class{entry;cancel;sendDontHave;constructor(e,t,n,o,s){this.entry=new Xo(e,t,n),this.cancel=!!o,this.sendDontHave=!!s}get cid(){return this.entry.cid}set cid(e){this.entry.cid=e}get priority(){return this.entry.priority}set priority(e){this.entry.priority=e}get wantType(){return this.entry.wantType}set wantType(e){this.entry.wantType=e}get[Symbol.toStringTag](){return`BitswapMessageEntry ${this.cid.toString(ce)} <cancel: ${this.cancel}, priority: ${this.priority}>`}equals(e){return this.cancel===e.cancel&&this.sendDontHave===e.sendDontHave&&this.wantType===e.wantType&&this.entry.equals(e.entry)}};var cr=(r,e)=>{let t=["bitswap"];return e!=null&&t.push(e),r!=null&&t.push(`${r.toString().slice(0,8)}`),Nt(t.join(":"))};var Oc=(r,e)=>{if(r.size!==e.size)return!1;for(let[t,n]of r){let o=e.get(t);if(o===void 0||n instanceof Uint8Array&&o instanceof Uint8Array&&!j(n,o)||n instanceof eo&&o instanceof eo&&!n.equals(o))return!1}return!0};var ia=ke($4(),1);function Ov(r){let e=new Uint8Array(r.reduce((n,o)=>n+ia.default.encodingLength(o),0)),t=0;for(let n of r)e=ia.encode(n,e,t),t+=ia.default.encodingLength(n);return e}var H4=Ov;function tn(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Ze(r=0){return globalThis.Buffer?.alloc!=null?tn(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function qe(r=0){return globalThis.Buffer?.allocUnsafe!=null?tn(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var Pv=Math.pow(2,7),Lv=Math.pow(2,14),Bv=Math.pow(2,21),Lf=Math.pow(2,28),Bf=Math.pow(2,35),Mf=Math.pow(2,42),Uf=Math.pow(2,49),De=128,At=127;function Fe(r){if(r<Pv)return 1;if(r<Lv)return 2;if(r<Bv)return 3;if(r<Lf)return 4;if(r<Bf)return 5;if(r<Mf)return 6;if(r<Uf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Ff(r,e,t=0){switch(Fe(r)){case 8:e[t++]=r&255|De,r/=128;case 7:e[t++]=r&255|De,r/=128;case 6:e[t++]=r&255|De,r/=128;case 5:e[t++]=r&255|De,r/=128;case 4:e[t++]=r&255|De,r>>>=7;case 3:e[t++]=r&255|De,r>>>=7;case 2:e[t++]=r&255|De,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function Mv(r,e,t=0){switch(Fe(r)){case 8:e.set(t++,r&255|De),r/=128;case 7:e.set(t++,r&255|De),r/=128;case 6:e.set(t++,r&255|De),r/=128;case 5:e.set(t++,r&255|De),r/=128;case 4:e.set(t++,r&255|De),r>>>=7;case 3:e.set(t++,r&255|De),r>>>=7;case 2:e.set(t++,r&255|De),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Vf(r,e){let t=r[e],n=0;if(n+=t&At,t<De||(t=r[e+1],n+=(t&At)<<7,t<De)||(t=r[e+2],n+=(t&At)<<14,t<De)||(t=r[e+3],n+=(t&At)<<21,t<De)||(t=r[e+4],n+=(t&At)*Lf,t<De)||(t=r[e+5],n+=(t&At)*Bf,t<De)||(t=r[e+6],n+=(t&At)*Mf,t<De)||(t=r[e+7],n+=(t&At)*Uf,t<De))return n;throw new RangeError("Could not decode varint")}function Uv(r,e){let t=r.get(e),n=0;if(n+=t&At,t<De||(t=r.get(e+1),n+=(t&At)<<7,t<De)||(t=r.get(e+2),n+=(t&At)<<14,t<De)||(t=r.get(e+3),n+=(t&At)<<21,t<De)||(t=r.get(e+4),n+=(t&At)*Lf,t<De)||(t=r.get(e+5),n+=(t&At)*Bf,t<De)||(t=r.get(e+6),n+=(t&At)*Mf,t<De)||(t=r.get(e+7),n+=(t&At)*Uf,t<De))return n;throw new RangeError("Could not decode varint")}function ze(r,e,t=0){return e==null&&(e=qe(Fe(r))),e instanceof Uint8Array?Ff(r,e,t):Mv(r,e,t)}function Yt(r,e=0){return r instanceof Uint8Array?Vf(r,e):Uv(r,e)}var Kf=new Float32Array([-0]),to=new Uint8Array(Kf.buffer);function q4(r,e,t){Kf[0]=r,e[t]=to[0],e[t+1]=to[1],e[t+2]=to[2],e[t+3]=to[3]}function W4(r,e){return to[0]=r[e],to[1]=r[e+1],to[2]=r[e+2],to[3]=r[e+3],Kf[0]}var $f=new Float64Array([-0]),It=new Uint8Array($f.buffer);function z4(r,e,t){$f[0]=r,e[t]=It[0],e[t+1]=It[1],e[t+2]=It[2],e[t+3]=It[3],e[t+4]=It[4],e[t+5]=It[5],e[t+6]=It[6],e[t+7]=It[7]}function G4(r,e){return It[0]=r[e],It[1]=r[e+1],It[2]=r[e+2],It[3]=r[e+3],It[4]=r[e+4],It[5]=r[e+5],It[6]=r[e+6],It[7]=r[e+7],$f[0]}var Fv=BigInt(Number.MAX_SAFE_INTEGER),Vv=BigInt(Number.MIN_SAFE_INTEGER),Xt=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 Qo;if(e<Fv&&e>Vv)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>Y4&&(o=0n,++n>Y4&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return Qo;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):Qo}},Qo=new Xt(0,0);Qo.toBigInt=function(){return 0n};Qo.zzEncode=Qo.zzDecode=function(){return this};Qo.length=function(){return 1};var Y4=4294967296n;function X4(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 Q4(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 Hf(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 Cr(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function Pc(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var qf=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,Cr(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 Cr(this,4);return Pc(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Cr(this,4);return Pc(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Cr(this,4);let e=W4(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Cr(this,4);let e=G4(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 Cr(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return Q4(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Cr(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Cr(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 Xt(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 Cr(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 Cr(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 Cr(this,8);let e=Pc(this.buf,this.pos+=4),t=Pc(this.buf,this.pos+=4);return new Xt(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=Vf(this.buf,this.pos);return this.pos+=Fe(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 Wf(r){return new qf(r instanceof Uint8Array?r:r.subarray())}function J(r,e,t){let n=Wf(r);return e.decode(n,void 0,t)}var zf={};me(zf,{base10:()=>Kv});var Kv=Xn({prefix:"9",name:"base10",alphabet:"0123456789"});var Gf={};me(Gf,{base16:()=>$v,base16upper:()=>Hv});var $v=We({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Hv=We({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Yf={};me(Yf,{base2:()=>qv});var qv=We({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Xf={};me(Xf,{base256emoji:()=>Xv});var Z4=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}"),Wv=Z4.reduce((r,e,t)=>(r[t]=e,r),[]),zv=Z4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Gv(r){return r.reduce((e,t)=>(e+=Wv[t],e),"")}function Yv(r){let e=[];for(let t of r){let n=zv[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Xv=Us({prefix:"\u{1F680}",name:"base256emoji",encode:Gv,decode:Yv});var Qf={};me(Qf,{base36:()=>ro,base36upper:()=>Qv});var ro=Xn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Qv=Xn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var jf={};me(jf,{base8:()=>jv});var jv=We({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Zf={};me(Zf,{identity:()=>Zv});var Zv=Us({prefix:"\0",name:"identity",encode:r=>e4(r),decode:r=>J3(r)});var WP=new TextEncoder,zP=new TextDecoder;var J4=512;var Lc=85;var eh={};me(eh,{identity:()=>lr});var t8=0,Jv="identity",r8=gn;function e_(r){return Dr(t8,r8(r))}var lr={code:t8,name:Jv,encode:r8,digest:e_};var ur={...Zf,...Yf,...jf,...zf,...Gf,...gf,...Qf,...yf,...Nf,...Xf},oL={...If,...eh};function o8(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var n8=o8("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),th=o8("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=qe(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),t_={utf8:n8,"utf-8":n8,hex:ur.base16,latin1:th,ascii:th,binary:th,...ur},Bc=t_;function L(r,e="utf8"){let t=Bc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?tn(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}function rh(r){let e=r??8192,t=e>>>1,n,o=e;return function(i){if(i<1||i>t)return qe(i);o+i>e&&(n=qe(e),o=0);let a=n.subarray(o,o+=i);return o&7&&(o=(o|7)+1),a}}var jo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function nh(){}var sh=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},r_=rh();function n_(r){return globalThis.Buffer!=null?qe(r):r_(r)}var ca=class{len;head;tail;states;constructor(){this.len=0,this.head=new jo(nh,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new jo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new ih((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(Mc,10,Xt.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Xt.fromBigInt(e);return this._push(Mc,t.length(),t)}uint64Number(e){return this._push(Ff,Fe(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=Xt.fromBigInt(e).zzEncode();return this._push(Mc,t.length(),t)}sint64Number(e){let t=Xt.fromNumber(e).zzEncode();return this._push(Mc,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(oh,1,e?1:0)}fixed32(e){return this._push(aa,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Xt.fromBigInt(e);return this._push(aa,4,t.lo)._push(aa,4,t.hi)}fixed64Number(e){let t=Xt.fromNumber(e);return this._push(aa,4,t.lo)._push(aa,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(q4,4,e)}double(e){return this._push(z4,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(oh,1,0):this.uint32(t)._push(s_,t,e)}string(e){let t=X4(e);return t!==0?this.uint32(t)._push(Hf,t,e):this._push(oh,1,0)}fork(){return this.states=new sh(this),this.head=this.tail=new jo(nh,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 jo(nh,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=n_(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function oh(r,e,t){e[t]=r&255}function o_(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var ih=class extends jo{next;constructor(e,t){super(o_,e,t),this.next=void 0}};function Mc(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 aa(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 s_(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(ca.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(i_,e,r),this},ca.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(a_,e,r),this});function i_(r,e,t){e.set(r,t)}function a_(r,e,t){r.length<40?Hf(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(L(r),t)}function ah(){return new ca}function ee(r,e){let t=ah();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Ws;(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"})(Ws||(Ws={}));function Uc(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function Ve(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 Uc("enum",Ws.VARINT,t,n)}function te(r,e){return Uc("message",Ws.LENGTH_DELIMITED,r,e)}var la=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var Bt;(function(r){let e;(function(a){let c;(function(f){f.Block="Block",f.Have="Have"})(c=a.WantType||(a.WantType={}));let l;(function(f){f[f.Block=0]="Block",f[f.Have=1]="Have"})(l||(l={})),function(f){f.codec=()=>Ve(l)}(c=a.WantType||(a.WantType={}));let d;(function(f){let m;f.codec=()=>(m==null&&(m=te((h,p,y={})=>{y.lengthDelimited!==!1&&p.fork(),h.block!=null&&h.block.byteLength>0&&(p.uint32(10),p.bytes(h.block)),h.priority!=null&&h.priority!==0&&(p.uint32(16),p.int32(h.priority)),h.cancel!=null&&h.cancel!==!1&&(p.uint32(24),p.bool(h.cancel)),h.wantType!=null&&l[h.wantType]!==0&&(p.uint32(32),r.Wantlist.WantType.codec().encode(h.wantType,p)),h.sendDontHave!=null&&h.sendDontHave!==!1&&(p.uint32(40),p.bool(h.sendDontHave)),y.lengthDelimited!==!1&&p.ldelim()},(h,p)=>{let y={block:new Uint8Array(0),priority:0,cancel:!1,wantType:c.Block,sendDontHave:!1},w=p==null?h.len:h.pos+p;for(;h.pos<w;){let E=h.uint32();switch(E>>>3){case 1:y.block=h.bytes();break;case 2:y.priority=h.int32();break;case 3:y.cancel=h.bool();break;case 4:y.wantType=r.Wantlist.WantType.codec().decode(h);break;case 5:y.sendDontHave=h.bool();break;default:h.skipType(E&7);break}}return y})),m),f.encode=h=>ee(h,f.codec()),f.decode=h=>J(h,f.codec())})(d=a.Entry||(a.Entry={}));let u;a.codec=()=>(u==null&&(u=te((f,m,h={})=>{if(h.lengthDelimited!==!1&&m.fork(),f.entries!=null)for(let p of f.entries)m.uint32(10),r.Wantlist.Entry.codec().encode(p,m);f.full!=null&&f.full!==!1&&(m.uint32(16),m.bool(f.full)),h.lengthDelimited!==!1&&m.ldelim()},(f,m)=>{let h={entries:[],full:!1},p=m==null?f.len:f.pos+m;for(;f.pos<p;){let y=f.uint32();switch(y>>>3){case 1:h.entries.push(r.Wantlist.Entry.codec().decode(f,f.uint32()));break;case 2:h.full=f.bool();break;default:f.skipType(y&7);break}}return h})),u),a.encode=f=>ee(f,a.codec()),a.decode=f=>J(f,a.codec())})(e=r.Wantlist||(r.Wantlist={}));let t;(function(a){let c;a.codec=()=>(c==null&&(c=te((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.prefix!=null&&l.prefix.byteLength>0&&(d.uint32(10),d.bytes(l.prefix)),l.data!=null&&l.data.byteLength>0&&(d.uint32(18),d.bytes(l.data)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={prefix:new Uint8Array(0),data:new Uint8Array(0)},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.prefix=l.bytes();break;case 2:u.data=l.bytes();break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>ee(l,a.codec()),a.decode=l=>J(l,a.codec())})(t=r.Block||(r.Block={}));let n;(function(a){a.Have="Have",a.DontHave="DontHave"})(n=r.BlockPresenceType||(r.BlockPresenceType={}));let o;(function(a){a[a.Have=0]="Have",a[a.DontHave=1]="DontHave"})(o||(o={})),function(a){a.codec=()=>Ve(o)}(n=r.BlockPresenceType||(r.BlockPresenceType={}));let s;(function(a){let c;a.codec=()=>(c==null&&(c=te((l,d,u={})=>{u.lengthDelimited!==!1&&d.fork(),l.cid!=null&&l.cid.byteLength>0&&(d.uint32(10),d.bytes(l.cid)),l.type!=null&&o[l.type]!==0&&(d.uint32(16),r.BlockPresenceType.codec().encode(l.type,d)),u.lengthDelimited!==!1&&d.ldelim()},(l,d)=>{let u={cid:new Uint8Array(0),type:n.Have},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>3){case 1:u.cid=l.bytes();break;case 2:u.type=r.BlockPresenceType.codec().decode(l);break;default:l.skipType(m&7);break}}return u})),c),a.encode=l=>ee(l,a.codec()),a.decode=l=>J(l,a.codec())})(s=r.BlockPresence||(r.BlockPresence={}));let i;r.codec=()=>(i==null&&(i=te((a,c,l={})=>{if(l.lengthDelimited!==!1&&c.fork(),a.wantlist!=null&&(c.uint32(10),r.Wantlist.codec().encode(a.wantlist,c)),a.blocks!=null)for(let d of a.blocks)c.uint32(18),c.bytes(d);if(a.payload!=null)for(let d of a.payload)c.uint32(26),r.Block.codec().encode(d,c);if(a.blockPresences!=null)for(let d of a.blockPresences)c.uint32(34),r.BlockPresence.codec().encode(d,c);a.pendingBytes!=null&&a.pendingBytes!==0&&(c.uint32(40),c.int32(a.pendingBytes)),l.lengthDelimited!==!1&&c.ldelim()},(a,c)=>{let l={blocks:[],payload:[],blockPresences:[],pendingBytes:0},d=c==null?a.len:a.pos+c;for(;a.pos<d;){let u=a.uint32();switch(u>>>3){case 1:l.wantlist=r.Wantlist.codec().decode(a,a.uint32());break;case 2:l.blocks.push(a.bytes());break;case 3:l.payload.push(r.Block.codec().decode(a,a.uint32()));break;case 4:l.blockPresences.push(r.BlockPresence.codec().decode(a,a.uint32()));break;case 5:l.pendingBytes=a.int32();break;default:a.skipType(u&7);break}}return l})),i),r.encode=a=>ee(a,r.codec()),r.decode=a=>J(a,r.codec())})(Bt||(Bt={}));var Dt=class r{static Entry=eo;static WantType={Block:Bt.Wantlist.WantType.Block,Have:Bt.Wantlist.WantType.Have};static BlockPresenceType={Have:Bt.BlockPresenceType.Have,DontHave:Bt.BlockPresenceType.DontHave};static deserialize=async(e,t)=>{let n=Bt.decode(e),o=n.wantlist?.full===!0,s=new r(o);return n.wantlist?.entries.forEach(i=>{if(i.block==null)return;let a=oe.decode(i.block);s.addEntry(a,i.priority??0,i.wantType,!!i.cancel,!!i.sendDontHave)}),n.blockPresences.forEach(i=>{if(i.cid==null)return;let a=oe.decode(i.cid);i.type===r.BlockPresenceType.Have?s.addHave(a):s.addDontHave(a)}),n.blocks.length>0?(await Promise.all(n.blocks.map(async i=>{let a=await Re.digest(i),c=oe.createV0(a);s.addBlock(c,i)})),s):(n.payload.length>0&&(await Promise.all(n.payload.map(async i=>{if(i.prefix==null||i.data==null)return;let a=(0,s8.default)(i.prefix),c=a[0],l=a[1],d=a[2],u=d===Re.code?Re:await t?.getHasher(d);if(u==null)throw new g("Unknown hash algorithm","ERR_UNKNOWN_HASH_ALG");let f=await u.digest(i.data),m=oe.create(c,l,f);s.addBlock(m,i.data)})),s.setPendingBytes(n.pendingBytes)),s)};static blockPresenceSize=e=>e.bytes.length+1;full;wantlist;blocks;blockPresences;pendingBytes;constructor(e){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}get empty(){return this.blocks.size===0&&this.wantlist.size===0&&this.blockPresences.size===0}addEntry(e,t,n,o,s){n==null&&(n=r.WantType.Block);let i=e.toString(ce),a=this.wantlist.get(i);a!=null?(a.wantType===n&&(a.priority=t),o===!0&&(a.cancel=!!o),s===!0&&(a.sendDontHave=!!s),n===r.WantType.Block&&a.wantType===r.WantType.Have&&(a.wantType=n)):this.wantlist.set(i,new eo(e,t,n,o,s))}addBlock(e,t){let n=e.toString(ce);this.blocks.set(n,t)}addHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.Have)}addDontHave(e){let t=e.toString(ce);this.blockPresences.has(t)||this.blockPresences.set(t,r.BlockPresenceType.DontHave)}cancel(e){let t=e.toString(ce);this.wantlist.delete(t),this.addEntry(e,0,r.WantType.Block,!0,!1)}setPendingBytes(e){this.pendingBytes=e}serializeToBitswap100(){return Bt.encode({wantlist:{entries:Array.from(this.wantlist.values()).map(e=>({block:e.cid.bytes,priority:Number(e.priority),cancel:!!e.cancel,wantType:Bt.Wantlist.WantType.Block,sendDontHave:!1})),full:!!this.full},blocks:Array.from(this.blocks.values())})}serializeToBitswap110(){let e={wantlist:{entries:Array.from(this.wantlist.values()).map(t=>({block:t.cid.bytes,priority:Number(t.priority),wantType:t.wantType,cancel:!!t.cancel,sendDontHave:!!t.sendDontHave})),full:!!this.full},blockPresences:[],payload:[],pendingBytes:this.pendingBytes,blocks:[]};for(let[t,n]of this.blocks.entries()){let o=oe.parse(t),s=o.version,i=o.code,a=o.multihash.code,c=o.multihash.digest.length,l=H4([s,i,a,c]);e.payload.push({prefix:l,data:n})}for(let[t,n]of this.blockPresences)e.blockPresences.push({cid:oe.parse(t).bytes,type:n});return this.pendingBytes>0&&(e.pendingBytes=this.pendingBytes),Bt.encode(e)}equals(e){return!(this.full!==e.full||this.pendingBytes!==e.pendingBytes||!Oc(this.wantlist,e.wantlist)||!Oc(this.blocks,e.blocks)||!Oc(this.blockPresences,e.blockPresences))}get[Symbol.toStringTag](){let e=Array.from(this.wantlist.keys()),t=Array.from(this.blocks.keys());return`BitswapMessage <full: ${this.full}, list: ${e}, blocks: ${t}>`}};var i8={Block:Bt.Wantlist.WantType.Block,Have:Bt.Wantlist.WantType.Have},c_=(r,e)=>Array.prototype.slice.call(e,0).sort((t,n)=>{let o=r(t),s=r(n);return o<s?-1:o>s?1:0}),no=class{static Entry=Xo;set;_stats;constructor(e,t){this.set=t!=null?jr({name:"ipfs_bitswap_wantlist",metrics:t.metrics}):new Map,this._stats=e}get length(){return this.set.size}add(e,t,n){let o=e.toString(ce),s=this.set.get(o);s!=null?(s.inc(),s.priority=t,s.wantType===i8.Have&&n===i8.Block&&(s.wantType=n)):(this.set.set(o,new Xo(e,t,n)),this._stats!=null&&this._stats.push(void 0,"wantListSize",1))}remove(e){let t=e.toString(ce),n=this.set.get(t);n!=null&&(n.dec(),!n.hasRefs()&&(this.set.delete(t),this._stats!=null&&this._stats.push(void 0,"wantListSize",-1)))}removeForce(e){this.set.has(e)&&this.set.delete(e)}forEach(e){this.set.forEach(e)}entries(){return this.set.entries()}sortedEntries(){return new Map(c_(e=>e[1].key,Array.from(this.set.entries())))}contains(e){let t=e.toString(ce);return this.set.has(t)}get(e){let t=e.toString(ce);return this.set.get(t)}};var Fc=class{partner;wantlist;exchangeCount;accounting;lastExchange;constructor(e){this.partner=e,this.wantlist=new no,this.exchangeCount=0,this.accounting={bytesSent:0,bytesRecv:0}}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.accounting.bytesRecv+=e}wants(e,t,n){this.wantlist.add(e,t,n)}cancelWant(e){this.wantlist.remove(e)}wantlistContains(e){return this.wantlist.get(e)}debtRatio(){return this.accounting.bytesSent/(this.accounting.bytesRecv+1)}};var ua=class extends Map{_cmp;_keys;constructor(e,t){super(),this._cmp=t??this._defaultSort,this._keys=[];for(let[n,o]of e??[])this.set(n,o)}update(e){if(e<0||e>=this._keys.length)return;let t=this._keys[e];this._keys.splice(e,1);let n=this._find(t);this._keys.splice(n,0,t)}set(e,t){if(this.has(e)){let o=this.indexOf(e);this._keys.splice(o,1)}super.set(e,t);let n=this._find(e);return this._keys.splice(n,0,e),this}clear(){super.clear(),this._keys=[]}delete(e){if(!this.has(e))return!1;let t=this.indexOf(e);return this._keys.splice(t,1),super.delete(e)}indexOf(e){if(!this.has(e))return-1;let t=this._find(e);if(this._keys[t]===e)return t;for(let n=1;n<this._keys.length;n++){if(this._keys[t+n]===e)return t+n;if(this._keys[t-n]===e)return t-n}return-1}_find(e){let t=0,n=this._keys.length;for(;t<n;){let o=t+n>>>1,s=this._kCmp(this._keys[o],e);if(s<0)t=o+1;else if(s>0)n=o;else return o}return t}*keys(){for(let e of this._keys)yield e}*values(){for(let e of this._keys)yield this.get(e)}*entries(){for(let e of this._keys)yield[e,this.get(e)]}*[Symbol.iterator](){yield*this.entries()}forEach(e,t=this){if(e!=null)for(let n of this._keys){let o=this.get(n);if(o==null)throw new Error("Value cannot be undefined");e.apply(t,[[n,o]])}}_defaultSort(e,t){return e[0]<t[0]?-1:t[0]<e[0]?1:0}_kCmp(e,t){return this._cmp([e,this.get(e)],[t,this.get(t)])}};var l_={hasNewInfo(){return!1},merge(){}},Vc=class{_taskMerger;_byPeer;constructor(e=l_){this._taskMerger=e,this._byPeer=new ua([],Kc.compare)}pushTasks(e,t){let n=this._byPeer.get(e.toString());n==null&&(n=new Kc(e,this._taskMerger)),n.pushTasks(t),this._byPeer.set(e.toString(),n)}popTasks(e){let t=this._head();if(t===void 0)return{tasks:[],pendingSize:0};let{tasks:n,pendingSize:o}=t.popTasks(e);if(n.length===0)return{tasks:n,pendingSize:o};let s=t.peerId;return t.isIdle()?this._byPeer.delete(s.toString()):this._byPeer.update(0),{peerId:s,tasks:n,pendingSize:o}}_head(){if(this._byPeer.size!==0)for(let[,e]of this._byPeer)return e}remove(e,t){this._byPeer.get(t.toString())?.remove(e)}tasksDone(e,t){let n=this._byPeer.get(e.toString());if(n==null)return;let o=this._byPeer.indexOf(e.toString());for(let s of t)n.taskDone(s);this._byPeer.update(o)}},Kc=class{peerId;_taskMerger;_activeTotalSize;_pending;_active;constructor(e,t){this.peerId=e,this._taskMerger=t,this._activeTotalSize=0,this._pending=new ch,this._active=new Set}pushTasks(e){for(let t of e)this._pushTask(t)}_pushTask(e){if(!this._taskHasMoreInfoThanActiveTasks(e))return;let t=this._pending.get(e.topic);if(t!=null){e.priority>t.priority&&this._pending.updatePriority(e.topic,e.priority),this._taskMerger.merge(e,t);return}this._pending.add(e)}_taskHasMoreInfoThanActiveTasks(e){let t=[];for(let n of this._active)n.topic===e.topic&&t.push(n);return t.length===0?!0:this._taskMerger.hasNewInfo(e,t)}popTasks(e){let t=0,n=[],o=this._pending.tasks();for(let s=0;s<o.length&&t<e;s++){let i=o[s];n.push(i),t+=i.size,this._pending.delete(i.topic),this._activeTotalSize+=i.size,this._active.add(i)}return{tasks:n,pendingSize:this._pending.totalSize}}taskDone(e){this._active.has(e)&&(this._activeTotalSize-=e.size,this._active.delete(e))}remove(e){this._pending.delete(e)}isIdle(){return this._pending.length===0&&this._active.size===0}static compare(e,t){return e[1]._pending.length===0?1:t[1]._pending.length===0?-1:e[1]._activeTotalSize===t[1]._activeTotalSize?t[1]._pending.length-e[1]._pending.length:e[1]._activeTotalSize-t[1]._activeTotalSize}},ch=class{_tasks;constructor(){this._tasks=new ua([],this._compare)}get length(){return this._tasks.size}get totalSize(){return[...this._tasks.values()].reduce((e,t)=>e+t.task.size,0)}get(e){return this._tasks?.get(e)?.task}add(e){this._tasks.set(e.topic,{created:Date.now(),task:e})}delete(e){this._tasks.delete(e)}tasks(){return[...this._tasks.values()].map(e=>e.task)}updatePriority(e,t){let n=this._tasks.get(e);if(n==null)return;let o=this._tasks.indexOf(e);n.task.priority=t,this._tasks.update(o)}_compare(e,t){return e[1].task.priority===t[1].task.priority?e[1].created-t[1].created:t[1].task.priority-e[1].task.priority}};var a8={hasNewInfo(r,e){let t=!1,n=!1;for(let o of e)o.data.haveBlock&&(t=!0),o.data.isWantBlock&&(n=!0);return!!(!n&&r.data.isWantBlock||!t&&r.data.haveBlock)},merge(r,e){let t=r.data,n=e.data;!n.haveBlock&&t.haveBlock&&(n.haveBlock=t.haveBlock,n.blockSize=t.blockSize),!n.isWantBlock&&t.isWantBlock&&(n.isWantBlock=!0,(!n.haveBlock||t.haveBlock)&&(n.haveBlock=t.haveBlock,e.size=r.size)),n.isWantBlock&&n.haveBlock&&(e.size=n.blockSize)}};var c8=Dt.WantType,u_=16*1024,d_=1024,$c=class{_log;blockstore;network;_stats;_opts;ledgerMap;_running;_requestQueue;constructor(e,t,n,o,s,i={}){this._log=cr(e,"engine"),this.blockstore=t,this.network=n,this._stats=o,this._opts=this._processOpts(i),this.ledgerMap=jr({name:"ipfs_bitswap_ledger_map",metrics:s.metrics}),this._running=!1,this._requestQueue=new Vc(a8)}_processOpts(e){return{maxSizeReplaceHasWithBlock:d_,targetMessageSize:u_,...e}}_scheduleProcessTasks(){setTimeout(()=>{this._processTasks().catch(e=>{this._log.error("error processing stats",e)})})}async _processTasks(){if(!this._running)return;let{peerId:e,tasks:t,pendingSize:n}=this._requestQueue.popTasks(this._opts.targetMessageSize);if(t.length===0)return;let o=new Dt(!1);o.setPendingBytes(n);let s=[],i=new Map;for(let c of t){let l=oe.parse(c.topic);c.data.haveBlock?c.data.isWantBlock?(s.push(l),i.set(c.topic,c.data)):o.addHave(l):o.addDontHave(l)}let a=await this._getBlocks(s);for(let[c,l]of i){let d=oe.parse(c),u=a.get(c);u!=null?o.addBlock(d,u):l.sendDontHave&&o.addDontHave(d)}if(o.empty){e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks();return}try{e!=null&&await this.network.sendMessage(e,o);for(let[c,l]of a.entries())e!=null&&this.messageSent(e,oe.parse(c),l)}catch(c){this._log.error(c)}e!=null&&this._requestQueue.tasksDone(e,t),this._scheduleProcessTasks()}wantlistForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);return n!=null?n.wantlist.sortedEntries():new Map}ledgerForPeer(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return{peer:n.partner,value:n.debtRatio(),sent:n.accounting.bytesSent,recv:n.accounting.bytesRecv,exchanged:n.exchangeCount}}peers(){return Array.from(this.ledgerMap.values()).map(e=>e.partner)}receivedBlocks(e){if(e.length!==0){for(let t of this.ledgerMap.values())for(let{cid:n,block:o}of e){let s=t.wantlistContains(n);if(s==null)continue;let i=o.length,a=this._sendAsBlock(s.wantType,i),c=i;a||(c=Dt.blockPresenceSize(s.cid)),this._requestQueue.pushTasks(t.partner,[{topic:s.cid.toString(ce),priority:s.priority,size:c,data:{blockSize:i,isWantBlock:a,haveBlock:!0,sendDontHave:!1}}])}this._scheduleProcessTasks()}}async messageReceived(e,t){let n=this._findOrCreate(e);if(t.empty)return;if(t.full&&(n.wantlist=new no),this._updateBlockAccounting(t.blocks,n),t.wantlist.size===0){this._scheduleProcessTasks();return}let o=[],s=[];t.wantlist.forEach(i=>{i.cancel?(n.cancelWant(i.cid),o.push(i.cid)):(n.wants(i.cid,i.priority,i.wantType),s.push(i))}),this._cancelWants(e,o),await this._addWants(e,s),this._scheduleProcessTasks()}_cancelWants(e,t){for(let n of t)this._requestQueue.remove(n.toString(ce),e)}async _addWants(e,t){let n=await this._getBlockSizes(t.map(s=>s.cid)),o=[];for(let s of t){let i=s.cid.toString(ce),a=n.get(i);if(a==null)s.sendDontHave&&o.push({topic:i,priority:s.priority,size:Dt.blockPresenceSize(s.cid),data:{isWantBlock:s.wantType===c8.Block,blockSize:0,haveBlock:!1,sendDontHave:s.sendDontHave}});else{let c=this._sendAsBlock(s.wantType,a),l=a;c||(l=Dt.blockPresenceSize(s.cid)),o.push({topic:i,priority:s.priority,size:l,data:{isWantBlock:c,blockSize:a,haveBlock:!0,sendDontHave:s.sendDontHave}})}this._requestQueue.pushTasks(e,o)}}_sendAsBlock(e,t){return e===c8.Block||t<=this._opts.maxSizeReplaceHasWithBlock}async _getBlockSizes(e){let t=await this._getBlocks(e);return new Map([...t].map(([n,o])=>[n,o.length]))}async _getBlocks(e){let t=new Map;return await Promise.all(e.map(async n=>{try{let o=await this.blockstore.get(n);t.set(n.toString(ce),o)}catch(o){o.code!=="ERR_NOT_FOUND"&&this._log.error("failed to query blockstore for %s: %s",n,o)}})),t}_updateBlockAccounting(e,t){for(let n of e.values())this._log("got block (%s bytes)",n.length),t.receivedBytes(n.length)}messageSent(e,t,n){let o=this._findOrCreate(e);o.sentBytes(n.length),o.wantlist.remove(t)}numBytesSentTo(e){return this._findOrCreate(e).accounting.bytesSent}numBytesReceivedFrom(e){return this._findOrCreate(e).accounting.bytesRecv}peerDisconnected(e){this.ledgerMap.delete(e.toString())}_findOrCreate(e){let t=e.toString(),n=this.ledgerMap.get(t);if(n!=null)return n;let o=new Fc(e);return this.ledgerMap.set(t,o),this._stats!=null&&this._stats.push(t,"peerCount",1),o}start(){this._running=!0}stop(){this._running=!1}};function f_(r){return r[Symbol.asyncIterator]!=null}function h_(r){if(f_(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Mt=h_;function _e(r,e){if(globalThis.Buffer!=null)return tn(globalThis.Buffer.concat(r,e));e==null&&(e=r.reduce((o,s)=>o+s.length,0));let t=qe(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return tn(t)}var u8=Symbol.for("@achingbrain/uint8arraylist");function l8(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 Hc(r){return!!r?.[u8]}var de=class r{bufs;length;[u8]=!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(Hc(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(Hc(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=l8(this.bufs,e);return t.buf[t.index]}set(e,t){let n=l8(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(Hc(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 _e(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:_e(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(!Hc(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let m=this.get(u+f);if(n[f]!==m){d=Math.max(1,f-a[m]);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=qe(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=Ze(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=Ze(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=Ze(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=qe(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=Ze(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=Ze(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=Ze(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=Ze(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=Ze(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(!j(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 qc(r){return r[Symbol.asyncIterator]!=null}var Wc=r=>{let e=Fe(r),t=qe(e);return ze(r,t),Wc.bytes=e,t};Wc.bytes=0;function Ut(r,e){e=e??{};let t=e.lengthEncoder??Wc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return qc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Ut.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Wc;return new de(t(r.byteLength),r)};var zs=ke(Zo(),1);var m_=8,g_=1024*1024*4,Jo;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Jo||(Jo={}));var lh=r=>{let e=Yt(r);return lh.bytes=Fe(e),e};lh.bytes=0;function Ft(r,e){let t=new de,n=Jo.LENGTH,o=-1,s=e?.lengthDecoder??lh,i=e?.maxLengthLength??m_,a=e?.maxDataLength??g_;function*c(){for(;t.byteLength>0;){if(n===Jo.LENGTH)try{if(o=s(t),o<0)throw(0,zs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,zs.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=Jo.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,zs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===Jo.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Jo.LENGTH}}}return qc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,zs.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,zs.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}Ft.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 Ft(n,{...e??{},onLength:s=>{t=s}})};function y_(r){return r[Symbol.asyncIterator]!=null}function w_(r,e){if(y_(r))return async function*(){for await(let a of r)yield e(a)}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var dr=w_;function se(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Gc=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}},Gs=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Gc(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 Gc(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 uh=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function nt(r={}){return b_(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 b_(r,e){e=e??{};let t=e.onEnd,n=new Gs,o,s,i,a=se(),c=async()=>{try{return n.isEmpty()?i?{done:!0}:await new Promise((y,w)=>{s=E=>{s=null,n.push(E);try{y(r(n))}catch(b){w(b)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=se()})}},l=y=>s!=null?s(y):(n.push(y),o),d=y=>(n=new Gs,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})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),m=()=>(n=new Gs,f(),{done:!0}),h=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:m,throw:h,push:u,end:f,get readableLength(){return n.size},onEmpty:async y=>{let w=y?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let E,b;w!=null&&(E=new Promise((S,R)=>{b=()=>{R(new uh)},w.addEventListener("abort",b)}));try{await Promise.race([a.promise,E])}finally{b!=null&&w!=null&&w?.removeEventListener("abort",b)}}},t==null)return o;let p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},o}function E_(r){return r[Symbol.asyncIterator]!=null}function x_(...r){let e=[];for(let t of r)E_(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=nt({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 Tt=x_;function Ge(r,...e){if(r==null)throw new Error("Empty pipeline");if(dh(r)){let n=r;r=()=>n.source}else if(p8(r)||h8(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&dh(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++)dh(t[n])&&(t[n]=__(t[n]));return v_(...t)}var v_=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},h8=r=>r?.[Symbol.asyncIterator]!=null,p8=r=>r?.[Symbol.iterator]!=null,dh=r=>r==null?!1:r.sink!=null&&r.source!=null,__=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=nt({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(h8(s))o=async function*(){yield*s,n.end()};else if(p8(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Tt(n,o())}return r.source};function S_(r){return r[Symbol.asyncIterator]!=null}function R_(r,e){return S_(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 oo=R_;var xe=class extends Event{constructor(e,t){super(e),this.detail=t}};var A8=ke(x8(),1);var v8=Math.pow(2,31)-1,_8=1e3,S8=1;var ph="/ipfs/bitswap/1.0.0",mh="/ipfs/bitswap/1.1.0",gh="/ipfs/bitswap/1.2.0",D_=1024,T_=1024,k_=3e4,Xc=class{_log;_libp2p;_bitswap;_protocols;_stats;_running;_hashLoader;_maxInboundStreams;_maxOutboundStreams;_incomingStreamTimeout;_registrarIds;constructor(e,t,n,o={}){this._log=cr(e.peerId,"network"),this._libp2p=e,this._bitswap=t,this._protocols=[ph],o.b100Only!==!0&&(this._protocols.unshift(mh),this._protocols.unshift(gh)),this._stats=n,this._running=!1,this._onPeerConnect=this._onPeerConnect.bind(this),this._onPeerDisconnect=this._onPeerDisconnect.bind(this),this._onConnection=this._onConnection.bind(this),this._hashLoader=o.hashLoader??{async getHasher(){throw new Error("Not implemented")}},this._maxInboundStreams=o.maxInboundStreams??D_,this._maxOutboundStreams=o.maxOutboundStreams??T_,this._incomingStreamTimeout=o.incomingStreamTimeout??k_}async start(){this._running=!0,await this._libp2p.handle(this._protocols,this._onConnection,{maxInboundStreams:this._maxInboundStreams,maxOutboundStreams:this._maxOutboundStreams});let e={onConnect:this._onPeerConnect,onDisconnect:this._onPeerDisconnect};this._registrarIds=[];for(let t of this._protocols)this._registrarIds.push(await this._libp2p.register(t,e));this._libp2p.getConnections().forEach(t=>{this._onPeerConnect(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=[]}}_onConnection(e){if(!this._running)return;let{stream:t,connection:n}=e,o=new A8.TimeoutController(this._incomingStreamTimeout);Promise.resolve().then(async()=>{this._log("incoming new bitswap %s connection from %p",t.protocol,n.remotePeer);let s=()=>{t.abort(new g("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},i=AbortSignal.timeout(this._incomingStreamTimeout);i.addEventListener("abort",s),await Ge(t,a=>Ft(a),async a=>{for await(let c of a){try{let l=await Dt.deserialize(c.subarray(),this._hashLoader);await this._bitswap._receiveMessage(n.remotePeer,l)}catch(l){this._bitswap._receiveError(l);break}i.removeEventListener("abort",s),i=AbortSignal.timeout(this._incomingStreamTimeout),i.addEventListener("abort",s)}}),await t.close({signal:i})}).catch(s=>{this._log(s),t.abort(s)}).finally(()=>{o.clear()})}_onPeerConnect(e){this._bitswap._onPeerConnected(e)}_onPeerDisconnect(e){this._bitswap._onPeerDisconnected(e)}findProviders(e,t={}){return t.onProgress?.(new xe("bitswap:network:find-providers",e)),this._libp2p.contentRouting.findProviders(e,t)}async findAndConnect(e,t){await Mt(oo(dr(this.findProviders(e,t),async n=>this.connectTo(n.id,t).catch(o=>{this._log.error(o)})),3)).catch(n=>{this._log.error(n)})}async provide(e,t={}){t.onProgress?.(new xe("bitswap:network:provide",e)),await this._libp2p.contentRouting.provide(e,t)}async sendMessage(e,t,n={}){if(!this._running)throw new Error("network isn't running");let o=e.toString();this._log("sendMessage to %s",o,t),n.onProgress?.(new xe("bitswap:network:send-wantlist",e)),await this._writeMessage(e,t,n),this._updateSentStats(e,t.blocks)}async connectTo(e,t={}){if(!this._running)throw new Error("network isn't running");return t.onProgress?.(new xe("bitswap:network:dial",e)),this._libp2p.dial(e,t)}_updateSentStats(e,t){let n=e.toString();if(this._stats!=null){for(let o of t.values())this._stats.push(n,"dataSent",o.length);this._stats.push(n,"blocksSent",t.size)}}async _writeMessage(e,t,n={}){let o=await this._libp2p.dialProtocol(e,[gh,mh,ph]);try{let s;switch(o.protocol){case ph:s=t.serializeToBitswap100();break;case mh:case gh:s=t.serializeToBitswap110();break;default:throw new Error(`Unknown protocol: ${o.protocol}`)}await Ge([s],i=>Ut(i),o),await o.close()}catch(s){n.onProgress?.(new xe("bitswap:network:send-wantlist:error",{peer:e,error:s})),this._log(s),o.abort(s)}}};var F8=ke(Zc(),1);function B(r,e="utf8"){let t=Bc[e];if(t==null)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 M8=r=>`unwant:${B(r.multihash.bytes,"base64")}`,U8=r=>`block:${B(r.multihash.bytes,"base64")}`,Jc=class extends F8.EventEmitter{_log;constructor(e){super(),this.setMaxListeners(_8),this._log=cr(e,"notif")}hasBlock(e,t){let n=U8(e);this._log(n),this.emit(n,t)}async wantBlock(e,t={}){if(e==null)throw new Error("Not a valid cid");let n=U8(e),o=M8(e);return this._log(`wantBlock:${e}`),new Promise((s,i)=>{let a=()=>{this.removeListener(n,c),t.onProgress?.(new xe("bitswap:want-block:unwant",e)),i(new Error(`Block for ${e} unwanted`))},c=l=>{this.removeListener(o,a),t.onProgress?.(new xe("bitswap:want-block:block",e)),s(l)};this.once(o,a),this.once(n,c),t.signal?.addEventListener("abort",()=>{this.removeListener(n,c),this.removeListener(o,a),i(new Error(`Want for ${e} aborted`))})})}unwantBlock(e){let t=M8(e);this._log(t),this.emit(t)}};var W8=ke(Zc(),1);var H8=ke(Zc(),1),wh=ke($8(),1),da=class extends H8.EventEmitter{_options;_queue;_stats;_frequencyLastTime;_frequencyAccumulators;_movingAverages;_enabled;_timeout;constructor(e,t){super(),this._options=t,this._queue=[],this._stats={},this._frequencyLastTime=Date.now(),this._frequencyAccumulators={},this._movingAverages={},this._update=this._update.bind(this),e.forEach(n=>{this._stats[n]=BigInt(0),this._movingAverages[n]={},this._options.movingAverageIntervals.forEach(o=>{(this._movingAverages[n][o]=(0,wh.default)(o)).push(this._frequencyLastTime,0)})}),this._enabled=this._options.enabled}enable(){this._enabled=!0}disable(){this._enabled=!1}stop(){this._timeout!=null&&clearTimeout(this._timeout)}get snapshot(){return Object.assign({},this._stats)}get movingAverages(){return Object.assign({},this._movingAverages)}push(e,t){this._enabled&&(this._queue.push([e,t,Date.now()]),this._resetComputeTimeout())}_resetComputeTimeout(){this._timeout!=null&&clearTimeout(this._timeout),this._timeout=setTimeout(this._update,this._nextTimeout())}_nextTimeout(){let e=this._queue.length/this._options.computeThrottleMaxQueueSize;return Math.max(this._options.computeThrottleTimeout*(1-e),0)}_update(){if(this._timeout=void 0,this._queue.length>0){let e;for(;this._queue.length>0;){let t=e=this._queue.shift();t!=null&&this._applyOp(t)}e!=null&&this._updateFrequency(e[2]),this.emit("update",this._stats)}}_updateFrequency(e){let t=e-this._frequencyLastTime;t>0&&Object.keys(this._stats).forEach(n=>{this._updateFrequencyFor(n,t,e)}),this._frequencyLastTime=e}_updateFrequencyFor(e,t,n){let o=this._frequencyAccumulators[e]??0;this._frequencyAccumulators[e]=0;let s=o/t*1e3,i=this._movingAverages[e];i==null&&(i=this._movingAverages[e]={}),this._options.movingAverageIntervals.forEach(a=>{let c=i[a];c==null&&(c=i[a]=(0,wh.default)(a)),c.push(n,s)})}_applyOp(e){let t=e[0],n=e[1];if(typeof n!="number")throw new Error(`invalid increment number: ${n}`);Object.prototype.hasOwnProperty.call(this._stats,t)||(this._stats[t]=BigInt(0)),this._stats[t]=BigInt(this._stats[t])+BigInt(n),this._frequencyAccumulators[t]==null&&(this._frequencyAccumulators[t]=0),this._frequencyAccumulators[t]+=n}};var q8={enabled:!1,computeThrottleTimeout:1e3,computeThrottleMaxQueueSize:1e3,movingAverageIntervals:[60*1e3,5*60*1e3,15*60*1e3]},el=class extends W8.EventEmitter{_initialCounters;_options;_enabled;_global;_peers;constructor(e,t=[],n=q8){super();let o=Object.assign({},q8,n);if(typeof o.computeThrottleTimeout!="number")throw new Error("need computeThrottleTimeout");if(typeof o.computeThrottleMaxQueueSize!="number")throw new Error("need computeThrottleMaxQueueSize");this._initialCounters=t,this._options=o,this._enabled=this._options.enabled,this._global=new da(t,o),this._global.on("update",s=>this.emit("update",s)),this._peers=jr({name:"ipfs_bitswap_stats_peers",metrics:e.metrics})}enable(){this._enabled=!0,this._options.enabled=!0,this._global.enable()}disable(){this._enabled=!1,this._options.enabled=!1,this._global.disable()}stop(){this._enabled=!1,this._global.stop();for(let e of this._peers)e[1].stop()}get snapshot(){return this._global.snapshot}get movingAverages(){return this._global.movingAverages}forPeer(e){let t=e.toString();return this._peers.get(t)}push(e,t,n){if(this._enabled&&(this._global.push(t,n),e!=null)){let o=this._peers.get(e);o==null&&(o=new da(this._initialCounters,this._options),this._peers.set(e,o)),o.push(t,n)}}disconnected(e){let t=e.toString(),n=this._peers.get(t);n!=null&&(n.stop(),this._peers.delete(t))}};var z8=U_;function U_(r,e,t){var n=null,o=null,s=function(){n&&(clearTimeout(n),o=null,n=null)},i=function(){var c=o;s(),c&&c()},a=function(){if(!e)return r.apply(this,arguments);var c=this,l=arguments,d=t&&!n;if(s(),o=function(){r.apply(c,l)},n=setTimeout(function(){if(n=null,!d){var u=o;return o=null,u()}},e),d)return o()};return a.cancel=s,a.flush=i,a}var tl=class{peerId;refcnt;network;_entries;_log;constructor(e,t,n){this.peerId=t,this.network=n,this.refcnt=1,this._entries=[],this._log=cr(e,"msgqueue"),this.sendEntries=z8(this.sendEntries.bind(this),S8)}addMessage(e,t={}){e.empty||this.send(e,t)}addEntries(e,t={}){this._entries=this._entries.concat(e),this.sendEntries(t)}sendEntries(e={}){if(this._entries.length===0)return;let t=new Dt(!1);this._entries.forEach(n=>{n.cancel===!0?t.cancel(n.cid):t.addEntry(n.cid,n.priority)}),this._entries=[],this.addMessage(t,e)}async send(e,t={}){try{await this.network.connectTo(this.peerId,t)}catch(n){this._log.error("cant connect to peer %p: %s",this.peerId,n.message);return}this._log("sending message to peer %p",this.peerId),this.network.sendMessage(this.peerId,e,t).catch(n=>{this._log.error("send error",n)})}};var rl=class{peers;wantlist;network;_peerId;_log;constructor(e,t,n,o){this.peers=jr({name:"ipfs_bitswap_want_manager_peers",metrics:o.metrics}),this.wantlist=new no(n,o),this.network=t,this._peerId=e,this._log=cr(e,"want")}_addEntries(e,t,n,o={}){let s=e.map((i,a)=>new Dt.Entry(i,v8-a,Dt.WantType.Block,t));s.forEach(i=>{i.cancel?n===!0?this.wantlist.removeForce(i.cid.toString(ce)):this.wantlist.remove(i.cid):(this._log("adding to wantlist"),this.wantlist.add(i.cid,i.priority))});for(let i of this.peers.values())i.addEntries(s,o)}_startPeerHandler(e){let t=this.peers.get(e.toString());if(t!=null){t.refcnt++;return}t=new tl(this._peerId,e,this.network);let n=new Dt(!0);for(let o of this.wantlist.entries())n.addEntry(o[1].cid,o[1].priority);return t.addMessage(n),this.peers.set(e.toString(),t),t}_stopPeerHandler(e){let t=this.peers.get(e.toString());t!=null&&(t.refcnt--,!(t.refcnt>0)&&this.peers.delete(e.toString()))}wantBlocks(e,t={}){this._addEntries(e,!1,!1,t),t.signal?.addEventListener("abort",()=>{this.cancelWants(e)})}unwantBlocks(e){this._log("unwant blocks: %s",e.length),this._addEntries(e,!0,!0)}cancelWants(e){this._log("cancel wants: %s",e.length),this._addEntries(e,!0)}connectedPeers(){return Array.from(this.peers.keys())}connected(e){this._startPeerHandler(e)}disconnected(e){this._stopPeerHandler(e)}start(){}stop(){this.peers.forEach(e=>{this.disconnected(e.peerId)})}};var F_={async getHasher(){throw new Error("Not implemented")}},V_={maxInboundStreams:1024,maxOutboundStreams:1024,incomingStreamTimeout:3e4,hashLoader:F_,statsEnabled:!1,statsComputeThrottleTimeout:1e3,statsComputeThrottleMaxQueueSize:1e3},K_=["blocksReceived","dataReceived","dupBlksReceived","dupDataReceived","blocksSent","dataSent","providesBufferLength","wantListLength","peerCount"],nl=class{_libp2p;_log;stats;network;blockstore;engine;wm;notifications;started;constructor(e,t,n={}){this._libp2p=e,this._log=cr(this.peerId),n=Object.assign({},V_,n),this.stats=new el(e,K_,{enabled:n.statsEnabled,computeThrottleTimeout:n.statsComputeThrottleTimeout,computeThrottleMaxQueueSize:n.statsComputeThrottleMaxQueueSize}),this.network=new Xc(e,this,this.stats,{hashLoader:n.hashLoader,maxInboundStreams:n.maxInboundStreams,maxOutboundStreams:n.maxOutboundStreams,incomingStreamTimeout:n.incomingStreamTimeout}),this.blockstore=t,this.engine=new $c(this.peerId,t,this.network,this.stats,e),this.wm=new rl(this.peerId,this.network,this.stats,e),this.notifications=new Jc(this.peerId),this.started=!1}isStarted(){return this.started}get peerId(){return this._libp2p.peerId}async _receiveMessage(e,t){try{await this.engine.messageReceived(e,t)}catch{this._log("failed to receive message",t)}if(t.blocks.size===0)return;let n=[];for(let[o,s]of t.blocks.entries()){let i=oe.parse(o);n.push({wasWanted:this.wm.wantlist.contains(i),cid:i,data:s})}this.wm.cancelWants(n.filter(({wasWanted:o})=>o).map(({cid:o})=>o)),await Promise.all(n.map(async({cid:o,wasWanted:s,data:i})=>{await this._handleReceivedBlock(e,o,i,s)}))}async _handleReceivedBlock(e,t,n,o){this._log("received block");let s=await this.blockstore.has(t);this._updateReceiveCounters(e.toString(),t,n,s),o&&await this.put(t,n)}_updateReceiveCounters(e,t,n,o){this.stats.push(e,"blocksReceived",1),this.stats.push(e,"dataReceived",n.length),o&&(this.stats.push(e,"dupBlksReceived",1),this.stats.push(e,"dupDataReceived",n.length))}_receiveError(e){this._log.error("ReceiveError",e)}_onPeerConnected(e){this.wm.connected(e)}_onPeerDisconnected(e){this.wm.disconnected(e),this.engine.peerDisconnected(e),this.stats.disconnected(e)}enableStats(){this.stats.enable()}disableStats(){this.stats.disable()}wantlistForPeer(e,t){return this.engine.wantlistForPeer(e)}ledgerForPeer(e){return this.engine.ledgerForPeer(e)}async want(e,t={}){let n=async(c,l)=>(this.wm.wantBlocks([c],l),this.notifications.wantBlock(c,l)),o=!1,s=async(c,l)=>{try{return await this.blockstore.get(c,l)}catch(d){if(d.code!=="ERR_NOT_FOUND")throw d;return o||(o=!0,this.network.findAndConnect(c,l).catch(u=>{this._log.error(u)})),await n(c,l)}},i=new AbortController,a=lt([i.signal,t.signal]);try{return await Promise.race([this.notifications.wantBlock(e,{...t,signal:a}),s(e,{...t,signal:a})])}finally{i.abort(),a.clear()}}unwant(e){let t=Array.isArray(e)?e:[e];this.wm.unwantBlocks(t),t.forEach(n=>{this.notifications.unwantBlock(n)})}cancelWants(e){this.wm.cancelWants(Array.isArray(e)?e:[e])}async put(e,t,n){await this.blockstore.put(e,t),this.notify(e,t)}async*putMany(e,t){yield*this.blockstore.putMany(qo(e,({cid:n,block:o})=>{this.notify(n,o)}),t)}notify(e,t,n={}){this.notifications.hasBlock(e,t),this.engine.receivedBlocks([{cid:e,block:t}]),this.network.provide(e,n).catch(o=>{this._log.error("Failed to provide: %s",o.message)})}getWantlist(){return this.wm.wantlist.entries()}get peers(){return this.engine.peers()}async start(){this.wm.start(),await this.network.start(),this.engine.start(),this.started=!0}async stop(){this.stats.stop(),this.wm.stop(),await this.network.stop(),this.engine.stop(),this.started=!1}};var G8=(r,e,t={})=>new nl(r,e,t);var bh=class{bitswap;started;constructor(e,t={}){let{libp2p:n,blockstore:o,hashers:s}=e;this.bitswap=G8(n,o,{hashLoader:{getHasher:async i=>{let a;if(typeof i=="string"?a=Object.values(s).find(c=>c.name===i):a=s[i],a!=null)return a;throw new Error(`Could not load hasher for code/name "${i}"`)}},...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}announce(e,t,n){this.bitswap.notify(e,t,n)}async retrieve(e,{validateFn:t,...n}={}){return this.bitswap.want(e,n)}};function Eh(r={}){return e=>new bh(e,r)}var ol=class{url;#e=0;#t=0;#r=0;#i=0;constructor(e){this.url=e instanceof URL?e:new URL(e)}async getRawBlock(e,t){let n=this.url;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`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}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}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var sl=class{gateways;log;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.gateways=(t.gateways??Y8).map(n=>new ol(n))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`unable to validate block for CID ${e} from gateway ${s.url}`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw new AggregateError(o,`unable to fetch raw block for CID ${e} from any gateway`)}};var Y8=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function xh(r={}){return e=>new sl(e,r)}var $_=Symbol.for("nodejs.util.inspect.custom"),X8=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e),ur.identity.decoder),Q8=114,vh=36,_h=37,fa=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()})`}[vf]=!0;toString(){return this.string==null&&(this.string=ce.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return oe.createV1(Q8,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return j(this.multihash.bytes,e);if(typeof e=="string")return ye(e).equals(this);if(e?.multihash?.bytes!=null)return j(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[$_](){return`PeerId(${this.toString()})`}},es=class extends fa{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},ts=class extends fa{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},rs=class extends fa{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function j8(r){if(r.type==="RSA")return new es(r);if(r.type==="Ed25519")return new ts(r);if(r.type==="secp256k1")return new rs(r);throw new g("Not a PeerId","ERR_INVALID_PARAMETERS")}function ye(r,e){if(e=e??X8,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Tr(ce.decode(`z${r}`));return r.startsWith("12D")?new ts({multihash:t}):r.startsWith("16U")?new rs({multihash:t}):new es({multihash:t})}return Ye(X8.decode(r))}function Ye(r){try{let e=Tr(r);if(e.code===lr.code){if(e.digest.length===vh)return new ts({multihash:e});if(e.digest.length===_h)return new rs({multihash:e})}if(e.code===Re.code)return new es({multihash:e})}catch{return H_(oe.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function H_(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==Q8)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===Re.code)return new es({multihash:r.multihash});if(e.code===lr.code){if(e.digest.length===vh)return new ts({multihash:r.multihash});if(e.digest.length===_h)return new rs({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ut(r,e){return r.length===vh?new ts({multihash:Dr(lr.code,r),privateKey:e}):r.length===_h?new rs({multihash:Dr(lr.code,r),privateKey:e}):new es({multihash:await Re.digest(r),publicKey:r,privateKey:e})}var il=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Z8=45,W_=15,Xs=new il;function Sh(r){if(!(r.length>W_))return Xs.new(r).parseWith(()=>Xs.readIPv4Addr())}function Rh(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Z8))return Xs.new(r).parseWith(()=>Xs.readIPv6Addr())}function al(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Z8))return Xs.new(r).parseWith(()=>Xs.readIPAddr())}var mU=parseInt("0xFFFF",16),gU=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Qs(r){return!!Sh(r)}function js(r){return!!Rh(r)}function cl(r){return!!al(r)}var tm=Qs,Q_=js,Ah=function(r){let e=0;if(r=r.toString().trim(),tm(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Q_(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=tm(t[n]),i;s&&(i=Ah(t[n]),t[n]=B(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,B(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")},rm=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 Zs={},Ih={},Z_=[[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"]];Z_.forEach(r=>{let e=J_(...r);Ih[e.code]=e,Zs[e.name]=e});function J_(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function Z(r){if(typeof r=="number"){if(Ih[r]!=null)return Ih[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Zs[r]!=null)return Zs[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var JU=Z("ip4"),eF=Z("ip6"),tF=Z("ipcidr");function Th(r,e){switch(Z(r).code){case 4:case 41:return tS(e);case 42:return sm(e);case 6:case 273:case 33:case 132:return am(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return sm(e);case 421:return sS(e);case 444:return im(e);case 445:return im(e);case 466:return oS(e);default:return B(e,"base16")}}function kh(r,e){switch(Z(r).code){case 4:return nm(e);case 41:return nm(e);case 42:return om(e);case 6:case 273:case 33:case 132:return Ch(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return om(e);case 421:return rS(e);case 444:return iS(e);case 445:return aS(e);case 466:return nS(e);default:return L(e,"base16")}}var Dh=Object.values(ur).map(r=>r.decoder),eS=function(){let r=Dh[0].or(Dh[1]);return Dh.slice(2).forEach(e=>r=r.or(e)),r}();function nm(r){if(!cl(r))throw new Error("invalid ip address");return Ah(r)}function tS(r){let e=rm(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!cl(e))throw new Error("invalid ip address");return e}function Ch(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function am(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function om(r){let e=L(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function sm(r){let e=Yt(r);if(r=r.slice(Fe(e)),r.length!==e)throw new Error("inconsistent lengths");return B(r)}function rS(r){let e;r[0]==="Q"||r[0]==="1"?e=Tr(ce.decode(`z${r}`)).bytes:e=oe.parse(r).multihash.bytes;let t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function nS(r){let e=eS.decode(r),t=Uint8Array.from(ze(e.length));return _e([t,e],t.length+e.length)}function oS(r){let e=Yt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+B(t,"base64url")}function sS(r){let e=Yt(r),t=r.slice(Fe(e));if(t.length!==e)throw new Error("inconsistent lengths");return B(t,"base58btc")}function iS(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=it.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=Ch(n);return _e([t,o],t.length+o.length)}function aS(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=it.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=Ch(n);return _e([t,o],t.length+o.length)}function im(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=B(e,"base32"),o=am(t);return`${n}:${o}`}function cm(r){r=Nh(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=Z(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw um("invalid address: "+r);if(a.path===!0){n=Nh(o.slice(s).join("/")),e.push([a.code,kh(a.code,n)]),t.push([a.code,n]);break}let c=kh(a.code,o[s]);e.push([a.code,c]),t.push([a.code,Th(a.code,c)])}return{string:lm(t),bytes:Ph(e),tuples:e,stringTuples:t,path:n}}function Oh(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Yt(r,o),i=Fe(s),a=Z(s),c=cS(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 um("Invalid address Uint8Array: "+B(r,"base16"));e.push([s,l]);let d=Th(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:lm(t),tuples:e,stringTuples:t,path:n}}function lm(r){let e=[];return r.map(t=>{let n=Z(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),Nh(e.join("/"))}function Ph(r){return _e(r.map(e=>{let t=Z(e[0]),n=Uint8Array.from(ze(t.code));return e.length>1&&e[1]!=null&&(n=_e([n,e[1]])),n}))}function cS(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Yt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Fe(t)}}function Nh(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function um(r){return new Error("Error parsing address: "+r)}var lS=Symbol.for("nodejs.util.inspect.custom"),Lh=Symbol.for("@multiformats/js-multiaddr/multiaddr"),uS=[Z("dns").code,Z("dns4").code,Z("dns6").code,Z("dnsaddr").code],ll=class r{bytes;#e;#t;#r;#i;[Lh]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Oh(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=cm(e)}else if(so(e))t=Oh(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.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=Z("tcp"),a=Z("udp"),c=Z("ip4"),l=Z("ip6"),d=Z("dns6"),u=Z("ip6zone");for(let[m,h]of this.stringTuples())m===u.code&&(s=`%${h??""}`),uS.includes(m)&&(t=i.name,o=443,n=`${h??""}${s}`,e=m===d.code?6:4),(m===i.code||m===a.code)&&(t=Z(m).name,o=parseInt(h??"")),(m===c.code||m===l.code)&&(t=Z(m).name,n=`${h??""}${s}`,e=m===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({},Z(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>Z(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(Ph(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Zs.p2p.code&&e.push([n,o]),n===Zs["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?B(ce.decode(`z${n}`),"base58btc"):B(oe.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return j(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=ul.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=>new r(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)}[lS](){return`Multiaddr(${this.#e})`}};var ul=new Map;function so(r){return!!r?.[Lh]}function Q(r){return new ll(r)}async function*dl(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 pu={};me(pu,{Ed25519PrivateKey:()=>An,Ed25519PublicKey:()=>cs,MAX_RSA_KEY_SIZE:()=>ds,RsaPrivateKey:()=>wo,RsaPublicKey:()=>us,Secp256k1PrivateKey:()=>ps,Secp256k1PublicKey:()=>hs,generateEphemeralKeyPair:()=>Hm,generateKeyPair:()=>Ia,generateKeyPairFromSeed:()=>dA,importKey:()=>di,keyStretcher:()=>Ym,keysPBM:()=>si,marshalPrivateKey:()=>_0,marshalPublicKey:()=>v0,supportedKeys:()=>Pn,unmarshalPrivateKey:()=>gr,unmarshalPublicKey:()=>$r});var r0={};me(r0,{Ed25519PrivateKey:()=>An,Ed25519PublicKey:()=>cs,generateKeyPair:()=>wR,generateKeyPairFromSeed:()=>t0,unmarshalEd25519PrivateKey:()=>gR,unmarshalEd25519PublicKey:()=>yR});function Bh(r,e){let t=L(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=_e([new Uint8Array(e-t.length),t])}return t}function fr(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function io(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function dS(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Mh(r,...e){if(!dS(r))throw new Error("Expected Uint8Array");if(e.length>0&&!e.includes(r.length))throw new Error(`Expected Uint8Array of length ${e}, not of length=${r.length}`)}function ns(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");io(r.outputLen),io(r.blockLen)}function Js(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 dm(r,e){Mh(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var fl=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function fm(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var os=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Nr=(r,e)=>r<<32-e|r>>>e,fS=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!fS)throw new Error("Non little-endian hardware is not supported");var hS=async()=>{};async function hm(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 hS(),n+=s)}}function Uh(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Or(r){if(typeof r=="string"&&(r=Uh(r)),!fm(r))throw new Error(`expected Uint8Array, got ${typeof r}`);return r}function hl(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];if(!fm(o))throw new Error("Uint8Array expected");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 ei=class{clone(){return this._cloneInto()}},pS={}.toString;function pm(r,e){if(e!==void 0&&pS.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function ti(r){let e=n=>r().update(Or(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function ss(r=32){if(fl&&typeof fl.getRandomValues=="function")return fl.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function mS(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 ao=class extends ei{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=os(this.buffer)}update(e){Js(this);let{view:t,buffer:n,blockLen:o}=this;e=Or(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=os(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){Js(this),dm(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;mS(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=os(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 pl=BigInt(4294967295),Fh=BigInt(32);function mm(r,e=!1){return e?{h:Number(r&pl),l:Number(r>>Fh&pl)}:{h:Number(r>>Fh&pl)|0,l:Number(r&pl)|0}}function gS(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}=mm(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var yS=(r,e)=>BigInt(r>>>0)<<Fh|BigInt(e>>>0),wS=(r,e,t)=>r>>>t,bS=(r,e,t)=>r<<32-t|e>>>t,ES=(r,e,t)=>r>>>t|e<<32-t,xS=(r,e,t)=>r<<32-t|e>>>t,vS=(r,e,t)=>r<<64-t|e>>>t-32,_S=(r,e,t)=>r>>>t-32|e<<64-t,SS=(r,e)=>e,RS=(r,e)=>r,AS=(r,e,t)=>r<<t|e>>>32-t,IS=(r,e,t)=>e<<t|r>>>32-t,DS=(r,e,t)=>e<<t-32|r>>>64-t,TS=(r,e,t)=>r<<t-32|e>>>64-t;function kS(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var CS=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),NS=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,OS=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),PS=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,LS=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),BS=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var MS={fromBig:mm,split:gS,toBig:yS,shrSH:wS,shrSL:bS,rotrSH:ES,rotrSL:xS,rotrBH:vS,rotrBL:_S,rotr32H:SS,rotr32L:RS,rotlSH:AS,rotlSL:IS,rotlBH:DS,rotlBL:TS,add:kS,add3L:CS,add3H:NS,add4L:OS,add4H:PS,add5H:BS,add5L:LS},fe=MS;var[US,FS]=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))),co=new Uint32Array(80),lo=new Uint32Array(80),Vh=class extends ao{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:f,Gh:m,Gl:h,Hh:p,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,y]}set(e,t,n,o,s,i,a,c,l,d,u,f,m,h,p,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=f|0,this.Gh=m|0,this.Gl=h|0,this.Hh=p|0,this.Hl=y|0}process(e,t){for(let b=0;b<16;b++,t+=4)co[b]=e.getUint32(t),lo[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=co[b-15]|0,R=lo[b-15]|0,A=fe.rotrSH(S,R,1)^fe.rotrSH(S,R,8)^fe.shrSH(S,R,7),D=fe.rotrSL(S,R,1)^fe.rotrSL(S,R,8)^fe.shrSL(S,R,7),_=co[b-2]|0,k=lo[b-2]|0,O=fe.rotrSH(_,k,19)^fe.rotrBH(_,k,61)^fe.shrSH(_,k,6),N=fe.rotrSL(_,k,19)^fe.rotrBL(_,k,61)^fe.shrSL(_,k,6),P=fe.add4L(D,N,lo[b-7],lo[b-16]),F=fe.add4H(P,A,O,co[b-7],co[b-16]);co[b]=F|0,lo[b]=P|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:m,Fl:h,Gh:p,Gl:y,Hh:w,Hl:E}=this;for(let b=0;b<80;b++){let S=fe.rotrSH(u,f,14)^fe.rotrSH(u,f,18)^fe.rotrBH(u,f,41),R=fe.rotrSL(u,f,14)^fe.rotrSL(u,f,18)^fe.rotrBL(u,f,41),A=u&m^~u&p,D=f&h^~f&y,_=fe.add5L(E,R,D,FS[b],lo[b]),k=fe.add5H(_,w,S,A,US[b],co[b]),O=_|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),P=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),F=n&s^n&a^s&a,Y=o&i^o&c^i&c;w=p|0,E=y|0,p=m|0,y=h|0,m=u|0,h=f|0,{h:u,l:f}=fe.add(l|0,d|0,k|0,O|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let I=fe.add3L(O,P,Y);n=fe.add3H(I,k,N,F),o=I|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:f}=fe.add(this.Eh|0,this.El|0,u|0,f|0),{h:m,l:h}=fe.add(this.Fh|0,this.Fl|0,m|0,h|0),{h:p,l:y}=fe.add(this.Gh|0,this.Gl|0,p|0,y|0),{h:w,l:E}=fe.add(this.Hh|0,this.Hl|0,w|0,E|0),this.set(n,o,s,i,a,c,l,d,u,f,m,h,p,y,w,E)}roundClean(){co.fill(0),lo.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 uo=ti(()=>new Vh);var gl={};me(gl,{bitGet:()=>zS,bitLen:()=>WS,bitMask:()=>ha,bitSet:()=>GS,bytesToHex:()=>En,bytesToNumberBE:()=>xn,bytesToNumberLE:()=>Lr,concatBytes:()=>_n,createHmacDrbg:()=>Hh,ensureBytes:()=>Be,equalBytes:()=>HS,hexToBytes:()=>is,hexToNumber:()=>$h,isBytes:()=>Pr,numberToBytesBE:()=>fo,numberToBytesLE:()=>vn,numberToHexUnpadded:()=>bm,numberToVarBytesBE:()=>$S,utf8ToBytes:()=>qS,validateObject:()=>hr});var wm=BigInt(0),ml=BigInt(1),VS=BigInt(2);function Pr(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var KS=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function En(r){if(!Pr(r))throw new Error("Uint8Array expected");let e="";for(let t=0;t<r.length;t++)e+=KS[r[t]];return e}function bm(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function $h(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var bn={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function gm(r){if(r>=bn._0&&r<=bn._9)return r-bn._0;if(r>=bn._A&&r<=bn._F)return r-(bn._A-10);if(r>=bn._a&&r<=bn._f)return r-(bn._a-10)}function is(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=gm(r.charCodeAt(s)),a=gm(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 xn(r){return $h(En(r))}function Lr(r){if(!Pr(r))throw new Error("Uint8Array expected");return $h(En(Uint8Array.from(r).reverse()))}function fo(r,e){return is(r.toString(16).padStart(e*2,"0"))}function vn(r,e){return fo(r,e).reverse()}function $S(r){return is(bm(r))}function Be(r,e,t){let n;if(typeof e=="string")try{n=is(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(Pr(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 _n(...r){let e=0;for(let o=0;o<r.length;o++){let s=r[o];if(!Pr(s))throw new Error("Uint8Array expected");e+=s.length}let t=new Uint8Array(e),n=0;for(let o=0;o<r.length;o++){let s=r[o];t.set(s,n),n+=s.length}return t}function HS(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 qS(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function WS(r){let e;for(e=0;r>wm;r>>=ml,e+=1);return e}function zS(r,e){return r>>BigInt(e)&ml}var GS=(r,e,t)=>r|(t?ml:wm)<<BigInt(e),ha=r=>(VS<<BigInt(r-1))-ml,Kh=r=>new Uint8Array(r),ym=r=>Uint8Array.from(r);function Hh(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(ym([0]),u),n=a(),u.length!==0&&(o=a(ym([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,f=[];for(;u<e;){n=a();let m=n.slice();f.push(m),u+=n.length}return _n(...f)};return(u,f)=>{i(),c(u);let m;for(;!(m=f(l()));)c();return i(),m}}var YS={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"||Pr(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 hr(r,e,t={}){let n=(o,s,i)=>{let a=YS[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 at=BigInt(0),Ke=BigInt(1),as=BigInt(2),XS=BigInt(3),qh=BigInt(4),Em=BigInt(5),xm=BigInt(8),QS=BigInt(9),jS=BigInt(16);function Ae(r,e){let t=r%e;return t>=at?t:e+t}function Wh(r,e,t){if(t<=at||e<at)throw new Error("Expected power/modulo > 0");if(t===Ke)return at;let n=Ke;for(;e>at;)e&Ke&&(n=n*r%t),r=r*r%t,e>>=Ke;return n}function Me(r,e,t){let n=r;for(;e-- >at;)n*=n,n%=t;return n}function yl(r,e){if(r===at||e<=at)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=Ae(r,e),n=e,o=at,s=Ke,i=Ke,a=at;for(;t!==at;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==Ke)throw new Error("invert: does not exist");return Ae(o,e)}function ZS(r){let e=(r-Ke)/as,t,n,o;for(t=r-Ke,n=0;t%as===at;t/=as,n++);for(o=as;o<r&&Wh(o,e,r)!==r-Ke;o++);if(n===1){let i=(r+Ke)/qh;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+Ke)/as;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),f=a.pow(c,t);for(;!a.eql(f,a.ONE);){if(a.eql(f,a.ZERO))return a.ZERO;let m=1;for(let p=a.sqr(f);m<l&&!a.eql(p,a.ONE);m++)p=a.sqr(p);let h=a.pow(d,Ke<<BigInt(l-m-1));d=a.sqr(h),u=a.mul(u,h),f=a.mul(f,d),l=m}return u}}function JS(r){if(r%qh===XS){let e=(r+Ke)/qh;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%xm===Em){let e=(r-Em)/xm;return function(n,o){let s=n.mul(o,as),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,as),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%jS,ZS(r)}var vm=(r,e)=>(Ae(r,e)&Ke)===Ke,eR=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function zh(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=eR.reduce((n,o)=>(n[o]="function",n),e);return hr(r,t)}function tR(r,e,t){if(t<at)throw new Error("Expected power > 0");if(t===at)return r.ONE;if(t===Ke)return e;let n=r.ONE,o=e;for(;t>at;)t&Ke&&(n=r.mul(n,o)),o=r.sqr(o),t>>=Ke;return n}function rR(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 Gh(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function wl(r,e,t=!1,n={}){if(r<=at)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=Gh(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=JS(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:ha(o),ZERO:at,ONE:Ke,create:c=>Ae(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error(`Invalid field element: expected bigint, got ${typeof c}`);return at<=c&&c<r},is0:c=>c===at,isOdd:c=>(c&Ke)===Ke,neg:c=>Ae(-c,r),eql:(c,l)=>c===l,sqr:c=>Ae(c*c,r),add:(c,l)=>Ae(c+l,r),sub:(c,l)=>Ae(c-l,r),mul:(c,l)=>Ae(c*l,r),pow:(c,l)=>tR(a,c,l),div:(c,l)=>Ae(c*yl(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>yl(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>rR(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?vn(c,s):fo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Lr(c):xn(c)}});return Object.freeze(a)}function _m(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 Sm(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 Yh(r){let e=Sm(r);return e+Math.ceil(e/2)}function Rm(r,e,t=!1){let n=r.length,o=Sm(e),s=Yh(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?xn(r):Lr(r),a=Ae(i,e-Ke)+Ke;return t?vn(a,o):fo(a,o)}var oR=BigInt(0),Xh=BigInt(1);function bl(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>oR;)s&Xh&&(i=i.add(a)),a=a.double(),s>>=Xh;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 f=1;f<a;f++)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),f=2**o,m=BigInt(o);for(let h=0;h<a;h++){let p=h*c,y=Number(i&u);i>>=m,y>c&&(y-=f,i+=Xh);let w=p,E=p+Math.abs(y)-1,b=h%2!==0,S=y<0;y===0?d=d.add(t(b,s[w])):l=l.add(t(S,s[E]))}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 pa(r){return zh(r.Fp),hr(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Gh(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Br=BigInt(0),Qt=BigInt(1),El=BigInt(2),sR=BigInt(8),iR={zip215:!0};function aR(r){let e=pa(r);return hr(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function xl(r){let e=aR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=El<<BigInt(a*8)-Qt,d=t.create,u=e.uvRatio||((T,v)=>{try{return{isValid:!0,value:t.sqrt(T*t.inv(v))}}catch{return{isValid:!1,value:Br}}}),f=e.adjustScalarBytes||(T=>T),m=e.domain||((T,v,M)=>{if(v.length||M)throw new Error("Contexts/pre-hash are not supported");return T}),h=T=>typeof T=="bigint"&&Br<T,p=(T,v)=>h(T)&&h(v)&&T<v,y=T=>T===Br||p(T,l);function w(T,v){if(p(T,v))return T;throw new Error(`Expected valid scalar < ${v}, got ${typeof T} ${T}`)}function E(T){return T===Br?T:w(T,n)}let b=new Map;function S(T){if(!(T instanceof R))throw new Error("ExtendedPoint expected")}class R{constructor(v,M,V,q){if(this.ex=v,this.ey=M,this.ez=V,this.et=q,!y(v))throw new Error("x required");if(!y(M))throw new Error("y required");if(!y(V))throw new Error("z required");if(!y(q))throw new Error("t required")}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(v){if(v instanceof R)throw new Error("extended point not allowed");let{x:M,y:V}=v||{};if(!y(M)||!y(V))throw new Error("invalid affine point");return new R(M,V,Qt,d(M*V))}static normalizeZ(v){let M=t.invertBatch(v.map(V=>V.ez));return v.map((V,q)=>V.toAffine(M[q])).map(R.fromAffine)}_setWindowSize(v){this._WINDOW_SIZE=v,b.delete(this)}assertValidity(){let{a:v,d:M}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:q,ez:ne,et:ie}=this,pe=d(V*V),le=d(q*q),ue=d(ne*ne),Le=d(ue*ue),Te=d(pe*v),ht=d(ue*d(Te+le)),pt=d(Le+d(M*d(pe*le)));if(ht!==pt)throw new Error("bad point: equation left != right (1)");let st=d(V*q),Rt=d(ne*ie);if(st!==Rt)throw new Error("bad point: equation left != right (2)")}equals(v){S(v);let{ex:M,ey:V,ez:q}=this,{ex:ne,ey:ie,ez:pe}=v,le=d(M*pe),ue=d(ne*q),Le=d(V*pe),Te=d(ie*q);return le===ue&&Le===Te}is0(){return this.equals(R.ZERO)}negate(){return new R(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:v}=e,{ex:M,ey:V,ez:q}=this,ne=d(M*M),ie=d(V*V),pe=d(El*d(q*q)),le=d(v*ne),ue=M+V,Le=d(d(ue*ue)-ne-ie),Te=le+ie,ht=Te-pe,pt=le-ie,st=d(Le*ht),Rt=d(Te*pt),mn=d(Le*pt),Ho=d(ht*Te);return new R(st,Rt,Ho,mn)}add(v){S(v);let{a:M,d:V}=e,{ex:q,ey:ne,ez:ie,et:pe}=this,{ex:le,ey:ue,ez:Le,et:Te}=v;if(M===BigInt(-1)){let H3=d((ne-q)*(ue+le)),q3=d((ne+q)*(ue-le)),df=d(q3-H3);if(df===Br)return this.double();let W3=d(ie*El*Te),z3=d(pe*El*Le),G3=z3+W3,Y3=q3+H3,X3=z3-W3,ZE=d(G3*df),JE=d(Y3*X3),ex=d(G3*X3),tx=d(df*Y3);return new R(ZE,JE,tx,ex)}let ht=d(q*le),pt=d(ne*ue),st=d(pe*V*Te),Rt=d(ie*Le),mn=d((q+ne)*(le+ue)-ht-pt),Ho=Rt-st,ra=Rt+st,$3=d(pt-M*ht),YE=d(mn*Ho),XE=d(ra*$3),QE=d(mn*$3),jE=d(Ho*ra);return new R(YE,XE,jE,QE)}subtract(v){return this.add(v.negate())}wNAF(v){return _.wNAFCached(this,b,v,R.normalizeZ)}multiply(v){let{p:M,f:V}=this.wNAF(w(v,n));return R.normalizeZ([M,V])[0]}multiplyUnsafe(v){let M=E(v);return M===Br?D:this.equals(D)||M===Qt?this:this.equals(A)?this.wNAF(M).p:_.unsafeLadder(this,M)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return _.unsafeLadder(this,n).is0()}toAffine(v){let{ex:M,ey:V,ez:q}=this,ne=this.is0();v==null&&(v=ne?sR:t.inv(q));let ie=d(M*v),pe=d(V*v),le=d(q*v);if(ne)return{x:Br,y:Qt};if(le!==Qt)throw new Error("invZ was invalid");return{x:ie,y:pe}}clearCofactor(){let{h:v}=e;return v===Qt?this:this.multiplyUnsafe(v)}static fromHex(v,M=!1){let{d:V,a:q}=e,ne=t.BYTES;v=Be("pointHex",v,ne);let ie=v.slice(),pe=v[ne-1];ie[ne-1]=pe&-129;let le=Lr(ie);le===Br||(M?w(le,l):w(le,t.ORDER));let ue=d(le*le),Le=d(ue-Qt),Te=d(V*ue-q),{isValid:ht,value:pt}=u(Le,Te);if(!ht)throw new Error("Point.fromHex: invalid y coordinate");let st=(pt&Qt)===Qt,Rt=(pe&128)!==0;if(!M&&pt===Br&&Rt)throw new Error("Point.fromHex: x=0 and x_0=1");return Rt!==st&&(pt=d(-pt)),R.fromAffine({x:pt,y:le})}static fromPrivateKey(v){return N(v).point}toRawBytes(){let{x:v,y:M}=this.toAffine(),V=vn(M,t.BYTES);return V[V.length-1]|=v&Qt?128:0,V}toHex(){return En(this.toRawBytes())}}R.BASE=new R(e.Gx,e.Gy,Qt,d(e.Gx*e.Gy)),R.ZERO=new R(Br,Qt,Qt,Br);let{BASE:A,ZERO:D}=R,_=bl(R,a*8);function k(T){return Ae(T,n)}function O(T){return k(Lr(T))}function N(T){let v=a;T=Be("private key",T,v);let M=Be("hashed private key",s(T),2*v),V=f(M.slice(0,v)),q=M.slice(v,2*v),ne=O(V),ie=A.multiply(ne),pe=ie.toRawBytes();return{head:V,prefix:q,scalar:ne,point:ie,pointBytes:pe}}function P(T){return N(T).pointBytes}function F(T=new Uint8Array,...v){let M=_n(...v);return O(s(m(M,Be("context",T),!!o)))}function Y(T,v,M={}){T=Be("message",T),o&&(T=o(T));let{prefix:V,scalar:q,pointBytes:ne}=N(v),ie=F(M.context,V,T),pe=A.multiply(ie).toRawBytes(),le=F(M.context,pe,ne,T),ue=k(ie+le*q);E(ue);let Le=_n(pe,vn(ue,t.BYTES));return Be("result",Le,a*2)}let I=iR;function C(T,v,M,V=I){let{context:q,zip215:ne}=V,ie=t.BYTES;T=Be("signature",T,2*ie),v=Be("message",v),o&&(v=o(v));let pe=Lr(T.slice(ie,2*ie)),le,ue,Le;try{le=R.fromHex(M,ne),ue=R.fromHex(T.slice(0,ie),ne),Le=A.multiplyUnsafe(pe)}catch{return!1}if(!ne&&le.isSmallOrder())return!1;let Te=F(q,ue.toRawBytes(),le.toRawBytes(),v);return ue.add(le.multiplyUnsafe(Te)).subtract(Le).clearCofactor().equals(R.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:P,sign:Y,verify:C,ExtendedPoint:R,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(T=8,v=R.BASE){return v._setWindowSize(T),v.multiply(BigInt(3)),v}}}}var ma=BigInt(0),Qh=BigInt(1);function cR(r){return hr(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function Am(r){let e=cR(r),{P:t}=e,n=b=>Ae(b,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(b=>b),c=e.powPminus2||(b=>Wh(b,t-BigInt(2),t));function l(b,S,R){let A=n(b*(S-R));return S=n(S-A),R=n(R+A),[S,R]}function d(b){if(typeof b=="bigint"&&ma<=b&&b<t)return b;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function f(b,S){let R=d(b),A=d(S),D=R,_=Qh,k=ma,O=R,N=Qh,P=ma,F;for(let I=BigInt(o-1);I>=ma;I--){let C=A>>I&Qh;P^=C,F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1],P=C;let $=_+k,T=n($*$),v=_-k,M=n(v*v),V=T-M,q=O+N,ne=O-N,ie=n(ne*$),pe=n(q*v),le=ie+pe,ue=ie-pe;O=n(le*le),N=n(D*n(ue*ue)),_=n(T*M),k=n(V*(T+n(u*V)))}F=l(P,_,O),_=F[0],O=F[1],F=l(P,k,N),k=F[0],N=F[1];let Y=c(k);return n(_*Y)}function m(b){return vn(n(b),s)}function h(b){let S=Be("u coordinate",b,s);return i===32&&(S[31]&=127),Lr(S)}function p(b){let S=Be("scalar",b),R=S.length;if(R!==s&&R!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${R}`);return Lr(a(S))}function y(b,S){let R=h(S),A=p(b),D=f(R,A);if(D===ma)throw new Error("Invalid private or public key received");return m(D)}let w=m(e.Gu);function E(b){return y(b,w)}return{scalarMult:y,scalarMultBase:E,getSharedSecret:(b,S)=>y(b,S),getPublicKey:b=>E(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var ga=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),Im=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),oV=BigInt(0),lR=BigInt(1),jh=BigInt(2),uR=BigInt(5),Dm=BigInt(10),dR=BigInt(20),fR=BigInt(40),Tm=BigInt(80);function km(r){let e=ga,n=r*r%e*r%e,o=Me(n,jh,e)*n%e,s=Me(o,lR,e)*r%e,i=Me(s,uR,e)*s%e,a=Me(i,Dm,e)*i%e,c=Me(a,dR,e)*a%e,l=Me(c,fR,e)*c%e,d=Me(l,Tm,e)*l%e,u=Me(d,Tm,e)*l%e,f=Me(u,Dm,e)*i%e;return{pow_p_5_8:Me(f,jh,e)*r%e,b2:n}}function Cm(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function hR(r,e){let t=ga,n=Ae(e*e*e,t),o=Ae(n*n*e,t),s=km(r*o).pow_p_5_8,i=Ae(r*n*s,t),a=Ae(e*i*i,t),c=i,l=Ae(i*Im,t),d=a===r,u=a===Ae(-r,t),f=a===Ae(-r*Im,t);return d&&(i=c),(u||f)&&(i=l),vm(i,t)&&(i=Ae(-i,t)),{isValid:d||u,value:i}}var Sn=wl(ga,void 0,!0),Zh={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Sn,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:uo,randomBytes:ss,adjustScalarBytes:Cm,uvRatio:hR},ri=xl(Zh);function Nm(r,e,t){if(e.length>255)throw new Error("Context is too big");return hl(Uh("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var sV=xl({...Zh,domain:Nm}),iV=xl({...Zh,domain:Nm,prehash:uo}),ya=Am({P:ga,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=ga,{pow_p_5_8:t,b2:n}=km(r);return Ae(Me(t,BigInt(3),e)*n,e)},adjustScalarBytes:Cm,randomBytes:ss});var pR=(Sn.ORDER+BigInt(3))/BigInt(8),aV=Sn.pow(jh,pR),cV=Sn.sqrt(Sn.neg(Sn.ONE)),lV=(Sn.ORDER-BigInt(5))/BigInt(8),uV=BigInt(486662);var dV=_m(Sn,Sn.neg(BigInt(486664)));var fV=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),hV=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),pV=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),mV=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var gV=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ni=32,Rn=64,vl=32;function Om(){let r=ri.utils.randomPrivateKey(),e=ri.getPublicKey(r);return{privateKey:Mm(r,e),publicKey:e}}function Pm(r){if(r.length!==vl)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=ri.getPublicKey(e);return{privateKey:Mm(e,t),publicKey:t}}function Lm(r,e){let t=r.subarray(0,vl);return ri.sign(e instanceof Uint8Array?e:e.subarray(),t)}function Bm(r,e,t){return ri.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function Mm(r,e){let t=new Uint8Array(Rn);for(let n=0;n<vl;n++)t[n]=r[n],t[vl+n]=e[n];return t}var $e={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 Jh={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function _l(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=$e.get();t*=8;async function c(u,f){let m=a.getRandomValues(new Uint8Array(s)),h=a.getRandomValues(new Uint8Array(n)),p={name:e,iv:h};typeof f=="string"&&(f=L(f));let y;if(f.length===0){y=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["encrypt"]);try{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["encrypt"])}}else{let E={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},b=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(E,b,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(p,y,u);return _e([m,p.iv,new Uint8Array(w)])}async function l(u,f){let m=u.subarray(0,s),h=u.subarray(s,s+n),p=u.subarray(s+n),y={name:e,iv:h};typeof f=="string"&&(f=L(f));let w;if(f.length===0)try{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",Jh,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:m,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let E=await a.subtle.decrypt(y,w,p);return new Uint8Array(E)}return{encrypt:c,decrypt:l}}async function oi(r,e){let n=await _l().encrypt(r,e);return ar.encode(n)}var si={};me(si,{KeyType:()=>Ue,PrivateKey:()=>Ur,PublicKey:()=>Mr});var Ue;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Ue||(Ue={}));var e0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(e0||(e0={}));(function(r){r.codec=()=>Ve(e0)})(Ue||(Ue={}));var Mr;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.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=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Mr||(Mr={}));var Ur;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Ue.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=Ue.codec().decode(t);break;case 2:o.Data=t.bytes();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ur||(Ur={}));var cs=class{_key;constructor(e){this._key=ii(e,ni)}verify(e,t){return Bm(this._key,t,e)}marshal(){return this._key}get bytes(){return Mr.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return fr(e)?e.then(({bytes:t})=>t):e.bytes}},An=class{_key;_publicKey;constructor(e,t){this._key=ii(e,Rn),this._publicKey=ii(t,ni)}sign(e){return Lm(this._key,e)}get public(){return new cs(this._publicKey)}marshal(){return this._key}get bytes(){return Ur.encode({Type:Ue.Ed25519,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return fr(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=lr.digest(this.public.bytes);return ce.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function gR(r){if(r.length>Rn){r=ii(r,Rn+ni);let n=r.subarray(0,Rn),o=r.subarray(Rn,r.length);return new An(n,o)}r=ii(r,Rn);let e=r.subarray(0,Rn),t=r.subarray(ni);return new An(e,t)}function yR(r){return r=ii(r,ni),new cs(r)}async function wR(){let{privateKey:r,publicKey:e}=Om();return new An(r,e)}async function t0(r){let{privateKey:e,publicKey:t}=Pm(r);return new An(e,t)}function ii(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 Fm={"P-256":256,"P-384":384,"P-521":521},bR=Object.keys(Fm),n0=bR.join(" / ");async function Vm(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${n0}`,"ERR_INVALID_CURVE");let e=await $e.get().subtle.generateKey({name:"ECDH",namedCurve:r},!0,["deriveBits"]),t=async(s,i)=>{let a;i!=null?a=await $e.get().subtle.importKey("jwk",xR(r,i),{name:"ECDH",namedCurve:r},!1,["deriveBits"]):a=e.privateKey;let c=await $e.get().subtle.importKey("jwk",$m(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await $e.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Fm[r]);return new Uint8Array(l,0,l.byteLength)},n=await $e.get().subtle.exportKey("jwk",e.publicKey);return{key:ER(n),genSharedKey:t}}var Km={"P-256":32,"P-384":48,"P-521":66};function ER(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 ${n0}`,"ERR_INVALID_CURVE");let e=Km[r.crv];return _e([Uint8Array.from([4]),Bh(r.x,e),Bh(r.y,e)],1+e*2)}function $m(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new g(`Unknown curve: ${r}. Must be ${n0}`,"ERR_INVALID_CURVE");let t=Km[r];if(!j(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:B(e.subarray(1,t+1),"base64url"),y:B(e.subarray(1+t),"base64url"),ext:!0}}var xR=(r,e)=>({...$m(r,e.public),d:B(e.private,"base64url")});var Hm=Vm;async function qm(r,e){let t=ar.decode(r);return _l().decrypt(t,e)}var Wm={SHA1:20,SHA256:32,SHA512:64};var vR={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},_R=async(r,e)=>{let t=await $e.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function zm(r,e){let t=vR[r],n=await $e.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return _R(n,o)},length:Wm[r]}}var Gm={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function Ym(r,e,t){let n=Gm[r];if(n==null){let E=Object.keys(Gm).join(" / ");throw new g(`unknown cipher type '${r}'. Must be ${E}`,"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=L("key expansion"),c=2*(s+o+i),l=await zm(e,t),d=await l.digest(a),u=[],f=0;for(;f<c;){let E=await l.digest(_e([d,a])),b=E.length;f+b>c&&(b=c-f),u.push(E),f+=b,d=await l.digest(d)}let m=c/2,h=_e(u),p=h.subarray(0,m),y=h.subarray(m,c),w=E=>({iv:E.subarray(0,s),cipherKey:E.subarray(s,s+o),macKey:E.subarray(s+o)});return{k1:w(p),k2:w(y)}}var p0={};me(p0,{MAX_RSA_KEY_SIZE:()=>ds,RsaPrivateKey:()=>wo,RsaPublicKey:()=>us,fromJwk:()=>YR,generateKeyPair:()=>XR,unmarshalRsaPrivateKey:()=>f0,unmarshalRsaPublicKey:()=>GR});function Vt(r){if(isNaN(r)||r<=0)throw new g("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return ss(r)}var yo={};me(yo,{exportToPem:()=>HR,importFromPem:()=>d0,jwkToPkcs1:()=>FR,jwkToPkix:()=>KR,pkcs1ToJwk:()=>UR,pkixToJwk:()=>VR});var Sl=class extends ei{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,ns(e);let n=Or(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 Js(this),this.iHash.update(e),this}digestInto(e){Js(this),Mh(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 Sl(r,e).update(t).digest();ho.create=(r,e)=>new Sl(r,e);function Xm(r,e,t,n){ns(r);let o=pm({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(io(s),io(i),io(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Or(e),l=Or(t),d=new Uint8Array(i),u=ho.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function Qm(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function jm(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=Xm(r,e,t,n),l,d=new Uint8Array(4),u=os(d),f=new Uint8Array(a.outputLen);for(let m=1,h=0;h<s;m++,h+=a.outputLen){let p=i.subarray(h,h+a.outputLen);u.setInt32(0,m,!1),(l=c._cloneInto(l)).update(d).digestInto(f),p.set(f.subarray(0,p.length));for(let y=1;y<o;y++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<p.length;w++)p[w]^=f[w]}}return Qm(a,c,i,l,f)}async function o0(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=Xm(r,e,t,n),d,u=new Uint8Array(4),f=os(u),m=new Uint8Array(c.outputLen);for(let h=1,p=0;p<s;h++,p+=c.outputLen){let y=a.subarray(p,p+c.outputLen);f.setInt32(0,h,!1),(d=l._cloneInto(d)).update(u).digestInto(m),y.set(m.subarray(0,y.length)),await hm(o-1,i,()=>{c._cloneInto(d).update(m).digestInto(m);for(let w=0;w<y.length;w++)y[w]^=m[w]})}return Qm(c,l,a,d,m)}var be=ke(Zm());function ls(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 Il(...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 i0(){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=ls(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,ls(s,8)-n}function Jm(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 e6(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 Kt(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 cK=Math.log(2);function Dl(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function a0(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 Cn(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 a0(this.items)}},wa=[new Uint8Array([1])],t6="0123456789";var li="",Vr=new ArrayBuffer(0),c0=new Uint8Array(0),Ea="EndOfContent",n6="OCTET STRING",o6="BIT STRING";function Nn(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?be.BufferSourceConverter.toUint8Array(s.valueHex):c0}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(!Cn(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",Vr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:be.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Dn=class{constructor({blockLength:e=0,error:t=li,warnings:n=[],valueBeforeDecode:o=c0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=be.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:be.Convert.ToHex(this.valueBeforeDecodeView)}}};Dn.NAME="baseBlock";var kt=class extends Dn{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'")}};kt.NAME="valueBlock";var Tl=class extends Nn(Dn){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?be.BufferSourceConverter.toUint8Array(e.valueHex):c0,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",Vr}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=be.BufferSourceConverter.toUint8Array(e);if(!Cn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let m=0;m<l.length;m++)f[m]=l[m];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=ls(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}}};Tl.NAME="identificationBlock";var kl=class extends Dn{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=be.BufferSourceConverter.toUint8Array(e);if(!Cn(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=ls(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",Vr;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}}};kl.NAME="lengthBlock";var W={},gt=class extends Dn{constructor({name:e=li,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new Tl(o),this.lenBlock=new kl(o),this.valueBlock=s?new s(o):new kt(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||s6(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?Vr: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():be.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${be.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 e6(t,n)}};gt.NAME="BaseBlock";function s6(r){if(r instanceof W.Constructed)for(let e of r.valueBlock.value)s6(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var Cl=class extends gt{constructor({value:e=li,...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}'`}};Cl.NAME="BaseStringBlock";var Nl=class extends Nn(kt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Nl.NAME="PrimitiveValueBlock";var i6,Ol=class extends gt{constructor(e={}){super(e,Nl),this.idBlock.isConstructed=!1}};i6=Ol;W.Primitive=i6;Ol.NAME="PRIMITIVE";function OR(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 fu(r,e=0,t=r.length){let n=e,o=new gt({},kt),s=new Dn;if(!Cn(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=gt;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=OR(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 ui(r){if(!r.byteLength){let e=new gt({},kt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return fu(be.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function PR(r,e){return r?1:e}var rn=class extends kt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=be.BufferSourceConverter.toUint8Array(e);if(!Cn(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(;PR(this.isIndefiniteForm,n)>0;){let i=fu(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===Ea)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Ea?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?Vr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};rn.NAME="ConstructedValueBlock";var a6,mo=class extends gt{constructor(e={}){super(e,rn),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 yw=Ae(()=>{gw();Td();Bo();t3();Ec()});var o3,ase,ww=Ae(()=>{Wy();Gy();zy();Yy();Qy();Gp();Xy();Qp();jy();Jy();cw();dw();fw();hw();yw();o3={...Vp,...Kp,...$p,...Hp,...qp,...Wp,...zp,...Yp,...Xp,...jp},ase={...r3,...n3}});function zi(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}var Pd=Ae(()=>{});function Od(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?zi(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}var s3=Ae(()=>{Pd()});function bw(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var Ew,i3,mk,Ld,a3=Ae(()=>{ww();s3();Ew=bw("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),i3=bw("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=Od(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),mk={utf8:Ew,"utf-8":Ew,hex:o3.base16,latin1:i3,ascii:i3,binary:i3,...o3},Ld=mk});var xw={};pe(xw,{toString:()=>gk});function gk(r,e="utf8"){let t=Ld[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 vw=Ae(()=>{a3()});var Rw={};pe(Rw,{fromString:()=>yk});function yk(r,e="utf8"){let t=Ld[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?zi(globalThis.Buffer.from(r,"utf-8")):t.decoder.decode(`${t.prefix}${r}`)}var Sw=Ae(()=>{a3();Pd()});var _w={};pe(_w,{concat:()=>wk});function wk(r,e){e||(e=r.reduce((o,s)=>o+s.length,0));let t=Od(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return zi(t)}var Aw=Ae(()=>{s3();Pd()});var l3=Ie((bse,Nw)=>{"use strict";var Iw=Sy(),Yi=Ly(),{names:xc}=Uy(),{toString:Bd}=(vw(),Ac(xw)),{fromString:Ek}=(Sw(),Ac(Rw)),{concat:bk}=(Aw(),Ac(_w)),Qi={};for(let r in xc){let e=r;Qi[xc[e]]=e}Object.freeze(Qi);function xk(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Bd(r,"base16")}function vk(r){return Ek(r,"base16")}function Rk(r){if(!(r instanceof Uint8Array))throw new Error("must be passed a Uint8Array");return Bd(Iw.encode("base58btc",r)).slice(1)}function Sk(r){let e=r instanceof Uint8Array?Bd(r):r;return Iw.decode("z"+e)}function Dw(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=Yi.decode(r);if(!kw(e))throw new Error(`multihash unknown function code: 0x${e.toString(16)}`);r=r.slice(Yi.decode.bytes);let t=Yi.decode(r);if(t<0)throw new Error(`multihash invalid length: ${t}`);if(r=r.slice(Yi.decode.bytes),r.length!==t)throw new Error(`multihash length inconsistent: 0x${Bd(r,"base16")}`);return{code:e,name:Qi[e],length:t,digest:r}}function _k(r,e,t){if(!r||e===void 0)throw new Error("multihash encode requires at least two args: digest, code");let n=Tw(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=Yi.encode(n),s=Yi.encode(t);return bk([o,s,r],o.length+s.length+r.length)}function Tw(r){let e=r;if(typeof r=="string"){if(xc[r]===void 0)throw new Error(`Unrecognized hash function named: ${r}`);e=xc[r]}if(typeof e!="number")throw new Error(`Hash function code should be a number. Got: ${e}`);if(Qi[e]===void 0&&!c3(e))throw new Error(`Unrecognized function code: ${e}`);return e}function c3(r){return r>0&&r<16}function kw(r){return!!(c3(r)||Qi[r])}function Cw(r){Dw(r)}function Ak(r){return Cw(r),r.subarray(0,2)}Nw.exports={names:xc,codes:Qi,toHexString:xk,fromHexString:vk,toB58String:Rk,fromB58String:Sk,decode:Dw,encode:_k,coerceCode:Tw,isAppCode:c3,validate:Cw,prefix:Ak,isValidCode:kw}});var Ww=Ie(Vd=>{"use strict";Object.defineProperty(Vd,"__esModule",{value:!0});var h3=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}))}}},Fd=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let o=new h3;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)}};Vd.EventIterator=Fd;Vd.default=Fd});var Gw=Ie(vc=>{"use strict";Object.defineProperty(vc,"__esModule",{value:!0});var p3=Ww();vc.EventIterator=p3.EventIterator;function Ok(r,e,t){return new p3.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}vc.subscribe=Ok;vc.default=p3.EventIterator});var fC={};pe(fC,{DEFAULT_SESSION_MAX_PROVIDERS:()=>ra,DEFAULT_SESSION_MIN_PROVIDERS:()=>ta,DEFAULT_SESSION_PROVIDER_QUERY_CONCURRENCY:()=>na,DEFAULT_SESSION_PROVIDER_QUERY_TIMEOUT:()=>mf,createHelia:()=>uC,libp2pDefaults:()=>Hd});var ta=1,ra=5,na=5,mf=5e3;var H3=Symbol.for("@libp2p/connection");var Jr=Symbol.for("@libp2p/content-routing");var Vo=Symbol.for("@libp2p/peer-discovery");var gf=Symbol.for("@libp2p/peer-id");function Ns(r){return r!=null&&!!r[gf]}var en=Symbol.for("@libp2p/peer-routing");var q3="keep-alive";var tn=Symbol.for("@libp2p/transport");var zn;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(zn||(zn={}));var jt=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"},m=class extends Error{code;props;constructor(e,t,n){super(e),this.code=t,this.name=n?.name??"CodeError",this.props=n??{}}},Ic=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 pn="ERR_TIMEOUT";var W3="ERR_NOT_FOUND",Ko="ERR_INVALID_MESSAGE";var le=(r,...e)=>{try{[...e]}catch{}};var Re=class extends EventTarget{#e=new Map;constructor(){super(),le(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))}},yf=class extends Event{detail;constructor(e,t){super(e,t),this.detail=t?.detail}},wt=globalThis.CustomEvent??yf;function Dc(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Yn(...r){let e=[];for(let t of r)Dc(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 Qn(...r){let e=[];for(let t of r)Dc(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 ot(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 Tc=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}},Ps=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new Tc(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 Tc(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 wf=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function st(r={}){return WE(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 WE(r,e){e=e??{};let t=e.onEnd,n=new Ps,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 Ps,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})},f=y=>i?o:(i=!0,y!=null?d(y):l({done:!0})),g=()=>(n=new Ps,f(),{done:!0}),h=y=>(f(y),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:g,throw:h,push:u,end:f,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((S,_)=>{E=()=>{_(new wf)},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 p=o;return o={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(y){return p.throw(y),t!=null&&(t(y),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:u,end(y){return p.end(y),t!=null&&(t(y),t=void 0),o},get readableLength(){return p.readableLength},onEmpty:y=>p.onEmpty(y)},o}var Ef=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 Os(r,e,t,n){let o=new Ef(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{try{if(n?.filter?.(l)===!1)return}catch(d){r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(d);return}r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l)},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var kc=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 kc(t?.errorMessage,t?.errorCode));let n,o=new kc(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 Cc=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(new jt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function GE(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Nc=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=GE(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,le(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 jt)}async join(e={}){let t=new Cc(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.signal?.removeEventListener("abort",this.onAbort)})}};function zE(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 mn=class extends Re{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=zE(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 Nc(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail: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 jt)}),this.clear()}async onEmpty(e){this.size!==0&&await Os(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Os(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Os(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=st({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 m("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 Vt=class extends mn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var Pc=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let s=0,i=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let d=this.readAtomically(()=>{let u=this.readChar();if(u===void 0)return;let f=Number.parseInt(u,e);if(!Number.isNaN(f))return f});if(d===void 0)break;if(s*=e,s+=d,s>l||(i+=1,t!==void 0&&i>t))return}if(i!==0)return!n&&c&&i>1?void 0:s})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let i=this.readSeparator(":",n,()=>this.readIPv4Addr());if(i!==void 0)return t[o]=i[0],t[o+1]=i[1],t[o+2]=i[2],t[o+3]=i[3],[o+4,!0]}let s=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(s===void 0)return[o,!1];t[o]=s>>8,t[o+1]=s&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let s=new Uint8Array(14),i=16-(n+2),[a]=e(s.subarray(0,i));return t.set(s.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var G3=45,YE=15,Ls=new Pc;function bf(r){if(!(r.length>YE))return Ls.new(r).parseWith(()=>Ls.readIPv4Addr())}function xf(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>G3))return Ls.new(r).parseWith(()=>Ls.readIPv6Addr())}function Oc(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>G3))return Ls.new(r).parseWith(()=>Ls.readIPAddr())}function Bs(r){return!!bf(r)}function Us(r){return!!xf(r)}function Lc(r){return!!Oc(r)}var Af={};pe(Af,{base58btc:()=>Ge,base58flickr:()=>eb});var oN=new Uint8Array(0);function z3(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 gn(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 Y3(r){return new TextEncoder().encode(r)}function Q3(r){return new TextDecoder().decode(r)}function QE(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(h){if(h instanceof Uint8Array||(ArrayBuffer.isView(h)?h=new Uint8Array(h.buffer,h.byteOffset,h.byteLength):Array.isArray(h)&&(h=Uint8Array.from(h))),!(h instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(h.length===0)return"";for(var p=0,y=0,w=0,b=h.length;w!==b&&h[w]===0;)w++,p++;for(var E=(b-w)*d+1>>>0,S=new Uint8Array(E);w!==b;){for(var _=h[w],A=0,D=E-1;(_!==0||A<y)&&D!==-1;D--,A++)_+=256*S[D]>>>0,S[D]=_%a>>>0,_=_/a>>>0;if(_!==0)throw new Error("Non-zero carry");y=A,w++}for(var R=E-y;R!==E&&S[R]===0;)R++;for(var k=c.repeat(p);R<E;++R)k+=r.charAt(S[R]);return k}function f(h){if(typeof h!="string")throw new TypeError("Expected String");if(h.length===0)return new Uint8Array;var p=0;if(h[p]!==" "){for(var y=0,w=0;h[p]===c;)y++,p++;for(var b=(h.length-p)*l+1>>>0,E=new Uint8Array(b);h[p];){var S=t[h.charCodeAt(p)];if(S===255)return;for(var _=0,A=b-1;(S!==0||_<w)&&A!==-1;A--,_++)S+=a*E[A]>>>0,E[A]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");w=_,p++}if(h[p]!==" "){for(var D=b-w;D!==b&&E[D]===0;)D++;for(var R=new Uint8Array(y+(b-D)),k=y;D!==b;)R[k++]=E[D++];return R}}}function g(h){var p=f(h);if(p)return p;throw new Error(`Non-${e} character`)}return{encode:u,decodeUnsafe:f,decode:g}}var XE=QE,jE=XE,j3=jE;var vf=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")}},Rf=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 Z3(this,e)}},Sf=class{decoders;constructor(e){this.decoders=e}or(e){return Z3(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 Z3(r,e){return new Sf({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var _f=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 vf(e,t,n),this.decoder=new Rf(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Ms({name:r,prefix:e,encode:t,decode:n}){return new _f(r,e,t,n)}function Xn({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=j3(t,r);return Ms({prefix:e,name:r,encode:n,decode:s=>gn(o(s))})}function ZE(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 JE(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 Ms({prefix:e,name:r,encode(o){return JE(o,n,t)},decode(o){return ZE(o,n,t,r)}})}var Ge=Xn({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),eb=Xn({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var If={};pe(If,{base32:()=>lt,base32hex:()=>nb,base32hexpad:()=>sb,base32hexpadupper:()=>ib,base32hexupper:()=>ob,base32pad:()=>tb,base32padupper:()=>rb,base32upper:()=>J3,base32z:()=>ab});var lt=Qe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),J3=Qe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),tb=Qe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),rb=Qe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),nb=Qe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ob=Qe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),sb=Qe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),ib=Qe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),ab=Qe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var hr={};pe(hr,{Digest:()=>$o,create:()=>Cr,decode:()=>Nr,equals:()=>Tf});var cb=r4,e4=128,lb=127,ub=~lb,db=Math.pow(2,31);function r4(r,e,t){e=e||[],t=t||0;for(var n=t;r>=db;)e[t++]=r&255|e4,r/=128;for(;r&ub;)e[t++]=r&255|e4,r>>>=7;return e[t]=r|0,r4.bytes=t-n+1,e}var fb=Df,hb=128,t4=127;function Df(r,n){var t=0,n=n||0,o=0,s=n,i,a=r.length;do{if(s>=a)throw Df.bytes=0,new RangeError("Could not decode varint");i=r[s++],t+=o<28?(i&t4)<<o:(i&t4)*Math.pow(2,o),o+=7}while(i>=hb);return Df.bytes=s-n,t}var pb=Math.pow(2,7),mb=Math.pow(2,14),gb=Math.pow(2,21),yb=Math.pow(2,28),wb=Math.pow(2,35),Eb=Math.pow(2,42),bb=Math.pow(2,49),xb=Math.pow(2,56),vb=Math.pow(2,63),Rb=function(r){return r<pb?1:r<mb?2:r<gb?3:r<yb?4:r<wb?5:r<Eb?6:r<bb?7:r<xb?8:r<vb?9:10},Sb={encode:cb,decode:fb,encodingLength:Rb},_b=Sb,oa=_b;function sa(r,e=0){return[oa.decode(r,e),oa.decode.bytes]}function Fs(r,e,t=0){return oa.encode(r,e,t),e}function Vs(r){return oa.encodingLength(r)}function Cr(r,e){let t=e.byteLength,n=Vs(r),o=n+Vs(t),s=new Uint8Array(o+t);return Fs(r,s,0),Fs(t,s,n),s.set(e,o),new $o(r,t,e,s)}function Nr(r){let e=gn(r),[t,n]=sa(e),[o,s]=sa(e.subarray(n)),i=e.subarray(n+s);if(i.byteLength!==o)throw new Error("Incorrect length");return new $o(t,o,i,e)}function Tf(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&z3(r.bytes,t.bytes)}}var $o=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function n4(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return Ib(t,kf(r),e??Ge.encoder);default:return Db(t,kf(r),e??lt.encoder)}}var o4=new WeakMap;function kf(r){let e=o4.get(r);if(e==null){let t=new Map;return o4.set(r,t),t}return e}var ae=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!==ia)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==Tb)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=Cr(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&&Tf(e.multihash,n.multihash)}toString(e){return n4(this,e)}toJSON(){return{"/":n4(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??s4(n,o,s.bytes))}else if(t[kb]===!0){let{version:n,multihash:o,code:s}=t,i=Nr(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!==ia)throw new Error(`Version 0 CID must use dag-pb (code: ${ia}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=s4(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,ia,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=gn(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 $o(t.multihashCode,t.digestSize,s,o);return[t.version===0?r.createV0(i):r.createV1(t.codec,i),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[u,f]=sa(e.subarray(t));return t+=f,u},o=n(),s=ia;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]=Ab(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 kf(s).set(n,e),s}};function Ab(r,e){switch(r[0]){case"Q":{let t=e??Ge;return[Ge.prefix,t.decode(`${Ge.prefix}${r}`)]}case Ge.prefix:{let t=e??Ge;return[Ge.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 Ib(r,e,t){let{prefix:n}=t;if(n!==Ge.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 Db(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 ia=112,Tb=18;function s4(r,e,t){let n=Vs(r),o=n+Vs(e),s=new Uint8Array(o+t.byteLength);return Fs(r,s,0),Fs(e,s,n),s.set(t,o),s}var kb=Symbol.for("@ipld/js-cid/CID");function J(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 Cf={};pe(Cf,{base10:()=>Cb});var Cb=Xn({prefix:"9",name:"base10",alphabet:"0123456789"});var Nf={};pe(Nf,{base16:()=>Nb,base16upper:()=>Pb});var Nb=Qe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Pb=Qe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Pf={};pe(Pf,{base2:()=>Ob});var Ob=Qe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Of={};pe(Of,{base256emoji:()=>Fb});var i4=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}"),Lb=i4.reduce((r,e,t)=>(r[t]=e,r),[]),Bb=i4.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Ub(r){return r.reduce((e,t)=>(e+=Lb[t],e),"")}function Mb(r){let e=[];for(let t of r){let n=Bb[t.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(n)}return new Uint8Array(e)}var Fb=Ms({prefix:"\u{1F680}",name:"base256emoji",encode:Ub,decode:Mb});var Lf={};pe(Lf,{base36:()=>jn,base36upper:()=>Vb});var jn=Xn({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Vb=Xn({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Uf={};pe(Uf,{base64:()=>ut,base64pad:()=>Kb,base64url:()=>Bf,base64urlpad:()=>$b});var ut=Qe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Kb=Qe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Bf=Qe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),$b=Qe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Mf={};pe(Mf,{base8:()=>Hb});var Hb=Qe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Ff={};pe(Ff,{identity:()=>qb});var qb=Ms({prefix:"\0",name:"identity",encode:r=>Q3(r),decode:r=>Y3(r)});var TN=new TextEncoder,kN=new TextDecoder;var a4=512;var Uc=85;var Kf={};pe(Kf,{identity:()=>pr});var l4=0,Wb="identity",u4=gn;function Gb(r){return Cr(l4,u4(r))}var pr={code:l4,name:Wb,encode:u4,digest:Gb};var Wf={};pe(Wf,{sha256:()=>De,sha512:()=>qf});function Hf({name:r,code:e,encode:t}){return new $f(r,e,t)}var $f=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?Cr(this.code,t):t.then(n=>Cr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function f4(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var De=Hf({name:"sha2-256",code:18,encode:f4("SHA-256")}),qf=Hf({name:"sha2-512",code:19,encode:f4("SHA-512")});var mr={...Ff,...Pf,...Mf,...Cf,...Nf,...If,...Lf,...Af,...Uf,...Of},HN={...Wf,...Kf};function Be(r=0){return new Uint8Array(r)}function ze(r=0){return new Uint8Array(r)}function p4(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var h4=p4("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Gf=p4("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}),zb={utf8:h4,"utf-8":h4,hex:mr.base16,latin1:Gf,ascii:Gf,binary:Gf,...mr},Mc=zb;function P(r,e="utf8"){let t=Mc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var Yb=Math.pow(2,7),Qb=Math.pow(2,14),Xb=Math.pow(2,21),zf=Math.pow(2,28),Yf=Math.pow(2,35),Qf=Math.pow(2,42),Xf=Math.pow(2,49),Te=128,kt=127;function Ce(r){if(r<Yb)return 1;if(r<Qb)return 2;if(r<Xb)return 3;if(r<zf)return 4;if(r<Yf)return 5;if(r<Qf)return 6;if(r<Xf)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function jf(r,e,t=0){switch(Ce(r)){case 8:e[t++]=r&255|Te,r/=128;case 7:e[t++]=r&255|Te,r/=128;case 6:e[t++]=r&255|Te,r/=128;case 5:e[t++]=r&255|Te,r/=128;case 4:e[t++]=r&255|Te,r>>>=7;case 3:e[t++]=r&255|Te,r>>>=7;case 2:e[t++]=r&255|Te,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function jb(r,e,t=0){switch(Ce(r)){case 8:e.set(t++,r&255|Te),r/=128;case 7:e.set(t++,r&255|Te),r/=128;case 6:e.set(t++,r&255|Te),r/=128;case 5:e.set(t++,r&255|Te),r/=128;case 4:e.set(t++,r&255|Te),r>>>=7;case 3:e.set(t++,r&255|Te),r>>>=7;case 2:e.set(t++,r&255|Te),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Zf(r,e){let t=r[e],n=0;if(n+=t&kt,t<Te||(t=r[e+1],n+=(t&kt)<<7,t<Te)||(t=r[e+2],n+=(t&kt)<<14,t<Te)||(t=r[e+3],n+=(t&kt)<<21,t<Te)||(t=r[e+4],n+=(t&kt)*zf,t<Te)||(t=r[e+5],n+=(t&kt)*Yf,t<Te)||(t=r[e+6],n+=(t&kt)*Qf,t<Te)||(t=r[e+7],n+=(t&kt)*Xf,t<Te))return n;throw new RangeError("Could not decode varint")}function Zb(r,e){let t=r.get(e),n=0;if(n+=t&kt,t<Te||(t=r.get(e+1),n+=(t&kt)<<7,t<Te)||(t=r.get(e+2),n+=(t&kt)<<14,t<Te)||(t=r.get(e+3),n+=(t&kt)<<21,t<Te)||(t=r.get(e+4),n+=(t&kt)*zf,t<Te)||(t=r.get(e+5),n+=(t&kt)*Yf,t<Te)||(t=r.get(e+6),n+=(t&kt)*Qf,t<Te)||(t=r.get(e+7),n+=(t&kt)*Xf,t<Te))return n;throw new RangeError("Could not decode varint")}function Ve(r,e,t=0){return e==null&&(e=ze(Ce(r))),e instanceof Uint8Array?jf(r,e,t):jb(r,e,t)}function Bt(r,e=0){return r instanceof Uint8Array?Zf(r,e):Zb(r,e)}function xe(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}var cP=parseInt("0xFFFF",16),lP=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function B(r,e="utf8"){let t=Mc[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}var y4=Bs,ox=Us,Jf=function(r){let e=0;if(r=r.toString().trim(),y4(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(ox(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let s=y4(t[n]),i;s&&(i=Jf(t[n]),t[n]=P(i.slice(0,2),"base16")),i!=null&&++n<8&&t.splice(n,0,P(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")},w4=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 Ks={},eh={},ix=[[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"]];ix.forEach(r=>{let e=ax(...r);eh[e.code]=e,Ks[e.name]=e});function ax(r,e,t,n,o){return{code:r,size:e,name:t,resolvable:!!n,path:!!o}}function Z(r){if(typeof r=="number"){if(eh[r]!=null)return eh[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ks[r]!=null)return Ks[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var GP=Z("ip4"),zP=Z("ip6"),YP=Z("ipcidr");function rh(r,e){switch(Z(r).code){case 4:case 41:return lx(e);case 42:return x4(e);case 6:case 273:case 33:case 132:return R4(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return x4(e);case 421:return hx(e);case 444:return v4(e);case 445:return v4(e);case 466:return fx(e);default:return P(e,"base16")}}function nh(r,e){switch(Z(r).code){case 4:return E4(e);case 41:return E4(e);case 42:return b4(e);case 6:case 273:case 33:case 132:return oh(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return b4(e);case 421:return ux(e);case 444:return px(e);case 445:return mx(e);case 466:return dx(e);default:return B(e,"base16")}}var th=Object.values(mr).map(r=>r.decoder),cx=function(){let r=th[0].or(th[1]);return th.slice(2).forEach(e=>r=r.or(e)),r}();function E4(r){if(!Lc(r))throw new Error("invalid ip address");return Jf(r)}function lx(r){let e=w4(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Lc(e))throw new Error("invalid ip address");return e}function oh(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function R4(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function b4(r){let e=B(r),t=Uint8Array.from(Ve(e.length));return xe([t,e],t.length+e.length)}function x4(r){let e=Bt(r);if(r=r.slice(Ce(e)),r.length!==e)throw new Error("inconsistent lengths");return P(r)}function ux(r){let e;r[0]==="Q"||r[0]==="1"?e=Nr(Ge.decode(`z${r}`)).bytes:e=ae.parse(r).multihash.bytes;let t=Uint8Array.from(Ve(e.length));return xe([t,e],t.length+e.length)}function dx(r){let e=cx.decode(r),t=Uint8Array.from(Ve(e.length));return xe([t,e],t.length+e.length)}function fx(r){let e=Bt(r),t=r.slice(Ce(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+P(t,"base64url")}function hx(r){let e=Bt(r),t=r.slice(Ce(e));if(t.length!==e)throw new Error("inconsistent lengths");return P(t,"base58btc")}function px(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=oh(n);return xe([t,o],t.length+o.length)}function mx(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=oh(n);return xe([t,o],t.length+o.length)}function v4(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=P(e,"base32"),o=R4(t);return`${n}:${o}`}function S4(r){r=sh(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=Z(i);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(s++,s>=o.length)throw A4("invalid address: "+r);if(a.path===!0){n=sh(o.slice(s).join("/")),e.push([a.code,nh(a.code,n)]),t.push([a.code,n]);break}let c=nh(a.code,o[s]);e.push([a.code,c]),t.push([a.code,rh(a.code,c)])}return{string:_4(t),bytes:ah(e),tuples:e,stringTuples:t,path:n}}function ih(r){let e=[],t=[],n=null,o=0;for(;o<r.length;){let s=Bt(r,o),i=Ce(s),a=Z(s),c=gx(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 A4("Invalid address Uint8Array: "+P(r,"base16"));e.push([s,l]);let d=rh(s,l);if(t.push([s,d]),a.path===!0){n=d;break}}return{bytes:Uint8Array.from(r),string:_4(t),tuples:e,stringTuples:t,path:n}}function _4(r){let e=[];return r.map(t=>{let n=Z(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),sh(e.join("/"))}function ah(r){return xe(r.map(e=>{let t=Z(e[0]),n=Uint8Array.from(Ve(t.code));return e.length>1&&e[1]!=null&&(n=xe([n,e[1]])),n}))}function gx(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+Ce(t)}}function sh(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function A4(r){return new Error("Error parsing address: "+r)}var yx=Symbol.for("nodejs.util.inspect.custom"),ch=Symbol.for("@multiformats/js-multiaddr/multiaddr"),wx=[Z("dns").code,Z("dns4").code,Z("dns6").code,Z("dnsaddr").code],Fc=class r{bytes;#e;#t;#r;#i;[ch]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=ih(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=S4(e)}else if(Zn(e))t=ih(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.#i=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,o,s="",i=Z("tcp"),a=Z("udp"),c=Z("ip4"),l=Z("ip6"),d=Z("dns6"),u=Z("ip6zone");for(let[g,h]of this.stringTuples())g===u.code&&(s=`%${h??""}`),wx.includes(g)&&(t=i.name,o=443,n=`${h??""}${s}`,e=g===d.code?6:4),(g===i.code||g===a.code)&&(t=Z(g).name,o=parseInt(h??"")),(g===c.code||g===l.code)&&(t=Z(g).name,n=`${h??""}${s}`,e=g===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({},Z(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>Z(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(ah(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,o])=>{n===Ks.p2p.code&&e.push([n,o]),n===Ks["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?P(Ge.decode(`z${n}`),"base58btc"):P(ae.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#i}equals(e){return J(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(s=>s.resolvable);if(t==null)return[this];let n=$s.get(t.name);if(n==null)throw new m(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(s=>X(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)}[yx](){return`Multiaddr(${this.#e})`}};var $s=new Map;function Zn(r){return!!r?.[ch]}function X(r){return new Fc(r)}var Ex=r=>r.toString().split("/").slice(1),aa=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),Se=r=>({match:e=>aa(t=>t===r).match(e),pattern:r}),$c=()=>({match:r=>aa(e=>typeof e=="string").match(r),pattern:"{string}"}),Hc=()=>({match:r=>aa(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Et=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Ge.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),Vc=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Bf.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),Ut=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),Zt=(...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(", ")})`}),Ne=(...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=Ex(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 uh=Ne(Se("dns4"),$c()),dh=Ne(Se("dns6"),$c()),fh=Ne(Se("dnsaddr"),$c()),I4=Ne(Se("dns"),$c()),RO=rt(uh),SO=rt(dh),_O=rt(fh),qc=rt(Zt(I4,fh,uh,dh)),D4=Ne(Se("ip4"),aa(Bs)),T4=Ne(Se("ip6"),aa(Us)),k4=Zt(D4,T4),rn=Zt(k4,I4,uh,dh,fh),C4=rt(rn),AO=rt(D4),IO=rt(T4),N4=rt(k4),Wc=Ne(rn,Se("tcp"),Hc()),ca=Ne(rn,Se("udp"),Hc()),bx=Zt(Wc,ca),DO=rt(Wc),TO=rt(ca),hh=Ne(ca,Se("quic")),Gc=Ne(ca,Se("quic-v1")),xx=Zt(hh,Gc),kO=rt(hh),CO=rt(Gc),lh=Zt(rn,Wc,ca,hh,Gc),P4=Zt(Ne(lh,Se("ws"),Ut(Et()))),NO=rt(P4),O4=Zt(Ne(lh,Se("wss"),Ut(Et())),Ne(lh,Se("tls"),Se("ws"),Ut(Et()))),PO=rt(O4),L4=Ne(bx,Se("webrtc-direct"),Vc(),Ut(Vc()),Ut(Et())),B4=rt(L4),U4=Ne(Gc,Se("webtransport"),Vc(),Vc(),Ut(Et())),zc=rt(U4),Kc=Zt(P4,O4,Ne(Wc,Ut(Et())),Ne(xx,Ut(Et())),Ne(rn,Ut(Et())),L4,U4,Et()),OO=rt(Kc),vx=Ne(Kc,Se("p2p-circuit"),Et()),Ho=rt(vx),Rx=Zt(Ne(Kc,Se("p2p-circuit"),Se("webrtc"),Et()),Ne(Kc,Se("webrtc"),Ut(Et())),Se("webrtc")),M4=rt(Rx),Sx=Zt(Ne(rn,Se("tcp"),Hc(),Se("http"),Ut(Et())),Ne(rn,Se("http"),Ut(Et()))),F4=rt(Sx),_x=Zt(Ne(rn,Se("tcp"),Zt(Ne(Se("443"),Se("http")),Ne(Hc(),Se("https"))),Ut(Et())),Ne(rn,Se("tls"),Se("http"),Ut(Et())),Ne(rn,Se("https"),Ut(Et()))),V4=rt(_x);var a8=Ye(ph(),1);function Mx(r){return r[Symbol.asyncIterator]!=null}function Fx(r){if(Mx(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Kt=Fx;var G4=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 Xc(r){return!!r?.[G4]}var ue=class r{bufs;length;[G4]=!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(Xc(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(Xc(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(Xc(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 xe(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:xe(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(!Xc(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let s=256,i=new Int32Array(s);for(let u=0;u<s;u++)i[u]=-1;for(let u=0;u<o;u++)i[n[u]]=u;let a=i,c=this.byteLength-n.byteLength,l=n.byteLength-1,d;for(let u=t;u<=c;u+=d){d=0;for(let f=l;f>=0;f--){let g=this.get(u+f);if(n[f]!==g){d=Math.max(1,f-a[g]);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=Be(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=Be(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=Be(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=Be(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=Be(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=Be(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=Be(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=Be(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(!J(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 jc(r){return r[Symbol.asyncIterator]!=null}var Zc=r=>{let e=Ce(r),t=ze(e);return Ve(r,t),Zc.bytes=e,t};Zc.bytes=0;function gr(r,e){e=e??{};let t=e.lengthEncoder??Zc;function*n(o){let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return jc(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}gr.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??Zc;return new ue(t(r.byteLength),r)};var Gs=Ye(Wo(),1);var Kx=8,$x=1024*1024*4,Go;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(Go||(Go={}));var mh=r=>{let e=Bt(r);return mh.bytes=Ce(e),e};mh.bytes=0;function $t(r,e){let t=new ue,n=Go.LENGTH,o=-1,s=e?.lengthDecoder??mh,i=e?.maxLengthLength??Kx,a=e?.maxDataLength??$x;function*c(){for(;t.byteLength>0;){if(n===Go.LENGTH)try{if(o=s(t),o<0)throw(0,Gs.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>a)throw(0,Gs.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=Go.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>i)throw(0,Gs.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===Go.DATA){if(t.byteLength<o)break;let l=t.sublist(0,o);t.consume(o),e?.onData!=null&&e.onData(l),yield l,n=Go.LENGTH}}}return jc(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw(0,Gs.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,Gs.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}})};var gh=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 Q4(){return new gh}var el=class extends Error{code;constructor(e,t){super(e),this.code=t}},yh=class extends el{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function X4(r,e){let t=Q4();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 ue;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new yh("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:f}=await Promise.race([n.next(),l]);return u===!0?new ue:f}for(;o.byteLength<i;){let{value:u,done:f}=await Promise.race([n.next(),l]);if(f===!0)throw new el("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 tl=class extends Error{code;constructor(e,t){super(e),this.code=t}};function yr(r,e={}){let t=X4(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Ce(e.maxDataLength));let n=e?.lengthDecoder??Bt,o=e?.lengthEncoder??Ve;return{read:async i=>{let a=-1,c=new ue;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 tl("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new tl("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new ue(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new ue(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Hx(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 zs=Hx;function qx(r){return r[Symbol.asyncIterator]!=null}function Wx(r,e){if(qx(r))return async function*(){for await(let a of r)yield e(a)}();let t=zs(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){yield await s;for await(let a of t)yield e(a)}();let i=e;return function*(){yield s;for(let a of t)yield i(a)}()}var bt=Wx;function Gx(r){return r[Symbol.asyncIterator]!=null}function zx(...r){let e=[];for(let t of r)Gx(t)||e.push(t);return e.length===r.length?function*(){for(let t of e)yield*t}():async function*(){let t=st({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 ft=zx;function Ke(r,...e){if(r==null)throw new Error("Empty pipeline");if(wh(r)){let n=r;r=()=>n.source}else if(Z4(r)||j4(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&wh(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++)wh(t[n])&&(t[n]=Qx(t[n]));return Yx(...t)}var Yx=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},j4=r=>r?.[Symbol.asyncIterator]!=null,Z4=r=>r?.[Symbol.iterator]!=null,wh=r=>r==null?!1:r.sink!=null&&r.source!=null,Qx=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=st({objectMode:!0});t.then(()=>{n.end()},i=>{n.end(i)});let o,s=r.source;if(j4(s))o=async function*(){yield*s,n.end()};else if(Z4(s))o=function*(){yield*s,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return ft(n,o())}return r.source};function Xx(r){return r[Symbol.asyncIterator]!=null}function jx(r,e){return Xx(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 Jn=jx;var me=class extends Event{constructor(e,t){super(e),this.detail=t}};var la="/ipfs/bitswap/1.2.0";var Eh=new Float32Array([-0]),eo=new Uint8Array(Eh.buffer);function J4(r,e,t){Eh[0]=r,e[t]=eo[0],e[t+1]=eo[1],e[t+2]=eo[2],e[t+3]=eo[3]}function e8(r,e){return eo[0]=r[e],eo[1]=r[e+1],eo[2]=r[e+2],eo[3]=r[e+3],Eh[0]}var bh=new Float64Array([-0]),Ct=new Uint8Array(bh.buffer);function t8(r,e,t){bh[0]=r,e[t]=Ct[0],e[t+1]=Ct[1],e[t+2]=Ct[2],e[t+3]=Ct[3],e[t+4]=Ct[4],e[t+5]=Ct[5],e[t+6]=Ct[6],e[t+7]=Ct[7]}function r8(r,e){return Ct[0]=r[e],Ct[1]=r[e+1],Ct[2]=r[e+2],Ct[3]=r[e+3],Ct[4]=r[e+4],Ct[5]=r[e+5],Ct[6]=r[e+6],Ct[7]=r[e+7],bh[0]}var Zx=BigInt(Number.MAX_SAFE_INTEGER),Jx=BigInt(Number.MIN_SAFE_INTEGER),er=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 zo;if(e<Zx&&e>Jx)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>n8&&(o=0n,++n>n8&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return zo;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):zo}},zo=new er(0,0);zo.toBigInt=function(){return 0n};zo.zzEncode=zo.zzDecode=function(){return this};zo.length=function(){return 1};var n8=4294967296n;function o8(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 s8(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 xh(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 rl(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var vh=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 rl(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Pr(this,4);return rl(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Pr(this,4);let e=e8(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Pr(this,4);let e=r8(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 s8(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 er(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=rl(this.buf,this.pos+=4),t=rl(this.buf,this.pos+=4);return new er(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=Zf(this.buf,this.pos);return this.pos+=Ce(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 Rh(r){return new vh(r instanceof Uint8Array?r:r.subarray())}function ee(r,e,t){let n=Rh(r);return e.decode(n,void 0,t)}function Sh(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 Yo=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function _h(){}var Ih=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},ev=Sh();function tv(r){return globalThis.Buffer!=null?ze(r):ev(r)}var da=class{len;head;tail;states;constructor(){this.len=0,this.head=new Yo(_h,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Yo(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new Dh((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(nl,10,er.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=er.fromBigInt(e);return this._push(nl,t.length(),t)}uint64Number(e){return this._push(jf,Ce(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=er.fromBigInt(e).zzEncode();return this._push(nl,t.length(),t)}sint64Number(e){let t=er.fromNumber(e).zzEncode();return this._push(nl,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Ah,1,e?1:0)}fixed32(e){return this._push(ua,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=er.fromBigInt(e);return this._push(ua,4,t.lo)._push(ua,4,t.hi)}fixed64Number(e){let t=er.fromNumber(e);return this._push(ua,4,t.lo)._push(ua,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(J4,4,e)}double(e){return this._push(t8,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Ah,1,0):this.uint32(t)._push(nv,t,e)}string(e){let t=o8(e);return t!==0?this.uint32(t)._push(xh,t,e):this._push(Ah,1,0)}fork(){return this.states=new Ih(this),this.head=this.tail=new Yo(_h,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 Yo(_h,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=tv(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function Ah(r,e,t){e[t]=r&255}function rv(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var Dh=class extends Yo{next;constructor(e,t){super(rv,e,t),this.next=void 0}};function nl(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 ua(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 nv(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(da.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ov,e,r),this},da.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(sv,e,r),this});function ov(r,e,t){e.set(r,t)}function sv(r,e,t){r.length<40?xh(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(B(r),t)}function Th(){return new da}function te(r,e){let t=Th();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Ys;(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"})(Ys||(Ys={}));function ol(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 ol("enum",Ys.VARINT,t,n)}function re(r,e){return ol("message",Ys.LENGTH_DELIMITED,r,e)}var fa=class extends Error{code;constructor(e,t,n){super(e,n),this.code=t}};var Xe;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(Xe||(Xe={}));var kh;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(kh||(kh={}));(function(r){r.codec=()=>$e(kh)})(Xe||(Xe={}));var sl;(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),Xe.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={cid:Be(0),priority:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.cid=t.bytes();break}case 2:{o.priority=t.int32();break}case 3:{o.cancel=t.bool();break}case 4:{o.wantType=Xe.codec().decode(t);break}case 5:{o.sendDontHave=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())})(sl||(sl={}));var il;(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),sl.codec().encode(s,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={entries:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.entries.push(sl.codec().decode(t,t.uint32()));break}case 2:{o.full=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())})(il||(il={}));var al;(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)=>{let o={prefix:Be(0),data:Be(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.prefix=t.bytes();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())})(al||(al={}));var wr;(function(r){r.HaveBlock="HaveBlock",r.DontHaveBlock="DontHaveBlock"})(wr||(wr={}));var cl;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DontHaveBlock=1]="DontHaveBlock"})(cl||(cl={}));(function(r){r.codec=()=>$e(cl)})(wr||(wr={}));var ll;(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&&cl[t.type]!==0&&(n.uint32(16),wr.codec().encode(t.type,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={cid:Be(0),type:wr.HaveBlock},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.cid=t.bytes();break}case 2:{o.type=wr.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())})(ll||(ll={}));var ha;(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),il.codec().encode(t.wantlist,n)),t.blocks!=null)for(let s of t.blocks)n.uint32(26),al.codec().encode(s,n);if(t.blockPresences!=null)for(let s of t.blockPresences)n.uint32(34),ll.codec().encode(s,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={blocks:[],blockPresences:[],pendingBytes:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let i=t.uint32();switch(i>>>3){case 1:{o.wantlist=il.codec().decode(t,t.uint32());break}case 3:{o.blocks.push(al.codec().decode(t,t.uint32()));break}case 4:{o.blockPresences.push(ll.codec().decode(t,t.uint32()));break}case 5:{o.pendingBytes=t.int32();break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>te(t,r.codec()),r.decode=t=>ee(t,r.codec())})(ha||(ha={}));a8.default.formatters.B=r=>r==null?"undefined":JSON.stringify({blocks:r.blocks?.map(e=>({data:`${P(e.data,"base64").substring(0,10)}...`,prefix:P(e.prefix,"base64")})),blockPresences:r.blockPresences?.map(e=>({...e,cid:ae.decode(e.cid).toString()})),wantlist:r.wantlist==null?void 0:{full:r.wantlist.full,entries:r.wantlist.entries.map(e=>({...e,cid:ae.decode(e.cid).toString()}))}},null,2);var ul=class extends Re{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;messageSendTimeout;runOnTransientConnections;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[la],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.messageSendTimeout=t.messageSendTimeout??5e3,this.runOnTransientConnections=t.runOnTransientConnections??!1,e.metrics!=null&&(this.metrics={blocksSent:e.metrics?.registerMetricGroup("ipfs_bitswap_sent_blocks"),dataSent:e.metrics?.registerMetricGroup("ipfs_bitswap_sent_data_bytes")}),this.sendQueue=new Vt({concurrency:t.messageSendConcurrency,metrics:e.metrics,metricName:"ipfs_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.abort(new m("Incoming Bitswap stream timed out","ERR_TIMEOUT"))},s=AbortSignal.timeout(this.messageReceiveTimeout);le(1/0,s),s.addEventListener("abort",o),await Ke(t,i=>$t(i),async i=>{for await(let a of i)try{let c=ha.decode(a);this.log("incoming new bitswap %s message from %p %B",t.protocol,n.remotePeer,c),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:c}}),s.removeEventListener("abort",o),s=AbortSignal.timeout(this.messageReceiveTimeout),le(1/0,s),s.addEventListener("abort",o)}catch(c){this.log.error("error reading incoming bitswap message from %p",n.remotePeer,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)){if(!this.runOnTransientConnections){let o=!1;for(let s of n.multiaddrs)if(s.getPeerId()==null&&(s=s.encapsulate(`/p2p/${n.id}`)),!Ho.exactMatch(s)){o=!0;break}if(!o)continue}n.protocols?.includes("transport-bitswap")!==!1&&(yield n)}}async findAndConnect(e,t){await Kt(Jn(bt(this.findProviders(e,t),async n=>this.connectTo(n.id,t)),t?.maxProviders??3)).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let o={wantlist:{full:t.wantlist?.full??!1,entries:t.wantlist?.entries??[]},blocks:t.blocks??[],blockPresences:t.blockPresences??[],pendingBytes:t.pendingBytes??0},s=ot([AbortSignal.timeout(this.messageSendTimeout),n?.signal]);le(1/0,s);try{let i=this.sendQueue.find(e);if(i?.status==="queued"){i.options.message=fv(i.options.message,o),await i.join({signal:s});return}await this.sendQueue.add(async a=>{let c=a?.message;if(c==null)throw new m("No message to send","ERR_NO_MESSAGE");this.log("sendMessage to %p %B",e,c),a?.onProgress?.(new me("bitswap:network:send-wantlist",e));let l=await this.libp2p.dialProtocol(e,la,a);try{let d=yr(l);await d.write(ha.encode(c),a),await d.unwrap().close(a)}catch(d){a?.onProgress?.(new me("bitswap:network:send-wantlist:error",{peer:e,error:d})),this.log.error("error sending message to %p",e,d),l.abort(d)}this._updateSentStats(e,c.blocks)},{peerId:e,signal:s,message:o})}finally{s.clear()}}async connectTo(e,t){if(!this.running)throw new m("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),Os(this.libp2p,"peer:identify",t?.signal,{filter:o=>{if(!o.detail.peerId.equals(e))return!1;if(o.detail.protocols.includes(la))return!0;throw new m(`${e} did not support ${la}`,"ERR_BITSWAP_UNSUPPORTED_BY_PEER")}})]);return n}_updateSentStats(e,t=[]){if(this.metrics!=null){let n=0;for(let o of t.values())n+=o.data.byteLength;this.metrics.dataSent.increment({global:n,[e.toString()]:n}),this.metrics.blocksSent.increment({global:t.length,[e.toString()]:t.length})}}};function fv(r,e){let t=new Map((r.wantlist?.entries??[]).map(i=>[ut.encode(i.cid),i]));for(let i of e.wantlist?.entries??[]){let a=ut.encode(i.cid),c=t.get(a);c!=null&&(c.priority>i.priority&&(i.priority=c.priority),i.cancel=i.cancel??c.cancel,i.wantType=i.wantType??c.wantType,i.sendDontHave=i.sendDontHave??c.sendDontHave),t.set(a,i)}let n=new Map(r.blockPresences.map(i=>[ut.encode(i.cid),i]));for(let i of e.blockPresences){let a=ut.encode(i.cid);n.set(a,i)}let o=new Map(r.blocks.map(i=>[ut.encode(i.data),i]));for(let i of e.blocks){let a=ut.encode(i.data);o.set(a,i)}return{wantlist:{full:r.wantlist?.full??e.wantlist?.full??!1,entries:[...t.values()]},blockPresences:[...n.values()],blocks:[...o.values()],pendingBytes:r.pendingBytes+e.pendingBytes}}var hv=Symbol.for("nodejs.util.inspect.custom"),c8=Object.values(mr).map(r=>r.decoder).reduce((r,e)=>r.or(e),mr.identity.decoder),l8=114,Ch=36,Nh=37,pa=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()})`}[gf]=!0;toString(){return this.string==null&&(this.string=Ge.encode(this.multihash.bytes).slice(1)),this.string}toCID(){return ae.createV1(l8,this.multihash)}toBytes(){return this.multihash.bytes}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return J(this.multihash.bytes,e);if(typeof e=="string")return ge(e).equals(this);if(e?.multihash?.bytes!=null)return J(this.multihash.bytes,e.multihash.bytes);throw new Error("not valid Id")}[hv](){return`PeerId(${this.toString()})`}},Qo=class extends pa{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Xo=class extends pa{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.multihash.digest}},jo=class extends pa{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.multihash.digest}};function u8(r){if(r.type==="RSA")return new Qo(r);if(r.type==="Ed25519")return new Xo(r);if(r.type==="secp256k1")return new jo(r);throw new m("Not a PeerId","ERR_INVALID_PARAMETERS")}function ge(r,e){if(e=e??c8,r.charAt(0)==="1"||r.charAt(0)==="Q"){let t=Nr(Ge.decode(`z${r}`));return r.startsWith("12D")?new Xo({multihash:t}):r.startsWith("16U")?new jo({multihash:t}):new Qo({multihash:t})}return je(c8.decode(r))}function je(r){try{let e=Nr(r);if(e.code===pr.code){if(e.digest.length===Ch)return new Xo({multihash:e});if(e.digest.length===Nh)return new jo({multihash:e})}if(e.code===De.code)return new Qo({multihash:e})}catch{return pv(ae.decode(r))}throw new Error("Supplied PeerID CID is invalid")}function pv(r){if(r==null||r.multihash==null||r.version==null||r.version===1&&r.code!==l8)throw new Error("Supplied PeerID CID is invalid");let e=r.multihash;if(e.code===De.code)return new Qo({multihash:r.multihash});if(e.code===pr.code){if(e.digest.length===Ch)return new Xo({multihash:r.multihash});if(e.digest.length===Nh)return new jo({multihash:r.multihash})}throw new Error("Supplied PeerID CID is invalid")}async function ht(r,e){return r.length===Ch?new Xo({multihash:Cr(pr.code,r),privateKey:e}):r.length===Nh?new jo({multihash:Cr(pr.code,r),privateKey:e}):new Qo({multihash:await De.digest(r),publicKey:r,privateKey:e})}function Qs(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 Qs(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 Qs(this.map.keys(),e=>ge(e))}values(){return this.map.values()}get size(){return this.map.size}};var Ze=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 Qs(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 Qs(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 Ph=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 ma(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Ph({name:e,metrics:t}):n=new it,n}function gv(r){let e=new Uint8Array(r.reduce((n,o)=>n+Ce(o),0)),t=0;for(let n of r)e=Ve(n,e,t),t+=Ce(n);return e}var d8=gv;function Oh(r){return d8([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var dl=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,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={blockPresences:[],blocks:[]},n=new Set;for(let[o,s]of this.wants.entries()){if(!await this.blockstore.has(s.cid,e)){if(!s.sendDontHave||s.sentDontHave===!0)continue;s.sentDontHave=!0,t.blockPresences.push({cid:s.cid.bytes,type:wr.DontHaveBlock});continue}let a=await this.blockstore.get(s.cid,e);s.wantType===Xe.WantHave?a.byteLength<this.maxSizeReplaceHasWithBlock?(n.add(o),t.blocks.push({data:a,prefix:Oh(s.cid)})):t.blockPresences.push({cid:s.cid.bytes,type:wr.HaveBlock}):(n.add(o),t.blocks.push({data:a,prefix:Oh(s.cid)}))}if(t.blocks.length>0||t.blockPresences.length>0){await this.network.sendMessage(this.peerId,t,e),this.sentBytes(t.blocks.reduce((o,s)=>o+s.data.byteLength,0));for(let o of n)this.wants.delete(o)}}};var fl=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;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.ledgerMap=ma({name:"ipfs_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 dl({peerId:e,blockstore:this.blockstore,network:this.network},{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=ae.decode(o.cid),i=P(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===Xe.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??Xe.WantBlock,sendDontHave:o.sendDontHave??!1}))}}await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=P(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 Lh=class{root;peers;log;wantList;network;queue;maxProviders;constructor(e,t){this.peers=new Ze,this.root=t.root,this.maxProviders=t.maxProviders,this.log=e.logger.forComponent(`helia:bitswap:session:${t.root}`),this.wantList=e.wantList,this.network=e.network,this.queue=new Vt({concurrency:t.queryConcurrency}),this.queue.addEventListener("error",n=>{this.log.error("error querying peer for %c",this.root,n.detail)})}async want(e,t={}){if(this.peers.size===0)throw new m("Bitswap session had no peers","ERR_NO_SESSION_PEERS");this.log("sending WANT-BLOCK for %c to",e,this.peers);let n=await Promise.any([...this.peers].map(async o=>this.wantList.wantBlock(e,{peerId:o,...t})));return this.log("received block for %c from %p",e,n.sender),n.block}async findNewProviders(e,t,n={}){let o=j(),s=0;this.log("find %d-%d new provider(s) for %c",t,this.maxProviders,e);let i=ft([...this.wantList.peers.keys()],bt(this.network.findProviders(e,n),a=>a.id));return Promise.resolve().then(async()=>{for await(let a of i)await this.queue.add(async()=>{try{if(this.log("asking potential session peer %p if they have %c",a,e),!(await this.wantList.wantPresence(e,{peerId:a,...n})).has){this.log("potential session peer %p did not have %c",a,e);return}this.log("potential session peer %p had %c",a,e),s++,this.peers.add(a),s===t&&(this.log("found %d session peers",s),o.resolve()),s===this.maxProviders&&(this.log("found max provider session peers",s),this.queue.clear())}catch(c){this.log.error("error querying potential session peer %p for %c",a,e,c.errors??c)}},{peerId:a});this.log("found %d session peers total",s),t>0&&o.reject(new m(`Found ${s} of ${t} providers`,"ERR_NO_PROVIDERS_FOUND"))}),o.promise}};async function f8(r,e){let t=new Lh(r,e);return await t.findNewProviders(e.root,e.minProviders,{signal:e.signal}),t}var hl=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("ipfs_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("ipfs_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("ipfs_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("ipfs_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 Bh=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 pl(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Bh({name:e,metrics:t}):n=new Map,n}function yv(r){return r[Symbol.asyncIterator]!=null}function wv(r){if(yv(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 to=wv;function Ev(r){return r[Symbol.asyncIterator]!=null}function bv(r,e){if(Ev(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=zs(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var Nt=bv;function xv(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(Ce(t))}return e}var h8=xv;var ml=class{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;constructor(e,t={}){this.peers=ma({name:"ipfs_bitswap_peers",metrics:e.metrics}),this.wants=pl({name:"ipfs_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=P(e.multihash.bytes,"base64"),o=this.wants.get(n);o==null&&(o={cid:e,session:new Ze,priority:t.priority??1,wantType:t.wantType??Xe.WantBlock,cancel:!1,sendDontHave:!0,blockWantListeners:[],blockPresenceListeners:[]},t.peerId!=null&&o.session.add(t.peerId),this.wants.set(n,o)),o.wantType===Xe.WantHave&&t.wantType===Xe.WantBlock&&(o.wantType=Xe.WantBlock),o.session.size>0&&(t.peerId!=null&&o.session.add(t.peerId),t.peerId==null&&o.session.clear());let s;if(t.wantType===Xe.WantBlock){let a=s=j();o.blockWantListeners.push(a)}else{let a=s=j();o.blockPresenceListeners.push(a)}let i=()=>{this.log("want for %c was aborted, cancelling want",e),o!=null&&(o.cancel=!0),s.reject(new jt("Want was aborted"))};t.signal?.addEventListener("abort",i),clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(a=>{this.log("error sending messages to peers",a)})},this.sendMessagesDelay);try{return await s.promise}finally{t.signal?.removeEventListener("abort",i),t.wantType===Xe.WantBlock?o.blockWantListeners=o.blockWantListeners.filter(a=>a!==s):o.blockPresenceListeners=o.blockPresenceListeners.filter(a=>a!==s)}}async sendMessages(){for(let[e,t]of this.peers){let n=new Set,o={wantlist:{full:!1,entries:Ke(this.wants.entries(),s=>Nt(s,([i,a])=>{if(a.session.size>0&&!a.session.has(e))return!1;let c=t.has(i);return a.cancel?c:!c}),s=>bt(s,([i,a])=>(n.add(i),{cid:a.cid.bytes,priority:a.priority,wantType:a.wantType,cancel:a.cancel,sendDontHave:a.sendDontHave})),s=>to(s))}};if(o.wantlist?.entries.length===0)return;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)}}for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}}has(e){let t=P(e.multihash.bytes,"base64");return this.wants.has(t)}async wantPresence(e,t={}){if(t.peerId!=null&&this.peers.get(t.peerId)==null){let n=P(e.multihash.bytes,"base64");try{this.peers.set(t.peerId,new Set([n])),await this.network.sendMessage(t.peerId,{wantlist:{full:!1,entries:[{cid:e.bytes,sendDontHave:!0,wantType:Xe.WantHave,priority:1}]}})}catch(o){throw this.peers.delete(t.peerId),o}}return this.addEntry(e,{...t,wantType:Xe.WantHave})}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:Xe.WantBlock})}async receiveMessage(e,t){this.log("received message from %p",e);let n=[],o=[];for(let s of t.blocks){if(s.prefix==null||s.data==null)continue;this.log("received block");let i=h8(s.prefix),a=i[0],c=i[1],l=i[2],d=l===De.code?De:await this.hashLoader?.getHasher(l);if(d==null){this.log.error("unknown hash algorithm",l);continue}let u=await d.digest(s.data),f=ae.create(a===0?0:1,c,u);this.log("received block from %p for %c",e,f),n.push({sender:e,cid:f,block:s.data}),o.push({sender:e,cid:f,has:!0})}for(let{cid:s,type:i}of t.blockPresences){let a=ae.decode(s);this.log("received %s from %p for %c",i,e,a),o.push({sender:e,cid:a,has:i===wr.HaveBlock})}for(let s of n){let i=P(s.cid.multihash.bytes,"base64"),a=this.wants.get(i);if(a==null)return;let c=a.blockWantListeners;a.blockWantListeners=[],c.forEach(l=>{l.resolve(s)}),a.cancel=!0}for(let s of o){let i=P(s.cid.multihash.bytes,"base64"),a=this.wants.get(i);if(a==null)return;let c=a.blockPresenceListeners;a.blockPresenceListeners=[],c.forEach(l=>{l.resolve(s)})}}async peerConnected(e){let t=new Set,n={wantlist:{full:!0,entries:Ke(this.wants.entries(),o=>Nt(o,([s,i])=>!i.cancel&&i.session.size>0&&!i.session.has(e)),o=>Nt(o,([s,i])=>!i.cancel),o=>bt(o,([s,i])=>(t.add(s),{cid:i.cid.bytes,priority:1,wantType:Xe.WantBlock,cancel:!1,sendDontHave:!1})),o=>to(o))}};if(n.wantlist?.entries.length===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()}};var gl=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 hl(e),this.network=new ul(e,t),this.peerWantLists=new fl({...e,network:this.network},t),this.wantList=new ml({...e,network:this.network},t)}async createSession(e,t){let n=t?.minProviders??1,o=t?.maxProviders??5;return f8({wantList:this.wantList,network:this.network,logger:this.logger},{root:e,queryConcurrency:t?.providerQueryConcurrency??5,minProviders:n,maxProviders:o,connectedPeers:t?.queryConnectedPeers!==!1?[...this.wantList.peers.keys()]:[],signal:t?.signal})}async want(e,t={}){let n=new AbortController;le(1/0,n.signal);let o=ot([n.signal,t.signal]);this.network.findAndConnect(e,{...t,signal:o}).catch(s=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,s)});try{return(await this.wantList.wantBlock(e,{...t,signal:o})).block}finally{n.abort(),o.clear()}}async notify(e,t,n={}){await this.peerWantLists.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 p8=(r,e={})=>new gl(r,e);var Uh=class{bitswap;started;constructor(e,t={}){let{hashers:n}=e;this.bitswap=p8(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)}async createSession(e,t){let n=await this.bitswap.createSession(e,t);return{announce:async(o,s,i)=>{await this.bitswap.notify(o,s,i)},retrieve:async(o,s)=>n.want(o,s)}}};function Mh(r={}){return e=>new Uh(e,r)}var g8=Ye(m8(),1),vv=["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"],Rv=vv.map(r=>new g8.Netmask(r));function Sv(r){for(let e of Rv)if(e.contains(r))return!0;return!1}function _v(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 Ht(r){return Bs(r)?Sv(r):Us(r)?_v(r):void 0}var Av=[Z("tcp").code,Z("dns").code,Z("dnsaddr").code,Z("dns4").code,Z("dns6").code];function y8(r){let e;try{e=Z("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function w8(r){return r.some(([e,t])=>e===Z("tls").code)}function tr(r,e,t){let n=E8[Z(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${Z(r).name}`);let o=n(e,t);return r===Z("ip6").code?`[${o}]`:o}var E8={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://${tr(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://${tr(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`${tr(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`${tr(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=w8(e),n=y8(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=tr(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 tr(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return tr(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=tr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=w8(e),n=y8(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=tr(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=tr(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`${tr(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`${tr(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`${tr(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function yl(r,e){let n=X(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=Z(o[0]),i=E8[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&Av.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 ya=class{url;#e=0;#t=0;#r=0;#i=0;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}`)}async getRawBlock(e,t){let n=this.url;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`);try{this.#e++;let o=await fetch(n.toString(),{signal:t,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"});if(this.log("GET %s %d",n,o.status),!o.ok)throw this.#t++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#i++,new Uint8Array(await o.arrayBuffer())}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}`))}}reliability(){return this.#e===0?1:this.#r>0?-1/0:this.#i/(this.#e+this.#t*3)}incrementInvalidBlocks(){this.#r++}};var wl=class r{components;gateways;routing;log;constructor(e,t={}){this.components=e,this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.routing=e.routing,this.gateways=(t.gateways??b8).map(n=>new ya(n,e.logger))}addGateway(e){this.gateways.push(new ya(e,this.components.logger))}async retrieve(e,t={}){let n=this.gateways.sort((s,i)=>i.reliability()-s.reliability()),o=[];for(let s of n){this.log("getting block for %c from %s",e,s.url);try{let i=await s.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,s.url);try{await t.validateFn?.(i)}catch(a){throw this.log.error("failed to validate block for %c from %s",e,s.url,a),s.incrementInvalidBlocks(),new Error(`Block for CID ${e} from gateway ${s.url} failed validation`)}return i}catch(i){if(this.log.error("failed to get block for %c from %s",e,s.url,i),i instanceof Error?o.push(i):o.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${s.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,s.url);break}}}throw o.length>0?new AggregateError(o,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}async createSession(e,t={}){let n=[],o=t.minProviders??1,s=t.minProviders??5,i=j(),a=new r(this.components,{gateways:n});this.log("finding transport-ipfs-gateway-http providers for cid %c",e);let c=new Vt({concurrency:t.providerQueryConcurrency??5});return Promise.resolve().then(async()=>{for await(let l of this.routing.findProviders(e,t)){let d=l.multiaddrs.filter(u=>V4.matches(u)||t.allowInsecure===!0&&F4.matches(u)?t.allowLocal===!0||qc.matches(u)?!0:Ht(u.toOptions().host)===!1:!1);d.length!==0&&(this.log("found transport-ipfs-gateway-http provider %p for cid %c",l.id,e),c.add(async()=>{for(let u of d){let f;try{f=yl(u);let g=`${f}/ipfs/${e.toString()}?format=raw`,h=await fetch(g,{method:"HEAD",headers:{Accept:"application/vnd.ipld.raw","Cache-Control":t.cacheControl??"only-if-cached"},signal:AbortSignal.timeout(t.providerQueryTimeout??5e3)});this.log("HEAD %s %d",g,h.status),n.push(f),a.addGateway(f),this.log("found %d transport-ipfs-gateway-http providers for cid %c",n.length,e),n.length===o&&i.resolve(a),n.length===s&&c.clear()}catch(g){this.log.error("could not fetch %c from %a",e,f??u,g)}}}))}}).catch(l=>{this.log.error("error creating session for %c",e,l)}),i.promise}};var b8=["https://trustless-gateway.link","https://cloudflare-ipfs.com","https://4everland.io"];function Fh(r={}){return e=>new wl(e,r)}var rr=Ye(ph(),1);rr.default.formatters.b=r=>r==null?"undefined":Ge.baseEncode(r);rr.default.formatters.t=r=>r==null?"undefined":lt.baseEncode(r);rr.default.formatters.m=r=>r==null?"undefined":ut.baseEncode(r);rr.default.formatters.p=r=>r==null?"undefined":r.toString();rr.default.formatters.c=r=>r==null?"undefined":r.toString();rr.default.formatters.k=r=>r==null?"undefined":r.toString();rr.default.formatters.a=r=>r==null?"undefined":r.toString();function Iv(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 nr(r)}}}function nr(r){let e=Iv(`${r}:trace`);return rr.default.enabled(`${r}:trace`)&&rr.default.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=(0,rr.default)(`${r}:trace`)),Object.assign((0,rr.default)(r),{error:(0,rr.default)(`${r}:error`),trace:e})}async function*El(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 _u={};pe(_u,{Ed25519PrivateKey:()=>_n,Ed25519PublicKey:()=>ns,MAX_RSA_KEY_SIZE:()=>is,RsaPrivateKey:()=>go,RsaPublicKey:()=>ss,Secp256k1PrivateKey:()=>ls,Secp256k1PublicKey:()=>cs,generateEphemeralKeyPair:()=>Z8,generateKeyPair:()=>Na,generateKeyPairFromSeed:()=>_S,importKey:()=>ui,keyStretcher:()=>n6,keysPBM:()=>oi,marshalPrivateKey:()=>A0,marshalPublicKey:()=>_0,supportedKeys:()=>Pn,unmarshalPrivateKey:()=>Rr,unmarshalPublicKey:()=>Hr});var s0={};pe(s0,{Ed25519PrivateKey:()=>_n,Ed25519PublicKey:()=>ns,generateKeyPair:()=>OR,generateKeyPairFromSeed:()=>o0,unmarshalEd25519PrivateKey:()=>NR,unmarshalEd25519PublicKey:()=>PR});function Vh(r,e){let t=B(r,"base64urlpad");if(e!=null){if(t.length>e)throw new Error("byte array longer than desired length");t=xe([new Uint8Array(e-t.length),t])}return t}function Er(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function no(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`positive integer expected, not ${r}`)}function Dv(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Xs(r,...e){if(!Dv(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 Zo(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");no(r.outputLen),no(r.blockLen)}function js(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 x8(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 bl=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;var Jo=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),Or=(r,e)=>r<<32-e|r>>>e,xl=(r,e)=>r<<e|r>>>32-e>>>0,xM=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;var Tv=async()=>{};async function v8(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 Tv(),n+=s)}}function Kh(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Lr(r){return typeof r=="string"&&(r=Kh(r)),Xs(r),r}function vl(...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 Zs=class{clone(){return this._cloneInto()}},kv={}.toString;function R8(r,e){if(e!==void 0&&kv.call(e)!=="[object Object]")throw new Error("Options should be object or undefined");return Object.assign(r,e)}function Js(r){let e=n=>r().update(Lr(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function es(r=32){if(bl&&typeof bl.getRandomValues=="function")return bl.getRandomValues(new Uint8Array(r));throw new Error("crypto.getRandomValues must be defined")}function Cv(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 Rl=(r,e,t)=>r&e^~r&t,Sl=(r,e,t)=>r&e^r&t^e&t,oo=class extends Zs{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=Jo(this.buffer)}update(e){js(this);let{view:t,buffer:n,blockLen:o}=this;e=Lr(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=Jo(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){js(this),x8(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;Cv(n,o-8,BigInt(this.length*8),s),this.process(n,0);let a=Jo(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 _l=BigInt(4294967295),$h=BigInt(32);function S8(r,e=!1){return e?{h:Number(r&_l),l:Number(r>>$h&_l)}:{h:Number(r>>$h&_l)|0,l:Number(r&_l)|0}}function Nv(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}=S8(r[o],e);[t[o],n[o]]=[s,i]}return[t,n]}var Pv=(r,e)=>BigInt(r>>>0)<<$h|BigInt(e>>>0),Ov=(r,e,t)=>r>>>t,Lv=(r,e,t)=>r<<32-t|e>>>t,Bv=(r,e,t)=>r>>>t|e<<32-t,Uv=(r,e,t)=>r<<32-t|e>>>t,Mv=(r,e,t)=>r<<64-t|e>>>t-32,Fv=(r,e,t)=>r>>>t-32|e<<64-t,Vv=(r,e)=>e,Kv=(r,e)=>r,$v=(r,e,t)=>r<<t|e>>>32-t,Hv=(r,e,t)=>e<<t|r>>>32-t,qv=(r,e,t)=>e<<t-32|r>>>64-t,Wv=(r,e,t)=>r<<t-32|e>>>64-t;function Gv(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var zv=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),Yv=(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),Xv=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,jv=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),Zv=(r,e,t,n,o,s)=>e+t+n+o+s+(r/2**32|0)|0;var Jv={fromBig:S8,split:Nv,toBig:Pv,shrSH:Ov,shrSL:Lv,rotrSH:Bv,rotrSL:Uv,rotrBH:Mv,rotrBL:Fv,rotr32H:Vv,rotr32L:Kv,rotlSH:$v,rotlSL:Hv,rotlBH:qv,rotlBL:Wv,add:Gv,add3L:zv,add3H:Yv,add4L:Qv,add4H:Xv,add5H:Zv,add5L:jv},fe=Jv;var[eR,tR]=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))),so=new Uint32Array(80),io=new Uint32Array(80),Hh=class extends oo{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:f,Gh:g,Gl:h,Hh:p,Hl:y}=this;return[e,t,n,o,s,i,a,c,l,d,u,f,g,h,p,y]}set(e,t,n,o,s,i,a,c,l,d,u,f,g,h,p,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=f|0,this.Gh=g|0,this.Gl=h|0,this.Hh=p|0,this.Hl=y|0}process(e,t){for(let E=0;E<16;E++,t+=4)so[E]=e.getUint32(t),io[E]=e.getUint32(t+=4);for(let E=16;E<80;E++){let S=so[E-15]|0,_=io[E-15]|0,A=fe.rotrSH(S,_,1)^fe.rotrSH(S,_,8)^fe.shrSH(S,_,7),D=fe.rotrSL(S,_,1)^fe.rotrSL(S,_,8)^fe.shrSL(S,_,7),R=so[E-2]|0,k=io[E-2]|0,O=fe.rotrSH(R,k,19)^fe.rotrBH(R,k,61)^fe.shrSH(R,k,6),N=fe.rotrSL(R,k,19)^fe.rotrBL(R,k,61)^fe.shrSL(R,k,6),L=fe.add4L(D,N,io[E-7],io[E-16]),F=fe.add4H(L,A,O,so[E-7],so[E-16]);so[E]=F|0,io[E]=L|0}let{Ah:n,Al:o,Bh:s,Bl:i,Ch:a,Cl:c,Dh:l,Dl:d,Eh:u,El:f,Fh:g,Fl:h,Gh:p,Gl:y,Hh:w,Hl:b}=this;for(let E=0;E<80;E++){let S=fe.rotrSH(u,f,14)^fe.rotrSH(u,f,18)^fe.rotrBH(u,f,41),_=fe.rotrSL(u,f,14)^fe.rotrSL(u,f,18)^fe.rotrBL(u,f,41),A=u&g^~u&p,D=f&h^~f&y,R=fe.add5L(b,_,D,tR[E],io[E]),k=fe.add5H(R,w,S,A,eR[E],so[E]),O=R|0,N=fe.rotrSH(n,o,28)^fe.rotrBH(n,o,34)^fe.rotrBH(n,o,39),L=fe.rotrSL(n,o,28)^fe.rotrBL(n,o,34)^fe.rotrBL(n,o,39),F=n&s^n&a^s&a,Y=o&i^o&c^i&c;w=p|0,b=y|0,p=g|0,y=h|0,g=u|0,h=f|0,{h:u,l:f}=fe.add(l|0,d|0,k|0,O|0),l=a|0,d=c|0,a=s|0,c=i|0,s=n|0,i=o|0;let I=fe.add3L(O,L,Y);n=fe.add3H(I,k,N,F),o=I|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:f}=fe.add(this.Eh|0,this.El|0,u|0,f|0),{h:g,l:h}=fe.add(this.Fh|0,this.Fl|0,g|0,h|0),{h:p,l:y}=fe.add(this.Gh|0,this.Gl|0,p|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,f,g,h,p,y,w,b)}roundClean(){so.fill(0),io.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 ao=Js(()=>new Hh);var Il={};pe(Il,{abytes:()=>ei,bitGet:()=>cR,bitLen:()=>aR,bitMask:()=>wa,bitSet:()=>lR,bytesToHex:()=>En,bytesToNumberBE:()=>bn,bytesToNumberLE:()=>Br,concatBytes:()=>vn,createHmacDrbg:()=>Gh,ensureBytes:()=>Ue,equalBytes:()=>sR,hexToBytes:()=>ts,hexToNumber:()=>Wh,isBytes:()=>co,numberToBytesBE:()=>lo,numberToBytesLE:()=>xn,numberToHexUnpadded:()=>D8,numberToVarBytesBE:()=>oR,utf8ToBytes:()=>iR,validateObject:()=>br});var I8=BigInt(0),Al=BigInt(1),rR=BigInt(2);function co(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function ei(r){if(!co(r))throw new Error("Uint8Array expected")}var nR=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function En(r){ei(r);let e="";for(let t=0;t<r.length;t++)e+=nR[r[t]];return e}function D8(r){let e=r.toString(16);return e.length&1?`0${e}`:e}function Wh(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return BigInt(r===""?"0":`0x${r}`)}var wn={_0:48,_9:57,_A:65,_F:70,_a:97,_f:102};function _8(r){if(r>=wn._0&&r<=wn._9)return r-wn._0;if(r>=wn._A&&r<=wn._F)return r-(wn._A-10);if(r>=wn._a&&r<=wn._f)return r-(wn._a-10)}function ts(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=_8(r.charCodeAt(s)),a=_8(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 bn(r){return Wh(En(r))}function Br(r){return ei(r),Wh(En(Uint8Array.from(r).reverse()))}function lo(r,e){return ts(r.toString(16).padStart(e*2,"0"))}function xn(r,e){return lo(r,e).reverse()}function oR(r){return ts(D8(r))}function Ue(r,e,t){let n;if(typeof e=="string")try{n=ts(e)}catch(s){throw new Error(`${r} must be valid hex string, got "${e}". Cause: ${s}`)}else if(co(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 vn(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];ei(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 sR(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 aR(r){let e;for(e=0;r>I8;r>>=Al,e+=1);return e}function cR(r,e){return r>>BigInt(e)&Al}function lR(r,e,t){return r|(t?Al:I8)<<BigInt(e)}var wa=r=>(rR<<BigInt(r-1))-Al,qh=r=>new Uint8Array(r),A8=r=>Uint8Array.from(r);function Gh(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=qh(r),o=qh(r),s=0,i=()=>{n.fill(1),o.fill(0),s=0},a=(...u)=>t(o,n,...u),c=(u=qh())=>{o=a(A8([0]),u),n=a(),u.length!==0&&(o=a(A8([1]),u),n=a())},l=()=>{if(s++>=1e3)throw new Error("drbg: tried 1000 values");let u=0,f=[];for(;u<e;){n=a();let g=n.slice();f.push(g),u+=n.length}return vn(...f)};return(u,f)=>{i(),c(u);let g;for(;!(g=f(l()));)c();return i(),g}}var uR={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"||co(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 br(r,e,t={}){let n=(o,s,i)=>{let a=uR[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),He=BigInt(1),rs=BigInt(2),dR=BigInt(3),zh=BigInt(4),T8=BigInt(5),k8=BigInt(8),fR=BigInt(9),hR=BigInt(16);function _e(r,e){let t=r%e;return t>=dt?t:e+t}function Yh(r,e,t){if(t<=dt||e<dt)throw new Error("Expected power/modulo > 0");if(t===He)return dt;let n=He;for(;e>dt;)e&He&&(n=n*r%t),r=r*r%t,e>>=He;return n}function Me(r,e,t){let n=r;for(;e-- >dt;)n*=n,n%=t;return n}function Dl(r,e){if(r===dt||e<=dt)throw new Error(`invert: expected positive integers, got n=${r} mod=${e}`);let t=_e(r,e),n=e,o=dt,s=He,i=He,a=dt;for(;t!==dt;){let l=n/t,d=n%t,u=o-i*l,f=s-a*l;n=t,t=d,o=i,s=a,i=u,a=f}if(n!==He)throw new Error("invert: does not exist");return _e(o,e)}function pR(r){let e=(r-He)/rs,t,n,o;for(t=r-He,n=0;t%rs===dt;t/=rs,n++);for(o=rs;o<r&&Yh(o,e,r)!==r-He;o++);if(n===1){let i=(r+He)/zh;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+He)/rs;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),f=a.pow(c,t);for(;!a.eql(f,a.ONE);){if(a.eql(f,a.ZERO))return a.ZERO;let g=1;for(let p=a.sqr(f);g<l&&!a.eql(p,a.ONE);g++)p=a.sqr(p);let h=a.pow(d,He<<BigInt(l-g-1));d=a.sqr(h),u=a.mul(u,h),f=a.mul(f,d),l=g}return u}}function mR(r){if(r%zh===dR){let e=(r+He)/zh;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%k8===T8){let e=(r-T8)/k8;return function(n,o){let s=n.mul(o,rs),i=n.pow(s,e),a=n.mul(o,i),c=n.mul(n.mul(a,rs),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%hR,pR(r)}var C8=(r,e)=>(_e(r,e)&He)===He,gR=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Qh(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=gR.reduce((n,o)=>(n[o]="function",n),e);return br(r,t)}function yR(r,e,t){if(t<dt)throw new Error("Expected power > 0");if(t===dt)return r.ONE;if(t===He)return e;let n=r.ONE,o=e;for(;t>dt;)t&He&&(n=r.mul(n,o)),o=r.sqr(o),t>>=He;return n}function wR(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 Xh(r,e){let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function Tl(r,e,t=!1,n={}){if(r<=dt)throw new Error(`Expected Field ORDER > 0, got ${r}`);let{nBitLength:o,nByteLength:s}=Xh(r,e);if(s>2048)throw new Error("Field lengths over 2048 bytes are not supported");let i=mR(r),a=Object.freeze({ORDER:r,BITS:o,BYTES:s,MASK:wa(o),ZERO:dt,ONE:He,create:c=>_e(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&He)===He,neg:c=>_e(-c,r),eql:(c,l)=>c===l,sqr:c=>_e(c*c,r),add:(c,l)=>_e(c+l,r),sub:(c,l)=>_e(c-l,r),mul:(c,l)=>_e(c*l,r),pow:(c,l)=>yR(a,c,l),div:(c,l)=>_e(c*Dl(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>Dl(c,r),sqrt:n.sqrt||(c=>i(a,c)),invertBatch:c=>wR(a,c),cmov:(c,l,d)=>d?l:c,toBytes:c=>t?xn(c,s):lo(c,s),fromBytes:c=>{if(c.length!==s)throw new Error(`Fp.fromBytes: expected ${s}, got ${c.length}`);return t?Br(c):bn(c)}});return Object.freeze(a)}function N8(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 P8(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 jh(r){let e=P8(r);return e+Math.ceil(e/2)}function O8(r,e,t=!1){let n=r.length,o=P8(e),s=jh(e);if(n<16||n<s||n>1024)throw new Error(`expected ${s}-1024 bytes of input, got ${n}`);let i=t?bn(r):Br(r),a=_e(i,e-He)+He;return t?xn(a,o):lo(a,o)}var bR=BigInt(0),Zh=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>bR;)s&Zh&&(i=i.add(a)),a=a.double(),s>>=Zh;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 f=1;f<a;f++)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),f=2**o,g=BigInt(o);for(let h=0;h<a;h++){let p=h*c,y=Number(i&u);i>>=g,y>c&&(y-=f,i+=Zh);let w=p,b=p+Math.abs(y)-1,E=h%2!==0,S=y<0;y===0?d=d.add(t(E,s[w])):l=l.add(t(S,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 Ea(r){return Qh(r.Fp),br(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Xh(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ur=BigInt(0),or=BigInt(1),Cl=BigInt(2),xR=BigInt(8),vR={zip215:!0};function RR(r){let e=Ea(r);return br(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function Nl(r){let e=RR(r),{Fp:t,n,prehash:o,hash:s,randomBytes:i,nByteLength:a,h:c}=e,l=Cl<<BigInt(a*8)-or,d=t.create,u=e.uvRatio||((T,v)=>{try{return{isValid:!0,value:t.sqrt(T*t.inv(v))}}catch{return{isValid:!1,value:Ur}}}),f=e.adjustScalarBytes||(T=>T),g=e.domain||((T,v,U)=>{if(v.length||U)throw new Error("Contexts/pre-hash are not supported");return T}),h=T=>typeof T=="bigint"&&Ur<T,p=(T,v)=>h(T)&&h(v)&&T<v,y=T=>T===Ur||p(T,l);function w(T,v){if(p(T,v))return T;throw new Error(`Expected valid scalar < ${v}, got ${typeof T} ${T}`)}function b(T){return T===Ur?T:w(T,n)}let E=new Map;function S(T){if(!(T instanceof _))throw new Error("ExtendedPoint expected")}class _{constructor(v,U,V,H){if(this.ex=v,this.ey=U,this.ez=V,this.et=H,!y(v))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(v){if(v instanceof _)throw new Error("extended point not allowed");let{x:U,y:V}=v||{};if(!y(U)||!y(V))throw new Error("invalid affine point");return new _(U,V,or,d(U*V))}static normalizeZ(v){let U=t.invertBatch(v.map(V=>V.ez));return v.map((V,H)=>V.toAffine(U[H])).map(_.fromAffine)}_setWindowSize(v){this._WINDOW_SIZE=v,E.delete(this)}assertValidity(){let{a:v,d:U}=e;if(this.is0())throw new Error("bad point: ZERO");let{ex:V,ey:H,ez:oe,et:se}=this,de=d(V*V),ie=d(H*H),ce=d(oe*oe),Le=d(ce*ce),ke=d(de*v),gt=d(ce*d(ke+ie)),yt=d(Le+d(U*d(de*ie)));if(gt!==yt)throw new Error("bad point: equation left != right (1)");let ct=d(V*H),Tt=d(oe*se);if(ct!==Tt)throw new Error("bad point: equation left != right (2)")}equals(v){S(v);let{ex:U,ey:V,ez:H}=this,{ex:oe,ey:se,ez:de}=v,ie=d(U*de),ce=d(oe*H),Le=d(V*de),ke=d(se*H);return ie===ce&&Le===ke}is0(){return this.equals(_.ZERO)}negate(){return new _(d(-this.ex),this.ey,this.ez,d(-this.et))}double(){let{a:v}=e,{ex:U,ey:V,ez:H}=this,oe=d(U*U),se=d(V*V),de=d(Cl*d(H*H)),ie=d(v*oe),ce=U+V,Le=d(d(ce*ce)-oe-se),ke=ie+se,gt=ke-de,yt=ie-se,ct=d(Le*gt),Tt=d(ke*yt),hn=d(Le*yt),Fo=d(gt*ke);return new _(ct,Tt,Fo,hn)}add(v){S(v);let{a:U,d:V}=e,{ex:H,ey:oe,ez:se,et:de}=this,{ex:ie,ey:ce,ez:Le,et:ke}=v;if(U===BigInt(-1)){let L3=d((oe-H)*(ce+ie)),B3=d((oe+H)*(ce-ie)),pf=d(B3-L3);if(pf===Ur)return this.double();let U3=d(se*Cl*ke),M3=d(de*Cl*Le),F3=M3+U3,V3=B3+L3,K3=M3-U3,BE=d(F3*pf),UE=d(V3*K3),ME=d(F3*K3),FE=d(pf*V3);return new _(BE,UE,FE,ME)}let gt=d(H*ie),yt=d(oe*ce),ct=d(de*V*ke),Tt=d(se*Le),hn=d((H+oe)*(ie+ce)-gt-yt),Fo=Tt-ct,ea=Tt+ct,O3=d(yt-U*gt),NE=d(hn*Fo),PE=d(ea*O3),OE=d(hn*O3),LE=d(Fo*ea);return new _(NE,PE,LE,OE)}subtract(v){return this.add(v.negate())}wNAF(v){return R.wNAFCached(this,E,v,_.normalizeZ)}multiply(v){let{p:U,f:V}=this.wNAF(w(v,n));return _.normalizeZ([U,V])[0]}multiplyUnsafe(v){let U=b(v);return U===Ur?D:this.equals(D)||U===or?this:this.equals(A)?this.wNAF(U).p:R.unsafeLadder(this,U)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return R.unsafeLadder(this,n).is0()}toAffine(v){let{ex:U,ey:V,ez:H}=this,oe=this.is0();v==null&&(v=oe?xR:t.inv(H));let se=d(U*v),de=d(V*v),ie=d(H*v);if(oe)return{x:Ur,y:or};if(ie!==or)throw new Error("invZ was invalid");return{x:se,y:de}}clearCofactor(){let{h:v}=e;return v===or?this:this.multiplyUnsafe(v)}static fromHex(v,U=!1){let{d:V,a:H}=e,oe=t.BYTES;v=Ue("pointHex",v,oe);let se=v.slice(),de=v[oe-1];se[oe-1]=de&-129;let ie=Br(se);ie===Ur||(U?w(ie,l):w(ie,t.ORDER));let ce=d(ie*ie),Le=d(ce-or),ke=d(V*ce-H),{isValid:gt,value:yt}=u(Le,ke);if(!gt)throw new Error("Point.fromHex: invalid y coordinate");let ct=(yt&or)===or,Tt=(de&128)!==0;if(!U&&yt===Ur&&Tt)throw new Error("Point.fromHex: x=0 and x_0=1");return Tt!==ct&&(yt=d(-yt)),_.fromAffine({x:yt,y:ie})}static fromPrivateKey(v){return N(v).point}toRawBytes(){let{x:v,y:U}=this.toAffine(),V=xn(U,t.BYTES);return V[V.length-1]|=v&or?128:0,V}toHex(){return En(this.toRawBytes())}}_.BASE=new _(e.Gx,e.Gy,or,d(e.Gx*e.Gy)),_.ZERO=new _(Ur,or,or,Ur);let{BASE:A,ZERO:D}=_,R=kl(_,a*8);function k(T){return _e(T,n)}function O(T){return k(Br(T))}function N(T){let v=a;T=Ue("private key",T,v);let U=Ue("hashed private key",s(T),2*v),V=f(U.slice(0,v)),H=U.slice(v,2*v),oe=O(V),se=A.multiply(oe),de=se.toRawBytes();return{head:V,prefix:H,scalar:oe,point:se,pointBytes:de}}function L(T){return N(T).pointBytes}function F(T=new Uint8Array,...v){let U=vn(...v);return O(s(g(U,Ue("context",T),!!o)))}function Y(T,v,U={}){T=Ue("message",T),o&&(T=o(T));let{prefix:V,scalar:H,pointBytes:oe}=N(v),se=F(U.context,V,T),de=A.multiply(se).toRawBytes(),ie=F(U.context,de,oe,T),ce=k(se+ie*H);b(ce);let Le=vn(de,xn(ce,t.BYTES));return Ue("result",Le,a*2)}let I=vR;function C(T,v,U,V=I){let{context:H,zip215:oe}=V,se=t.BYTES;T=Ue("signature",T,2*se),v=Ue("message",v),o&&(v=o(v));let de=Br(T.slice(se,2*se)),ie,ce,Le;try{ie=_.fromHex(U,oe),ce=_.fromHex(T.slice(0,se),oe),Le=A.multiplyUnsafe(de)}catch{return!1}if(!oe&&ie.isSmallOrder())return!1;let ke=F(H,ce.toRawBytes(),ie.toRawBytes(),v);return ce.add(ie.multiplyUnsafe(ke)).subtract(Le).clearCofactor().equals(_.ZERO)}return A._setWindowSize(8),{CURVE:e,getPublicKey:L,sign:Y,verify:C,ExtendedPoint:_,utils:{getExtendedPublicKey:N,randomPrivateKey:()=>i(t.BYTES),precompute(T=8,v=_.BASE){return v._setWindowSize(T),v.multiply(BigInt(3)),v}}}}var ba=BigInt(0),Jh=BigInt(1);function SR(r){return br(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function L8(r){let e=SR(r),{P:t}=e,n=E=>_e(E,t),o=e.montgomeryBits,s=Math.ceil(o/8),i=e.nByteLength,a=e.adjustScalarBytes||(E=>E),c=e.powPminus2||(E=>Yh(E,t-BigInt(2),t));function l(E,S,_){let A=n(E*(S-_));return S=n(S-A),_=n(_+A),[S,_]}function d(E){if(typeof E=="bigint"&&ba<=E&&E<t)return E;throw new Error("Expected valid scalar 0 < scalar < CURVE.P")}let u=(e.a-BigInt(2))/BigInt(4);function f(E,S){let _=d(E),A=d(S),D=_,R=Jh,k=ba,O=_,N=Jh,L=ba,F;for(let I=BigInt(o-1);I>=ba;I--){let C=A>>I&Jh;L^=C,F=l(L,R,O),R=F[0],O=F[1],F=l(L,k,N),k=F[0],N=F[1],L=C;let $=R+k,T=n($*$),v=R-k,U=n(v*v),V=T-U,H=O+N,oe=O-N,se=n(oe*$),de=n(H*v),ie=se+de,ce=se-de;O=n(ie*ie),N=n(D*n(ce*ce)),R=n(T*U),k=n(V*(T+n(u*V)))}F=l(L,R,O),R=F[0],O=F[1],F=l(L,k,N),k=F[0],N=F[1];let Y=c(k);return n(R*Y)}function g(E){return xn(n(E),s)}function h(E){let S=Ue("u coordinate",E,s);return i===32&&(S[31]&=127),Br(S)}function p(E){let S=Ue("scalar",E),_=S.length;if(_!==s&&_!==i)throw new Error(`Expected ${s} or ${i} bytes, got ${_}`);return Br(a(S))}function y(E,S){let _=h(S),A=p(E),D=f(_,A);if(D===ba)throw new Error("Invalid private or public key received");return g(D)}let w=g(e.Gu);function b(E){return y(E,w)}return{scalarMult:y,scalarMultBase:b,getSharedSecret:(E,S)=>y(E,S),getPublicKey:E=>b(E),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:w}}var xa=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),B8=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),zM=BigInt(0),_R=BigInt(1),e0=BigInt(2),AR=BigInt(5),U8=BigInt(10),IR=BigInt(20),DR=BigInt(40),M8=BigInt(80);function F8(r){let e=xa,n=r*r%e*r%e,o=Me(n,e0,e)*n%e,s=Me(o,_R,e)*r%e,i=Me(s,AR,e)*s%e,a=Me(i,U8,e)*i%e,c=Me(a,IR,e)*a%e,l=Me(c,DR,e)*c%e,d=Me(l,M8,e)*l%e,u=Me(d,M8,e)*l%e,f=Me(u,U8,e)*i%e;return{pow_p_5_8:Me(f,e0,e)*r%e,b2:n}}function V8(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function TR(r,e){let t=xa,n=_e(e*e*e,t),o=_e(n*n*e,t),s=F8(r*o).pow_p_5_8,i=_e(r*n*s,t),a=_e(e*i*i,t),c=i,l=_e(i*B8,t),d=a===r,u=a===_e(-r,t),f=a===_e(-r*B8,t);return d&&(i=c),(u||f)&&(i=l),C8(i,t)&&(i=_e(-i,t)),{isValid:d||u,value:i}}var Rn=Tl(xa,void 0,!0),t0={a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:Rn,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:ao,randomBytes:es,adjustScalarBytes:V8,uvRatio:TR},ti=Nl(t0);function K8(r,e,t){if(e.length>255)throw new Error("Context is too big");return vl(Kh("SigEd25519 no Ed25519 collisions"),new Uint8Array([t?1:0,e.length]),e,r)}var YM=Nl({...t0,domain:K8}),QM=Nl({...t0,domain:K8,prehash:ao}),va=L8({P:xa,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=xa,{pow_p_5_8:t,b2:n}=F8(r);return _e(Me(t,BigInt(3),e)*n,e)},adjustScalarBytes:V8,randomBytes:es});var kR=(Rn.ORDER+BigInt(3))/BigInt(8),XM=Rn.pow(e0,kR),jM=Rn.sqrt(Rn.neg(Rn.ONE)),ZM=(Rn.ORDER-BigInt(5))/BigInt(8),JM=BigInt(486662);var eF=N8(Rn,Rn.neg(BigInt(486664)));var tF=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),rF=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),nF=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),oF=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");var sF=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var ri=32,Sn=64,Pl=32;function $8(){let r=ti.utils.randomPrivateKey(),e=ti.getPublicKey(r);return{privateKey:G8(r,e),publicKey:e}}function H8(r){if(r.length!==Pl)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=ti.getPublicKey(e);return{privateKey:G8(e,t),publicKey:t}}function q8(r,e){let t=r.subarray(0,Pl);return ti.sign(e instanceof Uint8Array?e:e.subarray(),t)}function W8(r,e,t){return ti.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function G8(r,e){let t=new Uint8Array(Sn);for(let n=0;n<Pl;n++)t[n]=r[n],t[Pl+n]=e[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 r0={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function Ol(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,f){let g=a.getRandomValues(new Uint8Array(s)),h=a.getRandomValues(new Uint8Array(n)),p={name:e,iv:h};typeof f=="string"&&(f=B(f));let y;if(f.length===0){y=await a.subtle.importKey("jwk",r0,{name:"AES-GCM"},!0,["encrypt"]);try{let b={name:"PBKDF2",salt:g,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}catch{y=await a.subtle.importKey("jwk",r0,{name:"AES-GCM"},!0,["encrypt"])}}else{let b={name:"PBKDF2",salt:g,iterations:i,hash:{name:o}},E=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);y=await a.subtle.deriveKey(b,E,{name:e,length:t},!0,["encrypt"])}let w=await a.subtle.encrypt(p,y,u);return xe([g,p.iv,new Uint8Array(w)])}async function l(u,f){let g=u.subarray(0,s),h=u.subarray(s,s+n),p=u.subarray(s+n),y={name:e,iv:h};typeof f=="string"&&(f=B(f));let w;if(f.length===0)try{let E={name:"PBKDF2",salt:g,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,S,{name:e,length:t},!0,["decrypt"])}catch{w=await a.subtle.importKey("jwk",r0,{name:"AES-GCM"},!0,["decrypt"])}else{let E={name:"PBKDF2",salt:g,iterations:i,hash:{name:o}},S=await a.subtle.importKey("raw",f,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(E,S,{name:e,length:t},!0,["decrypt"])}let b=await a.subtle.decrypt(y,w,p);return new Uint8Array(b)}return{encrypt:c,decrypt:l}}async function ni(r,e){let n=await Ol().encrypt(r,e);return ut.encode(n)}var oi={};pe(oi,{KeyType:()=>Fe,PrivateKey:()=>Fr,PublicKey:()=>Mr});var Fe;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.Secp256k1="Secp256k1"})(Fe||(Fe={}));var n0;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.Secp256k1=2]="Secp256k1"})(n0||(n0={}));(function(r){r.codec=()=>$e(n0)})(Fe||(Fe={}));var Mr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Fe.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=Fe.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())})(Mr||(Mr={}));var Fr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{o.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),Fe.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=Fe.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())})(Fr||(Fr={}));var ns=class{_key;constructor(e){this._key=si(e,ri)}verify(e,t){return W8(this._key,t,e)}marshal(){return this._key}get bytes(){return Mr.encode({Type:Fe.Ed25519,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}hash(){let e=De.digest(this.bytes);return Er(e)?e.then(({bytes:t})=>t):e.bytes}},_n=class{_key;_publicKey;constructor(e,t){this._key=si(e,Sn),this._publicKey=si(t,ri)}sign(e){return q8(this._key,e)}get public(){return new ns(this._publicKey)}marshal(){return this._key}get bytes(){return Fr.encode({Type:Fe.Ed25519,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}async hash(){let e=De.digest(this.bytes),t;return Er(e)?{bytes:t}=await e:t=e.bytes,t}async id(){let e=pr.digest(this.public.bytes);return Ge.encode(e.bytes).substring(1)}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ni(this.bytes,e);throw new m(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function NR(r){if(r.length>Sn){r=si(r,Sn+ri);let n=r.subarray(0,Sn),o=r.subarray(Sn,r.length);return new _n(n,o)}r=si(r,Sn);let e=r.subarray(0,Sn),t=r.subarray(ri);return new _n(e,t)}function PR(r){return r=si(r,ri),new ns(r)}async function OR(){let{privateKey:r,publicKey:e}=$8();return new _n(r,e)}async function o0(r){let{privateKey:e,publicKey:t}=H8(r);return new _n(e,t)}function si(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new m(`Key must be a Uint8Array of length ${e}, got ${r.length}`,"ERR_INVALID_KEY_TYPE");return r}var Y8={"P-256":256,"P-384":384,"P-521":521},LR=Object.keys(Y8),i0=LR.join(" / ");async function Q8(r){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new m(`Unknown curve: ${r}. Must be ${i0}`,"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",j8(r,s),{name:"ECDH",namedCurve:r},!1,[]),l=await qe.get().subtle.deriveBits({name:"ECDH",namedCurve:r,public:c},a,Y8[r]);return new Uint8Array(l,0,l.byteLength)},n=await qe.get().subtle.exportKey("jwk",e.publicKey);return{key:BR(n),genSharedKey:t}}var X8={"P-256":32,"P-384":48,"P-521":66};function BR(r){if(r.crv==null||r.x==null||r.y==null)throw new m("JWK was missing components","ERR_INVALID_PARAMETERS");if(r.crv!=="P-256"&&r.crv!=="P-384"&&r.crv!=="P-521")throw new m(`Unknown curve: ${r.crv}. Must be ${i0}`,"ERR_INVALID_CURVE");let e=X8[r.crv];return xe([Uint8Array.from([4]),Vh(r.x,e),Vh(r.y,e)],1+e*2)}function j8(r,e){if(r!=="P-256"&&r!=="P-384"&&r!=="P-521")throw new m(`Unknown curve: ${r}. Must be ${i0}`,"ERR_INVALID_CURVE");let t=X8[r];if(!J(e.subarray(0,1),Uint8Array.from([4])))throw new m("Cannot unmarshal public key - invalid key format","ERR_INVALID_KEY_FORMAT");return{kty:"EC",crv:r,x:P(e.subarray(1,t+1),"base64url"),y:P(e.subarray(1+t),"base64url"),ext:!0}}var UR=(r,e)=>({...j8(r,e.public),d:P(e.private,"base64url")});var Z8=Q8;async function J8(r,e){let t=ut.decode(r);return Ol().decrypt(t,e)}var e6={SHA1:20,SHA256:32,SHA512:64};var MR={SHA1:"SHA-1",SHA256:"SHA-256",SHA512:"SHA-512"},FR=async(r,e)=>{let t=await qe.get().subtle.sign({name:"HMAC"},r,e);return new Uint8Array(t,0,t.byteLength)};async function t6(r,e){let t=MR[r],n=await qe.get().subtle.importKey("raw",e,{name:"HMAC",hash:{name:t}},!1,["sign"]);return{async digest(o){return FR(n,o)},length:e6[r]}}var r6={"AES-128":{ivSize:16,keySize:16},"AES-256":{ivSize:16,keySize:32},Blowfish:{ivSize:8,keySize:32}};async function n6(r,e,t){let n=r6[r];if(n==null){let b=Object.keys(r6).join(" / ");throw new m(`unknown cipher type '${r}'. Must be ${b}`,"ERR_INVALID_CIPHER_TYPE")}if(e==null)throw new m("missing hash type","ERR_MISSING_HASH_TYPE");let o=n.keySize,s=n.ivSize,i=20,a=B("key expansion"),c=2*(s+o+i),l=await t6(e,t),d=await l.digest(a),u=[],f=0;for(;f<c;){let b=await l.digest(xe([d,a])),E=b.length;f+E>c&&(E=c-f),u.push(b),f+=E,d=await l.digest(d)}let g=c/2,h=xe(u),p=h.subarray(0,g),y=h.subarray(g,c),w=b=>({iv:b.subarray(0,s),cipherKey:b.subarray(s,s+o),macKey:b.subarray(s+o)});return{k1:w(p),k2:w(y)}}var y0={};pe(y0,{MAX_RSA_KEY_SIZE:()=>is,RsaPrivateKey:()=>go,RsaPublicKey:()=>ss,fromJwk:()=>uS,generateKeyPair:()=>dS,unmarshalRsaPrivateKey:()=>m0,unmarshalRsaPublicKey:()=>lS});function qt(r){if(isNaN(r)||r<=0)throw new m("random bytes length must be a Number bigger than 0","ERR_INVALID_LENGTH");return es(r)}var mo={};pe(mo,{exportToPem:()=>sS,importFromPem:()=>p0,jwkToPkcs1:()=>tS,jwkToPkix:()=>nS,pkcs1ToJwk:()=>eS,pkixToJwk:()=>rS});var Ll=class extends Zs{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Zo(e);let n=Lr(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 js(this),this.iHash.update(e),this}digestInto(e){js(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()}},uo=(r,e,t)=>new Ll(r,e).update(t).digest();uo.create=(r,e)=>new Ll(r,e);function o6(r,e,t,n){Zo(r);let o=R8({dkLen:32,asyncTick:10},n),{c:s,dkLen:i,asyncTick:a}=o;if(no(s),no(i),no(a),s<1)throw new Error("PBKDF2: iterations (c) should be >= 1");let c=Lr(e),l=Lr(t),d=new Uint8Array(i),u=uo.create(r,c),f=u._cloneInto().update(l);return{c:s,dkLen:i,asyncTick:a,DK:d,PRF:u,PRFSalt:f}}function s6(r,e,t,n,o){return r.destroy(),e.destroy(),n&&n.destroy(),o.fill(0),t}function i6(r,e,t,n){let{c:o,dkLen:s,DK:i,PRF:a,PRFSalt:c}=o6(r,e,t,n),l,d=new Uint8Array(4),u=Jo(d),f=new Uint8Array(a.outputLen);for(let g=1,h=0;h<s;g++,h+=a.outputLen){let p=i.subarray(h,h+a.outputLen);u.setInt32(0,g,!1),(l=c._cloneInto(l)).update(d).digestInto(f),p.set(f.subarray(0,p.length));for(let y=1;y<o;y++){a._cloneInto(l).update(f).digestInto(f);for(let w=0;w<p.length;w++)p[w]^=f[w]}}return s6(a,c,i,l,f)}async function a0(r,e,t,n){let{c:o,dkLen:s,asyncTick:i,DK:a,PRF:c,PRFSalt:l}=o6(r,e,t,n),d,u=new Uint8Array(4),f=Jo(u),g=new Uint8Array(c.outputLen);for(let h=1,p=0;p<s;h++,p+=c.outputLen){let y=a.subarray(p,p+c.outputLen);f.setInt32(0,h,!1),(d=l._cloneInto(d)).update(u).digestInto(g),y.set(g.subarray(0,y.length)),await v8(o-1,i,()=>{c._cloneInto(d).update(g).digestInto(g);for(let w=0;w<y.length;w++)y[w]^=g[w]})}return s6(c,l,a,d,g)}var ye=Ye(a6());function os(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 fo(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 Ml(...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 l0(){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=os(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,os(s,8)-n}function c6(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=fo(i,8,n),c=new Uint8Array(a);return c[0]|=128,a}let o=fo(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 l6(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 Wt(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 jF=Math.log(2);function Fl(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function u0(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 kn(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 Sa=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return u0(this.items)}},Ra=[new Uint8Array([1])],u6="0123456789";var ci="",Kr=new ArrayBuffer(0),d0=new Uint8Array(0),_a="EndOfContent",f6="OCTET STRING",h6="BIT STRING";function Cn(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?ye.BufferSourceConverter.toUint8Array(s.valueHex):d0}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(!kn(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",Kr)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:ye.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var In=class{constructor({blockLength:e=0,error:t=ci,warnings:n=[],valueBeforeDecode:o=d0}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=ye.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:ye.Convert.ToHex(this.valueBeforeDecodeView)}}};In.NAME="baseBlock";var Pt=class extends In{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 Vl=class extends Cn(In){constructor({idBlock:e={}}={}){var t,n,o,s;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?ye.BufferSourceConverter.toUint8Array(e.valueHex):d0,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",Kr}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=fo(this.tagNumber,7),s=new Uint8Array(o),i=o.byteLength,a=new Uint8Array(i+1);if(a[0]=t|31,!e){for(let c=0;c<i-1;c++)a[c+1]=s[c]|128;a[i]=s[i-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let o=this.valueHexView;for(let s=0;s<o.length-1;s++)n[s+1]=o[s]|128;n[this.valueHexView.byteLength]=o[o.length-1]}return n.buffer}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!kn(this,o,t,n))return-1;let s=o.subarray(t,t+n);if(s.length===0)return this.error="Zero buffer length",-1;switch(s[0]&192){case 0:this.tagClass=1;break;case 64:this.tagClass=2;break;case 128:this.tagClass=3;break;case 192:this.tagClass=4;break;default:return this.error="Unknown tag class",-1}this.isConstructed=(s[0]&32)===32,this.isHexOnly=!1;let a=s[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),d=255;for(;s[c]&128;){if(l[c-1]=s[c]&127,c++,c>=s.length)return this.error="End of input reached before message was fully decoded",-1;if(c===d){d+=255;let f=new Uint8Array(d);for(let g=0;g<l.length;g++)f[g]=l[g];l=this.valueHexView=new Uint8Array(d)}}this.blockLength=c+1,l[c-1]=s[c]&127;let u=new Uint8Array(c);for(let f=0;f<c;f++)u[f]=l[f];l=this.valueHexView=new Uint8Array(c),l.set(u),this.blockLength<=9?this.tagNumber=os(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}}};Vl.NAME="identificationBlock";var Kl=class extends In{constructor({lenBlock:e={}}={}){var t,n,o;super(),this.isIndefiniteForm=(t=e.isIndefiniteForm)!==null&&t!==void 0?t:!1,this.longFormUsed=(n=e.longFormUsed)!==null&&n!==void 0?n:!1,this.length=(o=e.length)!==null&&o!==void 0?o:0}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!kn(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=os(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=fo(this.length,8);if(o.byteLength>127)return this.error="Too big length",Kr;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}}};Kl.NAME="lengthBlock";var W={},xt=class extends In{constructor({name:e=ci,optional:t=!1,primitiveSchema:n,...o}={},s){super(o),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new Vl(o),this.lenBlock=new Kl(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 Sa;t||p6(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?Kr:n.final()}toJSON(){let e={...super.toJSON(),idBlock:this.idBlock.toJSON(),lenBlock:this.lenBlock.toJSON(),valueBlock:this.valueBlock.toJSON(),name:this.name,optional:this.optional};return this.primitiveSchema&&(e.primitiveSchema=this.primitiveSchema.toJSON()),e}toString(e="ascii"){return e==="ascii"?this.onAsciiEncoding():ye.Convert.ToHex(this.toBER())}onAsciiEncoding(){return`${this.constructor.NAME} : ${ye.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 l6(t,n)}};xt.NAME="BaseBlock";function p6(r){if(r instanceof W.Constructed)for(let e of r.valueBlock.value)p6(e)&&(r.lenBlock.isIndefiniteForm=!0);return!!r.lenBlock.isIndefiniteForm}var $l=class extends xt{constructor({value:e=ci,...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}'`}};$l.NAME="BaseStringBlock";var Hl=class extends Cn(Pt){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};Hl.NAME="PrimitiveValueBlock";var m6,ql=class extends xt{constructor(e={}){super(e,Hl),this.idBlock.isConstructed=!1}};m6=ql;W.Primitive=m6;ql.NAME="PRIMITIVE";function QR(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 Ru(r,e=0,t=r.length){let n=e,o=new xt({},Pt),s=new In;if(!kn(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=QR(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 li(r){if(!r.byteLength){let e=new xt({},Pt);return e.error="Input buffer has zero length",{offset:-1,result:e}}return Ru(ye.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function XR(r,e){return r?1:e}var nn=class extends Pt{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let o=ye.BufferSourceConverter.toUint8Array(e);if(!kn(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(;XR(this.isIndefiniteForm,n)>0;){let i=Ru(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===_a)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===_a?this.value.pop():this.warnings.push("No EndOfContent block encoded")),s}toBER(e,t){let n=t||new Sa;for(let o=0;o<this.value.length;o++)this.value[o].toBER(e,n);return t?Kr:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};nn.NAME="ConstructedValueBlock";var g6,ho=class extends xt{constructor(e={}){super(e,nn),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} :`}};a6=mo;W.Constructed=a6;mo.NAME="CONSTRUCTED";var Pl=class extends kt{fromBER(e,t,n){return t}toBER(e){return Vr}};Pl.override="EndOfContentValueBlock";var c6,Ll=class extends gt{constructor(e={}){super(e,Pl),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};c6=Ll;W.EndOfContent=c6;Ll.NAME=Ea;var l6,go=class extends gt{constructor(e={}){super(e,kt),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}`}};l6=go;W.Null=l6;go.NAME="NULL";var Bl=class extends Nn(kt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=be.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=be.BufferSourceConverter.toUint8Array(e);return Cn(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,i0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};Bl.NAME="BooleanValueBlock";var u6,Ml=class extends gt{constructor(e={}){super(e,Bl),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}`}};u6=Ml;W.Boolean=u6;Ml.NAME="BOOLEAN";var Ul=class extends Nn(rn){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=rn.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===Ea){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==n6)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?rn.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Ul.NAME="OctetStringValueBlock";var d6,Tn=class r extends gt{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},Ul),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=fu(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} : ${be.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 be.BufferSourceConverter.concat(e)}};d6=Tn;W.OctetString=d6;Tn.NAME=n6;var Fl=class extends Nn(rn){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=rn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===Ea){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==o6)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=be.BufferSourceConverter.toUint8Array(e);if(!Cn(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=fu(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 rn.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Vr;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}}};Fl.NAME="BitStringValueBlock";var f6,ci=class extends gt{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},Fl),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)}`}}};f6=ci;W.BitString=f6;ci.NAME=o6;var h6;function LR(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 f=d;f>=0;f--,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=Il(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=Il(t,s)),s}function r6(r){if(r>=wa.length)for(let e=wa.length;e<=r;e++){let t=new Uint8Array([0]),n=wa[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=Il(t,n)),wa.push(n)}return wa[r]}function BR(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 xa=class extends Nn(kt){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=i0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(Jm(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=BR(r6(n),t),i="-";break;default:t=LR(t,r6(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=t6.charAt(t[c]));return a===!1&&(i+=t6.charAt(0)),i}};h6=xa;xa.NAME="IntegerValueBlock";Object.defineProperty(h6.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var p6,ot=class r extends gt{constructor(e={}){super(e,xa),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Dl(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Dl();let t=BigInt(e),n=new ba,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(be.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${be.Convert.ToHex(a)}`)+t,d=be.BufferSourceConverter.toUint8Array(be.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()}`}};p6=ot;W.Integer=p6;ot.NAME="INTEGER";var m6,Vl=class extends ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};m6=Vl;W.Enumerated=m6;Vl.NAME="ENUMERATED";var va=class extends Nn(kt){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=be.BufferSourceConverter.toUint8Array(e);if(!Cn(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=ls(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Dl();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",Vr;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=be.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}}};va.NAME="sidBlock";var Kl=class extends kt{constructor({value:e=li,...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.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,Vr;t.push(o)}return a0(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 va;if(o>Number.MAX_SAFE_INTEGER){Dl();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 g6,Fr=class extends gt{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()}}};g6=Fr;W.ObjectIdentifier=g6;Fr.NAME="OBJECT IDENTIFIER";var _a=class extends Nn(Dn){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=be.BufferSourceConverter.toUint8Array(e);if(!Cn(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=ls(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",Vr;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=be.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};_a.NAME="relativeSidBlock";var $l=class extends kt{constructor({value:e=li,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new _a;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,Vr;n.push(s)}return a0(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 _a;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}};$l.NAME="RelativeObjectIdentifierValueBlock";var y6,Hl=class extends gt{constructor(e={}){super(e,$l),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()}}};y6=Hl;W.RelativeObjectIdentifier=y6;Hl.NAME="RelativeObjectIdentifier";var w6,dt=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};w6=dt;W.Sequence=w6;dt.NAME="SEQUENCE";var b6,ql=class extends mo{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};b6=ql;W.Set=b6;ql.NAME="SET";var Wl=class extends Nn(kt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=li}toJSON(){return{...super.toJSON(),value:this.value}}};Wl.NAME="StringValueBlock";var zl=class extends Wl{};zl.NAME="SimpleStringValueBlock";var Ot=class extends Cl{constructor({...e}={}){super(e,zl)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,be.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}};Ot.NAME="SIMPLE STRING";var Gl=class extends Ot{fromBuffer(e){this.valueBlock.valueHexView=be.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=be.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=be.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(be.Convert.FromUtf8String(e)),this.valueBlock.value=e}};Gl.NAME="Utf8StringValueBlock";var E6,kn=class extends Gl{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};E6=kn;W.Utf8String=E6;kn.NAME="UTF8String";var Yl=class extends Ot{fromBuffer(e){this.valueBlock.value=be.Convert.ToUtf16String(e),this.valueBlock.valueHexView=be.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(be.Convert.FromUtf16String(e))}};Yl.NAME="BmpStringValueBlock";var x6,Xl=class extends Yl{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};x6=Xl;W.BmpString=x6;Xl.NAME="BMPString";var Ql=class extends Ot{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}};Ql.NAME="UniversalStringValueBlock";var v6,jl=class extends Ql{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};v6=jl;W.UniversalString=v6;jl.NAME="UniversalString";var _6,Zl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};_6=Zl;W.NumericString=_6;Zl.NAME="NumericString";var S6,Jl=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};S6=Jl;W.PrintableString=S6;Jl.NAME="PrintableString";var R6,eu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};R6=eu;W.TeletexString=R6;eu.NAME="TeletexString";var A6,tu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};A6=tu;W.VideotexString=A6;tu.NAME="VideotexString";var I6,ru=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};I6=ru;W.IA5String=I6;ru.NAME="IA5String";var D6,nu=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};D6=nu;W.GraphicString=D6;nu.NAME="GraphicString";var T6,Sa=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};T6=Sa;W.VisibleString=T6;Sa.NAME="VisibleString";var k6,ou=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};k6=ou;W.GeneralString=k6;ou.NAME="GeneralString";var C6,su=class extends Ot{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};C6=su;W.CharacterString=C6;su.NAME="CharacterString";var N6,Ra=class extends Sa{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,be.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]=Kt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Kt(this.month,2),t[2]=Kt(this.day,2),t[3]=Kt(this.hour,2),t[4]=Kt(this.minute,2),t[5]=Kt(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}}};N6=Ra;W.UTCTime=N6;Ra.NAME="UTCTime";var O6,iu=class extends Ra{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,f=n.indexOf("+"),m="";if(f===-1&&(f=n.indexOf("-"),u=-1),f!==-1){if(m=n.substring(f+1),n=n.substring(0,f),m.length!==2&&m.length!==4)throw new Error("Wrong input string for conversion");let h=parseInt(m.substring(0,2),10);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*h,m.length===4){if(h=parseInt(m.substring(2,4),10),isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");c=u*h}}}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(Kt(this.year,4)),t.push(Kt(this.month,2)),t.push(Kt(this.day,2)),t.push(Kt(this.hour,2)),t.push(Kt(this.minute,2)),t.push(Kt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Kt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};O6=iu;W.GeneralizedTime=O6;iu.NAME="GeneralizedTime";var P6,au=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};P6=au;W.DATE=P6;au.NAME="DATE";var L6,cu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};L6=cu;W.TimeOfDay=L6;cu.NAME="TimeOfDay";var B6,lu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};B6=lu;W.DateTime=B6;lu.NAME="DateTime";var M6,uu=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};M6=uu;W.Duration=M6;uu.NAME="Duration";var U6,du=class extends kn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};U6=du;W.TIME=U6;du.NAME="TIME";function UR(r){let{result:e}=ui(r),t=e.valueBlock.value;return{n:B(nn(t[1].toBigInt()),"base64url"),e:B(nn(t[2].toBigInt()),"base64url"),d:B(nn(t[3].toBigInt()),"base64url"),p:B(nn(t[4].toBigInt()),"base64url"),q:B(nn(t[5].toBigInt()),"base64url"),dp:B(nn(t[6].toBigInt()),"base64url"),dq:B(nn(t[7].toBigInt()),"base64url"),qi:B(nn(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function FR(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 dt({value:[new ot({value:0}),ot.fromBigInt(on(L(r.n,"base64url"))),ot.fromBigInt(on(L(r.e,"base64url"))),ot.fromBigInt(on(L(r.d,"base64url"))),ot.fromBigInt(on(L(r.p,"base64url"))),ot.fromBigInt(on(L(r.q,"base64url"))),ot.fromBigInt(on(L(r.dp,"base64url"))),ot.fromBigInt(on(L(r.dq,"base64url"))),ot.fromBigInt(on(L(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function VR(r){let{result:e}=ui(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:B(nn(t[0].toBigInt()),"base64url"),e:B(nn(t[1].toBigInt()),"base64url")}}function KR(r){if(r.n==null||r.e==null)throw new g("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new dt({value:[new dt({value:[new Fr({value:"1.2.840.113549.1.1.1"}),new go]}),new ci({valueHex:new dt({value:[ot.fromBigInt(on(L(r.n,"base64url"))),ot.fromBigInt(on(L(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function nn(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 on(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 $R=16,l0=32,u0=1e4;async function HR(r,e){let t=$e.get(),o=new dt({value:[new ot({value:0}),new dt({value:[new Fr({value:"1.2.840.113549.1.1.1"}),new go]}),new Tn({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=Vt($R),a=await o0(uo,e,i,{c:u0,dkLen:l0}),c=Vt(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 dt({value:[new Tn({valueHex:i}),new ot({value:u0}),new ot({value:l0}),new dt({value:[new Fr({value:"1.2.840.113549.2.11"}),new go]})]}),f=new dt({value:[new Fr({value:"1.2.840.113549.1.5.13"}),new dt({value:[new dt({value:[new Fr({value:"1.2.840.113549.1.5.12"}),u]}),new dt({value:[new Fr({value:"2.16.840.1.101.3.4.1.42"}),new Tn({valueHex:c})]})]})]}),h=new dt({value:[f,new Tn({valueHex:d})]}).toBER(),p=new Uint8Array(h,0,h.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...B(p,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
-
`)}async function d0(r,e){let t=$e.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ui(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=qR(s),u=await o0(uo,e,a,{c,dkLen:l}),f=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),m=Aa(await t.subtle.decrypt({name:"AES-CBC",iv:i},f,d)),{result:h}=ui(m);n=F6(h)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=L(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=ui(o);n=F6(s)}else throw new g("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return f0(n)}function qR(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=Aa(s.valueBlock.value[0].getValue()),a=u0,c=l0;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=Aa(l.valueBlock.value[1].getValue());return{cipherText:Aa(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function F6(r){return Aa(r.valueBlock.value[2].getValue())}function Aa(r){return new Uint8Array(r,0,r.byteLength)}async function V6(r){let e=await $e.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 H6(e);return{privateKey:t[0],publicKey:t[1]}}async function h0(r){let t=[await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await WR(r)],n=await H6({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function K6(r,e){let t=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await $e.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function $6(r,e,t){let n=await $e.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return $e.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function H6(r){if(r.privateKey==null||r.publicKey==null)throw new g("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([$e.get().subtle.exportKey("jwk",r.privateKey),$e.get().subtle.exportKey("jwk",r.publicKey)])}async function WR(r){return $e.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 hu(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 L(r.n,"base64url").length*8}var ds=8192,us=class{_key;constructor(e){this._key=e}verify(e,t){return $6(this._key,t,e)}marshal(){return yo.jwkToPkix(this._key)}get bytes(){return Mr.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return fr(e)?e.then(({bytes:t})=>t):e.bytes}},wo=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return Vt(16)}sign(e){return K6(this._key,e)}get public(){if(this._publicKey==null)throw new g("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new us(this._publicKey)}marshal(){return yo.jwkToPkcs1(this._key)}get bytes(){return Ur.encode({Type:Ue.RSA,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return yo.exportToPem(this,e);if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function f0(r){let e=yo.pkcs1ToJwk(r);if(hu(e)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await h0(e);return new wo(t.privateKey,t.publicKey)}function GR(r){let e=yo.pkixToJwk(r);if(hu(e)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new us(e)}async function YR(r){if(hu(r)>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await h0(r);return new wo(e.privateKey,e.publicKey)}async function XR(r){if(r>ds)throw new g("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await V6(r);return new wo(e.privateKey,e.publicKey)}var b0={};me(b0,{Secp256k1PrivateKey:()=>ps,Secp256k1PublicKey:()=>hs,generateKeyPair:()=>uA,unmarshalSecp256k1PrivateKey:()=>cA,unmarshalSecp256k1PublicKey:()=>lA});var QR=(r,e,t)=>r&e^~r&t,jR=(r,e,t)=>r&e^r&t^e&t,ZR=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]),bo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Eo=new Uint32Array(64),m0=class extends ao{constructor(){super(64,32,8,!1),this.A=bo[0]|0,this.B=bo[1]|0,this.C=bo[2]|0,this.D=bo[3]|0,this.E=bo[4]|0,this.F=bo[5]|0,this.G=bo[6]|0,this.H=bo[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)Eo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=Eo[u-15],m=Eo[u-2],h=Nr(f,7)^Nr(f,18)^f>>>3,p=Nr(m,17)^Nr(m,19)^m>>>10;Eo[u]=p+Eo[u-7]+h+Eo[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Nr(a,6)^Nr(a,11)^Nr(a,25),m=d+f+QR(a,c,l)+ZR[u]+Eo[u]|0,p=(Nr(n,2)^Nr(n,13)^Nr(n,22))+jR(n,o,s)|0;d=l,l=c,c=a,a=i+m|0,i=s,s=o,o=n,n=m+p|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(){Eo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var xo=ti(()=>new m0);function JR(r){let e=pa(r);hr(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:eA,hexToBytes:tA}=gl,fs={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=fs;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:eA(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=fs,t=typeof r=="string"?tA(r):r;if(!Pr(t))throw new Error("ui8a expected");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}=fs._parseInt(t.subarray(2)),{d:i,l:a}=fs._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}`}},On=BigInt(0),mr=BigInt(1),PK=BigInt(2),q6=BigInt(3),LK=BigInt(4);function rA(r){let e=JR(r),{Fp:t}=e,n=e.toBytes||((h,p,y)=>{let w=p.toAffine();return _n(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(h=>{let p=h.subarray(1),y=t.fromBytes(p.subarray(0,t.BYTES)),w=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(h){let{a:p,b:y}=e,w=t.sqr(h),E=t.mul(w,h);return t.add(t.add(E,t.mul(h,p)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(h){return typeof h=="bigint"&&On<h&&h<e.n}function a(h){if(!i(h))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(h){let{allowedPrivateKeyLengths:p,nByteLength:y,wrapPrivateKey:w,n:E}=e;if(p&&typeof h!="bigint"){if(Pr(h)&&(h=En(h)),typeof h!="string"||!p.includes(h.length))throw new Error("Invalid key");h=h.padStart(y*2,"0")}let b;try{b=typeof h=="bigint"?h:xn(Be("private key",h,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof h}`)}return w&&(b=Ae(b,E)),a(b),b}let l=new Map;function d(h){if(!(h instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(p,y,w){if(this.px=p,this.py=y,this.pz=w,p==null||!t.isValid(p))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(p){let{x:y,y:w}=p||{};if(!p||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(p instanceof u)throw new Error("projective point not allowed");let E=b=>t.eql(b,t.ZERO);return E(y)&&E(w)?u.ZERO:new u(y,w,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let y=t.invertBatch(p.map(w=>w.pz));return p.map((w,E)=>w.toAffine(y[E])).map(u.fromAffine)}static fromHex(p){let y=u.fromAffine(o(Be("pointHex",p)));return y.assertValidity(),y}static fromPrivateKey(p){return u.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y}=this.toAffine();if(!t.isValid(p)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),E=s(p);if(!t.eql(w,E))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.eql(t.mul(y,R),t.mul(b,E)),D=t.eql(t.mul(w,R),t.mul(S,E));return A&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b:y}=e,w=t.mul(y,q6),{px:E,py:b,pz:S}=this,R=t.ZERO,A=t.ZERO,D=t.ZERO,_=t.mul(E,E),k=t.mul(b,b),O=t.mul(S,S),N=t.mul(E,b);return N=t.add(N,N),D=t.mul(E,S),D=t.add(D,D),R=t.mul(p,D),A=t.mul(w,O),A=t.add(R,A),R=t.sub(k,A),A=t.add(k,A),A=t.mul(R,A),R=t.mul(N,R),D=t.mul(w,D),O=t.mul(p,O),N=t.sub(_,O),N=t.mul(p,N),N=t.add(N,D),D=t.add(_,_),_=t.add(D,_),_=t.add(_,O),_=t.mul(_,N),A=t.add(A,_),O=t.mul(b,S),O=t.add(O,O),_=t.mul(O,N),R=t.sub(R,_),D=t.mul(O,k),D=t.add(D,D),D=t.add(D,D),new u(R,A,D)}add(p){d(p);let{px:y,py:w,pz:E}=this,{px:b,py:S,pz:R}=p,A=t.ZERO,D=t.ZERO,_=t.ZERO,k=e.a,O=t.mul(e.b,q6),N=t.mul(y,b),P=t.mul(w,S),F=t.mul(E,R),Y=t.add(y,w),I=t.add(b,S);Y=t.mul(Y,I),I=t.add(N,P),Y=t.sub(Y,I),I=t.add(y,E);let C=t.add(b,R);return I=t.mul(I,C),C=t.add(N,F),I=t.sub(I,C),C=t.add(w,E),A=t.add(S,R),C=t.mul(C,A),A=t.add(P,F),C=t.sub(C,A),_=t.mul(k,I),A=t.mul(O,F),_=t.add(A,_),A=t.sub(P,_),_=t.add(P,_),D=t.mul(A,_),P=t.add(N,N),P=t.add(P,N),F=t.mul(k,F),I=t.mul(O,I),P=t.add(P,F),F=t.sub(N,F),F=t.mul(k,F),I=t.add(I,F),N=t.mul(P,I),D=t.add(D,N),N=t.mul(C,I),A=t.mul(Y,A),A=t.sub(A,N),N=t.mul(Y,P),_=t.mul(C,_),_=t.add(_,N),new u(A,D,_)}subtract(p){return this.add(p.negate())}is0(){return this.equals(u.ZERO)}wNAF(p){return m.wNAFCached(this,l,p,y=>{let w=t.invertBatch(y.map(E=>E.pz));return y.map((E,b)=>E.toAffine(w[b])).map(u.fromAffine)})}multiplyUnsafe(p){let y=u.ZERO;if(p===On)return y;if(a(p),p===mr)return this;let{endo:w}=e;if(!w)return m.unsafeLadder(this,p);let{k1neg:E,k1:b,k2neg:S,k2:R}=w.splitScalar(p),A=y,D=y,_=this;for(;b>On||R>On;)b&mr&&(A=A.add(_)),R&mr&&(D=D.add(_)),_=_.double(),b>>=mr,R>>=mr;return E&&(A=A.negate()),S&&(D=D.negate()),D=new u(t.mul(D.px,w.beta),D.py,D.pz),A.add(D)}multiply(p){a(p);let y=p,w,E,{endo:b}=e;if(b){let{k1neg:S,k1:R,k2neg:A,k2:D}=b.splitScalar(y),{p:_,f:k}=this.wNAF(R),{p:O,f:N}=this.wNAF(D);_=m.constTimeNegate(S,_),O=m.constTimeNegate(A,O),O=new u(t.mul(O.px,b.beta),O.py,O.pz),w=_.add(O),E=k.add(N)}else{let{p:S,f:R}=this.wNAF(y);w=S,E=R}return u.normalizeZ([w,E])[0]}multiplyAndAddUnsafe(p,y,w){let E=u.BASE,b=(R,A)=>A===On||A===mr||!R.equals(E)?R.multiplyUnsafe(A):R.multiply(A),S=b(this,y).add(b(p,w));return S.is0()?void 0:S}toAffine(p){let{px:y,py:w,pz:E}=this,b=this.is0();p==null&&(p=b?t.ONE:t.inv(E));let S=t.mul(y,p),R=t.mul(w,p),A=t.mul(E,p);if(b)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:S,y:R}}isTorsionFree(){let{h:p,isTorsionFree:y}=e;if(p===mr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:y}=e;return p===mr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(u,this,p)}toHex(p=!0){return En(this.toRawBytes(p))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let f=e.nBitLength,m=bl(u,e.endo?Math.ceil(f/2):f);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function nA(r){let e=pa(r);return hr(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function W6(r){let e=nA(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(I){return On<I&&I<t.ORDER}function a(I){return Ae(I,n)}function c(I){return yl(I,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:f}=rA({...e,toBytes(I,C,$){let T=C.toAffine(),v=t.toBytes(T.x),M=_n;return $?M(Uint8Array.from([C.hasEvenY()?2:3]),v):M(Uint8Array.from([4]),v,t.toBytes(T.y))},fromBytes(I){let C=I.length,$=I[0],T=I.subarray(1);if(C===o&&($===2||$===3)){let v=xn(T);if(!i(v))throw new Error("Point is not on curve");let M=u(v),V=t.sqrt(M),q=(V&mr)===mr;return($&1)===1!==q&&(V=t.neg(V)),{x:v,y:V}}else if(C===s&&$===4){let v=t.fromBytes(T.subarray(0,t.BYTES)),M=t.fromBytes(T.subarray(t.BYTES,2*t.BYTES));return{x:v,y:M}}else throw new Error(`Point of length ${C} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),m=I=>En(fo(I,e.nByteLength));function h(I){let C=n>>mr;return I>C}function p(I){return h(I)?a(-I):I}let y=(I,C,$)=>xn(I.slice(C,$));class w{constructor(C,$,T){this.r=C,this.s=$,this.recovery=T,this.assertValidity()}static fromCompact(C){let $=e.nByteLength;return C=Be("compactSignature",C,$*2),new w(y(C,0,$),y(C,$,2*$))}static fromDER(C){let{r:$,s:T}=fs.toSig(Be("DER",C));return new w($,T)}assertValidity(){if(!f(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!f(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(C){return new w(this.r,this.s,C)}recoverPublicKey(C){let{r:$,s:T,recovery:v}=this,M=D(Be("msgHash",C));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let V=v===2||v===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let q=v&1?"03":"02",ne=l.fromHex(q+m(V)),ie=c(V),pe=a(-M*ie),le=a(T*ie),ue=l.BASE.multiplyAndAddUnsafe(ne,pe,le);if(!ue)throw new Error("point at infinify");return ue.assertValidity(),ue}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return is(this.toDERHex())}toDERHex(){return fs.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return is(this.toCompactHex())}toCompactHex(){return m(this.r)+m(this.s)}}let E={isValidPrivateKey(I){try{return d(I),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let I=Yh(e.n);return Rm(e.randomBytes(I),e.n)},precompute(I=8,C=l.BASE){return C._setWindowSize(I),C.multiply(BigInt(3)),C}};function b(I,C=!0){return l.fromPrivateKey(I).toRawBytes(C)}function S(I){let C=Pr(I),$=typeof I=="string",T=(C||$)&&I.length;return C?T===o||T===s:$?T===2*o||T===2*s:I instanceof l}function R(I,C,$=!0){if(S(I))throw new Error("first arg must be private key");if(!S(C))throw new Error("second arg must be public key");return l.fromHex(C).multiply(d(I)).toRawBytes($)}let A=e.bits2int||function(I){let C=xn(I),$=I.length*8-e.nBitLength;return $>0?C>>BigInt($):C},D=e.bits2int_modN||function(I){return a(A(I))},_=ha(e.nBitLength);function k(I){if(typeof I!="bigint")throw new Error("bigint expected");if(!(On<=I&&I<_))throw new Error(`bigint expected < 2^${e.nBitLength}`);return fo(I,e.nByteLength)}function O(I,C,$=N){if(["recovered","canonical"].some(Te=>Te in $))throw new Error("sign() legacy options not supported");let{hash:T,randomBytes:v}=e,{lowS:M,prehash:V,extraEntropy:q}=$;M==null&&(M=!0),I=Be("msgHash",I),V&&(I=Be("prehashed msgHash",T(I)));let ne=D(I),ie=d(C),pe=[k(ie),k(ne)];if(q!=null){let Te=q===!0?v(t.BYTES):q;pe.push(Be("extraEntropy",Te))}let le=_n(...pe),ue=ne;function Le(Te){let ht=A(Te);if(!f(ht))return;let pt=c(ht),st=l.BASE.multiply(ht).toAffine(),Rt=a(st.x);if(Rt===On)return;let mn=a(pt*a(ue+Rt*ie));if(mn===On)return;let Ho=(st.x===Rt?0:2)|Number(st.y&mr),ra=mn;return M&&h(mn)&&(ra=p(mn),Ho^=1),new w(Rt,ra,Ho)}return{seed:le,k2sig:Le}}let N={lowS:e.lowS,prehash:!1},P={lowS:e.lowS,prehash:!1};function F(I,C,$=N){let{seed:T,k2sig:v}=O(I,C,$),M=e;return Hh(M.hash.outputLen,M.nByteLength,M.hmac)(T,v)}l.BASE._setWindowSize(8);function Y(I,C,$,T=P){let v=I;if(C=Be("msgHash",C),$=Be("publicKey",$),"strict"in T)throw new Error("options.strict was renamed to lowS");let{lowS:M,prehash:V}=T,q,ne;try{if(typeof v=="string"||Pr(v))try{q=w.fromDER(v)}catch(st){if(!(st instanceof fs.Err))throw st;q=w.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:st,s:Rt}=v;q=new w(st,Rt)}else throw new Error("PARSE");ne=l.fromHex($)}catch(st){if(st.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(M&&q.hasHighS())return!1;V&&(C=e.hash(C));let{r:ie,s:pe}=q,le=D(C),ue=c(pe),Le=a(le*ue),Te=a(ie*ue),ht=l.BASE.multiplyAndAddUnsafe(ne,Le,Te)?.toAffine();return ht?a(ht.x)===ie:!1}return{CURVE:e,getPublicKey:b,getSharedSecret:R,sign:F,verify:Y,ProjectivePoint:l,Signature:w,utils:E}}function oA(r){return{hash:r,hmac:(e,...t)=>ho(r,e,hl(...t)),randomBytes:ss}}function z6(r,e){let t=n=>W6({...r,...oA(n)});return Object.freeze({...t(e),create:t})}var X6=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),G6=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),sA=BigInt(1),g0=BigInt(2),Y6=(r,e)=>(r+e/g0)/e;function iA(r){let e=X6,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=Me(d,t,e)*d%e,f=Me(u,t,e)*d%e,m=Me(f,g0,e)*l%e,h=Me(m,o,e)*m%e,p=Me(h,s,e)*h%e,y=Me(p,a,e)*p%e,w=Me(y,c,e)*y%e,E=Me(w,a,e)*p%e,b=Me(E,t,e)*d%e,S=Me(b,i,e)*h%e,R=Me(S,n,e)*l%e,A=Me(R,g0,e);if(!y0.eql(y0.sqr(A),r))throw new Error("Cannot find square root");return A}var y0=wl(X6,void 0,void 0,{sqrt:iA}),Kr=z6({a:BigInt(0),b:BigInt(7),Fp:y0,n:G6,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=G6,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-sA*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=Y6(s*r,e),c=Y6(-n*r,e),l=Ae(r-a*t-c*o,e),d=Ae(-a*n-c*s,e),u=l>i,f=d>i;if(u&&(l=e-l),f&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}}},xo),qK=BigInt(0);var WK=Kr.ProjectivePoint;function Q6(){return Kr.utils.randomPrivateKey()}function j6(r,e){let t=Re.digest(e instanceof Uint8Array?e:e.subarray());if(fr(t))return t.then(({digest:n})=>Kr.sign(n,r).toDERRawBytes()).catch(n=>{throw new g(String(n),"ERR_INVALID_INPUT")});try{return Kr.sign(t.digest,r).toDERRawBytes()}catch(n){throw new g(String(n),"ERR_INVALID_INPUT")}}function Z6(r,e,t){let n=Re.digest(t instanceof Uint8Array?t:t.subarray());if(fr(n))return n.then(({digest:o})=>Kr.verify(e,o,r)).catch(o=>{throw new g(String(o),"ERR_INVALID_INPUT")});try{return Kr.verify(e,n.digest,r)}catch(o){throw new g(String(o),"ERR_INVALID_INPUT")}}function J6(r){return Kr.ProjectivePoint.fromHex(r).toRawBytes(!0)}function e5(r){try{Kr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}function w0(r){try{Kr.ProjectivePoint.fromHex(r)}catch(e){throw new g(String(e),"ERR_INVALID_PUBLIC_KEY")}}function t5(r){try{return Kr.getPublicKey(r,!0)}catch(e){throw new g(String(e),"ERR_INVALID_PRIVATE_KEY")}}var hs=class{_key;constructor(e){w0(e),this._key=e}verify(e,t){return Z6(this._key,t,e)}marshal(){return J6(this._key)}get bytes(){return Mr.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}async hash(){let e=Re.digest(this.bytes),t;return fr(e)?{bytes:t}=await e:t=e.bytes,t}},ps=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??t5(e),e5(this._key),w0(this._publicKey)}sign(e){return j6(this._key,e)}get public(){return new hs(this._publicKey)}marshal(){return this._key}get bytes(){return Ur.encode({Type:Ue.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return j(this.bytes,e.bytes)}hash(){let e=Re.digest(this.bytes);return fr(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return B(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return oi(this.bytes,e);throw new g(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function cA(r){return new ps(r)}function lA(r){return new hs(r)}async function uA(){let r=Q6();return new ps(r)}var Pn={rsa:p0,ed25519:r0,secp256k1:b0};function E0(r){let e=Object.keys(Pn).join(" / ");return new g(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function x0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Pn[r];throw E0(r)}async function Ia(r,e){return x0(r).generateKeyPair(e??2048)}async function dA(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 t0(e)}function $r(r){let e=Mr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return Pn.rsa.unmarshalRsaPublicKey(t);case Ue.Ed25519:return Pn.ed25519.unmarshalEd25519PublicKey(t);case Ue.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw E0(e.Type??"unknown")}}function v0(r,e){return e=(e??"rsa").toLowerCase(),x0(e),r.bytes}async function gr(r){let e=Ur.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Ue.RSA:return Pn.rsa.unmarshalRsaPrivateKey(t);case Ue.Ed25519:return Pn.ed25519.unmarshalEd25519PrivateKey(t);case Ue.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw E0(e.Type??"RSA")}}function _0(r,e){return e=(e??"rsa").toLowerCase(),x0(e),r.bytes}async function di(r,e){try{let t=await qm(r,e);return await gr(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 d0(r,e)}var WA=ke(Zo(),1);var Ln="/",r5=new TextEncoder().encode(Ln),mu=r5[0],Oe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=L(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]!==mu)throw new Error("Invalid key")}toString(e="utf8"){return B(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(Ln))}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=r5),this._buf[0]!==mu){let e=new Uint8Array(this._buf.byteLength+1);e.fill(mu,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===mu;)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(Ln).slice(1)}type(){return fA(this.baseNamespace())}name(){return hA(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(Ln)||(e+=Ln),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(Ln):new r(e.slice(0,-1).join(Ln))}child(e){return this.toString()===Ln?e:e.toString()===Ln?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(),...pA(e.map(t=>t.namespaces()))])}};function fA(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function hA(r){let e=r.split(":");return e[e.length-1]}function pA(r){return[].concat(...r)}var zA=ke(gu(),1);var n5="ERR_IPNS_EXPIRED_RECORD",yu="ERR_UNRECOGNIZED_VALIDITY";var Bn="ERR_SIGNATURE_VERIFICATION";var R0="ERR_UNDEFINED_PARAMETER",o5="ERR_INVALID_RECORD_DATA",s5="ERR_INVALID_VALUE",i5="ERR_INVALID_EMBEDDED_KEY";var a5="ERR_RECORD_TOO_LARGE";var $t;(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=()=>Ve(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=te((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=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})($t||($t={}));var mA=["string","number","bigint","symbol"],gA=["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 l5(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(mA.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(yA(r))return"Buffer";let t=wA(r);return t||"Object"}function yA(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function wA(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(gA.includes(e))return e}var x=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}};x.uint=new x(0,"uint",!0);x.negint=new x(1,"negint",!0);x.bytes=new x(2,"bytes",!0);x.string=new x(3,"string",!0);x.array=new x(4,"array",!1);x.map=new x(5,"map",!1);x.tag=new x(6,"tag",!1);x.float=new x(7,"float",!0);x.false=new x(7,"false",!0);x.true=new x(7,"true",!0);x.null=new x(7,"null",!0);x.undefined=new x(7,"undefined",!0);x.break=new x(7,"break",!0);var U=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 fi=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",bA=new TextDecoder,EA=new TextEncoder;function wu(r){return fi&&globalThis.Buffer.isBuffer(r)}function Da(r){return r instanceof Uint8Array?wu(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var h5=fi?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):d5(r,e,t):(r,e,t)=>t-e>64?bA.decode(r.subarray(e,t)):d5(r,e,t),bu=fi?r=>r.length>64?globalThis.Buffer.from(r):u5(r):r=>r.length>64?EA.encode(r):u5(r),sn=r=>Uint8Array.from(r),hi=fi?(r,e,t)=>wu(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),p5=fi?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Da(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},m5=fi?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function g5(r,e){if(wu(r)&&wu(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 u5(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 d5(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 A0(n)}var f5=4096;function A0(r){let e=r.length;if(e<=f5)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=f5));return t}var xA=256,Ta=class{constructor(e=xA){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=m5(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=hi(n,0,this.cursor)}else t=p5(this.chunks,this.cursor);return e&&this.reset(),t}};var X="CBOR decode error:",pi="CBOR encode error:",ka=[];ka[23]=1;ka[24]=2;ka[25]=3;ka[26]=5;ka[27]=9;function Mn(r,e,t){if(r.length-e<t)throw new Error(`${X} not enough data for type`)}var ft=[24,256,65536,4294967296,BigInt("18446744073709551616")];function jt(r,e,t){Mn(r,e,1);let n=r[e];if(t.strict===!0&&n<ft[0])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Zt(r,e,t){Mn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<ft[1])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function Jt(r,e,t){Mn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<ft[2])throw new Error(`${X} integer encoded in more bytes than necessary (strict decode)`);return n}function er(r,e,t){Mn(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<ft[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 y5(r,e,t,n){return new U(x.uint,jt(r,e+1,n),2)}function w5(r,e,t,n){return new U(x.uint,Zt(r,e+1,n),3)}function b5(r,e,t,n){return new U(x.uint,Jt(r,e+1,n),5)}function E5(r,e,t,n){return new U(x.uint,er(r,e+1,n),9)}function yr(r,e){return yt(r,0,e.value)}function yt(r,e,t){if(t<ft[0]){let n=Number(t);r.push([e|n])}else if(t<ft[1]){let n=Number(t);r.push([e|24,n])}else if(t<ft[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<ft[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<ft[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`)}}yr.encodedSize=function(e){return yt.encodedSize(e.value)};yt.encodedSize=function(e){return e<ft[0]?1:e<ft[1]?2:e<ft[2]?3:e<ft[3]?5:9};yr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function x5(r,e,t,n){return new U(x.negint,-1-jt(r,e+1,n),2)}function v5(r,e,t,n){return new U(x.negint,-1-Zt(r,e+1,n),3)}function _5(r,e,t,n){return new U(x.negint,-1-Jt(r,e+1,n),5)}var I0=BigInt(-1),S5=BigInt(1);function R5(r,e,t,n){let o=er(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new U(x.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${X} integers outside of the safe integer range are not supported`);return new U(x.negint,I0-BigInt(o),9)}function Eu(r,e){let t=e.value,n=typeof t=="bigint"?t*I0-S5:t*-1-1;yt(r,e.type.majorEncoded,n)}Eu.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*I0-S5:t*-1-1;return n<ft[0]?1:n<ft[1]?2:n<ft[2]?3:n<ft[3]?5:9};Eu.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Ca(r,e,t,n){Mn(r,e,t+n);let o=hi(r,e+t,e+t+n);return new U(x.bytes,o,t+n)}function A5(r,e,t,n){return Ca(r,e,1,t)}function I5(r,e,t,n){return Ca(r,e,2,jt(r,e+1,n))}function D5(r,e,t,n){return Ca(r,e,3,Zt(r,e+1,n))}function T5(r,e,t,n){return Ca(r,e,5,Jt(r,e+1,n))}function k5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer bytes lengths not supported`);return Ca(r,e,9,o)}function xu(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===x.string?bu(r.value):r.value),r.encodedBytes}function mi(r,e){let t=xu(e);yt(r,e.type.majorEncoded,t.length),r.push(t)}mi.encodedSize=function(e){let t=xu(e);return yt.encodedSize(t.length)+t.length};mi.compareTokens=function(e,t){return _A(xu(e),xu(t))};function _A(r,e){return r.length<e.length?-1:r.length>e.length?1:g5(r,e)}function Na(r,e,t,n,o){let s=t+n;Mn(r,e,s);let i=new U(x.string,h5(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=hi(r,e+t,e+s)),i}function C5(r,e,t,n){return Na(r,e,1,t,n)}function N5(r,e,t,n){return Na(r,e,2,jt(r,e+1,n),n)}function O5(r,e,t,n){return Na(r,e,3,Zt(r,e+1,n),n)}function P5(r,e,t,n){return Na(r,e,5,Jt(r,e+1,n),n)}function L5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer string lengths not supported`);return Na(r,e,9,o,n)}var B5=mi;function gi(r,e,t,n){return new U(x.array,n,t)}function M5(r,e,t,n){return gi(r,e,1,t)}function U5(r,e,t,n){return gi(r,e,2,jt(r,e+1,n))}function F5(r,e,t,n){return gi(r,e,3,Zt(r,e+1,n))}function V5(r,e,t,n){return gi(r,e,5,Jt(r,e+1,n))}function K5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer array lengths not supported`);return gi(r,e,9,o)}function $5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return gi(r,e,1,1/0)}function vu(r,e){yt(r,x.array.majorEncoded,e.value)}vu.compareTokens=yr.compareTokens;vu.encodedSize=function(e){return yt.encodedSize(e.value)};function yi(r,e,t,n){return new U(x.map,n,t)}function H5(r,e,t,n){return yi(r,e,1,t)}function q5(r,e,t,n){return yi(r,e,2,jt(r,e+1,n))}function W5(r,e,t,n){return yi(r,e,3,Zt(r,e+1,n))}function z5(r,e,t,n){return yi(r,e,5,Jt(r,e+1,n))}function G5(r,e,t,n){let o=er(r,e+1,n);if(typeof o=="bigint")throw new Error(`${X} 64-bit integer map lengths not supported`);return yi(r,e,9,o)}function Y5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return yi(r,e,1,1/0)}function _u(r,e){yt(r,x.map.majorEncoded,e.value)}_u.compareTokens=yr.compareTokens;_u.encodedSize=function(e){return yt.encodedSize(e.value)};function X5(r,e,t,n){return new U(x.tag,t,1)}function Q5(r,e,t,n){return new U(x.tag,jt(r,e+1,n),2)}function j5(r,e,t,n){return new U(x.tag,Zt(r,e+1,n),3)}function Z5(r,e,t,n){return new U(x.tag,Jt(r,e+1,n),5)}function J5(r,e,t,n){return new U(x.tag,er(r,e+1,n),9)}function Su(r,e){yt(r,x.tag.majorEncoded,e.value)}Su.compareTokens=yr.compareTokens;Su.encodedSize=function(e){return yt.encodedSize(e.value)};var TA=20,kA=21,CA=22,NA=23;function e7(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${X} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new U(x.null,null,1):new U(x.undefined,void 0,1)}function t7(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${X} indefinite length items not allowed`);return new U(x.break,void 0,1)}function D0(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 U(x.float,r,e)}function r7(r,e,t,n){return D0(T0(r,e+1),3,n)}function n7(r,e,t,n){return D0(k0(r,e+1),5,n)}function o7(r,e,t,n){return D0(c7(r,e+1),9,n)}function Ru(r,e,t){let n=e.value;if(n===!1)r.push([x.float.majorEncoded|TA]);else if(n===!0)r.push([x.float.majorEncoded|kA]);else if(n===null)r.push([x.float.majorEncoded|CA]);else if(n===void 0)r.push([x.float.majorEncoded|NA]);else{let o,s=!1;(!t||t.float64!==!0)&&(i7(n),o=T0(Hr,1),n===o||Number.isNaN(n)?(Hr[0]=249,r.push(Hr.slice(0,3)),s=!0):(a7(n),o=k0(Hr,1),n===o&&(Hr[0]=250,r.push(Hr.slice(0,5)),s=!0))),s||(OA(n),o=c7(Hr,1),Hr[0]=251,r.push(Hr.slice(0,9)))}}Ru.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){i7(n);let o=T0(Hr,1);if(n===o||Number.isNaN(n))return 3;if(a7(n),o=k0(Hr,1),n===o)return 5}return 9};var s7=new ArrayBuffer(9),wr=new DataView(s7,1),Hr=new Uint8Array(s7,0);function i7(r){if(r===1/0)wr.setUint16(0,31744,!1);else if(r===-1/0)wr.setUint16(0,64512,!1);else if(Number.isNaN(r))wr.setUint16(0,32256,!1);else{wr.setFloat32(0,r);let e=wr.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)wr.setUint16(0,31744,!1);else if(t===0)wr.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?wr.setUint16(0,0):o<-14?wr.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):wr.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function T0(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 a7(r){wr.setFloat32(0,r,!1)}function k0(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 OA(r){wr.setFloat64(0,r,!1)}function c7(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)}Ru.compareTokens=yr.compareTokens;function Se(r,e,t){throw new Error(`${X} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Au(r){return()=>{throw new Error(`${X} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=Se;K[24]=y5;K[25]=w5;K[26]=b5;K[27]=E5;K[28]=Se;K[29]=Se;K[30]=Se;K[31]=Se;for(let r=32;r<=55;r++)K[r]=Se;K[56]=x5;K[57]=v5;K[58]=_5;K[59]=R5;K[60]=Se;K[61]=Se;K[62]=Se;K[63]=Se;for(let r=64;r<=87;r++)K[r]=A5;K[88]=I5;K[89]=D5;K[90]=T5;K[91]=k5;K[92]=Se;K[93]=Se;K[94]=Se;K[95]=Au("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=C5;K[120]=N5;K[121]=O5;K[122]=P5;K[123]=L5;K[124]=Se;K[125]=Se;K[126]=Se;K[127]=Au("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=M5;K[152]=U5;K[153]=F5;K[154]=V5;K[155]=K5;K[156]=Se;K[157]=Se;K[158]=Se;K[159]=$5;for(let r=160;r<=183;r++)K[r]=H5;K[184]=q5;K[185]=W5;K[186]=z5;K[187]=G5;K[188]=Se;K[189]=Se;K[190]=Se;K[191]=Y5;for(let r=192;r<=215;r++)K[r]=X5;K[216]=Q5;K[217]=j5;K[218]=Z5;K[219]=J5;K[220]=Se;K[221]=Se;K[222]=Se;K[223]=Se;for(let r=224;r<=243;r++)K[r]=Au("simple values are not supported");K[244]=Se;K[245]=Se;K[246]=Se;K[247]=e7;K[248]=Au("simple values are not supported");K[249]=r7;K[250]=n7;K[251]=o7;K[252]=Se;K[253]=Se;K[254]=Se;K[255]=t7;var qr=[];for(let r=0;r<24;r++)qr[r]=new U(x.uint,r,1);for(let r=-1;r>=-24;r--)qr[31-r]=new U(x.negint,r,1);qr[64]=new U(x.bytes,new Uint8Array(0),1);qr[96]=new U(x.string,"",1);qr[128]=new U(x.array,0,1);qr[160]=new U(x.map,0,1);qr[244]=new U(x.false,!1,1);qr[245]=new U(x.true,!0,1);qr[246]=new U(x.null,null,1);function l7(r){switch(r.type){case x.false:return sn([244]);case x.true:return sn([245]);case x.null:return sn([246]);case x.bytes:return r.value.length?void 0:sn([64]);case x.string:return r.value===""?sn([96]):void 0;case x.array:return r.value===0?sn([128]):void 0;case x.map:return r.value===0?sn([160]):void 0;case x.uint:return r.value<24?sn([Number(r.value)]):void 0;case x.negint:if(r.value>=-24)return sn([31-Number(r.value)])}}var LA={float64:!1,mapSorter:UA,quickEncodeToken:l7};function BA(){let r=[];return r[x.uint.major]=yr,r[x.negint.major]=Eu,r[x.bytes.major]=mi,r[x.string.major]=B5,r[x.array.major]=vu,r[x.map.major]=_u,r[x.tag.major]=Su,r[x.float.major]=Ru,r}var u7=BA(),C0=new Ta,Du=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(`${pi} object contains circular references`);return new r(t,e)}},vo={null:new U(x.null,null),undefined:new U(x.undefined,void 0),true:new U(x.true,!0),false:new U(x.false,!1),emptyArray:new U(x.array,0),emptyMap:new U(x.map,0)},_o={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new U(x.float,r):r>=0?new U(x.uint,r):new U(x.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new U(x.uint,r):new U(x.negint,r)},Uint8Array(r,e,t,n){return new U(x.bytes,r)},string(r,e,t,n){return new U(x.string,r)},boolean(r,e,t,n){return r?vo.true:vo.false},null(r,e,t,n){return vo.null},undefined(r,e,t,n){return vo.undefined},ArrayBuffer(r,e,t,n){return new U(x.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new U(x.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[vo.emptyArray,new U(x.break)]:vo.emptyArray;n=Du.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Iu(i,t,n);return t.addBreakTokens?[new U(x.array,r.length),o,new U(x.break)]:[new U(x.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?[vo.emptyMap,new U(x.break)]:vo.emptyMap;n=Du.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Iu(l,t,n),Iu(o?r.get(l):r[l],t,n)];return MA(a,t),t.addBreakTokens?[new U(x.map,i),a,new U(x.break)]:[new U(x.map,i),a]}};_o.Map=_o.Object;_o.Buffer=_o.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))_o[`${r}Array`]=_o.DataView;function Iu(r,e={},t){let n=l5(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||_o[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=_o[n];if(!s)throw new Error(`${pi} unsupported type: ${n}`);return s(r,n,e,t)}function MA(r,e){e.mapSorter&&r.sort(e.mapSorter)}function UA(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=u7[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function d7(r,e,t,n){if(Array.isArray(e))for(let o of e)d7(r,o,t,n);else t[e.type.major](r,e,n)}function f7(r,e,t){let n=Iu(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 Ta(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return Da(a.chunks[0])}}return C0.reset(),d7(C0,n,e,t),C0.toBytes(!0)}function wi(r,e){return e=Object.assign({},LA,e),f7(r,u7,e)}var FA={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},N0=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=qr[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}},Oa=Symbol.for("DONE"),Tu=Symbol.for("BREAK");function VA(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=Pa(e,t);if(s===Tu){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed array`)}if(s===Oa)throw new Error(`${X} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function KA(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=Pa(e,t);if(a===Tu){if(r.value===1/0)break;throw new Error(`${X} got unexpected break to lengthed map`)}if(a===Oa)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=Pa(e,t);if(c===Oa)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 Pa(r,e){if(r.done())return Oa;let t=r.next();if(t.type===x.break)return Tu;if(t.type.terminal)return t.value;if(t.type===x.array)return VA(t,r,e);if(t.type===x.map)return KA(t,r,e);if(t.type===x.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=Pa(r,e);return e.tags[t.value](n)}throw new Error(`${X} tag not supported (${t.value})`)}throw new Error("unsupported")}function O0(r,e){if(!(r instanceof Uint8Array))throw new Error(`${X} data to decode must be a Uint8Array`);e=Object.assign({},FA,e);let t=e.tokenizer||new N0(r,e),n=Pa(t,e);if(n===Oa)throw new Error(`${X} did not find any content to decode`);if(n===Tu)throw new Error(`${X} got unexpected break`);return[n,r.subarray(t.pos())]}function br(r,e){let[t,n]=O0(r,e);if(n.length>0)throw new Error(`${X} too many terminals, data makes no sense`);return t}var tr=ke(Zo(),1);var h7=Nt("ipns:utils"),p7=L("/ipns/"),$A=114,m7=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw h7.error(n),(0,tr.default)(n,R0)}let t;if(e.pubKey!=null){try{t=$r(e.pubKey)}catch(o){throw h7.error(o),o}if(!(await ut(e.pubKey)).equals(r))throw(0,tr.default)(new Error("Embedded public key did not match PeerID"),i5)}else r.publicKey!=null&&(t=$r(r.publicKey));if(t!=null)return t;throw(0,tr.default)(new Error("no public key is available"),R0)};var g7=r=>{let e=L("ipns-signature:");return _e([e,r])},La=r=>"signatureV1"in r?$t.encode({value:L(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:L(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):$t.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function an(r){let e=$t.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,tr.default)(new Error("missing data or signatureV2"),Bn);let t=w7(e.data),n=HA(t.Value),o=B(t.Validity);if(e.value!=null&&e.signatureV1!=null)return qA(e),{value:n,validityType:$t.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:$t.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 P0=r=>_e([p7,r.toBytes()]),y7=r=>Ye(r.slice(p7.length));var w7=r=>{let e=br(r);if(e.ValidityType===0)e.ValidityType=$t.ValidityType.EOL;else throw(0,tr.default)(new Error("Unknown validity type"),yu);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},HA=r=>{if(r!=null){if(Ks(r))return`/ipns/${r.toCID().toString(ro)}`;if(r instanceof Uint8Array){let n=B(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=oe.asCID(r);if(t!=null)return t.code===$A?`/ipns/${t.toString(ro)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${oe.decode(r).toV1().toString()}`:`/ipfs/${oe.parse(e).toV1().toString()}`}catch{}}throw(0,tr.default)(new Error("Value must be a valid content path starting with /"),s5)},qA=r=>{if(r.data==null)throw(0,tr.default)(new Error("Record data is missing"),o5);let e=w7(r.data);if(!j(e.Value,r.value??new Uint8Array(0)))throw(0,tr.default)(new Error('Field "value" did not match between protobuf and CBOR'),Bn);if(!j(e.Validity,r.validity??new Uint8Array(0)))throw(0,tr.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Bn);if(e.ValidityType!==r.validityType)throw(0,tr.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Bn);if(e.Sequence!==r.sequence)throw(0,tr.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Bn);if(e.TTL!==r.ttl)throw(0,tr.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Bn)};var OH=Nt("ipns"),PH=lr.code,GA="/ipns/",LH=GA.length;var Ba=ke(Zo(),1),b7=ke(gu(),1);var Cu=Nt("ipns:validator"),YA=1024*10,XA=async(r,e)=>{let t=an(e),n;try{let o=g7(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Cu.error("record signature verification failed"),(0,Ba.default)(new Error("record signature verification failed"),Bn);if(t.validityType===$t.ValidityType.EOL){if(b7.default.fromString(t.validity).toDate().getTime()<Date.now())throw Cu.error("record has expired"),(0,Ba.default)(new Error("record has expired"),n5)}else if(t.validityType!=null)throw Cu.error("unrecognized validity type"),(0,Ba.default)(new Error("unrecognized validity type"),yu);Cu("ipns record for %s is valid",t.value)};async function Nu(r,e){if(e.byteLength>YA)throw(0,Ba.default)(new Error("record too large"),a5);let t=y7(r),n=an(e),o=await m7(t,n);await XA(o,e)}async function*Ma(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))}var B0=ke(x7(),1);var So=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},M0=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},v7=r=>globalThis.DOMException===void 0?new M0(r):new DOMException(r),_7=r=>{let e=r.reason===void 0?v7("This operation was aborted."):r.reason;return e instanceof Error?e:v7(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:f}=e;f.aborted&&d(_7(f)),f.addEventListener("abort",()=>{d(_7(f))})}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(f){d(f)}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(f){d(f)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function U0(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 Fa=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=U0(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 Er=class extends B0.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Fa,...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.#i=e.intervalCap,this.#c=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.#a=e.autoStart===!1}get#b(){return this.#t||this.#r<this.#i}get#E(){return this.#s<this.#u}#x(){this.#s--,this.#d(),this.emit("next")}#v(){this.#w(),this.#y(),this.#l=void 0}get#_(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!0}return!1}#d(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#a){let e=!this.#_;if(this.#b&&this.#E){let t=this.#n.dequeue();return t?(this.emit("active"),t(),e&&this.#y(),!0):!1}}return!1}#y(){this.#t||this.#o!==void 0||(this.#o=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#e?this.#s:0,this.#f()}#f(){for(;this.#d(););}get concurrency(){return this.#u}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.#u=e,this.#f()}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.#s++,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.#d()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#f(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(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.#s}get isPaused(){return this.#a}};function ZA(r){return r[Symbol.asyncIterator]!=null}function JA(r){if(ZA(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var gs=JA;var F0=L("/ipns/");function S7(r){return j(r.subarray(0,F0.byteLength),F0)}var R7=r=>Ye(r.slice(F0.length)),Pu=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*dr(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!S7(e))return;let o=R7(e),s=an(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!S7(e))throw new g("Not found","ERR_NOT_FOUND");let n=R7(e);try{let o=await this.client.getIPNS(n,t);return La(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new g("Not found","ERR_NOT_FOUND"):o}}},Lu=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await gs(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 Ht=Nt("delegated-routing-v1-http-api-client"),A7={concurrentRequests:4,timeout:3e4},Bu=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,ge(1/0,this.shutDownController.signal),this.httpQueue=new Er({concurrency:t.concurrentRequests??A7.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??A7.timeout,this.contentRouting=new Pu(this),this.peerRouting=new Lu(this)}get[Zr](){return this.contentRouting}get[Jr](){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={}){Ht("getProviders starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Providers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ma(dl(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Ht.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),Ht("getProviders finished: %c",e)}}async*getPeers(e,t={}){Ht("getPeers starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Peers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ma(dl(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Ht.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),Ht("getPeers finished: %c",e)}}async getIPNS(e,t={}){Ht("getIPNS starts: %c",e);let n=lt([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=se(),s=se();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(Ht("getIPNS GET %s %d",i,c.status),c.status===404)throw new g("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new g("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new g("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),d=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await Nu(P0(e),d),an(d)}catch(a){throw Ht.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),Ht("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){Ht("putIPNS starts: %c",e);let o=lt([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),s=se(),i=se();this.httpQueue.add(async()=>(s.resolve(),i.promise));let a=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await s.promise;let c=La(t),d=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(Ht("putIPNS PUT %s %d",a,d.status),d.status!==200)throw new g("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw Ht.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),Ht("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:ye(e.ID),Addrs:n,Protocols:t}}};function I7(r,e={}){return new Bu(new URL(r),e)}var V0=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 K0(r){return new V0(r)}var ys={};me(ys,{abortedError:()=>oI,closeFailedError:()=>tI,deleteFailedError:()=>H0,getFailedError:()=>rI,hasFailedError:()=>nI,notFoundError:()=>Ro,openFailedError:()=>eI,putFailedError:()=>$0});var Un=ke(Zo(),1);function eI(r){return r=r??new Error("Open failed"),(0,Un.default)(r,"ERR_OPEN_FAILED")}function tI(r){return r=r??new Error("Close failed"),(0,Un.default)(r,"ERR_CLOSE_FAILED")}function $0(r){return r=r??new Error("Put failed"),(0,Un.default)(r,"ERR_PUT_FAILED")}function rI(r){return r=r??new Error("Get failed"),(0,Un.default)(r,"ERR_GET_FAILED")}function H0(r){return r=r??new Error("Delete failed"),(0,Un.default)(r,"ERR_DELETE_FAILED")}function nI(r){return r=r??new Error("Has failed"),(0,Un.default)(r,"ERR_HAS_FAILED")}function Ro(r){return r=r??new Error("Not Found"),(0,Un.default)(r,"ERR_NOT_FOUND")}function oI(r){return r=r??new Error("Aborted"),(0,Un.default)(r,"ERR_ABORTED")}var cn=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 Va=class extends cn{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(it.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(it.encode(e.multihash.bytes));if(t==null)throw Ro();return t}has(e){return this.data.has(it.encode(e.multihash.bytes))}async delete(e){this.data.delete(it.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:oe.createV1(Lc,Tr(it.decode(e))),block:t}}};function sI(r){return r[Symbol.asyncIterator]!=null}function iI(r,e){if(sI(r))return async function*(){for await(let a of r)await e(a)&&(yield a)}();let t=Ms(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();let s=e(n);if(typeof s.then=="function")return async function*(){await s&&(yield n);for await(let a of t)await e(a)&&(yield a)}();let i=e;return function*(){s===!0&&(yield n);for(let a of t)i(a)&&(yield a)}()}var xr=iI;var aI=Nt("blockstore:core:tiered"),Ka=class extends cn{stores;constructor(e){super(),this.stores=e.slice()}async put(e,t,n){try{return await Promise.all(this.stores.map(async o=>{await o.put(e,t,n)})),e}catch(o){throw $0(o)}}async get(e,t){for(let n of this.stores)try{let o=await n.get(e,t);if(o!=null)return o}catch(o){aI.error(o)}throw Ro()}async has(e,t){for(let n of this.stores)if(await n.has(e,t))return!0;return!1}async delete(e,t){try{await Promise.all(this.stores.map(async n=>{await n.delete(e,t)}))}catch(n){throw H0(n)}}async*putMany(e,t={}){let n,o=this.stores.map(s=>{let i=nt({objectMode:!0});return Mt(s.putMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s.cid}}finally{o.forEach(s=>s.end())}}async*deleteMany(e,t={}){let n,o=this.stores.map(s=>{let i=nt({objectMode:!0});return Mt(s.deleteMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s}}finally{o.forEach(s=>s.end())}}async*getAll(e){let t=new Set;yield*xr(Tt(...this.stores.map(n=>n.getAll(e))),n=>{let o=n.cid.toString();return t.has(o)?!1:(t.add(o),!0)})}};var Qq={...ys};var D7=ke(Zo(),1);function Mu(r){return r=r??new Error("Not Found"),(0,D7.default)(r,"ERR_NOT_FOUND")}var T7="SHARDING";function lI(r){return r[Symbol.asyncIterator]!=null}function uI(r){if(lI(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 Ha=uI;function dI(r){return r[Symbol.asyncIterator]!=null}function fI(r,e){return dI(r)?async function*(){yield*(await Ha(r)).sort(e)}():function*(){yield*Ha(r).sort(e)}()}var Uu=fI;var Fn=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 Mt(this.putMany(e,n)),e=[],await Mt(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)=>Uu(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=xr(n,()=>o++>=s)}return e.limit!=null&&(n=oo(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)=>Uu(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=xr(n,()=>s++>=o)}return e.limit!=null&&(n=oo(n,e.limit)),n}};var ws=class extends Fn{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 Mu();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 Oe(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new Oe(e)}};var AW=new Oe(T7);var UW=Nt("datastore:core:tiered");var q0=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 Fu(r,e,t,n){let o=new q0(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(o):new Promise((s,i)=>{let a=l=>{try{if(n?.filter?.(l)===!1)return}catch(d){r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(d);return}r.removeEventListener(e,a),t?.removeEventListener("abort",c),s(l)},c=()=>{r.removeEventListener(e,a),t?.removeEventListener("abort",c),i(o)};r.addEventListener(e,a),t?.addEventListener("abort",c)})}var Vu=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 Vu(t?.errorMessage,t?.errorCode));let n,o=new Vu(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 Ku=class{deferred;signal;where;constructor(e,t){this.signal=t,this.deferred=se(),this.where=e,this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(new kr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function mI(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var $u=class{id;fn;options;priority;recipients;status;timeline;controller;constructor(e,t,n=0){this.id=mI(),this.status="queued",this.fn=e,this.priority=n,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,ge(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)}async join(e={}){let t=new Ku(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.signal?.removeEventListener("abort",this.onAbort)})}};function gI(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 Vn=class extends Ce{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=gI(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 $u(e,t,t?.priority),o=n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),s)).catch(s=>{throw this.safeDispatchEvent("error",{detail: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 Fu(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Fu(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Fu(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=nt({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 P7="/pin/",C7="/pinned-block/",W0=ro,N7=1;function O7(r){return r.version===0&&(r=r.toV1()),new Oe(`${P7}${r.toString(W0)}`)}var Hu=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=O7(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 Vn({concurrency:N7});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>j(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,wi(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 Oe(`${C7}${W0.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,wi(s),n),n.onProgress?.(new xe("helia:pin:add",e))}}async*rm(e,t={}){let n=O7(e),o=await this.datastore.get(n,t),s=br(o);await this.datastore.delete(n,t);let i=new Vn({concurrency:N7});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=>j(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:P7+(e.cid!=null?`${e.cid.toString(ro)}`:"")},e)){let o=oe.parse(t.toString().substring(5),ro),s=br(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Oe(`${C7}${W0.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};function bi(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 wt=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 bi(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 bi(this.map.keys(),e=>ye(e))}values(){return this.map.values()}get size(){return this.map.size}};var Je=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 bi(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 bi(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 qu=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await jn(...this.routers)}async stop(){await Zn(...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 Je;for await(let o of Tt(...Ei(this.routers,"findProviders").map(s=>s.findProviders(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),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(Ei(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(Ei(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(Ei(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=Tt(...Ei(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");let n=new Je;for await(let o of Tt(...Ei(this.routers,"getClosestPeers").map(s=>s.getClosestPeers(e,t))))o!=null&&(n.has(o.id)||(n.add(o.id),yield o))}};function Ei(r,e){return r.filter(t=>t[e]!=null)}var Ao={},xi=r=>{r.addEventListener("message",e=>{xi.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{xi.dispatchEvent("message",r,e)})};xi.addEventListener=(r,e)=>{Ao[r]==null&&(Ao[r]=[]),Ao[r].push(e)};xi.removeEventListener=(r,e)=>{Ao[r]!=null&&(Ao[r]=Ao[r].filter(t=>t===e))};xi.dispatchEvent=function(r,e,t){Ao[r]!=null&&Ao[r].forEach(n=>n(e,t))};var z0=xi;var G0="lock:worker:request-read",Y0="lock:worker:release-read",X0="lock:master:grant-read",Q0="lock:worker:request-write",j0="lock:worker:release-write",Z0="lock:master:grant-write";var L7=(r=21)=>Math.random().toString().substring(2);var B7=(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)})}}}))},M7=(r,e,t,n)=>async()=>{let o=L7();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)})},yI={singleProcess:!1},U7=r=>{if(r=Object.assign({},yI,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return z0.addEventListener("message",B7(t,"requestReadLock",G0,Y0,X0)),z0.addEventListener("message",B7(t,"requestWriteLock",Q0,j0,Z0)),t}return{isWorker:!0,readLock:t=>M7(t,G0,X0,Y0),writeLock:t=>M7(t,Q0,Z0,j0)}};var bs={},Io;async function J0(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 wI=(r,e)=>{if(Io.isWorker===!0)return{readLock:Io.readLock(r,e),writeLock:Io.writeLock(r,e)};let t=new Er({concurrency:1}),n;return{async readLock(){if(n!=null)return J0(n,e);n=new Er({concurrency:e.concurrency,autoStart:!1});let o=n,s=J0(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,J0(t,e)}}},bI={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function qa(r){let e=Object.assign({},bI,r);return Io==null&&(Io=U7(e),Io.isWorker!==!0&&(Io.addEventListener("requestReadLock",t=>{bs[t.data.name]!=null&&bs[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Io.addEventListener("requestWriteLock",async t=>{bs[t.data.name]!=null&&bs[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),bs[e.name]==null&&(bs[e.name]=wI(e.name,e)),bs[e.name]}var Wu=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 jn(this.child),this.started=!0}async stop(){await Zn(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){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={}){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={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}};var V7=42;function EI(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=oe.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new U(x.tag,V7),new U(x.bytes,t)]}function xI(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function vI(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 F7={float64:!0,typeEncoders:{Object:EI,undefined:xI,number:vI}},eG={...F7,typeEncoders:{...F7.typeEncoders}};function _I(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return oe.decode(r.subarray(1))}var e2={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};e2.tags[V7]=_I;var tG={...e2,tags:e2.tags.slice()};var K7=113;var $7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===x.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===x.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[x.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)}[x.negint.major](e,t){this[x.uint.major](e,t)}[x.bytes.major](e,t){throw new Error(`${pi} unsupported type: Uint8Array`)}[x.string.major](e,t){this.prefix(e);let n=bu(JSON.stringify(t.value));e.push(n.length>32?Da(n):n)}[x.array.major](e,t){this.prefix(e),this.inRecursive.push({type:x.array,elements:0}),e.push([91])}[x.map.major](e,t){this.prefix(e),this.inRecursive.push({type:x.map,elements:0}),e.push([123])}[x.tag.major](e,t){}[x.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===x.array)e.push([93]);else if(i.type===x.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(`${pi} 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 Es=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 U(x.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 U(x.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new U(i>=0?x.uint:x.negint,i,this._pos-e):new U(i>=0?x.uint:x.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 U(x.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 U(x.string,A0(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 U(x.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new U(x.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new U(x.null,null,4);case 102:return this.expect([102,97,108,115,101]),new U(x.false,!1,5);case 116:return this.expect([116,114,117,101]),new U(x.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 U(x.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 U(x.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 U(x.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 U(x.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 zu(r,e){return e=Object.assign({tokenizer:new Es(r,e)},e),br(r,e)}var AI={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};AI.tags[42]=oe.parse;var q7=297;var wG=new TextDecoder;var bG=new TextEncoder;var DI=new TextDecoder;function t2(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 Gu(r,e){let t;[t,e]=t2(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 W7(r,e){let t;return[t,e]=t2(r,e),[t&7,t>>3,e]}function TI(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=W7(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]=Gu(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]=Gu(r,n),e.Name=DI.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]=t2(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 z7(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=W7(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]=Gu(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]=Gu(r,t),n.push(TI(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 xG=new TextEncoder,vG=2**32,_G=2**31;var AG=new TextEncoder;function G7(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var Y7=112;function X7(r){let e=G7(r),t=z7(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=oe.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 CI={codec:Y7,*walk(r){yield*X7(r).Links.map(t=>t.Hash)}},NI={codec:Lc,*walk(){}},Q7=42,OI={codec:K7,*walk(r){let e=[],t=[];t[Q7]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=oe.decode(n.subarray(1));return e.push(o),o},br(r,{tags:t}),yield*e}},r2=class extends Es{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===x.map){let t=this._next();if(t.type===x.string&&t.value==="/"){let n=this._next();if(n.type===x.string){if(this._next().type!==x.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new U(x.tag,42,0)}if(n.type===x.map){let o=this._next();if(o.type===x.string&&o.value==="bytes"){let s=this._next();if(s.type===x.string){for(let a=0;a<2;a++)if(this._next().type!==x.break)throw new Error("Invalid encoded Bytes form");let i=ar.decode(`m${s.value}`);return new U(x.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},PI={codec:q7,*walk(r){let e=[],t=[];t[Q7]=n=>{let o=oe.parse(n);return e.push(o),o},zu(r,{tags:t,tokenizer:new r2(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},LI={codec:J4,*walk(){}};function j7(r=[]){let e={};return[CI,NI,OI,PI,LI,...r].forEach(t=>{e[t.codec]=t}),e}var n2=new Oe("/version"),Z7=1;async function J7(r){if(!await r.has(n2)){await r.put(n2,L(`${Z7}`));return}let e=await r.get(n2),t=B(e);if(parseInt(t,10)!==Z7)throw new Error("Unknown datastore version, a datastore migration may be required")}function eg(r=[]){let e={};return[Re,Af,lr,...r].forEach(t=>{e[t.code]=t}),e}var tg=0,Yu=class extends cn{put(e){return e}get(e){if(e.code===tg)return e.multihash.digest;throw Ro()}has(e){return e.code===tg}delete(){}*getAll(){}};function BI(r){return typeof r.retrieve=="function"}function MI(r){return typeof r.announce=="function"}var Xu=class{child;blockRetrievers;blockAnnouncers;hashers;started;log;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.child=new Ka([new Yu,e.blockstore]),this.blockRetrievers=(e.blockBrokers??[]).filter(BI),this.blockAnnouncers=(e.blockBrokers??[]).filter(MI),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await jn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!0}async stop(){await Zn(this.child,...new Set([...this.blockRetrievers,...this.blockAnnouncers])),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(n.onProgress?.(new xe("blocks:put:duplicate",e)),e):(n.onProgress?.(new xe("blocks:put:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,t,n)}),n.onProgress?.(new xe("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);return i&&t.onProgress?.(new xe("blocks:put-many:duplicate",s)),!i}),o=qo(n,({cid:s,block:i})=>{t.onProgress?.(new xe("blocks:put-many:providers:notify",s)),this.blockAnnouncers.forEach(a=>{a.announce(s,i,t)})});t.onProgress?.(new xe("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.onProgress?.(new xe("blocks:get:providers:get",e));let n=await rg(e,this.blockRetrievers,this.hashers[e.multihash.code],{...t,log:this.log});return t.onProgress?.(new xe("blocks:get:blockstore:put",e)),await this.child.put(e,n,t),t.onProgress?.(new xe("blocks:get:providers:notify",e)),this.blockAnnouncers.forEach(o=>{o.announce(e,n,t)}),n}return t.onProgress?.(new xe("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new xe("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(qo(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new xe("blocks:get-many:providers:get",n));let o=await rg(n,this.blockRetrievers,this.hashers[n.multihash.code],{...t,log:this.log});t.onProgress?.(new xe("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new xe("blocks:get-many:providers:notify",n)),this.blockAnnouncers.forEach(s=>{s.announce(n,o,t)})}}))}async delete(e,t={}){t.onProgress?.(new xe("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new xe("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 xe("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},UI=(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(!j(n.digest,r.multihash.digest))throw new g("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function rg(r,e,t,n){let o=UI(r,t),s=new AbortController,i=lt([s.signal,n.signal]);try{return await Promise.any(e.map(async a=>{try{let c=!1,l=await a.retrieve(r,{...n,signal:i,validateFn:async d=>{await o(d),c=!0}});return c||await o(l),l}catch(c){throw n.log.error("could not retrieve verified block for %c",r,c),c}}))}finally{i.clear()}}var Qu=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;log;constructor(e){this.logger=e.logger??Jn(),this.log=this.logger.forComponent("helia"),this.hashers=eg(e.hashers),this.dagWalkers=j7(e.dagWalkers);let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],...e.components??{}};t.blockBrokers=e.blockBrokers.map(o=>o(t));let n=new Xu(t);this.pins=new Hu(e.datastore,n,this.dagWalkers),this.blockstore=new Wu(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,this.routing=new qu(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[Zr]!=null&&s.push(o[Zr]),o[Jr]!=null&&s.push(o[Jr]),s})})}async start(){await J7(this.datastore),await jn(this.blockstore,this.datastore,this.routing)}async stop(){await Zn(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 Mt(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 xe("helia:gc:deleted",s))}catch(i){n.log.error("Error during gc",i),e.onProgress?.(new xe("helia:gc:error",i))}}()))}finally{t()}this.log("gc finished")}};var ju=class extends Qu{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 o2=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=se(),this.haveNext=se()}[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=se(),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=se(),await Lt(this.readNext.promise,t?.signal,t)}};function ng(){return new o2}var Zu=class extends Error{code;constructor(e,t){super(e),this.code=t}},s2=class extends Zu{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function og(r,e){let t=ng();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 de;return{read:async(i,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((d,u)=>{c=()=>{u(new s2("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(i==null){let{done:u,value:f}=await Promise.race([n.next(),l]);return u===!0?new de:f}for(;o.byteLength<i;){let{value:u,done:f}=await Promise.race([n.next(),l]);if(f===!0)throw new Zu("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 Ju=class extends Error{code;constructor(e,t){super(e),this.code=t}};function ln(r,e={}){let t=og(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Fe(e.maxDataLength));let n=e?.lengthDecoder??Yt,o=e?.lengthEncoder??ze;return{read:async i=>{let a=-1,c=new de;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 Ju("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new Ju("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,i)},write:async(i,a)=>{await t.write(new de(o(i.byteLength),i),a)},writeV:async(i,a)=>{let c=new de(...i.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function i2(){let r=se(),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 sg(){let r=i2(),e=i2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var vi=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Kn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function ig(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var ag=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),FI=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!FI)throw new Error("Non little-endian hardware is not supported");function e1(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function t1(r){if(typeof r=="string")r=e1(r);else if(ig(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var VI=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function cg(r,e){if(e!==void 0&&(typeof e!="object"||!VI(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function xs(r,e){if(!ig(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function lg(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 a2=(r,e)=>(Object.assign(e,r),e);function c2(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 KI(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function _i(r,...e){if(!KI(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 u2(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 ug(r,e){_i(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var bt=(r,e)=>r[e++]&255|(r[e++]&255)<<8,d2=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=t1(e),xs(e,32);let t=bt(e,0),n=bt(e,2),o=bt(e,4),s=bt(e,6),i=bt(e,8),a=bt(e,10),c=bt(e,12),l=bt(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]=bt(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],f=i[5],m=i[6],h=i[7],p=i[8],y=i[9],w=bt(e,t+0),E=bt(e,t+2),b=bt(e,t+4),S=bt(e,t+6),R=bt(e,t+8),A=bt(e,t+10),D=bt(e,t+12),_=bt(e,t+14),k=s[0]+(w&8191),O=s[1]+((w>>>13|E<<3)&8191),N=s[2]+((E>>>10|b<<6)&8191),P=s[3]+((b>>>7|S<<9)&8191),F=s[4]+((S>>>4|R<<12)&8191),Y=s[5]+(R>>>1&8191),I=s[6]+((R>>>14|A<<2)&8191),C=s[7]+((A>>>11|D<<5)&8191),$=s[8]+((D>>>8|_<<8)&8191),T=s[9]+(_>>>5|o),v=0,M=v+k*a+O*(5*y)+N*(5*p)+P*(5*h)+F*(5*m);v=M>>>13,M&=8191,M+=Y*(5*f)+I*(5*u)+C*(5*d)+$*(5*l)+T*(5*c),v+=M>>>13,M&=8191;let V=v+k*c+O*a+N*(5*y)+P*(5*p)+F*(5*h);v=V>>>13,V&=8191,V+=Y*(5*m)+I*(5*f)+C*(5*u)+$*(5*d)+T*(5*l),v+=V>>>13,V&=8191;let q=v+k*l+O*c+N*a+P*(5*y)+F*(5*p);v=q>>>13,q&=8191,q+=Y*(5*h)+I*(5*m)+C*(5*f)+$*(5*u)+T*(5*d),v+=q>>>13,q&=8191;let ne=v+k*d+O*l+N*c+P*a+F*(5*y);v=ne>>>13,ne&=8191,ne+=Y*(5*p)+I*(5*h)+C*(5*m)+$*(5*f)+T*(5*u),v+=ne>>>13,ne&=8191;let ie=v+k*u+O*d+N*l+P*c+F*a;v=ie>>>13,ie&=8191,ie+=Y*(5*y)+I*(5*p)+C*(5*h)+$*(5*m)+T*(5*f),v+=ie>>>13,ie&=8191;let pe=v+k*f+O*u+N*d+P*l+F*c;v=pe>>>13,pe&=8191,pe+=Y*a+I*(5*y)+C*(5*p)+$*(5*h)+T*(5*m),v+=pe>>>13,pe&=8191;let le=v+k*m+O*f+N*u+P*d+F*l;v=le>>>13,le&=8191,le+=Y*c+I*a+C*(5*y)+$*(5*p)+T*(5*h),v+=le>>>13,le&=8191;let ue=v+k*h+O*m+N*f+P*u+F*d;v=ue>>>13,ue&=8191,ue+=Y*l+I*c+C*a+$*(5*y)+T*(5*p),v+=ue>>>13,ue&=8191;let Le=v+k*p+O*h+N*m+P*f+F*u;v=Le>>>13,Le&=8191,Le+=Y*d+I*l+C*c+$*a+T*(5*y),v+=Le>>>13,Le&=8191;let Te=v+k*y+O*p+N*h+P*m+F*f;v=Te>>>13,Te&=8191,Te+=Y*u+I*d+C*l+$*c+T*a,v+=Te>>>13,Te&=8191,v=(v<<2)+v|0,v=v+M|0,M=v&8191,v=v>>>13,V+=v,s[0]=M,s[1]=V,s[2]=q,s[3]=ne,s[4]=ie,s[5]=pe,s[6]=le,s[7]=ue,s[8]=Le,s[9]=Te}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){u2(this);let{buffer:t,blockLen:n}=this;e=t1(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){u2(this),ug(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 $I(r){let e=(n,o)=>r(o).update(t1(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var dg=$I(r=>new d2(r));var HI=e1("expand 16-byte k"),qI=e1("expand 32-byte k"),WI=Kn(HI),zI=Kn(qI);function G(r,e){return r<<e|r>>>32-e}function f2(r){return r.byteOffset%4===0}var n1=64,GI=16,hg=2**32-1,fg=new Uint32Array;function YI(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(n1),d=Kn(l),u=f2(o)&&f2(s),f=u?Kn(o):fg,m=u?Kn(s):fg;for(let h=0;h<c;i++){if(r(e,t,n,d,i,a),i>=hg)throw new Error("arx: counter overflow");let p=Math.min(n1,c-h);if(u&&p===n1){let y=h/4;if(h%4!==0)throw new Error("arx: invalid block position");for(let w=0,E;w<GI;w++)E=y+w,m[E]=f[E]^d[w];h+=n1;continue}for(let y=0,w;y<p;y++)w=h+y,s[w]=o[w]^l[y];h+=p}}function h2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=cg({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)=>{_i(a),_i(c),_i(l);let f=l.length;if(d||(d=new Uint8Array(f)),_i(d),r1(u),u<0||u>=hg)throw new Error("arx: counter overflow");if(d.length<f)throw new Error(`arx: output (${d.length}) is shorter than data (${f})`);let m=[],h=a.length,p,y;if(h===32)p=a.slice(),m.push(p),y=zI;else if(h===16&&t)p=new Uint8Array(32),p.set(a),p.set(a,16),y=WI,m.push(p);else throw new Error(`arx: invalid 32-byte key, got length=${h}`);f2(c)||(c=c.slice(),m.push(c));let w=Kn(p);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,Kn(c.subarray(0,16)),w),c=c.subarray(16)}let E=16-o;if(E!==c.length)throw new Error(`arx: nonce must be ${E} or 16 bytes`);if(E!==12){let S=new Uint8Array(12);S.set(c,s?0:12-c.length),c=S,m.push(c)}let b=Kn(c);for(YI(r,y,w,b,l,d,u,i);m.length>0;)m.pop().fill(0);return d}}function gg(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],f=e[2],m=e[3],h=e[4],p=e[5],y=e[6],w=e[7],E=o,b=t[0],S=t[1],R=t[2],A=i,D=a,_=c,k=l,O=d,N=u,P=f,F=m,Y=h,I=p,C=y,$=w,T=E,v=b,M=S,V=R;for(let ne=0;ne<s;ne+=2)A=A+O|0,T=G(T^A,16),Y=Y+T|0,O=G(O^Y,12),A=A+O|0,T=G(T^A,8),Y=Y+T|0,O=G(O^Y,7),D=D+N|0,v=G(v^D,16),I=I+v|0,N=G(N^I,12),D=D+N|0,v=G(v^D,8),I=I+v|0,N=G(N^I,7),_=_+P|0,M=G(M^_,16),C=C+M|0,P=G(P^C,12),_=_+P|0,M=G(M^_,8),C=C+M|0,P=G(P^C,7),k=k+F|0,V=G(V^k,16),$=$+V|0,F=G(F^$,12),k=k+F|0,V=G(V^k,8),$=$+V|0,F=G(F^$,7),A=A+N|0,V=G(V^A,16),C=C+V|0,N=G(N^C,12),A=A+N|0,V=G(V^A,8),C=C+V|0,N=G(N^C,7),D=D+P|0,T=G(T^D,16),$=$+T|0,P=G(P^$,12),D=D+P|0,T=G(T^D,8),$=$+T|0,P=G(P^$,7),_=_+F|0,v=G(v^_,16),Y=Y+v|0,F=G(F^Y,12),_=_+F|0,v=G(v^_,8),Y=Y+v|0,F=G(F^Y,7),k=k+O|0,M=G(M^k,16),I=I+M|0,O=G(O^I,12),k=k+O|0,M=G(M^k,8),I=I+M|0,O=G(O^I,7);let q=0;n[q++]=i+A|0,n[q++]=a+D|0,n[q++]=c+_|0,n[q++]=l+k|0,n[q++]=d+O|0,n[q++]=u+N|0,n[q++]=f+P|0,n[q++]=m+F|0,n[q++]=h+Y|0,n[q++]=p+I|0,n[q++]=y+C|0,n[q++]=w+$|0,n[q++]=E+T|0,n[q++]=b+v|0,n[q++]=S+M|0,n[q++]=R+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],f=e[4],m=e[5],h=e[6],p=e[7],y=t[0],w=t[1],E=t[2],b=t[3];for(let R=0;R<20;R+=2)o=o+c|0,y=G(y^o,16),f=f+y|0,c=G(c^f,12),o=o+c|0,y=G(y^o,8),f=f+y|0,c=G(c^f,7),s=s+l|0,w=G(w^s,16),m=m+w|0,l=G(l^m,12),s=s+l|0,w=G(w^s,8),m=m+w|0,l=G(l^m,7),i=i+d|0,E=G(E^i,16),h=h+E|0,d=G(d^h,12),i=i+d|0,E=G(E^i,8),h=h+E|0,d=G(d^h,7),a=a+u|0,b=G(b^a,16),p=p+b|0,u=G(u^p,12),a=a+u|0,b=G(b^a,8),p=p+b|0,u=G(u^p,7),o=o+l|0,b=G(b^o,16),h=h+b|0,l=G(l^h,12),o=o+l|0,b=G(b^o,8),h=h+b|0,l=G(l^h,7),s=s+d|0,y=G(y^s,16),p=p+y|0,d=G(d^p,12),s=s+d|0,y=G(y^s,8),p=p+y|0,d=G(d^p,7),i=i+u|0,w=G(w^i,16),f=f+w|0,u=G(u^f,12),i=i+u|0,w=G(w^i,8),f=f+w|0,u=G(u^f,7),a=a+c|0,E=G(E^a,16),m=m+E|0,c=G(c^m,12),a=a+c|0,E=G(E^a,8),m=m+E|0,c=G(c^m,7);let S=0;n[S++]=o,n[S++]=s,n[S++]=i,n[S++]=a,n[S++]=y,n[S++]=w,n[S++]=E,n[S++]=b}var QI=h2(gg,{counterRight:!1,counterLength:4,allowShortKeys:!1}),jI=h2(gg,{counterRight:!1,counterLength:8,extendNonceFn:XI,allowShortKeys:!1});var ZI=new Uint8Array(16),pg=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(ZI.subarray(t))},JI=new Uint8Array(32);function mg(r,e,t,n,o){let s=r(e,t,JI),i=dg.create(s);o&&pg(i,o),pg(i,n);let a=new Uint8Array(16),c=ag(a);c2(c,0,BigInt(o?o.length:0),!0),c2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var yg=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=mg(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=mg(r,e,t,l,n);if(!lg(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),p2=a2({blockSize:64,nonceLength:12,tagLength:16},yg(QI)),WY=a2({blockSize:64,nonceLength:24,tagLength:16},yg(jI));function bg(r,e,t){return ns(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ho(r,Or(t),Or(e))}var m2=new Uint8Array([0]),wg=new Uint8Array;function Eg(r,e,t,n=32){if(ns(r),io(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=wg);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++)m2[0]=l+1,a.update(l===0?wg:c).update(t).update(m2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),m2.fill(0),s.slice(0,n)}var g2={hashSHA256(r){return xo(r.subarray())},getHKDF(r,e){let t=bg(xo,e,r),o=Eg(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=ya.utils.randomPrivateKey();return{publicKey:ya.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:ya.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return ya.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return p2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return p2(n,e,t).decrypt(r.subarray(),o)}};var xg=g2;function vg(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 Si=r=>{let e=qe(2);return e[0]=r>>8,e[1]=r,e};Si.bytes=2;var Wa=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)};Wa.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 y2(r,e){!e.enabled||!vi||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${B(r.privateKey,"hex")}`)):e("Missing local static keys."))}function w2(r,e){!e.enabled||!vi||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${B(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${B(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function Sg(r,e){!e.enabled||!vi||e(r?`REMOTE_STATIC_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote static public key.")}function b2(r,e){!e.enabled||!vi||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${B(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function E2(r,e,t){!t.enabled||!vi||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&B(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&B(e.k,"hex")}`))}function o1(r,e){if(globalThis.Buffer!=null)return globalThis.Buffer.compare(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}function $n(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=qe(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return tn(t)}var s1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Ri=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var eD=0,tD=4294967295,rD="Cipherstate has reached maximum n, a new handshake must be performed",i1=class{n;bytes;view;constructor(e=eD){this.n=e,this.bytes=Ze(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>tD)throw new Error(rD)}};var vs=Ze(0),Ai=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new i1(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}},x2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=L(t,"utf-8");this.h=nD(e,n),this.ck=this.h,this.cs=new Ai(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new Ai(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new de(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 Ai(this.crypto,e),new Ai(this.crypto,t)]}},v2=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 x2(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()}},za=class extends v2{writeMessageA(e){return new de(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new de(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new de(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ri(`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 Ri(`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 Ri(`handshake stage 2 validation fail: ${t.message}`)}}};function nD(r,e){if(e.length<=32){let t=Ze(32);return t.set(e),t}else return r.hash(e)}var a1;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(a1||(a1={}));var Ga;(function(r){let e;r.codec=()=>(e==null&&(e=te((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),a1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Ze(0),identitySig:Ze(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=a1.codec().decode(t,t.uint32());break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ga||(Ga={}));async function _2(r,e,t){let n=await r.sign(Rg(e));return Ga.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function S2(r,e,t){try{let n=Ga.decode(r);if(t){let i=t.subarray();if(!j(i,n.identityKey))throw new Error(`Payload identity key ${B(n.identityKey,"hex")} does not match expected remote identity key ${B(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=Rg(e);if(!await $r(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new s1(n.message)}}function Rg(r){let e=L("noise-libp2p-static-key:");return r instanceof Uint8Array?_e([e,r],e.length+r.length):(r.prepend(e),r)}async function Ag(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await _2(o,i.publicKey,c),d=new za({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});y2(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."),w2(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."),b2(d.re,e),Sg(d.rs,e),e.trace("Initiator going to check remote's signature...");let f=await S2(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[m,h]=d.ss.split();return E2(m,h,e),{payload:f,encrypt:p=>m.encryptWithAd(vs,p),decrypt:(p,y)=>h.decryptWithAd(vs,p,y)}}async function Ig(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await _2(o,i.publicKey,c),d=new za({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});y2(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."),b2(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."),w2(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 f=await S2(u,d.rs,a),[m,h]=d.ss.split();return E2(m,h,e),{payload:f,encrypt:p=>h.encryptWithAd(vs,p),decrypt:(p,y)=>m.decryptWithAd(vs,p,y)}}var Tg=16;function kg(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 de(Si(i.byteLength),i)}}}function Cg(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-Tg<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-Tg);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var c1=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??xg;this.crypto=vg(c),this.extensions=o,this.metrics=a?_g(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Ze(0)}async secureOutbound(e,t,n){let o=ln(t,{lengthEncoder:Si,lengthDecoder:Wa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await gr(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 ut(a.payload.identityKey)}}async secureInbound(e,t,n){let o=ln(t,{lengthEncoder:Si,lengthDecoder:Wa,maxDataLength:65535});if(!e.privateKey)throw new g("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await gr(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 ut(a.payload.identityKey)}}async performHandshakeInitiator(e,t,n){let o;try{o=await Ag({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 Ig({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]=sg(),s=e.unwrap();return await Ge(n,kg(t,this.metrics),s,i=>Ft(i,{lengthDecoder:Wa}),Cg(t,this.metrics),n),o}};function Ii(r={}){return e=>new c1(e,r)}function l1(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 Di="ERR_INVALID_FRAME",R2="ERR_UNREQUESTED_PING",A2="ERR_NOT_MATCHING_PING",I2="ERR_STREAM_ALREADY_EXISTS",D2="ERR_DECODE_INVALID_VERSION",T2="ERR_BOTH_CLIENTS",k2="ERR_RECV_WINDOW_EXCEEDED",Ng=new Set([Di,R2,A2,I2,D2,T2,k2]),Do="ERR_INVALID_CONFIG",u1="ERR_MUXER_LOCAL_CLOSED",C2="ERR_MUXER_REMOTE_CLOSED";var Og="ERR_STREAM_ABORT",Pg="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",Lg="ERR_DECODE_IN_PROGRESS",Xa=256*1024,Bg=16*1024*1024;var Mg={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Xa,maxStreamWindowSize:Bg,maxMessageSize:64*1024};function Ug(r){if(r.keepAliveInterval<=0)throw new g("keep-alive interval must be positive",Do);if(r.maxInboundStreams<0)throw new g("max inbound streams must be larger or equal 0",Do);if(r.maxOutboundStreams<0)throw new g("max outbound streams must be larger or equal 0",Do);if(r.initialStreamWindowSize<Xa)throw new g("InitialStreamWindowSize must be larger or equal 256 kB",Do);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new g("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",Do);if(r.maxStreamWindowSize>2**32-1)throw new g("MaxStreamWindowSize must be less than equal MAX_UINT32",Do);if(r.maxMessageSize<1024)throw new g("MaxMessageSize must be greater than a kilobyte",Do)}var Xe;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(Xe||(Xe={}));var He;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(He||(He={}));var xQ=Object.values(He).filter(r=>typeof r!="string"),Fg=0,vr;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(vr||(vr={}));var To=12;var Vg=2**24;function oD(r){if(r[0]!==Fg)throw new g("Invalid frame version",D2);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Vg+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Vg+(r[9]<<16)+(r[10]<<8)+r[11]}}var d1=class{source;buffer;frameInProgress;constructor(e){this.source=sD(e),this.buffer=new de,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===Xe.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",Lg);if(this.buffer.length<To)return;let e=oD(this.buffer.subarray(0,To));return this.buffer.consume(To),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 sD(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 N2(r){let e=new Uint8Array(To);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 Kg(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function f1(r,e){let t=l1(r).return?.();Kg(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var iD="ERR_STREAM_RESET",aD="ERR_SINK_INVALID_STATE",cD=5e3;function O2(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var ko=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=se(),this.closed=se(),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??cD,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=nt({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"`,aD);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);O2(o)&&await o}let n=()=>{f1(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 de(o):o;let s=this.sendData(o,t);O2(s)&&(this.sendingData=se(),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();O2(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",iD);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 _r;(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"})(_r||(_r={}));var h1=class extends ko{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=_r.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Xa,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=qo(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-To,e.length),o=this.getSendFlags();this.sendFrame({type:Xe.Data,flag:o,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|He.FIN;this.sendFrame({type:Xe.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",k2,{available:this.recvWindowCapacity,recv:e.length});let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&He.ACK)===He.ACK&&this.state===_r.SYNSent&&(this.state=_r.Established),(e&He.FIN)===He.FIN&&this.remoteCloseWrite(),(e&He.RST)===He.RST&&this.reset()}getSendFlags(){switch(this.state){case _r.Init:return this.state=_r.SYNSent,He.SYN;case _r.SYNReceived:return this.state=_r.Established,He.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:Xe.WindowUpdate,flag:e,streamID:this._id,length:o})}};var $g="/yamux/1.0.0",lD=500,p1=class{protocol=$g;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new P2(this._components,{...this._init,...e})}},P2=class{protocol=$g;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={...Mg,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Ug(this.config),this.closeController=new AbortController,ge(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=nt({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=l1(n);if(a.return!=null){let c=a.return();uD(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new d1(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=vr.NormalTermination}catch(a){let c=a.code;Ng.has(c)?(this.log?.error("protocol error in sink",a),s=vr.ProtocolError):(this.log?.error("internal error in sink",a),s=vr.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",C2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",u1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new g("max outbound streams exceeded",Pg);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,_r.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",C2);if(this.localGoAway!==void 0)throw new g("muxer closed locally",u1);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",u1))};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??vr.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(lD);ge(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??vr.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",I2,{id:e});let s=new h1({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 Xe.Ping:{this.handlePing(e);return}case Xe.GoAway:{this.handleGoAway(s);return}default:throw new g("Invalid frame type",Di,{header:e})}else switch(e.type){case Xe.Data:case Xe.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new g("Invalid frame type",Di,{header:e})}}handlePing(e){if(e.flag===He.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,He.ACK);else if(e.flag===He.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new g("Invalid frame flag",Di,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new g("ping not requested",R2);if(this.activePing.id!==e)throw new g("ping doesn't match our id",A2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",vr[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&He.SYN)===He.SYN&&this.incomingStream(n);let i=this._streams.get(n);if(i===void 0){if(s===Xe.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 Xe.WindowUpdate:{i.handleWindowUpdate(e);return}case Xe.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",T2);if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:Xe.WindowUpdate,flag:He.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,_r.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===Xe.Data){if(t===void 0)throw new g("invalid frame",Di);this.source.push(new de(N2(e),t))}else this.source.push(N2(e))}sendPing(e,t=He.SYN){t===He.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:Xe.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=vr.NormalTermination){this.log?.("sending GoAway reason=%s",vr[e]),this.localGoAway=e,this.sendFrame({type:Xe.GoAway,flag:0,streamID:0,length:e})}};function uD(r){return r!=null&&typeof r.then=="function"}function Hg(r={}){return e=>new p1(e,r)}var m1=async()=>{let r=await Ia("Ed25519"),e=await dD(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function dD(r){return ut(v0(r.public),_0(r))}var Wg=ke(qg(),1),fD=["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"],hD=fD.map(r=>new Wg.Netmask(r));function pD(r){for(let e of hD)if(e.contains(r))return!0;return!1}function mD(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 Sr(r){return Qs(r)?pD(r):js(r)?mD(r):void 0}var g1=globalThis.CustomEvent??Event;async function*Hn(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=se(),a=se(),c=!1,l,d=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let h of r){if(s.length===t&&(i=se(),await i.promise),d)break;let p={done:!1};s.push(p),h().then(y=>{p.done=!0,p.ok=!0,p.value=y,o.dispatchEvent(new g1("task-complete"))},y=>{p.done=!0,p.err=y,o.dispatchEvent(new g1("task-complete"))})}c=!0,o.dispatchEvent(new g1("task-complete"))}catch(h){l=h,o.dispatchEvent(new g1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(h=>h.done)}function*f(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw d=!0,i.resolve(),h.err;i.resolve()}}function*m(){for(;u();)for(let h=0;h<s.length;h++)if(s[h].done){let p=s[h];if(s.splice(h,1),h--,p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}for(;;){if(u()||(a=se(),await a.promise),l!=null)throw l;if(n?yield*f():yield*m(),c&&s.length===0)break}}var zg="libp2p",Gg="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=()=>Ve(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=()=>Ve(o)}(n=r.ResponseStatus||(r.ResponseStatus={}));let s;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{if(m.lengthDelimited!==!1&&f.fork(),u.id!=null&&(f.uint32(10),f.bytes(u.id)),u.addrs!=null)for(let h of u.addrs)f.uint32(18),f.bytes(h);m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={addrs:[]},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.id=u.bytes();break;case 2:m.addrs.push(u.bytes());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(s=r.PeerInfo||(r.PeerInfo={}));let i;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.peer!=null&&(f.uint32(10),r.PeerInfo.codec().encode(u.peer,f)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(i=r.Dial||(r.Dial={}));let a;(function(l){let d;l.codec=()=>(d==null&&(d=te((u,f,m={})=>{m.lengthDelimited!==!1&&f.fork(),u.status!=null&&(f.uint32(8),r.ResponseStatus.codec().encode(u.status,f)),u.statusText!=null&&(f.uint32(18),f.string(u.statusText)),u.addr!=null&&(f.uint32(26),f.bytes(u.addr)),m.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let m={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:m.status=r.ResponseStatus.codec().decode(u);break;case 2:m.statusText=u.string();break;case 3:m.addr=u.bytes();break;default:u.skipType(p&7);break}}return m})),d),l.encode=u=>ee(u,l.codec()),l.decode=u=>J(u,l.codec())})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=te((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={},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let m=l.uint32();switch(m>>>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(m&7);break}}return u})),c),r.encode=l=>ee(l,r.codec()),r.decode=l=>J(l,r.codec())})(he||(he={}));var L2=4,y1=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??zg}/${Gg}/${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",yn))};t.addEventListener("abort",n,{once:!0}),ge(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Ge(e.stream,i=>Ft(i),async function*(i){let a=await gs(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(p){s.log.error("could not decode message",p),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=Ye(u.id)}catch(p){s.log.error("invalid PeerId",p),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 f=u.addrs.map(p=>Q(p)).filter(p=>{let y=p.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",p,e.connection.remoteAddr,y),y}).filter(p=>{let y=p.toOptions().host,w=!(Sr(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(p=>{let y=p.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(p=>{let y=!!s.components.transportManager.transportForMultiaddr(p);return s.log.trace("transport for %a is supported %s",p,y),y}).map(p=>(p.getPeerId()==null&&(p=p.encapsulate(`/p2p/${d.toString()}`)),p));if(f.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",f.map(p=>p.toString()).join(", "),d);let m="",h=f[0];for await(let p of f){let y;h=p;try{if(y=await s.components.connectionManager.openConnection(p,{signal:t}),!y.remoteAddr.equals(p))throw s.log.error("tried to dial %a but dialed %a",p,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(Z("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),m=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:m,addr:h.bytes}})},i=>Ut(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!(Sr(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);ge(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 f=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let m=await o.components.connectionManager.openConnection(u.id,{signal:n}),h=await m.newStream(this.protocol,{signal:n});f=()=>{h.abort(new g("verifyAddress timeout",yn))},n.addEventListener("abort",f,{once:!0});let p=await Ge([s],w=>Ut(w),h,w=>Ft(w),async w=>gs(w));if(p==null){this.log("no response received from %p",m.remotePeer);return}let y=he.decode(p);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",m.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=m.remoteAddr.toOptions(),E;if(w.family===4)E=w.host.split(".")[0];else if(w.family===6)E=w.host.split(":")[0];else{this.log('remote address "%s" was not IP4 or IP6?',w.host);return}if(l.includes(E)){this.log("already have response from network segment %d - %s",E,w.host);return}l.push(E)}return y.dialResponse}catch(m){this.log.error("error asking remote to verify multiaddr",m)}finally{n.removeEventListener("abort",f)}};for await(let u of Hn(dr(this.components.peerRouting.getClosestPeers(a,{signal:n}),f=>async()=>d(f)),{concurrency:L2}))try{if(u==null)continue;let f=u.addr==null?t[0]:Q(u.addr);if(this.log("autonat response for %a is %s",f,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(h=>h.equals(f))){this.log("peer reported %a as %s but it was not in our observed address list",f,u.status);continue}let m=f.toString();if(c[m]==null&&(c[m]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[m].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[m].failure++,c[m].success===L2){this.log("%a is externally dialable",f),e.confirmObservedAddr(f);return}if(c[m].failure===L2){this.log("%a is not externally dialable",f),e.removeObservedAddr(f);return}}catch(f){this.log.error("could not verify external address",f)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function Xg(r={}){return e=>new y1(e,r)}var xD=H("dns4"),vD=H("dns6"),_D=H("dnsaddr"),No=et(H("dns"),_D,xD,vD),w1=et(H("ip4"),H("ip6")),Ti=et(re(w1,H("tcp")),re(No,H("tcp"))),b1=re(w1,H("udp")),SD=re(b1,H("utp")),RD=re(b1,H("quic")),AD=re(b1,H("quic-v1")),B2=et(re(Ti,H("ws")),re(No,H("ws"))),ki=et(re(B2,H("p2p")),B2),M2=et(re(Ti,H("wss")),re(No,H("wss")),re(Ti,H("tls"),H("ws")),re(No,H("tls"),H("ws"))),_s=et(re(M2,H("p2p")),M2),U2=et(re(Ti,H("http")),re(w1,H("http")),re(No,H("http"))),F2=et(re(Ti,H("https")),re(w1,H("https")),re(No,H("https"))),Qg=re(b1,H("webrtc-direct"),H("certhash")),Jg=et(re(Qg,H("p2p")),Qg),jg=re(AD,H("webtransport"),H("certhash"),H("certhash")),e9=et(re(jg,H("p2p")),jg),t9=et(re(ki,H("p2p-webrtc-star"),H("p2p")),re(_s,H("p2p-webrtc-star"),H("p2p")),re(ki,H("p2p-webrtc-star")),re(_s,H("p2p-webrtc-star"))),Lj=et(re(ki,H("p2p-websocket-star"),H("p2p")),re(_s,H("p2p-websocket-star"),H("p2p")),re(ki,H("p2p-websocket-star")),re(_s,H("p2p-websocket-star"))),r9=et(re(U2,H("p2p-webrtc-direct"),H("p2p")),re(F2,H("p2p-webrtc-direct"),H("p2p")),re(U2,H("p2p-webrtc-direct")),re(F2,H("p2p-webrtc-direct"))),Ss=et(B2,M2,U2,F2,t9,r9,Ti,SD,RD,No,Jg,e9),Bj=et(re(Ss,H("p2p-stardust"),H("p2p")),re(Ss,H("p2p-stardust"))),Co=et(re(Ss,H("p2p")),t9,r9,Jg,e9,H("p2p")),Zg=et(re(Co,H("p2p-circuit"),Co),re(Co,H("p2p-circuit")),re(H("p2p-circuit"),Co),re(Ss,H("p2p-circuit")),re(H("p2p-circuit"),Ss),H("p2p-circuit")),n9=()=>et(re(Zg,n9),Zg),zr=n9(),o9=et(re(zr,Co,zr),re(Co,zr),re(zr,Co),zr,Co);var Mj=et(re(zr,H("webrtc"),H("p2p")),re(zr,H("webrtc")),re(Ss,H("webrtc"),H("p2p")),re(Ss,H("webrtc")),H("webrtc"));function s9(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 re(...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 et(...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 H(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 ID="bootstrap",DD=50,TD=12e4,kD=1e3,V2=class extends Ce{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??kD,this.list=[];for(let n of t.list){if(!o9.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:ye(s),multiaddrs:[o]};this.list.push(i)}this._init=t}[zo]=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??ID]:{value:this._init.tagValue??DD,ttl:this._init.tagTTL??TD}}}),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 V2(e,r)}var c9={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var ja;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(ja||(ja={}));var Gr=class r{static createFromProtobuf=async e=>{let t=ja.decode(e),n=await ut(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 gr(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=ja.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return j(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 $r(this.peerId.publicKey).verify(t.subarray(),this.signature)}},l9=(r,e,t)=>{let n=L(r),o=ze(n.byteLength),s=ze(e.length),i=ze(t.length);return new de(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 Za;(function(r){let e;(function(n){let o;n.codec=()=>(o==null&&(o=te((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=>ee(s,n.codec()),n.decode=s=>J(s,n.codec())})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=te((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=>ee(n,r.codec()),r.decode=n=>J(n,r.codec())})(Za||(Za={}));var rr=class r{static createFromProtobuf=e=>{let t=Za.decode(e),n=Ye(t.peerId),o=(t.addresses??[]).map(i=>Q(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=Za.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 Qe(r,e){let t=ln(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 gZ=BigInt(131072),Rs="/libp2p/circuit/relay/0.2.0/hop",K2="/libp2p/circuit/relay/0.2.0/stop",yZ=30*1e3,wZ=30*1e3,$2=300;var H2="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=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((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),Ci.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),E1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Ni.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(40),Et.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=Ci.codec().decode(o,o.uint32());break;case 3:i.reservation=E1.codec().decode(o,o.uint32());break;case 4:i.limit=Ni.codec().decode(o,o.uint32());break;case 5:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Oo||(Oo={}));var un;(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=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((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),Ci.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Ni.codec().encode(o.limit,s)),o.status!=null&&(s.uint32(32),Et.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=Ci.codec().decode(o,o.uint32());break;case 3:i.limit=Ni.codec().decode(o,o.uint32());break;case 4:i.status=Et.codec().decode(o);break;default:o.skipType(c&7);break}}return i})),n),r.encode=o=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(un||(un={}));var Ci;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ci||(Ci={}));var E1;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(E1||(E1={}));var Ni;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ni||(Ni={}));var Et;(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"})(Et||(Et={}));var q2;(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"})(q2||(q2={}));(function(r){r.codec=()=>Ve(q2)})(Et||(Et={}));var g9;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(g9||(g9={}));async function y9(r){let e=new TextEncoder().encode(r),t=await Re.digest(e);return oe.createV0(t)}function W2(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var x1=class extends Ce{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(Rs,{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(Rs)],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 Po=class extends Vn{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var ND=60*1e3*10,OD=60*1e3*5,PD=30*1e3,v1=class extends Ce{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 wt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e4,this.started=!1,this.reserveQueue=new Po({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(W2(n.reservation.expire)>ND){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=W2(i.expire),c=Math.min(Math.max(a-OD,PD),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([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(Rs,t),s=Qe(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===Et.OK&&i.reservation!=null){let c=!1,l=e.remoteAddr.bytes;for(let d of i.reservation.addrs)if(j(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 z2(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 f=>{await a(f),u(!0)};let c=e.abort.bind(e);e.abort=f=>{c(f),u(!0)};let l=e.sink.bind(e);e.sink=async f=>{try{await l(f)}catch(m){m.type!=="aborted"&&o.error("%s error in sink",t,m)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let f of e.source)f instanceof Uint8Array?yield f:yield*f}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(f){f===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var G2=class extends Ce{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 wt,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 w9(r){return new G2(r)}var BD=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Q)}catch{return!1}return!0},Y2={maxInboundStopStreams:$2,maxOutboundStopStreams:$2,stopTimeout:3e4},_1=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??Y2.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??Y2.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??Y2.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new x1(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 v1(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(K2,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(K2),this.started=!1}[en]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(h=>h===290).length!==1){let h="Invalid circuit relay address";throw this.log.error(h,e),new g(h,H2)}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 h=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(h),new g(h,H2)}let c=ye(i),l=ye(a),d=!1,f=this.connectionManager.getConnections(c)[0];f==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),f=await this.connectionManager.openConnection(c,t),d=!0);let m;try{return m=await f.newStream(Rs),await this.connectV2({stream:m,connection:f,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,h),m?.abort(h),d&&await f.close(),h}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=Qe(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!==Et.OK)throw new g(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,m9);let u=z2({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})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>zr.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=Qe(t).pb(un),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:un.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==un.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!BD(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let i=Ye(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:un.Type.STATUS,status:Et.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:Et.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=z2({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 X2(r={}){return e=>new _1(e,r)}var b9=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},MD=new WeakMap;function UD({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(b9());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(b9())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,m)=>{i=()=>{d(),f(n)},a=m,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),MD.set(u,()=>{c(s),s=null,i()}),u}}var FD=UD(),S1=FD;var Yr;(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=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((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=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Yr||(Yr={}));var VD=r=>r.toString().split("/").slice(1),Ja=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),tt=r=>({match:e=>Ja(t=>t===r).match(e),pattern:r}),I1=()=>({match:r=>Ja(e=>typeof e=="string").match(r),pattern:"{string}"}),E9=()=>({match:r=>Ja(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),Rr=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{ce.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),R1=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Cf.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),dn=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),fn=(...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(", ")})`}),rt=(...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 ct(...r){function e(o){let s=VD(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 j2=rt(tt("dns4"),I1()),Z2=rt(tt("dns6"),I1()),J2=rt(tt("dnsaddr"),I1()),x9=rt(tt("dns"),I1()),gJ=ct(j2),yJ=ct(Z2),wJ=ct(J2),v9=ct(fn(x9,J2,j2,Z2)),_9=rt(tt("ip4"),Ja(Qs)),S9=rt(tt("ip6"),Ja(js)),R9=fn(_9,S9),ec=fn(R9,x9,j2,Z2,J2),A9=ct(ec),bJ=ct(_9),EJ=ct(S9),I9=ct(R9),D1=rt(ec,tt("tcp"),E9()),tc=rt(ec,tt("udp"),E9()),KD=fn(D1,tc),xJ=ct(D1),vJ=ct(tc),ep=rt(tc,tt("quic")),T1=rt(tc,tt("quic-v1")),$D=fn(ep,T1),_J=ct(ep),SJ=ct(T1),Q2=fn(ec,D1,tc,ep,T1),D9=fn(rt(Q2,tt("ws"),dn(Rr()))),RJ=ct(D9),T9=fn(rt(Q2,tt("wss"),dn(Rr())),rt(Q2,tt("tls"),tt("ws"),dn(Rr()))),AJ=ct(T9),k9=rt(KD,tt("webrtc-direct"),R1(),dn(R1()),dn(Rr())),C9=ct(k9),N9=rt(T1,tt("webtransport"),R1(),R1(),dn(Rr())),k1=ct(N9),A1=fn(D9,T9,rt(D1,dn(Rr())),rt($D,dn(Rr())),rt(ec,dn(Rr())),k9,N9,Rr()),IJ=ct(A1),HD=rt(A1,tt("p2p-circuit"),Rr()),rc=ct(HD),qD=fn(rt(A1,tt("p2p-circuit"),tt("webrtc"),Rr()),rt(A1,tt("webrtc"),dn(Rr())),tt("webrtc")),O9=ct(qD);function tp(r,e){return rc.matches(r)||e.transportForMultiaddr(r)==null?!1:v9.matches(r)?!0:I9.matches(r)?Sr(r.toOptions().host)===!1:!1}var P9=1024*4,L9=100,C1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},N1=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??C1.timeout,this.retries=t.retries??C1.retries,this.maxInboundStreams=t.maxInboundStreams??C1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??C1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(nc,{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(nc,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(nc),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([nc],{signal:o.signal,runOnTransientConnection:!0});let s=Qe(t,{maxDataLength:P9}).pb(Yr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Yr.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!==Yr.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:Yr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await S1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:L9});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=>tp(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=Qe(e,{maxDataLength:P9}).pb(Yr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Yr.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:Yr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Yr.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:L9,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(!tp(o,this.transportManager))continue;t.push(o)}catch{}return t}};var nc="/libp2p/dcutr";function B9(r={}){return e=>new N1(e,r)}var M9="0.1.0",U9="id",F9="id/push",V9="1.0.0",K9="1.0.0";var q9=ke(H9(),1),rp=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,O1=(0,q9.default)(),P1=rp&&!O1,W9=O1&&!rp,z9=O1&&rp,G9=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!O1,L1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,WJ=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",Y9=typeof navigator<"u"&&navigator.product==="ReactNative";var As;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(As||(As={}));var np=1024*8,Ar={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},B1=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??Ar.protocolPrefix}/${U9}/${V9}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Ar.protocolPrefix}/${F9}/${K9}`,this.timeout=t.timeout??Ar.timeout,this.maxInboundStreams=t.maxInboundStreams??Ar.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Ar.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Ar.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Ar.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Ar.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Ar.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Ar.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Ar.protocolPrefix}/${M9}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Ar.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}`&&(G9||W9?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(P1||L1||z9||Y9)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:L(this.host.agentVersion),ProtocolVersion:L(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(Z("p2p").code)),n=new rr({peerId:this.peerId,multiaddrs:t}),o=await Gr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=B(i.metadata.get("AgentVersion")??L(this.host.agentVersion)),c=B(i.metadata.get("ProtocolVersion")??L(this.host.protocolVersion)),l=e.map(async d=>{let u,f=AbortSignal.timeout(this.timeout);ge(1/0,f);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:f,runOnTransientConnection:this.runOnTransientConnection}),await Qe(u,{maxDataLength:this.maxIdentifyMessageSize??np}).pb(As).write({listenAddrs:t.map(h=>h.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:f}),await u.close({signal:f})}catch(m){this.log.error("could not push identify update to peer",m),u?.abort(m)}});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);ge(1/0,o),t={...t,signal:o}}try{n=await e.newStream(this.identifyProtocolStr,{...t,runOnTransientConnection:this.runOnTransientConnection});let s=await Qe(n,{maxDataLength:this.maxIdentifyMessageSize??np}).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 ut(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=zD(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);ge(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(Z("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new rr({peerId:this.peerId,multiaddrs:a});c=(await Gr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;A9.matches(t.remoteAddr)||(l=void 0),await Qe(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 Qe(n,{maxDataLength:this.maxIdentifyMessageSize??np}).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 ut(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 Gr.openAndCertify(i,rr.DOMAIN),c=rr.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 Gr.createFromProtobuf(l.peerRecordEnvelope),u=rr.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=L(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=L(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 zD(r){if(r!=null&&r.length>0)try{return Q(r)}catch{}}function X9(r={}){return e=>new B1(e,r)}var Q9="/ipfs/kad/1.0.0",j9="/dht/record",op="/dht/provider";var Z9;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Z9||(Z9={}));var we;(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"})(we||(we={}));var M1;(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"})(M1||(M1={}));(function(r){r.codec=()=>Ve(M1)})(we||(we={}));var Pi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Pi||(Pi={}));var sp;(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"})(sp||(sp={}));(function(r){r.codec=()=>Ve(sp)})(Pi||(Pi={}));var Oi;(function(r){let e;r.codec=()=>(e==null&&(e=te((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),Pi.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Ze(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=Pi.codec().decode(t);break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Oi||(Oi={}));var Ir;(function(r){let e;r.codec=()=>(e==null&&(e=te((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&M1[t.type]!==0&&(n.uint32(8),we.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),Oi.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Oi.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:we.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=we.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(Oi.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Oi.codec().decode(t,t.uint32()));break}default:{t.skipType(i&7);break}}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Ir||(Ir={}));function ip(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:we[r.type]};return e.onProgress?.(new mt("kad-dht:query:send-query",{detail:t})),t}function oc(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 mt("kad-dht:query:peer-response",{detail:t})),t}function U1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new mt("kad-dht:query:final-peer",{detail:t})),t}function nr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new mt("kad-dht:query:query-error",{detail:t})),t}function ap(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new mt("kad-dht:query:provider",{detail:t})),t}function sc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new mt("kad-dht:query:value",{detail:t})),t}function cp(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new mt("kad-dht:query:dial-peer",{detail:t})),t}var ic;(function(r){let e;r.codec=()=>(e==null&&(e=te((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)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},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 5:o.timeReceived=t.string();break;default:t.skipType(i&7);break}}return o})),e),r.encode=t=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(ic||(ic={}));function J9(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 ey(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 xt=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 ic.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:J9(this.timeReceived)}}static deserialize(e){let t=ic.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=ey(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)}};function ty(r,e,t){if(t.length===0){let i="No records given";throw new g(i,"ERR_NO_RECORDS_RECEIVED")}let o=B(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 YD(r,e){return 0}var ry={pk:YD};async function Li(r,e){let t=e.key,o=B(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 XD=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(B(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 Re.digest(e);if(!j(n,o.bytes))throw new g("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},ny={pk:XD};var QD=L("/pk/");function oy(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=Sr(n);return o==null?!0:!o})}}async function Lo(r){return(await Re.digest(r)).digest}async function Xr(r){return Lo(r.toBytes())}function qn(r){return new Oe(`${j9}/${B(r,"base32")}`,!1)}function sy(r){return _e([QD,r.toBytes()])}function iy(r){return B(r.subarray(0,4))==="/pk/"}function ay(r){return Ye(r.subarray(4))}function lp(r,e){let t=new Date;return new xt(r,e,t).serialize()}function cy(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var jD=290,ZD=54,JD=55,eT=56,tT=4,rT=41;function ly(r){let e=r.stringTuples();for(let t of e)if(t[0]===jD)return!1;if(e[0][0]===ZD||e[0][0]===JD||e[0][0]===eT)return!0;if(e[0][0]===tT||e[0][0]===rT){let t=Sr(`${e[0][1]}`);return t==null||!t}return!1}var F1=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 putLocal(e,t){let n=qn(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=qn(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=xt.deserialize(n);return await Li(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=lp(e,n);for(let{value:i,from:a}of t){if(j(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=qn(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:we.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&j(d.record.value,xt.deserialize(s).value)&&(c=!0),yield d;c||(yield nr({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=lp(e,t),s=qn(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Ge(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>dr(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:we.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&&j(d.record.value,xt.deserialize(o).value)||c.push(nr({from:a.peer.id,error:new g("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Hn(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=ty(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 sc({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 sc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function uy(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function ac(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:Ye(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>Q(e))}}var V1=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:we.ADD_PROVIDER,key:e.multihash.bytes,providers:[uy({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(nr({from:a.peer.id,error:l},n))}return c};yield*Ge(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>dr(a,c=>i(c)),a=>Hn(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=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let d of i.slice(0,n))try{let u=await this.components.peerStore.get(d);l.push({id:d,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",d)}yield oc({from:this.components.peerId,messageType:we.GET_PROVIDERS,providers:l},t),yield ap({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:d}){let u={type:we.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:d})},c=new Je(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let d=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),d.push(u));if(d.length>0&&(yield ap({from:l.from,providers:d},t)),c.size===n)return}}};var K1=class extends Ce{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 la("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield cp({peer:e},n),yield ip({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 oc({from:e,messageType:c.type,closer:c.closer.map(ac),providers:c.providers.map(ac),record:c.record==null?void 0:xt.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield nr({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 la("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield cp({peer:e},n),yield ip({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 oc({from:e,messageType:o},n)}catch(i){yield nr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=Qe(e);await o.write(t,Ir,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=Qe(e);await o.write(t,Ir,n);let s=await o.read(Ir,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:ac(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:ac(i)})}),s}};var fp=(r,e)=>r<<e|r>>>32-e>>>0,nT=(r,e,t)=>r&e^~r&t,oT=(r,e,t)=>r&e^r&t^e&t,cc=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Bo=new Uint32Array(80),hp=class extends ao{constructor(){super(64,20,8,!1),this.A=cc[0]|0,this.B=cc[1]|0,this.C=cc[2]|0,this.D=cc[3]|0,this.E=cc[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)Bo[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Bo[c]=fp(Bo[c-3]^Bo[c-8]^Bo[c-14]^Bo[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=nT(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=oT(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=fp(n,5)+l+a+d+Bo[c]|0;a=i,i=s,s=fp(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(){Bo.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},dy=ti(()=>new hp);var fy={sha1:dy,"sha2-256":xo,"sha2-512":uo};function lc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(fy).join(" / ");throw new g(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=fy[o],i=jm(s,r,e,{c:t,dkLen:n});return ar.encode(i).substring(1)}var $1=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 Xr(e),n={peerId:e,distance:$n(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>o1(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(Xr)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=$n(this.originDhtKey,o);if(o1(s,n)<0)return!0}return!1}};var H1=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:we.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=sy(e);for await(let o of this._getValueSingle(e,n,t))if(yield o,o.name==="PEER_RESPONSE"&&o.record!=null){let s=await ut(pu.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 sc({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 U1({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:we.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 U1({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 nr({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 Lo(e),o=this.routingTable.closestPeers(n),s=this,i=new $1(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",B(e,"base32"),c);let d={type:we.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 U1({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 nr({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 Li(this.validators,new xt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await Lo(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 my=ke(py(),1);var q1=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,my.default)(n??256),this.syncQueue=new Er({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:op});for await(let a of i)try{let{cid:c,peerId:l}=gy(a.key),d=yy(a.value).getTime(),u=Date.now(),f=u-d,m=f>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,f,this.provideValidity,m?"(expired)":""),m){n++,s.delete(a.key);let h=o.get(c)??new Set;h.add(l),o.set(c,h)}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=uc(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=uc(e),n=this.cache.get(t);return n==null&&(n=await lT(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=uc(e);this.cache.set(s,n),await cT(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 uc(r){let e=typeof r=="string"?r:B(r.multihash.bytes,"base32");return`${op}/${e}`}async function cT(r,e,t,n){let o=[uc(e),"/",t.toString()].join(""),s=new Oe(o),i=ze(n.getTime());await r.put(s,i)}function gy(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 lT(r,e){let t=new Map,n=r.query({prefix:uc(e)});for await(let o of n){let{peerId:s}=gy(o.key);t.set(s,yy(o.value))}return t}function yy(r){return new Date(Yt(r))}async function*wy(r,e,t,n){let o=nt({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 uT=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*by(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:f}=r,m=new Er({concurrency:i}),h=await Lo(e);function p(y,w){if(y==null)return;f.add(y);let E=BigInt("0x"+B($n(w,h),"base16"));m.add(async()=>{let b=[o];d!=null&&b.push(AbortSignal.timeout(d));let S=lt(b);try{for await(let R of s({key:e,peer:y,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(R.name==="PEER_RESPONSE")for(let A of R.closer){if(f.has(A.id)){u("already seen %p in query",A.id);continue}if(n.equals(A.id)){u("not querying ourselves");continue}let D=await Xr(A.id);if(BigInt("0x"+B($n(D,h),"base16"))>E){u("skipping %p as they are not closer to %b than %p",A.id,e,y);continue}u("querying closer peer %p",A.id),p(A.id,D)}m.emit("completed",R)}}catch(R){if(!o.aborted)return nr({from:y,error:R},r)}finally{S.clear()}},{priority:uT-E}).catch(b=>{u.error(b)})}p(t,await Xr(t)),yield*wy(m,o,l,u)}var W1=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,ge(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}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);ge(1/0,u),n={...n,signal:u}}let s=new AbortController;ge(1/0,s.signal);let i=lt([this.shutDownController.signal,s.signal,n.signal]);ge(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+B(e,"base58btc")),c=Date.now(),l=new Ce,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 Lo(e),f=this.routingTable.closestPeers(u),m=f.slice(0,Math.min(this.disjointPaths,f.length));if(f.length===0){a.error("Running query with no peers");return}let h=new Je,p=m.map((y,w)=>by({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:m.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:h,onProgress:n.onProgress}));for await(let y of Tt(...p))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 mt("cleanup")),a("query:done in %dms",Date.now()-c)}}};function dT(r){return r[Symbol.asyncIterator]!=null}function fT(r){if(dT(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 z1=fT;var hT=r=>{let e=r.on||r.addListener||r.addEventListener,t=r.off||r.removeListener||r.removeEventListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function pT(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}=hT(r),u=(...m)=>{let h=t.multiArgs?m:m[0];t.filter&&!t.filter(h)||(c.push(h),t.count===c.length&&(n(),s(c)))},f=m=>{n(),i(m)};n=()=>{for(let m of a)d(m,u);for(let m of t.rejectionEvents)d(m,f)};for(let m of a)l(m,u);for(let m of t.rejectionEvents)l(m,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Wr(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function dc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=pT(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var G1=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=se(),this.started){this.controller=new AbortController;let e=lt([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);ge(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await dc(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await Ge(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>oo(o,this.count),async o=>z1(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.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 xy(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 pp(){return{contacts:[],dontSplit:!1,left:null,right:null}}function fc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Y1=class r extends Ce{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,fc("option.localNodeId as parameter 1",this.localNodeId),this.root=pp()}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){fc("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(fc("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){fc("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(xy(e.contacts[n].id,t))return n;return-1}remove(e){fc("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=pp(),e.right=pp();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(!xy(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 mT="kad-close",gT=50,vy=20,yT=1e4,wT=10,X1=class extends Ce{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??vy,this.pingTimeout=o??yT,this.pingConcurrency=i??wT,this.running=!1,this.protocol=a,this.tagName=c??mT,this.tagValue=l??gT,this.pingQueue=new Po({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 Y1({localNodeId:await Xr(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 Je,n=cy(()=>{let o=new Je(e.closest(e.localNodeId,vy).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=Qe(c);await u.write({type:we.PING},Ir,l);let f=await u.read(Ir,l);if(await u.unwrap().close(),f.type!==we.PING)throw new g(`Incorrect message type received, expected PING got ${f.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 Xr(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 Xr(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 Xr(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var _y=[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 Q1=15,j1=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 z1(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>Q1&&(e=Q1);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=Vt(2),n=(t[1]<<8)+t[0],o=await this._makePeerId(this.routingTable.kb.localNodeId,n,e);return Ye(o)}async _makePeerId(e,t,n){if(n>Q1)throw new Error(`Cannot generate peer ID for common prefix length greater than ${Q1}`);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=_y[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,Re.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=$n(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Z1=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=oe.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,Ye(o.id))}))}};var J1=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){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new g("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");j(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(Z("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:we.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 ed=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 FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=oe.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:we.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 td=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:we.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(iy(n)){this.log("is public key");let a=ay(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 xt(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=qn(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=xt.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 rd=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 nd=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=xt.deserialize(t.record);await Li(this.validators,o),o.timeReceived=new Date;let s=qn(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 od=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={[we.GET_VALUE.toString()]:new td(e,{peerRouting:o,logPrefix:i}),[we.PUT_VALUE.toString()]:new nd(e,{validators:s,logPrefix:i}),[we.FIND_NODE.toString()]:new J1(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[we.ADD_PROVIDER.toString()]:new Z1(e,{providers:n,logPrefix:i}),[we.GET_PROVIDERS.toString()]:new ed(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[we.PING.toString()]:new rd(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 Ge(t,i=>Ft(i),async function*(i){for await(let a of i){let c=Ir.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield Ir.encode(l))}},i=>Ut(i),t)}).catch(t=>{this.log.error(t)})}};var sd=class extends Ce{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 mt("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var mp=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Mt(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 Mt(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")}},gp=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)}},bT=32,ET=64,id=class extends Ce{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:f,maxOutboundStreams:m,providers:h}=t,p=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(p),this.protocol=c??Q9,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=f??bT,this.maxOutboundStreams=m??ET,this.peerInfoMapper=t.peerInfoMapper??oy,this.routingTable=new X1(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:p}),this.providers=new q1(e,h??{}),this.validators={...ny,...s},this.selectors={...ry,...i},this.network=new K1(e,{protocol:this.protocol,logPrefix:p});let y=se();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new W1(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new H1(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:p}),this.contentFetching=new F1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:p}),this.contentRouting=new V1(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:p}),this.routingTableRefresh=new j1(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:p}),this.rpc=new od(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:p,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new sd(e,{protocol:this.protocol,logPrefix:p}),this.querySelf=new G1(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.network.addEventListener("peer",w=>{let E=w.detail;this.onPeerConnect(E).catch(b=>{this.log.error("could not add %p to routing table",E.id,b)}),this.dispatchEvent(new mt("peer",{detail:E}))}),this.topologyListener.addEventListener("peer",w=>{let E=w.detail;Promise.resolve().then(async()=>{let b=await this.components.peerStore.get(E),S={id:E,multiaddrs:b.addresses.map(({multiaddr:R})=>R),protocols:b.protocols};await this.onPeerConnect(S)}).catch(b=>{this.log.error("could not add %p to routing table",E,b)})}),this.dhtPeerRouting=new gp(this),this.dhtContentRouting=new mp(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",w=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let E=w.detail.peer.addresses.some(({multiaddr:S})=>ly(S)),b=this.getMode();E&&b==="client"?await this.setMode("server"):b==="server"&&!E&&await this.setMode("client")}).catch(E=>{this.log.error("error setting dht server mode",E)})})}get[Zr](){return this.dhtContentRouting}get[Jr](){return this.dhtPeerRouting}get[zo](){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 Sy;(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"})(Sy||(Sy={}));var Ry;(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"})(Ry||(Ry={}));function Ay(r){return e=>new id(e,r)}var Ly=ke(Py(),1),Ui=Ly.default;var Wy=ke(qy(),1);var ve;(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"})(ve||(ve={}));var UT="/pkcs8/",zy="/info/",Is=new WeakMap,Ds={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},wp={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function Wn(r){return r==null||typeof r!="string"?!1:r===(0,Wy.default)(r.trim())&&r.length>0}async function Pe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function hn(r){return new Oe(UT+r)}function Mo(r){return new Oe(zy+r)}var ld=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Ui(wp,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?lc(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({},wp),t=Math.ceil(Ds.minSaltLength/3)*3;return e.dek.salt=B(Vt(t),"base64"),e}static get options(){return wp}async createKey(e,t,n=2048){if(!Wn(e)||e==="self")throw await Pe(),new g("Invalid key name",ve.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Pe(),new g("Invalid key type",ve.ERR_INVALID_KEY_TYPE);let o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g("Key name already exists",ve.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Pe(),new g("Invalid RSA key size",ve.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await Ia(t,n),c=await a.id(),l=Is.get(this);if(l==null)throw new g("dek missing",ve.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let f=this.components.datastore.batch();f.put(o,L(u)),f.put(Mo(e),L(JSON.stringify(i))),await f.commit()}catch(a){throw await Pe(),a}return i}async listKeys(){let e={prefix:zy},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(B(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.`,ve.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Pe(),t}}async findKeyByName(e){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);let t=Mo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(B(n))}catch(n){throw await Pe(),this.log.error(n),new g(`Key '${e}' does not exist.`,ve.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);let t=hn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Mo(e)),await o.commit(),n}async renameKey(e,t){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid old key name '${e}'`,ve.ERR_OLD_KEY_NAME_INVALID);if(!Wn(t)||t==="self")throw await Pe(),new g(`Invalid new key name '${t}'`,ve.ERR_NEW_KEY_NAME_INVALID);let n=hn(e),o=hn(t),s=Mo(e),i=Mo(t);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${t}' already exists`,ve.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(B(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,L(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Pe(),c}}async exportKey(e,t){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("Password is required",ve.ERR_PASSWORD_REQUIRED);let n=hn(e);try{let o=await this.components.datastore.get(n),s=B(o),i=Is.get(this);if(i==null)throw new g("dek missing",ve.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await di(s,a)).export(t)}catch(o){throw await Pe(),o}}async exportPeerId(e){let t="temporary-password",n=await this.exportKey(e,t),o=await di(n,t);return ut(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!Wn(e)||e==="self")throw await Pe(),new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);if(t==null)throw await Pe(),new g("PEM encoded key is required",ve.ERR_PEM_REQUIRED);let o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,ve.ERR_KEY_ALREADY_EXISTS);let i;try{i=await di(t,n)}catch{throw await Pe(),new g("Cannot read the key, most likely the password is wrong",ve.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=Is.get(this);if(d==null)throw new g("dek missing",ve.ERR_INVALID_PARAMETERS);let u=d.dek;t=await i.export(u)}catch(d){throw await Pe(),d}let c={name:e,id:a},l=this.components.datastore.batch();return l.put(o,L(t)),l.put(Mo(e),L(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!Wn(e))throw new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);if(t==null)throw new g("PeerId is required",ve.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new g("PeerId.privKey is required",ve.ERR_MISSING_PRIVATE_KEY);let n=await gr(t.privateKey),o=hn(e);if(await this.components.datastore.has(o))throw await Pe(),new g(`Key '${e}' already exists`,ve.ERR_KEY_ALREADY_EXISTS);let i=Is.get(this);if(i==null)throw new g("dek missing",ve.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,L(c)),d.put(Mo(e),L(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Pe(),n}}async getPrivateKey(e){if(!Wn(e))throw await Pe(),new g(`Invalid key name '${e}'`,ve.ERR_INVALID_KEY_NAME);try{let t=hn(e),n=await this.components.datastore.get(t);return B(n)}catch(t){throw await Pe(),this.log.error(t),new g(`Key '${e}' does not exist.`,ve.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Pe(),new g(`Invalid old pass type '${typeof e}'`,ve.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Pe(),new g(`Invalid new pass type '${typeof t}'`,ve.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Pe(),new g(`Invalid pass length ${t.length}`,ve.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=Is.get(this);if(n==null)throw new g("dek missing",ve.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?lc(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(hn(a.name)),l=B(c),d=await di(l,o),u=s.toString(),f=await d.export(u),m=this.components.datastore.batch(),h={name:a.name,id:a.id};m.put(hn(a.name),L(f)),m.put(Mo(a.name),L(JSON.stringify(h))),await m.commit()}this.log("keychain reconstructed")}};function ud(r={}){return e=>new ld(e,r)}var Fi=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 bp}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 S1(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)}},bp=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 hc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),Ep=Object.freeze({NEW_STREAM:Ee.NEW_STREAM,MESSAGE:Ee.MESSAGE_INITIATOR,CLOSE:Ee.CLOSE_INITIATOR,RESET:Ee.RESET_INITIATOR}),Gy=Object.freeze({MESSAGE:Ee.MESSAGE_RECEIVER,CLOSE:Ee.CLOSE_RECEIVER,RESET:Ee.RESET_RECEIVER});var xp=1<<20,FT=4<<20,dd=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=xp,t=FT){this._buffer=new de,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}=Xy(e),{value:o,offset:s}=Xy(e,n),i=t&7;if(hc[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}}},VT=128,Yy=127;function Xy(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&Yy)<<n:(s&Yy)*Math.pow(2,n),n+=7}while(s>=VT);return e=o-e,{value:t,offset:e}}var vp=10*1024,_p=class{_pool;_poolOffset;constructor(){this._pool=qe(vp),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;ze(e.id<<3|e.type,n,o),o+=Fe(e.id<<3|e.type),(e.type===Ee.NEW_STREAM||e.type===Ee.MESSAGE_INITIATOR||e.type===Ee.MESSAGE_RECEIVER)&&e.data!=null?(ze(e.data.length,n,o),o+=Fe(e.data.length)):(ze(0,n,o),o+=Fe(0));let s=n.subarray(this._poolOffset,o);vp-o<100?(this._pool=qe(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)}},KT=new _p;async function*Qy(r){for await(let e of r){let t=new de;KT.write(e,t),yield t}}var Sp=class extends ko{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?Ep:Gy,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:Ep.NEW_STREAM,data:new de(L(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 jy(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=xp}=r;return new Sp({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 $T=1024,HT=1024,qT=1024*1024*4,WT=5,zT=500;function Zy(r){let e={...r,type:`${hc[r.type]} (${r.type})`};return r.type===Ee.NEW_STREAM&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===Ee.MESSAGE_INITIATOR||r.type===Ee.MESSAGE_RECEIVER)&&(e.data=B(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var fd=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??zT,this.sink=this._createSink(),this._source=nt({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=Ge(this._source,n=>Qy(n)),this.closeController=new AbortController,this.rateLimiter=new Fi({points:t.disconnectThreshold??WT,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??HT))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=jy({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,Zy(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=()=>{f1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new dd(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",Zy(e)),e.type===Ee.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??$T)){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:B(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,hc[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??qT;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 Rp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new fd(this.components,{...e,...this._init})}};function Jy(r={}){return e=>new Rp(e,r)}var ew="1.0.0",tw="ping",rw="ipfs";var Ap="ERR_WRONG_PING_ACK";var hd=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??rw}/${tw}/${ew}`,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();Ge(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=Vt(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 Ge([o],i,async d=>gs(d)),l=Date.now()-n;if(c==null)throw new g(`Did not receive a ping ack after ${l}ms`,Ap);if(!j(o,c.subarray()))throw new g(`Received wrong ping ack after ${l}ms`,Ap);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 nw(r={}){return e=>new hd(e,r)}var or;(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"})(or||(or={}));var Uo=class extends g{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var Ip=class extends Uo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,or.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function Op(r,e){return new Ip(r,e)}var Dp=class extends Uo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,or.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function pd(r){return new Dp(r)}var Tp=class extends Uo{constructor(e){super(`There was a problem with a provided argument: ${e}`,or.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function pc(r){return new Tp(r)}var kp=class extends Uo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,or.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function Pp(r,e){return new kp(r,e)}var Cp=class extends Uo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,or.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function ow(r){return new Cp(r)}var Np=class extends Uo{constructor(e){super(`unsupported hash algorithm: ${e}`,or.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function sw(r){return new Np(r)}var iw=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))},jT=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var ZT=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var JT=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 ek=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var tk=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var rk=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,nk=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,aw=3,ok=[["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",rk]],cw=[["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 uw(r){return r?lw(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new tk:typeof navigator<"u"?lw(navigator.userAgent):ak()}function sk(r){return r!==""&&ok.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 lw(r){var e=sk(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new ek;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<aw&&(o=iw(iw([],o,!0),ck(aw-o.length),!0)):o=[];var s=o.join("."),i=ik(r),a=nk.exec(r);return a&&a[1]?new JT(t,s,i,a[1]):new jT(t,s,i)}function ik(r){for(var e=0,t=cw.length;e<t;e++){var n=cw[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function ak(){var r=typeof process<"u"&&process.version;return r?new ZT(process.version.slice(1)):null}function ck(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var dw=uw(),mc=dw!=null&&dw.name==="firefox",md=async function*(){},gd=async r=>{},lk=30*1e3;function fw(r,e,t=lk,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=se(),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=md();sink=gd;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 qt;(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=()=>Ve(t)}(e=r.Flag||(r.Flag={}));let n;r.codec=()=>(n==null&&(n=te((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=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(qt||(qt={}));var uk=16*1024*1024,dk=30*1e3,fk=5,hk=2,pk=16*1024,mk=5e3,gk=5e3,Lp=class extends ko{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=nt(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??dk,this.maxBufferedAmount=e.maxBufferedAmount??uk,this.maxMessageSize=(e.maxMessageSize??pk)-fk-hk,this.receiveFinAck=se(),this.finAckTimeout=e.closeTimeout??mk,this.openTimeout=e.openTimeout??gk,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 Ft(this.incomingData)){let s=n.processIncomingProtobuf(o);s!=null&&n.sourcePush(new de(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 dc(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 dc(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=qt.encode({message:n}),s=Ut.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(qt.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(qt.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(qt.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=qt.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===qt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(qt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===qt.Flag.RESET&&this.reset(),t.flag===qt.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===qt.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=qt.encode({flag:e}),n=Ut.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 Vi(r){let{channel:e,direction:t}=r;return new Lp({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var hw="/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??hw,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=Vi({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 Bp(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},Bp=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??hw,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=Vi({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),fw(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=md();sink=gd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=Vi({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 Ki=globalThis.RTCPeerConnection,yd=globalThis.RTCSessionDescription,pw=globalThis.RTCIceCandidate;var Wt;(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=()=>Ve(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=te((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=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(Wt||(Wt={}));var wd=async(r,e,t)=>{try{let n=se();for(wk(r,n);;){let o=await Promise.race([n.promise,e.read({signal:t.signal})]);if(o==null)break;if(o.type!==Wt.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 pw(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 yk(r){return mc?r.iceConnectionState:r.connectionState}function wk(r,e){r[mc?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(yk(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 mw({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=gw(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 f=await d.newStream(bd,{signal:e,runOnTransientConnection:!0}),m=Qe(f).pb(Wt);try{let h=r.createDataChannel("init");r.onicecandidate=({candidate:E})=>{let b=JSON.stringify(E?.toJSON()??null);i.trace("initiator sending ICE candidate %s",b),m.write({type:Wt.Type.ICE_CANDIDATE,data:b},{signal:e}).catch(S=>{i.error("error sending ICE candidate",S)})},r.onicecandidateerror=E=>{i.error("initiator ICE candidate error",E)};let p=await r.createOffer().catch(E=>{throw i.error("could not execute createOffer",E),new g("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",p.sdp),await m.write({type:Wt.Type.SDP_OFFER,data:p.sdp},{signal:e}),await r.setLocalDescription(p).catch(E=>{throw i.error("could not execute setLocalDescription",E),new g("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await m.read({signal:e});if(y.type!==Wt.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 yd({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(E=>{throw i.error("could not execute setRemoteDescription",E),new g("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await wd(r,m,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),h.close(),i.trace("initiator closing signalling stream"),await m.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(h){throw r.close(),f.abort(h),h}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(f){d.abort(f)}}}var Ed=class extends Ce{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=>zr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function yw({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=Qe(e).pb(Wt);try{r.onicecandidate=({candidate:d})=>{let u=JSON.stringify(d?.toJSON()??null);o.trace("recipient sending ICE candidate %s",u),s.write({type:Wt.Type.ICE_CANDIDATE,data:u},{signal:t}).catch(f=>{o.error("error sending ICE candidate",f)})};let a=await s.read({signal:t});if(a.type!==Wt.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 yd({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:Wt.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 wd(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 bk="/webrtc",Ek="/p2p-circuit",bd="/webrtc-signaling/0.0.1",xk=30*1e3,xd=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,ge(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(bd,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(bd),this._started=!1}createListener(e){return new Ed(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[en]=!0;filter(e){return e.filter(O9.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Ki(this.init.rtcConfiguration),o=new ks(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await mw({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??xk),o=new Ki(this.init.rtcConfiguration),s=new ks(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await yw({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 gw(r){let e=r.toString().split(bk+"/");if(e.length!==2)throw new g("webrtc protocol was not present in multiaddr",or.ERR_INVALID_MULTIADDR);if(!e[0].includes(Ek))throw new g("p2p-circuit protocol was not present in multiaddr",or.ERR_INVALID_MULTIADDR);let t=Q(e[0]),o=Q("/"+e[1]).getPeerId();if(o==null)throw new g("destination peer id was missing",or.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new g("invalid multiaddr",or.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ye(o)}}var Gb=ke(f3(),1);var Vb=ke(f3(),1);var h3=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e));function Kb(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:DN(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 Pp("","no fingerprint on local certificate");return n}var IN=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function DN(r){return r.match(IN)?.groups?.fingerprint}function TN(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Od(r){let t=r.stringTuples().filter(n=>n[0]===qb).map(n=>n[1])[0];if(t===void 0||t==="")throw pd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function p3(r){let e=h3.decode(r);return Vb.decode(e)}function kN(r){let e=p3(Od(r)),t=m3(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 Pp(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function m3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw sw(r)}}function CN(r,e){let{host:t,port:n}=r.toOptions(),o=TN(r),[s]=kN(r);return`v=0
|
|
21
|
+
`)}`:`${t} :`}};g6=ho;W.Constructed=g6;ho.NAME="CONSTRUCTED";var Wl=class extends Pt{fromBER(e,t,n){return t}toBER(e){return Kr}};Wl.override="EndOfContentValueBlock";var y6,Gl=class extends xt{constructor(e={}){super(e,Wl),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};y6=Gl;W.EndOfContent=y6;Gl.NAME=_a;var w6,po=class extends xt{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}`}};w6=po;W.Null=w6;po.NAME="NULL";var zl=class extends Cn(Pt){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=ye.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=ye.BufferSourceConverter.toUint8Array(e);return kn(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,l0.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};zl.NAME="BooleanValueBlock";var E6,Yl=class extends xt{constructor(e={}){super(e,zl),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}`}};E6=Yl;W.Boolean=E6;Yl.NAME="BOOLEAN";var Ql=class extends Cn(nn){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=nn.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===_a){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(i!==f6)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?nn.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};Ql.NAME="OctetStringValueBlock";var b6,Dn=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},Ql),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=Ru(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?ho.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${ye.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 ye.BufferSourceConverter.concat(e)}};b6=Dn;W.OctetString=b6;Dn.NAME=f6;var Xl=class extends Cn(nn){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=nn.prototype.fromBER.call(this,e,t,n),o===-1)return o;for(let a of this.value){let c=a.constructor.NAME;if(c===_a){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=ye.BufferSourceConverter.toUint8Array(e);if(!kn(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=Ru(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 nn.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return Kr;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}}};Xl.NAME="BitStringValueBlock";var x6,ai=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},Xl),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 ho.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)}`}}};x6=ai;W.BitString=x6;ai.NAME=h6;var v6;function jR(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 f=d;f>=0;f--,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=Ml(new Uint8Array([l%10]),s);break;default:s[i-u]=l%10}}return t[0]>0&&(s=Ml(t,s)),s}function d6(r){if(r>=Ra.length)for(let e=Ra.length;e<=r;e++){let t=new Uint8Array([0]),n=Ra[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=Ml(t,n)),Ra.push(n)}return Ra[r]}function ZR(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 Aa=class extends Cn(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=l0.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(c6(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=ZR(d6(n),t),i="-";break;default:t=jR(t,d6(n))}n++,o>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(i+=u6.charAt(t[c]));return a===!1&&(i+=u6.charAt(0)),i}};v6=Aa;Aa.NAME="IntegerValueBlock";Object.defineProperty(v6.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var R6,at=class r extends xt{constructor(e={}){super(e,Aa),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Fl(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Fl();let t=BigInt(e),n=new Sa,o=t.toString(16).replace(/^-/,""),s=new Uint8Array(ye.Convert.FromHex(o));if(t<0){let a=new Uint8Array(s.length+(s[0]&128?1:0));a[0]|=128;let l=BigInt(`0x${ye.Convert.ToHex(a)}`)+t,d=ye.BufferSourceConverter.toUint8Array(ye.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()}`}};R6=at;W.Integer=R6;at.NAME="INTEGER";var S6,jl=class extends at{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};S6=jl;W.Enumerated=S6;jl.NAME="ENUMERATED";var Ia=class extends Cn(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=ye.BufferSourceConverter.toUint8Array(e);if(!kn(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=os(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Fl();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=fo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Kr;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=ye.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}}};Ia.NAME="sidBlock";var Zl=class extends Pt{constructor({value:e=ci,...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.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,Kr;t.push(o)}return u0(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 Ia;if(o>Number.MAX_SAFE_INTEGER){Fl();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}};Zl.NAME="ObjectIdentifierValueBlock";var _6,Vr=class extends xt{constructor(e={}){super(e,Zl),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()}}};_6=Vr;W.ObjectIdentifier=_6;Vr.NAME="OBJECT IDENTIFIER";var Da=class extends Cn(In){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let o=ye.BufferSourceConverter.toUint8Array(e);if(!kn(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=os(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=fo(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",Kr;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=ye.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};Da.NAME="relativeSidBlock";var Jl=class extends Pt{constructor({value:e=ci,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let o=t;for(;n>0;){let s=new Da;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,Kr;n.push(s)}return u0(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 Da;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}};Jl.NAME="RelativeObjectIdentifierValueBlock";var A6,eu=class extends xt{constructor(e={}){super(e,Jl),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()}}};A6=eu;W.RelativeObjectIdentifier=A6;eu.NAME="RelativeObjectIdentifier";var I6,pt=class extends ho{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};I6=pt;W.Sequence=I6;pt.NAME="SEQUENCE";var D6,tu=class extends ho{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};D6=tu;W.Set=D6;tu.NAME="SET";var ru=class extends Cn(Pt){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=ci}toJSON(){return{...super.toJSON(),value:this.value}}};ru.NAME="StringValueBlock";var nu=class extends ru{};nu.NAME="SimpleStringValueBlock";var Mt=class extends $l{constructor({...e}={}){super(e,nu)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,ye.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}};Mt.NAME="SIMPLE STRING";var ou=class extends Mt{fromBuffer(e){this.valueBlock.valueHexView=ye.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=ye.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=ye.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(ye.Convert.FromUtf8String(e)),this.valueBlock.value=e}};ou.NAME="Utf8StringValueBlock";var T6,Tn=class extends ou{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};T6=Tn;W.Utf8String=T6;Tn.NAME="UTF8String";var su=class extends Mt{fromBuffer(e){this.valueBlock.value=ye.Convert.ToUtf16String(e),this.valueBlock.valueHexView=ye.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(ye.Convert.FromUtf16String(e))}};su.NAME="BmpStringValueBlock";var k6,iu=class extends su{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};k6=iu;W.BmpString=k6;iu.NAME="BMPString";var au=class extends Mt{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=fo(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}};au.NAME="UniversalStringValueBlock";var C6,cu=class extends au{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};C6=cu;W.UniversalString=C6;cu.NAME="UniversalString";var N6,lu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};N6=lu;W.NumericString=N6;lu.NAME="NumericString";var P6,uu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};P6=uu;W.PrintableString=P6;uu.NAME="PrintableString";var O6,du=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};O6=du;W.TeletexString=O6;du.NAME="TeletexString";var L6,fu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};L6=fu;W.VideotexString=L6;fu.NAME="VideotexString";var B6,hu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};B6=hu;W.IA5String=B6;hu.NAME="IA5String";var U6,pu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};U6=pu;W.GraphicString=U6;pu.NAME="GraphicString";var M6,Ta=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};M6=Ta;W.VisibleString=M6;Ta.NAME="VisibleString";var F6,mu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};F6=mu;W.GeneralString=F6;mu.NAME="GeneralString";var V6,gu=class extends Mt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};V6=gu;W.CharacterString=V6;gu.NAME="CharacterString";var K6,ka=class extends Ta{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,ye.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]=Wt(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Wt(this.month,2),t[2]=Wt(this.day,2),t[3]=Wt(this.hour,2),t[4]=Wt(this.minute,2),t[5]=Wt(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}}};K6=ka;W.UTCTime=K6;ka.NAME="UTCTime";var $6,yu=class extends ka{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,f=n.indexOf("+"),g="";if(f===-1&&(f=n.indexOf("-"),u=-1),f!==-1){if(g=n.substring(f+1),n=n.substring(0,f),g.length!==2&&g.length!==4)throw new Error("Wrong input string for conversion");let h=parseInt(g.substring(0,2),10);if(isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");if(a=u*h,g.length===4){if(h=parseInt(g.substring(2,4),10),isNaN(h.valueOf()))throw new Error("Wrong input string for conversion");c=u*h}}}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(Wt(this.year,4)),t.push(Wt(this.month,2)),t.push(Wt(this.day,2)),t.push(Wt(this.hour,2)),t.push(Wt(this.minute,2)),t.push(Wt(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Wt(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};$6=yu;W.GeneralizedTime=$6;yu.NAME="GeneralizedTime";var H6,wu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};H6=wu;W.DATE=H6;wu.NAME="DATE";var q6,Eu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};q6=Eu;W.TimeOfDay=q6;Eu.NAME="TimeOfDay";var W6,bu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};W6=bu;W.DateTime=W6;bu.NAME="DateTime";var G6,xu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};G6=xu;W.Duration=G6;xu.NAME="Duration";var z6,vu=class extends Tn{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};z6=vu;W.TIME=z6;vu.NAME="TIME";function eS(r){let{result:e}=li(r),t=e.valueBlock.value;return{n:P(on(t[1].toBigInt()),"base64url"),e:P(on(t[2].toBigInt()),"base64url"),d:P(on(t[3].toBigInt()),"base64url"),p:P(on(t[4].toBigInt()),"base64url"),q:P(on(t[5].toBigInt()),"base64url"),dp:P(on(t[6].toBigInt()),"base64url"),dq:P(on(t[7].toBigInt()),"base64url"),qi:P(on(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function tS(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 m("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new pt({value:[new at({value:0}),at.fromBigInt(sn(B(r.n,"base64url"))),at.fromBigInt(sn(B(r.e,"base64url"))),at.fromBigInt(sn(B(r.d,"base64url"))),at.fromBigInt(sn(B(r.p,"base64url"))),at.fromBigInt(sn(B(r.q,"base64url"))),at.fromBigInt(sn(B(r.dp,"base64url"))),at.fromBigInt(sn(B(r.dq,"base64url"))),at.fromBigInt(sn(B(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function rS(r){let{result:e}=li(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:P(on(t[0].toBigInt()),"base64url"),e:P(on(t[1].toBigInt()),"base64url")}}function nS(r){if(r.n==null||r.e==null)throw new m("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new pt({value:[new pt({value:[new Vr({value:"1.2.840.113549.1.1.1"}),new po]}),new ai({valueHex:new pt({value:[at.fromBigInt(sn(B(r.n,"base64url"))),at.fromBigInt(sn(B(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function on(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 sn(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 oS=16,f0=32,h0=1e4;async function sS(r,e){let t=qe.get(),o=new pt({value:[new at({value:0}),new pt({value:[new Vr({value:"1.2.840.113549.1.1.1"}),new po]}),new Dn({valueHex:r.marshal()})]}).toBER(),s=new Uint8Array(o,0,o.byteLength),i=qt(oS),a=await a0(ao,e,i,{c:h0,dkLen:f0}),c=qt(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 pt({value:[new Dn({valueHex:i}),new at({value:h0}),new at({value:f0}),new pt({value:[new Vr({value:"1.2.840.113549.2.11"}),new po]})]}),f=new pt({value:[new Vr({value:"1.2.840.113549.1.5.13"}),new pt({value:[new pt({value:[new Vr({value:"1.2.840.113549.1.5.12"}),u]}),new pt({value:[new Vr({value:"2.16.840.1.101.3.4.1.42"}),new Dn({valueHex:c})]})]})]}),h=new pt({value:[f,new Dn({valueHex:d})]}).toBER(),p=new Uint8Array(h,0,h.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...P(p,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
|
|
22
|
+
`)}async function p0(r,e){let t=qe.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let o=B(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=li(o),{iv:i,salt:a,iterations:c,keySize:l,cipherText:d}=iS(s),u=await a0(ao,e,a,{c,dkLen:l}),f=await t.subtle.importKey("raw",u,"AES-CBC",!1,["decrypt"]),g=Ca(await t.subtle.decrypt({name:"AES-CBC",iv:i},f,d)),{result:h}=li(g);n=Y6(h)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let o=B(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:s}=li(o);n=Y6(s)}else throw new m("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return m0(n)}function iS(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new m("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 m("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let s=n.valueBlock.value[1],i=Ca(s.valueBlock.value[0].getValue()),a=h0,c=f0;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 m("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 m("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let u=Ca(l.valueBlock.value[1].getValue());return{cipherText:Ca(r.valueBlock.value[1].getValue()),salt:i,iterations:a,keySize:c,iv:u}}function Y6(r){return Ca(r.valueBlock.value[2].getValue())}function Ca(r){return new Uint8Array(r,0,r.byteLength)}async function Q6(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 Z6(e);return{privateKey:t[0],publicKey:t[1]}}async function g0(r){let t=[await qe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await aS(r)],n=await Z6({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function X6(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 j6(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 Z6(r){if(r.privateKey==null||r.publicKey==null)throw new m("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 aS(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 Su(r){if(r.kty!=="RSA")throw new m("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new m("invalid key modulus","ERR_INVALID_KEY_MODULUS");return B(r.n,"base64url").length*8}var is=8192,ss=class{_key;constructor(e){this._key=e}verify(e,t){return j6(this._key,t,e)}marshal(){return mo.jwkToPkix(this._key)}get bytes(){return Mr.encode({Type:Fe.RSA,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}hash(){let e=De.digest(this.bytes);return Er(e)?e.then(({bytes:t})=>t):e.bytes}},go=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return qt(16)}sign(e){return X6(this._key,e)}get public(){if(this._publicKey==null)throw new m("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new ss(this._publicKey)}marshal(){return mo.jwkToPkcs1(this._key)}get bytes(){return Fr.encode({Type:Fe.RSA,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}hash(){let e=De.digest(this.bytes);return Er(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return mo.exportToPem(this,e);if(t==="libp2p-key")return ni(this.bytes,e);throw new m(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function m0(r){let e=mo.pkcs1ToJwk(r);if(Su(e)>is)throw new m("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await g0(e);return new go(t.privateKey,t.publicKey)}function lS(r){let e=mo.pkixToJwk(r);if(Su(e)>is)throw new m("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new ss(e)}async function uS(r){if(Su(r)>is)throw new m("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await g0(r);return new go(e.privateKey,e.publicKey)}async function dS(r){if(r>is)throw new m("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Q6(r);return new go(e.privateKey,e.publicKey)}var v0={};pe(v0,{Secp256k1PrivateKey:()=>ls,Secp256k1PublicKey:()=>cs,generateKeyPair:()=>SS,unmarshalSecp256k1PrivateKey:()=>vS,unmarshalSecp256k1PublicKey:()=>RS});var fS=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]),yo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),wo=new Uint32Array(64),w0=class extends oo{constructor(){super(64,32,8,!1),this.A=yo[0]|0,this.B=yo[1]|0,this.C=yo[2]|0,this.D=yo[3]|0,this.E=yo[4]|0,this.F=yo[5]|0,this.G=yo[6]|0,this.H=yo[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)wo[u]=e.getUint32(t,!1);for(let u=16;u<64;u++){let f=wo[u-15],g=wo[u-2],h=Or(f,7)^Or(f,18)^f>>>3,p=Or(g,17)^Or(g,19)^g>>>10;wo[u]=p+wo[u-7]+h+wo[u-16]|0}let{A:n,B:o,C:s,D:i,E:a,F:c,G:l,H:d}=this;for(let u=0;u<64;u++){let f=Or(a,6)^Or(a,11)^Or(a,25),g=d+f+Rl(a,c,l)+fS[u]+wo[u]|0,p=(Or(n,2)^Or(n,13)^Or(n,22))+Sl(n,o,s)|0;d=l,l=c,c=a,a=i+g|0,i=s,s=o,o=n,n=g+p|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(){wo.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Eo=Js(()=>new w0);function hS(r){let e=Ea(r);br(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:pS,hexToBytes:mS}=Il,as={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=as;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:pS(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=as,t=typeof r=="string"?mS(r):r;ei(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}=as._parseInt(t.subarray(2)),{d:i,l:a}=as._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}`}},Nn=BigInt(0),vr=BigInt(1),RV=BigInt(2),J6=BigInt(3),SV=BigInt(4);function gS(r){let e=hS(r),{Fp:t}=e,n=e.toBytes||((h,p,y)=>{let w=p.toAffine();return vn(Uint8Array.from([4]),t.toBytes(w.x),t.toBytes(w.y))}),o=e.fromBytes||(h=>{let p=h.subarray(1),y=t.fromBytes(p.subarray(0,t.BYTES)),w=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:y,y:w}});function s(h){let{a:p,b:y}=e,w=t.sqr(h),b=t.mul(w,h);return t.add(t.add(b,t.mul(h,p)),y)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function i(h){return typeof h=="bigint"&&Nn<h&&h<e.n}function a(h){if(!i(h))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(h){let{allowedPrivateKeyLengths:p,nByteLength:y,wrapPrivateKey:w,n:b}=e;if(p&&typeof h!="bigint"){if(co(h)&&(h=En(h)),typeof h!="string"||!p.includes(h.length))throw new Error("Invalid key");h=h.padStart(y*2,"0")}let E;try{E=typeof h=="bigint"?h:bn(Ue("private key",h,y))}catch{throw new Error(`private key must be ${y} bytes, hex or bigint, not ${typeof h}`)}return w&&(E=_e(E,b)),a(E),E}let l=new Map;function d(h){if(!(h instanceof u))throw new Error("ProjectivePoint expected")}class u{constructor(p,y,w){if(this.px=p,this.py=y,this.pz=w,p==null||!t.isValid(p))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(p){let{x:y,y:w}=p||{};if(!p||!t.isValid(y)||!t.isValid(w))throw new Error("invalid affine point");if(p 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(p){let y=t.invertBatch(p.map(w=>w.pz));return p.map((w,b)=>w.toAffine(y[b])).map(u.fromAffine)}static fromHex(p){let y=u.fromAffine(o(Ue("pointHex",p)));return y.assertValidity(),y}static fromPrivateKey(p){return u.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,l.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y}=this.toAffine();if(!t.isValid(p)||!t.isValid(y))throw new Error("bad point: x or y not FE");let w=t.sqr(y),b=s(p);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:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){d(p);let{px:y,py:w,pz:b}=this,{px:E,py:S,pz:_}=p,A=t.eql(t.mul(y,_),t.mul(E,b)),D=t.eql(t.mul(w,_),t.mul(S,b));return A&&D}negate(){return new u(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b:y}=e,w=t.mul(y,J6),{px:b,py:E,pz:S}=this,_=t.ZERO,A=t.ZERO,D=t.ZERO,R=t.mul(b,b),k=t.mul(E,E),O=t.mul(S,S),N=t.mul(b,E);return N=t.add(N,N),D=t.mul(b,S),D=t.add(D,D),_=t.mul(p,D),A=t.mul(w,O),A=t.add(_,A),_=t.sub(k,A),A=t.add(k,A),A=t.mul(_,A),_=t.mul(N,_),D=t.mul(w,D),O=t.mul(p,O),N=t.sub(R,O),N=t.mul(p,N),N=t.add(N,D),D=t.add(R,R),R=t.add(D,R),R=t.add(R,O),R=t.mul(R,N),A=t.add(A,R),O=t.mul(E,S),O=t.add(O,O),R=t.mul(O,N),_=t.sub(_,R),D=t.mul(O,k),D=t.add(D,D),D=t.add(D,D),new u(_,A,D)}add(p){d(p);let{px:y,py:w,pz:b}=this,{px:E,py:S,pz:_}=p,A=t.ZERO,D=t.ZERO,R=t.ZERO,k=e.a,O=t.mul(e.b,J6),N=t.mul(y,E),L=t.mul(w,S),F=t.mul(b,_),Y=t.add(y,w),I=t.add(E,S);Y=t.mul(Y,I),I=t.add(N,L),Y=t.sub(Y,I),I=t.add(y,b);let C=t.add(E,_);return I=t.mul(I,C),C=t.add(N,F),I=t.sub(I,C),C=t.add(w,b),A=t.add(S,_),C=t.mul(C,A),A=t.add(L,F),C=t.sub(C,A),R=t.mul(k,I),A=t.mul(O,F),R=t.add(A,R),A=t.sub(L,R),R=t.add(L,R),D=t.mul(A,R),L=t.add(N,N),L=t.add(L,N),F=t.mul(k,F),I=t.mul(O,I),L=t.add(L,F),F=t.sub(N,F),F=t.mul(k,F),I=t.add(I,F),N=t.mul(L,I),D=t.add(D,N),N=t.mul(C,I),A=t.mul(Y,A),A=t.sub(A,N),N=t.mul(Y,L),R=t.mul(C,R),R=t.add(R,N),new u(A,D,R)}subtract(p){return this.add(p.negate())}is0(){return this.equals(u.ZERO)}wNAF(p){return g.wNAFCached(this,l,p,y=>{let w=t.invertBatch(y.map(b=>b.pz));return y.map((b,E)=>b.toAffine(w[E])).map(u.fromAffine)})}multiplyUnsafe(p){let y=u.ZERO;if(p===Nn)return y;if(a(p),p===vr)return this;let{endo:w}=e;if(!w)return g.unsafeLadder(this,p);let{k1neg:b,k1:E,k2neg:S,k2:_}=w.splitScalar(p),A=y,D=y,R=this;for(;E>Nn||_>Nn;)E&vr&&(A=A.add(R)),_&vr&&(D=D.add(R)),R=R.double(),E>>=vr,_>>=vr;return b&&(A=A.negate()),S&&(D=D.negate()),D=new u(t.mul(D.px,w.beta),D.py,D.pz),A.add(D)}multiply(p){a(p);let y=p,w,b,{endo:E}=e;if(E){let{k1neg:S,k1:_,k2neg:A,k2:D}=E.splitScalar(y),{p:R,f:k}=this.wNAF(_),{p:O,f:N}=this.wNAF(D);R=g.constTimeNegate(S,R),O=g.constTimeNegate(A,O),O=new u(t.mul(O.px,E.beta),O.py,O.pz),w=R.add(O),b=k.add(N)}else{let{p:S,f:_}=this.wNAF(y);w=S,b=_}return u.normalizeZ([w,b])[0]}multiplyAndAddUnsafe(p,y,w){let b=u.BASE,E=(_,A)=>A===Nn||A===vr||!_.equals(b)?_.multiplyUnsafe(A):_.multiply(A),S=E(this,y).add(E(p,w));return S.is0()?void 0:S}toAffine(p){let{px:y,py:w,pz:b}=this,E=this.is0();p==null&&(p=E?t.ONE:t.inv(b));let S=t.mul(y,p),_=t.mul(w,p),A=t.mul(b,p);if(E)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:S,y:_}}isTorsionFree(){let{h:p,isTorsionFree:y}=e;if(p===vr)return!0;if(y)return y(u,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:y}=e;return p===vr?this:y?y(u,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(u,this,p)}toHex(p=!0){return En(this.toRawBytes(p))}}u.BASE=new u(e.Gx,e.Gy,t.ONE),u.ZERO=new u(t.ZERO,t.ONE,t.ZERO);let f=e.nBitLength,g=kl(u,e.endo?Math.ceil(f/2):f);return{CURVE:e,ProjectivePoint:u,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:i}}function yS(r){let e=Ea(r);return br(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function em(r){let e=yS(r),{Fp:t,n}=e,o=t.BYTES+1,s=2*t.BYTES+1;function i(I){return Nn<I&&I<t.ORDER}function a(I){return _e(I,n)}function c(I){return Dl(I,n)}let{ProjectivePoint:l,normPrivateKeyToScalar:d,weierstrassEquation:u,isWithinCurveOrder:f}=gS({...e,toBytes(I,C,$){let T=C.toAffine(),v=t.toBytes(T.x),U=vn;return $?U(Uint8Array.from([C.hasEvenY()?2:3]),v):U(Uint8Array.from([4]),v,t.toBytes(T.y))},fromBytes(I){let C=I.length,$=I[0],T=I.subarray(1);if(C===o&&($===2||$===3)){let v=bn(T);if(!i(v))throw new Error("Point is not on curve");let U=u(v),V;try{V=t.sqrt(U)}catch(se){let de=se instanceof Error?": "+se.message:"";throw new Error("Point is not on curve"+de)}let H=(V&vr)===vr;return($&1)===1!==H&&(V=t.neg(V)),{x:v,y:V}}else if(C===s&&$===4){let v=t.fromBytes(T.subarray(0,t.BYTES)),U=t.fromBytes(T.subarray(t.BYTES,2*t.BYTES));return{x:v,y:U}}else throw new Error(`Point of length ${C} was invalid. Expected ${o} compressed bytes or ${s} uncompressed bytes`)}}),g=I=>En(lo(I,e.nByteLength));function h(I){let C=n>>vr;return I>C}function p(I){return h(I)?a(-I):I}let y=(I,C,$)=>bn(I.slice(C,$));class w{constructor(C,$,T){this.r=C,this.s=$,this.recovery=T,this.assertValidity()}static fromCompact(C){let $=e.nByteLength;return C=Ue("compactSignature",C,$*2),new w(y(C,0,$),y(C,$,2*$))}static fromDER(C){let{r:$,s:T}=as.toSig(Ue("DER",C));return new w($,T)}assertValidity(){if(!f(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!f(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(C){return new w(this.r,this.s,C)}recoverPublicKey(C){let{r:$,s:T,recovery:v}=this,U=D(Ue("msgHash",C));if(v==null||![0,1,2,3].includes(v))throw new Error("recovery id invalid");let V=v===2||v===3?$+e.n:$;if(V>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let H=v&1?"03":"02",oe=l.fromHex(H+g(V)),se=c(V),de=a(-U*se),ie=a(T*se),ce=l.BASE.multiplyAndAddUnsafe(oe,de,ie);if(!ce)throw new Error("point at infinify");return ce.assertValidity(),ce}hasHighS(){return h(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return ts(this.toDERHex())}toDERHex(){return as.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return ts(this.toCompactHex())}toCompactHex(){return g(this.r)+g(this.s)}}let b={isValidPrivateKey(I){try{return d(I),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let I=jh(e.n);return O8(e.randomBytes(I),e.n)},precompute(I=8,C=l.BASE){return C._setWindowSize(I),C.multiply(BigInt(3)),C}};function E(I,C=!0){return l.fromPrivateKey(I).toRawBytes(C)}function S(I){let C=co(I),$=typeof I=="string",T=(C||$)&&I.length;return C?T===o||T===s:$?T===2*o||T===2*s:I instanceof l}function _(I,C,$=!0){if(S(I))throw new Error("first arg must be private key");if(!S(C))throw new Error("second arg must be public key");return l.fromHex(C).multiply(d(I)).toRawBytes($)}let A=e.bits2int||function(I){let C=bn(I),$=I.length*8-e.nBitLength;return $>0?C>>BigInt($):C},D=e.bits2int_modN||function(I){return a(A(I))},R=wa(e.nBitLength);function k(I){if(typeof I!="bigint")throw new Error("bigint expected");if(!(Nn<=I&&I<R))throw new Error(`bigint expected < 2^${e.nBitLength}`);return lo(I,e.nByteLength)}function O(I,C,$=N){if(["recovered","canonical"].some(ke=>ke in $))throw new Error("sign() legacy options not supported");let{hash:T,randomBytes:v}=e,{lowS:U,prehash:V,extraEntropy:H}=$;U==null&&(U=!0),I=Ue("msgHash",I),V&&(I=Ue("prehashed msgHash",T(I)));let oe=D(I),se=d(C),de=[k(se),k(oe)];if(H!=null&&H!==!1){let ke=H===!0?v(t.BYTES):H;de.push(Ue("extraEntropy",ke))}let ie=vn(...de),ce=oe;function Le(ke){let gt=A(ke);if(!f(gt))return;let yt=c(gt),ct=l.BASE.multiply(gt).toAffine(),Tt=a(ct.x);if(Tt===Nn)return;let hn=a(yt*a(ce+Tt*se));if(hn===Nn)return;let Fo=(ct.x===Tt?0:2)|Number(ct.y&vr),ea=hn;return U&&h(hn)&&(ea=p(hn),Fo^=1),new w(Tt,ea,Fo)}return{seed:ie,k2sig:Le}}let N={lowS:e.lowS,prehash:!1},L={lowS:e.lowS,prehash:!1};function F(I,C,$=N){let{seed:T,k2sig:v}=O(I,C,$),U=e;return Gh(U.hash.outputLen,U.nByteLength,U.hmac)(T,v)}l.BASE._setWindowSize(8);function Y(I,C,$,T=L){let v=I;if(C=Ue("msgHash",C),$=Ue("publicKey",$),"strict"in T)throw new Error("options.strict was renamed to lowS");let{lowS:U,prehash:V}=T,H,oe;try{if(typeof v=="string"||co(v))try{H=w.fromDER(v)}catch(ct){if(!(ct instanceof as.Err))throw ct;H=w.fromCompact(v)}else if(typeof v=="object"&&typeof v.r=="bigint"&&typeof v.s=="bigint"){let{r:ct,s:Tt}=v;H=new w(ct,Tt)}else throw new Error("PARSE");oe=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&&(C=e.hash(C));let{r:se,s:de}=H,ie=D(C),ce=c(de),Le=a(ie*ce),ke=a(se*ce),gt=l.BASE.multiplyAndAddUnsafe(oe,Le,ke)?.toAffine();return gt?a(gt.x)===se:!1}return{CURVE:e,getPublicKey:E,getSharedSecret:_,sign:F,verify:Y,ProjectivePoint:l,Signature:w,utils:b}}function wS(r){return{hash:r,hmac:(e,...t)=>uo(r,e,vl(...t)),randomBytes:es}}function tm(r,e){let t=n=>em({...r,...wS(n)});return Object.freeze({...t(e),create:t})}var om=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),rm=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),ES=BigInt(1),E0=BigInt(2),nm=(r,e)=>(r+e/E0)/e;function bS(r){let e=om,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=Me(d,t,e)*d%e,f=Me(u,t,e)*d%e,g=Me(f,E0,e)*l%e,h=Me(g,o,e)*g%e,p=Me(h,s,e)*h%e,y=Me(p,a,e)*p%e,w=Me(y,c,e)*y%e,b=Me(w,a,e)*p%e,E=Me(b,t,e)*d%e,S=Me(E,i,e)*h%e,_=Me(S,n,e)*l%e,A=Me(_,E0,e);if(!b0.eql(b0.sqr(A),r))throw new Error("Cannot find square root");return A}var b0=Tl(om,void 0,void 0,{sqrt:bS}),$r=tm({a:BigInt(0),b:BigInt(7),Fp:b0,n:rm,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=rm,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-ES*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),s=t,i=BigInt("0x100000000000000000000000000000000"),a=nm(s*r,e),c=nm(-n*r,e),l=_e(r-a*t-c*o,e),d=_e(-a*n-c*s,e),u=l>i,f=d>i;if(u&&(l=e-l),f&&(d=e-d),l>i||d>i)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:u,k1:l,k2neg:f,k2:d}}}},Eo),PV=BigInt(0);var OV=$r.ProjectivePoint;function sm(){return $r.utils.randomPrivateKey()}function im(r,e){let t=De.digest(e instanceof Uint8Array?e:e.subarray());if(Er(t))return t.then(({digest:n})=>$r.sign(n,r).toDERRawBytes()).catch(n=>{throw new m(String(n),"ERR_INVALID_INPUT")});try{return $r.sign(t.digest,r).toDERRawBytes()}catch(n){throw new m(String(n),"ERR_INVALID_INPUT")}}function am(r,e,t){let n=De.digest(t instanceof Uint8Array?t:t.subarray());if(Er(n))return n.then(({digest:o})=>$r.verify(e,o,r)).catch(o=>{throw new m(String(o),"ERR_INVALID_INPUT")});try{return $r.verify(e,n.digest,r)}catch(o){throw new m(String(o),"ERR_INVALID_INPUT")}}function cm(r){return $r.ProjectivePoint.fromHex(r).toRawBytes(!0)}function lm(r){try{$r.getPublicKey(r,!0)}catch(e){throw new m(String(e),"ERR_INVALID_PRIVATE_KEY")}}function x0(r){try{$r.ProjectivePoint.fromHex(r)}catch(e){throw new m(String(e),"ERR_INVALID_PUBLIC_KEY")}}function um(r){try{return $r.getPublicKey(r,!0)}catch(e){throw new m(String(e),"ERR_INVALID_PRIVATE_KEY")}}var cs=class{_key;constructor(e){x0(e),this._key=e}verify(e,t){return am(this._key,t,e)}marshal(){return cm(this._key)}get bytes(){return Mr.encode({Type:Fe.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}async hash(){let e=De.digest(this.bytes),t;return Er(e)?{bytes:t}=await e:t=e.bytes,t}},ls=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??um(e),lm(this._key),x0(this._publicKey)}sign(e){return im(this._key,e)}get public(){return new cs(this._publicKey)}marshal(){return this._key}get bytes(){return Fr.encode({Type:Fe.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return J(this.bytes,e.bytes)}hash(){let e=De.digest(this.bytes);return Er(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return P(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return ni(this.bytes,e);throw new m(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vS(r){return new ls(r)}function RS(r){return new cs(r)}async function SS(){let r=sm();return new ls(r)}var Pn={rsa:y0,ed25519:s0,secp256k1:v0};function R0(r){let e=Object.keys(Pn).join(" / ");return new m(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function S0(r){if(r=r.toLowerCase(),r==="rsa"||r==="ed25519"||r==="secp256k1")return Pn[r];throw R0(r)}async function Na(r,e){return S0(r).generateKeyPair(e??2048)}async function _S(r,e,t){if(r.toLowerCase()!=="ed25519")throw new m("Seed key derivation is unimplemented for RSA or secp256k1","ERR_UNSUPPORTED_KEY_DERIVATION_TYPE");return o0(e)}function Hr(r){let e=Mr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Fe.RSA:return Pn.rsa.unmarshalRsaPublicKey(t);case Fe.Ed25519:return Pn.ed25519.unmarshalEd25519PublicKey(t);case Fe.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw R0(e.Type??"unknown")}}function _0(r,e){return e=(e??"rsa").toLowerCase(),S0(e),r.bytes}async function Rr(r){let e=Fr.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case Fe.RSA:return Pn.rsa.unmarshalRsaPrivateKey(t);case Fe.Ed25519:return Pn.ed25519.unmarshalEd25519PrivateKey(t);case Fe.Secp256k1:return Pn.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw R0(e.Type??"RSA")}}function A0(r,e){return e=(e??"rsa").toLowerCase(),S0(e),r.bytes}async function ui(r,e){try{let t=await J8(r,e);return await Rr(t)}catch{}if(!r.includes("BEGIN"))throw new m("Encrypted key was not a libp2p-key or a PEM file","ERR_INVALID_IMPORT_FORMAT");return p0(r,e)}var s_=Ye(Wo(),1);var On="/",dm=new TextEncoder().encode(On),Au=dm[0],Pe=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=B(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]!==Au)throw new Error("Invalid key")}toString(e="utf8"){return P(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(On))}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=dm),this._buf[0]!==Au){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Au,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Au;)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(On).slice(1)}type(){return AS(this.baseNamespace())}name(){return IS(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(On)||(e+=On),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(On):new r(e.slice(0,-1).join(On))}child(e){return this.toString()===On?e:e.toString()===On?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(),...DS(e.map(t=>t.namespaces()))])}};function AS(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function IS(r){let e=r.split(":");return e[e.length-1]}function DS(r){return[].concat(...r)}var i_=Ye(Iu(),1);var fm="ERR_IPNS_EXPIRED_RECORD",Du="ERR_UNRECOGNIZED_VALIDITY";var Ln="ERR_SIGNATURE_VERIFICATION";var D0="ERR_UNDEFINED_PARAMETER",hm="ERR_INVALID_RECORD_DATA",pm="ERR_INVALID_VALUE",mm="ERR_INVALID_EMBEDDED_KEY";var gm="ERR_RECORD_TOO_LARGE";var Gt;(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())})(Gt||(Gt={}));var TS=["string","number","bigint","symbol"],kS=["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 wm(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(TS.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(CS(r))return"Buffer";let t=NS(r);return t||"Object"}function CS(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function NS(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(kS.includes(e))return e}var x=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}};x.uint=new x(0,"uint",!0);x.negint=new x(1,"negint",!0);x.bytes=new x(2,"bytes",!0);x.string=new x(3,"string",!0);x.array=new x(4,"array",!1);x.map=new x(5,"map",!1);x.tag=new x(6,"tag",!1);x.float=new x(7,"float",!0);x.false=new x(7,"false",!0);x.true=new x(7,"true",!0);x.null=new x(7,"null",!0);x.undefined=new x(7,"undefined",!0);x.break=new x(7,"break",!0);var M=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 di=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",PS=new TextDecoder,OS=new TextEncoder;function Tu(r){return di&&globalThis.Buffer.isBuffer(r)}function Pa(r){return r instanceof Uint8Array?Tu(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var vm=di?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):bm(r,e,t):(r,e,t)=>t-e>64?PS.decode(r.subarray(e,t)):bm(r,e,t),ku=di?r=>r.length>64?globalThis.Buffer.from(r):Em(r):r=>r.length>64?OS.encode(r):Em(r),an=r=>Uint8Array.from(r),fi=di?(r,e,t)=>Tu(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),Rm=di?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),Pa(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},Sm=di?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function _m(r,e){if(Tu(r)&&Tu(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 Em(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 bm(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 T0(n)}var xm=4096;function T0(r){let e=r.length;if(e<=xm)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=xm));return t}var LS=256,Oa=class{constructor(e=LS){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=Sm(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=fi(n,0,this.cursor)}else t=Rm(this.chunks,this.cursor);return e&&this.reset(),t}};var Q="CBOR decode error:",hi="CBOR encode error:",La=[];La[23]=1;La[24]=2;La[25]=3;La[26]=5;La[27]=9;function Bn(r,e,t){if(r.length-e<t)throw new Error(`${Q} not enough data for type`)}var mt=[24,256,65536,4294967296,BigInt("18446744073709551616")];function sr(r,e,t){Bn(r,e,1);let n=r[e];if(t.strict===!0&&n<mt[0])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function ir(r,e,t){Bn(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<mt[1])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function ar(r,e,t){Bn(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<mt[2])throw new Error(`${Q} integer encoded in more bytes than necessary (strict decode)`);return n}function cr(r,e,t){Bn(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<mt[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 Am(r,e,t,n){return new M(x.uint,sr(r,e+1,n),2)}function Im(r,e,t,n){return new M(x.uint,ir(r,e+1,n),3)}function Dm(r,e,t,n){return new M(x.uint,ar(r,e+1,n),5)}function Tm(r,e,t,n){return new M(x.uint,cr(r,e+1,n),9)}function Sr(r,e){return vt(r,0,e.value)}function vt(r,e,t){if(t<mt[0]){let n=Number(t);r.push([e|n])}else if(t<mt[1]){let n=Number(t);r.push([e|24,n])}else if(t<mt[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<mt[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<mt[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`)}}Sr.encodedSize=function(e){return vt.encodedSize(e.value)};vt.encodedSize=function(e){return e<mt[0]?1:e<mt[1]?2:e<mt[2]?3:e<mt[3]?5:9};Sr.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function km(r,e,t,n){return new M(x.negint,-1-sr(r,e+1,n),2)}function Cm(r,e,t,n){return new M(x.negint,-1-ir(r,e+1,n),3)}function Nm(r,e,t,n){return new M(x.negint,-1-ar(r,e+1,n),5)}var k0=BigInt(-1),Pm=BigInt(1);function Om(r,e,t,n){let o=cr(r,e+1,n);if(typeof o!="bigint"){let s=-1-o;if(s>=Number.MIN_SAFE_INTEGER)return new M(x.negint,s,9)}if(n.allowBigInt!==!0)throw new Error(`${Q} integers outside of the safe integer range are not supported`);return new M(x.negint,k0-BigInt(o),9)}function Cu(r,e){let t=e.value,n=typeof t=="bigint"?t*k0-Pm:t*-1-1;vt(r,e.type.majorEncoded,n)}Cu.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*k0-Pm:t*-1-1;return n<mt[0]?1:n<mt[1]?2:n<mt[2]?3:n<mt[3]?5:9};Cu.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function Ba(r,e,t,n){Bn(r,e,t+n);let o=fi(r,e+t,e+t+n);return new M(x.bytes,o,t+n)}function Lm(r,e,t,n){return Ba(r,e,1,t)}function Bm(r,e,t,n){return Ba(r,e,2,sr(r,e+1,n))}function Um(r,e,t,n){return Ba(r,e,3,ir(r,e+1,n))}function Mm(r,e,t,n){return Ba(r,e,5,ar(r,e+1,n))}function Fm(r,e,t,n){let o=cr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer bytes lengths not supported`);return Ba(r,e,9,o)}function Nu(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===x.string?ku(r.value):r.value),r.encodedBytes}function pi(r,e){let t=Nu(e);vt(r,e.type.majorEncoded,t.length),r.push(t)}pi.encodedSize=function(e){let t=Nu(e);return vt.encodedSize(t.length)+t.length};pi.compareTokens=function(e,t){return US(Nu(e),Nu(t))};function US(r,e){return r.length<e.length?-1:r.length>e.length?1:_m(r,e)}function Ua(r,e,t,n,o){let s=t+n;Bn(r,e,s);let i=new M(x.string,vm(r,e+t,e+s),s);return o.retainStringBytes===!0&&(i.byteValue=fi(r,e+t,e+s)),i}function Vm(r,e,t,n){return Ua(r,e,1,t,n)}function Km(r,e,t,n){return Ua(r,e,2,sr(r,e+1,n),n)}function $m(r,e,t,n){return Ua(r,e,3,ir(r,e+1,n),n)}function Hm(r,e,t,n){return Ua(r,e,5,ar(r,e+1,n),n)}function qm(r,e,t,n){let o=cr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer string lengths not supported`);return Ua(r,e,9,o,n)}var Wm=pi;function mi(r,e,t,n){return new M(x.array,n,t)}function Gm(r,e,t,n){return mi(r,e,1,t)}function zm(r,e,t,n){return mi(r,e,2,sr(r,e+1,n))}function Ym(r,e,t,n){return mi(r,e,3,ir(r,e+1,n))}function Qm(r,e,t,n){return mi(r,e,5,ar(r,e+1,n))}function Xm(r,e,t,n){let o=cr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer array lengths not supported`);return mi(r,e,9,o)}function jm(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return mi(r,e,1,1/0)}function Pu(r,e){vt(r,x.array.majorEncoded,e.value)}Pu.compareTokens=Sr.compareTokens;Pu.encodedSize=function(e){return vt.encodedSize(e.value)};function gi(r,e,t,n){return new M(x.map,n,t)}function Zm(r,e,t,n){return gi(r,e,1,t)}function Jm(r,e,t,n){return gi(r,e,2,sr(r,e+1,n))}function e5(r,e,t,n){return gi(r,e,3,ir(r,e+1,n))}function t5(r,e,t,n){return gi(r,e,5,ar(r,e+1,n))}function r5(r,e,t,n){let o=cr(r,e+1,n);if(typeof o=="bigint")throw new Error(`${Q} 64-bit integer map lengths not supported`);return gi(r,e,9,o)}function n5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return gi(r,e,1,1/0)}function Ou(r,e){vt(r,x.map.majorEncoded,e.value)}Ou.compareTokens=Sr.compareTokens;Ou.encodedSize=function(e){return vt.encodedSize(e.value)};function o5(r,e,t,n){return new M(x.tag,t,1)}function s5(r,e,t,n){return new M(x.tag,sr(r,e+1,n),2)}function i5(r,e,t,n){return new M(x.tag,ir(r,e+1,n),3)}function a5(r,e,t,n){return new M(x.tag,ar(r,e+1,n),5)}function c5(r,e,t,n){return new M(x.tag,cr(r,e+1,n),9)}function Lu(r,e){vt(r,x.tag.majorEncoded,e.value)}Lu.compareTokens=Sr.compareTokens;Lu.encodedSize=function(e){return vt.encodedSize(e.value)};var HS=20,qS=21,WS=22,GS=23;function l5(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${Q} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new M(x.null,null,1):new M(x.undefined,void 0,1)}function u5(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${Q} indefinite length items not allowed`);return new M(x.break,void 0,1)}function C0(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 M(x.float,r,e)}function d5(r,e,t,n){return C0(N0(r,e+1),3,n)}function f5(r,e,t,n){return C0(P0(r,e+1),5,n)}function h5(r,e,t,n){return C0(y5(r,e+1),9,n)}function Bu(r,e,t){let n=e.value;if(n===!1)r.push([x.float.majorEncoded|HS]);else if(n===!0)r.push([x.float.majorEncoded|qS]);else if(n===null)r.push([x.float.majorEncoded|WS]);else if(n===void 0)r.push([x.float.majorEncoded|GS]);else{let o,s=!1;(!t||t.float64!==!0)&&(m5(n),o=N0(qr,1),n===o||Number.isNaN(n)?(qr[0]=249,r.push(qr.slice(0,3)),s=!0):(g5(n),o=P0(qr,1),n===o&&(qr[0]=250,r.push(qr.slice(0,5)),s=!0))),s||(zS(n),o=y5(qr,1),qr[0]=251,r.push(qr.slice(0,9)))}}Bu.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){m5(n);let o=N0(qr,1);if(n===o||Number.isNaN(n))return 3;if(g5(n),o=P0(qr,1),n===o)return 5}return 9};var p5=new ArrayBuffer(9),_r=new DataView(p5,1),qr=new Uint8Array(p5,0);function m5(r){if(r===1/0)_r.setUint16(0,31744,!1);else if(r===-1/0)_r.setUint16(0,64512,!1);else if(Number.isNaN(r))_r.setUint16(0,32256,!1);else{_r.setFloat32(0,r);let e=_r.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)_r.setUint16(0,31744,!1);else if(t===0)_r.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let o=t-127;o<-24?_r.setUint16(0,0):o<-14?_r.setUint16(0,(e&2147483648)>>16|1<<24+o,!1):_r.setUint16(0,(e&2147483648)>>16|o+15<<10|n>>13,!1)}}}function N0(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 g5(r){_r.setFloat32(0,r,!1)}function P0(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 zS(r){_r.setFloat64(0,r,!1)}function y5(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)}Bu.compareTokens=Sr.compareTokens;function ve(r,e,t){throw new Error(`${Q} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function Uu(r){return()=>{throw new Error(`${Q} ${r}`)}}var K=[];for(let r=0;r<=23;r++)K[r]=ve;K[24]=Am;K[25]=Im;K[26]=Dm;K[27]=Tm;K[28]=ve;K[29]=ve;K[30]=ve;K[31]=ve;for(let r=32;r<=55;r++)K[r]=ve;K[56]=km;K[57]=Cm;K[58]=Nm;K[59]=Om;K[60]=ve;K[61]=ve;K[62]=ve;K[63]=ve;for(let r=64;r<=87;r++)K[r]=Lm;K[88]=Bm;K[89]=Um;K[90]=Mm;K[91]=Fm;K[92]=ve;K[93]=ve;K[94]=ve;K[95]=Uu("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)K[r]=Vm;K[120]=Km;K[121]=$m;K[122]=Hm;K[123]=qm;K[124]=ve;K[125]=ve;K[126]=ve;K[127]=Uu("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)K[r]=Gm;K[152]=zm;K[153]=Ym;K[154]=Qm;K[155]=Xm;K[156]=ve;K[157]=ve;K[158]=ve;K[159]=jm;for(let r=160;r<=183;r++)K[r]=Zm;K[184]=Jm;K[185]=e5;K[186]=t5;K[187]=r5;K[188]=ve;K[189]=ve;K[190]=ve;K[191]=n5;for(let r=192;r<=215;r++)K[r]=o5;K[216]=s5;K[217]=i5;K[218]=a5;K[219]=c5;K[220]=ve;K[221]=ve;K[222]=ve;K[223]=ve;for(let r=224;r<=243;r++)K[r]=Uu("simple values are not supported");K[244]=ve;K[245]=ve;K[246]=ve;K[247]=l5;K[248]=Uu("simple values are not supported");K[249]=d5;K[250]=f5;K[251]=h5;K[252]=ve;K[253]=ve;K[254]=ve;K[255]=u5;var Wr=[];for(let r=0;r<24;r++)Wr[r]=new M(x.uint,r,1);for(let r=-1;r>=-24;r--)Wr[31-r]=new M(x.negint,r,1);Wr[64]=new M(x.bytes,new Uint8Array(0),1);Wr[96]=new M(x.string,"",1);Wr[128]=new M(x.array,0,1);Wr[160]=new M(x.map,0,1);Wr[244]=new M(x.false,!1,1);Wr[245]=new M(x.true,!0,1);Wr[246]=new M(x.null,null,1);function w5(r){switch(r.type){case x.false:return an([244]);case x.true:return an([245]);case x.null:return an([246]);case x.bytes:return r.value.length?void 0:an([64]);case x.string:return r.value===""?an([96]):void 0;case x.array:return r.value===0?an([128]):void 0;case x.map:return r.value===0?an([160]):void 0;case x.uint:return r.value<24?an([Number(r.value)]):void 0;case x.negint:if(r.value>=-24)return an([31-Number(r.value)])}}var QS={float64:!1,mapSorter:ZS,quickEncodeToken:w5};function XS(){let r=[];return r[x.uint.major]=Sr,r[x.negint.major]=Cu,r[x.bytes.major]=pi,r[x.string.major]=Wm,r[x.array.major]=Pu,r[x.map.major]=Ou,r[x.tag.major]=Lu,r[x.float.major]=Bu,r}var E5=XS(),O0=new Oa,Fu=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(`${hi} object contains circular references`);return new r(t,e)}},bo={null:new M(x.null,null),undefined:new M(x.undefined,void 0),true:new M(x.true,!0),false:new M(x.false,!1),emptyArray:new M(x.array,0),emptyMap:new M(x.map,0)},xo={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new M(x.float,r):r>=0?new M(x.uint,r):new M(x.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new M(x.uint,r):new M(x.negint,r)},Uint8Array(r,e,t,n){return new M(x.bytes,r)},string(r,e,t,n){return new M(x.string,r)},boolean(r,e,t,n){return r?bo.true:bo.false},null(r,e,t,n){return bo.null},undefined(r,e,t,n){return bo.undefined},ArrayBuffer(r,e,t,n){return new M(x.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new M(x.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[bo.emptyArray,new M(x.break)]:bo.emptyArray;n=Fu.createCheck(n,r);let o=[],s=0;for(let i of r)o[s++]=Mu(i,t,n);return t.addBreakTokens?[new M(x.array,r.length),o,new M(x.break)]:[new M(x.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?[bo.emptyMap,new M(x.break)]:bo.emptyMap;n=Fu.createCheck(n,r);let a=[],c=0;for(let l of s)a[c++]=[Mu(l,t,n),Mu(o?r.get(l):r[l],t,n)];return jS(a,t),t.addBreakTokens?[new M(x.map,i),a,new M(x.break)]:[new M(x.map,i),a]}};xo.Map=xo.Object;xo.Buffer=xo.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))xo[`${r}Array`]=xo.DataView;function Mu(r,e={},t){let n=wm(r),o=e&&e.typeEncoders&&e.typeEncoders[n]||xo[n];if(typeof o=="function"){let i=o(r,n,e,t);if(i!=null)return i}let s=xo[n];if(!s)throw new Error(`${hi} unsupported type: ${n}`);return s(r,n,e,t)}function jS(r,e){e.mapSorter&&r.sort(e.mapSorter)}function ZS(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=E5[o].compareTokens(t,n);return s===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),s}function b5(r,e,t,n){if(Array.isArray(e))for(let o of e)b5(r,o,t,n);else t[e.type.major](r,e,n)}function x5(r,e,t){let n=Mu(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 Oa(i);if(s(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return Pa(a.chunks[0])}}return O0.reset(),b5(O0,n,e,t),O0.toBytes(!0)}function yi(r,e){return e=Object.assign({},QS,e),x5(r,E5,e)}var JS={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},Vu=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=Wr[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}},Ma=Symbol.for("DONE"),Ku=Symbol.for("BREAK");function e_(r,e,t){let n=[];for(let o=0;o<r.value;o++){let s=wi(e,t);if(s===Ku){if(r.value===1/0)break;throw new Error(`${Q} got unexpected break to lengthed array`)}if(s===Ma)throw new Error(`${Q} found array but not enough entries (got ${o}, expected ${r.value})`);n[o]=s}return n}function t_(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=wi(e,t);if(a===Ku){if(r.value===1/0)break;throw new Error(`${Q} got unexpected break to lengthed map`)}if(a===Ma)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=wi(e,t);if(c===Ma)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 wi(r,e){if(r.done())return Ma;let t=r.next();if(t.type===x.break)return Ku;if(t.type.terminal)return t.value;if(t.type===x.array)return e_(t,r,e);if(t.type===x.map)return t_(t,r,e);if(t.type===x.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=wi(r,e);return e.tags[t.value](n)}throw new Error(`${Q} tag not supported (${t.value})`)}throw new Error("unsupported")}function L0(r,e){if(!(r instanceof Uint8Array))throw new Error(`${Q} data to decode must be a Uint8Array`);e=Object.assign({},JS,e);let t=e.tokenizer||new Vu(r,e),n=wi(t,e);if(n===Ma)throw new Error(`${Q} did not find any content to decode`);if(n===Ku)throw new Error(`${Q} got unexpected break`);return[n,r.subarray(t.pos())]}function Ar(r,e){let[t,n]=L0(r,e);if(n.length>0)throw new Error(`${Q} too many terminals, data makes no sense`);return t}var lr=Ye(Wo(),1);var v5=nr("ipns:utils"),R5=B("/ipns/"),r_=114,S5=async(r,e)=>{if(e==null||r==null){let n=new Error("one or more of the provided parameters are not defined");throw v5.error(n),(0,lr.default)(n,D0)}let t;if(e.pubKey!=null){try{t=Hr(e.pubKey)}catch(o){throw v5.error(o),o}if(!(await ht(e.pubKey)).equals(r))throw(0,lr.default)(new Error("Embedded public key did not match PeerID"),mm)}else r.publicKey!=null&&(t=Hr(r.publicKey));if(t!=null)return t;throw(0,lr.default)(new Error("no public key is available"),D0)};var _5=r=>{let e=B("ipns-signature:");return xe([e,r])},Fa=r=>"signatureV1"in r?Gt.encode({value:B(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:B(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Gt.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data});function cn(r){let e=Gt.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,lr.default)(new Error("missing data or signatureV2"),Ln);let t=I5(e.data),n=n_(t.Value),o=P(t.Validity);if(e.value!=null&&e.signatureV1!=null)return o_(e),{value:n,validityType:Gt.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:Gt.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 B0=r=>xe([R5,r.toBytes()]),A5=r=>je(r.slice(R5.length));var I5=r=>{let e=Ar(r);if(e.ValidityType===0)e.ValidityType=Gt.ValidityType.EOL;else throw(0,lr.default)(new Error("Unknown validity type"),Du);return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e},n_=r=>{if(r!=null){if(Ns(r))return`/ipns/${r.toCID().toString(jn)}`;if(r instanceof Uint8Array){let n=P(r);n.startsWith("/")&&(r=n)}let e=r.toString().trim();if(e.startsWith("/")&&e.length>1)return e;let t=ae.asCID(r);if(t!=null)return t.code===r_?`/ipns/${t.toString(jn)}`:`/ipfs/${t.toV1().toString()}`;try{return r instanceof Uint8Array?`/ipfs/${ae.decode(r).toV1().toString()}`:`/ipfs/${ae.parse(e).toV1().toString()}`}catch{}}throw(0,lr.default)(new Error("Value must be a valid content path starting with /"),pm)},o_=r=>{if(r.data==null)throw(0,lr.default)(new Error("Record data is missing"),hm);let e=I5(r.data);if(!J(e.Value,r.value??new Uint8Array(0)))throw(0,lr.default)(new Error('Field "value" did not match between protobuf and CBOR'),Ln);if(!J(e.Validity,r.validity??new Uint8Array(0)))throw(0,lr.default)(new Error('Field "validity" did not match between protobuf and CBOR'),Ln);if(e.ValidityType!==r.validityType)throw(0,lr.default)(new Error('Field "validityType" did not match between protobuf and CBOR'),Ln);if(e.Sequence!==r.sequence)throw(0,lr.default)(new Error('Field "sequence" did not match between protobuf and CBOR'),Ln);if(e.TTL!==r.ttl)throw(0,lr.default)(new Error('Field "ttl" did not match between protobuf and CBOR'),Ln)};var v$=nr("ipns"),R$=pr.code,S$=60*60*1e9,a_="/ipns/",_$=a_.length;var Va=Ye(Wo(),1),D5=Ye(Iu(),1);var Hu=nr("ipns:validator"),c_=1024*10,l_=async(r,e)=>{let t=cn(e),n;try{let o=_5(t.data);n=await r.verify(o,t.signatureV2)}catch{n=!1}if(!n)throw Hu.error("record signature verification failed"),(0,Va.default)(new Error("record signature verification failed"),Ln);if(t.validityType===Gt.ValidityType.EOL){if(D5.default.fromString(t.validity).toDate().getTime()<Date.now())throw Hu.error("record has expired"),(0,Va.default)(new Error("record has expired"),fm)}else if(t.validityType!=null)throw Hu.error("unrecognized validity type"),(0,Va.default)(new Error("unrecognized validity type"),Du);Hu("ipns record for %s is valid",t.value)};async function qu(r,e){if(e.byteLength>c_)throw(0,Va.default)(new Error("record too large"),gm);let t=A5(r),n=cn(e),o=await S5(t,n);await l_(o,e)}async function*Ka(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))}var M0=Ye(k5(),1);var vo=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},F0=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},C5=r=>globalThis.DOMException===void 0?new F0(r):new DOMException(r),N5=r=>{let e=r.reason===void 0?C5("This operation was aborted."):r.reason;return e instanceof Error?e:C5(e)};function Gr(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:f}=e;f.aborted&&d(N5(f)),f.addEventListener("abort",()=>{d(N5(f))})}if(t===Number.POSITIVE_INFINITY){r.then(l,d);return}let u=new vo;i=s.setTimeout.call(void 0,()=>{if(n){try{l(n())}catch(f){d(f)}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(f){d(f)}})()}).finally(()=>{c.clear()});return c.clear=()=>{s.clearTimeout.call(void 0,i),i=void 0},c}function V0(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 Ha=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=V0(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 zt=class extends M0.default{#e;#t;#r=0;#i;#c;#p=0;#o;#l;#n;#m;#s=0;#u;#a;#g;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:Ha,...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.#i=e.intervalCap,this.#c=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.#a=e.autoStart===!1}get#E(){return this.#t||this.#r<this.#i}get#b(){return this.#s<this.#u}#x(){this.#s--,this.#d(),this.emit("next")}#v(){this.#w(),this.#y(),this.#l=void 0}get#R(){let e=Date.now();if(this.#o===void 0){let t=this.#p-e;if(t<0)this.#r=this.#e?this.#s:0;else return this.#l===void 0&&(this.#l=setTimeout(()=>{this.#v()},t)),!0}return!1}#d(){if(this.#n.size===0)return this.#o&&clearInterval(this.#o),this.#o=void 0,this.emit("empty"),this.#s===0&&this.emit("idle"),!1;if(!this.#a){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.#o!==void 0||(this.#o=setInterval(()=>{this.#w()},this.#c),this.#p=Date.now()+this.#c)}#w(){this.#r===0&&this.#s===0&&this.#o&&(clearInterval(this.#o),this.#o=void 0),this.#r=this.#e?this.#s:0,this.#f()}#f(){for(;this.#d(););}get concurrency(){return this.#u}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.#u=e,this.#f()}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.#s++,this.#r++;try{t.signal?.throwIfAborted();let s=e({signal:t.signal});t.timeout&&(s=Gr(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 vo&&!t.throwOnTimeout){n();return}o(s),this.emit("error",s)}finally{this.#x()}},t),this.emit("add"),this.#d()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#a?(this.#a=!1,this.#f(),this):this}pause(){this.#a=!0}clear(){this.#n=new this.#m}async onEmpty(){this.#n.size!==0&&await this.#h("empty")}async onSizeLessThan(e){this.#n.size<e||await this.#h("next",()=>this.#n.size<e)}async onIdle(){this.#s===0&&this.#n.size===0||await this.#h("idle")}async#h(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.#s}get isPaused(){return this.#a}};function f_(r){return r[Symbol.asyncIterator]!=null}function h_(r){if(f_(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var ds=h_;var K0=B("/ipns/");function P5(r){return J(r.subarray(0,K0.byteLength),K0)}var O5=r=>je(r.slice(K0.length)),Gu=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*bt(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async put(e,t,n){if(!P5(e))return;let o=O5(e),s=cn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!P5(e))throw new m("Not found","ERR_NOT_FOUND");let n=O5(e);try{let o=await this.client.getIPNS(n,t);return Fa(o)}catch(o){throw o.code==="ERR_BAD_RESPONSE"?new m("Not found","ERR_NOT_FOUND"):o}}},zu=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await ds(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new m("Not found","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){}};var Yt=nr("delegated-routing-v1-http-api-client"),L5={concurrentRequests:4,timeout:3e4},Yu=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,le(1/0,this.shutDownController.signal),this.httpQueue=new zt({concurrency:t.concurrentRequests??L5.concurrentRequests}),this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??L5.timeout,this.contentRouting=new Gu(this),this.peerRouting=new zu(this)}get[Jr](){return this.contentRouting}get[en](){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=ot([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=j(),s=j();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/providers/${e.toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new m("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new m("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new m("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Providers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ka(El(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Yt.error("getProviders errored:",i)}finally{n.clear(),s.resolve(),Yt("getProviders finished: %c",e)}}async*getPeers(e,t={}){Yt("getPeers starts: %c",e);let n=ot([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=j(),s=j();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let i=`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`,c=await fetch(i,{headers:{Accept:"application/x-ndjson"},signal:n});if(c.status===404)throw new m("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new m("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new m("Routing response had no body","ERR_BAD_RESPONSE");if(c.headers.get("Content-Type")==="application/json"){let d=await c.json();for(let u of d.Peers){let f=this.#e(u);f!=null&&(yield f)}}else for await(let d of Ka(El(c.body))){let u=this.#e(d);u!=null&&(yield u)}}catch(i){Yt.error("getPeers errored:",i)}finally{n.clear(),s.resolve(),Yt("getPeers finished: %c",e)}}async getIPNS(e,t={}){Yt("getIPNS starts: %c",e);let n=ot([this.shutDownController.signal,t.signal,AbortSignal.timeout(this.timeout)]),o=j(),s=j();this.httpQueue.add(async()=>(o.resolve(),s.promise));let i=`${this.clientUrl}routing/v1/ipns/${e.toCID().toString()}`;try{await o.promise;let c=await fetch(i,{headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:n});if(Yt("getIPNS GET %s %d",i,c.status),c.status===404)throw new m("No matching records found.","ERR_NOT_FOUND");if(c.status===422)throw new m("Request does not conform to schema or semantic constraints.","ERR_INVALID_REQUEST");if(c.body==null)throw new m("GET ipns response had no body","ERR_BAD_RESPONSE");let l=await c.arrayBuffer(),d=new Uint8Array(l,0,l.byteLength);return t.validate!==!1&&await qu(B0(e),d),cn(d)}catch(a){throw Yt.error("getIPNS GET %s error:",i,a),a}finally{n.clear(),s.resolve(),Yt("getIPNS finished: %c",e)}}async putIPNS(e,t,n={}){Yt("putIPNS starts: %c",e);let o=ot([this.shutDownController.signal,n.signal,AbortSignal.timeout(this.timeout)]),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 c=Fa(t),d=await fetch(a,{method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:c,signal:o});if(Yt("putIPNS PUT %s %d",a,d.status),d.status!==200)throw new m("PUT ipns response had status other than 200","ERR_BAD_RESPONSE")}catch(c){throw Yt.error("putIPNS PUT %s error:",a,c.stack),c}finally{o.clear(),i.resolve(),Yt("putIPNS finished: %c",e)}}#e(e){let t=[],n=e.Addrs?.map(X)??[];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 B5(r,e={}){return new Yu(new URL(r),e)}var $0=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 H0(r){return new $0(r)}var fs={};pe(fs,{abortedError:()=>w_,closeFailedError:()=>m_,deleteFailedError:()=>W0,getFailedError:()=>g_,hasFailedError:()=>y_,notFoundError:()=>Ro,openFailedError:()=>p_,putFailedError:()=>q0});var Un=Ye(Wo(),1);function p_(r){return r=r??new Error("Open failed"),(0,Un.default)(r,"ERR_OPEN_FAILED")}function m_(r){return r=r??new Error("Close failed"),(0,Un.default)(r,"ERR_CLOSE_FAILED")}function q0(r){return r=r??new Error("Put failed"),(0,Un.default)(r,"ERR_PUT_FAILED")}function g_(r){return r=r??new Error("Get failed"),(0,Un.default)(r,"ERR_GET_FAILED")}function W0(r){return r=r??new Error("Delete failed"),(0,Un.default)(r,"ERR_DELETE_FAILED")}function y_(r){return r=r??new Error("Has failed"),(0,Un.default)(r,"ERR_HAS_FAILED")}function Ro(r){return r=r??new Error("Not Found"),(0,Un.default)(r,"ERR_NOT_FOUND")}function w_(r){return r=r??new Error("Aborted"),(0,Un.default)(r,"ERR_ABORTED")}var ln=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 qa=class extends ln{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 Ro();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:ae.createV1(Uc,Nr(lt.decode(e))),block:t}}};var E_=nr("blockstore:core:tiered"),Wa=class extends ln{stores;constructor(e){super(),this.stores=e.slice()}async put(e,t,n){try{return await Promise.all(this.stores.map(async o=>{await o.put(e,t,n)})),e}catch(o){throw q0(o)}}async get(e,t){for(let n of this.stores)try{let o=await n.get(e,t);if(o!=null)return o}catch(o){E_.error(o)}throw Ro()}async has(e,t){for(let n of this.stores)if(await n.has(e,t))return!0;return!1}async delete(e,t){try{await Promise.all(this.stores.map(async n=>{await n.delete(e,t)}))}catch(n){throw W0(n)}}async*putMany(e,t={}){let n,o=this.stores.map(s=>{let i=st({objectMode:!0});return Kt(s.putMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s.cid}}finally{o.forEach(s=>s.end())}}async*deleteMany(e,t={}){let n,o=this.stores.map(s=>{let i=st({objectMode:!0});return Kt(s.deleteMany(i,t)).catch(a=>{n=a}),i});try{for await(let s of e){if(n!=null)throw n;o.forEach(i=>i.push(s)),yield s}}finally{o.forEach(s=>s.end())}}async*getAll(e){let t=new Set;yield*Nt(ft(...this.stores.map(n=>n.getAll(e))),n=>{let o=n.cid.toString();return t.has(o)?!1:(t.add(o),!0)})}};var MH={...fs};var U5=Ye(Wo(),1);function Qu(r){return r=r??new Error("Not Found"),(0,U5.default)(r,"ERR_NOT_FOUND")}var M5="SHARDING";function x_(r){return r[Symbol.asyncIterator]!=null}function v_(r,e){return x_(r)?async function*(){yield*(await to(r)).sort(e)}():function*(){yield*to(r).sort(e)}()}var Xu=v_;var Mn=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 Kt(this.putMany(e,n)),e=[],await Kt(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=Nt(n,s=>s.key.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Nt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Xu(o,s),n)),e.offset!=null){let o=0,s=e.offset;n=Nt(n,()=>o++>=s)}return e.limit!=null&&(n=Jn(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let o=e.prefix;n=Nt(n,s=>s.toString().startsWith(o))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((o,s)=>Nt(o,s),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((o,s)=>Xu(o,s),n)),e.offset!=null){let o=e.offset,s=0;n=Nt(n,()=>s++>=o)}return e.limit!=null&&(n=Jn(n,e.limit)),n}};var hs=class extends Mn{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 Qu();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 hq=new Pe(M5);var _q=nr("datastore:core:tiered");function ju(r){let e=[zr.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var G0=60;function Zu(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:zr[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:zr[e.type],TTL:e.TTL??e.ttl??G0,data:e.data instanceof Uint8Array?P(e.data):e.data}))}}var __=4;function z0(r,e={}){let t=new zt({concurrency:e.queryConcurrency??__});return async(n,o={})=>{let s=new URLSearchParams;s.set("name",n),ju(o.types).forEach(a=>{s.append("type",a.toString())}),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=Zu(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 V5(){return[z0("https://cloudflare-dns.com/dns-query"),z0("https://dns.google/resolve")]}var $5=Ye(Y0(),1);var Q0=class{lru;constructor(e){this.lru=(0,$5.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 Zu({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:zr[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??G0)*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 H5(r){return new Q0(r)}var A_=1e3,Ju=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=H5(e.cacheSize??A_),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["."]=V5())}async query(e,t={}){let n=ju(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 zr;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(zr||(zr={}));function e1(r={}){return new Ju(r)}var z5="/pin/",q5="/pinned-block/",X0=jn,W5=1;function G5(r){return r.version===0&&(r=r.toV1()),new Pe(`${z5}${r.toString(X0)}`)}var t1=class{datastore;blockstore;dagWalkers;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.dagWalkers=n}async*add(e,t={}){let n=G5(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 mn({concurrency:W5});for await(let a of this.#e(e,s,{...t,depth:o}))await this.#t(a,c=>c.pinnedBy.find(l=>J(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,yi(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(`${q5}${X0.encode(e.multihash.bytes)}`),s={pinCount:0,pinnedBy:[]};try{s=Ar(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,yi(s),n),n.onProgress?.(new me("helia:pin:add",e))}}async*rm(e,t={}){let n=G5(e),o=await this.datastore.get(n,t),s=Ar(o);await this.datastore.delete(n,t);let i=new mn({concurrency:W5});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=>J(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:z5+(e.cid!=null?`${e.cid.toString(jn)}`:"")},e)){let o=ae.parse(t.toString().substring(5),jn),s=Ar(n);yield{cid:o,...s}}}async isPinned(e,t={}){let n=new Pe(`${q5}${X0.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}};var r1=class{log;routers;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[]}async start(){await Yn(...this.routers)}async stop(){await Qn(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new m("No content routers available","ERR_NO_ROUTERS_AVAILABLE");for await(let n of ft(...Ei(this.routers,"findProviders").map(o=>o.findProviders(e,t))))n!=null&&(yield n)}async provide(e,t={}){if(this.routers.length===0)throw new m("No content routers available","ERR_NO_ROUTERS_AVAILABLE");await Promise.all(Ei(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async put(e,t,n){await Promise.all(Ei(this.routers,"put").map(async o=>{await o.put(e,t,n)}))}async get(e,t){return Promise.any(Ei(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new m("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");let n=this,o=ft(...Ei(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 m("Could not find peer in routing","ERR_NOT_FOUND")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new m("No peer routers available","ERR_NO_ROUTERS_AVAILABLE");for await(let n of ft(...Ei(this.routers,"getClosestPeers").map(o=>o.getClosestPeers(e,t))))n!=null&&(yield n)}};function Ei(r,e){return r.filter(t=>t[e]!=null)}var So={},bi=r=>{r.addEventListener("message",e=>{bi.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{bi.dispatchEvent("message",r,e)})};bi.addEventListener=(r,e)=>{So[r]==null&&(So[r]=[]),So[r].push(e)};bi.removeEventListener=(r,e)=>{So[r]!=null&&(So[r]=So[r].filter(t=>t===e))};bi.dispatchEvent=function(r,e,t){So[r]!=null&&So[r].forEach(n=>n(e,t))};var j0=bi;var Z0="lock:worker:request-read",J0="lock:worker:release-read",e2="lock:master:grant-read",t2="lock:worker:request-write",r2="lock:worker:release-write",n2="lock:master:grant-write";var Y5=(r=21)=>Math.random().toString().substring(2);var Q5=(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)})}}}))},X5=(r,e,t,n)=>async()=>{let o=Y5();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)})},I_={singleProcess:!1},j5=r=>{if(r=Object.assign({},I_,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return j0.addEventListener("message",Q5(t,"requestReadLock",Z0,J0,e2)),j0.addEventListener("message",Q5(t,"requestWriteLock",t2,r2,n2)),t}return{isWorker:!0,readLock:t=>X5(t,Z0,e2,J0),writeLock:t=>X5(t,t2,n2,r2)}};var ps={},_o;async function o2(r,e){let t,n=new Promise(o=>{t=o});return r.add(async()=>Gr((async()=>{await new Promise(o=>{t(()=>{o()})})})(),{milliseconds:e.timeout})),n}var D_=(r,e)=>{if(_o.isWorker===!0)return{readLock:_o.readLock(r,e),writeLock:_o.writeLock(r,e)};let t=new zt({concurrency:1}),n;return{async readLock(){if(n!=null)return o2(n,e);n=new zt({concurrency:e.concurrency,autoStart:!1});let o=n,s=o2(n,e);return t.add(async()=>{o.start(),await o.onIdle().then(()=>{n===o&&(n=null)})}),s},async writeLock(){return n=null,o2(t,e)}}},T_={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function za(r){let e=Object.assign({},T_,r);return _o==null&&(_o=j5(e),_o.isWorker!==!0&&(_o.addEventListener("requestReadLock",t=>{ps[t.data.name]!=null&&ps[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),_o.addEventListener("requestWriteLock",async t=>{ps[t.data.name]!=null&&ps[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),ps[e.name]==null&&(ps[e.name]=D_(e.name,e)),ps[e.name]}var n1=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=za({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await Yn(this.child),this.started=!0}async stop(){await Qn(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){let o=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{o()}}async*putMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){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={}){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={}){let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}async createSession(e,t){let n=await this.lock.readLock();try{let o=await this.child.createSession(e,t);if(o==null)throw new m("Sessions not supported","ERR_UNSUPPORTED");return o}finally{n()}}};var J5=42;function k_(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=ae.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new M(x.tag,J5),new M(x.bytes,t)]}function C_(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function N_(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 Z5={float64:!0,typeEncoders:{Object:k_,undefined:C_,number:N_}},UW={...Z5,typeEncoders:{...Z5.typeEncoders}};function P_(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return ae.decode(r.subarray(1))}var s2={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};s2.tags[J5]=P_;var MW={...s2,tags:s2.tags.slice()};var e7=113;var t7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===x.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===x.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[x.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)}[x.negint.major](e,t){this[x.uint.major](e,t)}[x.bytes.major](e,t){throw new Error(`${hi} unsupported type: Uint8Array`)}[x.string.major](e,t){this.prefix(e);let n=ku(JSON.stringify(t.value));e.push(n.length>32?Pa(n):n)}[x.array.major](e,t){this.prefix(e),this.inRecursive.push({type:x.array,elements:0}),e.push([91])}[x.map.major](e,t){this.prefix(e),this.inRecursive.push({type:x.map,elements:0}),e.push([123])}[x.tag.major](e,t){}[x.float.major](e,t){if(t.type.name==="break"){let i=this.inRecursive.pop();if(i){if(i.type===x.array)e.push([93]);else if(i.type===x.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(`${hi} 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 ms=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 M(x.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 M(x.float,i,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(i)?new M(i>=0?x.uint:x.negint,i,this._pos-e):new M(i>=0?x.uint:x.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 M(x.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 M(x.string,T0(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 M(x.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new M(x.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new M(x.null,null,4);case 102:return this.expect([102,97,108,115,101]),new M(x.false,!1,5);case 116:return this.expect([116,114,117,101]),new M(x.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 M(x.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 M(x.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 M(x.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 M(x.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 o1(r,e){return e=Object.assign({tokenizer:new ms(r,e)},e),Ar(r,e)}var B_={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};B_.tags[42]=ae.parse;var n7=297;var tG=new TextDecoder;var rG=new TextEncoder;var M_=new TextDecoder;function i2(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 s1(r,e){let t;[t,e]=i2(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 o7(r,e){let t;return[t,e]=i2(r,e),[t&7,t>>3,e]}function F_(r){let e={},t=r.length,n=0;for(;n<t;){let o,s;if([o,s,n]=o7(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]=s1(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]=s1(r,n),e.Name=M_.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]=i2(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 s7(r){let e=r.length,t=0,n,o=!1,s;for(;t<e;){let a,c;if([a,c,t]=o7(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]=s1(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]=s1(r,t),n.push(F_(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 oG=new TextEncoder,sG=2**32,iG=2**31;var lG=new TextEncoder;function i7(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var a7=112;function c7(r){let e=i7(r),t=s7(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(o=>{let s={};try{s.Hash=ae.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 K_={codec:a7,*walk(r){yield*c7(r).Links.map(t=>t.Hash)}},$_={codec:Uc,*walk(){}},l7=42,H_={codec:e7,*walk(r){let e=[],t=[];t[l7]=n=>{if(n[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");let o=ae.decode(n.subarray(1));return e.push(o),o},Ar(r,{tags:t}),yield*e}},a2=class extends ms{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===x.map){let t=this._next();if(t.type===x.string&&t.value==="/"){let n=this._next();if(n.type===x.string){if(this._next().type!==x.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new M(x.tag,42,0)}if(n.type===x.map){let o=this._next();if(o.type===x.string&&o.value==="bytes"){let s=this._next();if(s.type===x.string){for(let a=0;a<2;a++)if(this._next().type!==x.break)throw new Error("Invalid encoded Bytes form");let i=ut.decode(`m${s.value}`);return new M(x.bytes,i,s.value.length)}this.tokenBuffer.push(s)}this.tokenBuffer.push(o)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},q_={codec:n7,*walk(r){let e=[],t=[];t[l7]=n=>{let o=ae.parse(n);return e.push(o),o},o1(r,{tags:t,tokenizer:new a2(r,{tags:t,allowIndefinite:!0,allowUndefined:!0,allowNaN:!0,allowInfinity:!0,allowBigInt:!0,strict:!1,rejectDuplicateMapKeys:!1})}),yield*e}},W_={codec:a4,*walk(){}};function u7(r=[]){let e={};return[K_,$_,H_,q_,W_,...r].forEach(t=>{e[t.codec]=t}),e}var c2=new Pe("/version"),d7=1;async function f7(r){if(!await r.has(c2)){await r.put(c2,B(`${d7}`));return}let e=await r.get(c2),t=P(e);if(parseInt(t,10)!==d7)throw new Error("Unknown datastore version, a datastore migration may be required")}function h7(r=[]){let e={};return[De,qf,pr,...r].forEach(t=>{e[t.code]=t}),e}var p7=0,i1=class extends ln{put(e){return e}get(e){if(e.code===p7)return e.multihash.digest;throw Ro()}has(e){return e.code===p7}delete(){}*getAll(){}};function G_(r){return r[Symbol.asyncIterator]!=null}function m7(r){return r?.then!=null}function z_(r,e){if(G_(r))return async function*(){for await(let a of r){let c=e(a);m7(c)&&await c,yield a}}();let t=zs(r),{value:n,done:o}=t.next();if(o===!0)return function*(){}();if(typeof e(n)?.then=="function")return async function*(){yield n;for await(let a of t){let c=e(a);m7(c)&&await c,yield a}}();let i=e;return function*(){yield n;for(let a of t)i(a),yield a}()}var Ya=z_;var a1=class r{child;hashers;started;log;logger;components;constructor(e,t={}){this.log=e.logger.forComponent(`helia:networked-storage${t.root==null?"":`:${t.root}`}`),this.logger=e.logger,this.components=e,this.child=new Wa([new i1,e.blockstore]),this.hashers=e.hashers??{},this.started=!1}isStarted(){return this.started}async start(){await Yn(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await Qn(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){return await this.child.has(e)?(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=Nt(e,async({cid:s})=>{let i=await this.child.has(s);return i&&t.onProgress?.(new me("blocks:put-many:duplicate",s)),!i}),o=Ya(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.onProgress?.(new me("blocks:get:providers:get",e));let n=await g7(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(Ya(e,async n=>{if(t.offline!==!0&&!await this.child.has(n)){t.onProgress?.(new me("blocks:get-many:providers:get",n));let o=await g7(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)}async createSession(e,t){let n=await Promise.all(this.components.blockBrokers.map(async o=>o.createSession==null?o:o.createSession(e,t)));return new r({blockstore:this.child,blockBrokers:n,hashers:this.hashers,logger:this.logger},{root:e})}};function Y_(r){return typeof r.retrieve=="function"}var Q_=(r,e)=>{if(e==null)throw new m(`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(!J(n.digest,r.multihash.digest))throw new m("Hash of downloaded block did not match multihash from passed CID","ERR_HASH_MISMATCH")}};async function g7(r,e,t,n){let o=Q_(r,t),s=new AbortController,i=ot([s.signal,n.signal]),a=[];for(let c of e)Y_(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{i.clear()}}var c1=class{blockstore;datastore;pins;logger;routing;dagWalkers;hashers;dns;log;constructor(e){this.logger=e.logger??ro(),this.log=this.logger.forComponent("helia"),this.hashers=h7(e.hashers),this.dagWalkers=u7(e.dagWalkers),this.dns=e.dns??e1();let t={blockstore:e.blockstore,datastore:e.datastore,hashers:this.hashers,dagWalkers:this.dagWalkers,logger:this.logger,blockBrokers:[],dns:this.dns,...e.components??{}};this.routing=t.routing=new r1(t,{routers:(e.routers??[]).flatMap(o=>{let s=[o];return o[Jr]!=null&&s.push(o[Jr]),o[en]!=null&&s.push(o[en]),s})});let n=new a1(t);this.pins=new t1(e.datastore,n,this.dagWalkers),this.blockstore=new n1(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(o=>o(t))}async start(){await f7(this.datastore),await Yn(this.blockstore,this.datastore,this.routing)}async stop(){await Qn(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 Kt(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 l1=class extends c1{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()}};function l2(){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 y7(){let r=l2(),e=l2();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var xi=!!globalThis.process?.env?.DUMP_SESSION_KEYS;var Fn=r=>new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4));function w7(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}var E7=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),X_=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!X_)throw new Error("Non little-endian hardware is not supported");function u1(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function d1(r){if(typeof r=="string")r=u1(r);else if(w7(r))r=r.slice();else throw new Error(`expected Uint8Array, got ${typeof r}`);return r}var j_=r=>Object.prototype.toString.call(r)==="[object Object]"&&r.constructor===Object;function b7(r,e){if(e!==void 0&&(typeof e!="object"||!j_(e)))throw new Error("options must be object or undefined");return Object.assign(r,e)}function gs(r,e){if(!w7(r))throw new Error("Uint8Array expected");if(typeof e=="number"&&r.length!==e)throw new Error(`Uint8Array length ${e} expected`)}function x7(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 u2=(r,e)=>(Object.assign(e,r),e);function d2(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 f1(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`wrong positive integer: ${r}`)}function f2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function Z_(r){return r!=null&&typeof r=="object"&&(r instanceof Uint8Array||r.constructor.name==="Uint8Array")}function vi(r,...e){if(!Z_(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 h2(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 v7(r,e){vi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Rt=(r,e)=>r[e++]&255|(r[e++]&255)<<8,p2=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=d1(e),gs(e,32);let t=Rt(e,0),n=Rt(e,2),o=Rt(e,4),s=Rt(e,6),i=Rt(e,8),a=Rt(e,10),c=Rt(e,12),l=Rt(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]=Rt(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],f=i[5],g=i[6],h=i[7],p=i[8],y=i[9],w=Rt(e,t+0),b=Rt(e,t+2),E=Rt(e,t+4),S=Rt(e,t+6),_=Rt(e,t+8),A=Rt(e,t+10),D=Rt(e,t+12),R=Rt(e,t+14),k=s[0]+(w&8191),O=s[1]+((w>>>13|b<<3)&8191),N=s[2]+((b>>>10|E<<6)&8191),L=s[3]+((E>>>7|S<<9)&8191),F=s[4]+((S>>>4|_<<12)&8191),Y=s[5]+(_>>>1&8191),I=s[6]+((_>>>14|A<<2)&8191),C=s[7]+((A>>>11|D<<5)&8191),$=s[8]+((D>>>8|R<<8)&8191),T=s[9]+(R>>>5|o),v=0,U=v+k*a+O*(5*y)+N*(5*p)+L*(5*h)+F*(5*g);v=U>>>13,U&=8191,U+=Y*(5*f)+I*(5*u)+C*(5*d)+$*(5*l)+T*(5*c),v+=U>>>13,U&=8191;let V=v+k*c+O*a+N*(5*y)+L*(5*p)+F*(5*h);v=V>>>13,V&=8191,V+=Y*(5*g)+I*(5*f)+C*(5*u)+$*(5*d)+T*(5*l),v+=V>>>13,V&=8191;let H=v+k*l+O*c+N*a+L*(5*y)+F*(5*p);v=H>>>13,H&=8191,H+=Y*(5*h)+I*(5*g)+C*(5*f)+$*(5*u)+T*(5*d),v+=H>>>13,H&=8191;let oe=v+k*d+O*l+N*c+L*a+F*(5*y);v=oe>>>13,oe&=8191,oe+=Y*(5*p)+I*(5*h)+C*(5*g)+$*(5*f)+T*(5*u),v+=oe>>>13,oe&=8191;let se=v+k*u+O*d+N*l+L*c+F*a;v=se>>>13,se&=8191,se+=Y*(5*y)+I*(5*p)+C*(5*h)+$*(5*g)+T*(5*f),v+=se>>>13,se&=8191;let de=v+k*f+O*u+N*d+L*l+F*c;v=de>>>13,de&=8191,de+=Y*a+I*(5*y)+C*(5*p)+$*(5*h)+T*(5*g),v+=de>>>13,de&=8191;let ie=v+k*g+O*f+N*u+L*d+F*l;v=ie>>>13,ie&=8191,ie+=Y*c+I*a+C*(5*y)+$*(5*p)+T*(5*h),v+=ie>>>13,ie&=8191;let ce=v+k*h+O*g+N*f+L*u+F*d;v=ce>>>13,ce&=8191,ce+=Y*l+I*c+C*a+$*(5*y)+T*(5*p),v+=ce>>>13,ce&=8191;let Le=v+k*p+O*h+N*g+L*f+F*u;v=Le>>>13,Le&=8191,Le+=Y*d+I*l+C*c+$*a+T*(5*y),v+=Le>>>13,Le&=8191;let ke=v+k*y+O*p+N*h+L*g+F*f;v=ke>>>13,ke&=8191,ke+=Y*u+I*d+C*l+$*c+T*a,v+=ke>>>13,ke&=8191,v=(v<<2)+v|0,v=v+U|0,U=v&8191,v=v>>>13,V+=v,s[0]=U,s[1]=V,s[2]=H,s[3]=oe,s[4]=se,s[5]=de,s[6]=ie,s[7]=ce,s[8]=Le,s[9]=ke}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){h2(this);let{buffer:t,blockLen:n}=this;e=d1(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){h2(this),v7(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 J_(r){let e=(n,o)=>r(o).update(d1(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var R7=J_(r=>new p2(r));var eA=u1("expand 16-byte k"),tA=u1("expand 32-byte k"),rA=Fn(eA),nA=Fn(tA);function z(r,e){return r<<e|r>>>32-e}function m2(r){return r.byteOffset%4===0}var h1=64,oA=16,_7=2**32-1,S7=new Uint32Array;function sA(r,e,t,n,o,s,i,a){let c=o.length,l=new Uint8Array(h1),d=Fn(l),u=m2(o)&&m2(s),f=u?Fn(o):S7,g=u?Fn(s):S7;for(let h=0;h<c;i++){if(r(e,t,n,d,i,a),i>=_7)throw new Error("arx: counter overflow");let p=Math.min(h1,c-h);if(u&&p===h1){let y=h/4;if(h%4!==0)throw new Error("arx: invalid block position");for(let w=0,b;w<oA;w++)b=y+w,g[b]=f[b]^d[w];h+=h1;continue}for(let y=0,w;y<p;y++)w=h+y,s[w]=o[w]^l[y];h+=p}}function g2(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:o,counterRight:s,rounds:i}=b7({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return f1(o),f1(i),f2(s),f2(t),(a,c,l,d,u=0)=>{vi(a),vi(c),vi(l);let f=l.length;if(d||(d=new Uint8Array(f)),vi(d),f1(u),u<0||u>=_7)throw new Error("arx: counter overflow");if(d.length<f)throw new Error(`arx: output (${d.length}) is shorter than data (${f})`);let g=[],h=a.length,p,y;if(h===32)p=a.slice(),g.push(p),y=nA;else if(h===16&&t)p=new Uint8Array(32),p.set(a),p.set(a,16),y=rA,g.push(p);else throw new Error(`arx: invalid 32-byte key, got length=${h}`);m2(c)||(c=c.slice(),g.push(c));let w=Fn(p);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(y,w,Fn(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 S=new Uint8Array(12);S.set(c,s?0:12-c.length),c=S,g.push(c)}let E=Fn(c);for(sA(r,y,w,E,l,d,u,i);g.length>0;)g.pop().fill(0);return d}}function D7(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],f=e[2],g=e[3],h=e[4],p=e[5],y=e[6],w=e[7],b=o,E=t[0],S=t[1],_=t[2],A=i,D=a,R=c,k=l,O=d,N=u,L=f,F=g,Y=h,I=p,C=y,$=w,T=b,v=E,U=S,V=_;for(let oe=0;oe<s;oe+=2)A=A+O|0,T=z(T^A,16),Y=Y+T|0,O=z(O^Y,12),A=A+O|0,T=z(T^A,8),Y=Y+T|0,O=z(O^Y,7),D=D+N|0,v=z(v^D,16),I=I+v|0,N=z(N^I,12),D=D+N|0,v=z(v^D,8),I=I+v|0,N=z(N^I,7),R=R+L|0,U=z(U^R,16),C=C+U|0,L=z(L^C,12),R=R+L|0,U=z(U^R,8),C=C+U|0,L=z(L^C,7),k=k+F|0,V=z(V^k,16),$=$+V|0,F=z(F^$,12),k=k+F|0,V=z(V^k,8),$=$+V|0,F=z(F^$,7),A=A+N|0,V=z(V^A,16),C=C+V|0,N=z(N^C,12),A=A+N|0,V=z(V^A,8),C=C+V|0,N=z(N^C,7),D=D+L|0,T=z(T^D,16),$=$+T|0,L=z(L^$,12),D=D+L|0,T=z(T^D,8),$=$+T|0,L=z(L^$,7),R=R+F|0,v=z(v^R,16),Y=Y+v|0,F=z(F^Y,12),R=R+F|0,v=z(v^R,8),Y=Y+v|0,F=z(F^Y,7),k=k+O|0,U=z(U^k,16),I=I+U|0,O=z(O^I,12),k=k+O|0,U=z(U^k,8),I=I+U|0,O=z(O^I,7);let H=0;n[H++]=i+A|0,n[H++]=a+D|0,n[H++]=c+R|0,n[H++]=l+k|0,n[H++]=d+O|0,n[H++]=u+N|0,n[H++]=f+L|0,n[H++]=g+F|0,n[H++]=h+Y|0,n[H++]=p+I|0,n[H++]=y+C|0,n[H++]=w+$|0,n[H++]=b+T|0,n[H++]=E+v|0,n[H++]=S+U|0,n[H++]=_+V|0}function iA(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],f=e[4],g=e[5],h=e[6],p=e[7],y=t[0],w=t[1],b=t[2],E=t[3];for(let _=0;_<20;_+=2)o=o+c|0,y=z(y^o,16),f=f+y|0,c=z(c^f,12),o=o+c|0,y=z(y^o,8),f=f+y|0,c=z(c^f,7),s=s+l|0,w=z(w^s,16),g=g+w|0,l=z(l^g,12),s=s+l|0,w=z(w^s,8),g=g+w|0,l=z(l^g,7),i=i+d|0,b=z(b^i,16),h=h+b|0,d=z(d^h,12),i=i+d|0,b=z(b^i,8),h=h+b|0,d=z(d^h,7),a=a+u|0,E=z(E^a,16),p=p+E|0,u=z(u^p,12),a=a+u|0,E=z(E^a,8),p=p+E|0,u=z(u^p,7),o=o+l|0,E=z(E^o,16),h=h+E|0,l=z(l^h,12),o=o+l|0,E=z(E^o,8),h=h+E|0,l=z(l^h,7),s=s+d|0,y=z(y^s,16),p=p+y|0,d=z(d^p,12),s=s+d|0,y=z(y^s,8),p=p+y|0,d=z(d^p,7),i=i+u|0,w=z(w^i,16),f=f+w|0,u=z(u^f,12),i=i+u|0,w=z(w^i,8),f=f+w|0,u=z(u^f,7),a=a+c|0,b=z(b^a,16),g=g+b|0,c=z(c^g,12),a=a+c|0,b=z(b^a,8),g=g+b|0,c=z(c^g,7);let S=0;n[S++]=o,n[S++]=s,n[S++]=i,n[S++]=a,n[S++]=y,n[S++]=w,n[S++]=b,n[S++]=E}var aA=g2(D7,{counterRight:!1,counterLength:4,allowShortKeys:!1}),cA=g2(D7,{counterRight:!1,counterLength:8,extendNonceFn:iA,allowShortKeys:!1});var lA=new Uint8Array(16),A7=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(lA.subarray(t))},uA=new Uint8Array(32);function I7(r,e,t,n,o){let s=r(e,t,uA),i=R7.create(s);o&&A7(i,o),A7(i,n);let a=new Uint8Array(16),c=E7(a);d2(c,0,BigInt(o?o.length:0),!0),d2(c,8,BigInt(n.length),!0),i.update(a);let l=i.digest();return s.fill(0),l}var T7=r=>(e,t,n)=>(gs(e,32),gs(t),{encrypt:(s,i)=>{let a=s.length,c=a+16;i?gs(i,c):i=new Uint8Array(c),r(e,t,s,i,1);let l=I7(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?gs(i,c):i=new Uint8Array(c);let l=s.subarray(0,-16),d=s.subarray(-16),u=I7(r,e,t,l,n);if(!x7(d,u))throw new Error("invalid tag");return r(e,t,l,i,1),i}}),y2=u2({blockSize:64,nonceLength:12,tagLength:16},T7(aA)),xz=u2({blockSize:64,nonceLength:24,tagLength:16},T7(cA));function C7(r,e,t){return Zo(r),t===void 0&&(t=new Uint8Array(r.outputLen)),uo(r,Lr(t),Lr(e))}var w2=new Uint8Array([0]),k7=new Uint8Array;function N7(r,e,t,n=32){if(Zo(r),no(n),n>255*r.outputLen)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/r.outputLen);t===void 0&&(t=k7);let s=new Uint8Array(o*r.outputLen),i=uo.create(r,e),a=i._cloneInto(),c=new Uint8Array(i.outputLen);for(let l=0;l<o;l++)w2[0]=l+1,a.update(l===0?k7:c).update(t).update(w2).digestInto(c),s.set(c,r.outputLen*l),i._cloneInto(a);return i.destroy(),a.destroy(),c.fill(0),w2.fill(0),s.slice(0,n)}var E2={hashSHA256(r){return Eo(r.subarray())},getHKDF(r,e){let t=C7(Eo,e,r),o=N7(Eo,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=va.utils.randomPrivateKey();return{publicKey:va.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:va.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return va.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return y2(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,o){return y2(n,e,t).decrypt(r.subarray(),o)}};var P7=E2;function O7(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 Ri=r=>{let e=ze(2);return e[0]=r>>8,e[1]=r,e};Ri.bytes=2;var Qa=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)};Qa.bytes=2;function L7(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 b2(r,e){!e.enabled||!xi||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${P(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${P(r.privateKey,"hex")}`)):e("Missing local static keys."))}function x2(r,e){!e.enabled||!xi||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${P(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${P(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function B7(r,e){!e.enabled||!xi||e(r?`REMOTE_STATIC_PUBLIC_KEY ${P(r.subarray(),"hex")}`:"Missing remote static public key.")}function v2(r,e){!e.enabled||!xi||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${P(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function R2(r,e,t){!t.enabled||!xi||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&P(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&P(e.k,"hex")}`))}function Vn(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 p1(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 m1=class r extends Error{code;constructor(e="Unexpected Peer"){super(e),this.code=r.code}static code="ERR_UNEXPECTED_PEER"},Si=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var dA=0,fA=4294967295,hA="Cipherstate has reached maximum n, a new handshake must be performed",g1=class{n;bytes;view;constructor(e=dA){this.n=e,this.bytes=Be(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>fA)throw new Error(hA)}};var ys=Be(0),_i=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new g1(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}},S2=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=B(t,"utf-8");this.h=pA(e,n),this.ck=this.h,this.cs=new _i(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new _i(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new ue(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,ys);return[new _i(this.crypto,e),new _i(this.crypto,t)]}},_2=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 S2(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()}},Xa=class extends _2{writeMessageA(e){return new ue(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new ue(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new ue(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Si(`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 Si(`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 Si(`handshake stage 2 validation fail: ${t.message}`)}}};function pA(r,e){if(e.length<=32){let t=Be(32);return t.set(e),t}else return r.hash(e)}var y1;(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())})(y1||(y1={}));var ja;(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),y1.codec().encode(t.extensions,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={identityKey:Be(0),identitySig:Be(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=y1.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())})(ja||(ja={}));async function A2(r,e,t){let n=await r.sign(U7(e));return ja.encode({identityKey:r.public.bytes,identitySig:n,extensions:t})}async function I2(r,e,t){try{let n=ja.decode(r);if(t){let i=t.subarray();if(!J(i,n.identityKey))throw new Error(`Payload identity key ${P(n.identityKey,"hex")} does not match expected remote identity key ${P(i,"hex")}`)}if(!e)throw new Error("Remote static does not exist");let o=U7(e);if(!await Hr(n.identityKey).verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new m1(n.message)}}function U7(r){let e=B("noise-libp2p-static-key:");return r instanceof Uint8Array?xe([e,r],e.length+r.length):(r.prepend(e),r)}async function M7(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await A2(o,i.publicKey,c),d=new Xa({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:i});b2(d.s,e),e.trace("Stage 0 - Initiator starting to send first message."),await t.write(d.writeMessageA(ys)),e.trace("Stage 0 - Initiator finished sending first message."),x2(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."),v2(d.re,e),B7(d.rs,e),e.trace("Initiator going to check remote's signature...");let f=await I2(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[g,h]=d.ss.split();return R2(g,h,e),{payload:f,encrypt:p=>g.encryptWithAd(ys,p),decrypt:(p,y)=>h.decryptWithAd(ys,p,y)}}async function F7(r){let{log:e,connection:t,crypto:n,privateKey:o,prologue:s,s:i,remoteIdentityKey:a,extensions:c}=r,l=await A2(o,i.publicKey,c),d=new Xa({crypto:n,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:i});b2(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."),v2(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."),x2(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 f=await I2(u,d.rs,a),[g,h]=d.ss.split();return R2(g,h,e),{payload:f,encrypt:p=>h.encryptWithAd(ys,p),decrypt:(p,y)=>g.decryptWithAd(ys,p,y)}}var K7=16;function $7(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 ue(Ri(i.byteLength),i)}}}function H7(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-K7<o)throw new Error("Invalid chunk");let i=n.sublist(o,s),a=n.subarray(o,s-K7);try{let c=r.decrypt(i,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var w1=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??P7;this.crypto=O7(c),this.extensions=o,this.metrics=a?L7(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=i??Be(0)}async secureOutbound(e,t,n){let o=yr(t,{lengthEncoder:Ri,lengthDecoder:Qa,maxDataLength:65535});if(!e.privateKey)throw new m("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Rr(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=yr(t,{lengthEncoder:Ri,lengthDecoder:Qa,maxDataLength:65535});if(!e.privateKey)throw new m("local peerId does not contain private key","ERR_NO_PRIVATE_KEY");let s=await Rr(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 M7({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 F7({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]=y7(),s=e.unwrap();return await Ke(n,$7(t,this.metrics),s,i=>$t(i,{lengthDecoder:Qa}),H7(t,this.metrics),n),o}};function Ai(r={}){return e=>new w1(e,r)}function E1(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 Ii="ERR_INVALID_FRAME",D2="ERR_UNREQUESTED_PING",T2="ERR_NOT_MATCHING_PING",k2="ERR_STREAM_ALREADY_EXISTS",C2="ERR_DECODE_INVALID_VERSION",N2="ERR_BOTH_CLIENTS",P2="ERR_RECV_WINDOW_EXCEEDED",q7=new Set([Ii,D2,T2,k2,C2,N2,P2]),Ao="ERR_INVALID_CONFIG",b1="ERR_MUXER_LOCAL_CLOSED",O2="ERR_MUXER_REMOTE_CLOSED";var W7="ERR_STREAM_ABORT",G7="ERROR_MAX_OUTBOUND_STREAMS_EXCEEDED",z7="ERR_DECODE_IN_PROGRESS",Ja=256*1024,Y7=16*1024*1024;var Q7={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Ja,maxStreamWindowSize:Y7,maxMessageSize:64*1024};function X7(r){if(r.keepAliveInterval<=0)throw new m("keep-alive interval must be positive",Ao);if(r.maxInboundStreams<0)throw new m("max inbound streams must be larger or equal 0",Ao);if(r.maxOutboundStreams<0)throw new m("max outbound streams must be larger or equal 0",Ao);if(r.initialStreamWindowSize<Ja)throw new m("InitialStreamWindowSize must be larger or equal 256 kB",Ao);if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new m("MaxStreamWindowSize must be larger than the InitialStreamWindowSize",Ao);if(r.maxStreamWindowSize>2**32-1)throw new m("MaxStreamWindowSize must be less than equal MAX_UINT32",Ao);if(r.maxMessageSize<1024)throw new m("MaxMessageSize must be greater than a kilobyte",Ao)}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 jY=Object.values(We).filter(r=>typeof r!="string"),j7=0,Ir;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Ir||(Ir={}));var Io=12;var Z7=2**24;function mA(r){if(r[0]!==j7)throw new m("Invalid frame version",C2);return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Z7+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Z7+(r[9]<<16)+(r[10]<<8)+r[11]}}var x1=class{source;buffer;frameInProgress;constructor(e){this.source=gA(e),this.buffer=new ue,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 m("decoding frame already in progress",z7);if(this.buffer.length<Io)return;let e=mA(this.buffer.subarray(0,Io));return this.buffer.consume(Io),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 gA(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 L2(r){let e=new Uint8Array(Io);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 J7(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function v1(r,e){let t=E1(r).return?.();J7(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var yA="ERR_STREAM_RESET",wA="ERR_SINK_INVALID_STATE",EA=5e3;function B2(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var Do=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??EA,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=st({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 m(`writable end state is "${this.writeStatus}" not "ready"`,wA);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let o=this.sendNewStream(t);B2(o)&&await o}let n=()=>{v1(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 ue(o):o;let s=this.sendData(o,t);B2(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();B2(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 m("stream reset",yA);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 Dr;(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"})(Dr||(Dr={}));var R1=class extends Do{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=Dr.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Ja,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=Ya(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-Io,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 m("stream aborted",W7)):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 m("receive window exceeded",P2,{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===Dr.SYNSent&&(this.state=Dr.Established),(e&We.FIN)===We.FIN&&this.remoteCloseWrite(),(e&We.RST)===We.RST&&this.reset()}getSendFlags(){switch(this.state){case Dr.Init:return this.state=Dr.SYNSent,We.SYN;case Dr.SYNReceived:return this.state=Dr.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 eg="/yamux/1.0.0",bA=500,S1=class{protocol=eg;_components;_init;constructor(e,t={}){this._components=e,this._init=t}createStreamMuxer(e){return new U2(this._components,{...this._init,...e})}},U2=class{protocol=eg;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={...Q7,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),X7(this.config),this.closeController=new AbortController,le(1/0,this.closeController.signal),this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=st({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let o=()=>{let a=E1(n);if(a.return!=null){let c=a.return();xA(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},s,i;try{let a=new x1(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=Ir.NormalTermination}catch(a){let c=a.code;q7.has(c)?(this.log?.error("protocol error in sink",a),s=Ir.ProtocolError):(this.log?.error("internal error in sink",a),s=Ir.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 m("muxer closed remotely",O2);if(this.localGoAway!==void 0)throw new m("muxer closed locally",b1);let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new m("max outbound streams exceeded",G7);this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,Dr.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new m("muxer closed remotely",O2);if(this.localGoAway!==void 0)throw new m("muxer closed locally",b1);if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((o,s)=>{let i=()=>{s(new m("muxer closed locally",b1))};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??Ir.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(bA);le(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??Ir.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 m("Stream already exists",k2,{id:e});let s=new R1({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 m("Invalid frame type",Ii,{header:e})}else switch(e.type){case Je.Data:case Je.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new m("Invalid frame type",Ii,{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 m("Invalid frame flag",Ii,{header:e})}handlePingResponse(e){if(this.activePing===void 0)throw new m("ping not requested",D2);if(this.activePing.id!==e)throw new m("ping doesn't match our id",T2);this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Ir[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 m("both endpoints are clients",N2);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,Dr.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 m("invalid frame",Ii);this.source.push(new ue(L2(e),t))}else this.source.push(L2(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=Ir.NormalTermination){this.log?.("sending GoAway reason=%s",Ir[e]),this.localGoAway=e,this.sendFrame({type:Je.GoAway,flag:0,streamID:0,length:e})}};function xA(r){return r!=null&&typeof r.then=="function"}function tg(r={}){return e=>new S1(e,r)}var _1=async()=>{let r=await Na("Ed25519"),e=await vA(r);if(e.type==="Ed25519")return e;throw new Error(`Generated unexpected PeerId type "${e.type}"`)};async function vA(r){return ht(_0(r.public),A0(r))}var A1=globalThis.CustomEvent??Event;async function*Kn(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 h of r){if(s.length===t&&(i=j(),await i.promise),d)break;let p={done:!1};s.push(p),h().then(y=>{p.done=!0,p.ok=!0,p.value=y,o.dispatchEvent(new A1("task-complete"))},y=>{p.done=!0,p.err=y,o.dispatchEvent(new A1("task-complete"))})}c=!0,o.dispatchEvent(new A1("task-complete"))}catch(h){l=h,o.dispatchEvent(new A1("task-complete"))}});function u(){return n?s[0]?.done:!!s.find(h=>h.done)}function*f(){for(;s.length>0&&s[0].done;){let h=s[0];if(s.shift(),h.ok)yield h.value;else throw d=!0,i.resolve(),h.err;i.resolve()}}function*g(){for(;u();)for(let h=0;h<s.length;h++)if(s[h].done){let p=s[h];if(s.splice(h,1),h--,p.ok)yield p.value;else throw d=!0,i.resolve(),p.err;i.resolve()}}for(;;){if(u()||(a=j(),await a.promise),l!=null)throw l;if(n?yield*f():yield*g(),c&&s.length===0)break}}var rg="libp2p",ng="autonat",og="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,f,g={})=>{if(g.lengthDelimited!==!1&&f.fork(),u.id!=null&&(f.uint32(10),f.bytes(u.id)),u.addrs!=null)for(let h of u.addrs)f.uint32(18),f.bytes(h);g.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let g={addrs:[]},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:g.id=u.bytes();break;case 2:g.addrs.push(u.bytes());break;default:u.skipType(p&7);break}}return g})),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,f,g={})=>{g.lengthDelimited!==!1&&f.fork(),u.peer!=null&&(f.uint32(10),r.PeerInfo.codec().encode(u.peer,f)),g.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let g={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:g.peer=r.PeerInfo.codec().decode(u,u.uint32());break;default:u.skipType(p&7);break}}return g})),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,f,g={})=>{g.lengthDelimited!==!1&&f.fork(),u.status!=null&&(f.uint32(8),r.ResponseStatus.codec().encode(u.status,f)),u.statusText!=null&&(f.uint32(18),f.string(u.statusText)),u.addr!=null&&(f.uint32(26),f.bytes(u.addr)),g.lengthDelimited!==!1&&f.ldelim()},(u,f)=>{let g={},h=f==null?u.len:u.pos+f;for(;u.pos<h;){let p=u.uint32();switch(p>>>3){case 1:g.status=r.ResponseStatus.codec().decode(u);break;case 2:g.statusText=u.string();break;case 3:g.addr=u.bytes();break;default:u.skipType(p&7);break}}return g})),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={},f=d==null?l.len:l.pos+d;for(;l.pos<f;){let g=l.uint32();switch(g>>>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(g&7);break}}return u})),c),r.encode=l=>te(l,r.codec()),r.decode=l=>ee(l,r.codec())})(he||(he={}));var M2=4,I1=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??rg}/${ng}/${og}`,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 m("handleIncomingAutonatStream timeout",pn))};t.addEventListener("abort",n,{once:!0}),le(1/0,t);let o=this.components.addressManager.getAddresses().map(s=>s.toOptions().host);try{let s=this;await Ke(e.stream,i=>$t(i),async function*(i){let a=await ds(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(p){s.log.error("could not decode message",p),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(p){s.log.error("invalid PeerId",p),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 f=u.addrs.map(p=>X(p)).filter(p=>{let y=p.toOptions().host===e.connection.remoteAddr.toOptions().host;return s.log.trace("request to dial %a was sent from %a is same host %s",p,e.connection.remoteAddr,y),y}).filter(p=>{let y=p.toOptions().host,w=!(Ht(y)??!1);return s.log.trace("host %s was public %s",y,w),w}).filter(p=>{let y=p.toOptions().host,w=!o.includes(y);return s.log.trace("host %s was not our host %s",y,w),w}).filter(p=>{let y=!!s.components.transportManager.transportForMultiaddr(p);return s.log.trace("transport for %a is supported %s",p,y),y}).map(p=>(p.getPeerId()==null&&(p=p.encapsulate(`/p2p/${d.toString()}`)),p));if(f.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",f.map(p=>p.toString()).join(", "),d);let g="",h=f[0];for await(let p of f){let y;h=p;try{if(y=await s.components.connectionManager.openConnection(p,{signal:t}),!y.remoteAddr.equals(p))throw s.log.error("tried to dial %a but dialed %a",p,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(Z("p2p").code).bytes}});return}catch(w){s.log("could not dial %p",d,w),g=w.message}finally{y!=null&&await y.close()}}yield he.encode({type:he.MessageType.DIAL_RESPONSE,dialResponse:{status:he.ResponseStatus.E_DIAL_ERROR,statusText:g,addr:h.bytes}})},i=>gr(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!(Ht(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);le(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 _1()).toBytes(),c={},l=[],d=async u=>{let f=()=>{};try{this.log("asking %p to verify multiaddr",u.id);let g=await o.components.connectionManager.openConnection(u.id,{signal:n}),h=await g.newStream(this.protocol,{signal:n});f=()=>{h.abort(new m("verifyAddress timeout",pn))},n.addEventListener("abort",f,{once:!0});let p=await Ke([s],w=>gr(w),h,w=>$t(w),async w=>ds(w));if(p==null){this.log("no response received from %p",g.remotePeer);return}let y=he.decode(p);if(y.type!==he.MessageType.DIAL_RESPONSE||y.dialResponse==null){this.log("invalid autonat response from %p",g.remotePeer);return}if(y.dialResponse.status===he.ResponseStatus.OK){let w=g.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(g){this.log.error("error asking remote to verify multiaddr",g)}finally{n.removeEventListener("abort",f)}};for await(let u of Kn(bt(this.components.peerRouting.getClosestPeers(a,{signal:n}),f=>async()=>d(f)),{concurrency:M2}))try{if(u==null)continue;let f=u.addr==null?t[0]:X(u.addr);if(this.log("autonat response for %a is %s",f,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(h=>h.equals(f))){this.log("peer reported %a as %s but it was not in our observed address list",f,u.status);continue}let g=f.toString();if(c[g]==null&&(c[g]={success:0,failure:0}),u.status===he.ResponseStatus.OK?c[g].success++:u.status===he.ResponseStatus.E_DIAL_ERROR&&c[g].failure++,c[g].success===M2){this.log("%a is externally dialable",f),e.confirmObservedAddr(f);return}if(c[g].failure===M2){this.log("%a is not externally dialable",f),e.removeObservedAddr(f);return}}catch(f){this.log.error("could not verify external address",f)}}finally{this.verifyAddressTimeout=setTimeout(this._verifyExternalAddresses,this.refreshInterval)}}};function sg(r={}){return e=>new I1(e,r)}var DA=q("dns4"),TA=q("dns6"),kA=q("dnsaddr"),ko=nt(q("dns"),kA,DA,TA),D1=nt(q("ip4"),q("ip6")),Di=nt(ne(D1,q("tcp")),ne(ko,q("tcp"))),T1=ne(D1,q("udp")),CA=ne(T1,q("utp")),NA=ne(T1,q("quic")),PA=ne(T1,q("quic-v1")),F2=nt(ne(Di,q("ws")),ne(ko,q("ws"))),Ti=nt(ne(F2,q("p2p")),F2),V2=nt(ne(Di,q("wss")),ne(ko,q("wss")),ne(Di,q("tls"),q("ws")),ne(ko,q("tls"),q("ws"))),ws=nt(ne(V2,q("p2p")),V2),K2=nt(ne(Di,q("http")),ne(D1,q("http")),ne(ko,q("http"))),$2=nt(ne(Di,q("https")),ne(D1,q("https")),ne(ko,q("https"))),ig=ne(T1,q("webrtc-direct"),q("certhash")),lg=nt(ne(ig,q("p2p")),ig),ag=ne(PA,q("webtransport"),q("certhash"),q("certhash")),ug=nt(ne(ag,q("p2p")),ag),dg=nt(ne(Ti,q("p2p-webrtc-star"),q("p2p")),ne(ws,q("p2p-webrtc-star"),q("p2p")),ne(Ti,q("p2p-webrtc-star")),ne(ws,q("p2p-webrtc-star"))),cX=nt(ne(Ti,q("p2p-websocket-star"),q("p2p")),ne(ws,q("p2p-websocket-star"),q("p2p")),ne(Ti,q("p2p-websocket-star")),ne(ws,q("p2p-websocket-star"))),fg=nt(ne(K2,q("p2p-webrtc-direct"),q("p2p")),ne($2,q("p2p-webrtc-direct"),q("p2p")),ne(K2,q("p2p-webrtc-direct")),ne($2,q("p2p-webrtc-direct"))),Es=nt(F2,V2,K2,$2,dg,fg,Di,CA,NA,ko,lg,ug),lX=nt(ne(Es,q("p2p-stardust"),q("p2p")),ne(Es,q("p2p-stardust"))),To=nt(ne(Es,q("p2p")),dg,fg,lg,ug,q("p2p")),cg=nt(ne(To,q("p2p-circuit"),To),ne(To,q("p2p-circuit")),ne(q("p2p-circuit"),To),ne(Es,q("p2p-circuit")),ne(q("p2p-circuit"),Es),q("p2p-circuit")),hg=()=>nt(ne(cg,hg),cg),Yr=hg(),pg=nt(ne(Yr,To,Yr),ne(To,Yr),ne(Yr,To),Yr,To);var uX=nt(ne(Yr,q("webrtc"),q("p2p")),ne(Yr,q("webrtc")),ne(Es,q("webrtc"),q("p2p")),ne(Es,q("webrtc")),q("webrtc"));function mg(r){function e(t){let n;try{n=X(t)}catch{return!1}let o=r(n.protoNames());return o===null?!1:o===!0||o===!1?o:o.length===0}return e}function ne(...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:mg(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:mg(e),partialMatch:e}}function q(r){let e=r;function t(o){let s;try{s=X(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 OA="bootstrap",LA=50,BA=12e4,UA=1e3,H2=class extends Re{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??UA,this.list=[];for(let n of t.list){if(!pg.matches(n)){this.log.error("Invalid multiaddr");continue}let o=X(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}[Vo]=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??OA]:{value:this._init.tagValue??LA,ttl:this._init.tagTTL??BA}}}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function yg(r){return e=>new H2(e,r)}var wg={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var ec;(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())})(ec||(ec={}));var Qr=class r{static createFromProtobuf=async e=>{let t=ec.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=Eg(n,o,s),c=await(await Rr(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 m("envelope signature is not valid for the given domain",wg.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=ec.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return J(this.marshal(),e.marshal())}async validate(e){let t=Eg(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Hr(this.peerId.publicKey).verify(t.subarray(),this.signature)}},Eg=(r,e,t)=>{let n=B(r),o=Ve(n.byteLength),s=Ve(e.length),i=Ve(t.length);return new ue(o,n,s,e,i,t)};function bg(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 xg="libp2p-peer-record",vg=Uint8Array.from([3,1]);var tc;(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())})(tc||(tc={}));var ur=class r{static createFromProtobuf=e=>{let t=tc.decode(e),n=je(t.peerId),o=(t.addresses??[]).map(i=>X(i.multiaddr)),s=t.seq;return new r({peerId:n,multiaddrs:o,seqNumber:s})};static DOMAIN=xg;static CODEC=vg;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=tc.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||!bg(this.multiaddrs,e.multiaddrs))}};function et(r,e){let t=yr(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 Rg="/libp2p/relay";var Sg="circuit-relay-relay";var HX=BigInt(131072),bs="/libp2p/circuit/relay/0.2.0/hop",q2="/libp2p/circuit/relay/0.2.0/stop",qX=30*1e3,WX=30*1e3,W2=300;var G2="ERR_RELAYED_DIAL",_g="ERR_HOP_REQUEST_FAILED";var Co;(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),ki.codec().encode(o.peer,s)),o.reservation!=null&&(s.uint32(26),k1.codec().encode(o.reservation,s)),o.limit!=null&&(s.uint32(34),Ci.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=ki.codec().decode(o,o.uint32());break;case 3:i.reservation=k1.codec().decode(o,o.uint32());break;case 4:i.limit=Ci.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())})(Co||(Co={}));var un;(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),ki.codec().encode(o.peer,s)),o.limit!=null&&(s.uint32(26),Ci.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=ki.codec().decode(o,o.uint32());break;case 3:i.limit=Ci.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())})(un||(un={}));var ki;(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())})(ki||(ki={}));var k1;(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())})(k1||(k1={}));var Ci;(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())})(Ci||(Ci={}));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 z2;(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"})(z2||(z2={}));(function(r){r.codec=()=>$e(z2)})(St||(St={}));var Ag;(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())})(Ag||(Ag={}));async function Ig(r){let e=new TextEncoder().encode(r),t=await De.digest(e);return ae.createV0(t)}function Y2(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var C1=class extends Re{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(bs,{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(bs)],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 Ig(Rg),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 FA=60*1e3*10,VA=60*1e3*5,KA=30*1e3,N1=class extends Re{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 Vt({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(Y2(n.reservation.expire)>FA){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=Y2(i.expire),c=Math.min(Math.max(a-VA,KA),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:{[Sg]:{value:1,ttl:a}}}),await this.transportManager.listen([X(`/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(bs,t),s=et(n).pb(Co);await s.write({type:Co.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(J(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 Q2(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 f=>{await a(f),u(!0)};let c=e.abort.bind(e);e.abort=f=>{c(f),u(!0)};let l=e.sink.bind(e);e.sink=async f=>{try{await l(f)}catch(g){g.type!=="aborted"&&o.error("%s error in sink",t,g)}finally{i=!0,u()}};let d={log:o,sink:e.sink,source:async function*(){try{for await(let f of e.source)f instanceof Uint8Array?yield f:yield*f}finally{s=!0,u()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function u(f){f===!0&&(s=!0,i=!0),s&&i&&d.timeline.close==null&&(d.timeline.close=Date.now())}return d}var X2=class extends Re{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 m("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=>X(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 Dg(r){return new X2(r)}var HA=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(X)}catch{return!1}return!0},j2={maxInboundStopStreams:W2,maxOutboundStopStreams:W2,stopTimeout:3e4},P1=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??j2.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??j2.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??j2.stopTimeout,t.discoverRelays!=null&&t.discoverRelays>0&&(this.discovery=new C1(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 N1(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(q2,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(q2),this.started=!1}[tn]=!0;[Symbol.toStringTag]="libp2p/circuit-relay-v2";async dial(e,t={}){if(e.protoCodes().filter(h=>h===290).length!==1){let h="Invalid circuit relay address";throw this.log.error(h,e),new m(h,G2)}let n=e.toString().split("/p2p-circuit"),o=X(n[0]),s=X(n[n.length-1]),i=o.getPeerId(),a=s.getPeerId();if(i==null||a==null){let h=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(h),new m(h,G2)}let c=ge(i),l=ge(a),d=!1,f=this.connectionManager.getConnections(c)[0];f==null&&(await this.peerStore.merge(c,{multiaddrs:[o]}),f=await this.connectionManager.openConnection(c,t),d=!0);let g;try{return g=await f.newStream(bs),await this.connectV2({stream:g,connection:f,destinationPeer:l,destinationAddr:s,relayAddr:o,ma:e,disconnectOnFailure:d})}catch(h){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,h),g?.abort(h),d&&await f.close(),h}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:o,relayAddr:s,ma:i,disconnectOnFailure:a}){try{let c=et(e),l=c.pb(Co);await l.write({type:Co.Type.CONNECT,peer:{id:n.toBytes(),addrs:[X(o).bytes]}});let d=await l.read();if(d.status!==St.OK)throw new m(`failed to connect via relay with status ${d?.status?.toString()??"undefined"}`,_g);let u=Q2({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 Dg({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}filter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Yr.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=et(t).pb(un),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:un.Type.STATUS,status:St.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(s.type!==un.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.Type.STATUS,status:St.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!HA(s)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await o.write({type:un.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:un.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:un.Type.STATUS,status:St.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${i.toString()}`),c=this.addressManager.getAddresses()[0],l=Q2({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 Z2(r={}){return e=>new P1(e,r)}var Tg=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},qA=new WeakMap;function WA({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(Tg());let s,i,a,c=r??clearTimeout,l=()=>{c(s),a(Tg())},d=()=>{o&&o.removeEventListener("abort",l)},u=new Promise((f,g)=>{i=()=>{d(),f(n)},a=g,s=(e??setTimeout)(i,t)});return o&&o.addEventListener("abort",l,{once:!0}),qA.set(u,()=>{c(s),s=null,i()}),u}}var GA=WA(),O1=GA;var Xr;(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())})(Xr||(Xr={}));function J2(r,e){return Ho.matches(r)||e.transportForMultiaddr(r)==null?!1:qc.matches(r)?!0:N4.matches(r)?Ht(r.toOptions().host)===!1:!1}var kg=1024*4,Cg=100,L1={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},B1=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??L1.timeout,this.retries=t.retries??L1.retries,this.maxInboundStreams=t.maxInboundStreams??L1.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??L1.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(rc,{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(rc,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(rc),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([rc],{signal:o.signal,runOnTransientConnection:!0});let s=et(t,{maxDataLength:kg}).pb(Xr);this.log("B sending connect to %p",e.remotePeer);let i=Date.now();await s.write({type:Xr.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!==Xr.Type.CONNECT)throw this.log("A sent wrong message type"),new m("DCUtR message type was incorrect",Ko);let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new m("DCUtR connect message had no multiaddrs",Ko);let l=Date.now()-i;this.log("A sending sync, rtt %dms",l),await s.write({type:Xr.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await O1(l/2),this.log("B dialing",c);let d=await this.connectionManager.openConnection(c,{signal:o.signal,priority:Cg});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=>J2(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:kg}).pb(Xr);this.log("A receiving connect");let s=await o.read(n);if(s.type!==Xr.Type.CONNECT)throw this.log("B sent wrong message type"),new m("DCUtR message type was incorrect",Ko);if(s.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new m("DCUtR connect message had no multiaddrs",Ko);let i=this.getDialableMultiaddrs(s.observedAddresses);if(i.length===0)throw this.log("B had no dialable multiaddrs"),new m("DCUtR connect message had no dialable multiaddrs",Ko);if(this.log("A sending connect"),await o.write({type:Xr.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==Xr.Type.SYNC)throw new m("DCUtR message type was incorrect",Ko);this.log("A dialing",i);let c=await this.connectionManager.openConnection(i,{signal:n.signal,priority:Cg,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=X(n);if(!J2(o,this.transportManager))continue;t.push(o)}catch{}return t}};var rc="/libp2p/dcutr";function Ng(r={}){return e=>new B1(e,r)}var Pg="0.1.0",Og="id",Lg="id/push",Bg="1.0.0",Ug="1.0.0";var Vg=Ye(Fg(),1),ep=typeof window=="object"&&typeof document=="object"&&document.nodeType===9,U1=(0,Vg.default)(),M1=ep&&!U1,Kg=U1&&!ep,$g=U1&&ep,Hg=typeof globalThis.process<"u"&&typeof globalThis.process.release<"u"&&globalThis.process.release.name==="node"&&!U1,F1=typeof importScripts=="function"&&typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Jj=typeof globalThis.process<"u"&&typeof globalThis.process.env<"u"&&globalThis.process.env["NODE"+"_"+"ENV"]==="test",qg=typeof navigator<"u"&&navigator.product==="ReactNative";var xs;(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())})(xs||(xs={}));var tp=1024*8,Tr={protocolPrefix:"ipfs",timeout:6e4,maxInboundStreams:1,maxOutboundStreams:1,maxPushIncomingStreams:1,maxPushOutgoingStreams:1,maxObservedAddresses:10,maxIdentifyMessageSize:8192,runOnConnectionOpen:!0,runOnTransientConnection:!0},V1=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??Tr.protocolPrefix}/${Og}/${Bg}`,this.identifyPushProtocolStr=`/${t.protocolPrefix??Tr.protocolPrefix}/${Lg}/${Ug}`,this.timeout=t.timeout??Tr.timeout,this.maxInboundStreams=t.maxInboundStreams??Tr.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Tr.maxOutboundStreams,this.maxPushIncomingStreams=t.maxPushIncomingStreams??Tr.maxPushIncomingStreams,this.maxPushOutgoingStreams=t.maxPushOutgoingStreams??Tr.maxPushOutgoingStreams,this.maxIdentifyMessageSize=t.maxIdentifyMessageSize??Tr.maxIdentifyMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??Tr.maxObservedAddresses,this.runOnTransientConnection=t.runOnTransientConnection??Tr.runOnTransientConnection,this.host={protocolVersion:`${t.protocolPrefix??Tr.protocolPrefix}/${Pg}`,agentVersion:t.agentVersion??`${e.nodeInfo.name}/${e.nodeInfo.version}`},(t.runOnConnectionOpen??Tr.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}`&&(Hg||Kg?this.host.agentVersion+=` UserAgent=${globalThis.process.version}`:(M1||F1||$g||qg)&&(this.host.agentVersion+=` UserAgent=${globalThis.navigator.userAgent}`))}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:B(this.host.agentVersion),ProtocolVersion:B(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(Z("p2p").code)),n=new ur({peerId:this.peerId,multiaddrs:t}),o=await Qr.seal(n,this.peerId),s=this.registrar.getProtocols(),i=await this.peerStore.get(this.peerId),a=P(i.metadata.get("AgentVersion")??B(this.host.agentVersion)),c=P(i.metadata.get("ProtocolVersion")??B(this.host.protocolVersion)),l=e.map(async d=>{let u,f=AbortSignal.timeout(this.timeout);le(1/0,f);try{u=await d.newStream(this.identifyPushProtocolStr,{signal:f,runOnTransientConnection:this.runOnTransientConnection}),await et(u,{maxDataLength:this.maxIdentifyMessageSize??tp}).pb(xs).write({listenAddrs:t.map(h=>h.bytes),signedPeerRecord:o.marshal(),protocols:s,agentVersion:a,protocolVersion:c},{signal:f}),await u.close({signal:f})}catch(g){this.log.error("could not push identify update to peer",g),u?.abort(g)}});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!==W3)throw n}})),await this.pushToConnections(e)}async _identify(e,t={}){let n;if(t.signal==null){let o=AbortSignal.timeout(this.timeout);le(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??tp}).pb(xs).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 m("public key was missing from identify message","ERR_MISSING_PUBLIC_KEY");let a=await ht(o);if(!e.remotePeer.equals(a))throw new m("identified peer does not match the expected peer","ERR_INVALID_PEER");if(this.peerId.equals(a))throw new m("identified peer is our own peer id?","ERR_INVALID_PEER");let c=YA(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);le(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(Z("p2p").code)),c=i.peerRecordEnvelope;if(a.length>0&&c==null){let u=new ur({peerId:this.peerId,multiaddrs:a});c=(await Qr.seal(u,this.peerId)).marshal().subarray()}let l=t.remoteAddr.bytes;C4.matches(t.remoteAddr)||(l=void 0),await et(n).pb(xs).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??tp}).pb(xs).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 m("message was null or undefined","ERR_INVALID_MESSAGE");let n={};if(t.listenAddrs.length>0&&(n.addresses=t.listenAddrs.map(i=>({isCertified:!1,multiaddr:X(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 m("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 Qr.openAndCertify(i,ur.DOMAIN),c=ur.createFromProtobuf(a.payload);if(!c.peerId.equals(a.peerId))throw new m("signing key does not match PeerId in the PeerRecord","ERR_INVALID_SIGNING_KEY");if(!e.remotePeer.equals(c.peerId))throw new m("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 Qr.createFromProtobuf(l.peerRecordEnvelope),u=ur.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=B(t.agentVersion)),t.protocolVersion!=null&&(i.ProtocolVersion=B(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=>X(i)),observedAddr:t.observedAddr==null?void 0:X(t.observedAddr),protocols:t.protocols,signedPeerRecord:o,connection:e};return this.events.safeDispatchEvent("peer:identify",{detail:s}),s}};function YA(r){if(r!=null&&r.length>0)try{return X(r)}catch{}}function Wg(r={}){return e=>new V1(e,r)}var Gg="/ipfs/kad/1.0.0",zg="/dht/record",rp="/dht/provider";var Yg;(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())})(Yg||(Yg={}));var Ee;(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"})(Ee||(Ee={}));var K1;(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"})(K1||(K1={}));(function(r){r.codec=()=>$e(K1)})(Ee||(Ee={}));var Pi;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Pi||(Pi={}));var np;(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"})(np||(np={}));(function(r){r.codec=()=>$e(np)})(Pi||(Pi={}));var Ni;(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),Pi.codec().encode(t.connection,n)),o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={id:Be(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=Pi.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())})(Ni||(Ni={}));var kr;(function(r){let e;r.codec=()=>(e==null&&(e=re((t,n,o={})=>{if(o.lengthDelimited!==!1&&n.fork(),t.type!=null&&K1[t.type]!==0&&(n.uint32(8),Ee.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),Ni.codec().encode(s,n);if(t.providers!=null)for(let s of t.providers)n.uint32(74),Ni.codec().encode(s,n);o.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let o={type:Ee.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=Ee.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(Ni.codec().decode(t,t.uint32()));break}case 9:{o.providers.push(Ni.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())})(kr||(kr={}));function op(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 nc(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 $1(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new wt("kad-dht:query:final-peer",{detail:t})),t}function dr(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new wt("kad-dht:query:query-error",{detail:t})),t}function sp(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new wt("kad-dht:query:provider",{detail:t})),t}function oc(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new wt("kad-dht:query:value",{detail:t})),t}function ip(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new wt("kad-dht:query:dial-peer",{detail:t})),t}var sc;(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)=>{let o={key:new Uint8Array(0),value:new Uint8Array(0),timeReceived:""},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 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())})(sc||(sc={}));function Qg(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 Xg(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 _t=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 sc.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:Qg(this.timeReceived)}}static deserialize(e){let t=sc.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=Xg(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)}};function jg(r,e,t){if(t.length===0){let i="No records given";throw new m(i,"ERR_NO_RECORDS_RECEIVED")}let o=P(e).split("/");if(o.length<3){let i="Record key does not have a selector function";throw new m(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 m(i,"ERR_UNRECOGNIZED_KEY_PREFIX")}return t.length===1?0:s(e,t)}function XA(r,e){return 0}var Zg={pk:XA};async function Oi(r,e){let t=e.key,o=P(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 m(i,"ERR_INVALID_RECORD_KEY_TYPE")}await s(t,e.value)}var jA=async(r,e)=>{if(!(r instanceof Uint8Array))throw new m('"key" must be a Uint8Array',"ERR_INVALID_RECORD_KEY_NOT_BUFFER");if(r.byteLength<5)throw new m("invalid public key record","ERR_INVALID_RECORD_KEY_TOO_SHORT");if(P(r.subarray(0,4))!=="/pk/")throw new m("key was not prefixed with /pk/","ERR_INVALID_RECORD_KEY_BAD_PREFIX");let n=r.slice(4),o=await De.digest(e);if(!J(n,o.bytes))throw new m("public key does not match passed in key","ERR_INVALID_RECORD_HASH_MISMATCH")},Jg={pk:jA};var ZA=B("/pk/");function e9(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=Ht(n);return o==null?!0:!o})}}async function No(r){return(await De.digest(r)).digest}async function jr(r){return No(r.toBytes())}function $n(r){return new Pe(`${zg}/${P(r,"base32")}`,!1)}function t9(r){return xe([ZA,r.toBytes()])}function r9(r){return P(r.subarray(0,4))==="/pk/"}function n9(r){return je(r.subarray(4))}function ap(r,e){let t=new Date;return new _t(r,e,t).serialize()}function o9(r,e=100){let t;return()=>{clearTimeout(t),t=setTimeout(()=>{r()},e)}}var JA=290,eI=54,tI=55,rI=56,nI=4,oI=41;function s9(r){let e=r.stringTuples();for(let t of e)if(t[0]===JA)return!1;if(e[0][0]===eI||e[0][0]===tI||e[0][0]===rI)return!0;if(e[0][0]===nI||e[0][0]===oI){let t=Ht(`${e[0][1]}`);return t==null||!t}return!1}var H1=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 putLocal(e,t){let n=$n(e);await this.components.datastore.put(n,t)}async getLocal(e){this.log("getLocal %b",e);let t=$n(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=_t.deserialize(n);return await Oi(this.validators,o),o}async*sendCorrectionRecord(e,t,n,o={}){this.log("sendCorrection for %b",e);let s=ap(e,n);for(let{value:i,from:a}of t){if(J(i,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let d=$n(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:Ee.PUT_VALUE,key:e,record:s};for await(let d of this.network.sendRequest(a,l,o))d.name==="PEER_RESPONSE"&&d.record!=null&&J(d.record.value,_t.deserialize(s).value)&&(c=!0),yield d;c||(yield dr({from:a,error:new m("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=ap(e,t),s=$n(e);this.log(`storing record for key ${s.toString()}`),await this.components.datastore.put(s,o.subarray()),yield*Ke(this.peerRouting.getClosestPeers(e,{signal:n.signal}),i=>bt(i,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:Ee.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&&J(d.record.value,_t.deserialize(o).value)||c.push(dr({from:a.peer.id,error:new m("value not put correctly","ERR_PUT_VALUE_INVALID")},n)));return c}),i=>Kn(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=jg(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 m("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 oc({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 oc({from:s,value:a.record.value},t))};yield*this.queryManager.run(e,o,t)}};function i9(r,e){return{id:r.id.toBytes(),multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function ic(r){if(r.id==null)throw new Error("Invalid peer in message");return{id:je(r.id),multiaddrs:(r.multiaddrs??[]).map(e=>X(e))}}var q1=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:Ee.ADD_PROVIDER,key:e.multihash.bytes,providers:[i9({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(dr({from:a.peer.id,error:l},n))}return c};yield*Ke(this.peerRouting.getClosestPeers(e.multihash.bytes,n),a=>bt(a,c=>i(c)),a=>Kn(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=e.multihash.bytes,s=this;this.log("findProviders %c",e);let i=await this.providers.getProviders(e);if(i.length>0){let l=[];for(let d of i.slice(0,n))try{let u=await this.components.peerStore.get(d);l.push({id:d,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch(u){if(u.code!=="ERR_NOT_FOUND")throw u;this.log("no peer store entry for %p",d)}yield nc({from:this.components.peerId,messageType:Ee.GET_PROVIDERS,providers:l},t),yield sp({from:this.components.peerId,providers:l},t)}if(i.length>=n)return;let a=async function*({peer:l,signal:d}){let u={type:Ee.GET_PROVIDERS,key:o};yield*s.network.sendRequest(l,u,{...t,signal:d})},c=new Ze(i);for await(let l of this.queryManager.run(o,a,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let d=[];for(let u of l.providers)c.has(u.id)||(c.add(u.id),d.push(u));if(d.length>0&&(yield sp({from:l.from,providers:d},t)),c.size===n)return}}};var W1=class extends Re{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 fa("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield ip({peer:e},n),yield op({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 nc({from:e,messageType:c.type,closer:c.closer.map(ic),providers:c.providers.map(ic),record:c.record==null?void 0:_t.deserialize(c.record)},n)}catch(i){this.log.error("could not send %s to %p",t.type,e,i),yield dr({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 fa("Message type was missing","ERR_INVALID_PARAMETERS");this.log("sending %s to %p",t.type,e),yield ip({peer:e},n),yield op({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 nc({from:e,messageType:o},n)}catch(i){yield dr({from:e,error:i},n)}finally{s!=null&&await s.close()}}async _writeMessage(e,t,n){let o=et(e);await o.write(t,kr,n),await o.unwrap().close(n)}async _writeReadMessage(e,t,n){let o=et(e);await o.write(t,kr,n);let s=await o.read(kr,n);return await o.unwrap().close(n),s.closer.forEach(i=>{this.safeDispatchEvent("peer",{detail:ic(i)})}),s.providers.forEach(i=>{this.safeDispatchEvent("peer",{detail:ic(i)})}),s}};var ac=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Po=new Uint32Array(80),up=class extends oo{constructor(){super(64,20,8,!1),this.A=ac[0]|0,this.B=ac[1]|0,this.C=ac[2]|0,this.D=ac[3]|0,this.E=ac[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)Po[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)Po[c]=xl(Po[c-3]^Po[c-8]^Po[c-14]^Po[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=Rl(o,s,i),d=1518500249):c<40?(l=o^s^i,d=1859775393):c<60?(l=Sl(o,s,i),d=2400959708):(l=o^s^i,d=3395469782);let u=xl(n,5)+l+a+d+Po[c]|0;a=i,i=s,s=xl(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(){Po.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}},a9=Js(()=>new up);var c9={sha1:a9,"sha2-256":Eo,"sha2-512":ao};function cc(r,e,t,n,o){if(o!=="sha1"&&o!=="sha2-256"&&o!=="sha2-512"){let a=Object.keys(c9).join(" / ");throw new m(`Hash '${o}' is unknown or not supported. Must be ${a}`,"ERR_UNSUPPORTED_HASH_TYPE")}let s=c9[o],i=i6(s,r,e,{c:t,dkLen:n});return ut.encode(i).substring(1)}var G1=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 jr(e),n={peerId:e,distance:Vn(this.originDhtKey,t)};this.peerDistances.push(n),this.peerDistances.sort((o,s)=>p1(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(jr)),n=this.peerDistances[this.peerDistances.length-1].distance;for(let o of t){let s=Vn(this.originDhtKey,o);if(p1(s,n)<0)return!0}return!1}};var z1=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:Ee.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=t9(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(_u.marshalPublicKey({bytes:o.record.value}));if(!s.equals(e))throw new m("public key does not match id","ERR_PUBLIC_KEY_DOES_NOT_MATCH_ID");if(s.publicKey==null)throw new m("public key missing","ERR_PUBLIC_KEY_MISSING");yield oc({from:e,value:s.publicKey},t)}throw new m(`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 $1({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:Ee.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 $1({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 dr({from:this.peerId,error:new m("Not found","ERR_NOT_FOUND")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await No(e),o=this.routingTable.closestPeers(n),s=this,i=new G1(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",P(e,"base32"),c);let d={type:Ee.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 $1({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 dr({from:o.from,error:new m(i,"ERR_INVALID_RECORD")},n);continue}yield o}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new m("invalid record received","ERR_INVALID_RECORD");await Oi(this.validators,new _t(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=await No(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 l9=Ye(Y0(),1);var Y1=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,l9.default)(n??256),this.syncQueue=new zt({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}=u9(a.key),d=d9(a.value).getTime(),u=Date.now(),f=u-d,g=f>this.provideValidity;if(this.log("comparing: %d - %d = %d > %d %s",u,d,f,this.provideValidity,g?"(expired)":""),g){n++,s.delete(a.key);let h=o.get(c)??new Set;h.add(l),o.set(c,h)}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=lc(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=lc(e),n=this.cache.get(t);return n==null&&(n=await lI(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=lc(e);this.cache.set(s,n),await cI(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 lc(r){let e=typeof r=="string"?r:P(r.multihash.bytes,"base32");return`${rp}/${e}`}async function cI(r,e,t,n){let o=[lc(e),"/",t.toString()].join(""),s=new Pe(o),i=Ve(n.getTime());await r.put(s,i)}function u9(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 lI(r,e){let t=new Map,n=r.query({prefix:lc(e)});for await(let o of n){let{peerId:s}=u9(o.key);t.set(s,d9(o.value))}return t}function d9(r){return new Date(Bt(r))}async function*f9(r,e,t,n){let o=st({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 m("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 uI=BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");async function*h9(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:f}=r,g=new zt({concurrency:i}),h=await No(e);function p(y,w){if(y==null)return;f.add(y);let b=BigInt("0x"+P(Vn(w,h),"base16"));g.add(async()=>{let E=[o];d!=null&&E.push(AbortSignal.timeout(d));let S=ot(E);try{for await(let _ of s({key:e,peer:y,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(_.name==="PEER_RESPONSE")for(let A of _.closer){if(f.has(A.id)){u("already seen %p in query",A.id);continue}if(n.equals(A.id)){u("not querying ourselves");continue}let D=await jr(A.id);if(BigInt("0x"+P(Vn(D,h),"base16"))>b){u("skipping %p as they are not closer to %b than %p",A.id,e,y);continue}u("querying closer peer %p",A.id),p(A.id,D)}g.emit("completed",_)}}catch(_){if(!o.aborted)return dr({from:y,error:_},r)}finally{S.clear()}},{priority:uI-b}).catch(E=>{u.error(E)})}p(t,await jr(t)),yield*f9(g,o,l,u)}var Q1=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,le(1/0,this.shutDownController.signal)}isStarted(){return this.running}async start(){this.running=!0}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);le(1/0,u),n={...n,signal:u}}let s=new AbortController;le(1/0,s.signal);let i=ot([this.shutDownController.signal,s.signal,n.signal]);le(1/0,i);let a=this.logger.forComponent(`${this.logPrefix}:query:`+P(e,"base58btc")),c=Date.now(),l=new Re,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 No(e),f=this.routingTable.closestPeers(u),g=f.slice(0,Math.min(this.disjointPaths,f.length));if(f.length===0){a.error("Running query with no peers");return}let h=new Ze,p=g.map((y,w)=>h9({key:e,startingPeer:y,ourPeerId:this.peerId,signal:i,query:t,pathIndex:w,numPaths:g.length,alpha:this.alpha,cleanUp:l,queryFuncTimeout:n.queryFuncTimeout,log:a,peersSeen:h,onProgress:n.onProgress}));for await(let y of ft(...p))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 dI(r){return r[Symbol.asyncIterator]!=null}function fI(r){if(dI(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 X1=fI;var hI=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 pI(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}=hI(r),u=(...g)=>{let h=t.multiArgs?g:g[0];t.filter&&!t.filter(h)||(c.push(h),t.count===c.length&&(n(),s(c)))},f=g=>{n(),i(g)};n=()=>{for(let g of a)d(g,u);for(let g of t.rejectionEvents)d(g,f)};for(let g of a)l(g,u);for(let g of t.rejectionEvents)l(g,f);t.signal&&t.signal.addEventListener("abort",()=>{f(t.signal.reason)},{once:!0}),t.resolveImmediately&&s(c)});if(o.cancel=n,typeof t.timeout=="number"){let s=Gr(o,{milliseconds:t.timeout});return s.cancel=n,s}return o}function uc(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=pI(r,e,t),o=n.then(s=>s[0]);return o.cancel=n.cancel,o}var j1=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=ot([this.controller.signal,AbortSignal.timeout(this.queryTimeout)]);le(1/0,e);try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await uc(this.routingTable,"peer:add",{signal:e})),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let t=Date.now(),n=await Ke(this.peerRouting.getClosestPeers(this.peerId.toBytes(),{signal:e,isSelfQuery:!0}),o=>Jn(o,this.count),async o=>X1(o));this.log("self-query found %d peers in %dms",n,Date.now()-t)}catch(t){this.log.error("self-query error",t)}finally{e.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 m9(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 dp(){return{contacts:[],dontSplit:!1,left:null,right:null}}function dc(r,e){if(!(e instanceof Uint8Array))throw new TypeError(r+" is not a Uint8Array")}var Z1=class r extends Re{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,dc("option.localNodeId as parameter 1",this.localNodeId),this.root=dp()}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){dc("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(dc("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){dc("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(m9(e.contacts[n].id,t))return n;return-1}remove(e){dc("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=dp(),e.right=dp();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(!m9(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 mI="kad-close",gI=50,g9=20,yI=1e4,wI=10,J1=class extends Re{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??g9,this.pingTimeout=o??yI,this.pingConcurrency=i??wI,this.running=!1,this.protocol=a,this.tagName=c??mI,this.tagValue=l??gI,this.pingQueue=new Vt({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 Z1({localNodeId:await jr(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 Ze,n=o9(()=>{let o=new Ze(e.closest(e.localNodeId,g9).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:Ee.PING},kr,l);let f=await u.read(kr,l);if(await u.unwrap().close(),f.type!==Ee.PING)throw new m(`Incorrect message type received, expected PING got ${f.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 jr(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 jr(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 jr(e);this.kb.remove(t),this.metrics?.routingTableSize.update(this.size)}};var y9=[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 ed=15,td=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 X1(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>ed&&(e=ed);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=qt(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>ed)throw new Error(`Cannot generate peer ID for common prefix length greater than ${ed}`);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=y9[c],d=new ArrayBuffer(34),u=new DataView(d,0,d.byteLength);return u.setUint8(0,De.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=Vn(this.routingTable.kb.localNodeId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var rd=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 m("Missing key","ERR_MISSING_KEY");let n;try{n=ae.decode(t.key)}catch{throw new m("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=>X(s).toString())),await this.providers.addProvider(n,je(o.id))}))}};var nd=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){this.log("incoming request from %p for peers closer to %b",e,t.key);let n=[];if(t.key==null)throw new m("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");J(this.peerId.toBytes(),t.key)?n=[{id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(s=>s.decapsulateCode(Z("p2p").code))}]:n=await this.peerRouting.getCloserPeersOffline(t.key,e);let o={type:Ee.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 od=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 m("Invalid FIND_NODE message received - key was missing","ERR_INVALID_MESSAGE");let n;try{n=ae.decode(t.key)}catch{throw new m("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:Ee.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 sd=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 m("Invalid key","ERR_INVALID_KEY");let o={type:Ee.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(r9(n)){this.log("is public key");let a=n9(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new m("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 _t(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=$n(e),n;try{n=await this.datastore.get(t)}catch(s){if(s.code==="ERR_NOT_FOUND")return;throw s}let o=_t.deserialize(n);if(o==null)throw new m("Invalid record","ERR_INVALID_RECORD");if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>1296e5){await this.datastore.delete(t);return}return o}};var id=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 ad=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 m(o,"ERR_EMPTY_RECORD")}try{let o=_t.deserialize(t.record);await Oi(this.validators,o),o.timeReceived=new Date;let s=$n(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 cd=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={[Ee.GET_VALUE.toString()]:new sd(e,{peerRouting:o,logPrefix:i}),[Ee.PUT_VALUE.toString()]:new ad(e,{validators:s,logPrefix:i}),[Ee.FIND_NODE.toString()]:new nd(e,{peerRouting:o,logPrefix:i,peerInfoMapper:a}),[Ee.ADD_PROVIDER.toString()]:new rd(e,{providers:n,logPrefix:i}),[Ee.GET_PROVIDERS.toString()]:new od(e,{peerRouting:o,providers:n,logPrefix:i,peerInfoMapper:a}),[Ee.PING.toString()]:new id(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 Ke(t,i=>$t(i),async function*(i){for await(let a of i){let c=kr.decode(a);s.log("incoming %s from %p",c.type,o);let l=await s.handleMessage(o,c);l!=null&&(yield kr.encode(l))}},i=>gr(i),t)}).catch(t=>{this.log.error(t)})}};var ld=class extends Re{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 fp=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Kt(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 Kt(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 m("Not found","ERR_NOT_FOUND")}},hp=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 m("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)}},EI=32,bI=64,ud=class extends Re{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:f,maxOutboundStreams:g,providers:h}=t,p=l??"libp2p:kad-dht";this.running=!1,this.components=e,this.log=e.logger.forComponent(p),this.protocol=c??Gg,this.kBucketSize=n??20,this.clientMode=o??!0,this.maxInboundStreams=f??EI,this.maxOutboundStreams=g??bI,this.peerInfoMapper=t.peerInfoMapper??e9,this.routingTable=new J1(e,{kBucketSize:n,pingTimeout:d,pingConcurrency:u,protocol:this.protocol,logPrefix:p}),this.providers=new Y1(e,h??{}),this.validators={...Jg,...s},this.selectors={...Zg,...i},this.network=new W1(e,{protocol:this.protocol,logPrefix:p});let y=j();t.allowQueryWithZeroPeers===!0&&y.resolve(),this.queryManager=new Q1(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:p,initialQuerySelfHasRun:y,routingTable:this.routingTable}),this.peerRouting=new z1(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:p}),this.contentFetching=new H1(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:p}),this.contentRouting=new q1(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:p}),this.routingTableRefresh=new td(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:p}),this.rpc=new cd(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:p,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new ld(e,{protocol:this.protocol,logPrefix:p}),this.querySelf=new j1(e,{peerRouting:this.peerRouting,interval:a,initialInterval:t.initialQuerySelfInterval,logPrefix:p,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),S={id:b,multiaddrs:E.addresses.map(({multiaddr:_})=>_),protocols:E.protocols};await this.onPeerConnect(S)}).catch(E=>{this.log.error("could not add %p to routing table",b,E)})}),this.dhtPeerRouting=new hp(this),this.dhtContentRouting=new fp(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:S})=>s9(S)),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[Jr](){return this.dhtContentRouting}get[en](){return this.dhtPeerRouting}get[Vo](){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 w9;(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"})(w9||(w9={}));function E9(r){return e=>new ud(e,r)}var D9=Ye(I9(),1),Ui=D9.default;var M9=Ye(U9(),1);var be;(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"})(be||(be={}));var MI="/pkcs8/",F9="/info/",vs=new WeakMap,Rs={minKeyLength:112/8,minSaltLength:128/8,minIterationCount:1e3},mp={dek:{keyLength:512/8,iterationCount:1e4,salt:"you should override this value with a crypto secure random number",hash:"sha2-512"}};function Hn(r){return r==null||typeof r!="string"?!1:r===(0,M9.default)(r.trim())&&r.length>0}async function Oe(){let t=Math.random()*800+200;await new Promise(n=>setTimeout(n,t))}function dn(r){return new Pe(MI+r)}function Oo(r){return new Pe(F9+r)}var hd=class{components;init;log;constructor(e,t){if(this.components=e,this.log=e.logger.forComponent("libp2p:keychain"),this.init=Ui(mp,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<Rs.minKeyLength)throw new Error(`dek.keyLength must be least ${Rs.minKeyLength} bytes`);if(this.init.dek?.salt?.length!=null&&this.init.dek.salt.length<Rs.minSaltLength)throw new Error(`dek.saltLength must be least ${Rs.minSaltLength} bytes`);if(this.init.dek?.iterationCount!=null&&this.init.dek.iterationCount<Rs.minIterationCount)throw new Error(`dek.iterationCount must be least ${Rs.minIterationCount}`);let n=this.init.pass!=null&&this.init.dek?.salt!=null?cc(this.init.pass,this.init.dek?.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";vs.set(this,{dek:n})}static generateOptions(){let e=Object.assign({},mp),t=Math.ceil(Rs.minSaltLength/3)*3;return e.dek.salt=P(qt(t),"base64"),e}static get options(){return mp}async createKey(e,t,n=2048){if(!Hn(e)||e==="self")throw await Oe(),new m("Invalid key name",be.ERR_INVALID_KEY_NAME);if(typeof t!="string")throw await Oe(),new m("Invalid key type",be.ERR_INVALID_KEY_TYPE);let o=dn(e);if(await this.components.datastore.has(o))throw await Oe(),new m("Key name already exists",be.ERR_KEY_ALREADY_EXISTS);switch(t.toLowerCase()){case"rsa":if(!Number.isSafeInteger(n)||n<2048)throw await Oe(),new m("Invalid RSA key size",be.ERR_INVALID_KEY_SIZE);break;default:break}let i;try{let a=await Na(t,n),c=await a.id(),l=vs.get(this);if(l==null)throw new m("dek missing",be.ERR_INVALID_PARAMETERS);let d=l.dek,u=await a.export(d);i={name:e,id:c};let f=this.components.datastore.batch();f.put(o,B(u)),f.put(Oo(e),B(JSON.stringify(i))),await f.commit()}catch(a){throw await Oe(),a}return i}async listKeys(){let e={prefix:F9},t=[];for await(let n of this.components.datastore.query(e))t.push(JSON.parse(P(n.value)));return t}async findKeyById(e){try{let n=(await this.listKeys()).find(o=>o.id===e);if(n==null)throw new m(`Key with id '${e}' does not exist.`,be.ERR_KEY_NOT_FOUND);return n}catch(t){throw await Oe(),t}}async findKeyByName(e){if(!Hn(e))throw await Oe(),new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);let t=Oo(e);try{let n=await this.components.datastore.get(t);return JSON.parse(P(n))}catch(n){throw await Oe(),this.log.error(n),new m(`Key '${e}' does not exist.`,be.ERR_KEY_NOT_FOUND)}}async removeKey(e){if(!Hn(e)||e==="self")throw await Oe(),new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);let t=dn(e),n=await this.findKeyByName(e),o=this.components.datastore.batch();return o.delete(t),o.delete(Oo(e)),await o.commit(),n}async renameKey(e,t){if(!Hn(e)||e==="self")throw await Oe(),new m(`Invalid old key name '${e}'`,be.ERR_OLD_KEY_NAME_INVALID);if(!Hn(t)||t==="self")throw await Oe(),new m(`Invalid new key name '${t}'`,be.ERR_NEW_KEY_NAME_INVALID);let n=dn(e),o=dn(t),s=Oo(e),i=Oo(t);if(await this.components.datastore.has(o))throw await Oe(),new m(`Key '${t}' already exists`,be.ERR_KEY_ALREADY_EXISTS);try{let c=await this.components.datastore.get(n),l=await this.components.datastore.get(s),d=JSON.parse(P(l));d.name=t;let u=this.components.datastore.batch();return u.put(o,c),u.put(i,B(JSON.stringify(d))),u.delete(n),u.delete(s),await u.commit(),d}catch(c){throw await Oe(),c}}async exportKey(e,t){if(!Hn(e))throw await Oe(),new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);if(t==null)throw await Oe(),new m("Password is required",be.ERR_PASSWORD_REQUIRED);let n=dn(e);try{let o=await this.components.datastore.get(n),s=P(o),i=vs.get(this);if(i==null)throw new m("dek missing",be.ERR_INVALID_PARAMETERS);let a=i.dek;return await(await ui(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 ui(n,t);return ht(o.public.bytes,o.bytes)}async importKey(e,t,n){if(!Hn(e)||e==="self")throw await Oe(),new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);if(t==null)throw await Oe(),new m("PEM encoded key is required",be.ERR_PEM_REQUIRED);let o=dn(e);if(await this.components.datastore.has(o))throw await Oe(),new m(`Key '${e}' already exists`,be.ERR_KEY_ALREADY_EXISTS);let i;try{i=await ui(t,n)}catch{throw await Oe(),new m("Cannot read the key, most likely the password is wrong",be.ERR_CANNOT_READ_KEY)}let a;try{a=await i.id();let d=vs.get(this);if(d==null)throw new m("dek missing",be.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,B(t)),l.put(Oo(e),B(JSON.stringify(c))),await l.commit(),c}async importPeer(e,t){try{if(!Hn(e))throw new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);if(t==null)throw new m("PeerId is required",be.ERR_MISSING_PRIVATE_KEY);if(t.privateKey==null)throw new m("PeerId.privKey is required",be.ERR_MISSING_PRIVATE_KEY);let n=await Rr(t.privateKey),o=dn(e);if(await this.components.datastore.has(o))throw await Oe(),new m(`Key '${e}' already exists`,be.ERR_KEY_ALREADY_EXISTS);let i=vs.get(this);if(i==null)throw new m("dek missing",be.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,B(c)),d.put(Oo(e),B(JSON.stringify(l))),await d.commit(),l}catch(n){throw await Oe(),n}}async getPrivateKey(e){if(!Hn(e))throw await Oe(),new m(`Invalid key name '${e}'`,be.ERR_INVALID_KEY_NAME);try{let t=dn(e),n=await this.components.datastore.get(t);return P(n)}catch(t){throw await Oe(),this.log.error(t),new m(`Key '${e}' does not exist.`,be.ERR_KEY_NOT_FOUND)}}async rotateKeychainPass(e,t){if(typeof e!="string")throw await Oe(),new m(`Invalid old pass type '${typeof e}'`,be.ERR_INVALID_OLD_PASS_TYPE);if(typeof t!="string")throw await Oe(),new m(`Invalid new pass type '${typeof t}'`,be.ERR_INVALID_NEW_PASS_TYPE);if(t.length<20)throw await Oe(),new m(`Invalid pass length ${t.length}`,be.ERR_INVALID_PASS_LENGTH);this.log("recreating keychain");let n=vs.get(this);if(n==null)throw new m("dek missing",be.ERR_INVALID_PARAMETERS);let o=n.dek;this.init.pass=t;let s=t!=null&&this.init.dek?.salt!=null?cc(t,this.init.dek.salt,this.init.dek?.iterationCount,this.init.dek?.keyLength,this.init.dek?.hash):"";vs.set(this,{dek:s});let i=await this.listKeys();for(let a of i){let c=await this.components.datastore.get(dn(a.name)),l=P(c),d=await ui(l,o),u=s.toString(),f=await d.export(u),g=this.components.datastore.batch(),h={name:a.name,id:a.id};g.put(dn(a.name),B(f)),g.put(Oo(a.name),B(JSON.stringify(h))),await g.commit()}this.log("keychain reconstructed")}};function pd(r={}){return e=>new hd(e,r)}var Mi=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 gp}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 m("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 O1(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)}},gp=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 we;(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"})(we||(we={}));var fc=Object.freeze({0:"NEW_STREAM",1:"MESSAGE_RECEIVER",2:"MESSAGE_INITIATOR",3:"CLOSE_RECEIVER",4:"CLOSE_INITIATOR",5:"RESET_RECEIVER",6:"RESET_INITIATOR"}),yp=Object.freeze({NEW_STREAM:we.NEW_STREAM,MESSAGE:we.MESSAGE_INITIATOR,CLOSE:we.CLOSE_INITIATOR,RESET:we.RESET_INITIATOR}),V9=Object.freeze({MESSAGE:we.MESSAGE_RECEIVER,CLOSE:we.CLOSE_RECEIVER,RESET:we.RESET_RECEIVER});var wp=1<<20,FI=4<<20,md=class{_buffer;_headerInfo;_maxMessageSize;_maxUnprocessedMessageQueueSize;constructor(e=wp,t=FI){this._buffer=new ue,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===we.NEW_STREAM||o===we.MESSAGE_INITIATOR||o===we.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}=$9(e),{value:o,offset:s}=$9(e,n),i=t&7;if(fc[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}}},VI=128,K9=127;function $9(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&K9)<<n:(s&K9)*Math.pow(2,n),n+=7}while(s>=VI);return e=o-e,{value:t,offset:e}}var Ep=10*1024,bp=class{_pool;_poolOffset;constructor(){this._pool=ze(Ep),this._poolOffset=0}write(e,t){let n=this._pool,o=this._poolOffset;Ve(e.id<<3|e.type,n,o),o+=Ce(e.id<<3|e.type),(e.type===we.NEW_STREAM||e.type===we.MESSAGE_INITIATOR||e.type===we.MESSAGE_RECEIVER)&&e.data!=null?(Ve(e.data.length,n,o),o+=Ce(e.data.length)):(Ve(0,n,o),o+=Ce(0));let s=n.subarray(this._poolOffset,o);Ep-o<100?(this._pool=ze(Ep),this._poolOffset=0):this._poolOffset=o,t.append(s),(e.type===we.NEW_STREAM||e.type===we.MESSAGE_INITIATOR||e.type===we.MESSAGE_RECEIVER)&&e.data!=null&&t.append(e.data)}},KI=new bp;async function*H9(r){for await(let e of r){let t=new ue;KI.write(e,t),yield t}}var xp=class extends Do{name;streamId;send;types;maxDataSize;constructor(e){super(e),this.types=e.direction==="outbound"?yp:V9,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:yp.NEW_STREAM,data:new ue(B(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 q9(r){let{id:e,name:t,send:n,onEnd:o,type:s="initiator",maxMsgSize:i=wp}=r;return new xp({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 $I=1024,HI=1024,qI=1024*1024*4,WI=5,GI=500;function W9(r){let e={...r,type:`${fc[r.type]} (${r.type})`};return r.type===we.NEW_STREAM&&(e.data=P(r.data instanceof Uint8Array?r.data:r.data.subarray())),(r.type===we.MESSAGE_INITIATOR||r.type===we.MESSAGE_RECEIVER)&&(e.data=P(r.data instanceof Uint8Array?r.data:r.data.subarray(),"base16")),e}var gd=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??GI,this.sink=this._createSink(),this._source=st({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=Ke(this._source,n=>H9(n)),this.closeController=new AbortController,this.rateLimiter=new Mi({points:t.disconnectThreshold??WI,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??HI))throw new m("Too many outbound streams open","ERR_TOO_MANY_OUTBOUND_STREAMS");if(s.has(t))throw new Error(`${o} stream ${t} already exists!`);let c=q9({id:t,name:n,send:async l=>{this.log.enabled&&this.log.trace("%s stream %s send",o,t,W9(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=()=>{v1(t,this.log)};this.closeController.signal.addEventListener("abort",n);try{let o=new md(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",W9(e)),e.type===we.NEW_STREAM){if(this._streams.receivers.size===(this._init.maxInboundStreams??$I)){this.log("too many inbound streams open"),this._source.push({id:t,type:we.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:P(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,fc[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??qI;try{switch(n){case we.MESSAGE_INITIATOR:case we.MESSAGE_RECEIVER:if(s.sourceReadableLength()>i)throw this._source.push({id:e.id,type:n===we.MESSAGE_INITIATOR?we.RESET_RECEIVER:we.RESET_INITIATOR}),new m("Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers","ERR_STREAM_INPUT_BUFFER_FULL");s.sourcePush(e.data);break;case we.CLOSE_INITIATOR:case we.CLOSE_RECEIVER:s.remoteCloseWrite();break;case we.RESET_INITIATOR:case we.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 vp=class{protocol="/mplex/6.7.0";_init;components;constructor(e,t={}){this.components=e,this._init=t}createStreamMuxer(e={}){return new gd(this.components,{...e,...this._init})}};function G9(r={}){return e=>new vp(e,r)}var z9="1.0.0",Y9="ping",Q9="ipfs";var Rp="ERR_WRONG_PING_ACK";var yd=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??Q9}/${Y9}/${z9}`,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();Ke(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=qt(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 m("ping timeout",pn))},t.signal?.addEventListener("abort",a,{once:!0});let c=await Ke([o],i,async d=>ds(d)),l=Date.now()-n;if(c==null)throw new m(`Did not receive a ping ack after ${l}ms`,Rp);if(!J(o,c.subarray()))throw new m(`Received wrong ping ack after ${l}ms`,Rp);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 X9(r={}){return e=>new yd(e,r)}var fr;(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"})(fr||(fr={}));var Lo=class extends m{constructor(e,t){super(`WebRTC transport error: ${e}`,t??""),this.name="WebRTCTransportError"}};var Sp=class extends Lo{constructor(e,t){super(`[stream: ${e}] data channel error: ${t}`,fr.ERR_DATA_CHANNEL),this.name="WebRTC/DataChannelError"}};function kp(r,e){return new Sp(r,e)}var _p=class extends Lo{constructor(e){super(`There was a problem with the Multiaddr which was passed in: ${e}`,fr.ERR_INVALID_MULTIADDR),this.name="WebRTC/InappropriateMultiaddrError"}};function wd(r){return new _p(r)}var Ap=class extends Lo{constructor(e){super(`There was a problem with a provided argument: ${e}`,fr.ERR_INVALID_PARAMETERS),this.name="WebRTC/InvalidArgumentError"}};function hc(r){return new Ap(r)}var Ip=class extends Lo{constructor(e,t){super(`Invalid fingerprint "${e}" within ${t}`,fr.ERR_INVALID_FINGERPRINT),this.name="WebRTC/InvalidFingerprintError"}};function Cp(r,e){return new Ip(r,e)}var Dp=class extends Lo{constructor(e){super(`A method (${e}) was called though it has been intentionally left unimplemented.`,fr.ERR_NOT_IMPLEMENTED),this.name="WebRTC/UnimplementedError"}};function j9(r){return new Dp(r)}var Tp=class extends Lo{constructor(e){super(`unsupported hash algorithm: ${e}`,fr.ERR_HASH_NOT_SUPPORTED),this.name="WebRTC/UnsupportedHashAlgorithmError"}};function Z9(r){return new Tp(r)}var J9=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))},jI=function(){function r(e,t,n){this.name=e,this.version=t,this.os=n,this.type="browser"}return r}();var ZI=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=process.platform}return r}();var JI=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 eD=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}();var tD=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}();var rD=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,nD=/(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,ey=3,oD=[["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",rD]],ty=[["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 ny(r){return r?ry(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new tD:typeof navigator<"u"?ry(navigator.userAgent):aD()}function sD(r){return r!==""&&oD.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 ry(r){var e=sD(r);if(!e)return null;var t=e[0],n=e[1];if(t==="searchbot")return new eD;var o=n[1]&&n[1].split(".").join("_").split("_").slice(0,3);o?o.length<ey&&(o=J9(J9([],o,!0),cD(ey-o.length),!0)):o=[];var s=o.join("."),i=iD(r),a=nD.exec(r);return a&&a[1]?new JI(t,s,i,a[1]):new jI(t,s,i)}function iD(r){for(var e=0,t=ty.length;e<t;e++){var n=ty[e],o=n[0],s=n[1],i=s.exec(r);if(i)return o}return null}function aD(){var r=typeof process<"u"&&process.version;return r?new ZI(process.version.slice(1)):null}function cD(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}var oy=ny(),pc=oy!=null&&oy.name==="firefox",Ed=async function*(){},bd=async r=>{},lD=30*1e3;function sy(r,e,t=lD,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 Gr(o.promise,{milliseconds:t})}}).then(async()=>{r.readyState==="open"&&r.close()}).catch(o=>{n.log.error("error closing outbound stream",o)})}var Ss=class{log;peerConnection;remoteAddr;timeline;metrics;source=Ed();sink=bd;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 Qt;(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())})(Qt||(Qt={}));var uD=16*1024*1024,dD=30*1e3,fD=5,hD=2,pD=16*1024,mD=5e3,gD=5e3,Np=class extends Do{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 Gr(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=st(),this.bufferedAmountLowEventTimeout=e.bufferedAmountLowEventTimeout??dD,this.maxBufferedAmount=e.maxBufferedAmount??uD,this.maxMessageSize=(e.maxMessageSize??pD)-fD-hD,this.receiveFinAck=j(),this.finAckTimeout=e.closeTimeout??mD,this.openTimeout=e.openTimeout??gD,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 m("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 ue(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 uc(this.channel,"bufferedamountlow",{timeout:this.bufferedAmountLowEventTimeout})}catch(n){throw n instanceof vo?new m(`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 m(`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 uc(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=Qt.encode({message:n}),s=gr.single(o);await this._sendMessage(s),e.consume(t)}}async sendReset(){await this._sendFlag(Qt.Flag.RESET)}async sendCloseWrite(e){if(await this._sendFlag(Qt.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(Qt.Flag.STOP_SENDING)}processIncomingProtobuf(e){let t=Qt.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===Qt.Flag.FIN&&(this.remoteCloseWrite(),this.log.trace("sending FIN_ACK"),this._sendFlag(Qt.Flag.FIN_ACK).catch(n=>{this.log.error("error sending FIN_ACK immediately",n)})),t.flag===Qt.Flag.RESET&&this.reset(),t.flag===Qt.Flag.STOP_SENDING&&this.remoteCloseRead(),t.flag===Qt.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=Qt.encode({flag:e}),n=gr.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 Fi(r){let{channel:e,direction:t}=r;return new Np({id:t==="inbound"?`i${e.id}`:`r${e.id}`,log:r.logger.forComponent(`libp2p:webrtc:stream:${t}:${e.id}`),...r})}var iy="/webrtc",_s=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??iy,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=Fi({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 Pp(this.components,{...e,peerConnection:this.peerConnection,dataChannelOptions:this.dataChannelOptions,metrics:this.metrics,streams:this.bufferedStreams,protocol:this.protocol})}},Pp=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??iy,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=Fi({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),sy(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=Ed();sink=bd;newStream(){let e=this.peerConnection.createDataChannel("");this.log.trace("opened outgoing datachannel with channel id %s",e.id);let t=Fi({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 Vi=globalThis.RTCPeerConnection,xd=globalThis.RTCSessionDescription,ay=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 vd=async(r,e,t)=>{try{let n=j();for(wD(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 m("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 ay(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 yD(r){return pc?r.iceConnectionState:r.connectionState}function wD(r,e){r[pc?"oniceconnectionstatechange":"onconnectionstatechange"]=t=>{switch(yD(r)){case"connected":e.resolve();break;case"failed":case"disconnected":case"closed":e.reject(new m("RTCPeerConnection was closed","ERR_CONNECTION_CLOSED_BEFORE_CONNECTED"));break;default:break}}}async function cy({peerConnection:r,signal:e,metrics:t,multiaddr:n,connectionManager:o,transportManager:s,log:i}){let{baseAddr:a}=ly(n);t?.dialerEvents.increment({open:!0}),i.trace("dialing base address: %a",a);let c=a.getPeerId();if(c==null)throw new m("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 f=await d.newStream(Rd,{signal:e,runOnTransientConnection:!0}),g=et(f).pb(Xt);try{let h=r.createDataChannel("init");r.onicecandidate=({candidate:b})=>{let E=JSON.stringify(b?.toJSON()??null);i.trace("initiator sending ICE candidate %s",E),g.write({type:Xt.Type.ICE_CANDIDATE,data:E},{signal:e}).catch(S=>{i.error("error sending ICE candidate",S)})},r.onicecandidateerror=b=>{i.error("initiator ICE candidate error",b)};let p=await r.createOffer().catch(b=>{throw i.error("could not execute createOffer",b),new m("Failed to set createOffer","ERR_SDP_HANDSHAKE_FAILED")});i.trace("initiator send SDP offer %s",p.sdp),await g.write({type:Xt.Type.SDP_OFFER,data:p.sdp},{signal:e}),await r.setLocalDescription(p).catch(b=>{throw i.error("could not execute setLocalDescription",b),new m("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")});let y=await g.read({signal:e});if(y.type!==Xt.Type.SDP_ANSWER)throw new m("Remote should send an SDP answer","ERR_SDP_HANDSHAKE_FAILED");i.trace("initiator receive SDP answer %s",y.data);let w=new xd({type:"answer",sdp:y.data});return await r.setRemoteDescription(w).catch(b=>{throw i.error("could not execute setRemoteDescription",b),new m("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")}),i.trace("initiator read candidates until connected"),await vd(r,g,{direction:"initiator",signal:e,log:i}),i.trace("initiator connected, closing init channel"),h.close(),i.trace("initiator closing signalling stream"),await g.unwrap().unwrap().close({signal:e}),i.trace("initiator connected to remote address %s",n),{remoteAddress:n}}catch(h){throw r.close(),f.abort(h),h}finally{r.onicecandidate=null,r.onicecandidateerror=null}}finally{if(u)try{await d.close({signal:e})}catch(f){d.abort(f)}}}var Sd=class extends Re{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=>Yr.matches(t)).map(t=>t.encapsulate(`/webrtc/p2p/${this.peerId}`))).flat()}async close(){this.shutdownController.abort(),this.safeDispatchEvent("close",{})}};async function uy({peerConnection:r,stream:e,signal:t,connection:n,log:o}){o.trace("new inbound signaling stream");let s=et(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(f=>{o.error("error sending ICE candidate",f)})};let a=await s.read({signal:t});if(a.type!==Xt.Type.SDP_OFFER)throw new m(`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 xd({type:"offer",sdp:a.data});await r.setRemoteDescription(c).catch(d=>{throw o.error("could not execute setRemoteDescription",d),new m("Failed to set remoteDescription","ERR_SDP_HANDSHAKE_FAILED")});let l=await r.createAnswer().catch(d=>{throw o.error("could not execute createAnswer",d),new m("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 m("Failed to set localDescription","ERR_SDP_HANDSHAKE_FAILED")}),o.trace("recipient read candidates until connected"),await vd(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=X(`/webrtc/p2p/${n.remoteAddr.getPeerId()}`);return o.trace("recipient connected to remote address %s",i),{remoteAddress:i}}var ED="/webrtc",bD="/p2p-circuit",Rd="/webrtc-signaling/0.0.1",xD=30*1e3,_d=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,le(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(Rd,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(Rd),this._started=!1}createListener(e){return new Sd(this.components,{shutdownController:this.shutdownController})}[Symbol.toStringTag]="@libp2p/webrtc";[tn]=!0;filter(e){return e.filter(M4.exactMatch)}async dial(e,t){this.log.trace("dialing address: %a",e);let n=new Vi(this.init.rtcConfiguration),o=new _s(this.components,{peerConnection:n,dataChannelOptions:this.init.dataChannel}),{remoteAddress:s}=await cy({peerConnection:n,multiaddr:e,dataChannelOptions:this.init.dataChannel,signal:t.signal,connectionManager:this.components.connectionManager,transportManager:this.components.transportManager,log:this.log}),i=new Ss(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??xD),o=new Vi(this.init.rtcConfiguration),s=new _s(this.components,{peerConnection:o,dataChannelOptions:this.init.dataChannel});try{let{remoteAddress:i}=await uy({peerConnection:o,connection:e,stream:t,signal:n,log:this.log}),a=new Ss(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 ly(r){let e=r.toString().split(ED+"/");if(e.length!==2)throw new m("webrtc protocol was not present in multiaddr",fr.ERR_INVALID_MULTIADDR);if(!e[0].includes(bD))throw new m("p2p-circuit protocol was not present in multiaddr",fr.ERR_INVALID_MULTIADDR);let t=X(e[0]),o=X("/"+e[1]).getPeerId();if(o==null)throw new m("destination peer id was missing",fr.ERR_INVALID_MULTIADDR);let s=t.protos().pop();if(s===void 0)throw new m("invalid multiaddr",fr.ERR_INVALID_MULTIADDR);return s.name!=="p2p"&&(t=t.encapsulate(`/p2p/${o}`)),{baseAddr:t,peerId:ge(o)}}var Vw=Ye(l3(),1);var Pw=Ye(l3(),1);var u3=Object.values(mr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function Ow(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:Dk(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 Cp("","no fingerprint on local certificate");return n}var Ik=/^a=fingerprint:(?:\w+-[0-9]+)\s(?<fingerprint>(:?[0-9a-fA-F]{2})+)$/m;function Dk(r){return r.match(Ik)?.groups?.fingerprint}function Tk(r){for(let e of r.protoNames())if(e.startsWith("ip"))return e.toUpperCase();return"IP6"}function Ud(r){let t=r.stringTuples().filter(n=>n[0]===Uw).map(n=>n[1])[0];if(t===void 0||t==="")throw wd(`Couldn't find a certhash component of multiaddr: ${r.toString()}`);return t}function d3(r){let e=u3.decode(r);return Pw.decode(e)}function kk(r){let e=d3(Ud(r)),t=f3(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 Cp(n,r.toString());return[`${t.toUpperCase()} ${o.join(":").toUpperCase()}`,n]}function f3(r){switch(r){case"sha1":return"sha-1";case"sha2-256":return"sha-256";case"sha2-512":return"sha-512";default:throw Z9(r)}}function Ck(r,e){let{host:t,port:n}=r.toOptions(),o=Tk(r),[s]=kk(r);return`v=0
|
|
23
23
|
o=- 0 0 IN ${o} ${t}
|
|
24
24
|
s=-
|
|
25
25
|
c=IN ${o} ${t}
|
|
@@ -34,24 +34,24 @@ a=fingerprint:${s}
|
|
|
34
34
|
a=sctp-port:5000
|
|
35
35
|
a=max-message-size:16384
|
|
36
36
|
a=candidate:1467250027 1 UDP 1467250027 ${t} ${n} typ host\r
|
|
37
|
-
`}function
|
|
37
|
+
`}function Lw(r,e){return{type:"answer",sdp:Ck(r,e)}}function Bw(r,e){if(r.sdp===void 0)throw hc("Can't munge a missing SDP");return r.sdp=r.sdp.replace(/\na=ice-ufrag:[^\n]*\n/,`
|
|
38
38
|
a=ice-ufrag:`+e+`
|
|
39
39
|
`).replace(/\na=ice-pwd:[^\n]*\n/,`
|
|
40
40
|
a=ice-pwd:`+e+`
|
|
41
|
-
`),r}var Wb=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),zb=r=>[...Array(r)].map(()=>Wb.at(Math.floor(Math.random()*Wb.length))).join("");var ON=1e4,Nae=Z("webrtc-direct").code,qb=Z("certhash").code,Pd=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 ow("WebRTCTransport.createListener")}filter(e){return e.filter(C9.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[en]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw pd("we need to have the remote's PeerId");let i=ye(s),a=p3(Od(e)),c=await Ki.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:m3(a.name)}),l=new Ki({certificates:[c]});try{let d=new Promise((_,k)=>{let O=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let P=`Data channel was never opened: state: ${O.readyState}`;this.log.error(P),this.metrics?.dialerEvents.increment({open_error:!0}),k(Op("data",P))},ON);O.onopen=P=>{clearTimeout(N),_(O)},O.onerror=P=>{clearTimeout(N);let Y=`Error opening a data channel for handshaking: ${P.target?.toString()??"not specified"}`;this.log.error(Y),this.metrics?.dialerEvents.increment({unknown_error:!0}),k(Op("data",Y))}}),u="libp2p+webrtc+v1/"+zb(32),f=await l.createOffer(),m=Hb(f,u);await l.setLocalDescription(m);let h=$b(e,u);await l.setRemoteDescription(h);let p=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),E=Ii({prologueBytes:w})(this.components),b=Vi({channel:p,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),S={...b,sink:b.sink.bind(b),source:async function*(){for await(let _ of b.source)for(let k of _)yield k}()},R=new Ts(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),A=mc?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(A,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":R.close().catch(_=>{this.log.error("error closing connection",_)}).finally(()=>{n.abort()});break;default:break}},{signal:o}),this.metrics?.dialerEvents.increment({peer_connection:!0});let D=new ks(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await E.secureInbound(y,S,i),await t.upgrader.upgradeOutbound(R,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw pc("no local certificate");let o=Kb(e,{log:this.log});if(o==null)throw pc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=L(s,"hex"),a=Gb.encode(i,t),c=h3.decode(Od(n)),l=L("libp2p-webrtc-noise:");return _e([l,a,c])}};function Yb(r){return e=>new Pd(e,r)}function Xb(r){return e=>new xd(e,r)}var PN=[Z("tcp").code,Z("dns").code,Z("dnsaddr").code,Z("dns4").code,Z("dns6").code];function Qb(r){let e;try{e=Z("sni").code}catch{return null}for(let[t,n]of r)if(t===e&&n!==void 0)return n;return null}function jb(r){return r.some(([e,t])=>e===Z("tls").code)}function sr(r,e,t){let n=Zb[Z(r).name];if(n===void 0)throw new Error(`Can't interpret protocol ${Z(r).name}`);let o=n(e,t);return r===Z("ip6").code?`[${o}]`:o}var Zb={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://${sr(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://${sr(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`${sr(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`${sr(t[0],t[1]??"",e)}/p2p/${r}`},http:(r,e)=>{let t=jb(e),n=Qb(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=sr(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 sr(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t===void 0)throw new Error("Unexpected end of multiaddr");return sr(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=sr(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=jb(e),n=Qb(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=sr(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=sr(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`${sr(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`${sr(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`${sr(t[0],t[1]??"",e)}/p2p-webrtc-direct`}};function Jb(r,e){let n=Q(r).stringTuples(),o=n.pop();if(o===void 0)throw new Error("Unexpected end of multiaddr");let s=Z(o[0]),i=Zb[s.name];if(i==null)throw new Error(`No interpreter found for ${s.name}`);let a=i(o[1]??"",n);return e?.assumeHttp!==!1&&PN.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 eE=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 tE=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await eE(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 sE=ke(nE(),1);function oE(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var iE=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 sE.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let f=null;typeof u.data=="string"&&(f=L(u.data)),oE(u.data)&&(f=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(f=u.data),f!=null&&i(f)},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 aE=(r,e)=>{e=e??{};let t=iE(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:tE(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 cE=WebSocket;var BN={"http:":"ws:","https:":"wss:"},lE="ws:",uE=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??lE}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??lE,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(BN))t.protocol===n&&(t.protocol=o);return t};function dE(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=uE(r,t),o=new cE(n.toString(),e.websocket);return aE(o,e)}function fE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return ki.matches(t)||_s.matches(t)})}function hE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return _s.matches(t)})}function pE(){throw new Error("WebSocket Servers can not be created in the browser!")}function mE(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 w3=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";[en]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=mE(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=se(),s=dE(Jb(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 pE({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):P1||L1?hE(e):fE(e)}};function gE(r={}){return e=>new w3(e,r)}async function b3(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 h=n.findIndex(p=>p===m);h!==-1&&(n.splice(h,1),m.timeline.close=Date.now(),o?.(m))}let d=!1,u=!1;(async function(){let h=await a.closed.catch(p=>p);if(h!=null){let p=h.message;p.includes("aborted by the remote server")||p.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}d=!0,d&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await c.closed.catch(p=>p);h!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,d&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let f=!1,m={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){d||(a.abort(h).catch(p=>{i.error("could not abort stream",p)}),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(h){this.status="closing",await Promise.all([m.closeRead(h),m.closeWrite(h)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await c.cancel()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(d=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}d&&l()},async closeWrite(h){if(!d){d=!0,this.writeStatus="closing";try{await a.close()}catch(p){p.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 h=await c.read();if(h.done){u=!0,d&&l();return}yield new de(h.value)}}(),sink:async function(h){if(f)throw new Error("sink already called on stream");f=!0;try{this.writeStatus="writing";for await(let p of h)if(p instanceof Uint8Array)await a.write(p);else for(let y of p)await a.write(y);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await m.closeWrite()}},log:i};return m}function E3(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function yE(r,e){return e.filter(n=>!!r.find(o=>j(n,o))).length===e.length}var VN=Object.values(ur).map(r=>r.decoder).reduce((r,e)=>r.or(e));function KN(r){return ir.decode(VN.decode(r))}function wE(r){if(!k1.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===Z("certhash").code).map(([i,a])=>KN(a??"")),n=e.filter(([i,a])=>i===Z("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 x3=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";[en]=!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}=wE(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,f=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let m=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(l=h=>{if(!d)try{this.metrics?.dialerEvents.increment({[h]:!0}),m.close()}catch(p){this.log.error("error closing wt session",p)}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([m.closed,m.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),m.closed.catch(h=>{this.log.error("error on remote wt session close",h)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(m,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:h=>{this.log("aborting webtransport due to passed err",h),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...E3()},f=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(m),skipProtection:!0})}catch(m){throw this.log.error("caught wt session err",m),l(f?"upgrade_error":u?"noise_error":"ready_error"),m}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 f of u)f instanceof Uint8Array?await i.write(f):await i.write(f.subarray())}},l=Ii()(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}`)}),!yE(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 b3(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 b3(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)},...E3()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(k1.exactMatch)}};function bE(r={}){return e=>new x3(e,r)}var v3=ke(gu(),1);function EE(r,e){let t=e.map((n,o)=>({record:an(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===$t.ValidityType.EOL&&o.record.validityType===$t.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 Md="1.2.4",Ud="libp2p";var vE="4.0.2",_E="helia";var SE={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Fd(r={}){return{peerId:r.peerId,addresses:{listen:["/webrtc"]},transports:[X2({discoverRelays:1}),Xb(),Yb(),bE(),gE()],connectionEncryption:[Ii()],streamMuxers:[Hg(),Jy()],peerDiscovery:[a9(SE)],services:{autoNAT:Xg(),dcutr:B9(),delegatedRouting:()=>I7("https://delegated-ipfs.dev"),dht:Ay({clientMode:!0,validators:{ipns:Nu},selectors:{ipns:EE}}),identify:X9({agentVersion:`${_E}/${vE} ${Ud}/${Md} UserAgent=${globalThis.navigator.userAgent}`}),keychain:ud(r.keychain),ping:nw()}}}var _t={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var ji;(function(r){let e;(function(o){let s;o.codec=()=>(s==null&&(s=te((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=>ee(i,o.codec()),o.decode=i=>J(i,o.codec())})(e=r.Peer$metadataEntry||(r.Peer$metadataEntry={}));let t;(function(o){let s;o.codec=()=>(s==null&&(s=te((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),Kd.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=Kd.codec().decode(i,i.uint32());break;default:i.skipType(d&7);break}}return c})),s),o.encode=i=>ee(i,o.codec()),o.decode=i=>J(i,o.codec())})(t=r.Peer$tagsEntry||(r.Peer$tagsEntry={}));let n;r.codec=()=>(n==null&&(n=te((o,s,i={})=>{if(i.lengthDelimited!==!1&&s.fork(),o.addresses!=null)for(let a of o.addresses)s.uint32(10),Vd.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(Vd.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=>ee(o,r.codec()),r.decode=o=>J(o,r.codec())})(ji||(ji={}));var Vd;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Vd||(Vd={}));var Kd;(function(r){let e;r.codec=()=>(e==null&&(e=te((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=>ee(t,r.codec()),r.decode=t=>J(t,r.codec())})(Kd||(Kd={}));function Zi(r,e){let t=ji.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=j8({...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 _3="/peers/";function Ji(r){if(!Ks(r)||r.type==null)throw new g("Invalid PeerId",_t.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Oe(`${_3}${e}`)}async function RE(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)),!so(o.multiaddr))throw new g("Multiaddr was invalid",_t.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 Hd(r,e,t,n){if(e==null)throw new g("Invalid PeerData",_t.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!j(e.publicKey,r.publicKey))throw new g("publicKey bytes do not match peer id publicKey bytes",_t.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",_t.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=$d(u,{validate:AE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=$d(u,{validate:IE,map:DE})}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[f,m]of u)m==null?a.delete(f):a.set(f,m);a=$d([...a.entries()],{validate:AE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),f=new Map(c);for(let[m,h]of u)h==null?f.delete(m):f.set(m,h);c=$d([...f.entries()],{validate:IE,map:DE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await RE(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,f)=>u.localeCompare(f)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function $d(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 AE(r,e){if(typeof r!="string")throw new g("Metadata key must be a string",_t.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new g("Metadata value must be a Uint8Array",_t.ERR_INVALID_PARAMETERS)}function IE(r,e){if(typeof r!="string")throw new g("Tag name must be a string",_t.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new g("Tag value must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new g("Tag value must be between 0-100",_t.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new g("Tag ttl must be an integer",_t.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new g("Tag ttl must be between greater than 0",_t.ERR_INVALID_PARAMETERS)}}function DE(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 qd(r,e,t){let n=r.toString().split("/")[2],o=it.decode(n),s=Ye(o),i=t.get(s);if(i!=null)return i;let a=Zi(s,e);return t.set(s,a),a}function $N(r,e){return r==null?{}:{prefix:_3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(qd(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(qd(n.key,n.value,e),qd(o.key,o.value,e)))}}var Wd=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(Ji(e))}async delete(e){if(this.peerId.equals(e))throw new g("Cannot delete self peer",_t.ERR_INVALID_PARAMETERS);await this.datastore.delete(Ji(e))}async load(e){let t=await this.datastore.get(Ji(e));return Zi(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await Hd(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 Hd(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 Hd(e,t,"merge",{addressFilter:this.addressFilter,existingPeer:o});return this.#t(e,s,n,o)}async*all(e){let t=new wt;for await(let{key:n,value:o}of this.datastore.query($N(e??{},t))){let s=qd(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Ji(e)),n=Zi(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=ji.encode(t);return n!=null&&j(s,n)?{peer:Zi(e,s),previous:o,updated:!1}:(await this.datastore.put(Ji(e),s),{peer:Zi(e,s),previous:o,updated:!0})}};var zd=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 Wd(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 Ha(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 Gr.openAndCertify(e,rr.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=rr.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 Gr.createFromProtobuf(s.peerRecordEnvelope),a=rr.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 TE(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var HN=r=>r;function S3(r,e){let t=r.getPeerId();return t!=null&&ye(t).equals(e)&&(r=r.decapsulate(Q(`/p2p/${e.toString()}`))),r}var Gd=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??HN,this._updatePeerStoreAddresses=TE(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=S3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=S3(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=S3(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 R3=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=Jn())}isStarted(){return this._started}async _invokeStartableMethod(e){await Promise.all(Object.values(this.components).filter(t=>kc(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")}},qN=["metrics","connectionProtector"],WN=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function kE(r={}){let e=new R3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!WN.includes(o)){let i=e.components[o];if(i==null&&!qN.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 CE(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!Sr(`${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 A3(r){try{let{address:e}=r.nodeAddress();return!!Sr(e)}catch{return!0}}function zN(r,e){let t=A3(r.multiaddr),n=A3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function GN(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function YN(r,e){let t=rc.exactMatch(r.multiaddr),n=rc.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function ea(r,e){let t=zN(r,e);if(t!==0)return t;let n=YN(r,e);return n!==0?n:GN(r,e)}var D3=ke(kf(),1),T3=ke(PE(),1);function Yd(r,e,t){return`${r}?name=${e}&type=${t}`}async function LE(r,e){return await(await fetch(r,{headers:new Headers({accept:"application/dns-json"}),signal:e})).json()}function Os(r,e){return`${e}_${r}`}var I3=Object.assign((0,D3.default)("dns-over-http-resolver"),{error:(0,D3.default)("dns-over-http-resolver:error")}),k3=class{_cache;_TXTcache;_servers;_request;_abortControllers;constructor(e={}){this._cache=new T3.default({max:e?.maxCache??100}),this._TXTcache=new T3.default({max:e?.maxCache??100}),this._servers=["https://cloudflare-dns.com/dns-query","https://dns.google/resolve"],this._request=e.request??LE,this._abortControllers=[]}cancel(){this._abortControllers.forEach(e=>{e.abort()})}getServers(){return this._servers}_getShuffledServers(){let e=[...this._servers];for(let t=e.length-1;t>0;t--){let n=Math.floor(Math.random()*t),o=e[t];e[t]=e[n],e[n]=o}return e}setServers(e){this._servers=e}async resolve(e,t="A"){switch(t){case"A":return this.resolve4(e);case"AAAA":return this.resolve6(e);case"TXT":return this.resolveTxt(e);default:throw new Error(`${t} is not supported`)}}async resolve4(e){let t="A",n=this._cache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryA ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolve6(e){let t="AAAA",n=this._cache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>d.data),l=Math.min(...a.Answer.map(d=>d.TTL));return this._cache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryAaaa ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}async resolveTxt(e){let t="TXT",n=this._TXTcache.get(Os(e,t));if(n!=null)return n;let o=!1;for(let s of this._getShuffledServers()){let i=new AbortController;this._abortControllers.push(i);try{let a=await this._request(Yd(s,e,t),i.signal),c=a.Answer.map(d=>[d.data.replace(/['"]+/g,"")]),l=Math.min(...a.Answer.map(d=>d.TTL));return this._TXTcache.set(Os(e,t),c,{ttl:l}),c}catch{i.signal.aborted&&(o=!0),I3.error(`${s} could not resolve ${e} record ${t}`)}finally{this._abortControllers=this._abortControllers.filter(a=>a!==i)}}throw o?Object.assign(new Error("queryTxt ECANCELLED"),{code:"ECANCELLED"}):new Error(`Could not resolve ${e} record ${t}`)}clearCache(){this._cache.clear(),this._TXTcache.clear()}},BE=k3;var ME=BE;var{code:JN}=Z("dnsaddr");async function ta(r,e={}){let t=new ME;e.signal!=null&&e.signal.addEventListener("abort",()=>{t.cancel()});let n=r.getPeerId(),[,o]=r.stringTuples().find(([a])=>a===JN)??[];if(o==null)throw new Error("No hostname found in multiaddr");let i=(await t.resolveTxt(`_dnsaddr.${o}`)).flat().map(a=>a.split("=")[1]).filter(Boolean);return n!=null&&(i=i.filter(a=>a.includes(n))),i}var Yn;(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"})(Yn||(Yn={}));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 eO={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:ta},addressSorter:ea},transportManager:{faultTolerance:Qn.FATAL_ALL}};async function UE(r){let e=Ui(eO,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new g(Yn.ERR_PROTECTOR_REQUIRED,z.ERR_PROTECTOR_REQUIRED);if(!(await ut(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 Xd(r){if(Ks(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(!so(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 Qd="last-dial-failure";var jd=5,Zd=100,Jd=50,FE=1e3*60*7;var Ps={minConnections:jd,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:FE,autoDialDiscoveredPeersDebounce:10},ef=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??Ps.minConnections,this.autoDialPriority=t.autoDialPriority??Ps.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ps.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ps.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ps.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ps.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new Po({concurrency:t.autoDialConcurrency??Ps.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 Je(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 wt;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,f=i.get(d.id)??0;return u>f?-1:u<f?1:0}).filter(l=>{let d=l.metadata.get(Qd);if(d==null)return!0;let u=parseInt(B(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 VE={maxConnections:Zd,allow:[]},tf=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??VE.maxConnections,this.allow=t.allow??VE.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 wt;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,f=c.timeline.open;return u<f?1:u>f?-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 P3(r,e){if(!r.protoNames().includes("dnsaddr"))return[r];let n=await nO(r,e),i=(await Promise.all(n.map(async a=>P3(a,e)))).flat().reduce((a,c)=>(a.find(l=>l.equals(c))==null&&a.push(c),a),[]);return e.log("resolved %s to",r,i.map(a=>a.toString())),i}async function nO(r,e){try{return r=Q(r.toString()),await r.resolve(e)}catch(t){return e.log.error(`multiaddr ${r.toString()} could not be resolved`,t),[]}}var rf={addressSorter:ea,maxParallelDials:Jd,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:ta}},nf=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??rf.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??rf.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??rf.dialTimeout,this.connections=t.connections??new wt,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,ge(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))ul.set(n,o);this.queue=new Vn({concurrency:t.maxParallelDials??rf.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,ge(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Xd(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)}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 f 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 m=await this.components.transportManager.dial(f.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",f.multiaddr),m}catch(m){if(this.log.error("dial failed to %a",f.multiaddr,m),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Qd]:L(Date.now().toString())}})}catch(h){this.log.error("could not update last dial failure key for %p",n,h)}if(c.aborted)throw new g(m.message,yn);u.push(m)}}throw u.length===1?u[0]:new Tc(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=lt([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return ge(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",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:f})=>f.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:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,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 f=await P3(u.multiaddr,{...n,log:this.log});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(m=>({multiaddr:m,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.protos().pop()?.path===!0?f:f.multiaddr.getPeerId()==null?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getPeerId();return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),m=a.get(f);if(m!=null){m.isCertified=m.isCertified||u.isCertified||!1;continue}a.set(f,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}};var iO=50,Ls={minConnections:jd,maxConnections:Zd,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},of=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??Ls.maxConnections;let n=t.minConnections??Ls.minConnections;if(this.maxConnections<n)throw new g("Connection Manager maxConnections must be greater than minConnections",z.ERR_INVALID_PARAMETERS);this.connections=new wt,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??Ls.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Fi({points:t.inboundConnectionThreshold??Ls.inboundConnectionThreshold,duration:1}),this.autoDial=new ef({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??Ls.autoDialConcurrency,autoDialPriority:t.autoDialPriority??Ls.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??Ls.autoDialMaxQueueLength}),this.connectionPruner=new tf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new nf(e,{addressSorter:t.addressSorter??ea,maxParallelDials:t.maxParallelDials??Jd,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:ta},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",z.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Xd(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??iO}),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))}))}};var sf=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 Je;for await(let s of Tt(...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(Yn.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(Yn.NOT_STARTED_YET,z.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var af=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=Tt(...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(Yn.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 Je;for await(let s of Hn(async function*(){let i=Tt(...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 M3=32,U3=64,cf=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=Ui.bind({ignoreUndefined:!0})({maxInboundStreams:M3,maxOutboundStreams:U3},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 lf=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=jr({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??Qn.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.transportForMultiaddr(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()}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",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.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 f=u.findIndex(m=>m===d);u.splice(f,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!==Qn.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===Qn.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 St="/multistream/1.0.0";var aO=L(`
|
|
42
|
-
`);async function
|
|
43
|
-
`),i=
|
|
44
|
-
`);await
|
|
45
|
-
`),t),t.log.trace("select: reading protocol response");let l=await
|
|
46
|
-
`;yield new
|
|
47
|
-
`),
|
|
48
|
-
`),
|
|
49
|
-
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',
|
|
50
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',
|
|
51
|
-
`),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new
|
|
52
|
-
`))),
|
|
53
|
-
`));t.log.trace('handle: respond with "%s" for %s',e,o),await
|
|
54
|
-
`),t),t.log('handle: responded with "na" for "%s"',o)}}var dO=500,V3=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(dO);ge(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 HE(r){return new V3(r)}var fO=3e4;function hO(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 M3}function pO(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??U3}function qE(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var uf=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??3e4,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",yn))};l.addEventListener("abort",d,{once:!0}),ge(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 f=this.components.connectionProtector;f!=null&&(e.log("protecting the inbound connection"),u=await f.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let f={...u,...o};await this.shouldBlockConnection(s,f,"denyInboundEncryptedConnection")}else{let f=e.remoteAddr.getPeerId();if(f==null)throw new g("inbound connection that skipped encryption must have a peer id",z.ERR_INVALID_MULTIADDR);let m=ye(f);c="native",s=m}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let f=await this._multiplexInbound({...u,...o},this.muxers);a=f.muxerFactory,i=f.stream}}catch(f){throw e.log.error("failed to upgrade inbound connection",f),f}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:h=>{u!=null&&Promise.resolve().then(async()=>{let p=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await Rc(h,p,{log:h.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let E=hO(w,this.components.registrar);if(qE(w,"inbound",u)===E){let S=new g(`Too many inbound protocol streams for protocol "${w}" - limit ${E}`,z.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw h.abort(S),S}h.source=y.source,h.sink=y.sink,h.protocol=w,y.closeWrite!=null&&(h.closeWrite=y.closeWrite),y.closeRead!=null&&(h.closeRead=y.closeRead),y.close!=null&&(h.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(h,u),this._onStream({connection:u,stream:h,protocol:w})}).catch(async p=>{u.log.error("error handling incoming stream id %s",h.id,p.message,p.code,p.stack),h.timeline.close==null&&await h.close()})}}),d=async(h,p={})=>{if(l==null)throw new g("Stream is not multiplexed",z.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",h);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,h);try{if(p.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let R=AbortSignal.timeout(fO);ge(1/0,R),p={...p,signal:R}}y.log.trace("selecting protocol from protocols %s",h);let{stream:w,protocol:E}=await Sc(y,h,{...p,log:y.log,yieldBytes:!0});y.log("selected protocol %s",E);let b=pO(E,this.components.registrar,p);if(qE(E,"outbound",u)>=b){let R=new g(`Too many outbound protocol streams for protocol "${E}" - limit ${b}`,z.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(R),R}return await this.components.peerStore.merge(i,{protocols:[E]}),y.source=w.source,y.sink=w.sink,y.protocol=E,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",h,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(h=>{u.log.error("error piping data through muxer",h)}));let f=o.timeline;o.timeline=new Proxy(f,{set:(...h)=>(u!=null&&h[1]==="close"&&h[2]!=null&&f.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(p){u.log.error("error closing connection after timeline close",p)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(p=>{u.log.error("error thrown while dispatching connection:close event",p)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let m=()=>{throw new g("connection is not multiplexed",z.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=HE({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??m,getStreams:()=>l!=null?l.streams:[],close:async h=>{l!=null&&(u.log.trace("close muxer"),await l.close(h)),u.log.trace("close maconn"),await o.close(h),u.log.trace("closed maconn")},abort:h=>{o.abort(h),l?.abort(h)}}),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 Rc(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 Sc(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 Sc(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 Rc(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 K3=class extends Ce{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Ce,n=t.dispatchEvent.bind(t);t.dispatchEvent=a=>{let c=n(a),l=this.dispatchEvent(new mt(a.type,{detail:a.detail}));return c||l},ge(1/0,t),this.peerId=e.peerId,this.logger=e.logger??Jn(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=kE({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:Ud,version:Md},logger:this.logger,events:t,datastore:e.datastore??new ws,connectionGater:CE(e.connectionGater)});this.peerStore=this.configureComponent("peerStore",new zd(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 uf(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 lf(this.components,e.transportManager)),this.configureComponent("connectionManager",new of(this.components,e.connectionManager)),this.configureComponent("registrar",new cf(this.components)),this.configureComponent("addressManager",new Gd(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 af(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 sf(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[Zr]!=null&&(this.log("registering service %s for content routing",a),i.push(l[Zr])),l[Jr]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[Jr])),l[zo]!=null&&(this.log("registering service %s for peer discovery",a),l[zo].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 Je;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={}){so(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=_e([L("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return $r(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)}#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 WE(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 gr(e.privateKey),new K3(await UE(r))}async function zE(r={}){let e=await WE(r);return r.start!==!1&&await e.start(),e}async function GE(r){let e=r.libp2p?.peerId,t=r.logger??Jn(),n=new Oe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=ud(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=Fd(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await zE({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function mO(r={}){let e=r.datastore??new ws,t=r.blockstore??new Va,n;gO(r.libp2p)?n=r.libp2p:n=await GE({...r,libp2p:{...r.libp2p,start:void 0},datastore:e});let o=new ju({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[xh(),Eh()],routers:[K0(n)]});return r.start!==!1&&await o.start(),o}function gO(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Ic(yO);})();
|
|
41
|
+
`),r}var Mw=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),Fw=r=>[...Array(r)].map(()=>Mw.at(Math.floor(Math.random()*Mw.length))).join("");var Pk=1e4,Mse=Z("webrtc-direct").code,Uw=Z("certhash").code,Md=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 j9("WebRTCTransport.createListener")}filter(e){return e.filter(B4.exactMatch)}[Symbol.toStringTag]="@libp2p/webrtc-direct";[tn]=!0;async _connect(e,t){let n=new AbortController,o=n.signal,s=e.getPeerId();if(s===null)throw wd("we need to have the remote's PeerId");let i=ge(s),a=d3(Ud(e)),c=await Vi.generateCertificate({name:"ECDSA",namedCurve:"P-256",hash:f3(a.name)}),l=new Vi({certificates:[c]});try{let d=new Promise((R,k)=>{let O=l.createDataChannel("",{negotiated:!0,id:0}),N=setTimeout(()=>{let L=`Data channel was never opened: state: ${O.readyState}`;this.log.error(L),this.metrics?.dialerEvents.increment({open_error:!0}),k(kp("data",L))},Pk);O.onopen=L=>{clearTimeout(N),R(O)},O.onerror=L=>{clearTimeout(N);let Y=`Error opening a data channel for handshaking: ${L.target?.toString()??"not specified"}`;this.log.error(Y),this.metrics?.dialerEvents.increment({unknown_error:!0}),k(kp("data",Y))}}),u="libp2p+webrtc+v1/"+Fw(32),f=await l.createOffer(),g=Bw(f,u);await l.setLocalDescription(g);let h=Lw(e,u);await l.setRemoteDescription(h);let p=await d,y=this.components.peerId,w=this.generateNoisePrologue(l,a.code,e),b=Ai({prologueBytes:w})(this.components),E=Fi({channel:p,direction:"inbound",logger:this.components.logger,...this.init.dataChannel??{}}),S={...E,sink:E.sink.bind(E),source:async function*(){for await(let R of E.source)for(let k of R)yield k}()},_=new Ss(this.components,{peerConnection:l,remoteAddr:e,timeline:{open:Date.now()},metrics:this.metrics?.dialerEvents}),A=pc?"iceconnectionstatechange":"connectionstatechange";l.addEventListener(A,()=>{switch(l.connectionState){case"failed":case"disconnected":case"closed":_.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 D=new _s(this.components,{peerConnection:l,metrics:this.metrics?.dialerEvents,dataChannelOptions:this.init.dataChannel});return await b.secureInbound(y,S,i),await t.upgrader.upgradeOutbound(_,{skipProtection:!0,skipEncryption:!0,muxerFactory:D})}catch(d){throw l.close(),d}}generateNoisePrologue(e,t,n){if(e.getConfiguration().certificates?.length===0)throw hc("no local certificate");let o=Ow(e,{log:this.log});if(o==null)throw hc("no local fingerprint found");let s=o.trim().toLowerCase().replaceAll(":",""),i=B(s,"hex"),a=Vw.encode(i,t),c=u3.decode(Ud(n)),l=B("libp2p-webrtc-noise:");return xe([l,a,c])}};function Kw(r){return e=>new Md(e,r)}function $w(r){return e=>new _d(e,r)}var Hw=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 qw=(r,e)=>(e=e??{},e.closeOnEnd=e.closeOnEnd!==!1,async n=>{for await(let o of n){try{await Hw(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 Yw=Ye(Gw(),1);function zw(r){return r instanceof ArrayBuffer||r?.constructor?.name==="ArrayBuffer"&&typeof r?.byteLength=="number"}var Qw=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 Yw.EventIterator(({push:i,stop:a,fail:c})=>{let l=u=>{let f=null;typeof u.data=="string"&&(f=B(u.data)),zw(u.data)&&(f=new Uint8Array(u.data)),u.data instanceof Uint8Array&&(f=u.data),f!=null&&i(f)},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 zw(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 Xw=(r,e)=>{e=e??{};let t=Qw(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:qw(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 jw=WebSocket;var Lk={"http:":"ws:","https:":"wss:"},Zw="ws:",Jw=(r,e)=>{if(r.startsWith("//")&&(r=`${e?.protocol??Zw}${r}`),r.startsWith("/")&&e!=null){let n=e.protocol??Zw,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(Lk))t.protocol===n&&(t.protocol=o);return t};function eE(r,e){let t=typeof window>"u"?void 0:window.location;e=e??{};let n=Jw(r,t),o=new jw(n.toString(),e.websocket);return Xw(o,e)}function tE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return Ti.matches(t)||ws.matches(t)})}function rE(r){return r.filter(e=>{if(e.protoCodes().includes(290))return!1;let t=e.decapsulateCode(421);return ws.matches(t)})}function nE(){throw new Error("WebSocket Servers can not be created in the browser!")}function oE(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 m("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 m3=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";[tn]=!0;async dial(e,t){this.log("dialing %s",e),t=t??{};let n=await this._connect(e,t),o=oE(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 jt;let n=e.toOptions();this.log("dialing %s:%s",n.host,n.port);let o=j(),s=eE(yl(e),this.init);if(s.socket.addEventListener("error",()=>{let c=new m(`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 jt),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 nE({logger:this.logger},{...this.init,...e})}filter(e){return e=Array.isArray(e)?e:[e],this.init?.filter!=null?this.init?.filter(e):M1||F1?rE(e):tE(e)}};function sE(r={}){return e=>new m3(e,r)}async function g3(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 h=n.findIndex(p=>p===g);h!==-1&&(n.splice(h,1),g.timeline.close=Date.now(),o?.(g))}let d=!1,u=!1;(async function(){let h=await a.closed.catch(p=>p);if(h!=null){let p=h.message;p.includes("aborted by the remote server")||p.includes("STOP_SENDING")||i.error(`WebTransport writer closed unexpectedly: streamId=${e} err=${h.message}`)}d=!0,d&&u&&l()})().catch(()=>{i.error("WebTransport failed to cleanup closed stream")}),async function(){let h=await c.closed.catch(p=>p);h!=null&&i.error(`WebTransport reader closed unexpectedly: streamId=${e} err=${h.message}`),u=!0,d&&u&&l()}().catch(()=>{i.error("WebTransport failed to cleanup closed stream")});let f=!1,g={id:e,status:"open",writeStatus:"ready",readStatus:"ready",abort(h){d||(a.abort(h).catch(p=>{i.error("could not abort stream",p)}),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(h){this.status="closing",await Promise.all([g.closeRead(h),g.closeWrite(h)]),l(),this.status="closed",this.timeline.close=Date.now()},async closeRead(h){if(!u){this.readStatus="closing";try{await c.cancel()}catch(p){p.toString().includes("RESET_STREAM")===!0&&(d=!0)}this.timeline.closeRead=Date.now(),this.readStatus="closed",u=!0}d&&l()},async closeWrite(h){if(!d){d=!0,this.writeStatus="closing";try{await a.close()}catch(p){p.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 h=await c.read();if(h.done){u=!0,d&&l();return}yield new ue(h.value)}}(),sink:async function(h){if(f)throw new Error("sink already called on stream");f=!0;try{this.writeStatus="writing";for await(let p of h)if(p instanceof Uint8Array)await a.write(p);else for(let y of p)await a.write(y);this.writeStatus="done"}finally{this.timeline.closeWrite=Date.now(),this.writeStatus="closed",await g.closeWrite()}},log:i};return g}function y3(){return{source:{[Symbol.asyncIterator](){return{async next(){return new Promise(()=>{})}}}},sink:async r=>new Promise(()=>{})}}function iE(r,e){return e.filter(n=>!!r.find(o=>J(n,o))).length===e.length}var Fk=Object.values(mr).map(r=>r.decoder).reduce((r,e)=>r.or(e));function Vk(r){return hr.decode(Fk.decode(r))}function aE(r){if(!zc.matches(r))throw new m("Invalid multiaddr, was not a WebTransport address","ERR_INVALID_MULTIADDR");let e=r.stringTuples(),t=e.filter(([i,a])=>i===Z("certhash").code).map(([i,a])=>Vk(a??"")),n=e.filter(([i,a])=>i===Z("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 w3=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";[tn]=!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}=aE(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,f=!1;try{this.metrics?.dialerEvents.increment({pending:!0});let g=new WebTransport(`${o}/.well-known/libp2p-webtransport?type=noise`,{serverCertificateHashes:s.map(h=>({algorithm:"sha-256",value:h.digest}))});if(l=h=>{if(!d)try{this.metrics?.dialerEvents.increment({[h]:!0}),g.close()}catch(p){this.log.error("error closing wt session",p)}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([g.closed,g.ready]),u=!0,this.metrics?.dialerEvents.increment({ready:!0}),g.closed.catch(h=>{this.log.error("error on remote wt session close",h)}).finally(()=>{l("remote_close")}),!await this.authenticateWebTransport(g,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:h=>{this.log("aborting webtransport due to passed err",h),l("abort")},remoteAddr:e,timeline:{open:Date.now()},log:this.components.logger.forComponent("libp2p:webtransport:maconn"),...y3()},f=!0,await t.upgrader.upgradeOutbound(c,{skipEncryption:!0,muxerFactory:this.webtransportMuxer(g),skipProtection:!0})}catch(g){throw this.log.error("caught wt session err",g),l(f?"upgrade_error":u?"noise_error":"ready_error"),g}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 f of u)f instanceof Uint8Array?await i.write(f):await i.write(f.subarray())}},l=Ai()(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}`)}),!iE(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 g3(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 g3(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)},...y3()}}}}createListener(e){throw new Error("Webtransport servers are not supported in Node or the browser")}filter(e){return e.filter(zc.exactMatch)}};function cE(r={}){return e=>new w3(e,r)}var E3=Ye(Iu(),1);function lE(r,e){let t=e.map((n,o)=>({record:cn(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===Gt.ValidityType.EOL&&o.record.validityType===Gt.ValidityType.EOL){let a=E3.default.fromString(n.record.validity).toDate(),c=E3.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 Kd="1.3.1",$d="libp2p";var dE="4.1.0-329652a",fE="helia";var hE={list:["/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN","/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa","/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb","/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt","/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ"]};function Hd(r={}){return{peerId:r.peerId,dns:r.dns,addresses:{listen:["/webrtc"]},transports:[Z2({discoverRelays:1}),$w(),Kw(),cE(),sE()],connectionEncryption:[Ai()],streamMuxers:[tg(),G9()],peerDiscovery:[yg(hE)],services:{autoNAT:sg(),dcutr:Ng(),delegatedRouting:()=>B5("https://delegated-ipfs.dev"),dht:E9({clientMode:!0,validators:{ipns:qu},selectors:{ipns:lE}}),identify:Wg({agentVersion:`${fE}/${dE} ${$d}/${Kd} UserAgent=${globalThis.navigator.userAgent}`}),keychain:pd(r.keychain),ping:X9()}}}var It={ERR_INVALID_PARAMETERS:"ERR_INVALID_PARAMETERS"};var Xi;(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),Wd.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=Wd.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),qd.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(qd.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())})(Xi||(Xi={}));var qd;(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())})(qd||(qd={}));var Wd;(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())})(Wd||(Wd={}));function ji(r,e){let t=Xi.decode(e);t.publicKey!=null&&r.publicKey==null&&(r=u8({...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:X(s),isCertified:i??!1})),metadata:t.metadata,peerRecordEnvelope:t.peerRecordEnvelope??void 0,tags:n}}var b3="/peers/";function Zi(r){if(!Ns(r)||r.type==null)throw new m("Invalid PeerId",It.ERR_INVALID_PARAMETERS);let e=r.toCID().toString();return new Pe(`${b3}${e}`)}async function pE(r,e,t){let n=new Map;for(let o of t){if(o==null)continue;if(o.multiaddr instanceof Uint8Array&&(o.multiaddr=X(o.multiaddr)),!Zn(o.multiaddr))throw new m("Multiaddr was invalid",It.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 zd(r,e,t,n){if(e==null)throw new m("Invalid PeerData",It.ERR_INVALID_PARAMETERS);if(e.publicKey!=null&&r.publicKey!=null&&!J(e.publicKey,r.publicKey))throw new m("publicKey bytes do not match peer id publicKey bytes",It.ERR_INVALID_PARAMETERS);let o=n.existingPeer;if(o!=null&&!r.equals(o.id))throw new m("peer id did not match existing peer id",It.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=Gd(u,{validate:mE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags);c=Gd(u,{validate:gE,map:yE})}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[f,g]of u)g==null?a.delete(f):a.set(f,g);a=Gd([...a.entries()],{validate:mE})}if(e.tags!=null){let u=e.tags instanceof Map?[...e.tags.entries()]:Object.entries(e.tags),f=new Map(c);for(let[g,h]of u)h==null?f.delete(g):f.set(g,h);c=Gd([...f.entries()],{validate:gE,map:yE})}e.peerRecordEnvelope!=null&&(l=e.peerRecordEnvelope)}let d={addresses:await pE(r,n.addressFilter??(async()=>!0),s),protocols:[...i.values()].sort((u,f)=>u.localeCompare(f)),metadata:a,tags:c,publicKey:o?.id.publicKey??e.publicKey??r.publicKey,peerRecordEnvelope:l};return r.type!=="RSA"&&delete d.publicKey,d}function Gd(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 mE(r,e){if(typeof r!="string")throw new m("Metadata key must be a string",It.ERR_INVALID_PARAMETERS);if(!(e instanceof Uint8Array))throw new m("Metadata value must be a Uint8Array",It.ERR_INVALID_PARAMETERS)}function gE(r,e){if(typeof r!="string")throw new m("Tag name must be a string",It.ERR_INVALID_PARAMETERS);if(e.value!=null){if(parseInt(`${e.value}`,10)!==e.value)throw new m("Tag value must be an integer",It.ERR_INVALID_PARAMETERS);if(e.value<0||e.value>100)throw new m("Tag value must be between 0-100",It.ERR_INVALID_PARAMETERS)}if(e.ttl!=null){if(parseInt(`${e.ttl}`,10)!==e.ttl)throw new m("Tag ttl must be an integer",It.ERR_INVALID_PARAMETERS);if(e.ttl<0)throw new m("Tag ttl must be between greater than 0",It.ERR_INVALID_PARAMETERS)}}function yE(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 Yd(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=ji(s,e);return t.set(s,a),a}function Kk(r,e){return r==null?{}:{prefix:b3,filters:(r.filters??[]).map(t=>({key:n,value:o})=>t(Yd(n,o,e))),orders:(r.orders??[]).map(t=>(n,o)=>t(Yd(n.key,n.value,e),Yd(o.key,o.value,e)))}}var Qd=class{peerId;datastore;lock;addressFilter;constructor(e,t={}){this.peerId=e.peerId,this.datastore=e.datastore,this.addressFilter=t.addressFilter,this.lock=za({name:"peer-store",singleProcess:!0})}async has(e){return this.datastore.has(Zi(e))}async delete(e){if(this.peerId.equals(e))throw new m("Cannot delete self peer",It.ERR_INVALID_PARAMETERS);await this.datastore.delete(Zi(e))}async load(e){let t=await this.datastore.get(Zi(e));return ji(e,t)}async save(e,t){let{existingBuf:n,existingPeer:o}=await this.#e(e),s=await zd(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 zd(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 zd(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(Kk(e??{},t))){let s=Yd(n,o,t);s.id.equals(this.peerId)||(yield s)}}async#e(e){try{let t=await this.datastore.get(Zi(e)),n=ji(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=Xi.encode(t);return n!=null&&J(s,n)?{peer:ji(e,s),previous:o,updated:!1}:(await this.datastore.put(Zi(e),s),{peer:ji(e,s),previous:o,updated:!0})}};var Xd=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 Qd(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 to(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 Qr.openAndCertify(e,ur.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=ur.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 Qr.createFromProtobuf(s.peerRecordEnvelope),a=ur.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 wE(r,e){let t;return function(){let n=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(n,e)}}var $k=r=>r;function x3(r,e){let t=r.getPeerId();return t!=null&&ge(t).equals(e)&&(r=r.decapsulate(X(`/p2p/${e.toString()}`))),r}var jd=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??$k,this._updatePeerStoreAddresses=wE(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])=>X(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=>X(e))}getAnnounceAddrs(){return Array.from(this.announce).map(e=>X(e))}getObservedAddrs(){return Array.from(this.observed).map(([e])=>X(e))}addObservedAddr(e){e=x3(e,this.components.peerId);let t=e.toString();this.observed.has(t)||this.observed.set(t,{confident:!1})}confirmObservedAddr(e){e=x3(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=x3(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=>X(n))).map(n=>n.protos().pop()?.path===!0||n.getPeerId()===this.components.peerId.toString()?n:n.encapsulate(`/p2p/${this.components.peerId.toString()}`))}};var v3=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=>Dc(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")}},Hk=["metrics","connectionProtector","dns"],qk=["components","isStarted","beforeStart","start","afterStart","beforeStop","stop","afterStop","then","_invokeStartableMethod"];function EE(r={}){let e=new v3(r);return new Proxy(e,{get(n,o,s){if(typeof o=="string"&&!qk.includes(o)){let i=e.components[o];if(i==null&&!Hk.includes(o))throw new m(`${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 bE(r={}){return{denyDialPeer:async()=>!1,denyDialMultiaddr:async e=>{let t=e.stringTuples();return t[0][0]===4||t[0][0]===41?!!Ht(`${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 R3(r){try{let{address:e}=r.nodeAddress();return!!Ht(e)}catch{return!0}}function Wk(r,e){let t=R3(r.multiaddr),n=R3(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Gk(r,e){return r.isCertified&&!e.isCertified?-1:!r.isCertified&&e.isCertified?1:0}function zk(r,e){let t=Ho.exactMatch(r.multiaddr),n=Ho.exactMatch(e.multiaddr);return t&&!n?1:!t&&n?-1:0}function Ji(r,e){let t=Wk(r,e);if(t!==0)return t;let n=zk(r,e);return n!==0?n:Gk(r,e)}var Yk=32,{code:Qk}=Z("dnsaddr"),Ds=async function(e,t={}){let n=t.maxRecursiveDepth??Yk;if(n===0)throw new m("Max recursive depth reached","ERR_MAX_RECURSIVE_DEPTH_REACHED");let[,o]=e.stringTuples().find(([l])=>l===Qk)??[],i=await(t?.dns??e1()).query(`_dnsaddr.${o}`,{signal:t?.signal,types:[zr.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=X(d);if(d.startsWith("/dnsaddr")){let f=await u.resolve({...t,maxRecursiveDepth:n-1});c.push(...f.map(g=>g.toString()))}else c.push(u.toString())}return c};var Gn;(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"})(Gn||(Gn={}));var G;(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"})(G||(G={}));var Xk={addresses:{listen:[],announce:[],noAnnounce:[],announceFilter:r=>r},connectionManager:{resolvers:{dnsaddr:Ds},addressSorter:Ji},transportManager:{faultTolerance:zn.FATAL_ALL}};async function xE(r){let e=Ui(Xk,r);if(e.connectionProtector===null&&globalThis.process?.env?.LIBP2P_FORCE_PNET!=null)throw new m(Gn.ERR_PROTECTOR_REQUIRED,G.ERR_PROTECTOR_REQUIRED);if(!(await ht(e.privateKey.public.bytes,e.privateKey.bytes)).equals(e.peerId))throw new m("Private key doesn't match peer id",G.ERR_INVALID_KEY);return e}function Zd(r){if(Ns(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(!Zn(n))throw new m("Invalid Multiaddr",G.ERR_INVALID_MULTIADDR);let o=n.getPeerId();if(o==null){if(e!=null)throw new m("Multiaddrs must all have the same peer id or have no peer id",G.ERR_INVALID_PARAMETERS)}else{let s=ge(o);if(e==null||!e.equals(s))throw new m("Multiaddrs must all have the same peer id or have no peer id",G.ERR_INVALID_PARAMETERS)}})}return{peerId:e,multiaddrs:r}}var Jd="last-dial-failure";var ef=5,tf=100,rf=50,vE=1e3*60*7;var Ts={minConnections:ef,maxQueueLength:100,autoDialConcurrency:25,autoDialPriority:0,autoDialInterval:5e3,autoDialPeerRetryThreshold:vE,autoDialDiscoveredPeersDebounce:10},nf=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??Ts.minConnections,this.autoDialPriority=t.autoDialPriority??Ts.autoDialPriority,this.autoDialIntervalMs=t.autoDialInterval??Ts.autoDialInterval,this.autoDialMaxQueueLength=t.maxQueueLength??Ts.maxQueueLength,this.autoDialPeerRetryThresholdMs=t.autoDialPeerRetryThreshold??Ts.autoDialPeerRetryThreshold,this.autoDialDiscoveredPeersDebounce=t.autoDialDiscoveredPeersDebounce??Ts.autoDialDiscoveredPeersDebounce,this.log=e.logger.forComponent("libp2p:connection-manager:auto-dial"),this.started=!1,this.running=!1,this.queue=new Vt({concurrency:t.autoDialConcurrency??Ts.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 Ze(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,f=i.get(d.id)??0;return u>f?-1:u<f?1:0}).filter(l=>{let d=l.metadata.get(Jd);if(d==null)return!0;let u=parseInt(P(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 RE={maxConnections:tf,allow:[]},of=class{maxConnections;connectionManager;peerStore;allow;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??RE.maxConnections,this.allow=t.allow??RE.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,f=c.timeline.open;return u<f?1:u>f?-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 SE(r,e){let t=!1;for(let o of $s.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 sf={addressSorter:Ji,maxParallelDials:rf,maxPeerAddrsToDial:25,dialTimeout:3e4,resolvers:{dnsaddr:Ds}},af=class{queue;components;addressSorter;maxPeerAddrsToDial;dialTimeout;shutDownController;connections;log;constructor(e,t={}){this.addressSorter=t.addressSorter??sf.addressSorter,this.maxPeerAddrsToDial=t.maxPeerAddrsToDial??sf.maxPeerAddrsToDial,this.dialTimeout=t.dialTimeout??sf.dialTimeout,this.connections=t.connections??new it,this.log=e.logger.forComponent("libp2p:connection-manager:dial-queue"),this.components=e,this.shutDownController=new AbortController,le(1/0,this.shutDownController.signal);for(let[n,o]of Object.entries(t.resolvers??{}))$s.set(n,o);this.queue=new mn({concurrency:t.maxParallelDials??sf.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,le(1/0,this.shutDownController.signal)}stop(){this.shutDownController.abort(),this.queue.abort()}async dial(e,t={}){let{peerId:n,multiaddrs:o}=Zd(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)}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 f of l){if(d===this.maxPeerAddrsToDial)throw this.log("dialed maxPeerAddrsToDial (%d) addresses for %p, not trying any others",d,n),new m("Peer had more than maxPeerAddrsToDial",G.ERR_TOO_MANY_ADDRESSES);d++;try{let g=await this.components.transportManager.dial(f.multiaddr,{...a,signal:c});return this.log("dial to %a succeeded",f.multiaddr),g}catch(g){if(this.log.error("dial failed to %a",f.multiaddr,g),n!=null)try{await this.components.peerStore.patch(n,{metadata:{[Jd]:B(Date.now().toString())}})}catch(h){this.log.error("could not update last dial failure key for %p",n,h)}if(c.aborted)throw new m(g.message,pn);u.push(g)}}throw u.length===1?u[0]:new Ic(u,"All multiaddr dials failed",G.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=ot([AbortSignal.timeout(this.dialTimeout),this.shutDownController.signal,e]);return le(1/0,t),t}async calculateMultiaddrs(e,t=new Set,n={}){let o=[...t].map(u=>({multiaddr:X(u),isCertified:!1}));if(e!=null){if(this.components.peerId.equals(e))throw new m("Tried to dial self",G.ERR_DIALED_SELF);if(await this.components.connectionGater.denyDialPeer?.(e)===!0)throw new m("The dial request is blocked by gater.allowDialPeer",G.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:f})=>f.toString()))}catch(u){if(u.code!==G.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:f})=>f.toString())),o.push(...u.multiaddrs.map(f=>({multiaddr:f,isCertified:!1})))}catch(u){u.code!==G.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 f=await SE(u.multiaddr,{dns:this.components.dns,...n,log:this.log});return f.length===1&&f[0].equals(u.multiaddr)?u:f.map(g=>({multiaddr:g,isCertified:!1}))}))).flat();if(e!=null){let u=`/p2p/${e.toString()}`;s=s.map(f=>f.multiaddr.protos().pop()?.path===!0?f:f.multiaddr.getPeerId()==null?{multiaddr:f.multiaddr.encapsulate(u),isCertified:f.isCertified}:f)}let i=s.filter(u=>{if(this.components.transportManager.transportForMultiaddr(u.multiaddr)==null)return!1;let f=u.multiaddr.getPeerId();return e!=null&&f!=null?e.equals(f):!0}),a=new Map;for(let u of i){let f=u.multiaddr.toString(),g=a.get(f);if(g!=null){g.isCertified=g.isCertified||u.isCertified||!1;continue}a.set(f,u)}let c=[...a.values()];if(c.length===0)throw new m("The dial request has no valid addresses",G.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 m("The connection gater denied all addresses in the dial request",G.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}};var tC=50,ks={minConnections:ef,maxConnections:tf,inboundConnectionThreshold:5,maxIncomingPendingConnections:10,autoDialConcurrency:25,autoDialPriority:0,autoDialMaxQueueLength:100},cf=class{started;connections;allow;deny;maxIncomingPendingConnections;incomingPendingConnections;maxConnections;dialQueue;autoDial;connectionPruner;inboundConnectionRateLimiter;peerStore;metrics;events;log;constructor(e,t={}){this.maxConnections=t.maxConnections??ks.maxConnections;let n=t.minConnections??ks.minConnections;if(this.maxConnections<n)throw new m("Connection Manager maxConnections must be greater than minConnections",G.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=>X(o)),this.deny=(t.deny??[]).map(o=>X(o)),this.incomingPendingConnections=0,this.maxIncomingPendingConnections=t.maxIncomingPendingConnections??ks.maxIncomingPendingConnections,this.inboundConnectionRateLimiter=new Mi({points:t.inboundConnectionThreshold??ks.inboundConnectionThreshold,duration:1}),this.autoDial=new nf({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{minConnections:n,autoDialConcurrency:t.autoDialConcurrency??ks.autoDialConcurrency,autoDialPriority:t.autoDialPriority??ks.autoDialPriority,maxQueueLength:t.autoDialMaxQueueLength??ks.autoDialMaxQueueLength}),this.connectionPruner=new of({connectionManager:this,peerStore:e.peerStore,events:e.events,logger:e.logger},{maxConnections:this.maxConnections,allow:this.allow}),this.dialQueue=new af(e,{addressSorter:t.addressSorter??Ji,maxParallelDials:t.maxParallelDials??rf,maxPeerAddrsToDial:t.maxPeerAddrsToDial??25,dialTimeout:t.dialTimeout??3e4,resolvers:t.resolvers??{dnsaddr:Ds},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(q3)]});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 m("Not started",G.ERR_NODE_NOT_STARTED);t.signal?.throwIfAborted();let{peerId:n}=Zd(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??tC}),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=>X(n))}))}};var lf=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 m("No content routers available",G.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Ze;for await(let s of ft(...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 m("No content routers available",G.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 m(Gn.NOT_STARTED_YET,G.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 m(Gn.NOT_STARTED_YET,G.ERR_NODE_NOT_STARTED);return Promise.any(this.routers.map(async n=>n.get(e,t)))}};var uf=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 m("No peer routers available",G.ERR_NO_ROUTERS_AVAILABLE);if(e.toString()===this.peerId.toString())throw new m("Should not try to find self",G.ERR_FIND_SELF);let n=this,o=ft(...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 m(Gn.NOT_FOUND,G.ERR_NOT_FOUND)}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new m("No peer routers available",G.ERR_NO_ROUTERS_AVAILABLE);let n=this,o=new Ze;for await(let s of Kn(async function*(){let i=ft(...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 T3=32,k3=64,df=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 m(`No handler registered for protocol ${e}`,G.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 m(`Handler already registered for protocol ${e}`,G.ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED);let o=Ui.bind({ignoreUndefined:!0})({maxInboundStreams:T3,maxOutboundStreams:k3},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 m("invalid topology",G.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!==G.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 ff=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=pl({name:"libp2p_transport_manager_listeners",metrics:this.components.metrics}),this.faultTolerance=t.faultTolerance??zn.FATAL_ALL}add(e){let t=e[Symbol.toStringTag];if(t==null)throw new m("Transport must have a valid tag",G.ERR_INVALID_KEY);if(this.transports.has(t))throw new m(`There is already a transport with the tag ${t}`,G.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 m(`No transport available for address ${String(e)}`,G.ERR_TRANSPORT_UNAVAILABLE);try{return await n.dial(e,{...t,upgrader:this.components.upgrader})}catch(o){throw o.code==null&&(o.code=G.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 m("Not started",G.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 f=u.findIndex(g=>g===d);u.splice(f,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!==zn.NO_FATAL)throw new m(`Transport (${n}) could not listen on any available address`,G.ERR_NO_VALID_ADDRESSES)}if(t.length===this.transports.size){let n=`no valid addresses were provided for transports [${t.join(", ")}]`;if(this.faultTolerance===zn.FATAL_ALL)throw new m(n,G.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 Dt="/multistream/1.0.0";var rC=B(`
|
|
42
|
+
`);async function Cs(r,e,t){await r.write(e,t)}async function _E(r,e,t){await r.writeV(e,t)}async function nC(r,e){let t=await r.read(e);if(t.byteLength===0||t.get(t.byteLength-1)!==rC[0])throw e.log.error("Invalid mss message - missing newline",t),new m("missing newline","ERR_INVALID_MULTISTREAM_SELECT_MESSAGE");return t.sublist(0,-1)}async function Mo(r,e){let t=await nC(r,e);return P(t.subarray())}async function Rc(r,e,t){if(e=Array.isArray(e)?[...e]:[e],e.length===1&&t.negotiateFully===!1)return oC(r,e[0],t);let n=yr(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"]',Dt,o);let s=B(`${Dt}
|
|
43
|
+
`),i=B(`${o}
|
|
44
|
+
`);await _E(n,[s,i],t),t.log.trace("select: reading multistream-select header");let a=await Mo(n,t);if(t.log.trace('select: read "%s"',a),a===Dt&&(t.log.trace("select: reading protocol response"),a=await Mo(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 Cs(n,B(`${c}
|
|
45
|
+
`),t),t.log.trace("select: reading protocol response");let l=await Mo(n,t);if(t.log.trace('select: read "%s" for "%s"',l,c),l===c)return{stream:n.unwrap(),protocol:c}}throw new m("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}function oC(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,f=!1,g=j(),h=yr({sink:n,source:o},{...t,maxDataLength:1024});r.sink=async b=>{let{sink:E}=h.unwrap();await E(async function*(){let S=!1;for await(let _ of b){if(l&&await d.promise,c)yield _;else{l=!0,t.log.trace('optimistic: write ["%s", "%s", data(%d)] in sink',Dt,e,_.byteLength);let A=`${e}
|
|
46
|
+
`;yield new ue(Uint8Array.from([19]),B(`${Dt}
|
|
47
|
+
`),Ve(A.length),B(A),_).subarray(),t.log.trace('optimistic: wrote ["%s", "%s", data(%d)] in sink',Dt,e,_.byteLength),c=!0,l=!1,d.resolve(),p().catch(D=>{t.log.error("could not finish optimistic protocol negotiation of %s",e,D)})}S=!0}S||await p()}())};async function p(){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',Dt,e),await h.writeV([B(`${Dt}
|
|
48
|
+
`),B(`${e}
|
|
49
|
+
`)]),t.log.trace('optimistic: wrote ["%s", "%s", data] in source',Dt,e)}finally{c=!0,l=!1,d.resolve()}}async function w(){if(f){await g.promise;return}f=!0;try{t.log.trace("optimistic: reading multistream select header");let b=await Mo(h,t);if(t.log.trace('optimistic: read multistream select header "%s"',b),b===Dt&&(b=await Mo(h,t)),t.log.trace('optimistic: read protocol "%s", expecting "%s"',b,e),b!==e)throw new m("protocol selection failed","ERR_UNSUPPORTED_PROTOCOL")}finally{u=!0,f=!1,g.resolve()}}if(r.source=async function*(){await p(),t.log.trace('optimistic: reading data from "%s" stream',e),yield*h.unwrap().source}(),r.closeRead!=null){let b=r.closeRead.bind(r);r.closeRead=async E=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close read",S)}),await b(E)}}if(r.closeWrite!=null){let b=r.closeWrite.bind(r);r.closeWrite=async E=>{s||await p().catch(S=>{t.log.error("could not negotiate protocol before close write",S)}),await b(E)}}if(r.close!=null){let b=r.close.bind(r);r.close=async E=>{let S=[];l&&S.push(d.promise),f&&S.push(g.promise),S.length>0?await Lt(Promise.all(S),E?.signal):(s=!0,i=!1,a.resolve()),await b(E)}}return{stream:r,protocol:e}}async function Sc(r,e,t){e=Array.isArray(e)?e:[e],t.log.trace("handle: available protocols %s",e);let n=yr(r,{...t,maxDataLength:1024,maxLengthLength:2});for(;;){t.log.trace("handle: reading incoming string");let o=await Mo(n,t);if(t.log.trace('handle: read "%s"',o),o===Dt){t.log.trace('handle: respond with "%s" for "%s"',Dt,o),await Cs(n,B(`${Dt}
|
|
50
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',Dt,o);continue}if(e.includes(o))return t.log.trace('handle: respond with "%s" for "%s"',o,o),await Cs(n,B(`${o}
|
|
51
|
+
`),t),t.log.trace('handle: responded with "%s" for "%s"',o,o),{stream:n.unwrap(),protocol:o};if(o==="ls"){let s=new ue(...e.map(i=>gr.single(B(`${i}
|
|
52
|
+
`))),B(`
|
|
53
|
+
`));t.log.trace('handle: respond with "%s" for %s',e,o),await Cs(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 Cs(n,B(`na
|
|
54
|
+
`),t),t.log('handle: responded with "na" for "%s"',o)}}var iC=500,N3=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";[H3]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new m("the connection is being closed","ERR_CONNECTION_BEING_CLOSED");if(this.status==="closed")throw new m("the connection is closed","ERR_CONNECTION_CLOSED");if(Array.isArray(e)||(e=[e]),this.transient&&t?.runOnTransientConnection!==!0)throw new m("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(iC);le(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 IE(r){return new N3(r)}var aC=3e4;function cC(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.code!==G.ERR_NO_HANDLER_FOR_PROTOCOL)throw t}return T3}function lC(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.code!==G.ERR_NO_HANDLER_FOR_PROTOCOL)throw n}return t.maxOutboundStreams??k3}function DE(r,e,t){let n=0;return t.streams.forEach(o=>{o.direction===e&&o.protocol===r&&n++}),n}var hf=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??3e4,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 m(`The multiaddr connection is blocked by gater.${n}`,G.ERR_CONNECTION_INTERCEPTED)}async upgradeInbound(e,t){if(!await this.components.connectionManager.acceptIncomingConnection(e))throw new m("connection denied",G.ERR_CONNECTION_DENIED);let o,s,i,a,c,l=AbortSignal.timeout(this.inboundUpgradeTimeout),d=()=>{e.abort(new m("inbound upgrade timeout",pn))};l.addEventListener("abort",d,{once:!0}),le(1/0,l);try{if(await this.components.connectionGater.denyInboundConnection?.(e)===!0)throw new m("The multiaddr connection is blocked by gater.acceptConnection",G.ERR_CONNECTION_INTERCEPTED);this.components.metrics?.trackMultiaddrConnection(e),e.log("starting the inbound connection upgrade");let u=e;if(t?.skipProtection!==!0){let f=this.components.connectionProtector;f!=null&&(e.log("protecting the inbound connection"),u=await f.protect(e))}try{if(o=u,t?.skipEncryption!==!0){({conn:o,remotePeer:s,protocol:c}=await this._encryptInbound(u));let f={...u,...o};await this.shouldBlockConnection(s,f,"denyInboundEncryptedConnection")}else{let f=e.remoteAddr.getPeerId();if(f==null)throw new m("inbound connection that skipped encryption must have a peer id",G.ERR_INVALID_MULTIADDR);let g=ge(f);c="native",s=g}if(i=o,t?.muxerFactory!=null)a=t.muxerFactory;else if(this.muxers.size>0){let f=await this._multiplexInbound({...u,...o},this.muxers);a=f.muxerFactory,i=f.stream}}catch(f){throw e.log.error("failed to upgrade inbound connection",f),f}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 m("Encryption was skipped but no peer id was passed",G.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:h=>{u!=null&&Promise.resolve().then(async()=>{let p=this.components.registrar.getProtocols(),{stream:y,protocol:w}=await Sc(h,p,{log:h.log,yieldBytes:!1});if(u==null)return;u.log("incoming stream opened on %s",w);let b=cC(w,this.components.registrar);if(DE(w,"inbound",u)===b){let S=new m(`Too many inbound protocol streams for protocol "${w}" - limit ${b}`,G.ERR_TOO_MANY_INBOUND_PROTOCOL_STREAMS);throw h.abort(S),S}h.source=y.source,h.sink=y.sink,h.protocol=w,y.closeWrite!=null&&(h.closeWrite=y.closeWrite),y.closeRead!=null&&(h.closeRead=y.closeRead),y.close!=null&&(h.close=y.close),await this.components.peerStore.merge(i,{protocols:[w]}),this.components.metrics?.trackProtocolStream(h,u),this._onStream({connection:u,stream:h,protocol:w})}).catch(async p=>{u.log.error("error handling incoming stream id %s",h.id,p.message,p.code,p.stack),h.timeline.close==null&&await h.close()})}}),d=async(h,p={})=>{if(l==null)throw new m("Stream is not multiplexed",G.ERR_MUXER_UNAVAILABLE);u.log("starting new stream for protocols %s",h);let y=await l.newStream();u.log.trace("started new stream %s for protocols %s",y.id,h);try{if(p.signal==null){y.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",h);let _=AbortSignal.timeout(aC);le(1/0,_),p={...p,signal:_}}y.log.trace("selecting protocol from protocols %s",h);let{stream:w,protocol:b}=await Rc(y,h,{...p,log:y.log,yieldBytes:!0});y.log("selected protocol %s",b);let E=lC(b,this.components.registrar,p);if(DE(b,"outbound",u)>=E){let _=new m(`Too many outbound protocol streams for protocol "${b}" - limit ${E}`,G.ERR_TOO_MANY_OUTBOUND_PROTOCOL_STREAMS);throw y.abort(_),_}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",h,w),y.timeline.close==null&&y.abort(w),w.code!=null?w:new m(String(w),G.ERR_UNSUPPORTED_PROTOCOL)}},Promise.all([l.sink(s.source),s.sink(l.source)]).catch(h=>{u.log.error("error piping data through muxer",h)}));let f=o.timeline;o.timeline=new Proxy(f,{set:(...h)=>(u!=null&&h[1]==="close"&&h[2]!=null&&f.close==null&&(async()=>{try{u.status==="open"&&await u.close()}catch(p){u.log.error("error closing connection after timeline close",p)}finally{this.events.safeDispatchEvent("connection:close",{detail:u})}})().catch(p=>{u.log.error("error thrown while dispatching connection:close event",p)}),Reflect.set(...h))}),o.timeline.upgraded=Date.now();let g=()=>{throw new m("connection is not multiplexed",G.ERR_CONNECTION_NOT_MULTIPLEXED)};return u=IE({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??g,getStreams:()=>l!=null?l.streams:[],close:async h=>{l!=null&&(u.log.trace("close muxer"),await l.close(h)),u.log.trace("close maconn"),await o.close(h),u.log.trace("closed maconn")},abort:h=>{o.abort(h),l?.abort(h)}}),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 m("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 Sc(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 m(n.message,G.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 Rc(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 m(o.message,G.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 Rc(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 m(String(o),G.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 Sc(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 m(String(o),G.ERR_MUXER_UNAVAILABLE)}}};var P3=class extends Re{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Re,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},le(1/0,t),this.peerId=e.peerId,this.logger=e.logger??ro(),this.log=this.logger.forComponent("libp2p"),this.services={};let o=this.components=EE({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:e.nodeInfo??{name:$d,version:Kd},logger:this.logger,events:t,datastore:e.datastore??new hs,connectionGater:bE(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",new Xd(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 hf(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 ff(this.components,e.transportManager)),this.configureComponent("connectionManager",new cf(this.components,e.connectionManager)),this.configureComponent("registrar",new df(this.components)),this.configureComponent("addressManager",new jd(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 uf(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 lf(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[Jr]!=null&&(this.log("registering service %s for content routing",a),i.push(l[Jr])),l[en]!=null&&(this.log("registering service %s for peer routing",a),s.push(l[en])),l[Vo]!=null&&(this.log("registering service %s for peer discovery",a),l[Vo].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 Ze;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 m("no protocols were provided to open a stream",G.ERR_INVALID_PROTOCOLS_FOR_STREAM);if(t=Array.isArray(t)?t:[t],t.length===0)throw new m("no protocols were provided to open a stream",G.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={}){Zn(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!==G.ERR_NOT_FOUND)throw s}let n=xe([B("/pk/"),e.multihash.digest]),o=await this.contentRouting.get(n,t);return Hr(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)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error(new Error(G.ERR_DISCOVERED_SELF));return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function TE(r={}){let e=r.peerId??=await _1();if(e.privateKey==null)throw new m("peer id was missing private key","ERR_MISSING_PRIVATE_KEY");return r.privateKey??=await Rr(e.privateKey),new P3(await xE(r))}async function kE(r={}){let e=await TE(r);return r.start!==!1&&await e.start(),e}async function CE(r){let e=r.libp2p?.peerId,t=r.logger??ro(),n=new Pe("/pkcs8/self"),o;e==null&&r.datastore!=null&&(o=pd(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=Hd(r);s.datastore=s.datastore??r.datastore,r=r??{};let i=await kE({...s,...r.libp2p,start:!1});return e==null&&o!=null&&!await r.datastore.has(n)&&await o.importPeer("self",i.peerId),i}async function uC(r={}){let e=r.datastore??new hs,t=r.blockstore??new qa,n;dC(r.libp2p)?n=r.libp2p:n=await CE({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e});let o=new l1({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[Fh(),Mh()],routers:[H0(n)]});return r.start!==!1&&await o.start(),o}function dC(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}return Ac(fC);})();
|
|
55
55
|
/*! Bundled license information:
|
|
56
56
|
|
|
57
57
|
pvtsutils/build/index.js:
|