@helia/verified-fetch 2.6.13 → 2.6.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.HeliaVerifiedFetch = factory()}(typeof self !== 'undefined' ? self : this, function () {
2
- "use strict";var HeliaVerifiedFetch=(()=>{var PF=Object.create;var Zm=Object.defineProperty;var RF=Object.getOwnPropertyDescriptor;var DF=Object.getOwnPropertyNames;var NF=Object.getPrototypeOf,OF=Object.prototype.hasOwnProperty;var ft=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ft=(r,e)=>{for(var t in e)Zm(r,t,{get:e[t],enumerable:!0})},yS=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of DF(e))!OF.call(r,i)&&i!==t&&Zm(r,i,{get:()=>e[i],enumerable:!(n=RF(e,i))||n.enumerable});return r};var it=(r,e,t)=>(t=r!=null?PF(NF(r)):{},yS(e||!r||!r.__esModule?Zm(t,"default",{value:r,enumerable:!0}):t,r)),LF=r=>yS(Zm({},"__esModule",{value:!0}),r);var V_=ft((rue,u7)=>{"use strict";var dz=Object.prototype.hasOwnProperty,wn="~";function rp(){}Object.create&&(rp.prototype=Object.create(null),new rp().__proto__||(wn=!1));function hz(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function H_(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new hz(t,n||r,i),s=wn?wn+e:e;return r._events[s]?r._events[s].fn?r._events[s]=[r._events[s],o]:r._events[s].push(o):(r._events[s]=o,r._eventsCount++),r}function ig(r,e){--r._eventsCount===0?r._events=new rp:delete r._events[e]}function tn(){this._events=new rp,this._eventsCount=0}tn.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)dz.call(t,n)&&e.push(wn?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};tn.prototype.listeners=function(e){var t=wn?wn+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i<o;i++)s[i]=n[i].fn;return s};tn.prototype.listenerCount=function(e){var t=wn?wn+e:e,n=this._events[t];return n?n.fn?1:n.length:0};tn.prototype.emit=function(e,t,n,i,o,s){var a=wn?wn+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;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,i),!0;case 5:return c.fn.call(c.context,t,n,i,o),!0;case 6:return c.fn.call(c.context,t,n,i,o,s),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var h=c.length,d;for(f=0;f<h;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(d=1,u=new Array(l-1);d<l;d++)u[d-1]=arguments[d];c[f].fn.apply(c[f].context,u)}}return!0};tn.prototype.on=function(e,t,n){return H_(this,e,t,n,!1)};tn.prototype.once=function(e,t,n){return H_(this,e,t,n,!0)};tn.prototype.removeListener=function(e,t,n,i){var o=wn?wn+e:e;if(!this._events[o])return this;if(!t)return ig(this,o),this;var s=this._events[o];if(s.fn)s.fn===t&&(!i||s.once)&&(!n||s.context===n)&&ig(this,o);else{for(var a=0,c=[],l=s.length;a<l;a++)(s[a].fn!==t||i&&!s[a].once||n&&s[a].context!==n)&&c.push(s[a]);c.length?this._events[o]=c.length===1?c[0]:c:ig(this,o)}return this};tn.prototype.removeAllListeners=function(e){var t;return e?(t=wn?wn+e:e,this._events[t]&&ig(this,t)):(this._events=new rp,this._eventsCount=0),this};tn.prototype.off=tn.prototype.removeListener;tn.prototype.addListener=tn.prototype.on;tn.prefixed=wn;tn.EventEmitter=tn;typeof u7<"u"&&(u7.exports=tn)});var g7=ft((_ue,j_)=>{j_.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 i(o,s){t[o]=s,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(o){return t[o]!==void 0||n[o]!==void 0},remove:function(o){t[o]!==void 0&&(t[o]=void 0),n[o]!==void 0&&(n[o]=void 0)},get:function(o){var s=t[o];if(s!==void 0)return s;if((s=n[o])!==void 0)return i(o,s),s},set:function(o,s){t[o]!==void 0?t[o]=s:i(o,s)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var CT=ft(mp=>{(function(){var r,e,t,n,i,o,s,a;a=function(c){var l,u,f,h;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,h=c&255,[l,u,f,h].join(".")},s=function(c){var l,u,f,h,d,m;for(l=[],f=h=0;h<=3&&c.length!==0;f=++h){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}m=e(c),d=m[0],u=m[1],c=c.substring(u),l.push(d)}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"),o=t("a"),i=t("A"),e=function(c){var l,u,f,h,d;for(h=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),d=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)h=h*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")h=h*l+(10+t(c[f])-o)>>>0;else if("A"<=c[f]&&c[f]<="F")h=h*l+(10+t(c[f])-i)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");f++}if(f===d)throw new Error("empty octet");return[h,f]},r=function(){function c(l,u){var f,h,d,m;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(m=l.split("/",2),l=m[0],u=m[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=s(u)}catch(g){throw f=g,new Error("Invalid mask: "+u)}for(h=d=32;d>=0;h=--d)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(s(l)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);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):(s(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 u,f,h;for(h=s(this.first),f=s(this.last),u=0;h<=f;)l(a(h),h,u),u++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),mp.ip2long=s,mp.long2ip=a,mp.Netmask=r}).call(mp)});var l2=ft((fme,Ix)=>{var ume=function(){typeof Ix<"u"&&(Ix.exports=g);var r=86400,e=3200,t=146097*e/400,n=r*t,i=1e3*n,o=864e13,s=4294967296,a=1e6,c="000000000",l=Math.trunc||function(I){var k=I-I%1;return k==0&&(I<0||I===0&&1/I!=1/0)?-0:k},u=g.prototype,f=(g.fromDate=function(I){return new g(+I)},g.fromInt64BE=S(0,1,2,3,0,4),g.fromInt64LE=S(3,2,1,0,4,0),g.fromString=function(K){var k,Q=new g,K=(K+="").replace(/^\s*[+\-]?\d+/,function(X){var X=+X,$=1970+(X-1970)%400;return Q.year=X-$,$}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(V,X,$){return X<0&&($*=-1),k=6e4*(60*+X+ +$),""}).replace(/\.\d+$/,function(V){return Q.nano=+(V+c).substr(1,9),""}).split(/\D+/);if(1<K.length?K[1]--:K[1]=0,Q.time=k=Date.UTC.apply(Date,K)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return w(Q)},g.fromTimeT=function(I){return v(I,0)},u.year=0,u.time=0,u.nano=0,u.addNano=function(I){return this.nano+=+I||0,this},u.getNano=function(){var I=w(this);return(I.time%1e3*a+ +I.nano+1e9)%1e9},u.getTimeT=function(){var k=w(this),I=Math.floor(k.time/1e3),k=k.year;return k&&(I+=k*t*r/e),I},u.getYear=function(){return this.toDate().getUTCFullYear()+this.year},u.toDate=function(){return x(w(this).time)},u.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},u.toString=function(I){var k=this,Q=k.toDate(),K={H:function(){return D(Q.getUTCHours())},L:function(){return A(Q.getUTCMilliseconds(),3)},M:function(){return D(Q.getUTCMinutes())},N:function(){return A(k.getNano(),9)},S:function(){return D(Q.getUTCSeconds())},Y:function(){var V=k.getYear();return 999999<V?"+"+V:9999<V?"+"+A(V,6):0<=V?A(V,4):-999999<=V?"-"+A(-V,6):V},a:function(){return d[Q.getUTCDay()]},b:function(){return h[Q.getUTCMonth()]},d:function(){return D(Q.getUTCDate())},e:function(){return function(V){return(9<V?"":" ")+(0|V)}(Q.getUTCDate())},m:function(){return D(Q.getUTCMonth()+1)}};return function V(X){return X.replace(/%./g,function($){var z=$[1],F=m[z],z=K[z];return F?V(F):z?z():$})}(I||f)},u.writeInt64BE=b(0,1,2,3,0,4),u.writeInt64LE=b(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],m={"%":"%",F:"%Y-%m-%d",n:`
3
- `,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(I,k,Q){var K=this;if(!(K instanceof g))return new g(I,k,Q);K.time=+I||0,K.nano=+k||0,K.year=+Q||0,w(K)}function w(I){var k,Q,K,V=I.year,X=I.time,$=I.nano,F=(($<0||a<=$)&&($-=(Q=Math.floor($/a))*a,X+=Q,Q=1),V%e);return(X<-o||o<X||F)&&((k=l(X/i))&&(V+=k*e,X-=k*i),(K=x(X)).setUTCFullYear(F+K.getUTCFullYear()),K=(X=+K)+(k=l((V-=F)/e))*i,k&&-o<=K&&K<=o&&(V-=k*e,X=K),Q=1),Q&&(I.year=V,I.time=X,I.nano=$),I}function x(I){var k=new Date(0);return k.setTime(I),k}function v(V,K){V=+V||0;var Q=l((K=(K|0)*s)/n)+l(V/n),K=K%n+V%n,V=l(K/n);return V&&(Q+=V,K-=V*n),new g(1e3*K,0,Q*e)}function b(I,k,Q,K,V,X){return function(F,z){var R=w(this);F=F||new Array(8),T(F,z|=0);var N=Math.floor(R.time/1e3),R=R.year*(t*r/e),M=l(R/s)+l(N/s),R=R%s+N%s,N=Math.floor(R/s);return N&&(M+=N,R-=N*s),$(F,z+V,M),$(F,z+X,R),F};function $(F,z,M){F[z+I]=M>>24&255,F[z+k]=M>>16&255,F[z+Q]=M>>8&255,F[z+K]=255&M}}function S(I,k,Q,K,V,X){return function(F,z){T(F,z|=0);var M=$(F,z+V);return v($(F,z+X),M)};function $(F,z){return 16777216*F[z+I]+(F[z+k]<<16|F[z+Q]<<8|F[z+K])}}function T(I,k){if(I=I&&I.length,I==null)throw new TypeError("Invalid Buffer");if(I<k+8)throw new RangeError("Out of range")}function D(I){return(9<I?"":"0")+(0|I)}function A(I,k){return(c+(0|I)).substr(-k)}}()});var QP=ft((ive,YP)=>{"use strict";YP.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var nR=ft((tR,rR)=>{"use strict";var m3=QP(),{hasOwnProperty:JP}=Object.prototype,{propertyIsEnumerable:zW}=Object,ed=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),KW=tR,ZP={concatArrays:!1,ignoreUndefined:!1},g3=r=>{let e=[];for(let t in r)JP.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)zW.call(r,n)&&e.push(n)}return e};function td(r){return Array.isArray(r)?qW(r):m3(r)?jW(r):r}function qW(r){let e=r.slice(0,0);return g3(r).forEach(t=>{ed(e,t,td(r[t]))}),e}function jW(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return g3(r).forEach(t=>{ed(e,t,td(r[t]))}),e}var eR=(r,e,t,n)=>(t.forEach(i=>{typeof e[i]>"u"&&n.ignoreUndefined||(i in r&&r[i]!==Object.getPrototypeOf(r)?ed(r,i,F9(r[i],e[i],n)):ed(r,i,td(e[i])))}),r),WW=(r,e,t)=>{let n=r.slice(0,0),i=0;return[r,e].forEach(o=>{let s=[];for(let a=0;a<o.length;a++)JP.call(o,a)&&(s.push(String(a)),o===r?ed(n,i++,o[a]):ed(n,i++,td(o[a])));n=eR(n,o,g3(o).filter(a=>!s.includes(a)),t)}),n};function F9(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?WW(r,e,t):!m3(e)||!m3(r)?td(e):eR(r,e,g3(e),t)}rR.exports=function(...r){let e=F9(td(ZP),this!==KW&&this||{},ZP),t={_:{}};for(let n of r)if(n!==void 0){if(!m3(n))throw new TypeError("`"+n+"` is not an Option Object");t=F9(t,{_:n},e)}return t._}});var sR=ft((sve,oR)=>{"use strict";function GW(r){return r>=55296&&r<=56319}function XW(r){return r>=56320&&r<=57343}oR.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var i=t.length,o=0,s,a,c=0;c<i;c+=1){if(s=t.charCodeAt(c),a=t[c],GW(s)&&XW(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),o+=e(a),o===n)return t.slice(0,c+1);if(o>n)return t.slice(0,c-a.length+1)}return t}});var cR=ft((ave,aR)=>{"use strict";function YW(r){return r>=55296&&r<=56319}function QW(r){return r>=56320&&r<=57343}aR.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,i=null,o=null,s=0;s<t;s++)i=e.charCodeAt(s),QW(i)?o!=null&&YW(o)?n+=1:n+=3:i<=127?n+=1:i>=128&&i<=2047?n+=2:i>=2048&&i<=65535&&(n+=3),o=i;return n}});var uR=ft((cve,lR)=>{"use strict";var ZW=sR(),JW=cR();lR.exports=ZW.bind(null,JW)});var hR=ft((lve,dR)=>{"use strict";var eG=uR(),tG=/[\/\?<>\\:\*\|"]/g,rG=/[\x00-\x1f\x80-\x9f]/g,nG=/^\.+$/,iG=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,oG=/[\. ]+$/;function fR(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(tG,e).replace(rG,e).replace(nG,e).replace(iG,e).replace(oG,e);return eG(t,255)}dR.exports=function(r,e){var t=e&&e.replacement||"",n=fR(r,t);return t===""?n:fR(n,"")}});var Ms=ft(nd=>{"use strict";var aG="[object ArrayBuffer]",Bs=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===aG}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),i=r.toUint8Array(t);if(n.length!==i.byteLength)return!1;for(let o=0;o<n.length;o++)if(n[o]!==i[o])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 s of t)n+=s.byteLength;let i=new Uint8Array(n),o=0;for(let s of t){let a=this.toUint8Array(s);i.set(a,o),o+=a.length}return e[e.length-1]instanceof Function?this.toView(i,e[e.length-1]):i.buffer}},$9="string",cG=/^[0-9a-f\s]+$/i,lG=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,uG=/^[a-zA-Z0-9-_]+$/,w3=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}static toString(e){let t=Bs.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return decodeURIComponent(escape(n))}},Ni=class{static toString(e,t=!1){let n=Bs.toArrayBuffer(e),i=new DataView(n),o="";for(let s=0;s<n.byteLength;s+=2){let a=i.getUint16(s,t);o+=String.fromCharCode(a)}return o}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),i=new DataView(n);for(let o=0;o<e.length;o++)i.setUint16(o*2,e.charCodeAt(o),t);return n}},x3=class r{static isHex(e){return typeof e===$9&&cG.test(e)}static isBase64(e){return typeof e===$9&&lG.test(e)}static isBase64Url(e){return typeof e===$9&&uG.test(e)}static ToString(e,t="utf8"){let n=Bs.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 Ni.toString(n,!0);case"utf16":case"utf16be":return Ni.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 Ni.fromString(e,!0);case"utf16":case"utf16be":return Ni.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Bs.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 w3.fromString(e);case"utf16":case"utf16be":return Ni.fromString(e);case"utf16le":case"usc2":return Ni.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 w3.toString(e);case"utf16":case"utf16be":return Ni.toString(e);case"utf16le":case"usc2":return Ni.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 i=0;i<t;i++)n[i]=e.charCodeAt(i);return n.buffer}static ToBinary(e){let t=Bs.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return n}static ToHex(e){let t=Bs.toUint8Array(e),n="",i=t.length;for(let o=0;o<i;o++){let s=t[o];s<16&&(n+="0"),n+=s.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 i=0;i<t.length;i=i+2){let o=t.slice(i,i+2);n[i/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(e,t=!1){return Ni.toString(e,t)}static FromUtf16String(e,t=!1){return Ni.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,"")||""}};x3.DEFAULT_UTF8_ENCODING="utf8";function fG(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let i=arguments[n];for(let o in i)t[o]=i[o]}return t}function dG(...r){let e=r.map(i=>i.byteLength).reduce((i,o)=>i+o),t=new Uint8Array(e),n=0;return r.map(i=>new Uint8Array(i)).forEach(i=>{for(let o of i)t[n++]=o}),t.buffer}function hG(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)if(t[i]!==n[i])return!1;return!0}nd.BufferSourceConverter=Bs;nd.Convert=x3;nd.assign=fG;nd.combine=dG;nd.isEqual=hG});var $D=ft(()=>{var FD;(function(r){(function(e){var t=typeof globalThis=="object"||typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof this=="object"?this:a(),n=i(r);typeof t.Reflect<"u"&&(n=i(t.Reflect,n)),e(n,t),typeof t.Reflect>"u"&&(t.Reflect=r);function i(c,l){return function(u,f){Object.defineProperty(c,u,{configurable:!0,writable:!0,value:f}),l&&l(u,f)}}function o(){try{return Function("return this;")()}catch{}}function s(){try{return(0,eval)("(function() { return this; })()")}catch{}}function a(){return o()||s()}})(function(e,t){var n=Object.prototype.hasOwnProperty,i=typeof Symbol=="function",o=i&&typeof Symbol.toPrimitive<"u"?Symbol.toPrimitive:"@@toPrimitive",s=i&&typeof Symbol.iterator<"u"?Symbol.iterator:"@@iterator",a=typeof Object.create=="function",c={__proto__:[]}instanceof Array,l=!a&&!c,u={create:a?function(){return m8(Object.create(null))}:c?function(){return m8({__proto__:null})}:function(){return m8({})},has:l?function(C,L){return n.call(C,L)}:function(C,L){return L in C},get:l?function(C,L){return n.call(C,L)?C[L]:void 0}:function(C,L){return C[L]}},f=Object.getPrototypeOf(Function),h=typeof Map=="function"&&typeof Map.prototype.entries=="function"?Map:_F(),d=typeof Set=="function"&&typeof Set.prototype.entries=="function"?Set:IF(),m=typeof WeakMap=="function"?WeakMap:TF(),g=i?Symbol.for("@reflect-metadata:registry"):void 0,w=EF(),x=SF(w);function v(C,L,j,te){if(q(j)){if(!Rt(C))throw new TypeError;if(!mr(L))throw new TypeError;return V(C,L)}else{if(!Rt(C))throw new TypeError;if(!le(L))throw new TypeError;if(!le(te)&&!q(te)&&!ge(te))throw new TypeError;return ge(te)&&(te=void 0),j=bt(j),X(C,L,j,te)}}e("decorate",v);function b(C,L){function j(te,Ae){if(!le(te))throw new TypeError;if(!q(Ae)&&!Qn(Ae))throw new TypeError;R(C,L,te,Ae)}return j}e("metadata",b);function S(C,L,j,te){if(!le(j))throw new TypeError;return q(te)||(te=bt(te)),R(C,L,j,te)}e("defineMetadata",S);function T(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),$(C,L,j)}e("hasMetadata",T);function D(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),F(C,L,j)}e("hasOwnMetadata",D);function A(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),z(C,L,j)}e("getMetadata",A);function I(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),M(C,L,j)}e("getOwnMetadata",I);function k(C,L){if(!le(C))throw new TypeError;return q(L)||(L=bt(L)),N(C,L)}e("getMetadataKeys",k);function Q(C,L){if(!le(C))throw new TypeError;return q(L)||(L=bt(L)),Z(C,L)}e("getOwnMetadataKeys",Q);function K(C,L,j){if(!le(L))throw new TypeError;if(q(j)||(j=bt(j)),!le(L))throw new TypeError;q(j)||(j=bt(j));var te=gh(L,j,!1);return q(te)?!1:te.OrdinaryDeleteMetadata(C,L,j)}e("deleteMetadata",K);function V(C,L){for(var j=C.length-1;j>=0;--j){var te=C[j],Ae=te(L);if(!q(Ae)&&!ge(Ae)){if(!mr(Ae))throw new TypeError;L=Ae}}return L}function X(C,L,j,te){for(var Ae=C.length-1;Ae>=0;--Ae){var Yt=C[Ae],gr=Yt(L,j,te);if(!q(gr)&&!ge(gr)){if(!le(gr))throw new TypeError;te=gr}}return te}function $(C,L,j){var te=F(C,L,j);if(te)return!0;var Ae=p8(L);return ge(Ae)?!1:$(C,Ae,j)}function F(C,L,j){var te=gh(L,j,!1);return q(te)?!1:Ye(te.OrdinaryHasOwnMetadata(C,L,j))}function z(C,L,j){var te=F(C,L,j);if(te)return M(C,L,j);var Ae=p8(L);if(!ge(Ae))return z(C,Ae,j)}function M(C,L,j){var te=gh(L,j,!1);if(!q(te))return te.OrdinaryGetOwnMetadata(C,L,j)}function R(C,L,j,te){var Ae=gh(j,te,!0);Ae.OrdinaryDefineOwnMetadata(C,L,j,te)}function N(C,L){var j=Z(C,L),te=p8(C);if(te===null)return j;var Ae=N(te,L);if(Ae.length<=0)return j;if(j.length<=0)return Ae;for(var Yt=new d,gr=[],qe=0,ae=j;qe<ae.length;qe++){var fe=ae[qe],he=Yt.has(fe);he||(Yt.add(fe),gr.push(fe))}for(var we=0,je=Ae;we<je.length;we++){var fe=je[we],he=Yt.has(fe);he||(Yt.add(fe),gr.push(fe))}return gr}function Z(C,L){var j=gh(C,L,!1);return j?j.OrdinaryOwnMetadataKeys(C,L):[]}function ne(C){if(C===null)return 1;switch(typeof C){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return C===null?1:6;default:return 6}}function q(C){return C===void 0}function ge(C){return C===null}function ke(C){return typeof C=="symbol"}function le(C){return typeof C=="object"?C!==null:typeof C=="function"}function De(C,L){switch(ne(C)){case 0:return C;case 1:return C;case 2:return C;case 3:return C;case 4:return C;case 5:return C}var j=L===3?"string":L===5?"number":"default",te=mh(C,o);if(te!==void 0){var Ae=te.call(C,j);if(le(Ae))throw new TypeError;return Ae}return et(C,j==="default"?"number":j)}function et(C,L){if(L==="string"){var j=C.toString;if(Et(j)){var te=j.call(C);if(!le(te))return te}var Ae=C.valueOf;if(Et(Ae)){var te=Ae.call(C);if(!le(te))return te}}else{var Ae=C.valueOf;if(Et(Ae)){var te=Ae.call(C);if(!le(te))return te}var Yt=C.toString;if(Et(Yt)){var te=Yt.call(C);if(!le(te))return te}}throw new TypeError}function Ye(C){return!!C}function pt(C){return""+C}function bt(C){var L=De(C,3);return ke(L)?L:pt(L)}function Rt(C){return Array.isArray?Array.isArray(C):C instanceof Object?C instanceof Array:Object.prototype.toString.call(C)==="[object Array]"}function Et(C){return typeof C=="function"}function mr(C){return typeof C=="function"}function Qn(C){switch(ne(C)){case 3:return!0;case 4:return!0;default:return!1}}function ds(C,L){return C===L||C!==C&&L!==L}function mh(C,L){var j=C[L];if(j!=null){if(!Et(j))throw new TypeError;return j}}function Gm(C){var L=mh(C,s);if(!Et(L))throw new TypeError;var j=L.call(C);if(!le(j))throw new TypeError;return j}function Xm(C){return C.value}function Ym(C){var L=C.next();return L.done?!1:L}function Qm(C){var L=C.return;L&&L.call(C)}function p8(C){var L=Object.getPrototypeOf(C);if(typeof C!="function"||C===f||L!==f)return L;var j=C.prototype,te=j&&Object.getPrototypeOf(j);if(te==null||te===Object.prototype)return L;var Ae=te.constructor;return typeof Ae!="function"||Ae===C?L:Ae}function vF(){var C;!q(g)&&typeof t.Reflect<"u"&&!(g in t.Reflect)&&typeof t.Reflect.defineMetadata=="function"&&(C=AF(t.Reflect));var L,j,te,Ae=new m,Yt={registerProvider:gr,getProvider:ae,setProvider:he};return Yt;function gr(we){if(!Object.isExtensible(Yt))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case C===we:break;case q(L):L=we;break;case L===we:break;case q(j):j=we;break;case j===we:break;default:te===void 0&&(te=new d),te.add(we);break}}function qe(we,je){if(!q(L)){if(L.isProviderFor(we,je))return L;if(!q(j)){if(j.isProviderFor(we,je))return L;if(!q(te))for(var Tt=Gm(te);;){var Qt=Ym(Tt);if(!Qt)return;var Gi=Xm(Qt);if(Gi.isProviderFor(we,je))return Qm(Tt),Gi}}}if(!q(C)&&C.isProviderFor(we,je))return C}function ae(we,je){var Tt=Ae.get(we),Qt;return q(Tt)||(Qt=Tt.get(je)),q(Qt)&&(Qt=qe(we,je),q(Qt)||(q(Tt)&&(Tt=new h,Ae.set(we,Tt)),Tt.set(je,Qt))),Qt}function fe(we){if(q(we))throw new TypeError;return L===we||j===we||!q(te)&&te.has(we)}function he(we,je,Tt){if(!fe(Tt))throw new Error("Metadata provider not registered.");var Qt=ae(we,je);if(Qt!==Tt){if(!q(Qt))return!1;var Gi=Ae.get(we);q(Gi)&&(Gi=new h,Ae.set(we,Gi)),Gi.set(je,Tt)}return!0}}function EF(){var C;return!q(g)&&le(t.Reflect)&&Object.isExtensible(t.Reflect)&&(C=t.Reflect[g]),q(C)&&(C=vF()),!q(g)&&le(t.Reflect)&&Object.isExtensible(t.Reflect)&&Object.defineProperty(t.Reflect,g,{enumerable:!1,configurable:!1,writable:!1,value:C}),C}function SF(C){var L=new m,j={isProviderFor:function(fe,he){var we=L.get(fe);return q(we)?!1:we.has(he)},OrdinaryDefineOwnMetadata:gr,OrdinaryHasOwnMetadata:Ae,OrdinaryGetOwnMetadata:Yt,OrdinaryOwnMetadataKeys:qe,OrdinaryDeleteMetadata:ae};return w.registerProvider(j),j;function te(fe,he,we){var je=L.get(fe),Tt=!1;if(q(je)){if(!we)return;je=new h,L.set(fe,je),Tt=!0}var Qt=je.get(he);if(q(Qt)){if(!we)return;if(Qt=new h,je.set(he,Qt),!C.setProvider(fe,he,j))throw je.delete(he),Tt&&L.delete(fe),new Error("Wrong provider for target.")}return Qt}function Ae(fe,he,we){var je=te(he,we,!1);return q(je)?!1:Ye(je.has(fe))}function Yt(fe,he,we){var je=te(he,we,!1);if(!q(je))return je.get(fe)}function gr(fe,he,we,je){var Tt=te(we,je,!0);Tt.set(fe,he)}function qe(fe,he){var we=[],je=te(fe,he,!1);if(q(je))return we;for(var Tt=je.keys(),Qt=Gm(Tt),Gi=0;;){var gS=Ym(Qt);if(!gS)return we.length=Gi,we;var CF=Xm(gS);try{we[Gi]=CF}catch(kF){try{Qm(Qt)}finally{throw kF}}Gi++}}function ae(fe,he,we){var je=te(he,we,!1);if(q(je)||!je.delete(fe))return!1;if(je.size===0){var Tt=L.get(he);q(Tt)||(Tt.delete(we),Tt.size===0&&L.delete(Tt))}return!0}}function AF(C){var L=C.defineMetadata,j=C.hasOwnMetadata,te=C.getOwnMetadata,Ae=C.getOwnMetadataKeys,Yt=C.deleteMetadata,gr=new m,qe={isProviderFor:function(ae,fe){var he=gr.get(ae);return!q(he)&&he.has(fe)?!0:Ae(ae,fe).length?(q(he)&&(he=new d,gr.set(ae,he)),he.add(fe),!0):!1},OrdinaryDefineOwnMetadata:L,OrdinaryHasOwnMetadata:j,OrdinaryGetOwnMetadata:te,OrdinaryOwnMetadataKeys:Ae,OrdinaryDeleteMetadata:Yt};return qe}function gh(C,L,j){var te=w.getProvider(C,L);if(!q(te))return te;if(j){if(w.setProvider(C,L,x))return x;throw new Error("Illegal state.")}}function _F(){var C={},L=[],j=function(){function qe(ae,fe,he){this._index=0,this._keys=ae,this._values=fe,this._selector=he}return qe.prototype["@@iterator"]=function(){return this},qe.prototype[s]=function(){return this},qe.prototype.next=function(){var ae=this._index;if(ae>=0&&ae<this._keys.length){var fe=this._selector(this._keys[ae],this._values[ae]);return ae+1>=this._keys.length?(this._index=-1,this._keys=L,this._values=L):this._index++,{value:fe,done:!1}}return{value:void 0,done:!0}},qe.prototype.throw=function(ae){throw this._index>=0&&(this._index=-1,this._keys=L,this._values=L),ae},qe.prototype.return=function(ae){return this._index>=0&&(this._index=-1,this._keys=L,this._values=L),{value:ae,done:!0}},qe}(),te=function(){function qe(){this._keys=[],this._values=[],this._cacheKey=C,this._cacheIndex=-2}return Object.defineProperty(qe.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),qe.prototype.has=function(ae){return this._find(ae,!1)>=0},qe.prototype.get=function(ae){var fe=this._find(ae,!1);return fe>=0?this._values[fe]:void 0},qe.prototype.set=function(ae,fe){var he=this._find(ae,!0);return this._values[he]=fe,this},qe.prototype.delete=function(ae){var fe=this._find(ae,!1);if(fe>=0){for(var he=this._keys.length,we=fe+1;we<he;we++)this._keys[we-1]=this._keys[we],this._values[we-1]=this._values[we];return this._keys.length--,this._values.length--,ds(ae,this._cacheKey)&&(this._cacheKey=C,this._cacheIndex=-2),!0}return!1},qe.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=C,this._cacheIndex=-2},qe.prototype.keys=function(){return new j(this._keys,this._values,Ae)},qe.prototype.values=function(){return new j(this._keys,this._values,Yt)},qe.prototype.entries=function(){return new j(this._keys,this._values,gr)},qe.prototype["@@iterator"]=function(){return this.entries()},qe.prototype[s]=function(){return this.entries()},qe.prototype._find=function(ae,fe){if(!ds(this._cacheKey,ae)){this._cacheIndex=-1;for(var he=0;he<this._keys.length;he++)if(ds(this._keys[he],ae)){this._cacheIndex=he;break}}return this._cacheIndex<0&&fe&&(this._cacheIndex=this._keys.length,this._keys.push(ae),this._values.push(void 0)),this._cacheIndex},qe}();return te;function Ae(qe,ae){return qe}function Yt(qe,ae){return ae}function gr(qe,ae){return[qe,ae]}}function IF(){var C=function(){function L(){this._map=new h}return Object.defineProperty(L.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),L.prototype.has=function(j){return this._map.has(j)},L.prototype.add=function(j){return this._map.set(j,j),this},L.prototype.delete=function(j){return this._map.delete(j)},L.prototype.clear=function(){this._map.clear()},L.prototype.keys=function(){return this._map.keys()},L.prototype.values=function(){return this._map.keys()},L.prototype.entries=function(){return this._map.entries()},L.prototype["@@iterator"]=function(){return this.keys()},L.prototype[s]=function(){return this.keys()},L}();return C}function TF(){var C=16,L=u.create(),j=te();return function(){function ae(){this._key=te()}return ae.prototype.has=function(fe){var he=Ae(fe,!1);return he!==void 0?u.has(he,this._key):!1},ae.prototype.get=function(fe){var he=Ae(fe,!1);return he!==void 0?u.get(he,this._key):void 0},ae.prototype.set=function(fe,he){var we=Ae(fe,!0);return we[this._key]=he,this},ae.prototype.delete=function(fe){var he=Ae(fe,!1);return he!==void 0?delete he[this._key]:!1},ae.prototype.clear=function(){this._key=te()},ae}();function te(){var ae;do ae="@@WeakMap@@"+qe();while(u.has(L,ae));return L[ae]=!0,ae}function Ae(ae,fe){if(!n.call(ae,j)){if(!fe)return;Object.defineProperty(ae,j,{value:u.create()})}return ae[j]}function Yt(ae,fe){for(var he=0;he<fe;++he)ae[he]=Math.random()*255|0;return ae}function gr(ae){if(typeof Uint8Array=="function"){var fe=new Uint8Array(ae);return typeof crypto<"u"?crypto.getRandomValues(fe):typeof msCrypto<"u"?msCrypto.getRandomValues(fe):Yt(fe,ae),fe}return Yt(new Array(ae),ae)}function qe(){var ae=gr(C);ae[6]=ae[6]&79|64,ae[8]=ae[8]&191|128;for(var fe="",he=0;he<C;++he){var we=ae[he];(he===4||he===6||he===8)&&(fe+="-"),we<16&&(fe+="0"),fe+=we.toString(16).toLowerCase()}return fe}}function m8(C){return C.__=void 0,delete C.__,C}})})(FD||(FD={}))});var XN=ft((PBe,R4)=>{var kN,PN,RN,DN,NN,ON,LN,BN,MN,P4,fv,UN,FN,Ud,$N,HN,VN,zN,KN,qN,jN,WN,GN;(function(r){var e=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){r(t(e,t(n)))}):typeof R4=="object"&&typeof R4.exports=="object"?r(t(e,t(R4.exports))):r(t(e));function t(n,i){return n!==e&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(o,s){return n[o]=i?i(o,s):s}}})(function(r){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)n.hasOwnProperty(i)&&(t[i]=n[i])};kN=function(t,n){e(t,n);function i(){this.constructor=t}t.prototype=n===null?Object.create(n):(i.prototype=n.prototype,new i)},PN=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])}return t},RN=function(t,n){var i={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(i[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,o=Object.getOwnPropertySymbols(t);s<o.length;s++)n.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(t,o[s])&&(i[o[s]]=t[o[s]]);return i},DN=function(t,n,i,o){var s=arguments.length,a=s<3?n:o===null?o=Object.getOwnPropertyDescriptor(n,i):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,n,i,o);else for(var l=t.length-1;l>=0;l--)(c=t[l])&&(a=(s<3?c(a):s>3?c(n,i,a):c(n,i))||a);return s>3&&a&&Object.defineProperty(n,i,a),a},NN=function(t,n){return function(i,o){n(i,o,t)}},ON=function(t,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,n)},LN=function(t,n,i,o){function s(a){return a instanceof i?a:new i(function(c){c(a)})}return new(i||(i=Promise))(function(a,c){function l(h){try{f(o.next(h))}catch(d){c(d)}}function u(h){try{f(o.throw(h))}catch(d){c(d)}}function f(h){h.done?a(h.value):s(h.value).then(l,u)}f((o=o.apply(t,n||[])).next())})},BN=function(t,n){var i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(c[Symbol.iterator]=function(){return this}),c;function l(f){return function(h){return u([f,h])}}function u(f){if(o)throw new TypeError("Generator is already executing.");for(;i;)try{if(o=1,s&&(a=f[0]&2?s.return:f[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,f[1])).done)return a;switch(s=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return i.label++,{value:f[1],done:!1};case 5:i.label++,s=f[1],f=[0];continue;case 7:f=i.ops.pop(),i.trys.pop();continue;default:if(a=i.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){i=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){i.label=f[1];break}if(f[0]===6&&i.label<a[1]){i.label=a[1],a=f;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(f);break}a[2]&&i.ops.pop(),i.trys.pop();continue}f=n.call(t,i)}catch(h){f=[6,h],s=0}finally{o=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},GN=function(t,n,i,o){o===void 0&&(o=i),t[o]=n[i]},MN=function(t,n){for(var i in t)i!=="default"&&!n.hasOwnProperty(i)&&(n[i]=t[i])},P4=function(t){var n=typeof Symbol=="function"&&Symbol.iterator,i=n&&t[n],o=0;if(i)return i.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")},fv=function(t,n){var i=typeof Symbol=="function"&&t[Symbol.iterator];if(!i)return t;var o=i.call(t),s,a=[],c;try{for(;(n===void 0||n-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(l){c={error:l}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(c)throw c.error}}return a},UN=function(){for(var t=[],n=0;n<arguments.length;n++)t=t.concat(fv(arguments[n]));return t},FN=function(){for(var t=0,n=0,i=arguments.length;n<i;n++)t+=arguments[n].length;for(var o=Array(t),s=0,n=0;n<i;n++)for(var a=arguments[n],c=0,l=a.length;c<l;c++,s++)o[s]=a[c];return o},Ud=function(t){return this instanceof Ud?(this.v=t,this):new Ud(t)},$N=function(t,n,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=i.apply(t,n||[]),s,a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(m){o[m]&&(s[m]=function(g){return new Promise(function(w,x){a.push([m,g,w,x])>1||l(m,g)})})}function l(m,g){try{u(o[m](g))}catch(w){d(a[0][3],w)}}function u(m){m.value instanceof Ud?Promise.resolve(m.value.v).then(f,h):d(a[0][2],m)}function f(m){l("next",m)}function h(m){l("throw",m)}function d(m,g){m(g),a.shift(),a.length&&l(a[0][0],a[0][1])}},HN=function(t){var n,i;return n={},o("next"),o("throw",function(s){throw s}),o("return"),n[Symbol.iterator]=function(){return this},n;function o(s,a){n[s]=t[s]?function(c){return(i=!i)?{value:Ud(t[s](c)),done:s==="return"}:a?a(c):c}:a}},VN=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t[Symbol.asyncIterator],i;return n?n.call(t):(t=typeof P4=="function"?P4(t):t[Symbol.iterator](),i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i);function o(a){i[a]=t[a]&&function(c){return new Promise(function(l,u){c=t[a](c),s(l,u,c.done,c.value)})}}function s(a,c,l,u){Promise.resolve(u).then(function(f){a({value:f,done:l})},c)}},zN=function(t,n){return Object.defineProperty?Object.defineProperty(t,"raw",{value:n}):t.raw=n,t},KN=function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var i in t)Object.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n.default=t,n},qN=function(t){return t&&t.__esModule?t:{default:t}},jN=function(t,n){if(!n.has(t))throw new TypeError("attempted to get private field on non-instance");return n.get(t)},WN=function(t,n,i){if(!n.has(t))throw new TypeError("attempted to set private field on non-instance");return n.set(t,i),i},r("__extends",kN),r("__assign",PN),r("__rest",RN),r("__decorate",DN),r("__param",NN),r("__metadata",ON),r("__awaiter",LN),r("__generator",BN),r("__exportStar",MN),r("__createBinding",GN),r("__values",P4),r("__read",fv),r("__spread",UN),r("__spreadArrays",FN),r("__await",Ud),r("__asyncGenerator",$N),r("__asyncDelegator",HN),r("__asyncValues",VN),r("__makeTemplateObject",zN),r("__importStar",KN),r("__importDefault",qN),r("__classPrivateFieldGet",jN),r("__classPrivateFieldSet",WN)})});var TL=ft(c6=>{"use strict";Object.defineProperty(c6,"__esModule",{value:!0});var tE=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,i)=>{this.pullQueue.push({resolve:n,reject:i})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},a6=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let i=new tE;i.highWaterMark=t,i.lowWaterMark=n,i.removeCallback=e({push:o=>i.push(o),stop:()=>i.stop(),fail:o=>i.fail(o),on:(o,s)=>{i.eventHandlers[o]=s}})||(()=>{}),this[Symbol.asyncIterator]=()=>i[Symbol.asyncIterator](),Object.freeze(this)}};c6.EventIterator=a6;c6.default=a6});var CL=ft(hm=>{"use strict";Object.defineProperty(hm,"__esModule",{value:!0});var rE=TL();hm.EventIterator=rE.EventIterator;function xY(r,e,t){return new rE.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}hm.subscribe=xY;hm.default=rE.EventIterator});var yB=ft((Nje,gB)=>{function ji(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}gB.exports=ji;ji.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};ji.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};ji.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t),this._options.unref&&this._timer.unref(),!0};ji.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};ji.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};ji.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};ji.prototype.start=ji.prototype.try;ji.prototype.errors=function(){return this._errors};ji.prototype.attempts=function(){return this._attempts};ji.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var i=this._errors[n],o=i.message,s=(r[o]||0)+1;r[o]=s,s>=t&&(e=i,t=s)}return e}});var wB=ft(Tu=>{var iQ=yB();Tu.operation=function(r){var e=Tu.timeouts(r);return new iQ(e,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Tu.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],i=0;i<e.retries;i++)n.push(this.createTimeout(i,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(i,e)),n.sort(function(o,s){return o-s}),n};Tu.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};Tu.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var i=0;i<t.length;i++){var o=t[i],s=r[o];r[o]=function(c){var l=Tu.operation(e),u=Array.prototype.slice.call(arguments,1),f=u.pop();u.push(function(h){l.retry(h)||(h&&(arguments[0]=l.mainError()),f.apply(this,arguments))}),l.attempt(function(){c.apply(r,u)})}.bind(r,s),r[o].options=e}}});var bB=ft((Lje,xB)=>{xB.exports=wB()});var VB=ft((kXe,HB)=>{HB.exports=DE;var $B=128,TQ=127,CQ=~TQ,kQ=Math.pow(2,31);function DE(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw DE.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=kQ;)e[t++]=r&255|$B,r/=128;for(;r&CQ;)e[t++]=r&255|$B,r>>>=7;return e[t]=r|0,DE.bytes=t-n+1,e}});var qB=ft((PXe,KB)=>{KB.exports=NE;var PQ=128,zB=127;function NE(r,n){var t=0,n=n||0,i=0,o=n,s,a=r.length;do{if(o>=a||i>49)throw NE.bytes=0,new RangeError("Could not decode varint");s=r[o++],t+=i<28?(s&zB)<<i:(s&zB)*Math.pow(2,i),i+=7}while(s>=PQ);return NE.bytes=o-n,t}});var WB=ft((RXe,jB)=>{var RQ=Math.pow(2,7),DQ=Math.pow(2,14),NQ=Math.pow(2,21),OQ=Math.pow(2,28),LQ=Math.pow(2,35),BQ=Math.pow(2,42),MQ=Math.pow(2,49),UQ=Math.pow(2,56),FQ=Math.pow(2,63);jB.exports=function(r){return r<RQ?1:r<DQ?2:r<NQ?3:r<OQ?4:r<LQ?5:r<BQ?6:r<MQ?7:r<UQ?8:r<FQ?9:10}});var u5=ft((DXe,GB)=>{GB.exports={encode:VB(),decode:qB(),encodingLength:WB()}});var hM=ft((Rm,A5)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(d){if(!Array.isArray(d)&&!ArrayBuffer.isView(d))return!1;for(var m=0;m<d.length;m++)if(!Number.isInteger(d[m])||d[m]<0||d[m]>255)return!1;return!0}function i(d,m){return(d&65535)*m+(((d>>>16)*m&65535)<<16)}function o(d,m){return d<<m|d>>>32-m}function s(d){return d^=d>>>16,d=i(d,2246822507),d^=d>>>13,d=i(d,3266489909),d^=d>>>16,d}function a(d,m){d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535],m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];var g=[0,0,0,0];return g[3]+=d[3]+m[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=d[2]+m[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=d[1]+m[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=d[0]+m[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function c(d,m){d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535],m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];var g=[0,0,0,0];return g[3]+=d[3]*m[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=d[2]*m[3],g[1]+=g[2]>>>16,g[2]&=65535,g[2]+=d[3]*m[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=d[1]*m[3],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=d[2]*m[2],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=d[3]*m[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=d[0]*m[3]+d[1]*m[2]+d[2]*m[1]+d[3]*m[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function l(d,m){return m%=64,m===32?[d[1],d[0]]:m<32?[d[0]<<m|d[1]>>>32-m,d[1]<<m|d[0]>>>32-m]:(m-=32,[d[1]<<m|d[0]>>>32-m,d[0]<<m|d[1]>>>32-m])}function u(d,m){return m%=64,m===0?d:m<32?[d[0]<<m|d[1]>>>32-m,d[1]<<m]:[d[1]<<m-32,0]}function f(d,m){return[d[0]^m[0],d[1]^m[1]]}function h(d){return d=f(d,[0,d[0]>>>1]),d=c(d,[4283543511,3981806797]),d=f(d,[0,d[0]>>>1]),d=c(d,[3301882366,444984403]),d=f(d,[0,d[0]>>>1]),d}t.x86.hash32=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%4,w=d.length-g,x=m,v=0,b=3432918353,S=461845907,T=0;T<w;T=T+4)v=d[T]|d[T+1]<<8|d[T+2]<<16|d[T+3]<<24,v=i(v,b),v=o(v,15),v=i(v,S),x^=v,x=o(x,13),x=i(x,5)+3864292196;switch(v=0,g){case 3:v^=d[T+2]<<16;case 2:v^=d[T+1]<<8;case 1:v^=d[T],v=i(v,b),v=o(v,15),v=i(v,S),x^=v}return x^=d.length,x=s(x),x>>>0},t.x86.hash128=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%16,w=d.length-g,x=m,v=m,b=m,S=m,T=0,D=0,A=0,I=0,k=597399067,Q=2869860233,K=951274213,V=2716044179,X=0;X<w;X=X+16)T=d[X]|d[X+1]<<8|d[X+2]<<16|d[X+3]<<24,D=d[X+4]|d[X+5]<<8|d[X+6]<<16|d[X+7]<<24,A=d[X+8]|d[X+9]<<8|d[X+10]<<16|d[X+11]<<24,I=d[X+12]|d[X+13]<<8|d[X+14]<<16|d[X+15]<<24,T=i(T,k),T=o(T,15),T=i(T,Q),x^=T,x=o(x,19),x+=v,x=i(x,5)+1444728091,D=i(D,Q),D=o(D,16),D=i(D,K),v^=D,v=o(v,17),v+=b,v=i(v,5)+197830471,A=i(A,K),A=o(A,17),A=i(A,V),b^=A,b=o(b,15),b+=S,b=i(b,5)+2530024501,I=i(I,V),I=o(I,18),I=i(I,k),S^=I,S=o(S,13),S+=x,S=i(S,5)+850148119;switch(T=0,D=0,A=0,I=0,g){case 15:I^=d[X+14]<<16;case 14:I^=d[X+13]<<8;case 13:I^=d[X+12],I=i(I,V),I=o(I,18),I=i(I,k),S^=I;case 12:A^=d[X+11]<<24;case 11:A^=d[X+10]<<16;case 10:A^=d[X+9]<<8;case 9:A^=d[X+8],A=i(A,K),A=o(A,17),A=i(A,V),b^=A;case 8:D^=d[X+7]<<24;case 7:D^=d[X+6]<<16;case 6:D^=d[X+5]<<8;case 5:D^=d[X+4],D=i(D,Q),D=o(D,16),D=i(D,K),v^=D;case 4:T^=d[X+3]<<24;case 3:T^=d[X+2]<<16;case 2:T^=d[X+1]<<8;case 1:T^=d[X],T=i(T,k),T=o(T,15),T=i(T,Q),x^=T}return x^=d.length,v^=d.length,b^=d.length,S^=d.length,x+=v,x+=b,x+=S,v+=x,b+=x,S+=x,x=s(x),v=s(v),b=s(b),S=s(S),x+=v,x+=b,x+=S,v+=x,b+=x,S+=x,("00000000"+(x>>>0).toString(16)).slice(-8)+("00000000"+(v>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(S>>>0).toString(16)).slice(-8)},t.x64.hash128=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%16,w=d.length-g,x=[0,m],v=[0,m],b=[0,0],S=[0,0],T=[2277735313,289559509],D=[1291169091,658871167],A=0;A<w;A=A+16)b=[d[A+4]|d[A+5]<<8|d[A+6]<<16|d[A+7]<<24,d[A]|d[A+1]<<8|d[A+2]<<16|d[A+3]<<24],S=[d[A+12]|d[A+13]<<8|d[A+14]<<16|d[A+15]<<24,d[A+8]|d[A+9]<<8|d[A+10]<<16|d[A+11]<<24],b=c(b,T),b=l(b,31),b=c(b,D),x=f(x,b),x=l(x,27),x=a(x,v),x=a(c(x,[0,5]),[0,1390208809]),S=c(S,D),S=l(S,33),S=c(S,T),v=f(v,S),v=l(v,31),v=a(v,x),v=a(c(v,[0,5]),[0,944331445]);switch(b=[0,0],S=[0,0],g){case 15:S=f(S,u([0,d[A+14]],48));case 14:S=f(S,u([0,d[A+13]],40));case 13:S=f(S,u([0,d[A+12]],32));case 12:S=f(S,u([0,d[A+11]],24));case 11:S=f(S,u([0,d[A+10]],16));case 10:S=f(S,u([0,d[A+9]],8));case 9:S=f(S,[0,d[A+8]]),S=c(S,D),S=l(S,33),S=c(S,T),v=f(v,S);case 8:b=f(b,u([0,d[A+7]],56));case 7:b=f(b,u([0,d[A+6]],48));case 6:b=f(b,u([0,d[A+5]],40));case 5:b=f(b,u([0,d[A+4]],32));case 4:b=f(b,u([0,d[A+3]],24));case 3:b=f(b,u([0,d[A+2]],16));case 2:b=f(b,u([0,d[A+1]],8));case 1:b=f(b,[0,d[A]]),b=c(b,T),b=l(b,31),b=c(b,D),x=f(x,b)}return x=f(x,[0,d.length]),v=f(v,[0,d.length]),x=a(x,v),v=a(v,x),x=h(x),v=h(v),x=a(x,v),v=a(v,x),("00000000"+(x[0]>>>0).toString(16)).slice(-8)+("00000000"+(x[1]>>>0).toString(16)).slice(-8)+("00000000"+(v[0]>>>0).toString(16)).slice(-8)+("00000000"+(v[1]>>>0).toString(16)).slice(-8)},typeof Rm<"u"?(typeof A5<"u"&&A5.exports&&(Rm=A5.exports=t),Rm.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(Rm)});var mM=ft((IQe,pM)=>{pM.exports=hM()});var I5=ft((NQe,yM)=>{"use strict";yM.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let i=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):i=!0,this._setInternalPos(n,e,t,i),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,i=t;for(;n<this.length;){let o=this.get(n);i=e(i,o,n),n++}return i}find(e){let t=0,n,i;for(;t<this.length&&!n;)i=this.get(t),n=e(i),t++;return n?i:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let i=this._bitArrays[n],o=e-n*7;if(!((i&1<<o)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(fZ,0),c=~(4294967295<<o+1),l=gM(i&c);return a+l-1}_bytePosFor(e,t){let n=Math.floor(e/7),i=n+1;for(;!t&&this._bitArrays.length<i;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,i){let o=this._data,s=[t,n];if(i)this._sortData(),o[e]=s;else{if(o.length)if(o[o.length-1][0]>=t)o.push(s);else if(o[0][0]<=t)o.unshift(s);else{let a=Math.round(o.length/2);this._data=o.slice(0,a).concat(s).concat(o.slice(a))}else this._data.push(s);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(dZ),this._changedData=!1}bitField(){let e=[],t=8,n=0,i=0,o,s=this._bitArrays.slice();for(;s.length||n;){n===0&&(o=s.shift(),n=7);let c=Math.min(n,t),l=~(255<<c),u=o&l;i|=u<<8-t,o=o>>>c,n-=c,t-=c,(!t||!n&&!s.length)&&(e.push(i),i=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(hZ)}};function fZ(r,e){return r+gM(e)}function gM(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function dZ(r,e){return r[0]-e[0]}function hZ(r){return r[1]}});var yU=ft(ZE=>{ZE.read=function(r,e,t,n,i){var o,s,a=i*8-n-1,c=(1<<a)-1,l=c>>1,u=-7,f=t?i-1:0,h=t?-1:1,d=r[e+f];for(f+=h,o=d&(1<<-u)-1,d>>=-u,u+=a;u>0;o=o*256+r[e+f],f+=h,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=n;u>0;s=s*256+r[e+f],f+=h,u-=8);if(o===0)o=1-l;else{if(o===c)return s?NaN:(d?-1:1)*(1/0);s=s+Math.pow(2,n),o=o-l}return(d?-1:1)*s*Math.pow(2,o-n)};ZE.write=function(r,e,t,n,i,o){var s,a,c,l=o*8-i-1,u=(1<<l)-1,f=u>>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,m=n?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-s))<1&&(s--,c*=2),s+f>=1?e+=h/c:e+=h*Math.pow(2,1-f),e*c>=2&&(s++,c/=2),s+f>=u?(a=0,s=u):s+f>=1?(a=(e*c-1)*Math.pow(2,i),s=s+f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;r[t+d]=a&255,d+=m,a/=256,i-=8);for(s=s<<i|a,l+=i;l>0;r[t+d]=s&255,d+=m,s/=256,l-=8);r[t+d-m]|=g*128}});var OU=ft((Gnt,NU)=>{var fh=1e3,dh=fh*60,hh=dh*60,Uu=hh*24,iee=Uu*7,oee=Uu*365.25;NU.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return see(r);if(t==="number"&&isFinite(r))return e.long?cee(r):aee(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function see(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*oee;case"weeks":case"week":case"w":return t*iee;case"days":case"day":case"d":return t*Uu;case"hours":case"hour":case"hrs":case"hr":case"h":return t*hh;case"minutes":case"minute":case"mins":case"min":case"m":return t*dh;case"seconds":case"second":case"secs":case"sec":case"s":return t*fh;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function aee(r){var e=Math.abs(r);return e>=Uu?Math.round(r/Uu)+"d":e>=hh?Math.round(r/hh)+"h":e>=dh?Math.round(r/dh)+"m":e>=fh?Math.round(r/fh)+"s":r+"ms"}function cee(r){var e=Math.abs(r);return e>=Uu?X5(r,e,Uu,"day"):e>=hh?X5(r,e,hh,"hour"):e>=dh?X5(r,e,dh,"minute"):e>=fh?X5(r,e,fh,"second"):r+" ms"}function X5(r,e,t,n){var i=e>=t*1.5;return Math.round(r/t)+" "+n+(i?"s":"")}});var BU=ft((Xnt,LU)=>{function lee(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=i,t.enabled=a,t.humanize=OU(),t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let h=0;h<u.length;h++)f=(f<<5)-f+u.charCodeAt(h),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u){let f,h=null,d,m;function g(...w){if(!g.enabled)return;let x=g,v=Number(new Date),b=v-(f||v);x.diff=b,x.prev=f,x.curr=v,f=v,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let S=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(D,A)=>{if(D==="%%")return"%";S++;let I=t.formatters[A];if(typeof I=="function"){let k=w[S];D=I.call(x,k),w.splice(S,1),S--}return D}),t.formatArgs.call(x,w),(x.log||t.log).apply(x,w)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(d!==t.namespaces&&(d=t.namespaces,m=t.enabled(u)),m),set:w=>{h=w}}),typeof t.init=="function"&&t.init(g),g}function n(u,f){let h=t(this.namespace+(typeof f>"u"?":":f)+u);return h.log=this.log,h}function i(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f=(typeof u=="string"?u:"").trim().replace(" ",",").split(",").filter(Boolean);for(let h of f)h[0]==="-"?t.skips.push(h.slice(1)):t.names.push(h)}function o(u,f){let h=0,d=0,m=-1,g=0;for(;h<u.length;)if(d<f.length&&(f[d]===u[h]||f[d]==="*"))f[d]==="*"?(m=d,g=h,d++):(h++,d++);else if(m!==-1)d=m+1,g++,h=g;else return!1;for(;d<f.length&&f[d]==="*";)d++;return d===f.length}function s(){let u=[...t.names,...t.skips.map(f=>"-"+f)].join(",");return t.enable(""),u}function a(u){for(let f of t.skips)if(o(u,f))return!1;for(let f of t.names)if(o(u,f))return!0;return!1}function c(u){return u instanceof Error?u.stack||u.message:u}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}LU.exports=lee});var MU=ft((bi,Y5)=>{bi.formatArgs=fee;bi.save=dee;bi.load=hee;bi.useColors=uee;bi.storage=pee();bi.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`."))}})();bi.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 uee(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let r;return 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&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function fee(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Y5.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,i=>{i!=="%%"&&(t++,i==="%c"&&(n=t))}),r.splice(n,0,e)}bi.log=console.debug||console.log||(()=>{});function dee(r){try{r?bi.storage.setItem("debug",r):bi.storage.removeItem("debug")}catch{}}function hee(){let r;try{r=bi.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function pee(){try{return localStorage}catch{}}Y5.exports=BU()(bi);var{formatters:mee}=Y5.exports;mee.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var eF=ft((Rot,JU)=>{"use strict";JU.exports={RTLD_LAZY:1,RTLD_NOW:2,RTLD_GLOBAL:256,RTLD_LOCAL:0,RTLD_DEEPBIND:8,E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOPNOTSUPP:95,EOVERFLOW:75,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18,PRIORITY_LOW:19,PRIORITY_BELOW_NORMAL:10,PRIORITY_NORMAL:0,PRIORITY_ABOVE_NORMAL:-7,PRIORITY_HIGH:-14,PRIORITY_HIGHEST:-20,SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGILL:4,SIGTRAP:5,SIGABRT:6,SIGIOT:6,SIGBUS:7,SIGFPE:8,SIGKILL:9,SIGUSR1:10,SIGSEGV:11,SIGUSR2:12,SIGPIPE:13,SIGALRM:14,SIGTERM:15,SIGCHLD:17,SIGSTKFLT:16,SIGCONT:18,SIGSTOP:19,SIGTSTP:20,SIGTTIN:21,SIGTTOU:22,SIGURG:23,SIGXCPU:24,SIGXFSZ:25,SIGVTALRM:26,SIGPROF:27,SIGWINCH:28,SIGIO:29,SIGPOLL:29,SIGPWR:30,SIGSYS:31,UV_FS_SYMLINK_DIR:1,UV_FS_SYMLINK_JUNCTION:2,O_RDONLY:0,O_WRONLY:1,O_RDWR:2,UV_DIRENT_UNKNOWN:0,UV_DIRENT_FILE:1,UV_DIRENT_DIR:2,UV_DIRENT_LINK:3,UV_DIRENT_FIFO:4,UV_DIRENT_SOCKET:5,UV_DIRENT_CHAR:6,UV_DIRENT_BLOCK:7,EXTENSIONLESS_FORMAT_JAVASCRIPT:0,EXTENSIONLESS_FORMAT_WASM:1,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,O_CREAT:64,O_EXCL:128,UV_FS_O_FILEMAP:0,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_DIRECTORY:65536,O_NOATIME:262144,O_NOFOLLOW:131072,O_SYNC:1052672,O_DSYNC:4096,O_DIRECT:16384,O_NONBLOCK:2048,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,S_IXOTH:1,F_OK:0,R_OK:4,W_OK:2,X_OK:1,UV_FS_COPYFILE_EXCL:1,COPYFILE_EXCL:1,UV_FS_COPYFILE_FICLONE:2,COPYFILE_FICLONE:2,UV_FS_COPYFILE_FICLONE_FORCE:4,COPYFILE_FICLONE_FORCE:4,OPENSSL_VERSION_NUMBER:805306608,SSL_OP_ALL:2147485776,SSL_OP_ALLOW_NO_DHE_KEX:1024,SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION:262144,SSL_OP_CIPHER_SERVER_PREFERENCE:4194304,SSL_OP_CISCO_ANYCONNECT:32768,SSL_OP_COOKIE_EXCHANGE:8192,SSL_OP_CRYPTOPRO_TLSEXT_BUG:2147483648,SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS:2048,SSL_OP_LEGACY_SERVER_CONNECT:4,SSL_OP_NO_COMPRESSION:131072,SSL_OP_NO_ENCRYPT_THEN_MAC:524288,SSL_OP_NO_QUERY_MTU:4096,SSL_OP_NO_RENEGOTIATION:1073741824,SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION:65536,SSL_OP_NO_SSLv2:0,SSL_OP_NO_SSLv3:33554432,SSL_OP_NO_TICKET:16384,SSL_OP_NO_TLSv1:67108864,SSL_OP_NO_TLSv1_1:268435456,SSL_OP_NO_TLSv1_2:134217728,SSL_OP_NO_TLSv1_3:536870912,SSL_OP_PRIORITIZE_CHACHA:2097152,SSL_OP_TLS_ROLLBACK_BUG:8388608,ENGINE_METHOD_RSA:1,ENGINE_METHOD_DSA:2,ENGINE_METHOD_DH:4,ENGINE_METHOD_RAND:8,ENGINE_METHOD_EC:2048,ENGINE_METHOD_CIPHERS:64,ENGINE_METHOD_DIGESTS:128,ENGINE_METHOD_PKEY_METHS:512,ENGINE_METHOD_PKEY_ASN1_METHS:1024,ENGINE_METHOD_ALL:65535,ENGINE_METHOD_NONE:0,DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,RSA_PKCS1_PADDING:1,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,RSA_PSS_SALTLEN_DIGEST:-1,RSA_PSS_SALTLEN_MAX_SIGN:-2,RSA_PSS_SALTLEN_AUTO:-2,defaultCoreCipherList:"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA",TLS1_VERSION:769,TLS1_1_VERSION:770,TLS1_2_VERSION:771,TLS1_3_VERSION:772,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var kte={};Ft(kte,{BasePlugin:()=>Mt,DirIndexHtmlPlugin:()=>Wm,PluginError:()=>zm,PluginFatalError:()=>na,createVerifiedFetch:()=>mS,dirIndexHtmlPluginFactory:()=>bF,verifiedFetch:()=>h8});var wS=Symbol.for("@libp2p/connection");var Do=Symbol.for("@libp2p/content-routing");function xS(r){return r==null?!1:(r.type==="RSA"||r.type==="Ed25519"||r.type==="secp256k1"||r.type==="ECDSA")&&r.raw instanceof Uint8Array&&typeof r.equals=="function"&&typeof r.toMultihash=="function"&&typeof r.toCID=="function"&&typeof r.verify=="function"}var _c=Symbol.for("@libp2p/peer-discovery");var Jm=Symbol.for("@libp2p/peer-id");function e0(r){return!!r?.[Jm]}var No=Symbol.for("@libp2p/peer-routing");var ia="keep-alive";var oa=Symbol.for("@libp2p/transport");var Ic;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Ic||(Ic={}));var Tr=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},t0=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},r0=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},U=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},hs=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},yh=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var n0=class extends Error{static name="ConnectionClosingError";constructor(e="The connection is closing"){super(e),this.name="ConnectionClosingError"}},$u=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},Hu=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Oo=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},i0=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}},Tc=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},We=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},Vu=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},sa=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},o0=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},aa=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},ps=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Be=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},s0=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},Lo=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Zn=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var ms=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},Cc=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},zu=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},a0=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},ca=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Xi=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Me=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let i=this.#e.get(e);i!=null&&(i=i.filter(({callback:o})=>o!==t),this.#e.set(e,i))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:i})=>!i),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function c0(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Cr(...r){let e=[];for(let t of r)c0(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 Gr(...r){let e=[];for(let t of r)c0(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 tt=Symbol.for("@libp2p/service-capabilities"),Jn=Symbol.for("@libp2p/service-dependencies");function Ne(r){let e=new globalThis.AbortController;function t(){e.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}for(let o of r){if(o?.aborted===!0){t();break}o?.addEventListener!=null&&o.addEventListener("abort",t)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}let i=e.signal;return i.clear=n,i}function ye(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var l0=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Ku=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new l0(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 l0(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 g8=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Xr(r={}){return BF(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 BF(r,e){e=e??{};let t=e.onEnd,n=new Ku,i,o,s,a=ye(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((w,x)=>{o=v=>{o=null,n.push(v);try{w(r(n))}catch(b){x(b)}return i}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ye()})}},l=w=>o!=null?o(w):(n.push(w),i),u=w=>(n=new Ku,o!=null?o({error:w}):(n.push({error:w}),i)),f=w=>{if(s)return i;if(e?.objectMode!==!0&&w?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:w})},h=w=>s?i:(s=!0,w!=null?u(w):l({done:!0})),d=()=>(n=new Ku,h(),{done:!0}),m=w=>(h(w),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:d,throw:m,push:f,end:h,get readableLength(){return n.size},onEmpty:async w=>{let x=w?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let v,b;x!=null&&(v=new Promise((S,T)=>{b=()=>{T(new g8)},x.addEventListener("abort",b)}));try{await Promise.race([a.promise,v])}finally{b!=null&&x!=null&&x?.removeEventListener("abort",b)}}},t==null)return i;let g=i;return i={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(w){return g.throw(w),t!=null&&(t(w),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(w){return g.end(w),t!=null&&(t(w),t=void 0),i},get readableLength(){return g.readableLength},onEmpty:w=>g.onEmpty(w)},i}var y8=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 Er(r,e,t,n){let i=new y8(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(i):new Promise((o,s)=>{function a(){t?.removeEventListener("abort",u),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){a(),s(h);return}a(),o(f)},l=f=>{a(),s(f.detail)},u=()=>{a(),s(i)};t?.addEventListener("abort",u),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var u0=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},f0=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var d0=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Dt(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new d0(t?.errorMessage,t?.errorCode,t?.errorName));let n,i=new d0(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,s)=>{n=()=>{s(i)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var h0=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ye(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Tr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function MF(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var p0=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=MF(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Tr),this.cleanup())}async join(e={}){let t=new h0(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 Dt(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ln=class extends Me{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??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.sort=e.sort,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){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new f0;let n=new p0(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Tr)}),this.clear()}async onEmpty(e){this.size!==0&&await Er(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Er(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Er(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=Xr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},i=c=>{c.detail!=null&&t.push(c.detail)},o=c=>{n(c.detail)},s=()=>{n()},a=()=>{n(new Tr("Queue aborted"))};this.addEventListener("completed",i),this.addEventListener("error",o),this.addEventListener("idle",s),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",i),this.removeEventListener("error",o),this.removeEventListener("idle",s),e?.signal?.removeEventListener("abort",a),n()}}};var kr=class extends ln{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function UF(r){return r[Symbol.asyncIterator]!=null}function FF(r){if(UF(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Sr=FF;function Pe(r=0){return new Uint8Array(r)}function $t(r=0){return new Uint8Array(r)}var $F=Math.pow(2,7),HF=Math.pow(2,14),VF=Math.pow(2,21),w8=Math.pow(2,28),x8=Math.pow(2,35),b8=Math.pow(2,42),v8=Math.pow(2,49),dt=128,Yr=127;function Oe(r){if(r<$F)return 1;if(r<HF)return 2;if(r<VF)return 3;if(r<w8)return 4;if(r<x8)return 5;if(r<b8)return 6;if(r<v8)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function E8(r,e,t=0){switch(Oe(r)){case 8:e[t++]=r&255|dt,r/=128;case 7:e[t++]=r&255|dt,r/=128;case 6:e[t++]=r&255|dt,r/=128;case 5:e[t++]=r&255|dt,r/=128;case 4:e[t++]=r&255|dt,r>>>=7;case 3:e[t++]=r&255|dt,r>>>=7;case 2:e[t++]=r&255|dt,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function zF(r,e,t=0){switch(Oe(r)){case 8:e.set(t++,r&255|dt),r/=128;case 7:e.set(t++,r&255|dt),r/=128;case 6:e.set(t++,r&255|dt),r/=128;case 5:e.set(t++,r&255|dt),r/=128;case 4:e.set(t++,r&255|dt),r>>>=7;case 3:e.set(t++,r&255|dt),r>>>=7;case 2:e.set(t++,r&255|dt),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function S8(r,e){let t=r[e],n=0;if(n+=t&Yr,t<dt||(t=r[e+1],n+=(t&Yr)<<7,t<dt)||(t=r[e+2],n+=(t&Yr)<<14,t<dt)||(t=r[e+3],n+=(t&Yr)<<21,t<dt)||(t=r[e+4],n+=(t&Yr)*w8,t<dt)||(t=r[e+5],n+=(t&Yr)*x8,t<dt)||(t=r[e+6],n+=(t&Yr)*b8,t<dt)||(t=r[e+7],n+=(t&Yr)*v8,t<dt))return n;throw new RangeError("Could not decode varint")}function KF(r,e){let t=r.get(e),n=0;if(n+=t&Yr,t<dt||(t=r.get(e+1),n+=(t&Yr)<<7,t<dt)||(t=r.get(e+2),n+=(t&Yr)<<14,t<dt)||(t=r.get(e+3),n+=(t&Yr)<<21,t<dt)||(t=r.get(e+4),n+=(t&Yr)*w8,t<dt)||(t=r.get(e+5),n+=(t&Yr)*x8,t<dt)||(t=r.get(e+6),n+=(t&Yr)*b8,t<dt)||(t=r.get(e+7),n+=(t&Yr)*v8,t<dt))return n;throw new RangeError("Could not decode varint")}function ht(r,e,t=0){return e==null&&(e=$t(Oe(r))),e instanceof Uint8Array?E8(r,e,t):zF(r,e,t)}function Zt(r,e=0){return r instanceof Uint8Array?S8(r,e):KF(r,e)}function Ve(r,e){e==null&&(e=r.reduce((i,o)=>i+o.length,0));let t=$t(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}function pe(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 vS=Symbol.for("@achingbrain/uint8arraylist");function bS(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let i=t+n.byteLength;if(e<i)return{buf:n,index:e-t};t=i}throw new RangeError("index is out of bounds")}function vi(r){return!!r?.[vS]}var oe=class r{bufs;length;[vS]=!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(vi(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(vi(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=bS(this.bufs,e);return t.buf[t.index]}set(e,t){let n=bS(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(vi(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:i}=this._subList(e,t);return Ve(n,i)}subarray(e,t){let{bufs:n,length:i}=this._subList(e,t);return n.length===1?n[0]:Ve(n,i)}sublist(e,t){let{bufs:n,length:i}=this._subList(e,t),o=new r;return o.length=i,o.bufs=[...n],o}_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=[],i=0;for(let o=0;o<this.bufs.length;o++){let s=this.bufs[o],a=i,c=a+s.byteLength;if(i=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(s);break}let f=e-a;n.push(s.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(s);continue}n.push(s.subarray(e-a));continue}if(u){if(t===c){n.push(s);break}n.push(s.subarray(0,t-a));break}n.push(s)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!vi(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 i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let o=256,s=new Int32Array(o);for(let f=0;f<o;f++)s[f]=-1;for(let f=0;f<i;f++)s[n[f]]=f;let a=s,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let d=this.get(f+h);if(n[h]!==d){u=Math.max(1,h-a[d]);break}}if(u===0)return f}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=$t(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 i=Pe(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,t,n),this.write(i,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=$t(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 i=Pe(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,t,n),this.write(i,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(!pe(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((i,o)=>i+o.byteLength,0)),n.length=t,n}};var m0=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},qu=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},g0=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},wh=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function y0(r){return r[Symbol.asyncIterator]!=null}function ES(r,e){if(r.byteLength>e)throw new qu("Message length too long")}var x0=r=>{let e=Oe(r),t=$t(e);return ht(r,t),x0.bytes=e,t};x0.bytes=0;function Yi(r,e){e=e??{};let t=e.lengthEncoder??x0,n=e?.maxDataLength??4194304;function*i(o){ES(o,n);let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return y0(r)?async function*(){for await(let o of r)yield*i(o)}():function*(){for(let o of r)yield*i(o)}()}Yi.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??x0,n=e?.maxDataLength??4194304;return ES(r,n),new oe(t(r.byteLength),r)};var kc;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(kc||(kc={}));var A8=r=>{let e=Zt(r);return A8.bytes=Oe(e),e};A8.bytes=0;function Qi(r,e){let t=new oe,n=kc.LENGTH,i=-1,o=e?.lengthDecoder??A8,s=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===kc.LENGTH)try{if(i=o(t),i<0)throw new m0("Invalid message length");if(i>a)throw new qu("Message length too long");let l=o.bytes;t.consume(l),e?.onLength!=null&&e.onLength(i),n=kc.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>s)throw new g0("Message length length too long");break}throw l}if(n===kc.DATA){if(t.byteLength<i)break;let l=t.sublist(0,i);t.consume(i),e?.onData!=null&&e.onData(l),yield l,n=kc.LENGTH}}}return y0(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wh("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wh("Unexpected end of input")}()}Qi.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:o,value:s}=await r.next(t);if(o===!0)return;s!=null&&(yield s)}catch(o){if(o.code==="ERR_UNDER_READ")return{done:!0,value:null};throw o}finally{t=1}}();return Qi(n,{...e??{},onLength:o=>{t=o}})};function WF(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ju=WF;function GF(r){return r[Symbol.asyncIterator]!=null}function XF(r,e){let t=0;if(GF(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();let s=e(i,t++);if(typeof s.then=="function")return async function*(){yield await s;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield s;for(let c of n)yield a(c,t++)}()}var Nt=XF;var I8=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ye(),this.haveNext=ye()}[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=ye(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ye(),await Dt(this.readNext.promise,t?.signal,t)}};function b0(){return new I8}function YF(r){return r[Symbol.asyncIterator]!=null}async function QF(r,e){try{await Promise.all(r.map(async t=>{for await(let n of t)await e.push(n)})),await e.end()}catch(t){await e.end(t).catch(()=>{})}}async function*ZF(r){let e=b0();QF(r,e).catch(()=>{}),yield*e}function*JF(r){for(let e of r)yield*e}function e$(...r){let e=[];for(let t of r)YF(t)||e.push(t);return e.length===r.length?JF(e):ZF(r)}var un=e$;function ot(r,...e){if(r==null)throw new Error("Empty pipeline");if(T8(r)){let n=r;r=()=>n.source}else if(AS(r)||SS(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&T8(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++)T8(t[n])&&(t[n]=r$(t[n]));return t$(...t)}var t$=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},SS=r=>r?.[Symbol.asyncIterator]!=null,AS=r=>r?.[Symbol.iterator]!=null,T8=r=>r==null?!1:r.sink!=null&&r.source!=null,r$=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Xr({objectMode:!0});t.then(()=>{n.end()},s=>{n.end(s)});let i,o=r.source;if(SS(o))i=async function*(){yield*o,n.end()};else if(AS(o))i=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return un(n,i())}return r.source};function n$(r){return r[Symbol.asyncIterator]!=null}function i$(r,e){return n$(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 la=i$;var G=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var xh="/ipfs/bitswap/1.2.0";var C8=new Float32Array([-0]),ua=new Uint8Array(C8.buffer);function _S(r,e,t){C8[0]=r,e[t]=ua[0],e[t+1]=ua[1],e[t+2]=ua[2],e[t+3]=ua[3]}function IS(r,e){return ua[0]=r[e],ua[1]=r[e+1],ua[2]=r[e+2],ua[3]=r[e+3],C8[0]}var k8=new Float64Array([-0]),Qr=new Uint8Array(k8.buffer);function TS(r,e,t){k8[0]=r,e[t]=Qr[0],e[t+1]=Qr[1],e[t+2]=Qr[2],e[t+3]=Qr[3],e[t+4]=Qr[4],e[t+5]=Qr[5],e[t+6]=Qr[6],e[t+7]=Qr[7]}function CS(r,e){return Qr[0]=r[e],Qr[1]=r[e+1],Qr[2]=r[e+2],Qr[3]=r[e+3],Qr[4]=r[e+4],Qr[5]=r[e+5],Qr[6]=r[e+6],Qr[7]=r[e+7],k8[0]}var o$=BigInt(Number.MAX_SAFE_INTEGER),s$=BigInt(Number.MIN_SAFE_INTEGER),ti=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 Pc;if(e<o$&&e>s$)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,i=e-(n<<32n);return t&&(n=~n|0n,i=~i|0n,++i>kS&&(i=0n,++n>kS&&(n=0n))),new r(Number(i),Number(n))}static fromNumber(e){if(e===0)return Pc;let t=e<0;t&&(e=-e);let n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)}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):Pc}},Pc=new ti(0,0);Pc.toBigInt=function(){return 0n};Pc.zzEncode=Pc.zzDecode=function(){return this};Pc.length=function(){return 1};var kS=4294967296n;function PS(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 RS(r,e,t){if(t-e<1)return"";let i,o=[],s=0,a;for(;e<t;)a=r[e++],a<128?o[s++]=a:a>191&&a<224?o[s++]=(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,o[s++]=55296+(a>>10),o[s++]=56320+(a&1023)):o[s++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,s>8191&&((i??(i=[])).push(String.fromCharCode.apply(String,o)),s=0);return i!=null?(s>0&&i.push(String.fromCharCode.apply(String,o.slice(0,s))),i.join("")):String.fromCharCode.apply(String,o.slice(0,s))}function P8(r,e,t){let n=t,i,o;for(let s=0;s<r.length;++s)i=r.charCodeAt(s),i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&((o=r.charCodeAt(s+1))&64512)===56320?(i=65536+((i&1023)<<10)+(o&1023),++s,e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128);return t-n}function Zi(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function v0(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var R8=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,Zi(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 Zi(this,4);return v0(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Zi(this,4);return v0(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Zi(this,4);let e=IS(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Zi(this,4);let e=CS(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 Zi(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return RS(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Zi(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Zi(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ti(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 Zi(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 Zi(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 Zi(this,8);let e=v0(this.buf,this.pos+=4),t=v0(this.buf,this.pos+=4);return new ti(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=S8(this.buf,this.pos);return this.pos+=Oe(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 D8(r){return new R8(r instanceof Uint8Array?r:r.subarray())}function be(r,e,t){let n=D8(r);return e.decode(n,void 0,t)}var $8={};Ft($8,{base10:()=>m$});var Rc={};Ft(Rc,{coerce:()=>Ei,empty:()=>NS,equals:()=>N8,fromHex:()=>c$,fromString:()=>O8,isBinary:()=>l$,toHex:()=>a$,toString:()=>L8});var NS=new Uint8Array(0);function a$(r){return r.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function c$(r){let e=r.match(/../g);return e!=null?new Uint8Array(e.map(t=>parseInt(t,16))):NS}function N8(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 Ei(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 l$(r){return r instanceof ArrayBuffer||ArrayBuffer.isView(r)}function O8(r){return new TextEncoder().encode(r)}function L8(r){return new TextDecoder().decode(r)}function u$(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 i=0;i<r.length;i++){var o=r.charAt(i),s=o.charCodeAt(0);if(t[s]!==255)throw new TypeError(o+" is ambiguous");t[s]=i}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(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 g=0,w=0,x=0,v=m.length;x!==v&&m[x]===0;)x++,g++;for(var b=(v-x)*u+1>>>0,S=new Uint8Array(b);x!==v;){for(var T=m[x],D=0,A=b-1;(T!==0||D<w)&&A!==-1;A--,D++)T+=256*S[A]>>>0,S[A]=T%a>>>0,T=T/a>>>0;if(T!==0)throw new Error("Non-zero carry");w=D,x++}for(var I=b-w;I!==b&&S[I]===0;)I++;for(var k=c.repeat(g);I<b;++I)k+=r.charAt(S[I]);return k}function h(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var g=0;if(m[g]!==" "){for(var w=0,x=0;m[g]===c;)w++,g++;for(var v=(m.length-g)*l+1>>>0,b=new Uint8Array(v);m[g];){var S=t[m.charCodeAt(g)];if(S===255)return;for(var T=0,D=v-1;(S!==0||T<x)&&D!==-1;D--,T++)S+=a*b[D]>>>0,b[D]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");x=T,g++}if(m[g]!==" "){for(var A=v-x;A!==v&&b[A]===0;)A++;for(var I=new Uint8Array(w+(v-A)),k=w;A!==v;)I[k++]=b[A++];return I}}}function d(m){var g=h(m);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:d}}var f$=u$,d$=f$,OS=d$;var B8=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")}},M8=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let i=t.codePointAt(0);if(i===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=i,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 LS(this,e)}},U8=class{decoders;constructor(e){this.decoders=e}or(e){return LS(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 LS(r,e){return new U8({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var F8=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new B8(e,t,n),this.decoder=new M8(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Wu({name:r,prefix:e,encode:t,decode:n}){return new F8(r,e,t,n)}function fa({name:r,prefix:e,alphabet:t}){let{encode:n,decode:i}=OS(t,r);return Wu({prefix:e,name:r,encode:n,decode:o=>Ei(i(o))})}function h$(r,e,t,n){let i={};for(let u=0;u<e.length;++u)i[e[u]]=u;let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),a=0,c=0,l=0;for(let u=0;u<o;++u){let f=i[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,s[l++]=255&c>>a)}if(a>=t||(255&c<<8-a)!==0)throw new SyntaxError("Unexpected end of data");return s}function p$(r,e,t){let n=e[e.length-1]==="=",i=(1<<t)-1,o="",s=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],s+=8;s>t;)s-=t,o+=e[i&a>>s];if(s!==0&&(o+=e[i&a<<t-s]),n)for(;(o.length*t&7)!==0;)o+="=";return o}function Kt({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Wu({prefix:e,name:r,encode(i){return p$(i,n,t)},decode(i){return h$(i,n,t,r)}})}var m$=fa({prefix:"9",name:"base10",alphabet:"0123456789"});var H8={};Ft(H8,{base16:()=>g$,base16upper:()=>y$});var g$=Kt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),y$=Kt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var V8={};Ft(V8,{base2:()=>w$});var w$=Kt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var z8={};Ft(z8,{base256emoji:()=>S$});var BS=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}"),x$=BS.reduce((r,e,t)=>(r[t]=e,r),[]),b$=BS.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function v$(r){return r.reduce((e,t)=>(e+=x$[t],e),"")}function E$(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let i=b$[n];if(i==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}var S$=Wu({prefix:"\u{1F680}",name:"base256emoji",encode:v$,decode:E$});var K8={};Ft(K8,{base32:()=>Jt,base32hex:()=>T$,base32hexpad:()=>k$,base32hexpadupper:()=>P$,base32hexupper:()=>C$,base32pad:()=>_$,base32padupper:()=>I$,base32upper:()=>A$,base32z:()=>R$});var Jt=Kt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),A$=Kt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_$=Kt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),I$=Kt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),T$=Kt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),C$=Kt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),k$=Kt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),P$=Kt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),R$=Kt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var q8={};Ft(q8,{base36:()=>fn,base36upper:()=>D$});var fn=fa({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),D$=fa({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var j8={};Ft(j8,{base58btc:()=>Le,base58flickr:()=>N$});var Le=fa({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),N$=fa({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var W8={};Ft(W8,{base64:()=>ar,base64pad:()=>O$,base64url:()=>Dc,base64urlpad:()=>L$});var ar=Kt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),O$=Kt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Dc=Kt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),L$=Kt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var G8={};Ft(G8,{base8:()=>B$});var B$=Kt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var X8={};Ft(X8,{identity:()=>M$});var M$=Wu({prefix:"\0",name:"identity",encode:r=>L8(r),decode:r=>O8(r)});var Gu={};Ft(Gu,{code:()=>Bo,decode:()=>Y8,encode:()=>H$,name:()=>$$});var U$=new TextEncoder,F$=new TextDecoder,$$="json",Bo=512;function H$(r){return U$.encode(JSON.stringify(r))}function Y8(r){return JSON.parse(F$.decode(r))}var _n={};Ft(_n,{code:()=>vt,decode:()=>K$,encode:()=>z$,name:()=>V$});var V$="raw",vt=85;function z$(r){return Ei(r)}function K$(r){return Ei(r)}var J8={};Ft(J8,{identity:()=>cr});var yt={};Ft(yt,{Digest:()=>Nc,create:()=>Zr,decode:()=>Ue,equals:()=>Z8,hasCode:()=>lH});var q$=FS,MS=128,j$=127,W$=~j$,G$=Math.pow(2,31);function FS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=G$;)e[t++]=r&255|MS,r/=128;for(;r&W$;)e[t++]=r&255|MS,r>>>=7;return e[t]=r|0,FS.bytes=t-n+1,e}var X$=Q8,Y$=128,US=127;function Q8(r,n){var t=0,n=n||0,i=0,o=n,s,a=r.length;do{if(o>=a)throw Q8.bytes=0,new RangeError("Could not decode varint");s=r[o++],t+=i<28?(s&US)<<i:(s&US)*Math.pow(2,i),i+=7}while(s>=Y$);return Q8.bytes=o-n,t}var Q$=Math.pow(2,7),Z$=Math.pow(2,14),J$=Math.pow(2,21),eH=Math.pow(2,28),tH=Math.pow(2,35),rH=Math.pow(2,42),nH=Math.pow(2,49),iH=Math.pow(2,56),oH=Math.pow(2,63),sH=function(r){return r<Q$?1:r<Z$?2:r<J$?3:r<eH?4:r<tH?5:r<rH?6:r<nH?7:r<iH?8:r<oH?9:10},aH={encode:q$,decode:X$,encodingLength:sH},cH=aH,bh=cH;function vh(r,e=0){return[bh.decode(r,e),bh.decode.bytes]}function Xu(r,e,t=0){return bh.encode(r,e,t),e}function Yu(r){return bh.encodingLength(r)}function Zr(r,e){let t=e.byteLength,n=Yu(r),i=n+Yu(t),o=new Uint8Array(i+t);return Xu(r,o,0),Xu(t,o,n),o.set(e,i),new Nc(r,t,e,o)}function Ue(r){let e=Ei(r),[t,n]=vh(e),[i,o]=vh(e.subarray(n)),s=e.subarray(n+o);if(s.byteLength!==i)throw new Error("Incorrect length");return new Nc(t,i,s,e)}function Z8(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&N8(r.bytes,t.bytes)}}var Nc=class{code;size;digest;bytes;constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};function lH(r,e){return r.code===e}var $S=0,uH="identity",HS=Ei;function fH(r){return Zr($S,HS(r))}var cr={code:$S,name:uH,encode:HS,digest:fH};var tw={};Ft(tw,{sha256:()=>Fe,sha512:()=>S0});function Oc({name:r,code:e,encode:t}){return new ew(r,e,t)}var ew=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?Zr(this.code,t):t.then(n=>Zr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function zS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Fe=Oc({name:"sha2-256",code:18,encode:zS("SHA-256")}),S0=Oc({name:"sha2-512",code:19,encode:zS("SHA-512")});function KS(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return hH(t,rw(r),e??Le.encoder);default:return pH(t,rw(r),e??Jt.encoder)}}var qS=new WeakMap;function rw(r){let e=qS.get(r);if(e==null){let t=new Map;return qS.set(r,t),t}return e}var W=class r{code;version;multihash;bytes;"/";constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}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!==Eh)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==mH)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=Zr(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&&Z8(e.multihash,n.multihash)}toString(e){return KS(this,e)}toJSON(){return{"/":KS(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:i,multihash:o,bytes:s}=t;return new r(n,i,o,s??jS(n,i,o.bytes))}else if(t[gH]===!0){let{version:n,multihash:i,code:o}=t,s=Ue(i);return r.create(n,o,s)}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!==Eh)throw new Error(`Version 0 CID must use dag-pb (code: ${Eh}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=jS(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Eh,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,i=Ei(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=i.subarray(t.multihashSize-t.digestSize),s=new Nc(t.multihashCode,t.digestSize,o,i);return[t.version===0?r.createV0(s):r.createV1(t.codec,s),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=vh(e.subarray(t));return t+=h,f},i=n(),o=Eh;if(i===18?(i=0,t=0):o=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let s=t,a=n(),c=n(),l=t+c,u=l-s;return{version:i,codec:o,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,i]=dH(e,t),o=r.decode(i);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return rw(o).set(n,e),o}};function dH(r,e){switch(r[0]){case"Q":{let t=e??Le;return[Le.prefix,t.decode(`${Le.prefix}${r}`)]}case Le.prefix:{let t=e??Le;return[Le.prefix,t.decode(r)]}case Jt.prefix:{let t=e??Jt;return[Jt.prefix,t.decode(r)]}case fn.prefix:{let t=e??fn;return[fn.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function hH(r,e,t){let{prefix:n}=t;if(n!==Le.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return i}function pH(r,e,t){let{prefix:n}=t,i=e.get(n);if(i==null){let o=t.encode(r);return e.set(n,o),o}else return i}var Eh=112,mH=18;function jS(r,e,t){let n=Yu(r),i=n+Yu(e),o=new Uint8Array(i+t.byteLength);return Xu(r,o,0),Xu(e,o,n),o.set(t,i),o}var gH=Symbol.for("@ipld/js-cid/CID");var Lc={...X8,...V8,...G8,...$8,...H8,...K8,...q8,...j8,...W8,...z8},die={...tw,...J8};function GS(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var WS=GS("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),nw=GS("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=$t(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),yH={utf8:WS,"utf-8":WS,hex:Lc.base16,latin1:nw,ascii:nw,binary:nw,...Lc},A0=yH;function O(r,e="utf8"){let t=A0[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function iw(r){let e=r??8192,t=e>>>1,n,i=e;return function(s){if(s<1||s>t)return $t(s);i+s>e&&(n=$t(e),i=0);let a=n.subarray(i,i+=s);return(i&7)!==0&&(i=(i|7)+1),a}}var Bc=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function ow(){}var aw=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},wH=iw();function xH(r){return globalThis.Buffer!=null?$t(r):wH(r)}var Ah=class{len;head;tail;states;constructor(){this.len=0,this.head=new Bc(ow,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Bc(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new cw((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(_0,10,ti.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ti.fromBigInt(e);return this._push(_0,t.length(),t)}uint64Number(e){return this._push(E8,Oe(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=ti.fromBigInt(e).zzEncode();return this._push(_0,t.length(),t)}sint64Number(e){let t=ti.fromNumber(e).zzEncode();return this._push(_0,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(sw,1,e?1:0)}fixed32(e){return this._push(Sh,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ti.fromBigInt(e);return this._push(Sh,4,t.lo)._push(Sh,4,t.hi)}fixed64Number(e){let t=ti.fromNumber(e);return this._push(Sh,4,t.lo)._push(Sh,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(_S,4,e)}double(e){return this._push(TS,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(sw,1,0):this.uint32(t)._push(vH,t,e)}string(e){let t=PS(e);return t!==0?this.uint32(t)._push(P8,t,e):this._push(sw,1,0)}fork(){return this.states=new aw(this),this.head=this.tail=new Bc(ow,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 Bc(ow,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=xH(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function sw(r,e,t){e[t]=r&255}function bH(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var cw=class extends Bc{next;constructor(e,t){super(bH,e,t),this.next=void 0}};function _0(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 Sh(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 vH(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Ah.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(EH,e,r),this},Ah.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(SH,e,r),this});function EH(r,e,t){e.set(r,t)}function SH(r,e,t){r.length<40?P8(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(O(r),t)}function lw(){return new Ah}function ve(r,e){let t=lw();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Qu;(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"})(Qu||(Qu={}));function I0(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function St(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,s){let a=e(o);s.int32(a)},n=function(o){let s=o.int32();return e(s)};return I0("enum",Qu.VARINT,t,n)}function Ee(r,e){return I0("message",Qu.LENGTH_DELIMITED,r,e)}var wt=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},_h=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var er;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(er||(er={}));var uw;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(uw||(uw={}));(function(r){r.codec=()=>St(uw)})(er||(er={}));var Zu;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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),er.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={cid:Pe(0),priority:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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=er.codec().decode(t);break}case 5:{o.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Zu||(Zu={}));var T0;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let o of t.entries)n.uint32(10),Zu.codec().encode(o,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={entries:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{if(i.limits?.entries!=null&&o.entries.length===i.limits.entries)throw new wt('Decode error - map field "entries" had too many elements');o.entries.push(Zu.codec().decode(t,t.uint32(),{limits:i.limits?.entries$}));break}case 2:{o.full=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(T0||(T0={}));var Ju;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={prefix:Pe(0),data:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.prefix=t.bytes();break}case 2:{o.data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ju||(Ju={}));var Si;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(Si||(Si={}));var C0;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(C0||(C0={}));(function(r){r.codec=()=>St(C0)})(Si||(Si={}));var ef;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&C0[t.type]!==0&&(n.uint32(16),Si.codec().encode(t.type,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={cid:Pe(0),type:Si.HaveBlock},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.cid=t.bytes();break}case 2:{o.type=Si.codec().decode(t);break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(ef||(ef={}));var Mc;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),T0.codec().encode(t.wantlist,n)),t.blocks!=null)for(let o of t.blocks)n.uint32(26),Ju.codec().encode(o,n);if(t.blockPresences!=null)for(let o of t.blockPresences)n.uint32(34),ef.codec().encode(o,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={blocks:[],blockPresences:[],pendingBytes:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.wantlist=T0.codec().decode(t,t.uint32(),{limits:i.limits?.wantlist});break}case 3:{if(i.limits?.blocks!=null&&o.blocks.length===i.limits.blocks)throw new wt('Decode error - map field "blocks" had too many elements');o.blocks.push(Ju.codec().decode(t,t.uint32(),{limits:i.limits?.blocks$}));break}case 4:{if(i.limits?.blockPresences!=null&&o.blockPresences.length===i.limits.blockPresences)throw new wt('Decode error - map field "blockPresences" had too many elements');o.blockPresences.push(ef.codec().decode(t,t.uint32(),{limits:i.limits?.blockPresences$}));break}case 5:{o.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Mc||(Mc={}));function XS(r,e){for(let[t,n]of e.wantlist.entries()){let i=r.wantlist.get(t);i!=null&&(i.priority>n.priority&&(n.priority=i.priority),n.cancel=n.cancel??i.cancel,n.wantType=n.wantType??i.wantType,n.sendDontHave=n.sendDontHave??i.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var k0=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var AH=4193648,_H=AH+16;function*YS(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],i=[...r.blocks.values()],o=0,s=0,a=0,c=!1;for(;;){let l={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},u=Mc.encode(l).byteLength,{added:f,hasMore:h,newSize:d}=fw(i,l.blocks,a,e,u,IH);a+=f,u=d;let m=h;({added:f,hasMore:h,newSize:d}=fw(n,l.blockPresences,s,e,u,TH)),s+=f,u=d;let g=h;if({added:f,hasMore:h,newSize:d}=fw(t,l.wantlist.entries,o,e,u,CH),o+=f,u=d,c=!m&&!g&&!h,c||(l.wantlist.full=!1),yield Mc.encode(l),c)break}}function fw(r,e,t,n,i,o){let s=0,a=!1;for(let c=t;c<r.length;c++){let l=r[c],u=o(l);if(u>_H)throw new k0("Cannot send block as after encoding it is over the max message size");let f=i+u;if(f>n){a=!0;break}e.push(l),s++,i=f}return{hasMore:a,added:s,newSize:i}}function IH(r){return dw(3,Ju.encode(r))}function TH(r){return dw(4,ef.encode(r))}function CH(r){return dw(1,Zu.encode(r))}function dw(r,e){let t=Oe(r),n=Oe(e.byteLength);return t+n+e.byteLength}var P0=class extends Me{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[xh],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new kr({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e){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 i=()=>{t.status==="open"?t.abort(new Lo(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",t.status)},o=AbortSignal.timeout(this.messageReceiveTimeout);o.addEventListener("abort",i),await t.closeWrite(),await ot(t,s=>Qi(s,{maxDataLength:this.maxIncomingMessageSize}),async s=>{for await(let a of s)try{let c=Mc.decode(a);this.log("incoming new bitswap %s message from %p on stream",t.protocol,n.remotePeer,t.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:c}}),o.removeEventListener("abort",i),o=AbortSignal.timeout(this.messageReceiveTimeout),o.addEventListener("abort",i)}catch(c){this.log.error("error reading incoming bitswap message from %p on stream",n.remotePeer,t.id,c),t.abort(c);break}})}).catch(i=>{this.log.error("error handling incoming stream from %p",n.remotePeer,i),t.abort(i)})}async*findProviders(e,t){t?.onProgress?.(new G("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})&&(yield n)}async findAndConnect(e,t){await Sr(Nt(la(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let i=this.sendQueue.queue.find(o=>e.equals(o.options.peerId)&&o.status==="queued");if(i!=null){i.options.message=XS(i.options.message,t),await i.join({signal:n?.signal});return}await this.sendQueue.add(async o=>{let s=o?.message;if(s==null)throw new U("No message to send");this.log("sendMessage to %p",e),o?.onProgress?.(new G("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,xh,o);await a.closeRead();try{await ot(YS(s,this.maxOutgoingMessageSize),c=>Yi(c),a),await a.close(o)}catch(c){o?.onProgress?.(new G("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p",e,c),a.abort(c)}this._updateSentStats(s.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new Zn("Network isn't running");t?.onProgress?.(new G("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),Er(this.libp2p,"peer:identify",t?.signal,{filter:i=>{if(!i.detail.peerId.equals(e))return!1;if(i.detail.protocols.includes(xh))return!0;throw new ps(`${e} did not support ${xh}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};function H(r,e="utf8"){let t=A0[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var MH=parseInt("11111",2),hw=parseInt("10000000",2),UH=parseInt("01111111",2),QS={0:Ih,1:Ih,2:FH,3:VH,4:zH,5:HH,6:$H,16:Ih,22:Ih,48:Ih};function Ai(r,e={offset:0}){let t=r[e.offset]&MH;if(e.offset++,QS[t]!=null)return QS[t](r,e);throw new Error("No decoder for tag "+t)}function Th(r,e){let t=0;if((r[e.offset]&hw)===hw){let n=r[e.offset]&UH,i="0x";e.offset++;for(let o=0;o<n;o++,e.offset++)i+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(i,16)}else t=r[e.offset],e.offset++;return t}function Ih(r,e){Th(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=Ai(r,e);if(n===null)break;t.push(n)}return t}function FH(r,e){let t=Th(r,e),n=e.offset,i=e.offset+t,o=[];for(let s=n;s<i;s++)s===n&&r[s]===0||o.push(r[s]);return e.offset+=t,Uint8Array.from(o)}function $H(r,e){let t=Th(r,e),n=e.offset+t,i=r[e.offset];e.offset++;let o=0,s=0;i<40?(o=0,s=i):i<80?(o=1,s=i-40):(o=2,s=i-80);let a=`${o}.${s}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function HH(r,e){return e.offset++,null}function VH(r,e){let t=Th(r,e),n=r[e.offset];e.offset++;let i=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return i}function zH(r,e){let t=Th(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function KH(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new oe;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function R0(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=KH(r.byteLength);return new oe(Uint8Array.from([e.byteLength|hw]),e)}function dn(r){let e=new oe,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new oe(Uint8Array.from([2]),R0(e),e)}function Ch(r){let e=Uint8Array.from([0]),t=new oe(e,r);return new oe(Uint8Array.from([3]),R0(t),t)}function ZS(r){return new oe(Uint8Array.from([4]),R0(r),r)}function Ji(r,e=48){let t=new oe;for(let n of r)t.append(n);return new oe(Uint8Array.from([e]),R0(t),t)}var JS="1.2.840.10045.3.1.7",eA="1.3.132.0.34",tA="1.3.132.0.35";async function rA(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function nA(r,e){let t=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]),n=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},t,e.subarray());return new Uint8Array(n,0,n.byteLength)}async function iA(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);return crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},n,e,t.subarray())}var qH=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),jH=Uint8Array.from([6,5,43,129,4,0,34]),WH=Uint8Array.from([6,5,43,129,4,0,35]),oA={ext:!0,kty:"EC",crv:"P-256"},sA={ext:!0,kty:"EC",crv:"P-384"},aA={ext:!0,kty:"EC",crv:"P-521"},tf=32,rf=48,nf=66;function cA(r){let e=Ai(r);return pw(e)}function pw(r){let e=r[1],t=H(e,"base64url"),n=r[2][1][0],i=1,o,s;if(e.byteLength===tf)return o=H(n.subarray(i,i+tf),"base64url"),s=H(n.subarray(i+tf),"base64url"),new Fc({...oA,key_ops:["sign"],d:t,x:o,y:s});if(e.byteLength===rf)return o=H(n.subarray(i,i+rf),"base64url"),s=H(n.subarray(i+rf),"base64url"),new Fc({...sA,key_ops:["sign"],d:t,x:o,y:s});if(e.byteLength===nf)return o=H(n.subarray(i,i+nf),"base64url"),s=H(n.subarray(i+nf),"base64url"),new Fc({...aA,key_ops:["sign"],d:t,x:o,y:s});throw new U(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function mw(r){let e=Ai(r);return lA(e)}function lA(r){let e=r[1][1][0],t=1,n,i;if(e.byteLength===tf*2+1)return n=H(e.subarray(t,t+tf),"base64url"),i=H(e.subarray(t+tf),"base64url"),new Uc({...oA,key_ops:["verify"],x:n,y:i});if(e.byteLength===rf*2+1)return n=H(e.subarray(t,t+rf),"base64url"),i=H(e.subarray(t+rf),"base64url"),new Uc({...sA,key_ops:["verify"],x:n,y:i});if(e.byteLength===nf*2+1)return n=H(e.subarray(t,t+nf),"base64url"),i=H(e.subarray(t+nf),"base64url"),new Uc({...aA,key_ops:["verify"],x:n,y:i});throw new U(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function uA(r){return Ji([dn(Uint8Array.from([1])),ZS(O(r.d??"","base64url")),Ji([dA(r.crv)],160),Ji([Ch(new oe(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function fA(r){return Ji([dn(Uint8Array.from([1])),Ji([dA(r.crv)],160),Ji([Ch(new oe(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function dA(r){if(r==="P-256")return qH;if(r==="P-384")return jH;if(r==="P-521")return WH;throw new U(`Invalid curve ${r}`)}async function hA(r="P-256"){let e=await rA(r);return new Fc(e.privateKey)}var Uc=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=fA(this.jwk)),this._raw}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}async verify(e,t){return iA(this.jwk,t,e)}},Fc=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Uc({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=uA(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}async sign(e){return nA(this.jwk,e)}};var $c=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function GH(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Mo(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function da(r,...e){if(!GH(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Hc(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Mo(r.outputLen),Mo(r.blockLen)}function sf(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 pA(r,e){da(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Jr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function Vc(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function eo(r,e){return r<<32-e|r>>>e}function D0(r,e){return r<<e|r>>>32-e>>>0}var XH=async()=>{};async function mA(r,e,t){let n=Date.now();for(let i=0;i<r;i++){t(i);let o=Date.now()-n;o>=0&&o<e||(await XH(),n+=o)}}function gw(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function ha(r){return typeof r=="string"&&(r=gw(r)),da(r),r}function yw(r){return typeof r=="string"&&(r=gw(r)),da(r),r}function ww(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];da(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let o=r[n];t.set(o,i),i+=o.length}return t}function gA(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options should be object or undefined");return Object.assign(r,e)}var of=class{};function kh(r){let e=n=>r().update(ha(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zc(r=32){if($c&&typeof $c.getRandomValues=="function")return $c.getRandomValues(new Uint8Array(r));if($c&&typeof $c.randomBytes=="function")return Uint8Array.from($c.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function YH(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,l=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+l,a,n)}function N0(r,e,t){return r&e^~r&t}function O0(r,e,t){return r&e^r&t^e&t}var Kc=class extends of{constructor(e,t,n,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.buffer=new Uint8Array(e),this.view=Vc(this.buffer)}update(e){sf(this),e=ha(e),da(e);let{view:t,buffer:n,blockLen:i}=this,o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=Vc(e);for(;i<=o-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){sf(this),pA(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,Jr(this.buffer.subarray(s)),this.padOffset>i-s&&(this.process(n,0),s=0);for(let f=s;f<i;f++)t[f]=0;YH(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Vc(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],o)}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:i,finished:o,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=o,e.length=i,e.pos=a,i%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},gs=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Pr=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var L0=BigInt(4294967295),yA=BigInt(32);function QH(r,e=!1){return e?{h:Number(r&L0),l:Number(r>>yA&L0)}:{h:Number(r>>yA&L0)|0,l:Number(r&L0)|0}}function wA(r,e=!1){let t=r.length,n=new Uint32Array(t),i=new Uint32Array(t);for(let o=0;o<t;o++){let{h:s,l:a}=QH(r[o],e);[n[o],i[o]]=[s,a]}return[n,i]}var xw=(r,e,t)=>r>>>t,bw=(r,e,t)=>r<<32-t|e>>>t,qc=(r,e,t)=>r>>>t|e<<32-t,jc=(r,e,t)=>r<<32-t|e>>>t,Ph=(r,e,t)=>r<<64-t|e>>>t-32,Rh=(r,e,t)=>r>>>t-32|e<<64-t;function Uo(r,e,t,n){let i=(e>>>0)+(n>>>0);return{h:r+t+(i/2**32|0)|0,l:i|0}}var xA=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),bA=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,vA=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),EA=(r,e,t,n,i)=>e+t+n+i+(r/2**32|0)|0,SA=(r,e,t,n,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),AA=(r,e,t,n,i,o)=>e+t+n+i+o+(r/2**32|0)|0;var JH=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),pa=new Uint32Array(64),B0=class extends Kc{constructor(e=32){super(64,e,8,!1),this.A=gs[0]|0,this.B=gs[1]|0,this.C=gs[2]|0,this.D=gs[3]|0,this.E=gs[4]|0,this.F=gs[5]|0,this.G=gs[6]|0,this.H=gs[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)pa[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=pa[f-15],d=pa[f-2],m=eo(h,7)^eo(h,18)^h>>>3,g=eo(d,17)^eo(d,19)^d>>>10;pa[f]=g+pa[f-7]+m+pa[f-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=eo(a,6)^eo(a,11)^eo(a,25),d=u+h+N0(a,c,l)+JH[f]+pa[f]|0,g=(eo(n,2)^eo(n,13)^eo(n,22))+O0(n,i,o)|0;u=l,l=c,c=a,a=s+d|0,s=o,o=i,i=n,n=d+g|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,i,o,s,a,c,l,u)}roundClean(){Jr(pa)}destroy(){this.set(0,0,0,0,0,0,0,0),Jr(this.buffer)}};var _A=wA(["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))),eV=_A[0],tV=_A[1],ma=new Uint32Array(80),ga=new Uint32Array(80),M0=class extends Kc{constructor(e=64){super(128,e,16,!1),this.Ah=Pr[0]|0,this.Al=Pr[1]|0,this.Bh=Pr[2]|0,this.Bl=Pr[3]|0,this.Ch=Pr[4]|0,this.Cl=Pr[5]|0,this.Dh=Pr[6]|0,this.Dl=Pr[7]|0,this.Eh=Pr[8]|0,this.El=Pr[9]|0,this.Fh=Pr[10]|0,this.Fl=Pr[11]|0,this.Gh=Pr[12]|0,this.Gl=Pr[13]|0,this.Hh=Pr[14]|0,this.Hl=Pr[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:i,Ch:o,Cl:s,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:d,Gl:m,Hh:g,Hl:w}=this;return[e,t,n,i,o,s,a,c,l,u,f,h,d,m,g,w]}set(e,t,n,i,o,s,a,c,l,u,f,h,d,m,g,w){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=i|0,this.Ch=o|0,this.Cl=s|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=d|0,this.Gl=m|0,this.Hh=g|0,this.Hl=w|0}process(e,t){for(let b=0;b<16;b++,t+=4)ma[b]=e.getUint32(t),ga[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=ma[b-15]|0,T=ga[b-15]|0,D=qc(S,T,1)^qc(S,T,8)^xw(S,T,7),A=jc(S,T,1)^jc(S,T,8)^bw(S,T,7),I=ma[b-2]|0,k=ga[b-2]|0,Q=qc(I,k,19)^Ph(I,k,61)^xw(I,k,6),K=jc(I,k,19)^Rh(I,k,61)^bw(I,k,6),V=vA(A,K,ga[b-7],ga[b-16]),X=EA(V,D,Q,ma[b-7],ma[b-16]);ma[b]=X|0,ga[b]=V|0}let{Ah:n,Al:i,Bh:o,Bl:s,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:d,Fl:m,Gh:g,Gl:w,Hh:x,Hl:v}=this;for(let b=0;b<80;b++){let S=qc(f,h,14)^qc(f,h,18)^Ph(f,h,41),T=jc(f,h,14)^jc(f,h,18)^Rh(f,h,41),D=f&d^~f&g,A=h&m^~h&w,I=SA(v,T,A,tV[b],ga[b]),k=AA(I,x,S,D,eV[b],ma[b]),Q=I|0,K=qc(n,i,28)^Ph(n,i,34)^Ph(n,i,39),V=jc(n,i,28)^Rh(n,i,34)^Rh(n,i,39),X=n&o^n&a^o&a,$=i&s^i&c^s&c;x=g|0,v=w|0,g=d|0,w=m|0,d=f|0,m=h|0,{h:f,l:h}=Uo(l|0,u|0,k|0,Q|0),l=a|0,u=c|0,a=o|0,c=s|0,o=n|0,s=i|0;let F=xA(Q,V,$);n=bA(F,k,K,X),i=F|0}({h:n,l:i}=Uo(this.Ah|0,this.Al|0,n|0,i|0)),{h:o,l:s}=Uo(this.Bh|0,this.Bl|0,o|0,s|0),{h:a,l:c}=Uo(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Uo(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=Uo(this.Eh|0,this.El|0,f|0,h|0),{h:d,l:m}=Uo(this.Fh|0,this.Fl|0,d|0,m|0),{h:g,l:w}=Uo(this.Gh|0,this.Gl|0,g|0,w|0),{h:x,l:v}=Uo(this.Hh|0,this.Hl|0,x|0,v|0),this.set(n,i,o,s,a,c,l,u,f,h,d,m,g,w,x,v)}roundClean(){Jr(ma,ga)}destroy(){Jr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var U0=kh(()=>new B0);var F0=kh(()=>new M0);var Aw=BigInt(0),Sw=BigInt(1);function Wc(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function _w(r){if(!Wc(r))throw new Error("Uint8Array expected")}function Fo(r,e){if(typeof e!="boolean")throw new Error(r+" boolean expected, got "+e)}function Dh(r){let e=r.toString(16);return e.length&1?"0"+e:e}function CA(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Aw:BigInt("0x"+r)}var kA=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",rV=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function ya(r){if(_w(r),kA)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=rV[r[t]];return e}var ys={_0:48,_9:57,A:65,F:70,a:97,f:102};function IA(r){if(r>=ys._0&&r<=ys._9)return r-ys._0;if(r>=ys.A&&r<=ys.F)return r-(ys.A-10);if(r>=ys.a&&r<=ys.f)return r-(ys.a-10)}function Nh(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(kA)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let i=0,o=0;i<t;i++,o+=2){let s=IA(r.charCodeAt(o)),a=IA(r.charCodeAt(o+1));if(s===void 0||a===void 0){let c=r[o]+r[o+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+o)}n[i]=s*16+a}return n}function ws(r){return CA(ya(r))}function $o(r){return _w(r),CA(ya(Uint8Array.from(r).reverse()))}function Gc(r,e){return Nh(r.toString(16).padStart(e*2,"0"))}function wa(r,e){return Gc(r,e).reverse()}function At(r,e,t){let n;if(typeof e=="string")try{n=Nh(e)}catch(o){throw new Error(r+" must be hex string or Uint8Array, cause: "+o)}else if(Wc(e))n=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let i=n.length;if(typeof t=="number"&&i!==t)throw new Error(r+" of length "+t+" expected, got "+i);return n}function xa(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];_w(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let o=r[n];t.set(o,i),i+=o.length}return t}var vw=r=>typeof r=="bigint"&&Aw<=r;function $0(r,e,t){return vw(r)&&vw(e)&&vw(t)&&e<=r&&r<t}function en(r,e,t,n){if(!$0(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function PA(r){let e;for(e=0;r>Aw;r>>=Sw,e+=1);return e}var Xc=r=>(Sw<<BigInt(r))-Sw,Ew=r=>new Uint8Array(r),TA=r=>Uint8Array.from(r);function RA(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=Ew(r),i=Ew(r),o=0,s=()=>{n.fill(1),i.fill(0),o=0},a=(...f)=>t(i,n,...f),c=(f=Ew(0))=>{i=a(TA([0]),f),n=a(),f.length!==0&&(i=a(TA([1]),f),n=a())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,h=[];for(;f<e;){n=a();let d=n.slice();h.push(d),f+=n.length}return xa(...h)};return(f,h)=>{s(),c(f);let d;for(;!(d=h(l()));)c();return s(),d}}var nV={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"||Wc(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 to(r,e,t={}){let n=(i,o,s)=>{let a=nV[o];if(typeof a!="function")throw new Error("invalid validator function");let c=r[i];if(!(s&&c===void 0)&&!a(c,r))throw new Error("param "+String(i)+" is invalid. Expected "+o+", got "+c)};for(let[i,o]of Object.entries(e))n(i,o,!1);for(let[i,o]of Object.entries(t))n(i,o,!0);return r}function af(r){let e=new WeakMap;return(t,...n)=>{let i=e.get(t);if(i!==void 0)return i;let o=r(t,...n);return e.set(t,o),o}}var hn=BigInt(0),yr=BigInt(1),Yc=BigInt(2),iV=BigInt(3),Iw=BigInt(4),DA=BigInt(5),NA=BigInt(8),oV=BigInt(9),sV=BigInt(16);function st(r,e){let t=r%e;return t>=hn?t:e+t}function Ct(r,e,t){let n=r;for(;e-- >hn;)n*=n,n%=t;return n}function H0(r,e){if(r===hn)throw new Error("invert: expected non-zero number");if(e<=hn)throw new Error("invert: expected positive modulus, got "+e);let t=st(r,e),n=e,i=hn,o=yr,s=yr,a=hn;for(;t!==hn;){let l=n/t,u=n%t,f=i-s*l,h=o-a*l;n=t,t=u,i=s,o=a,s=f,a=h}if(n!==yr)throw new Error("invert: does not exist");return st(i,e)}function aV(r){let e=r-yr,t=0;for(;e%Yc===hn;)e/=Yc,t++;let n=Yc,i=ro(r);for(;n<r&&OA(i,n);)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1){let s=(r+yr)/Iw;return function(c,l){let u=c.pow(l,s);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let o=(e+yr)/Yc;return function(a,c){if(!OA(a,c))throw new Error("Cannot find square root");let l=t,u=a.pow(a.mul(a.ONE,n),e),f=a.pow(c,o),h=a.pow(c,e);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let d=1;for(let g=a.sqr(h);d<l&&!a.eql(g,a.ONE);d++)g=a.sqr(g);let m=a.pow(u,yr<<BigInt(l-d-1));u=a.sqr(m),f=a.mul(f,m),h=a.mul(h,u),l=d}return f}}function cV(r){return r%Iw===iV?function(t,n){let i=(r+yr)/Iw,o=t.pow(n,i);if(!t.eql(t.sqr(o),n))throw new Error("Cannot find square root");return o}:r%NA===DA?function(t,n){let i=t.mul(n,Yc),o=(r-DA)/NA,s=t.pow(i,o),a=t.mul(n,s),c=t.mul(t.mul(a,Yc),s),l=t.mul(a,t.sub(c,t.ONE));if(!t.eql(t.sqr(l),n))throw new Error("Cannot find square root");return l}:(r%sV,aV(r))}var LA=(r,e)=>(st(r,e)&yr)===yr,lV=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Tw(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=lV.reduce((n,i)=>(n[i]="function",n),e);return to(r,t)}function uV(r,e,t){if(t<hn)throw new Error("invalid exponent, negatives unsupported");if(t===hn)return r.ONE;if(t===yr)return e;let n=r.ONE,i=e;for(;t>hn;)t&yr&&(n=r.mul(n,i)),i=r.sqr(i),t>>=yr;return n}function cf(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),i=e.reduce((s,a,c)=>r.is0(a)?s:(n[c]=s,r.mul(s,a)),r.ONE),o=r.inv(i);return e.reduceRight((s,a,c)=>r.is0(a)?s:(n[c]=r.mul(s,n[c]),r.mul(s,a)),o),n}function fV(r,e){let t=(r.ORDER-yr)/Yc,n=r.pow(e,t),i=r.eql(n,r.ONE),o=r.eql(n,r.ZERO),s=r.eql(n,r.neg(r.ONE));if(!i&&!o&&!s)throw new Error("Cannot find square root: probably non-prime P");return i?1:o?0:-1}function OA(r,e){let t=fV(r,e);return t===0||t===1}function Cw(r,e){e!==void 0&&Mo(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function ro(r,e,t=!1,n={}){if(r<=hn)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:i,nByteLength:o}=Cw(r,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let s,a=Object.freeze({ORDER:r,isLE:t,BITS:i,BYTES:o,MASK:Xc(i),ZERO:hn,ONE:yr,create:c=>st(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return hn<=c&&c<r},is0:c=>c===hn,isOdd:c=>(c&yr)===yr,neg:c=>st(-c,r),eql:(c,l)=>c===l,sqr:c=>st(c*c,r),add:(c,l)=>st(c+l,r),sub:(c,l)=>st(c-l,r),mul:(c,l)=>st(c*l,r),pow:(c,l)=>uV(a,c,l),div:(c,l)=>st(c*H0(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>H0(c,r),sqrt:n.sqrt||(c=>(s||(s=cV(r)),s(a,c))),toBytes:c=>t?wa(c,o):Gc(c,o),fromBytes:c=>{if(c.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+c.length);return t?$o(c):ws(c)},invertBatch:c=>cf(a,c),cmov:(c,l,u)=>u?l:c});return Object.freeze(a)}function BA(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 kw(r){let e=BA(r);return e+Math.ceil(e/2)}function MA(r,e,t=!1){let n=r.length,i=BA(e),o=kw(e);if(n<16||n<o||n>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+n);let s=t?$o(r):ws(r),a=st(s,e-yr)+yr;return t?wa(a,i):Gc(a,i)}var UA=BigInt(0),Ow=BigInt(1);function Pw(r,e){let t=e.negate();return r?t:e}function $A(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Rw(r,e){$A(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),i=2**r,o=Xc(r),s=BigInt(r);return{windows:t,windowSize:n,mask:o,maxNumber:i,shiftBy:s}}function FA(r,e,t){let{windowSize:n,mask:i,maxNumber:o,shiftBy:s}=t,a=Number(r&i),c=r>>s;a>n&&(a-=o,c+=Ow);let l=e*n,u=l+Math.abs(a)-1,f=a===0,h=a<0,d=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:h,isNegF:d,offsetF:l}}function dV(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,n)=>{if(!(t instanceof e))throw new Error("invalid point at index "+n)})}function hV(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,n)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+n)})}var Dw=new WeakMap,HA=new WeakMap;function Nw(r){return HA.get(r)||1}function V0(r,e){return{constTimeNegate:Pw,hasPrecomputes(t){return Nw(t)!==1},unsafeLadder(t,n,i=r.ZERO){let o=t;for(;n>UA;)n&Ow&&(i=i.add(o)),o=o.double(),n>>=Ow;return i},precomputeWindow(t,n){let{windows:i,windowSize:o}=Rw(n,e),s=[],a=t,c=a;for(let l=0;l<i;l++){c=a,s.push(c);for(let u=1;u<o;u++)c=c.add(a),s.push(c);a=c.double()}return s},wNAF(t,n,i){let o=r.ZERO,s=r.BASE,a=Rw(t,e);for(let c=0;c<a.windows;c++){let{nextN:l,offset:u,isZero:f,isNeg:h,isNegF:d,offsetF:m}=FA(i,c,a);i=l,f?s=s.add(Pw(d,n[m])):o=o.add(Pw(h,n[u]))}return{p:o,f:s}},wNAFUnsafe(t,n,i,o=r.ZERO){let s=Rw(t,e);for(let a=0;a<s.windows&&i!==UA;a++){let{nextN:c,offset:l,isZero:u,isNeg:f}=FA(i,a,s);if(i=c,!u){let h=n[l];o=o.add(f?h.negate():h)}}return o},getPrecomputes(t,n,i){let o=Dw.get(n);return o||(o=this.precomputeWindow(n,t),t!==1&&Dw.set(n,i(o))),o},wNAFCached(t,n,i){let o=Nw(t);return this.wNAF(o,this.getPrecomputes(o,t,i),n)},wNAFCachedUnsafe(t,n,i,o){let s=Nw(t);return s===1?this.unsafeLadder(t,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,t,i),n,o)},setWindowSize(t,n){$A(n,e),HA.set(t,n),Dw.delete(t)}}}function z0(r,e,t,n){if(dV(t,r),hV(n,e),t.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,o=PA(BigInt(t.length)),s=o>12?o-3:o>4?o-2:o?2:1,a=Xc(s),c=new Array(Number(a)+1).fill(i),l=Math.floor((e.BITS-1)/s)*s,u=i;for(let f=l;f>=0;f-=s){c.fill(i);for(let d=0;d<n.length;d++){let m=n[d],g=Number(m>>BigInt(f)&a);c[g]=c[g].add(t[d])}let h=i;for(let d=c.length-1,m=i;d>0;d--)m=m.add(c[d]),h=h.add(m);if(u=u.add(h),f!==0)for(let d=0;d<s;d++)u=u.double()}return u}function Oh(r){return Tw(r.Fp),to(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Cw(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ho=BigInt(0),pn=BigInt(1),VA=BigInt(2),pV=BigInt(8),mV={zip215:!0};function gV(r){let e=Oh(r);return to(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function zA(r){let e=gV(r),{Fp:t,n,prehash:i,hash:o,randomBytes:s,nByteLength:a,h:c}=e,l=VA<<BigInt(a*8)-pn,u=t.create,f=ro(e.n,e.nBitLength),h=e.uvRatio||((M,R)=>{try{return{isValid:!0,value:t.sqrt(M*t.inv(R))}}catch{return{isValid:!1,value:Ho}}}),d=e.adjustScalarBytes||(M=>M),m=e.domain||((M,R,N)=>{if(Fo("phflag",N),R.length||N)throw new Error("Contexts/pre-hash are not supported");return M});function g(M,R,N=!1){let Z=N?pn:Ho;en("coordinate "+M,R,Z,l)}function w(M){if(!(M instanceof b))throw new Error("ExtendedPoint expected")}let x=af((M,R)=>{let{ex:N,ey:Z,ez:ne}=M,q=M.is0();R==null&&(R=q?pV:t.inv(ne));let ge=u(N*R),ke=u(Z*R),le=u(ne*R);if(q)return{x:Ho,y:pn};if(le!==pn)throw new Error("invZ was invalid");return{x:ge,y:ke}}),v=af(M=>{let{a:R,d:N}=e;if(M.is0())throw new Error("bad point: ZERO");let{ex:Z,ey:ne,ez:q,et:ge}=M,ke=u(Z*Z),le=u(ne*ne),De=u(q*q),et=u(De*De),Ye=u(ke*R),pt=u(De*u(Ye+le)),bt=u(et+u(N*u(ke*le)));if(pt!==bt)throw new Error("bad point: equation left != right (1)");let Rt=u(Z*ne),Et=u(q*ge);if(Rt!==Et)throw new Error("bad point: equation left != right (2)");return!0});class b{constructor(R,N,Z,ne){g("x",R),g("y",N),g("z",Z,!0),g("t",ne),this.ex=R,this.ey=N,this.ez=Z,this.et=ne,Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(R){if(R instanceof b)throw new Error("extended point not allowed");let{x:N,y:Z}=R||{};return g("x",N),g("y",Z),new b(N,Z,pn,u(N*Z))}static normalizeZ(R){let N=cf(t,R.map(Z=>Z.ez));return R.map((Z,ne)=>Z.toAffine(N[ne])).map(b.fromAffine)}static msm(R,N){return z0(b,f,R,N)}_setWindowSize(R){D.setWindowSize(this,R)}assertValidity(){v(this)}equals(R){w(R);let{ex:N,ey:Z,ez:ne}=this,{ex:q,ey:ge,ez:ke}=R,le=u(N*ke),De=u(q*ne),et=u(Z*ke),Ye=u(ge*ne);return le===De&&et===Ye}is0(){return this.equals(b.ZERO)}negate(){return new b(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:R}=e,{ex:N,ey:Z,ez:ne}=this,q=u(N*N),ge=u(Z*Z),ke=u(VA*u(ne*ne)),le=u(R*q),De=N+Z,et=u(u(De*De)-q-ge),Ye=le+ge,pt=Ye-ke,bt=le-ge,Rt=u(et*pt),Et=u(Ye*bt),mr=u(et*bt),Qn=u(pt*Ye);return new b(Rt,Et,Qn,mr)}add(R){w(R);let{a:N,d:Z}=e,{ex:ne,ey:q,ez:ge,et:ke}=this,{ex:le,ey:De,ez:et,et:Ye}=R,pt=u(ne*le),bt=u(q*De),Rt=u(ke*Z*Ye),Et=u(ge*et),mr=u((ne+q)*(le+De)-pt-bt),Qn=Et-Rt,ds=Et+Rt,mh=u(bt-N*pt),Gm=u(mr*Qn),Xm=u(ds*mh),Ym=u(mr*mh),Qm=u(Qn*ds);return new b(Gm,Xm,Qm,Ym)}subtract(R){return this.add(R.negate())}wNAF(R){return D.wNAFCached(this,R,b.normalizeZ)}multiply(R){let N=R;en("scalar",N,pn,n);let{p:Z,f:ne}=this.wNAF(N);return b.normalizeZ([Z,ne])[0]}multiplyUnsafe(R,N=b.ZERO){let Z=R;return en("scalar",Z,Ho,n),Z===Ho?T:this.is0()||Z===pn?this:D.wNAFCachedUnsafe(this,Z,b.normalizeZ,N)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return D.unsafeLadder(this,n).is0()}toAffine(R){return x(this,R)}clearCofactor(){let{h:R}=e;return R===pn?this:this.multiplyUnsafe(R)}static fromHex(R,N=!1){let{d:Z,a:ne}=e,q=t.BYTES;R=At("pointHex",R,q),Fo("zip215",N);let ge=R.slice(),ke=R[q-1];ge[q-1]=ke&-129;let le=$o(ge),De=N?l:t.ORDER;en("pointHex.y",le,Ho,De);let et=u(le*le),Ye=u(et-pn),pt=u(Z*et-ne),{isValid:bt,value:Rt}=h(Ye,pt);if(!bt)throw new Error("Point.fromHex: invalid y coordinate");let Et=(Rt&pn)===pn,mr=(ke&128)!==0;if(!N&&Rt===Ho&&mr)throw new Error("Point.fromHex: x=0 and x_0=1");return mr!==Et&&(Rt=u(-Rt)),b.fromAffine({x:Rt,y:le})}static fromPrivateKey(R){let{scalar:N}=k(R);return S.multiply(N)}toRawBytes(){let{x:R,y:N}=this.toAffine(),Z=wa(N,t.BYTES);return Z[Z.length-1]|=R&pn?128:0,Z}toHex(){return ya(this.toRawBytes())}}b.BASE=new b(e.Gx,e.Gy,pn,u(e.Gx*e.Gy)),b.ZERO=new b(Ho,pn,pn,Ho);let{BASE:S,ZERO:T}=b,D=V0(b,a*8);function A(M){return st(M,n)}function I(M){return A($o(M))}function k(M){let R=t.BYTES;M=At("private key",M,R);let N=At("hashed private key",o(M),2*R),Z=d(N.slice(0,R)),ne=N.slice(R,2*R),q=I(Z);return{head:Z,prefix:ne,scalar:q}}function Q(M){let{head:R,prefix:N,scalar:Z}=k(M),ne=S.multiply(Z),q=ne.toRawBytes();return{head:R,prefix:N,scalar:Z,point:ne,pointBytes:q}}function K(M){return Q(M).pointBytes}function V(M=Uint8Array.of(),...R){let N=xa(...R);return I(o(m(N,At("context",M),!!i)))}function X(M,R,N={}){M=At("message",M),i&&(M=i(M));let{prefix:Z,scalar:ne,pointBytes:q}=Q(R),ge=V(N.context,Z,M),ke=S.multiply(ge).toRawBytes(),le=V(N.context,ke,q,M),De=A(ge+le*ne);en("signature.s",De,Ho,n);let et=xa(ke,wa(De,t.BYTES));return At("result",et,t.BYTES*2)}let $=mV;function F(M,R,N,Z=$){let{context:ne,zip215:q}=Z,ge=t.BYTES;M=At("signature",M,2*ge),R=At("message",R),N=At("publicKey",N,ge),q!==void 0&&Fo("zip215",q),i&&(R=i(R));let ke=$o(M.slice(ge,2*ge)),le,De,et;try{le=b.fromHex(N,q),De=b.fromHex(M.slice(0,ge),q),et=S.multiplyUnsafe(ke)}catch{return!1}if(!q&&le.isSmallOrder())return!1;let Ye=V(ne,De.toRawBytes(),le.toRawBytes(),R);return De.add(le.multiplyUnsafe(Ye)).subtract(et).clearCofactor().equals(b.ZERO)}return S._setWindowSize(8),{CURVE:e,getPublicKey:K,sign:X,verify:F,ExtendedPoint:b,utils:{getExtendedPublicKey:Q,randomPrivateKey:()=>s(t.BYTES),precompute(M=8,R=b.BASE){return R._setWindowSize(M),R.multiply(BigInt(3)),R}}}}var lf=BigInt(0),Lw=BigInt(1);function yV(r){return to(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function KA(r){let e=yV(r),{P:t}=e,n=ro(t),i=b=>st(b,t),o=e.montgomeryBits,s=Math.ceil(o/8),a=e.nByteLength,c=e.adjustScalarBytes||(b=>b),l=e.powPminus2||(b=>n.pow(b,t-BigInt(2)));function u(b,S,T){let D=i(b*(S-T));return S=i(S-D),T=i(T+D),[S,T]}let f=(e.a-BigInt(2))/BigInt(4);function h(b,S){en("u",b,lf,t),en("scalar",S,lf,t);let T=S,D=b,A=Lw,I=lf,k=b,Q=Lw,K=lf,V;for(let $=BigInt(o-1);$>=lf;$--){let F=T>>$&Lw;K^=F,V=u(K,A,k),A=V[0],k=V[1],V=u(K,I,Q),I=V[0],Q=V[1],K=F;let z=A+I,M=i(z*z),R=A-I,N=i(R*R),Z=M-N,ne=k+Q,q=k-Q,ge=i(q*z),ke=i(ne*R),le=ge+ke,De=ge-ke;k=i(le*le),Q=i(D*i(De*De)),A=i(M*N),I=i(Z*(M+i(f*Z)))}V=u(K,A,k),A=V[0],k=V[1],V=u(K,I,Q),I=V[0],Q=V[1];let X=l(I);return i(A*X)}function d(b){return wa(i(b),s)}function m(b){let S=At("u coordinate",b,s);return a===32&&(S[31]&=127),$o(S)}function g(b){let S=At("scalar",b),T=S.length;if(T!==s&&T!==a){let D=""+s+" or "+a;throw new Error("invalid scalar, expected "+D+" bytes, got "+T)}return $o(c(S))}function w(b,S){let T=m(S),D=g(b),A=h(T,D);if(A===lf)throw new Error("invalid private or public key received");return d(A)}let x=d(e.Gu);function v(b){return w(b,x)}return{scalarMult:w,scalarMultBase:v,getSharedSecret:(b,S)=>w(b,S),getPublicKey:b=>v(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:x}}var Lh=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),qA=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),ase=BigInt(0),wV=BigInt(1),jA=BigInt(2),xV=BigInt(3),bV=BigInt(5),vV=BigInt(8);function GA(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),i=BigInt(80),o=Lh,a=r*r%o*r%o,c=Ct(a,jA,o)*a%o,l=Ct(c,wV,o)*r%o,u=Ct(l,bV,o)*l%o,f=Ct(u,e,o)*u%o,h=Ct(f,t,o)*f%o,d=Ct(h,n,o)*h%o,m=Ct(d,i,o)*d%o,g=Ct(m,i,o)*d%o,w=Ct(g,e,o)*u%o;return{pow_p_5_8:Ct(w,jA,o)*r%o,b2:a}}function XA(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function EV(r,e){let t=Lh,n=st(e*e*e,t),i=st(n*n*e,t),o=GA(r*i).pow_p_5_8,s=st(r*n*o,t),a=st(e*s*s,t),c=s,l=st(s*qA,t),u=a===r,f=a===st(-r,t),h=a===st(-r*qA,t);return u&&(s=c),(f||h)&&(s=l),LA(s,t)&&(s=st(-s,t)),{isValid:u||f,value:s}}var WA=ro(Lh,void 0,!0),SV={a:WA.create(BigInt(-1)),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:WA,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:vV,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:F0,randomBytes:zc,adjustScalarBytes:XA,uvRatio:EV},Bh=zA(SV);var Mh=KA({P:Lh,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=Lh,{pow_p_5_8:t,b2:n}=GA(r);return st(Ct(t,xV,e)*n,e)},adjustScalarBytes:XA,randomBytes:zc});var Qc=32,_i=64,Bw=32;function YA(){let r=Bh.utils.randomPrivateKey(),e=Bh.getPublicKey(r);return{privateKey:AV(r,e),publicKey:e}}function QA(r,e){let t=r.subarray(0,Bw);return Bh.sign(e instanceof Uint8Array?e:e.subarray(),t)}function ZA(r,e,t){return Bh.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function AV(r,e){let t=new Uint8Array(_i);for(let n=0;n<Bw;n++)t[n]=r[n],t[Bw+n]=e[n];return t}var Uh=class{type="Ed25519";raw;constructor(e){this.raw=ff(e,Qc)}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return ZA(this.raw,t,e)}},uf=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=ff(e,_i),this.publicKey=new Uh(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return QA(this.raw,e)}};function Mw(r){if(r.length>_i){r=ff(r,_i+Qc);let n=r.subarray(0,_i),i=r.subarray(_i,r.length);return new uf(n,i)}r=ff(r,_i);let e=r.subarray(0,_i),t=r.subarray(Qc);return new uf(e,t)}function Uw(r){return r=ff(r,Qc),new Uh(r)}async function e_(){let{privateKey:r,publicKey:e}=YA();return new uf(r,e)}function ff(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new U(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var _t;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(_t||(_t={}));var Fw;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(Fw||(Fw={}));(function(r){r.codec=()=>St(Fw)})(_t||(_t={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_t.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=_t.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Vo||(Vo={}));var Fh;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_t.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=_t.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Fh||(Fh={}));function mn(r){if(isNaN(r)||r<=0)throw new U("random bytes length must be a Number bigger than 0");return zc(r)}var $h=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Hh=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},K0=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var r_={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new K0("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var In=r_;var zh={};Ft(zh,{MAX_RSA_KEY_SIZE:()=>$w,generateRSAKeyPair:()=>Xw,jwkToJWKKeyPair:()=>o_,jwkToPkcs1:()=>CV,jwkToPkix:()=>Kw,jwkToRSAPrivateKey:()=>Gw,pkcs1MessageToJwk:()=>Vw,pkcs1MessageToRSAPrivateKey:()=>q0,pkcs1ToJwk:()=>TV,pkcs1ToRSAPrivateKey:()=>qw,pkixMessageToJwk:()=>zw,pkixMessageToRSAPublicKey:()=>Ww,pkixToJwk:()=>kV,pkixToRSAPublicKey:()=>jw});var zo=U0;var df=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=zh.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return W.createV1(114,this._multihash)}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return i_(this.jwk,t,e)}},Vh=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=zh.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return n_(this.jwk,e)}};var $w=8192,Hw=18,_V=1062,IV=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function TV(r){let e=Ai(r);return Vw(e)}function Vw(r){return{n:H(r[1],"base64url"),e:H(r[2],"base64url"),d:H(r[3],"base64url"),p:H(r[4],"base64url"),q:H(r[5],"base64url"),dp:H(r[6],"base64url"),dq:H(r[7],"base64url"),qi:H(r[8],"base64url"),kty:"RSA"}}function CV(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 U("JWK was missing components");return Ji([dn(Uint8Array.from([0])),dn(O(r.n,"base64url")),dn(O(r.e,"base64url")),dn(O(r.d,"base64url")),dn(O(r.p,"base64url")),dn(O(r.q,"base64url")),dn(O(r.dp,"base64url")),dn(O(r.dq,"base64url")),dn(O(r.qi,"base64url"))]).subarray()}function kV(r){let e=Ai(r,{offset:0});return zw(e)}function zw(r){let e=Ai(r[1],{offset:0});return{kty:"RSA",n:H(e[0],"base64url"),e:H(e[1],"base64url")}}function Kw(r){if(r.n==null||r.e==null)throw new U("JWK was missing components");return Ji([IV,Ch(Ji([dn(O(r.n,"base64url")),dn(O(r.e,"base64url"))]))]).subarray()}function qw(r){let e=Ai(r);return q0(e)}function q0(r){let e=Vw(r);return Gw(e)}function jw(r,e){if(r.byteLength>=_V)throw new hs("Key size is too large");let t=Ai(r,{offset:0});return Ww(t,r,e)}function Ww(r,e,t){let n=zw(r);if(t==null){let i=zo(Vo.encode({Type:_t.RSA,Data:e}));t=Zr(Hw,i)}return new df(n,t)}function Gw(r){if(a_(r)>$w)throw new U("Key size is too large");let e=o_(r),t=zo(Vo.encode({Type:_t.RSA,Data:Kw(e.publicKey)})),n=Zr(Hw,t);return new Vh(e.privateKey,new df(e.publicKey,n))}async function Xw(r){if(r>$w)throw new U("Key size is too large");let e=await s_(r),t=zo(Vo.encode({Type:_t.RSA,Data:Kw(e.publicKey)})),n=Zr(Hw,t);return new Vh(e.privateKey,new df(e.publicKey,n))}function o_(r){if(r==null)throw new U("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function s_(r){let e=await In.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 PV(e);return{privateKey:t[0],publicKey:t[1]}}async function n_(r,e){let t=await In.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await In.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function i_(r,e,t){let n=await In.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return In.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function PV(r){if(r.privateKey==null||r.publicKey==null)throw new U("Private and public key are required");return Promise.all([In.get().subtle.exportKey("jwk",r.privateKey),In.get().subtle.exportKey("jwk",r.publicKey)])}function a_(r){if(r.kty!=="RSA")throw new U("invalid key type");if(r.n==null)throw new U("invalid key modulus");return O(r.n,"base64url").length*8}var j0=class extends of{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Hc(e);let n=ha(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 i=this.blockLen,o=new Uint8Array(i);o.set(n.length>i?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Jr(o)}update(e){return sf(this),this.iHash.update(e),this}digestInto(e){sf(this),da(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:i,destroyed:o,blockLen:s,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=o,e.blockLen=s,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ba=(r,e,t)=>new j0(r,e).update(t).digest();ba.create=(r,e)=>new j0(r,e);function c_(r){r.lowS!==void 0&&Fo("lowS",r.lowS),r.prehash!==void 0&&Fo("prehash",r.prehash)}function RV(r){let e=Oh(r);to(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:i}=e;if(t){if(!n.eql(i,n.ZERO))throw new Error("invalid 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("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}var Yw=class extends Error{constructor(e=""){super(e)}},xs={Err:Yw,_tlv:{encode:(r,e)=>{let{Err:t}=xs;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,i=Dh(n);if(i.length/2&128)throw new t("tlv.encode: long form length too big");let o=n>127?Dh(i.length/2|128):"";return Dh(r)+o+i+e},decode(r,e){let{Err:t}=xs,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let i=e[n++],o=!!(i&128),s=0;if(!o)s=i;else{let c=i&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)s=s<<8|u;if(n+=c,s<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+s);if(a.length!==s)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+s)}}},_int:{encode(r){let{Err:e}=xs;if(r<bs)throw new e("integer: negative integers are not allowed");let t=Dh(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=xs;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return ws(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=xs,i=At("signature",r),{v:o,l:s}=n.decode(48,i);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=xs,n=e.encode(2,t.encode(r.r)),i=e.encode(2,t.encode(r.s)),o=n+i;return e.encode(48,o)}},bs=BigInt(0),Ar=BigInt(1),iae=BigInt(2),l_=BigInt(3),oae=BigInt(4);function DV(r){let e=RV(r),{Fp:t}=e,n=ro(e.n,e.nBitLength),i=e.toBytes||((g,w,x)=>{let v=w.toAffine();return xa(Uint8Array.from([4]),t.toBytes(v.x),t.toBytes(v.y))}),o=e.fromBytes||(g=>{let w=g.subarray(1),x=t.fromBytes(w.subarray(0,t.BYTES)),v=t.fromBytes(w.subarray(t.BYTES,2*t.BYTES));return{x,y:v}});function s(g){let{a:w,b:x}=e,v=t.sqr(g),b=t.mul(v,g);return t.add(t.add(b,t.mul(g,w)),x)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return $0(g,Ar,e.n)}function c(g){let{allowedPrivateKeyLengths:w,nByteLength:x,wrapPrivateKey:v,n:b}=e;if(w&&typeof g!="bigint"){if(Wc(g)&&(g=ya(g)),typeof g!="string"||!w.includes(g.length))throw new Error("invalid private key");g=g.padStart(x*2,"0")}let S;try{S=typeof g=="bigint"?g:ws(At("private key",g,x))}catch{throw new Error("invalid private key, expected hex or "+x+" bytes, got "+typeof g)}return v&&(S=st(S,b)),en("private key",S,Ar,b),S}function l(g){if(!(g instanceof h))throw new Error("ProjectivePoint expected")}let u=af((g,w)=>{let{px:x,py:v,pz:b}=g;if(t.eql(b,t.ONE))return{x,y:v};let S=g.is0();w==null&&(w=S?t.ONE:t.inv(b));let T=t.mul(x,w),D=t.mul(v,w),A=t.mul(b,w);if(S)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:T,y:D}}),f=af(g=>{if(g.is0()){if(e.allowInfinityPoint&&!t.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:w,y:x}=g.toAffine();if(!t.isValid(w)||!t.isValid(x))throw new Error("bad point: x or y not FE");let v=t.sqr(x),b=s(w);if(!t.eql(v,b))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(w,x,v){if(w==null||!t.isValid(w))throw new Error("x required");if(x==null||!t.isValid(x)||t.is0(x))throw new Error("y required");if(v==null||!t.isValid(v))throw new Error("z required");this.px=w,this.py=x,this.pz=v,Object.freeze(this)}static fromAffine(w){let{x,y:v}=w||{};if(!w||!t.isValid(x)||!t.isValid(v))throw new Error("invalid affine point");if(w instanceof h)throw new Error("projective point not allowed");let b=S=>t.eql(S,t.ZERO);return b(x)&&b(v)?h.ZERO:new h(x,v,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(w){let x=cf(t,w.map(v=>v.pz));return w.map((v,b)=>v.toAffine(x[b])).map(h.fromAffine)}static fromHex(w){let x=h.fromAffine(o(At("pointHex",w)));return x.assertValidity(),x}static fromPrivateKey(w){return h.BASE.multiply(c(w))}static msm(w,x){return z0(h,n,w,x)}_setWindowSize(w){m.setWindowSize(this,w)}assertValidity(){f(this)}hasEvenY(){let{y:w}=this.toAffine();if(t.isOdd)return!t.isOdd(w);throw new Error("Field doesn't support isOdd")}equals(w){l(w);let{px:x,py:v,pz:b}=this,{px:S,py:T,pz:D}=w,A=t.eql(t.mul(x,D),t.mul(S,b)),I=t.eql(t.mul(v,D),t.mul(T,b));return A&&I}negate(){return new h(this.px,t.neg(this.py),this.pz)}double(){let{a:w,b:x}=e,v=t.mul(x,l_),{px:b,py:S,pz:T}=this,D=t.ZERO,A=t.ZERO,I=t.ZERO,k=t.mul(b,b),Q=t.mul(S,S),K=t.mul(T,T),V=t.mul(b,S);return V=t.add(V,V),I=t.mul(b,T),I=t.add(I,I),D=t.mul(w,I),A=t.mul(v,K),A=t.add(D,A),D=t.sub(Q,A),A=t.add(Q,A),A=t.mul(D,A),D=t.mul(V,D),I=t.mul(v,I),K=t.mul(w,K),V=t.sub(k,K),V=t.mul(w,V),V=t.add(V,I),I=t.add(k,k),k=t.add(I,k),k=t.add(k,K),k=t.mul(k,V),A=t.add(A,k),K=t.mul(S,T),K=t.add(K,K),k=t.mul(K,V),D=t.sub(D,k),I=t.mul(K,Q),I=t.add(I,I),I=t.add(I,I),new h(D,A,I)}add(w){l(w);let{px:x,py:v,pz:b}=this,{px:S,py:T,pz:D}=w,A=t.ZERO,I=t.ZERO,k=t.ZERO,Q=e.a,K=t.mul(e.b,l_),V=t.mul(x,S),X=t.mul(v,T),$=t.mul(b,D),F=t.add(x,v),z=t.add(S,T);F=t.mul(F,z),z=t.add(V,X),F=t.sub(F,z),z=t.add(x,b);let M=t.add(S,D);return z=t.mul(z,M),M=t.add(V,$),z=t.sub(z,M),M=t.add(v,b),A=t.add(T,D),M=t.mul(M,A),A=t.add(X,$),M=t.sub(M,A),k=t.mul(Q,z),A=t.mul(K,$),k=t.add(A,k),A=t.sub(X,k),k=t.add(X,k),I=t.mul(A,k),X=t.add(V,V),X=t.add(X,V),$=t.mul(Q,$),z=t.mul(K,z),X=t.add(X,$),$=t.sub(V,$),$=t.mul(Q,$),z=t.add(z,$),V=t.mul(X,z),I=t.add(I,V),V=t.mul(M,z),A=t.mul(F,A),A=t.sub(A,V),V=t.mul(F,X),k=t.mul(M,k),k=t.add(k,V),new h(A,I,k)}subtract(w){return this.add(w.negate())}is0(){return this.equals(h.ZERO)}wNAF(w){return m.wNAFCached(this,w,h.normalizeZ)}multiplyUnsafe(w){let{endo:x,n:v}=e;en("scalar",w,bs,v);let b=h.ZERO;if(w===bs)return b;if(this.is0()||w===Ar)return this;if(!x||m.hasPrecomputes(this))return m.wNAFCachedUnsafe(this,w,h.normalizeZ);let{k1neg:S,k1:T,k2neg:D,k2:A}=x.splitScalar(w),I=b,k=b,Q=this;for(;T>bs||A>bs;)T&Ar&&(I=I.add(Q)),A&Ar&&(k=k.add(Q)),Q=Q.double(),T>>=Ar,A>>=Ar;return S&&(I=I.negate()),D&&(k=k.negate()),k=new h(t.mul(k.px,x.beta),k.py,k.pz),I.add(k)}multiply(w){let{endo:x,n:v}=e;en("scalar",w,Ar,v);let b,S;if(x){let{k1neg:T,k1:D,k2neg:A,k2:I}=x.splitScalar(w),{p:k,f:Q}=this.wNAF(D),{p:K,f:V}=this.wNAF(I);k=m.constTimeNegate(T,k),K=m.constTimeNegate(A,K),K=new h(t.mul(K.px,x.beta),K.py,K.pz),b=k.add(K),S=Q.add(V)}else{let{p:T,f:D}=this.wNAF(w);b=T,S=D}return h.normalizeZ([b,S])[0]}multiplyAndAddUnsafe(w,x,v){let b=h.BASE,S=(D,A)=>A===bs||A===Ar||!D.equals(b)?D.multiplyUnsafe(A):D.multiply(A),T=S(this,x).add(S(w,v));return T.is0()?void 0:T}toAffine(w){return u(this,w)}isTorsionFree(){let{h:w,isTorsionFree:x}=e;if(w===Ar)return!0;if(x)return x(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:w,clearCofactor:x}=e;return w===Ar?this:x?x(h,this):this.multiplyUnsafe(e.h)}toRawBytes(w=!0){return Fo("isCompressed",w),this.assertValidity(),i(h,this,w)}toHex(w=!0){return Fo("isCompressed",w),ya(this.toRawBytes(w))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let d=e.nBitLength,m=V0(h,e.endo?Math.ceil(d/2):d);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:a}}function NV(r){let e=Oh(r);return to(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function u_(r){let e=NV(r),{Fp:t,n}=e,i=t.BYTES+1,o=2*t.BYTES+1;function s($){return st($,n)}function a($){return H0($,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=DV({...e,toBytes($,F,z){let M=F.toAffine(),R=t.toBytes(M.x),N=xa;return Fo("isCompressed",z),z?N(Uint8Array.from([F.hasEvenY()?2:3]),R):N(Uint8Array.from([4]),R,t.toBytes(M.y))},fromBytes($){let F=$.length,z=$[0],M=$.subarray(1);if(F===i&&(z===2||z===3)){let R=ws(M);if(!$0(R,Ar,t.ORDER))throw new Error("Point is not on curve");let N=u(R),Z;try{Z=t.sqrt(N)}catch(ge){let ke=ge instanceof Error?": "+ge.message:"";throw new Error("Point is not on curve"+ke)}let ne=(Z&Ar)===Ar;return(z&1)===1!==ne&&(Z=t.neg(Z)),{x:R,y:Z}}else if(F===o&&z===4){let R=t.fromBytes(M.subarray(0,t.BYTES)),N=t.fromBytes(M.subarray(t.BYTES,2*t.BYTES));return{x:R,y:N}}else{let R=i,N=o;throw new Error("invalid Point, expected length of "+R+", or uncompressed "+N+", got "+F)}}}),h=$=>ya(Gc($,e.nByteLength));function d($){let F=n>>Ar;return $>F}function m($){return d($)?s(-$):$}let g=($,F,z)=>ws($.slice(F,z));class w{constructor(F,z,M){en("r",F,Ar,n),en("s",z,Ar,n),this.r=F,this.s=z,M!=null&&(this.recovery=M),Object.freeze(this)}static fromCompact(F){let z=e.nByteLength;return F=At("compactSignature",F,z*2),new w(g(F,0,z),g(F,z,2*z))}static fromDER(F){let{r:z,s:M}=xs.toSig(At("DER",F));return new w(z,M)}assertValidity(){}addRecoveryBit(F){return new w(this.r,this.s,F)}recoverPublicKey(F){let{r:z,s:M,recovery:R}=this,N=D(At("msgHash",F));if(R==null||![0,1,2,3].includes(R))throw new Error("recovery id invalid");let Z=R===2||R===3?z+e.n:z;if(Z>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let ne=(R&1)===0?"02":"03",q=c.fromHex(ne+h(Z)),ge=a(Z),ke=s(-N*ge),le=s(M*ge),De=c.BASE.multiplyAndAddUnsafe(q,ke,le);if(!De)throw new Error("point at infinify");return De.assertValidity(),De}hasHighS(){return d(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,s(-this.s),this.recovery):this}toDERRawBytes(){return Nh(this.toDERHex())}toDERHex(){return xs.hexFromSig(this)}toCompactRawBytes(){return Nh(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey($){try{return l($),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let $=kw(e.n);return MA(e.randomBytes($),e.n)},precompute($=8,F=c.BASE){return F._setWindowSize($),F.multiply(BigInt(3)),F}};function v($,F=!0){return c.fromPrivateKey($).toRawBytes(F)}function b($){let F=Wc($),z=typeof $=="string",M=(F||z)&&$.length;return F?M===i||M===o:z?M===2*i||M===2*o:$ instanceof c}function S($,F,z=!0){if(b($))throw new Error("first arg must be private key");if(!b(F))throw new Error("second arg must be public key");return c.fromHex(F).multiply(l($)).toRawBytes(z)}let T=e.bits2int||function($){if($.length>8192)throw new Error("input is too large");let F=ws($),z=$.length*8-e.nBitLength;return z>0?F>>BigInt(z):F},D=e.bits2int_modN||function($){return s(T($))},A=Xc(e.nBitLength);function I($){return en("num < 2^"+e.nBitLength,$,bs,A),Gc($,e.nByteLength)}function k($,F,z=Q){if(["recovered","canonical"].some(Ye=>Ye in z))throw new Error("sign() legacy options not supported");let{hash:M,randomBytes:R}=e,{lowS:N,prehash:Z,extraEntropy:ne}=z;N==null&&(N=!0),$=At("msgHash",$),c_(z),Z&&($=At("prehashed msgHash",M($)));let q=D($),ge=l(F),ke=[I(ge),I(q)];if(ne!=null&&ne!==!1){let Ye=ne===!0?R(t.BYTES):ne;ke.push(At("extraEntropy",Ye))}let le=xa(...ke),De=q;function et(Ye){let pt=T(Ye);if(!f(pt))return;let bt=a(pt),Rt=c.BASE.multiply(pt).toAffine(),Et=s(Rt.x);if(Et===bs)return;let mr=s(bt*s(De+Et*ge));if(mr===bs)return;let Qn=(Rt.x===Et?0:2)|Number(Rt.y&Ar),ds=mr;return N&&d(mr)&&(ds=m(mr),Qn^=1),new w(Et,ds,Qn)}return{seed:le,k2sig:et}}let Q={lowS:e.lowS,prehash:!1},K={lowS:e.lowS,prehash:!1};function V($,F,z=Q){let{seed:M,k2sig:R}=k($,F,z),N=e;return RA(N.hash.outputLen,N.nByteLength,N.hmac)(M,R)}c.BASE._setWindowSize(8);function X($,F,z,M=K){let R=$;F=At("msgHash",F),z=At("publicKey",z);let{lowS:N,prehash:Z,format:ne}=M;if(c_(M),"strict"in M)throw new Error("options.strict was renamed to lowS");if(ne!==void 0&&ne!=="compact"&&ne!=="der")throw new Error("format must be compact or der");let q=typeof R=="string"||Wc(R),ge=!q&&!ne&&typeof R=="object"&&R!==null&&typeof R.r=="bigint"&&typeof R.s=="bigint";if(!q&&!ge)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let ke,le;try{if(ge&&(ke=new w(R.r,R.s)),q){try{ne!=="compact"&&(ke=w.fromDER(R))}catch(Qn){if(!(Qn instanceof xs.Err))throw Qn}!ke&&ne!=="der"&&(ke=w.fromCompact(R))}le=c.fromHex(z)}catch{return!1}if(!ke||N&&ke.hasHighS())return!1;Z&&(F=e.hash(F));let{r:De,s:et}=ke,Ye=D(F),pt=a(et),bt=s(Ye*pt),Rt=s(De*pt),Et=c.BASE.multiplyAndAddUnsafe(le,bt,Rt)?.toAffine();return Et?s(Et.x)===De:!1}return{CURVE:e,getPublicKey:v,getSharedSecret:S,sign:V,verify:X,ProjectivePoint:c,Signature:w,utils:x}}function OV(r){return{hash:r,hmac:(e,...t)=>ba(r,e,ww(...t)),randomBytes:zc}}function f_(r,e){let t=n=>u_({...r,...OV(n)});return{...t(e),create:t}}var p_=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),d_=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),LV=BigInt(1),Qw=BigInt(2),h_=(r,e)=>(r+e/Qw)/e;function BV(r){let e=p_,t=BigInt(3),n=BigInt(6),i=BigInt(11),o=BigInt(22),s=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=Ct(u,t,e)*u%e,h=Ct(f,t,e)*u%e,d=Ct(h,Qw,e)*l%e,m=Ct(d,i,e)*d%e,g=Ct(m,o,e)*m%e,w=Ct(g,a,e)*g%e,x=Ct(w,c,e)*w%e,v=Ct(x,a,e)*g%e,b=Ct(v,t,e)*u%e,S=Ct(b,s,e)*m%e,T=Ct(S,n,e)*l%e,D=Ct(T,Qw,e);if(!Zw.eql(Zw.sqr(D),r))throw new Error("Cannot find square root");return D}var Zw=ro(p_,void 0,void 0,{sqrt:BV}),Ii=f_({a:BigInt(0),b:BigInt(7),Fp:Zw,n:d_,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=d_,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-LV*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,s=BigInt("0x100000000000000000000000000000000"),a=h_(o*r,e),c=h_(-n*r,e),l=st(r-a*t-c*i,e),u=st(-a*n-c*o,e),f=l>s,h=u>s;if(f&&(l=e-l),h&&(u=e-u),l>s||u>s)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}}},U0),pae=BigInt(0);var mae=Ii.ProjectivePoint;function Jw(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var m_=32;function g_(r,e){let t=Fe.digest(e instanceof Uint8Array?e:e.subarray());if(Jw(t))return t.then(({digest:n})=>Ii.sign(n,r).toDERRawBytes()).catch(n=>{throw new $h(String(n))});try{return Ii.sign(t.digest,r).toDERRawBytes()}catch(n){throw new $h(String(n))}}function y_(r,e,t){let n=Fe.digest(t instanceof Uint8Array?t:t.subarray());if(Jw(n))return n.then(({digest:i})=>Ii.verify(e,i,r)).catch(i=>{throw new Hh(String(i))});try{return Ii.verify(e,n.digest,r)}catch(i){throw new Hh(String(i))}}var Kh=class{type="secp256k1";raw;_key;constructor(e){this._key=b_(e),this.raw=w_(this._key)}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return y_(this._key,t,e)}},qh=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=x_(e),this.publicKey=new Kh(t??v_(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return g_(this.raw,e)}};function e7(r){return new qh(r)}function t7(r){return new Kh(r)}async function E_(){let r=MV();return new qh(r)}function w_(r){return Ii.ProjectivePoint.fromHex(r).toRawBytes(!0)}function x_(r){try{return Ii.getPublicKey(r,!0),r}catch(e){throw new yh(String(e))}}function b_(r){try{return Ii.ProjectivePoint.fromHex(r),r}catch(e){throw new hs(String(e))}}function v_(r){try{return Ii.getPublicKey(r,!0)}catch(e){throw new yh(String(e))}}function MV(){return Ii.utils.randomPrivateKey()}async function hf(r,e){if(r==="Ed25519")return e_();if(r==="secp256k1")return E_();if(r==="RSA")return Xw(UV(e));if(r==="ECDSA")return hA(FV(e));throw new Xi}function tr(r,e){let{Type:t,Data:n}=Vo.decode(r),i=n??new Uint8Array;switch(t){case _t.RSA:return jw(i,e);case _t.Ed25519:return Uw(i);case _t.secp256k1:return t7(i);case _t.ECDSA:return mw(i);default:throw new Xi}}function W0(r){let{Type:e,Data:t}=Vo.decode(r.digest),n=t??new Uint8Array;switch(e){case _t.Ed25519:return Uw(n);case _t.secp256k1:return t7(n);case _t.ECDSA:return mw(n);default:throw new Xi}}function lr(r){return Vo.encode({Type:_t[r.type],Data:r.raw})}function S_(r){let e=Fh.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case _t.RSA:return qw(t);case _t.Ed25519:return Mw(t);case _t.secp256k1:return e7(t);case _t.ECDSA:return cA(t);default:throw new Xi}}function A_(r){if(r.byteLength===_i)return Mw(r);if(r.byteLength===m_)return e7(r);let e=Ai(r),t=e[2]?.[0];if(t===JS||t===eA||t===tA)return pw(e);if(e.length>8)return q0(e);throw new U("Could not extract private key from raw bytes")}function Zc(r){return Fh.encode({Type:_t[r.type],Data:r.raw})}function UV(r){return r==null?2048:parseInt(r,10)}function FV(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new U("Unsupported curve, should be P-256, P-384 or P-521")}async function G0(r){if(r.type==="RSA")return{privateKey:await crypto.subtle.importKey("jwk",r.jwk,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),publicKey:await crypto.subtle.importKey("jwk",r.publicKey.jwk,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])};if(r.type==="ECDSA")return{privateKey:await crypto.subtle.importKey("jwk",r.jwk,{name:"ECDSA",namedCurve:r.jwk.crv??"P-256"},!0,["sign"]),publicKey:await crypto.subtle.importKey("jwk",r.publicKey.jwk,{name:"ECDSA",namedCurve:r.publicKey.jwk.crv??"P-256"},!0,["verify"])};throw new U("Only RSA and ECDSA keys are supported")}var __=Symbol.for("nodejs.util.inspect.custom"),$V=114,jh=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Jm]=!0;toString(){return this.string==null&&(this.string=Le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return W.createV1($V,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return pe(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return pe(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[__](){return`PeerId(${this.toString()})`}},Wh=class extends jh{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Gh=class extends jh{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Xh=class extends jh{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},HV=2336,Yh=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=cr.digest(O(this.url))}[__](){return`PeerId(${this.url})`}[Jm]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return W.createV1(HV,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=H(e)),e.toString()===this.toString())}};var VV=114,I_=2336;function at(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=Ue(Le.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return gn(W.parse(r));if(e==null)throw new U('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=Ue(e.decode(r))}return ur(t)}function Ko(r){if(r.type==="Ed25519")return new Gh({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Xh({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Wh({multihash:r.toCID().multihash,publicKey:r});throw new Xi}function T_(r){return Ko(r.publicKey)}function ur(r){if(KV(r))return new Wh({multihash:r});if(zV(r))try{let e=W0(r);if(e.type==="Ed25519")return new Gh({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Xh({multihash:r,publicKey:e})}catch{let t=H(r.digest);return new Yh(new URL(t))}throw new aa("Supplied PeerID Multihash is invalid")}function gn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==VV&&r.code!==I_)throw new o0("Supplied PeerID CID is invalid");if(r.code===I_){let e=H(r.multihash.digest);return new Yh(new URL(e))}return ur(r.multihash)}function zV(r){return r.code===cr.code}function KV(r){return r.code===Fe.code}function Jc(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),i=n.value;return n.done===!0||i==null?{done:!0,value:void 0}:{done:!1,value:e(i)}}};return t}function X0(r){let e=Ue(Le.decode(`z${r}`));return ur(e)}var _r=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Jc(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Jc(this.map.values(),e=>e.key)}values(){return Jc(this.map.values(),e=>e.value)}get size(){return this.map.size}};var yn=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 Jc(this.set.entries(),e=>{let t=X0(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=X0(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Jc(this.set.values(),e=>X0(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function r7(){return new yn}function C_(r,e,t,n){Hc(r);let i=gA({dkLen:32,asyncTick:10},n),{c:o,dkLen:s,asyncTick:a}=i;if(Mo(o),Mo(s),Mo(a),o<1)throw new Error("iterations (c) should be >= 1");let c=yw(e),l=yw(t),u=new Uint8Array(s),f=ba.create(r,c),h=f._cloneInto().update(l);return{c:o,dkLen:s,asyncTick:a,DK:u,PRF:f,PRFSalt:h}}function k_(r,e,t,n,i){return r.destroy(),e.destroy(),n&&n.destroy(),Jr(i),t}function P_(r,e,t,n){let{c:i,dkLen:o,DK:s,PRF:a,PRFSalt:c}=C_(r,e,t,n),l,u=new Uint8Array(4),f=Vc(u),h=new Uint8Array(a.outputLen);for(let d=1,m=0;m<o;d++,m+=a.outputLen){let g=s.subarray(m,m+a.outputLen);f.setInt32(0,d,!1),(l=c._cloneInto(l)).update(u).digestInto(h),g.set(h.subarray(0,g.length));for(let w=1;w<i;w++){a._cloneInto(l).update(h).digestInto(h);for(let x=0;x<g.length;x++)g[x]^=h[x]}}return k_(a,c,s,l,h)}async function Y0(r,e,t,n){let{c:i,dkLen:o,asyncTick:s,DK:a,PRF:c,PRFSalt:l}=C_(r,e,t,n),u,f=new Uint8Array(4),h=Vc(f),d=new Uint8Array(c.outputLen);for(let m=1,g=0;g<o;m++,g+=c.outputLen){let w=a.subarray(g,g+c.outputLen);h.setInt32(0,m,!1),(u=l._cloneInto(u)).update(f).digestInto(d),w.set(d.subarray(0,w.length)),await mA(i-1,s,()=>{c._cloneInto(u).update(d).digestInto(d);for(let x=0;x<w.length;x++)w[x]^=d[x]})}return k_(c,l,a,u,d)}var Qh=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),va=new Uint32Array(80),Q0=class extends Kc{constructor(){super(64,20,8,!1),this.A=Qh[0]|0,this.B=Qh[1]|0,this.C=Qh[2]|0,this.D=Qh[3]|0,this.E=Qh[4]|0}get(){let{A:e,B:t,C:n,D:i,E:o}=this;return[e,t,n,i,o]}set(e,t,n,i,o){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0}process(e,t){for(let c=0;c<16;c++,t+=4)va[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)va[c]=D0(va[c-3]^va[c-8]^va[c-14]^va[c-16],1);let{A:n,B:i,C:o,D:s,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=N0(i,o,s),u=1518500249):c<40?(l=i^o^s,u=1859775393):c<60?(l=O0(i,o,s),u=2400959708):(l=i^o^s,u=3395469782);let f=D0(n,5)+l+a+u+va[c]|0;a=s,s=o,o=D0(i,30),i=n,n=f}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,this.set(n,i,o,s,a)}roundClean(){Jr(va)}destroy(){this.set(0,0,0,0,0),Jr(this.buffer)}},R_=kh(()=>new Q0);var D_=R_;var pf=F0;var N_={sha1:D_,"sha2-256":zo,"sha2-512":pf};function Zh(r,e,t,n,i){if(i!=="sha1"&&i!=="sha2-256"&&i!=="sha2-512"){let a=Object.keys(N_).join(" / ");throw new U(`Hash '${i}' is unknown or not supported. Must be ${a}`)}let o=N_[i],s=P_(o,r,e,{c:t,dkLen:n});return ar.encode(s).substring(1)}var n7={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},O_={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},L_=new globalThis.TextEncoder;function qV(r,e){let t=n7[e],n=O_[e];for(let i=0;i<r.length;i++)n^=BigInt(r[i]),n=BigInt.asUintN(e,n*t);return n}function jV(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=n7[e],i=O_[e],o=r;for(;o.length>0;){let s=L_.encodeInto(o,t);o=o.slice(s.read);for(let a=0;a<s.written;a++)i^=BigInt(t[a]),i=BigInt.asUintN(e,i*n)}return i}function i7(r,{size:e=32,utf8Buffer:t}={}){if(!n7[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return jV(r,e,t);r=L_.encode(r)}return qV(r,e)}var Jh={hash:r=>Number(i7(r,{size:32})),hashV:(r,e)=>WV(Jh.hash(r,e))};function WV(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),O(e,"base16")}var o7=64,no=class{fp;h;seed;constructor(e,t,n,i=2){if(i>o7)throw new TypeError("Invalid Fingerprint Size");let o=t.hashV(e,n),s=Pe(i);for(let a=0;a<s.length;a++)s[a]=o[a];s.length===0&&(s[0]=7),this.fp=s,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?pe(this.fp,e.fp):!1}};function el(r,e){return Math.floor(Math.random()*(e-r))+r}var tl=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");let t=el(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var GV=500,ep=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Jh,this.seed=e.seed??el(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new tl(this.bucketSize)),this.buckets[i]==null&&(this.buckets[i]=new tl(this.bucketSize)),this.buckets[n].add(t)||this.buckets[i].add(t))return this.count++,!0;let o=[n,i],s=o[el(0,o.length-1)];this.buckets[s]==null&&(this.buckets[s]=new tl(this.bucketSize));for(let a=0;a<GV;a++){let c=this.buckets[s].swap(t);if(c!=null&&(s=(s^c.hash())%this.filterSize,this.buckets[s]==null&&(this.buckets[s]=new tl(this.bucketSize)),this.buckets[s].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=this.buckets[n]?.has(t)??!1;if(i)return i;let o=(n^t.hash())%this.filterSize;return this.buckets[o]?.has(t)??!1}remove(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=this.buckets[n]?.remove(t)??!1;if(i)return this.count--,i;let o=(n^t.hash())%this.filterSize,s=this.buckets[o]?.remove(t)??!1;return s&&this.count--,s}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},XV={1:.5,2:.84,4:.95,8:.98};function YV(r=.001){return r>.002?2:r>1e-5?4:8}function B_(r,e=.001){let t=YV(e),n=XV[t],i=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),o7);return{filterSize:i,bucketSize:t,fingerprintSize:o}}var mf=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Jh,this.seed=e.seed??el(0,Math.pow(2,10)),this.filterSeries=[new ep({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=O(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new ep({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Tn(r,e=.001,t){return new mf({...B_(r,e),...t??{}})}var Z0=class{filter;constructor(e,t){this.filter=Tn(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function s7(r,e=.001){return new Z0(r,e)}var a7=class extends _r{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 tp(r){let{name:e,metrics:t}=r,n;return t!=null?n=new a7({name:e,metrics:t}):n=new _r,n}var vs=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=ar.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=ar.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=ar.encode(e.multihash.bytes);this.blocks.set(n,t)}};function QV(r){let e=new Uint8Array(r.reduce((n,i)=>n+Oe(i),0)),t=0;for(let n of r)e=ht(n,e,t),t+=Oe(n);return e}var M_=QV;function c7(r){return M_([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var J0=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t=new vs,n=new Set;for(let[i,o]of this.wants.entries())try{let s=await this.blockstore.get(o.cid,e);o.wantType===er.WantHave?s.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",o.cid),n.add(i),t.addBlock(o.cid,{data:s,prefix:c7(o.cid)})):(this.log("sending have for %c",o.cid),t.addBlockPresence(o.cid,{cid:o.cid.bytes,type:Si.HaveBlock})):(this.log("sending block for %c",o.cid),n.add(i),t.addBlock(o.cid,{data:s,prefix:c7(o.cid)}))}catch(s){if(s.name!=="NotFoundError")throw s;if(this.log("do not have block for %c",o.cid),!o.sendDontHave||o.sentDoNotHave===!0)continue;o.sentDoNotHave=!0,t.addBlockPresence(o.cid,{cid:o.cid.bytes,type:Si.DoNotHaveBlock})}if(t.blocks.size>0||t.blockPresences.size>0){this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((i,o)=>i+o.data.byteLength,0));for(let i of n)this.wants.delete(i)}}};var eg=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=tp({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(i=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,i)})}),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 J0({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((i,o)=>i+o.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let i of t.wantlist.entries){let o=W.decode(i.cid),s=H(o.multihash.bytes,"base64");i.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,o),n.wants.delete(s)):(i.wantType===er.WantHave?this.log("peer %p wanted block presence for %c",e,o):this.log("peer %p wanted block for %c",e,o),n.wants.set(s,{cid:o,priority:i.priority,wantType:i.wantType??er.WantBlock,sendDontHave:i.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=H(e.multihash.bytes,"base64"),i=[];for(let o of this.ledgerMap.values())o.wants.has(n)&&i.push(o);await Promise.all(i.map(async o=>o.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};function ZV(r,e){try{if(typeof r=="string"&&r.length>0)return JV(r);if(typeof r=="number"&&isFinite(r))return e?.long?tz(r):ez(r);throw new Error("Value is not a string or number.")}catch(t){let n=rz(t)?`${t.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function JV(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let 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)return NaN;let t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*315576e5;case"weeks":case"week":case"w":return t*6048e5;case"days":case"day":case"d":return t*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return t*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return t*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return t*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var rg=ZV;function ez(r){let e=Math.abs(r);return e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function tz(r){let e=Math.abs(r);return e>=864e5?tg(r,e,864e5,"day"):e>=36e5?tg(r,e,36e5,"hour"):e>=6e4?tg(r,e,6e4,"minute"):e>=1e3?tg(r,e,1e3,"second"):`${r} ms`}function tg(r,e,t,n){let i=e>=t*1.5;return`${Math.round(r/t)} ${n}${i?"s":""}`}function rz(r){return typeof r=="object"&&r!==null&&"message"in r}function l7(r){t.debug=t,t.default=t,t.coerce=c,t.disable=o,t.enable=i,t.enabled=s,t.humanize=rg,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let h=0;h<u.length;h++)f=(f<<5)-f+u.charCodeAt(h),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u){let f,h=null,d,m;function g(...w){if(!g.enabled)return;let x=g,v=Number(new Date),b=v-(f||v);x.diff=b,x.prev=f,x.curr=v,f=v,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let S=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(D,A)=>{if(D==="%%")return"%";S++;let I=t.formatters[A];if(typeof I=="function"){let k=w[S];D=I.call(x,k),w.splice(S,1),S--}return D}),t.formatArgs.call(x,w),(x.log||t.log).apply(x,w)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(d!==t.namespaces&&(d=t.namespaces,m=t.enabled(u)),m),set:w=>{h=w}}),typeof t.init=="function"&&t.init(g),g}function n(u,f){let h=t(this.namespace+(typeof f>"u"?":":f)+u);return h.log=this.log,h}function i(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f,h=(typeof u=="string"?u:"").split(/[\s,]+/),d=h.length;for(f=0;f<d;f++)h[f]&&(u=h[f].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function o(){let u=[...t.names.map(a),...t.skips.map(a).map(f=>"-"+f)].join(",");return t.enable(""),u}function s(u){if(u[u.length-1]==="*")return!0;let f,h;for(f=0,h=t.skips.length;f<h;f++)if(t.skips[f].test(u))return!1;for(f=0,h=t.names.length;f<h;f++)if(t.names[f].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var ng=lz(),nz=["#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 iz(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function oz(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+rg(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,i=>{i!=="%%"&&(t++,i==="%c"&&(n=t))}),r.splice(n,0,e)}var sz=console.debug??console.log??(()=>{});function az(r){try{r?ng?.setItem("debug",r):ng?.removeItem("debug")}catch{}}function cz(){let r;try{r=ng?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function lz(){try{return localStorage}catch{}}function uz(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var U_=l7({formatArgs:oz,save:az,load:cz,useColors:iz,setupFormatters:uz,colors:nz,storage:ng,log:sz});var Cn=U_;Cn.formatters.b=r=>r==null?"undefined":Le.baseEncode(r);Cn.formatters.t=r=>r==null?"undefined":Jt.baseEncode(r);Cn.formatters.m=r=>r==null?"undefined":ar.baseEncode(r);Cn.formatters.p=r=>r==null?"undefined":r.toString();Cn.formatters.c=r=>r==null?"undefined":r.toString();Cn.formatters.k=r=>r==null?"undefined":r.toString();Cn.formatters.a=r=>r==null?"undefined":r.toString();Cn.formatters.e=r=>r==null?"undefined":F_(r.stack)??F_(r.message)??r.toString();function fz(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 $_(r){return{forComponent(e){return ze(`${r}:${e}`)}}}function Ea(){return{forComponent(r){return ze(r)}}}function ze(r){let e=fz(`${r}:trace`);return Cn.enabled(`${r}:trace`)&&Cn.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Cn(`${r}:trace`)),Object.assign(Cn(r),{error:Cn(`${r}:error`),trace:e})}function F_(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var f7=it(V_(),1);var np=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},d7=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},z_=r=>globalThis.DOMException===void 0?new d7(r):new DOMException(r),K_=r=>{let e=r.reason===void 0?z_("This operation was aborted."):r.reason;return e instanceof Error?e:z_(e)};function io(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:o={setTimeout,clearTimeout}}=e,s,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(K_(d)),a=()=>{f(K_(d))},d.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let h=new np;s=o.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?u():i instanceof Error?f(i):(h.message=i??`Promise timed out after ${t} milliseconds`,f(h))},t),(async()=>{try{u(await r)}catch(d){f(d)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},l}function h7(r,e,t){let n=0,i=r.length;for(;i>0;){let o=Math.trunc(i/2),s=n+o;t(r[s],e)<=0?(n=++s,i-=o+1):i=o}return n}var ip=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,id:t.id,run:e};if(this.size===0||this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=h7(this.#e,n,(o,s)=>s.priority-o.priority);this.#e.splice(i,0,n)}setPriority(e,t){let n=this.#e.findIndex(o=>o.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[i]=this.#e.splice(n,1);this.enqueue(i.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var kn=class extends f7.default{#e;#r;#n=0;#m;#u;#A=0;#y;#a;#s;#c;#i=0;#t;#l;#w;#p=1n;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:ip,...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.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#m=e.intervalCap,this.#u=e.interval,this.#s=new e.queueClass,this.#c=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#w=e.throwOnTimeout===!0,this.#l=e.autoStart===!1}get#f(){return this.#r||this.#n<this.#m}get#b(){return this.#i<this.#t}#d(){this.#i--,this.#g(),this.emit("next")}#v(){this.#_(),this.#x(),this.#a=void 0}get#E(){let e=Date.now();if(this.#y===void 0){let t=this.#A-e;if(t<0)this.#n=this.#e?this.#i:0;else return this.#a===void 0&&(this.#a=setTimeout(()=>{this.#v()},t)),!0}return!1}#g(){if(this.#s.size===0)return this.#y&&clearInterval(this.#y),this.#y=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#l){let e=!this.#E;if(this.#f&&this.#b){let t=this.#s.dequeue();return t?(this.emit("active"),t(),e&&this.#x(),!0):!1}}return!1}#x(){this.#r||this.#y!==void 0||(this.#y=setInterval(()=>{this.#_()},this.#u),this.#A=Date.now()+this.#u)}#_(){this.#n===0&&this.#i===0&&this.#y&&(clearInterval(this.#y),this.#y=void 0),this.#n=this.#e?this.#i:0,this.#h()}#h(){for(;this.#g(););}get concurrency(){return this.#t}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.#t=e,this.#h()}async#R(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}setPriority(e,t){this.#s.setPriority(e,t)}async add(e,t={}){return t.id??=(this.#p++).toString(),t={timeout:this.timeout,throwOnTimeout:this.#w,...t},new Promise((n,i)=>{this.#s.enqueue(async()=>{this.#i++,this.#n++;try{t.signal?.throwIfAborted();let o=e({signal:t.signal});t.timeout&&(o=io(Promise.resolve(o),{milliseconds:t.timeout})),t.signal&&(o=Promise.race([o,this.#R(t.signal)]));let s=await o;n(s),this.emit("completed",s)}catch(o){if(o instanceof np&&!t.throwOnTimeout){n();return}i(o),this.emit("error",o)}finally{this.#d()}},t),this.emit("add"),this.#g()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#l?(this.#l=!1,this.#h(),this):this}pause(){this.#l=!0}clear(){this.#s=new this.#c}async onEmpty(){this.#s.size!==0&&await this.#k("empty")}async onSizeLessThan(e){this.#s.size<e||await this.#k("next",()=>this.#s.size<e)}async onIdle(){this.#i===0&&this.#s.size===0||await this.#k("idle")}async#k(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#s.size}sizeBy(e){return this.#s.filter(e).length}get pending(){return this.#i}get isPaused(){return this.#l}};function og(r){let e=[rn.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var p7=60;function sg(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:rn[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:rn[e.type],TTL:e.TTL??e.ttl??p7,data:e.data instanceof Uint8Array?H(e.data):e.data}))}}var pz=4;function m7(r,e={}){let t=new kn({concurrency:e.queryConcurrency??pz});return async(n,i={})=>{let o=new URLSearchParams;o.set("name",n),og(i.types).forEach(a=>{o.append("type",rn[a])}),i.onProgress?.(new G("dns:query",{detail:n}));let s=await t.add(async()=>{let a=await fetch(`${r}?${o}`,{headers:{accept:"application/dns-json"},signal:i?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=sg(await a.json());return i.onProgress?.(new G("dns:response",{detail:c})),c},{signal:i.signal});if(s==null)throw new Error("No DNS response received");return s}}function q_(){return[m7("https://cloudflare-dns.com/dns-query"),m7("https://dns.google/resolve")]}var W_=it(g7(),1);var y7=class{lru;constructor(e){this.lru=(0,W_.default)(e)}get(e,t){let n=!0,i=[];for(let o of t){let s=this.getAnswers(e,o);if(s.length===0){n=!1;break}i.push(...s)}if(n)return sg({answers:i})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,i=this.lru.get(n);if(i!=null){let o=i.filter(s=>s.expires>Date.now()).map(({expires:s,value:a})=>({...a,TTL:Math.round((s-Date.now())/1e3),type:rn[a.type]}));return o.length===0&&this.lru.remove(n),o}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,i=this.lru.get(n)??[];i.push({expires:Date.now()+(t.TTL??p7)*1e3,value:t}),this.lru.set(n,i)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function G_(r){return new y7(r)}var mz=1e3,ag=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=G_(e.cacheSize??mz),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["."]=q_())}async query(e,t={}){let n=og(t.types),i=t.cached!==!1?this.cache.get(e,n):void 0;if(i!=null)return t.onProgress?.(new G("dns:cache",{detail:i})),i;let o=`${e.split(".").pop()}.`,s=(this.resolvers[o]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of s){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,types:n});for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new G("dns:error",{detail:l}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var rn;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(rn||(rn={}));function rl(r={}){return new ag(r)}var gz=["string","number","bigint","symbol"],yz=["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 X_(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(gz.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(wz(r))return"Buffer";let t=xz(r);return t||"Object"}function wz(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function xz(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(yz.includes(e))return e}var _=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};_.uint=new _(0,"uint",!0);_.negint=new _(1,"negint",!0);_.bytes=new _(2,"bytes",!0);_.string=new _(3,"string",!0);_.array=new _(4,"array",!1);_.map=new _(5,"map",!1);_.tag=new _(6,"tag",!1);_.float=new _(7,"float",!0);_.false=new _(7,"false",!0);_.true=new _(7,"true",!0);_.null=new _(7,"null",!0);_.undefined=new _(7,"undefined",!0);_.break=new _(7,"break",!0);var Y=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 gf=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",bz=new TextDecoder,vz=new TextEncoder;function cg(r){return gf&&globalThis.Buffer.isBuffer(r)}function op(r){return r instanceof Uint8Array?cg(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var J_=gf?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):Q_(r,e,t):(r,e,t)=>t-e>64?bz.decode(r.subarray(e,t)):Q_(r,e,t),lg=gf?r=>r.length>64?globalThis.Buffer.from(r):Y_(r):r=>r.length>64?vz.encode(r):Y_(r),qo=r=>Uint8Array.from(r),yf=gf?(r,e,t)=>cg(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),eI=gf?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),op(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let i of r)n+i.length>t.length&&(i=i.subarray(0,t.length-n)),t.set(i,n),n+=i.length;return t},tI=gf?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function rI(r,e){if(cg(r)&&cg(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 Y_(r){let e=[],t=0;for(let n=0;n<r.length;n++){let i=r.charCodeAt(n);i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(i=65536+((i&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128)}return e}function Q_(r,e,t){let n=[];for(;e<t;){let i=r[e],o=null,s=i>239?4:i>223?3:i>191?2:1;if(e+s<=t){let a,c,l,u;switch(s){case 1:i<128&&(o=i);break;case 2:a=r[e+1],(a&192)===128&&(u=(i&31)<<6|a&63,u>127&&(o=u));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(u=(i&15)<<12|(a&63)<<6|c&63,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(u=(i&15)<<18|(a&63)<<12|(c&63)<<6|l&63,u>65535&&u<1114112&&(o=u))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),e+=s}return w7(n)}var Z_=4096;function w7(r){let e=r.length;if(e<=Z_)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=Z_));return t}var Ez=256,sp=class{constructor(e=Ez){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 i=t.length-(this.maxCursor-this.cursor)-1;t.set(e,i)}else{if(t){let i=t.length-(this.maxCursor-this.cursor)-1;i<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=tI(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=yf(n,0,this.cursor)}else t=eI(this.chunks,this.cursor);return e&&this.reset(),t}};var me="CBOR decode error:",Es="CBOR encode error:",ap=[];ap[23]=1;ap[24]=2;ap[25]=3;ap[26]=5;ap[27]=9;function Ss(r,e,t){if(r.length-e<t)throw new Error(`${me} not enough data for type`)}var Ir=[24,256,65536,4294967296,BigInt("18446744073709551616")];function ri(r,e,t){Ss(r,e,1);let n=r[e];if(t.strict===!0&&n<Ir[0])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function ni(r,e,t){Ss(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Ir[1])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function ii(r,e,t){Ss(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Ir[2])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function oi(r,e,t){Ss(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],i=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],o=(BigInt(n)<<BigInt(32))+BigInt(i);if(t.strict===!0&&o<Ir[3])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);if(o<=Number.MAX_SAFE_INTEGER)return Number(o);if(t.allowBigInt===!0)return o;throw new Error(`${me} integers outside of the safe integer range are not supported`)}function nI(r,e,t,n){return new Y(_.uint,ri(r,e+1,n),2)}function iI(r,e,t,n){return new Y(_.uint,ni(r,e+1,n),3)}function oI(r,e,t,n){return new Y(_.uint,ii(r,e+1,n),5)}function sI(r,e,t,n){return new Y(_.uint,oi(r,e+1,n),9)}function Ti(r,e){return Rr(r,0,e.value)}function Rr(r,e,t){if(t<Ir[0]){let n=Number(t);r.push([e|n])}else if(t<Ir[1]){let n=Number(t);r.push([e|24,n])}else if(t<Ir[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Ir[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<Ir[4]){let i=[e|27,0,0,0,0,0,0,0],o=Number(n&BigInt(4294967295)),s=Number(n>>BigInt(32)&BigInt(4294967295));i[8]=o&255,o=o>>8,i[7]=o&255,o=o>>8,i[6]=o&255,o=o>>8,i[5]=o&255,i[4]=s&255,s=s>>8,i[3]=s&255,s=s>>8,i[2]=s&255,s=s>>8,i[1]=s&255,r.push(i)}else throw new Error(`${me} encountered BigInt larger than allowable range`)}}Ti.encodedSize=function(e){return Rr.encodedSize(e.value)};Rr.encodedSize=function(e){return e<Ir[0]?1:e<Ir[1]?2:e<Ir[2]?3:e<Ir[3]?5:9};Ti.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function aI(r,e,t,n){return new Y(_.negint,-1-ri(r,e+1,n),2)}function cI(r,e,t,n){return new Y(_.negint,-1-ni(r,e+1,n),3)}function lI(r,e,t,n){return new Y(_.negint,-1-ii(r,e+1,n),5)}var x7=BigInt(-1),uI=BigInt(1);function fI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i!="bigint"){let o=-1-i;if(o>=Number.MIN_SAFE_INTEGER)return new Y(_.negint,o,9)}if(n.allowBigInt!==!0)throw new Error(`${me} integers outside of the safe integer range are not supported`);return new Y(_.negint,x7-BigInt(i),9)}function ug(r,e){let t=e.value,n=typeof t=="bigint"?t*x7-uI:t*-1-1;Rr(r,e.type.majorEncoded,n)}ug.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*x7-uI:t*-1-1;return n<Ir[0]?1:n<Ir[1]?2:n<Ir[2]?3:n<Ir[3]?5:9};ug.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function cp(r,e,t,n){Ss(r,e,t+n);let i=yf(r,e+t,e+t+n);return new Y(_.bytes,i,t+n)}function dI(r,e,t,n){return cp(r,e,1,t)}function hI(r,e,t,n){return cp(r,e,2,ri(r,e+1,n))}function pI(r,e,t,n){return cp(r,e,3,ni(r,e+1,n))}function mI(r,e,t,n){return cp(r,e,5,ii(r,e+1,n))}function gI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer bytes lengths not supported`);return cp(r,e,9,i)}function fg(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===_.string?lg(r.value):r.value),r.encodedBytes}function wf(r,e){let t=fg(e);Rr(r,e.type.majorEncoded,t.length),r.push(t)}wf.encodedSize=function(e){let t=fg(e);return Rr.encodedSize(t.length)+t.length};wf.compareTokens=function(e,t){return Az(fg(e),fg(t))};function Az(r,e){return r.length<e.length?-1:r.length>e.length?1:rI(r,e)}function lp(r,e,t,n,i){let o=t+n;Ss(r,e,o);let s=new Y(_.string,J_(r,e+t,e+o),o);return i.retainStringBytes===!0&&(s.byteValue=yf(r,e+t,e+o)),s}function yI(r,e,t,n){return lp(r,e,1,t,n)}function wI(r,e,t,n){return lp(r,e,2,ri(r,e+1,n),n)}function xI(r,e,t,n){return lp(r,e,3,ni(r,e+1,n),n)}function bI(r,e,t,n){return lp(r,e,5,ii(r,e+1,n),n)}function vI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer string lengths not supported`);return lp(r,e,9,i,n)}var EI=wf;function xf(r,e,t,n){return new Y(_.array,n,t)}function SI(r,e,t,n){return xf(r,e,1,t)}function AI(r,e,t,n){return xf(r,e,2,ri(r,e+1,n))}function _I(r,e,t,n){return xf(r,e,3,ni(r,e+1,n))}function II(r,e,t,n){return xf(r,e,5,ii(r,e+1,n))}function TI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer array lengths not supported`);return xf(r,e,9,i)}function CI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return xf(r,e,1,1/0)}function dg(r,e){Rr(r,_.array.majorEncoded,e.value)}dg.compareTokens=Ti.compareTokens;dg.encodedSize=function(e){return Rr.encodedSize(e.value)};function bf(r,e,t,n){return new Y(_.map,n,t)}function kI(r,e,t,n){return bf(r,e,1,t)}function PI(r,e,t,n){return bf(r,e,2,ri(r,e+1,n))}function RI(r,e,t,n){return bf(r,e,3,ni(r,e+1,n))}function DI(r,e,t,n){return bf(r,e,5,ii(r,e+1,n))}function NI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer map lengths not supported`);return bf(r,e,9,i)}function OI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return bf(r,e,1,1/0)}function hg(r,e){Rr(r,_.map.majorEncoded,e.value)}hg.compareTokens=Ti.compareTokens;hg.encodedSize=function(e){return Rr.encodedSize(e.value)};function LI(r,e,t,n){return new Y(_.tag,t,1)}function BI(r,e,t,n){return new Y(_.tag,ri(r,e+1,n),2)}function MI(r,e,t,n){return new Y(_.tag,ni(r,e+1,n),3)}function UI(r,e,t,n){return new Y(_.tag,ii(r,e+1,n),5)}function FI(r,e,t,n){return new Y(_.tag,oi(r,e+1,n),9)}function pg(r,e){Rr(r,_.tag.majorEncoded,e.value)}pg.compareTokens=Ti.compareTokens;pg.encodedSize=function(e){return Rr.encodedSize(e.value)};var Pz=20,Rz=21,Dz=22,Nz=23;function $I(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${me} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new Y(_.null,null,1):new Y(_.undefined,void 0,1)}function HI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return new Y(_.break,void 0,1)}function b7(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${me} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${me} Infinity values are not supported`)}return new Y(_.float,r,e)}function VI(r,e,t,n){return b7(v7(r,e+1),3,n)}function zI(r,e,t,n){return b7(E7(r,e+1),5,n)}function KI(r,e,t,n){return b7(GI(r,e+1),9,n)}function mg(r,e,t){let n=e.value;if(n===!1)r.push([_.float.majorEncoded|Pz]);else if(n===!0)r.push([_.float.majorEncoded|Rz]);else if(n===null)r.push([_.float.majorEncoded|Dz]);else if(n===void 0)r.push([_.float.majorEncoded|Nz]);else{let i,o=!1;(!t||t.float64!==!0)&&(jI(n),i=v7(oo,1),n===i||Number.isNaN(n)?(oo[0]=249,r.push(oo.slice(0,3)),o=!0):(WI(n),i=E7(oo,1),n===i&&(oo[0]=250,r.push(oo.slice(0,5)),o=!0))),o||(Oz(n),i=GI(oo,1),oo[0]=251,r.push(oo.slice(0,9)))}}mg.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){jI(n);let i=v7(oo,1);if(n===i||Number.isNaN(n))return 3;if(WI(n),i=E7(oo,1),n===i)return 5}return 9};var qI=new ArrayBuffer(9),Ci=new DataView(qI,1),oo=new Uint8Array(qI,0);function jI(r){if(r===1/0)Ci.setUint16(0,31744,!1);else if(r===-1/0)Ci.setUint16(0,64512,!1);else if(Number.isNaN(r))Ci.setUint16(0,32256,!1);else{Ci.setFloat32(0,r);let e=Ci.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Ci.setUint16(0,31744,!1);else if(t===0)Ci.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let i=t-127;i<-24?Ci.setUint16(0,0):i<-14?Ci.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):Ci.setUint16(0,(e&2147483648)>>16|i+15<<10|n>>13,!1)}}}function v7(r,e){if(r.length-e<2)throw new Error(`${me} 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,i=t&1023,o;return n===0?o=i*2**-24:n!==31?o=(i+1024)*2**(n-25):o=i===0?1/0:NaN,t&32768?-o:o}function WI(r){Ci.setFloat32(0,r,!1)}function E7(r,e){if(r.length-e<4)throw new Error(`${me} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function Oz(r){Ci.setFloat64(0,r,!1)}function GI(r,e){if(r.length-e<8)throw new Error(`${me} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}mg.compareTokens=Ti.compareTokens;function rt(r,e,t){throw new Error(`${me} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function gg(r){return()=>{throw new Error(`${me} ${r}`)}}var ie=[];for(let r=0;r<=23;r++)ie[r]=rt;ie[24]=nI;ie[25]=iI;ie[26]=oI;ie[27]=sI;ie[28]=rt;ie[29]=rt;ie[30]=rt;ie[31]=rt;for(let r=32;r<=55;r++)ie[r]=rt;ie[56]=aI;ie[57]=cI;ie[58]=lI;ie[59]=fI;ie[60]=rt;ie[61]=rt;ie[62]=rt;ie[63]=rt;for(let r=64;r<=87;r++)ie[r]=dI;ie[88]=hI;ie[89]=pI;ie[90]=mI;ie[91]=gI;ie[92]=rt;ie[93]=rt;ie[94]=rt;ie[95]=gg("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)ie[r]=yI;ie[120]=wI;ie[121]=xI;ie[122]=bI;ie[123]=vI;ie[124]=rt;ie[125]=rt;ie[126]=rt;ie[127]=gg("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)ie[r]=SI;ie[152]=AI;ie[153]=_I;ie[154]=II;ie[155]=TI;ie[156]=rt;ie[157]=rt;ie[158]=rt;ie[159]=CI;for(let r=160;r<=183;r++)ie[r]=kI;ie[184]=PI;ie[185]=RI;ie[186]=DI;ie[187]=NI;ie[188]=rt;ie[189]=rt;ie[190]=rt;ie[191]=OI;for(let r=192;r<=215;r++)ie[r]=LI;ie[216]=BI;ie[217]=MI;ie[218]=UI;ie[219]=FI;ie[220]=rt;ie[221]=rt;ie[222]=rt;ie[223]=rt;for(let r=224;r<=243;r++)ie[r]=gg("simple values are not supported");ie[244]=rt;ie[245]=rt;ie[246]=rt;ie[247]=$I;ie[248]=gg("simple values are not supported");ie[249]=VI;ie[250]=zI;ie[251]=KI;ie[252]=rt;ie[253]=rt;ie[254]=rt;ie[255]=HI;var so=[];for(let r=0;r<24;r++)so[r]=new Y(_.uint,r,1);for(let r=-1;r>=-24;r--)so[31-r]=new Y(_.negint,r,1);so[64]=new Y(_.bytes,new Uint8Array(0),1);so[96]=new Y(_.string,"",1);so[128]=new Y(_.array,0,1);so[160]=new Y(_.map,0,1);so[244]=new Y(_.false,!1,1);so[245]=new Y(_.true,!0,1);so[246]=new Y(_.null,null,1);function S7(r){switch(r.type){case _.false:return qo([244]);case _.true:return qo([245]);case _.null:return qo([246]);case _.bytes:return r.value.length?void 0:qo([64]);case _.string:return r.value===""?qo([96]):void 0;case _.array:return r.value===0?qo([128]):void 0;case _.map:return r.value===0?qo([160]):void 0;case _.uint:return r.value<24?qo([Number(r.value)]):void 0;case _.negint:if(r.value>=-24)return qo([31-Number(r.value)])}}var Bz={float64:!1,mapSorter:Uz,quickEncodeToken:S7};function _7(){let r=[];return r[_.uint.major]=Ti,r[_.negint.major]=ug,r[_.bytes.major]=wf,r[_.string.major]=EI,r[_.array.major]=dg,r[_.map.major]=hg,r[_.tag.major]=pg,r[_.float.major]=mg,r}var XI=_7(),A7=new sp,yg=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(`${Es} object contains circular references`);return new r(t,e)}},Sa={null:new Y(_.null,null),undefined:new Y(_.undefined,void 0),true:new Y(_.true,!0),false:new Y(_.false,!1),emptyArray:new Y(_.array,0),emptyMap:new Y(_.map,0)},Aa={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new Y(_.float,r):r>=0?new Y(_.uint,r):new Y(_.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new Y(_.uint,r):new Y(_.negint,r)},Uint8Array(r,e,t,n){return new Y(_.bytes,r)},string(r,e,t,n){return new Y(_.string,r)},boolean(r,e,t,n){return r?Sa.true:Sa.false},null(r,e,t,n){return Sa.null},undefined(r,e,t,n){return Sa.undefined},ArrayBuffer(r,e,t,n){return new Y(_.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new Y(_.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[Sa.emptyArray,new Y(_.break)]:Sa.emptyArray;n=yg.createCheck(n,r);let i=[],o=0;for(let s of r)i[o++]=up(s,t,n);return t.addBreakTokens?[new Y(_.array,r.length),i,new Y(_.break)]:[new Y(_.array,r.length),i]},Object(r,e,t,n){let i=e!=="Object",o=i?r.keys():Object.keys(r),s=i?r.size:o.length;if(!s)return t.addBreakTokens===!0?[Sa.emptyMap,new Y(_.break)]:Sa.emptyMap;n=yg.createCheck(n,r);let a=[],c=0;for(let l of o)a[c++]=[up(l,t,n),up(i?r.get(l):r[l],t,n)];return Mz(a,t),t.addBreakTokens?[new Y(_.map,s),a,new Y(_.break)]:[new Y(_.map,s),a]}};Aa.Map=Aa.Object;Aa.Buffer=Aa.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))Aa[`${r}Array`]=Aa.DataView;function up(r,e={},t){let n=X_(r),i=e&&e.typeEncoders&&e.typeEncoders[n]||Aa[n];if(typeof i=="function"){let s=i(r,n,e,t);if(s!=null)return s}let o=Aa[n];if(!o)throw new Error(`${Es} unsupported type: ${n}`);return o(r,n,e,t)}function Mz(r,e){e.mapSorter&&r.sort(e.mapSorter)}function Uz(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 i=t.type.major,o=XI[i].compareTokens(t,n);return o===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),o}function YI(r,e,t,n){if(Array.isArray(e))for(let i of e)YI(r,i,t,n);else t[e.type.major](r,e,n)}function I7(r,e,t){let n=up(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let i=t.quickEncodeToken(n);if(i)return i;let o=e[n.type.major];if(o.encodedSize){let s=o.encodedSize(n,t),a=new sp(s);if(o(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return op(a.chunks[0])}}return A7.reset(),YI(A7,n,e,t),A7.toBytes(!0)}function As(r,e){return e=Object.assign({},Bz,e),I7(r,XI,e)}var Fz={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},wg=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=so[e];if(t===void 0){let n=ie[e];if(!n)throw new Error(`${me} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let i=e&31;t=n(this.data,this._pos,i,this.options)}return this._pos+=t.encodedLength,t}},fp=Symbol.for("DONE"),xg=Symbol.for("BREAK");function $z(r,e,t){let n=[];for(let i=0;i<r.value;i++){let o=vf(e,t);if(o===xg){if(r.value===1/0)break;throw new Error(`${me} got unexpected break to lengthed array`)}if(o===fp)throw new Error(`${me} found array but not enough entries (got ${i}, expected ${r.value})`);n[i]=o}return n}function Hz(r,e,t){let n=t.useMaps===!0,i=n?void 0:{},o=n?new Map:void 0;for(let s=0;s<r.value;s++){let a=vf(e,t);if(a===xg){if(r.value===1/0)break;throw new Error(`${me} got unexpected break to lengthed map`)}if(a===fp)throw new Error(`${me} found map but not enough entries (got ${s} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${me} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&o.has(a)||!n&&a in i))throw new Error(`${me} found repeat map key "${a}"`);let c=vf(e,t);if(c===fp)throw new Error(`${me} found map but not enough entries (got ${s} [no value], expected ${r.value})`);n?o.set(a,c):i[a]=c}return n?o:i}function vf(r,e){if(r.done())return fp;let t=r.next();if(t.type===_.break)return xg;if(t.type.terminal)return t.value;if(t.type===_.array)return $z(t,r,e);if(t.type===_.map)return Hz(t,r,e);if(t.type===_.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=vf(r,e);return e.tags[t.value](n)}throw new Error(`${me} tag not supported (${t.value})`)}throw new Error("unsupported")}function T7(r,e){if(!(r instanceof Uint8Array))throw new Error(`${me} data to decode must be a Uint8Array`);e=Object.assign({},Fz,e);let t=e.tokenizer||new wg(r,e),n=vf(t,e);if(n===fp)throw new Error(`${me} did not find any content to decode`);if(n===xg)throw new Error(`${me} got unexpected break`);return[n,r.subarray(t.pos())]}function xn(r,e){let[t,n]=T7(r,e);if(n.length>0)throw new Error(`${me} too many terminals, data makes no sense`);return t}var _s="/",QI=new TextEncoder().encode(_s),bg=QI[0],nt=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=O(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]!==bg)throw new Error("Invalid key")}toString(e="utf8"){return H(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(_s))}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=QI),this._buf[0]!==bg){let e=new Uint8Array(this._buf.byteLength+1);e.fill(bg,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===bg;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let i=0;i<t.length;i++){if(n.length<i+1)return!1;let o=t[i],s=n[i];if(o<s)return!0;if(o>s)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(_s).slice(1)}type(){return Vz(this.baseNamespace())}name(){return zz(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(_s)||(e+=_s),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(_s):new r(e.slice(0,-1).join(_s))}child(e){return this.toString()===_s?e:e.toString()===_s?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(),...Kz(e.map(t=>t.namespaces()))])}};function Vz(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function zz(r){let e=r.split(":");return e[e.length-1]}function Kz(r){return[].concat(...r)}function vg({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*qz(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let i=[...r,t],o=W.asCID(n);o!=null?yield[i.join("/"),o]:typeof n=="object"&&(yield*k7(n,i))}else{let t=W.asCID(e);t!=null?yield[r.join("/"),t]:yield*k7(e,r)}}function*k7(r,e){if(r==null||r instanceof Uint8Array)return;let t=W.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,i]of Object.entries(r)){let o=[...e,n];yield*qz(o,i)}}function*jz(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let i=[...r,t];yield i.join("/"),typeof n=="object"&&W.asCID(n)==null&&(yield*P7(n,i))}else yield*P7(e,r)}function*P7(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let i=[...e,t];yield i.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&W.asCID(n)==null&&(yield*jz(i,n))}}function Wz(r,e){let t=r;for(let[n,i]of e.entries()){if(t=t[i],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(s=>`[${JSON.stringify(s)}]`).join("")}`);let o=W.asCID(t);if(o!=null)return{value:o,remaining:e.slice(n+1).join("/")}}return{value:t}}var R7=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:vg(),bytes:vg(),value:vg(),asBlock:vg()})}links(){return k7(this.value,[])}tree(){return P7(this.value,[])}get(e="/"){return Wz(this.value,e.split("/").filter(Boolean))}};function Eg({bytes:r,cid:e,value:t,codec:n}){let i=t!==void 0?t:n?.decode(r);if(i===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new R7({cid:e,bytes:r,value:i})}var eT="/pin/",ZI="/pinned-block/",D7=fn,JI=1;function Sg(r){return r.version===0&&(r=r.toV1()),new nt(`${eT}${r.toString(D7)}`)}var Ag=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=Sg(e);if(await this.datastore.has(n))throw new Error("Already pinned");let i=Math.round(t.depth??1/0);if(i<0)throw new Error("Depth must be greater than or equal to 0");let o=new ln({concurrency:JI});for await(let a of this.#e(e,o,{...t,depth:i}))await this.#r(a,c=>c.pinnedBy.find(l=>pe(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let s={depth:i,metadata:t.metadata??{}};await this.datastore.put(n,As(s),t)}async*#e(e,t,n){if(n.depth===-1)return;let i=await this.getCodec(e.code),o=await this.blockstore.get(e,n),s=Eg({bytes:o,cid:e,codec:i});yield e;for await(let[,a]of s.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#r(e,t,n){let i=new nt(`${ZI}${D7.encode(e.multihash.bytes)}`),o={pinCount:0,pinnedBy:[]};try{o=xn(await this.datastore.get(i,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(o)){if(o.pinCount===0&&await this.datastore.has(i)){await this.datastore.delete(i);return}await this.datastore.put(i,As(o),n),n.onProgress?.(new G("helia:pin:add",e))}}async*rm(e,t={}){let n=Sg(e),i=await this.datastore.get(n,t),o=xn(i);await this.datastore.delete(n,t);let s=new ln({concurrency:JI});for await(let a of this.#e(e,s,{...t,depth:o.depth}))await this.#r(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>pe(l,e.bytes)),!0),{...t,depth:o.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:eT+(e.cid!=null?`${e.cid.toString(fn)}`:"")},e)){let i=W.parse(t.toString().substring(5),fn),o=xn(n);yield{cid:i,...o}}}async isPinned(e,t={}){let n=new nt(`${ZI}${D7.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=Sg(e),i=await this.datastore.get(n,t);return xn(i)}async setMetadata(e,t,n){let i=Sg(e),o=await this.datastore.get(i,n),s=xn(o);s.metadata=t??{},await this.datastore.put(i,As(s),n)}};var _g=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},il=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},Ig=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},Tg=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}};var Gz=5,Cg=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??Gz,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await Cr(...this.routers)}async stop(){await Gr(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new il("No content routers available");let n=new kr({concurrency:this.providerLookupConcurrency});n.addEventListener("error",()=>{});for await(let i of un(n.toGenerator(),...ol(this.routers,"findProviders").map(o=>o.findProviders(e,t))))if(i!=null){if(i.multiaddrs.length===0){if(n.find(i.id)!=null)continue;n.add(async()=>{try{let o=await this.findPeer(i.id,t);return o.multiaddrs.length===0?null:o}catch(o){return this.log.error("could not load multiaddrs for peer %p",i.id,o),null}},{peerId:i.id,signal:t.signal}).catch(o=>{this.log.error("could not load multiaddrs for peer %p",i.id,o)})}yield i}}async provide(e,t={}){if(this.routers.length===0)throw new il("No content routers available");await Promise.all(ol(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(ol(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(ol(this.routers,"put").map(async i=>{await i.put(e,t,n)}))}async get(e,t){return Promise.any(ol(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new il("No peer routers available");let n=this,i=un(...ol(this.routers,"findPeer").map(o=>async function*(){try{yield await o.findPeer(e,t)}catch(s){n.log.error(s)}}()));for await(let o of i)if(o!=null)return o;throw new We("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new il("No peer routers available");for await(let n of un(...ol(this.routers,"getClosestPeers").map(i=>i.getClosestPeers(e,t))))n!=null&&(yield n)}};function ol(r,e){return r.filter(t=>t[e]!=null)}var _a={},Ef=r=>{r.addEventListener("message",e=>{Ef.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Ef.dispatchEvent("message",r,e)})};Ef.addEventListener=(r,e)=>{_a[r]==null&&(_a[r]=[]),_a[r].push(e)};Ef.removeEventListener=(r,e)=>{_a[r]!=null&&(_a[r]=_a[r].filter(t=>t===e))};Ef.dispatchEvent=function(r,e,t){_a[r]!=null&&_a[r].forEach(n=>n(e,t))};var N7=Ef;var O7="lock:worker:request-read",L7="lock:worker:release-read",B7="lock:master:grant-read",M7="lock:worker:request-write",U7="lock:worker:release-write",F7="lock:master:grant-write";var tT=(r=21)=>Math.random().toString().substring(2);var rT=(r,e,t,n,i)=>(o,s)=>{if(s.data.type!==t)return;let a={type:s.data.type,name:s.data.name,identifier:s.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{o.postMessage({type:i,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=u=>{if(u?.data==null)return;let f={type:u.data.type,name:u.data.name,identifier:u.data.identifier};f.type===n&&f.identifier===a.identifier&&(o.removeEventListener("message",l),c())};o.addEventListener("message",l)})}}}))},nT=(r,e,t,n)=>async()=>{let i=tT();return globalThis.postMessage({type:e,identifier:i,name:r}),new Promise(o=>{let s=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===i&&(globalThis.removeEventListener("message",s),o(()=>{globalThis.postMessage({type:n,identifier:i,name:r})}))};globalThis.addEventListener("message",s)})},Xz={singleProcess:!1},iT=r=>{if(r=Object.assign({},Xz,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return N7.addEventListener("message",rT(t,"requestReadLock",O7,L7,B7)),N7.addEventListener("message",rT(t,"requestWriteLock",M7,U7,F7)),t}return{isWorker:!0,readLock:t=>nT(t,O7,B7,L7),writeLock:t=>nT(t,M7,F7,U7)}};var sl={},Ia;async function $7(r,e){let t,n=new Promise(i=>{t=i});return r.add(async()=>io((async()=>{await new Promise(i=>{t(()=>{i()})})})(),{milliseconds:e.timeout})),n}var Yz=(r,e)=>{if(Ia.isWorker===!0)return{readLock:Ia.readLock(r,e),writeLock:Ia.writeLock(r,e)};let t=new kn({concurrency:1}),n;return{async readLock(){if(n!=null)return $7(n,e);n=new kn({concurrency:e.concurrency,autoStart:!1});let i=n,o=$7(n,e);return t.add(async()=>{i.start(),await i.onIdle().then(()=>{n===i&&(n=null)})}),o},async writeLock(){return n=null,$7(t,e)}}},Qz={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function al(r){let e=Object.assign({},Qz,r);return Ia==null&&(Ia=iT(e),Ia.isWorker!==!0&&(Ia.addEventListener("requestReadLock",t=>{sl[t.data.name]!=null&&sl[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Ia.addEventListener("requestWriteLock",async t=>{sl[t.data.name]!=null&&sl[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),sl[e.name]==null&&(sl[e.name]=Yz(e.name,e)),sl[e.name]}var kg=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=al({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await Cr(this.child),this.started=!0}async stop(){await Gr(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let i=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{i()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let i=this;yield*this.child.deleteMany(async function*(){for await(let o of e){if(await i.pins.isPinned(o))throw new Error("CID was pinned");yield o}}(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var H7=new nt("/version"),oT=1;async function sT(r){if(!await r.has(H7)){await r.put(H7,O(`${oT}`));return}let e=await r.get(H7),t=H(e);if(parseInt(t,10)!==oT)throw new Error("Unknown datastore version, a datastore migration may be required")}var Ca={};Ft(Ca,{code:()=>Pn,decode:()=>Ta,decodeOptions:()=>nK,encode:()=>Sf,encodeOptions:()=>tK,name:()=>iK,toByteView:()=>cT});var aT=42;function cT(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function Zz(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=W.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new Y(_.tag,aT),new Y(_.bytes,t)]}function Jz(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function eK(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 V7={float64:!0,typeEncoders:{Object:Zz,undefined:Jz,number:eK}},tK={...V7,typeEncoders:{...V7.typeEncoders}};function rK(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return W.decode(r.subarray(1))}var Pg={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Pg.tags[aT]=rK;var nK={...Pg,tags:Pg.tags.slice()},iK="dag-cbor",Pn=113,Sf=r=>As(r,V7),Ta=r=>xn(cT(r),Pg);var cl={};Ft(cl,{code:()=>co,decode:()=>_f,encode:()=>Dg,format:()=>mK,name:()=>pK,parse:()=>yK,stringify:()=>mK});var z7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===_.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===_.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[_.uint.major](e,t){this.prefix(e);let n=String(t.value),i=[];for(let o=0;o<n.length;o++)i[o]=n.charCodeAt(o);e.push(i)}[_.negint.major](e,t){this[_.uint.major](e,t)}[_.bytes.major](e,t){throw new Error(`${Es} unsupported type: Uint8Array`)}[_.string.major](e,t){this.prefix(e);let n=lg(JSON.stringify(t.value));e.push(n.length>32?op(n):n)}[_.array.major](e,t){this.prefix(e),this.inRecursive.push({type:_.array,elements:0}),e.push([91])}[_.map.major](e,t){this.prefix(e),this.inRecursive.push({type:_.map,elements:0}),e.push([123])}[_.tag.major](e,t){}[_.float.major](e,t){if(t.type.name==="break"){let s=this.inRecursive.pop();if(s){if(s.type===_.array)e.push([93]);else if(s.type===_.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${Es} 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),i=[],o=!1;for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s),!o&&(i[s]===46||i[s]===101||i[s]===69)&&(o=!0);o||(i.push(46),i.push(48)),e.push(i)}};function oK(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${Es} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==_.string||n.type!==_.string)throw new Error(`${Es} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${Es} unexpected duplicate map keys, this is not supported`)}var sK={addBreakTokens:!0,mapSorter:oK};function dp(r,e){return e=Object.assign({},sK,e),I7(r,new z7,e)}var Af=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(`${me} 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(`${me} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,i=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 Y(_.uint,0,this._pos-e);if(i([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${me} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${me} unexpected token at position ${this._pos}`);n=!0,this._pos++,i([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++,i([48,49,50,51,52,53,54,55,56,57]));let o=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),s=parseFloat(o);return n?new Y(_.float,s,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(s)?new Y(s>=0?_.uint:_.negint,s,this._pos-e):new Y(s>=0?_.uint:_.negint,BigInt(o),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${me} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let o=this._pos,s=0;o<this.data.length&&s<65536;o++,s++){let a=this.data[o];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,o));return this._pos=o+1,new Y(_.string,c,s)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${me} unexpected end of unicode escape sequence at position ${this._pos}`);let o=0;for(let s=0;s<4;s++){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(`${me} unexpected unicode escape character at position ${this._pos}`);o=o*16+a,this._pos++}return o},i=()=>{let o=this.ch(),s=null,a=o>239?4:o>223?3:o>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${me} unexpected unicode sequence at position ${this._pos}`);let c,l,u,f;switch(a){case 1:o<128&&(s=o);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(f=(o&31)<<6|c&63,f>127&&(s=f));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(f=(o&15)<<12|(c&63)<<6|l&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],u=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(u&192)===128&&(f=(o&15)<<18|(c&63)<<12|(l&63)<<6|u&63,f>65535&&f<1114112&&(s=f))}s===null?(s=65533,a=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|s&1023),t.push(s),this._pos+=a};for(;!this.done();){let o=this.ch(),s;switch(o){case 92:if(this._pos++,this.done())throw new Error(`${me} unexpected string termination at position ${this._pos}`);switch(s=this.ch(),this._pos++,s){case 34:case 39:case 92:case 47:t.push(s);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(`${me} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new Y(_.string,w7(t),this._pos-e);default:if(o<32)throw new Error(`${me} invalid control character at position ${this._pos}`);o<128?(t.push(o),this._pos++):i()}}throw new Error(`${me} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new Y(_.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new Y(_.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new Y(_.null,null,4);case 102:return this.expect([102,97,108,115,101]),new Y(_.false,!1,5);case 116:return this.expect([116,114,117,101]),new Y(_.true,!0,4);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.parseNumber();default:throw new Error(`${me} 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 Y(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${me} 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 Y(_.break,void 0,1)):(this.modeStack.push("array-value"),this.skipWhitespace(),this.parseValue());case"obj-key":if(this.ch()===125)return this.modeStack.pop(),this._pos++,this.skipWhitespace(),new Y(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${me} 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 Y(_.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${me} 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(`${me} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function K7(r,e){return e=Object.assign({tokenizer:new Af(r,e)},e),xn(r,e)}function cK(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function lK(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=W.asCID(r);if(!e)return null;let t=e.toString();return[new Y(_.map,1/0,1),new Y(_.string,"/",1),new Y(_.string,t,t.length),new Y(_.break,void 0,1)]}function Rg(r){let e=ar.encode(r).slice(1);return[new Y(_.map,1/0,1),new Y(_.string,"/",1),new Y(_.map,1/0,1),new Y(_.string,"bytes",5),new Y(_.string,e,e.length),new Y(_.break,void 0,1),new Y(_.break,void 0,1)]}function ao(r){return Rg(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function uK(r){return Rg(new Uint8Array(r))}function fK(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function dK(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 hK={typeEncoders:{Object:lK,Buffer:Rg,Uint8Array:Rg,Int8Array:ao,Uint16Array:ao,Int16Array:ao,Uint32Array:ao,Int32Array:ao,Float32Array:ao,Float64Array:ao,Uint8ClampedArray:ao,BigInt64Array:ao,BigUint64Array:ao,DataView:ao,ArrayBuffer:uK,undefined:fK,number:dK}},q7=class extends Af{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===_.map){let t=this._next();if(t.type===_.string&&t.value==="/"){let n=this._next();if(n.type===_.string){if(this._next().type!==_.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new Y(_.tag,42,0)}if(n.type===_.map){let i=this._next();if(i.type===_.string&&i.value==="bytes"){let o=this._next();if(o.type===_.string){for(let a=0;a<2;a++)if(this._next().type!==_.break)throw new Error("Invalid encoded Bytes form");let s=ar.decode(`m${o.value}`);return new Y(_.bytes,s,o.value.length)}this.tokenBuffer.push(o)}this.tokenBuffer.push(i)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},j7={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};j7.tags[42]=W.parse;var pK="dag-json",co=297,Dg=r=>dp(r,hK),_f=r=>{let e=cK(r),t=Object.assign(j7,{tokenizer:new q7(e,j7)});return K7(e,t)},mK=r=>gK.decode(Dg(r));var gK=new TextDecoder,yK=r=>_f(wK.encode(r)),wK=new TextEncoder;var nr={};Ft(nr,{code:()=>ct,createLink:()=>wT,createNode:()=>yT,decode:()=>rr,encode:()=>Qe,name:()=>kK,prepare:()=>qt,validate:()=>X7});var xK=new TextDecoder;function W7(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 i=r[e++];if(t+=n<28?(i&127)<<n:(i&127)*2**n,i<128)break}return[t,e]}function Ng(r,e){let t;[t,e]=W7(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 lT(r,e){let t;return[t,e]=W7(r,e),[t&7,t>>3,e]}function bK(r){let e={},t=r.length,n=0;for(;n<t;){let i,o;if([i,o,n]=lT(r,n),o===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(i!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) 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]=Ng(r,n)}else if(o===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(i!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let s;[s,n]=Ng(r,n),e.Name=xK.decode(s)}else if(o===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(i!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) for Tsize`);[e.Tsize,n]=W7(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${o}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function uT(r){let e=r.length,t=0,n,i=!1,o;for(;t<e;){let a,c;if([a,c,t]=lT(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(o)throw new Error("protobuf: (PBNode) duplicate Data section");[o,t]=Ng(r,t),n&&(i=!0)}else if(c===2){if(i)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Ng(r,t),n.push(bK(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 s={};return o&&(s.Data=o),s.Links=n||[],s}var dT=new TextEncoder,fT=2**32,vK=2**31;function EK(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=hp(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=dT.encode(r.Name);t-=n.length,e.set(n,t),t=hp(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=hp(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function hT(r){let e=AK(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=hp(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let i=r.Links.length-1;i>=0;i--){let o=EK(r.Links[i],t.subarray(0,n));n-=o,n=hp(t,n,o)-1,t[n]=18}return t}function SK(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+If(t)}if(typeof r.Name=="string"){let t=dT.encode(r.Name).length;e+=1+t+If(t)}return typeof r.Tsize=="number"&&(e+=1+If(r.Tsize)),e}function AK(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+If(t)}if(r.Links)for(let t of r.Links){let n=SK(t);e+=1+n+If(n)}return e}function hp(r,e,t){e-=If(t);let n=e;for(;t>=vK;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function If(r){return r%2===0&&r++,Math.floor((_K(r)+6)/7)}function _K(r){let e=0;return r>=fT&&(r=Math.floor(r/fT),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+IK[r]}var IK=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var TK=["Data","Links"],CK=["Hash","Name","Tsize"],G7=new TextEncoder;function mT(r,e){if(r===e)return 0;let t=r.Name?G7.encode(r.Name):[],n=e.Name?G7.encode(e.Name):[],i=t.length,o=n.length;for(let s=0,a=Math.min(i,o);s<a;++s)if(t[s]!==n[s]){i=t[s],o=n[s];break}return i<o?-1:o<i?1:0}function pT(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function gT(r){if(typeof r.asCID=="object"){let t=W.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=W.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=W.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=W.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function qt(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=G7.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(gT),e.Links.sort(mT);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function X7(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!pT(r,TK))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!pT(t,CK))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&mT(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function yT(r,e=[]){return qt({Data:r,Links:e})}function wT(r,e,t){return gT({Hash:t,Name:r,Tsize:e})}function xT(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var kK="dag-pb",ct=112;function Qe(r){X7(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),hT(e)}function rr(r){let e=xT(r),t=uT(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(i=>{let o={};try{o.Hash=W.decode(i.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return i.Name!==void 0&&(o.Name=i.Name),i.Tsize!==void 0&&(o.Tsize=i.Tsize),o})),n}function Tf(r){return r?.then!=null}function bT(r=[],e){let t={[ct]:nr,[vt]:_n,[Pn]:Ca,[co]:cl,[Bo]:Gu};return r.forEach(n=>{t[n.code]=n}),async n=>{let i=t[n];if(i==null&&e!=null){let o=e(n);Tf(o)?i=await o:i=o,t[i.code]=i}if(i!=null)return i;throw new Tg(`Could not load codec for ${n}`)}}function vT(r=[],e){let t={[Fe.code]:Fe,[S0.code]:S0,[cr.code]:cr};return r.forEach(n=>{t[n.code]=n}),async n=>{let i=t[n];if(i==null&&e!=null){let o=e(n);Tf(o)?i=await o:i=o,t[i.code]=i}if(i!=null)return i;throw new Ig(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var ki=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Is=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:i}of e)await this.put(n,i,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 Og=0,Lg=class extends Is{child;constructor(e){super(),this.child=e}put(e,t){return e.multihash.code===Og||this.child==null?e:this.child.put(e,t)}get(e){if(e.multihash.code===Og)return e.multihash.digest;if(this.child==null)throw new ki;return this.child.get(e)}has(e){return e.multihash.code===Og?!0:this.child==null?!1:this.child.has(e)}delete(e){if(e.code!==Og&&this.child!=null)return this.child.delete(e)}getAll(e){return this.child!=null?this.child.getAll(e):[]}};function PK(r){return r[Symbol.asyncIterator]!=null}function RK(r,e){let t=0;if(PK(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();let s=e(i,t++);if(typeof s.then=="function")return async function*(){await s&&(yield i);for await(let c of n)await e(c,t++)&&(yield c)}();let a=e;return function*(){s===!0&&(yield i);for(let c of n)a(c,t++)&&(yield c)}()}var si=RK;function DK(r){return r[Symbol.asyncIterator]!=null}function ET(r){return r?.then!=null}function NK(r,e){let t=0;if(DK(r))return async function*(){for await(let c of r){let l=e(c,t++);ET(l)&&await l,yield c}}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();if(typeof e(i,t++)?.then=="function")return async function*(){yield i;for await(let c of n){let l=e(c,t++);ET(l)&&await l,yield c}}();let a=e;return function*(){yield i;for(let c of n)a(c,t++),yield c}()}var ll=NK;var Bg=class{child;getHasher;log;logger;components;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Lg(e.blockstore),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new G("blocks:put:duplicate",e)),e):(n.onProgress?.(new G("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async i=>i.announce?.(e,t,n))),n.onProgress?.(new G("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=si(e,async({cid:o})=>{let s=await this.child.has(o,t);return s&&t.onProgress?.(new G("blocks:put-many:duplicate",o)),!s}),i=ll(n,async({cid:o,block:s})=>{t.onProgress?.(new G("blocks:put-many:providers:notify",o)),await Promise.all(this.components.blockBrokers.map(async a=>a.announce?.(o,s,t)))});t.onProgress?.(new G("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(i,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e,t)){let n=await this.getHasher(e.multihash.code);t.onProgress?.(new G("blocks:get:providers:get",e));let i=await ST(e,this.components.blockBrokers,n,{...t,log:this.log});return t.onProgress?.(new G("blocks:get:blockstore:put",e)),await this.child.put(e,i,t),t.onProgress?.(new G("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,i,t))),i}return t.onProgress?.(new G("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new G("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(ll(e,async n=>{if(t.offline!==!0&&!await this.child.has(n,t)){let i=await this.getHasher(n.multihash.code);t.onProgress?.(new G("blocks:get-many:providers:get",n));let o=await ST(n,this.components.blockBrokers,i,{...t,log:this.log});t.onProgress?.(new G("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new G("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 G("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new G("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 G("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},Mg=class extends Bg{started;constructor(e){super(e),this.started=!1}isStarted(){return this.started}async start(){await Cr(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await Gr(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(i=>i.createSession==null?i:i.createSession(t));return new Y7({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}},Y7=class extends Bg{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let i=Ne([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:i})}finally{i.clear()}}async*putMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async get(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{return await super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=Ne([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function OK(r){return typeof r.retrieve=="function"}var LK=(r,e)=>{if(e==null)throw new U(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,i=e.digest(t);if(Tf(i)?n=await i:n=i,!pe(n.digest,r.multihash.digest))throw new aa("Hash of downloaded block did not match multihash from passed CID")}};async function ST(r,e,t,n){let i=LK(r,t),o=new AbortController,s=Ne([o.signal,n.signal]);o.signal;let a=[];for(let c of e)OK(c)&&a.push(c);try{return await Promise.any(a.map(async c=>{try{let l=!1,u=await c.retrieve(r,{...n,signal:s,validateFn:async f=>{await i(f),l=!0}});return l||await i(u),u}catch(l){throw n.log.error("could not retrieve verified block for %c",r,l),l}}))}finally{o.abort(),s.clear()}}var ul=class extends Me{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Tn(this.maxProviders)}async retrieve(e,t={}){let n=ar.encode(e.multihash.bytes),i=this.requests.get(n);if(i!=null)return this.log("join existing request for %c",e),i;let o=ye();if(this.requests.set(n,o.promise),this.providers.length===0){let l=!1;this.initialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.initialPeerSearchComplete,l&&this.log("found initial session peers for %c",e)}let s=!1,a=new ln({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",l=>{this.log.error("error querying provider %o, evicting from session",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),a.addEventListener("success",l=>{s=!0,o.resolve(l.detail.result)}),a.addEventListener("idle",()=>{s||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let u=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(u)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),o.resolve(await this.retrieve(e,t))}).catch(l=>{this.log.error("could not find new providers for %c",e,l),o.reject(l)})});let c=l=>{a.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(u=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,u)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async l=>a.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,l)});try{return await o.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let i=ye(),o=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);for await(let s of this.findNewProviders(e,n)){if(o===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(s)&&(this.log("found %d/%d new providers",o,this.maxProviders),this.providers.push(s),this.safeDispatchEvent("provider",{detail:s}),o++,o===t&&(this.log("session is ready"),i.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",o);break}}if(this.log("found %d/%d new session peers",o,this.maxProviders),o<t)throw new _g(`Found ${o} of ${t} ${this.name} providers for ${e}`)}).catch(s=>{this.log.error("error searching routing for potential session peers for %c",e,s.errors??s),i.reject(s)}),i.promise}};var Ug=class{blockstore;datastore;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??Ea(),this.log=this.logger.forComponent("helia"),this.getHasher=vT(e.hashers,e.loadHasher),this.getCodec=bT(e.codecs,e.loadCodec),this.dns=e.dns??rl(),this.metrics=e.metrics;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new Cg(t,{routers:(e.routers??[]).flatMap(i=>{let o=[i];return i[Do]!=null&&o.push(i[Do]),i[No]!=null&&o.push(i[No]),o}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new Mg(t);this.pins=new Ag(e.datastore,n,this.getCodec),this.blockstore=new kg(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(i=>i(t))}async start(){await sT(this.datastore),await Cr(this.blockstore,this.datastore,this.routing)}async stop(){await Gr(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,i=this.blockstore.unwrap();this.log("gc start"),await Sr(i.deleteMany(async function*(){for await(let{cid:o}of i.getAll())try{if(await n.pins.isPinned(o,e))continue;yield o,e.onProgress?.(new G("helia:gc:deleted",o))}catch(s){n.log.error("Error during gc",s),e.onProgress?.(new G("helia:gc:error",s))}}()))}finally{t()}this.log("gc finished")}};var Q7=class extends ul{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let i=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,i.has?"has":"does not have",e),i.has&&i.block!=null)return i.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toMultihash().bytes}equals(e,t){return e.equals(t)}};function AT(r,e){return new Q7(r,e)}var Fg=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};var Z7=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 $g(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Z7({name:e,metrics:t}):n=new Map,n}function UK(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=Zt(r);e.push(t),r=r.slice(Oe(t))}return e}var _T=UK;var Hg=class extends Me{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=tp({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=$g({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(i=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,i)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(i=>{this.log.error("error processing newly connected bitswap peer %p",n.detail,i)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=H(e.multihash.bytes,"base64"),i=this.wants.get(n);i==null&&(i={cid:e,priority:t.priority??1,wantType:t.wantType??er.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,i)),i.wantType===er.WantHave&&t.wantType===er.WantBlock&&(i.wantType=er.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===er.WantBlock?(await Er(this,"block",t?.signal,{filter:a=>pe(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await Er(this,"presence",t?.signal,{filter:s=>pe(e.multihash.digest,s.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),i.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=ye(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,i=new vs;for(let[o,s]of this.wants.entries())t.has(o)||s.cancel||(n.add(o),i.addWantlistEntry(s.cid,{cid:s.cid.bytes,priority:s.priority,wantType:s.wantType,cancel:s.cancel,sendDontHave:s.sendDontHave}));if(i.wantlist.size!==0)try{await this.network.sendMessage(e,i);for(let o of n)t.add(o)}catch(o){this.log.error("error sending full wantlist to new peer",o)}})).catch(e=>{this.log.error("error sending messages",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=H(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let i=new vs;return i.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:er.WantHave,priority:1}),await this.network.sendMessage(t,i),(await Er(this,"presence",n.signal,{filter:s=>t.equals(s.detail.sender)&&pe(e.multihash.digest,s.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:er.WantBlock})}async wantSessionBlock(e,t,n={}){let i=new vs;return i.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:er.WantBlock,priority:1}),await this.network.sendMessage(t,i),(await Er(this,"presence",n.signal,{filter:s=>t.equals(s.detail.sender)&&pe(e.multihash.digest,s.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=H(e.multihash.bytes,"base64"),i=this.wants.get(n);i!=null&&(i.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let i of t.blocks){if(i.prefix==null||i.data==null)continue;let o=_T(i.prefix),s=o[0],a=o[1],c=o[2],l=c===Fe.code?Fe:await this.hashLoader?.getHasher(c);if(l==null){this.log.error("unknown hash algorithm",c);continue}let u=l.digest(i.data);u.then!=null&&(u=await u);let f=W.create(s===0?0:1,a,u);this.log("received block from %p for %c",e,f),this.safeDispatchEvent("block",{detail:{sender:e,cid:f,block:i.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:f,has:!0,block:i.data}});let h=H(f.multihash.bytes,"base64"),d=this.wants.get(h);d!=null&&(d.cancel=!0,n=!0)}for(let{cid:i,type:o}of t.blockPresences){let s=W.decode(i);this.log("received %s from %p for %c",o,e,s),this.safeDispatchEvent("presence",{detail:{sender:e,cid:s,has:o===Si.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new vs(!0);for(let[i,o]of this.wants.entries())o.cancel||(t.add(i),n.addWantlistEntry(o.cid,{cid:o.cid.bytes,priority:1,wantType:er.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(i){this.log.error("error sending full wantlist to new peer %p",e,i)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var Vg=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 Fg(e),this.network=new P0(e,t),this.peerWantLists=new eg({...e,network:this.network},t),this.wantList=new Hg({...e,network:this.network},t)}createSession(e={}){return AT({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,i=Ne([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:i}).catch(o=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,o)});try{return(await this.wantList.wantBlock(e,{...t,signal:i})).block}finally{n.abort(),i.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var IT=(r,e={})=>new Vg(r,e);var J7=class{bitswap;started;constructor(e,t={}){let{getHasher:n}=e;this.bitswap=IT(e,{hashLoader:{getHasher:async i=>n(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}async announce(e,t,n){await this.bitswap.notify(e,t,n)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{announce:async(n,i,o)=>{await this.bitswap.notify(n,i,o)},retrieve:async(n,i)=>t.retrieve(n,i)}}};function pp(r={}){return e=>new J7(e,r)}var zg=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,i){return this.readAtomically(()=>{let o=0,s=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*i)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(o*=e,o+=u,o>l||(s+=1,t!==void 0&&s>t))return}if(s!==0)return!n&&c&&s>1?void 0:o})}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 i=n*2;if(n<t.length-3){let s=this.readSeparator(":",n,()=>this.readIPv4Addr());if(s!==void 0)return t[i]=s[0],t[i+1]=s[1],t[i+2]=s[2],t[i+3]=s[3],[i+4,!0]}let o=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(o===void 0)return[i,!1];t[i]=o>>8,t[i+1]=o&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,i]=e(t);if(n===16)return t;if(i||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),s=16-(n+2),[a]=e(o.subarray(0,s));return t.set(o.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var TT=45,FK=15,Cf=new zg;function Kg(r){if(!(r.length>FK))return Cf.new(r).parseWith(()=>Cf.readIPv4Addr())}function qg(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>TT))return Cf.new(r).parseWith(()=>Cf.readIPv6Addr())}function fl(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>TT)return;let t=Cf.new(r).parseWith(()=>Cf.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function lo(r){return!!Kg(r)}function kf(r){return!!qg(r)}function jg(r){return!!fl(r)}var kT=it(CT(),1),$K=["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"],HK=$K.map(r=>new kT.Netmask(r));function ex(r){for(let e of HK)if(e.contains(r))return!0;return!1}function VK(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function zK(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),i=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return ex(i)}function KK(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function qK(r){let e=r.split(":"),t=e[e.length-1];return ex(t)}function jK(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function bn(r){return lo(r)?ex(r):VK(r)?zK(r):KK(r)?qK(r):kf(r)?jK(r):void 0}var WK=r=>r.toString().split("/").slice(1),Pf=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),$e=r=>({match:e=>Pf(t=>t===r).match(e),pattern:r}),dl=()=>({match:r=>Pf(e=>typeof e=="string").match(r),pattern:"{string}"}),gp=()=>({match:r=>Pf(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),mt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Le.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),yp=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Dc.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),lt=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),nn=(...r)=>({match:e=>{let t;for(let n of r){let i=n.match(e);i!==!1&&(t==null||i.length<t.length)&&(t=i)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),Ge=(...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 gt(...r){function e(i){let o=WK(i);for(let s of r){let a=s.match(o);if(a===!1)return!1;o=a}return o}function t(i){return e(i)!==!1}function n(i){let o=e(i);return o===!1?!1:o.length===0}return{matchers:r,matches:t,exactMatch:n}}var GK=mt(),PT=gt(GK),Gg=Ge($e("dns4"),dl()),Xg=Ge($e("dns6"),dl()),Yg=Ge($e("dnsaddr"),dl()),rx=Ge($e("dns"),dl()),kpe=gt(Gg,lt(mt())),Ppe=gt(Xg,lt(mt())),Rpe=gt(Yg,lt(mt())),wp=gt(nn(rx,Yg,Gg,Xg),lt(mt())),RT=Ge($e("ip4"),Pf(lo)),DT=Ge($e("ip6"),Pf(kf)),nx=nn(RT,DT),Ts=nn(nx,rx,Gg,Xg,Yg),NT=gt(nn(nx,Ge(nn(rx,Yg,Gg,Xg),lt(mt())))),ix=gt(RT),ox=gt(DT),OT=gt(nx),sx=Ge(Ts,$e("tcp"),gp()),xp=Ge(Ts,$e("udp"),gp()),hl=gt(Ge(sx,lt(mt()))),Dpe=gt(xp),ax=Ge(xp,$e("quic"),lt(mt())),Qg=Ge(xp,$e("quic-v1"),lt(mt())),XK=nn(ax,Qg),Npe=gt(ax),LT=gt(Qg),tx=nn(Ts,sx,xp,ax,Qg),BT=nn(Ge(tx,$e("ws"),lt(mt()))),Cs=gt(BT),MT=nn(Ge(tx,$e("wss"),lt(mt())),Ge(tx,$e("tls"),lt(Ge($e("sni"),dl())),$e("ws"),lt(mt()))),pl=gt(MT),UT=Ge(xp,$e("webrtc-direct"),lt(yp()),lt(yp()),lt(mt())),bp=gt(UT),FT=Ge(Qg,$e("webtransport"),lt(yp()),lt(yp()),lt(mt())),cx=gt(FT),Wg=nn(BT,MT,Ge(sx,lt(mt())),Ge(XK,lt(mt())),Ge(Ts,lt(mt())),UT,FT,mt()),Zg=gt(Wg),YK=Ge(Wg,$e("p2p-circuit"),mt()),Rn=gt(YK),QK=nn(Ge(Wg,$e("p2p-circuit"),$e("webrtc"),lt(mt())),Ge(Wg,$e("webrtc"),lt(mt())),Ge($e("webrtc"),lt(mt()))),vp=gt(QK),ZK=nn(Ge(Ts,$e("tcp"),gp(),$e("http"),lt(mt())),Ge(Ts,$e("http"),lt(mt()))),$T=gt(ZK),JK=nn(Ge(Ts,$e("tcp"),nn(Ge($e("443"),$e("http")),Ge(gp(),$e("https"))),lt(mt())),Ge(Ts,$e("tls"),$e("http"),lt(mt())),Ge(Ts,$e("https"),lt(mt()))),HT=gt(JK),eq=nn(Ge($e("memory"),dl(),lt(mt()))),Ope=gt(eq);function VT(r,e,t){let n=0;for(let i of r)if(!(n<e)){if(n>t)break;if(i!==255)return!1;n++}return!0}function zT(r,e,t,n){let i=0;for(let o of r)if(!(i<t)){if(i>n)break;if(o!==e[i])return!1;i++}return!0}function lx(r){switch(r.length){case ml:return r.join(".");case gl:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function KT(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let i=t+1;i<r.length;i++)if(r[i]!=0)return-1;break}return e}function qT(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var ml=4,gl=16,$pe=parseInt("0xFFFF",16),tq=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Ep(r,e){e.length===gl&&r.length===ml&&VT(e,0,11)&&(e=e.slice(12)),e.length===ml&&r.length===gl&&zT(r,tq,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=r[i]&e[i];return n}function jT(r,e){if(typeof e=="string"&&(e=fl(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function ux(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=ml,i=Kg(e);if(i==null&&(n=gl,i=qg(e),i==null))throw new Error("Failed to parse given CIDR: "+r);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n*8)throw new Error("Failed to parse given CIDR: "+r);let s=fx(o,8*n);return{network:Ep(i,s),mask:s}}function fx(r,e){if(e!==8*ml&&e!==8*gl)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let i=0;i<t;i++){if(r>=8){n[i]=255,r-=8;continue}n[i]=255-(255>>r),r=0}return n}var yl=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=ux(e));else{let n=fl(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let i=parseInt(t,10);if(Number.isNaN(i)||String(i).length!==t.length||i<0||i>n.length*8){let o=fl(t);if(o==null)throw new Error("Failed to parse mask");this.mask=o}else this.mask=fx(i,8*n.length);this.network=Ep(n,this.mask)}}contains(e){return jT({network:this.network,mask:this.mask},e)}toString(){let e=KT(this.mask),t=e!==-1?String(e):qT(this.mask);return lx(this.network)+"/"+t}};function WT(r,e){return new yl(r).contains(e)}var GT=lo,rq=kf,dx=function(r){let e=0;if(r=r.toString().trim(),GT(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(rq(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let o=GT(t[n]),s;o&&(s=dx(t[n]),t[n]=H(s.slice(0,2),"base16")),s!=null&&++n<8&&t.splice(n,0,H(s.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 o=[n,1];for(n=9-t.length;n>0;n--)o.push("0");t.splice.apply(t,o)}let i=new Uint8Array(e+16);for(n=0;n<t.length;n++){let o=parseInt(t[n],16);i[e++]=o>>8&255,i[e++]=o&255}return i}throw new Error("invalid ip address")},XT=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let i=[];for(let o=0;o<t;o++)i.push(r[e+o]);return i.join(".")}if(t===16){let i=[];for(let o=0;o<t;o+=2)i.push(n.getUint16(e+o).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Rf={},hx={},iq=[[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"],[481,-1,"http-path"],[777,-1,"memory"]];iq.forEach(r=>{let e=oq(...r);hx[e.code]=e,Rf[e.name]=e});function oq(r,e,t,n,i){return{code:r,size:e,name:t,resolvable:!!n,path:!!i}}function Ie(r){if(typeof r=="number"){if(hx[r]!=null)return hx[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Rf[r]!=null)return Rf[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var sq=Ie("ip4"),aq=Ie("ip6"),cq=Ie("ipcidr");function yx(r,e){switch(Ie(r).code){case 4:case 41:return uq(e);case 42:return gx(e);case 43:return H(e,"base10");case 6:case 273:case 33:case 132:return ZT(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return gx(e);case 421:return pq(e);case 444:return QT(e);case 445:return QT(e);case 466:return hq(e);case 481:return globalThis.encodeURIComponent(gx(e));default:return H(e,"base16")}}function wx(r,e){switch(Ie(r).code){case 4:return YT(e);case 41:return YT(e);case 42:return mx(e);case 43:return O(e,"base10");case 6:case 273:case 33:case 132:return bx(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return mx(e);case 421:return fq(e);case 444:return mq(e);case 445:return gq(e);case 466:return dq(e);case 481:return mx(globalThis.decodeURIComponent(e));default:return O(e,"base16")}}function xx(r){let e,t;if(r.stringTuples().forEach(([n,i])=>{(n===sq.code||n===aq.code)&&(t=i),n===cq.code&&(e=i)}),e==null||t==null)throw new Error("Invalid multiaddr");return new yl(t,e)}var px=Object.values(Lc).map(r=>r.decoder),lq=function(){let r=px[0].or(px[1]);return px.slice(2).forEach(e=>r=r.or(e)),r}();function YT(r){if(!jg(r))throw new Error("invalid ip address");return dx(r)}function uq(r){let e=XT(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!jg(e))throw new Error("invalid ip address");return e}function bx(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function ZT(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function mx(r){let e=O(r),t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function gx(r){let e=Zt(r);if(r=r.slice(Oe(e)),r.length!==e)throw new Error("inconsistent lengths");return H(r)}function fq(r){let e;r[0]==="Q"||r[0]==="1"?e=Ue(Le.decode(`z${r}`)).bytes:e=W.parse(r).multihash.bytes;let t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function dq(r){let e=lq.decode(r),t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function hq(r){let e=Zt(r),t=r.slice(Oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+H(t,"base64url")}function pq(r){let e=Zt(r),t=r.slice(Oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return H(t,"base58btc")}function mq(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=Jt.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 i=bx(n);return Ve([t,i],t.length+i.length)}function gq(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=Jt.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 i=bx(n);return Ve([t,i],t.length+i.length)}function QT(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=H(e,"base32"),i=ZT(t);return`${n}:${i}`}function JT(r){r=vx(r);let e=[],t=[],n=null,i=r.split("/").slice(1);if(i.length===1&&i[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let o=0;o<i.length;o++){let s=i[o],a=Ie(s);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(o++,o>=i.length)throw new Jg("invalid address: "+r);if(a.path===!0){n=vx(i.slice(o).join("/")),e.push([a.code,wx(a.code,n)]),t.push([a.code,n]);break}let c=wx(a.code,i[o]);e.push([a.code,c]),t.push([a.code,yx(a.code,c)])}return{string:eC(t),bytes:e2(e),tuples:e,stringTuples:t,path:n}}function Ex(r){let e=[],t=[],n=null,i=0;for(;i<r.length;){let o=Zt(r,i),s=Oe(o),a=Ie(o),c=yq(a,r.slice(i+s));if(c===0){e.push([o]),t.push([o]),i+=s;continue}let l=r.slice(i+s,i+s+c);if(i+=c+s,i>r.length)throw new Jg("Invalid address Uint8Array: "+H(r,"base16"));e.push([o,l]);let u=yx(o,l);if(t.push([o,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:eC(t),tuples:e,stringTuples:t,path:n}}function eC(r){let e=[];return r.map(t=>{let n=Ie(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),vx(e.join("/"))}function e2(r){return Ve(r.map(e=>{let t=Ie(e[0]),n=Uint8Array.from(ht(t.code));return e.length>1&&e[1]!=null&&(n=Ve([n,e[1]])),n}))}function yq(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Zt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Oe(t)}}function vx(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}var Jg=class extends Error{static name="ParseError";name="ParseError";constructor(e){super(`Error parsing address: ${e}`)}};var wq=Symbol.for("nodejs.util.inspect.custom"),Ax=Symbol.for("@multiformats/js-multiaddr/multiaddr"),xq=[Ie("dns").code,Ie("dns4").code,Ie("dns6").code,Ie("dnsaddr").code],Sx=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},t2=class r{bytes;#e;#r;#n;#m;[Ax]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Ex(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=JT(e)}else if(ka(e))t=Ex(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#n=t.stringTuples,this.#m=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,i,o="",s=Ie("tcp"),a=Ie("udp"),c=Ie("ip4"),l=Ie("ip6"),u=Ie("dns6"),f=Ie("ip6zone");for(let[d,m]of this.stringTuples())d===f.code&&(o=`%${m??""}`),xq.includes(d)&&(t=s.name==="tcp"?"tcp":"udp",i=443,n=`${m??""}${o}`,e=d===u.code?6:4),(d===s.code||d===a.code)&&(t=Ie(d).name==="tcp"?"tcp":"udp",i=parseInt(m??"")),(d===c.code||d===l.code)&&(t=Ie(d).name==="tcp"?"tcp":"udp",n=`${m??""}${o}`,e=d===l.code?6:4);if(e==null||t==null||n==null||i==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:i}}protos(){return this.#r.map(([e])=>Object.assign({},Ie(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>Ie(e).name)}tuples(){return this.#r.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#n.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),i=n.lastIndexOf(t);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,i))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(e2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,i])=>{n===Rf.p2p.code&&e.push([n,i]),n===Rf["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?H(Le.decode(`z${n}`),"base58btc"):H(W.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#m}equals(e){return pe(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(o=>o.resolvable);if(t==null)return[this];let n=Df.get(t.name);if(n==null)throw new Sx(`no available resolver for ${t.name}`);return(await n(this,e)).map(o=>se(o))}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)}[wq](){return`Multiaddr(${this.#e})`}};var Df=new Map;function ka(r){return!!r?.[Ax]}function se(r){return new t2(r)}var bq=[Ie("tcp").code,Ie("dns").code,Ie("dnsaddr").code,Ie("dns4").code,Ie("dns6").code];function tC(r){return iC("sni",r)?.[1]}function rC(r){let e=iC("tcp",r)?.[1];return e==null?"":`:${e}`}function iC(r,e){let t;try{t=Ie(r).code}catch{return}for(let[n,i]of e)if(n===t&&i!=null)return[n,i]}function nC(r){return r.some(([e,t])=>e===Ie("tls").code)}function uo(r,e,t){let n=oC[Ie(r).name];if(n==null)throw new Error(`Can't interpret protocol ${Ie(r).name}`);let i=n(e,t);return r===Ie("ip6").code?`[${i}]`:i}var oC={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${uo(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${uo(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==null)throw new Error("Unexpected end of multiaddr");return`${uo(t[0],t[1]??"",e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${uo(t[0],t[1]??"",e)}`},http:(r,e)=>{let t=nC(e),n=tC(e),i=rC(e);if(t&&n!=null)return`https://${n}${i}`;let o=t?"https://":"http://",s=e.pop();if(s==null)throw new Error("Unexpected end of multiaddr");let a=uo(s[0],s[1]??"",e);return a=a.replace("tcp://",""),`${o}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e),i=decodeURIComponent(r);return`${n}/${i}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return uo(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return uo(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=nC(e),n=tC(e),i=rC(e);if(t&&n!=null)return`wss://${n}${i}`;let o=t?"wss://":"ws://",s=e.pop();if(s==null)throw new Error("Unexpected end of multiaddr");let a=uo(s[0],s[1]??"",e);return a=a.replace("tcp://",""),`${o}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`}};function r2(r,e){let n=se(r).stringTuples(),i=n.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let o=Ie(i[0]),s=oC[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let a=s(i[1]??"",n);return e?.assumeHttp!==!1&&bq.includes(i[0])&&(a=a.replace(/^.*:\/\//,""),i[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://")||a.startsWith("ws://")||a.startsWith("wss://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var n2=class{url;#e=0;#r=0;#n=0;#m=0;#u=new Map;log;transformRequestInit;constructor(e,{logger:t,transformRequestInit:n}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#A(e){let t=e.multihash.bytes;return ar.encode(t)}async getRawBlock(e,t){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let i=this.#A(e),o=new AbortController,s=()=>{o.abort()};t?.addEventListener("abort",s);try{let a=this.#u.get(i);if(a==null){this.#e++;let c={signal:o.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},l=this.transformRequestInit!=null?await this.transformRequestInit(c):c;a=fetch(n.toString(),l).then(async u=>{if(this.log("GET %s %d",n,u.status),!u.ok)throw this.#r++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#m++,new Uint8Array(await u.arrayBuffer())}),this.#u.set(i,a)}return await a}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#r++,new Error(`unable to fetch raw block for CID ${e}`))}finally{t?.removeEventListener("abort",s),this.#u.delete(i)}}reliability(){return this.#e===0?1:this.#n>0?-1/0:this.#m/(this.#e+this.#r*3)}incrementInvalidBlocks(){this.#n++}getStats(){return{attempts:this.#e,errors:this.#r,invalidBlocks:this.#n,successes:this.#m,pendingResponses:this.#u.size}}};function vq(r,e,t){return r.filter(n=>{if(HT.matches(n)||e&&$T.matches(n))return t||wp.matches(n)?!0:bn(n.toOptions().host)===!1;if(!e&&t){let{host:i}=n.toOptions();if(i==="127.0.0.1"||i==="localhost"||i.endsWith(".localhost"))return!0}return!1})}async function*i2(r,e,t,n,i,o={}){for await(let s of e.findProviders(r,o)){let a=vq(s.multiaddrs,n,i);if(a.length===0)continue;let c=r2(a[0]);yield new n2(c,{logger:t,transformRequestInit:o.transformRequestInit})}}var _x=class extends ul{routing;allowInsecure;allowLocal;transformRequestInit;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??o2,this.allowLocal=t.allowLocal??s2,this.transformRequestInit=t.transformRequestInit}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let i=await t.getRawBlock(e,n.signal);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(i),i}async*findNewProviders(e,t={}){yield*i2(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}};function sC(r,e){return new _x(r,e)}var a2=class{allowInsecure;allowLocal;transformRequestInit;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??o2,this.allowLocal=t.allowLocal??s2,this.transformRequestInit=t.transformRequestInit}async retrieve(e,t={}){let n=[];for await(let i of i2(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})){this.log("getting block for %c from %s",e,i.url);try{let o=await i.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,i.url);try{await t.validateFn?.(o)}catch(s){this.log.error("failed to validate block for %c from %s",e,i.url,s);continue}return o}catch(o){if(this.log.error("failed to get block for %c from %s",e,i.url,o),o instanceof Error?n.push(o):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${i.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,i.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return sC({logger:this.logger,routing:this.routing},{...e,allowLocal:this.allowLocal,allowInsecure:this.allowInsecure,transformRequestInit:this.transformRequestInit})}};var o2=!1,s2=!1;function Sp(r={}){return e=>new a2(e,r)}async function*c2(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 dC=it(l2(),1);var u2=class extends Error{static name="SignatureCreationError";constructor(e="Record signature creation failed"){super(e),this.name="SignatureCreationError"}},fo=class extends Error{static name="SignatureVerificationError";constructor(e="Record signature verification failed"){super(e),this.name="SignatureVerificationError"}},f2=class extends Error{static name="RecordExpiredError";constructor(e="Record has expired"){super(e),this.name="RecordExpiredError"}},wl=class extends Error{static name="UnsupportedValidityError";constructor(e="The validity type is unsupported"){super(e),this.name="UnsupportedValidityError"}},d2=class extends Error{static name="RecordTooLargeError";constructor(e="The record is too large"){super(e),this.name="RecordTooLargeError"}},Ap=class extends Error{static name="InvalidValueError";constructor(e="Value must be a valid content path starting with /"){super(e),this.name="InvalidValueError"}},h2=class extends Error{static name="InvalidRecordDataError";constructor(e="Invalid record data"){super(e),this.name="InvalidRecordDataError"}},_p=class extends Error{static name="InvalidEmbeddedPublicKeyError";constructor(e="Invalid embedded public key"){super(e),this.name="InvalidEmbeddedPublicKeyError"}};var Dr;(function(r){let e;(function(i){i.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(i){i[i.EOL=0]="EOL"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.value!=null&&(o.uint32(10),o.bytes(i.value)),i.signatureV1!=null&&(o.uint32(18),o.bytes(i.signatureV1)),i.validityType!=null&&(o.uint32(24),r.ValidityType.codec().encode(i.validityType,o)),i.validity!=null&&(o.uint32(34),o.bytes(i.validity)),i.sequence!=null&&(o.uint32(40),o.uint64(i.sequence)),i.ttl!=null&&(o.uint32(48),o.uint64(i.ttl)),i.pubKey!=null&&(o.uint32(58),o.bytes(i.pubKey)),i.signatureV2!=null&&(o.uint32(66),o.bytes(i.signatureV2)),i.data!=null&&(o.uint32(74),o.bytes(i.data)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.value=i.bytes();break}case 2:{a.signatureV1=i.bytes();break}case 3:{a.validityType=r.ValidityType.codec().decode(i);break}case 4:{a.validity=i.bytes();break}case 5:{a.sequence=i.uint64();break}case 6:{a.ttl=i.uint64();break}case 7:{a.pubKey=i.bytes();break}case 8:{a.signatureV2=i.bytes();break}case 9:{a.data=i.bytes();break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(Dr||(Dr={}));var Eq=ze("ipns:utils"),aC=O("/ipns/"),Sq=114,Aq=0,_q=18;function Ip(r){let e;if(r.pubKey!=null)try{e=tr(r.pubKey)}catch(t){throw Eq.error(t),t}if(e!=null)return e}function cC(r,e,t){let n=O(e);return Ve([r,t,n])}function m2(r){let e=O("ipns-signature:");return Ve([e,r])}function Pa(r){return"signatureV1"in r?Dr.encode({value:O(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:O(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Dr.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data})}function Dn(r){let e=Dr.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 new fo("Missing data or signatureV2");let t=uC(e.data),n=Iq(t.Value),i=H(t.Validity);if(e.value!=null&&e.signatureV1!=null)return Tq(e),{value:n,validityType:Dr.ValidityType.EOL,validity:i,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:Dr.ValidityType.EOL,validity:i,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")}function ks(r){return Ve([aC,r.bytes])}function Nf(r){let e=Ue(r.slice(aC.length));if(!p2(e,Aq)&&!p2(e,_q))throw new aa("Multihash in IPNS key was not identity or sha2-256");return e}function lC(r,e,t,n,i){let o;if(e===Dr.ValidityType.EOL)o=0;else throw new wl("The validity type is unsupported");return As({Value:r,Validity:t,ValidityType:o,Sequence:n,TTL:i})}function uC(r){let e=xn(r);if(e.ValidityType===0)e.ValidityType=Dr.ValidityType.EOL;else throw new wl("The validity type is unsupported");return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e}function Iq(r){let e=H(r).trim();if(e.startsWith("/"))return e;try{return`/ipfs/${W.decode(r).toV1().toString()}`}catch{}try{return`/ipfs/${W.parse(e).toV1().toString()}`}catch{}throw new Ap("Value must be a valid content path starting with /")}function fC(r){if(r!=null){let e=Pq(r);if(e!=null)return e.code===Sq?`/ipns/${e.toString(fn)}`:`/ipfs/${e.toV1().toString()}`;if(Cq(r))return`/ipns/${fn.encode(r.bytes)}`;let t=r.toString().trim();if(t.startsWith("/")&&t.length>1)return t}throw new Ap("Value must be a valid content path starting with /")}function Tq(r){if(r.data==null)throw new h2("Record data is missing");let e=uC(r.data);if(!pe(e.Value,r.value??new Uint8Array(0)))throw new fo('Field "value" did not match between protobuf and CBOR');if(!pe(e.Validity,r.validity??new Uint8Array(0)))throw new fo('Field "validity" did not match between protobuf and CBOR');if(e.ValidityType!==r.validityType)throw new fo('Field "validityType" did not match between protobuf and CBOR');if(e.Sequence!==r.sequence)throw new fo('Field "sequence" did not match between protobuf and CBOR');if(e.TTL!==r.ttl)throw new fo('Field "ttl" did not match between protobuf and CBOR')}function Cq(r){return r.bytes instanceof Uint8Array}function kq(r){return typeof r?.toCID=="function"}function Pq(r){if(kq(r))return r.toCID();try{return W.parse(r)}catch{}return W.asCID(r)}function p2(r,e){return r.code===e}var Rq=ze("ipns"),hC=5*60*1e9,Dq="/ipns/",Ome=Dq.length,pC={v1Compatible:!0,ttlNs:hC};async function mC(r,e,t,n,i=pC){let o=new dC.default(Date.now()+Number(n)),s=Dr.ValidityType.EOL,a=BigInt(i.ttlNs??hC);return Nq(r,e,t,s,o.toString(),a,i)}var Nq=async(r,e,t,n,i,o,s=pC)=>{t=BigInt(t);let a=O(i),c=fC(e),l=O(c),u=lC(l,n,a,t,o),f=m2(u),h=await r.sign(f),d;if(r.type==="RSA"&&(d=lr(r.publicKey)),s.v1Compatible===!0){let m=await Oq(r,l,n,a),g={value:c,signatureV1:m,validity:i,validityType:n,sequence:t,ttl:o,signatureV2:h,data:u};return d!=null&&(g.pubKey=d),g}else{let m={value:c,validity:i,validityType:n,sequence:t,ttl:o,signatureV2:h,data:u};return d!=null&&(m.pubKey=d),m}},Oq=async(r,e,t,n)=>{try{let i=cC(e,t,n);return await r.sign(i)}catch(i){throw Rq.error("record signature creation failed",i),new u2("Record signature creation failed")}};var gC=it(l2(),1);var g2=ze("ipns:validator"),Lq=1024*10,Bq=async(r,e)=>{let t=Dn(e),n;try{let i=m2(t.data);n=await r.verify(i,t.signatureV2)}catch{n=!1}if(!n)throw g2.error("record signature verification failed"),new fo("Record signature verification failed");if(t.validityType===Dr.ValidityType.EOL){if(gC.default.fromString(t.validity).toDate().getTime()<Date.now())throw g2.error("record has expired"),new f2("record has expired")}else if(t.validityType!=null)throw g2.error("the validity type is unsupported"),new wl("The validity type is unsupported");g2("ipns record for %s is valid",t.value)};async function Ra(r,e){if(e.byteLength>Lq)throw new d2("The record is too large");let t=Nf(r),n;p2(t,0)&&(n=W0(t));let i=Dn(e),o=Ip(i)??n;if(o==null)throw new _p("Could not extract public key from IPNS record or routing key");let s=ks(o.toMultihash());if(!pe(s,r))throw new _p("Embedded public key did not match routing key");await Bq(o,e)}var y2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Tp(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),i="";for await(let o of r){if(typeof o=="string"&&(o=new TextEncoder().encode(o)),vi(o)&&(o=o.subarray()),i+=n.decode(o,{stream:!0}),i.length>(e?.maxMessageLength??i.length))throw new y2("Incoming message too long");let s=i.split(t);i=s.pop()??"";for(let a=0;a<s.length;a++)yield JSON.parse(s[a])}i+=n.decode(),i!==""&&(yield JSON.parse(i))}var Of=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},ho=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};function Mq(r){return r[Symbol.asyncIterator]!=null}function Uq(r){if(Mq(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Lf=Uq;var yC=O("/ipns/");function wC(r){return pe(r.subarray(0,yC.byteLength),yC)}var w2=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*Nt(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!wC(e))return;let i=Nf(e),o=W.createV1(114,i),s=Dn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!wC(e))throw new We("Not found");let n=Nf(e),i=W.createV1(114,n);try{let o=await this.client.getIPNS(i,t);return Pa(o)}catch(o){throw o.name==="BadResponseError"?new We("Not found"):o}}},x2=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await Lf(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new We("Not found")}async*getClosestPeers(e,t={}){}};var Nr=ze("delegated-routing-v1-http-api-client"),b2={concurrentRequests:4,timeout:3e4,cacheTTL:5*60*1e3,cacheName:"delegated-routing-v1-cache"},v2=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new kn({concurrency:t.concurrentRequests??b2.concurrentRequests}),this.inFlightRequests=new Map,this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??b2.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.contentRouting=new w2(this),this.peerRouting=new x2(this),this.cacheName=t.cacheName??b2.cacheName,this.cacheTTL=t.cacheTTL??b2.cacheTTL}get[Do](){return this.contentRouting}get[No](){return this.peerRouting}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&Nr("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){Nr("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let a=new URL(`${this.clientUrl}routing/v1/providers/${e.toString()}`);this.#r(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:i},l=await this.#n(a.toString(),c);if(l==null)throw new ho("No response received");if(!l.ok)throw l.status===404?new We("No matching records found"):l.status===422?new Of("Request does not conform to schema or semantic constraints"):new ho(`Unexpected status code: ${l.status}`);if(l.body==null)throw new ho("Routing response had no body");let u=l.headers.get("Content-Type");if(u==null)throw new ho("No Content-Type header received");if(u?.startsWith("application/json")){let f=await l.json();for(let h of f.Providers){let d=this.#e(h);d!=null&&(yield d)}}else if(u.includes("application/x-ndjson"))for await(let f of Tp(c2(l.body))){let h=this.#e(f);h!=null&&(yield h)}else throw new ho(`Unsupported Content-Type: ${u}`)}finally{i.clear(),s.resolve(),Nr("getProviders finished: %c",e)}}async*getPeers(e,t={}){Nr("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let a=new URL(`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`);this.#r(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:i},l=await this.#n(a.toString(),c);if(l.status===404)throw new We("No matching records found");if(l.status===422)throw new Of("Request does not conform to schema or semantic constraints");if(l.body==null)throw new ho("Routing response had no body");if(l.headers.get("Content-Type")==="application/json"){let f=await l.json();for(let h of f.Peers){let d=this.#e(h);d!=null&&(yield d)}}else for await(let f of Tp(c2(l.body))){let h=this.#e(f);h!=null&&(yield h)}}catch(a){Nr.error("getPeers errored:",a)}finally{i.clear(),s.resolve(),Nr("getPeers finished: %c",e)}}async getIPNS(e,t={}){Nr("getIPNS starts: %s",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));let a=`${this.clientUrl}routing/v1/ipns/${e}`;try{await o.promise;let c={headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:i},l=await this.#n(a,c);if(Nr("getIPNS GET %s %d",a,l.status),l.status===404)throw new We("No matching records found");if(l.status===422)throw new Of("Request does not conform to schema or semantic constraints");if(l.body==null)throw new ho("GET ipns response had no body");let u=await l.arrayBuffer(),f=new Uint8Array(u,0,u.byteLength);return t.validate!==!1&&await Ra(ks(e.multihash),f),Dn(f)}catch(c){throw Nr.error("getIPNS GET %s error:",a,c),c}finally{i.clear(),s.resolve(),Nr("getIPNS finished: %s",e)}}async putIPNS(e,t,n={}){Nr("putIPNS starts: %c",e);let i=AbortSignal.timeout(this.timeout),o=Ne([this.shutDownController.signal,i,n.signal]);let s=ye(),a=ye();this.httpQueue.add(async()=>(s.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${e}`;try{await s.promise;let l=Pa(t),u={method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:o},f=await this.#n(c,u);if(Nr("putIPNS PUT %s %d",c,f.status),f.status!==200)throw new ho("PUT ipns response had status other than 200")}catch(l){throw Nr.error("putIPNS PUT %s error:",c,l.stack),l}finally{o.clear(),a.resolve(),Nr("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(se)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:at(e.ID),Addrs:n,Protocols:t}}catch(t){Nr.error("could not conform record to peer schema",t)}}#r(e,t,n){if(t!=null||this.filterAddrs!=null){let i=t?.join(",")??this.filterAddrs?.join(",")??"";i!==""&&e.searchParams.set("filter-addrs",i)}if(n!=null||this.filterProtocols!=null){let i=n?.join(",")??this.filterProtocols?.join(",")??"";i!==""&&e.searchParams.set("filter-protocols",i)}}async#n(e,t){let n=t.method??"GET",i=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return Nr("returning cached response for %s",i),c;await this.cache?.delete(e)}}let o=this.inFlightRequests.get(i);if(o!=null){let c=await o;return Nr("deduplicating outgoing request for %s",i),c.clone()}let s=fetch(e,t).then(async c=>{if(this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let f=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,f)}return c}).finally(()=>{this.inFlightRequests.delete(i)});return this.inFlightRequests.set(i,s),await s}};function E2(r,e={}){return new v2(new URL(r),e)}var Tx=it(l2(),1);function S2(r,e){let t=e.map((n,i)=>({record:Dn(n),index:i}));return t.sort((n,i)=>{let o=n.record.sequence,s=i.record.sequence;if(o>s)return-1;if(o<s)return 1;if(n.record.validityType===Dr.ValidityType.EOL&&i.record.validityType===Dr.ValidityType.EOL){let a=Tx.default.fromString(n.record.validity).toDate(),c=Tx.default.fromString(i.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var A2=class extends Error{static name="DNSLinkNotFoundError";constructor(e="DNSLink not found"){super(e),this.name="DNSLinkNotFoundError"}},_2=class extends Error{static name="RecordsFailedValidationError";constructor(e="Records failed validation"){super(e),this.name="RecordsFailedValidationError"}},I2=class extends Error{static name="UnsupportedMultibasePrefixError";constructor(e="Unsupported multibase prefix"){super(e),this.name="UnsupportedMultibasePrefixError"}},T2=class extends Error{static name="UnsupportedMultihashCodecError";constructor(e="Unsupported multihash codec"){super(e),this.name="UnsupportedMultihashCodecError"}},C2=class extends Error{static name="InvalidValueError";constructor(e="Invalid value"){super(e),this.name="InvalidValueError"}};var Fq=32;async function xC(r,e,t,n,i={}){if(e===0)throw new Error("recursion limit exceeded");n("query %s for TXT and CNAME records",r);let s=((await t.query(r,{...i,types:[rn.TXT]}))?.Answer??[]).sort((l,u)=>l.data.localeCompare(u.data));n("found %d TXT records for %s",s.length,r);for(let l of s)try{let u=l.data;if(u.startsWith('"')&&u.endsWith('"')&&(u=u.substring(1,u.length-1)),!u.startsWith("dnslink="))continue;n("%s TXT %s",l.name,u),u=u.replace("dnslink=","");let[,f,h,...d]=u.split("/");if(f==="ipfs")try{return{value:`/ipfs/${W.parse(h)}${d.length>0?`/${d.join("/")}`:""}`,answer:l}}catch{}else if(f==="ipns"){try{let m;return h.charAt(0)==="1"||h.charAt(0)==="Q"?m=at(h):m=gn(W.parse(h)),{value:`/ipns/${m}${d.length>0?`/${d.join("/")}`:""}`,answer:l}}catch{}return await k2(h,e-1,t,n,i)}else{if(f==="dnslink")return await k2(h,e-1,t,n,i);n('unknown protocol "%s" in DNSLink record for domain: %s',f,r);continue}}catch(u){n.error("could not parse DNS link record for domain %s, %s",r,l.data,u)}n("no DNSLink records found for %s, falling back to CNAME",r);let c=((await t.query(r,{...i,types:[rn.CNAME]}))?.Answer??[]).sort((l,u)=>l.data.localeCompare(u.data));n("found %d CNAME records for %s",c.length,r);for(let l of c)try{return await k2(l.data,e-1,t,n,i)}catch(u){n.error("domain %s cname %s had no DNSLink records",r,l.data,u)}throw new A2(`No DNSLink records found for domain: ${r}`)}async function k2(r,e,t,n,i={}){if(e===0)throw new Error("recursion limit exceeded");r.startsWith("_dnslink.")||(r=`_dnslink.${r}`);try{return await xC(r,e,t,n,i)}catch(o){if(o.code!=="ENOTFOUND"&&o.code!=="ENODATA"&&o.name!=="DNSLinkNotFoundError"&&o.name!=="NotFoundError")throw o;return r.startsWith("_dnslink.")?r=r.replace("_dnslink.",""):r=`_dnslink.${r}`,xC(r,e,t,n,i)}}async function bC(r,e,t,n={}){return k2(r,n.maxRecursiveDepth??Fq,e,t,n)}var Cx=class{routing;constructor(e){this.routing=e}async put(e,t,n={}){try{await this.routing.put(e,t,n)}catch(i){n.onProgress?.(new G("ipns:routing:helia:error",i))}}async get(e,t={}){try{return await this.routing.get(e,t)}catch(n){t.onProgress?.(new G("ipns:routing:helia:error",n))}throw new Error("Not found")}};function vC(r){return new Cx(r)}var Cp;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={key:Pe(0),value:Pe(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Cp||(Cp={}));function EC(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),i=String(r.getUTCHours()).padStart(2,"0"),o=String(r.getUTCMinutes()).padStart(2,"0"),s=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${i}:${o}:${s}.${c}Z`}function SC(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),i=parseInt(t[2],10)-1,o=parseInt(t[3],10),s=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,i,o,s,a,c,l))}var kt=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 Cp.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:EC(this.timeReceived)}}static deserialize(e){let t=Cp.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=SC(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var P2=globalThis.CustomEvent??Event;async function*Or(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,i=new EventTarget,o=[],s=ye(),a=ye(),c=!1,l,u=!1;i.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let m of r){if(o.length===t&&(s=ye(),await s.promise),u)break;let g={done:!1};o.push(g),m().then(w=>{g.done=!0,g.ok=!0,g.value=w,i.dispatchEvent(new P2("task-complete"))},w=>{g.done=!0,g.err=w,i.dispatchEvent(new P2("task-complete"))})}c=!0,i.dispatchEvent(new P2("task-complete"))}catch(m){l=m,i.dispatchEvent(new P2("task-complete"))}});function f(){return n?o[0]?.done:!!o.find(m=>m.done)}function*h(){for(;o.length>0&&o[0].done;){let m=o[0];if(o.shift(),m.ok)yield m.value;else throw u=!0,s.resolve(),m.err;s.resolve()}}function*d(){for(;f();)for(let m=0;m<o.length;m++)if(o[m].done){let g=o[m];if(o.splice(m,1),m--,g.ok)yield g.value;else throw u=!0,s.resolve(),g.err;s.resolve()}}for(;;){if(f()||(a=ye(),await a.promise),l!=null)throw l;if(n?yield*h():yield*d(),c&&o.length===0)break}}var Bf=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),i=e-this.movingAverage,o=n*i;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+i*o),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*i}else this.movingAverage=e;this.previousTime=t}};var Hq=1.2,Vq=2,zq=2e3,po=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Bf(e.interval??5e3),this.failure=new Bf(e.interval??5e3),this.next=new Bf(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??Vq,this.timeoutMultiplier=e.timeoutMultiplier??Hq,this.minTimeout=e.minTimeout??zq,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),i=Ne([e.signal,n]);return i.start=Date.now(),i.timeout=t,i}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var kx=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ye(),this.haveNext=ye()}[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=ye(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ye(),await Dt(this.readNext.promise,t?.signal,t)}};function AC(){return new kx}var R2=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var Px=class extends Error{code;constructor(e,t){super(e),this.code=t}},Rx=class extends Px{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function _C(r,e){let t=AC();r.sink(t).catch(async s=>{await t.end(s)}),r.sink=async s=>{for await(let a of s)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 i=new oe;return{read:async(s,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new Rx("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(s==null){let{done:f,value:h}=await Promise.race([n.next(),l]);return f===!0?new oe:h}for(;i.byteLength<s;){let{value:f,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new R2("unexpected end of input");i.append(f)}let u=i.sublist(0,s);return i.consume(s),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(s,a)=>{a?.signal?.throwIfAborted(),s instanceof Uint8Array?await t.push(s,a):await t.push(s.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let s=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*s}()}return r}}}var D2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},N2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},O2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function IC(r,e={}){let t=_C(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read(1,s));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new D2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new O2("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new N2("message length too long");return t.read(a,s)},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Nn(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=$t(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function Da(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function Kq(r){return r[Symbol.asyncIterator]!=null}function qq(r){if(Kq(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 L2=qq;var jq=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 Wq(r,e,t){let n,i=new Promise((o,s)=>{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:u}=jq(r),f=(...d)=>{let m=t.multiArgs?d:d[0];t.filter&&!t.filter(m)||(c.push(m),t.count===c.length&&(n(),o(c)))},h=d=>{n(),s(d)};n=()=>{for(let d of a)u(d,f);for(let d of t.rejectionEvents)u(d,h)};for(let d of a)l(d,f);for(let d of t.rejectionEvents)l(d,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&o(c)});if(i.cancel=n,typeof t.timeout=="number"){let o=io(i,{milliseconds:t.timeout});return o.cancel=n,o}return i}function TC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=Wq(r,e,t),i=n.then(o=>o[0]);return i.cancel=n.cancel,i}function Xq(r){return r[Symbol.asyncIterator]!=null}function Yq(r){if(Xq(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 Ps=Yq;var CC;(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"})(CC||(CC={}));function B2(r){return new nt("/dht/record/"+H(r,"base32"),!1)}function kC(r){return{async put(e,t,n={}){try{let i=B2(e);try{let s=await r.get(i),a=kt.deserialize(s);if(pe(a.value,t))return}catch(s){if(s.name!=="NotFoundError")throw s}let o=new kt(e,t,new Date);n.onProgress?.(new G("ipns:routing:datastore:put")),await r.put(i,o.serialize(),n)}catch(i){throw n.onProgress?.(new G("ipns:routing:datastore:error",i)),i}},async get(e,t={}){try{let n=B2(e);t.onProgress?.(new G("ipns:routing:datastore:get"));let i=await r.get(n,t),o=kt.deserialize(i);return{record:o.value,created:o.timeReceived}}catch(n){throw t.onProgress?.(new G("ipns:routing:datastore:error",n)),n}},async has(e,t={}){let n=B2(e);return r.has(n,t)},async delete(e,t){let n=B2(e);return r.delete(n,t)}}}var Dx="/ipns/";function Nx(r,e){return r.code===e}var Rs=ze("helia:ipns"),DC=60*1e3,NC=60*DC,Jq=48*NC,Ox=23*NC,PC=BigInt(DC)*5000000n,RC={[fn.prefix]:fn,[Le.prefix]:Le},Lx=class{routers;localStore;timeout;dns;log;constructor(e,t=[]){this.routers=[vC(e.routing),...t],this.localStore=kC(e.datastore),this.dns=e.dns,this.log=e.logger.forComponent("helia:ipns")}async publish(e,t,n={}){try{let i=1n,o=ks(e.publicKey.toMultihash());if(await this.localStore.has(o,n)){let{record:l}=await this.localStore.get(o,n);i=Dn(l).sequence+1n}let s=n.ttl!=null?BigInt(n.ttl)*1000000n:PC,a=await mC(e,t,i,n.lifetime??Jq,{...n,ttlNs:s}),c=Pa(a);return await this.localStore.put(o,c,n),n.offline!==!0&&await Promise.all(this.routers.map(async l=>{await l.put(o,c,n)})),a}catch(i){throw n.onProgress?.(new G("ipns:publish:error",i)),i}}async resolve(e,t={}){let n=xS(e)?e.toMultihash():e,i=ks(n),o=await this.#r(i,t);return{...await this.#e(o.value,t),record:o}}async resolveDNSLink(e,t={}){let n=await bC(e,this.dns,this.log,t);return{...await this.#e(n.value,t),answer:n.answer}}republish(e={}){if(this.timeout!=null)throw new Error("Republish is already running");e.signal?.addEventListener("abort",()=>{clearTimeout(this.timeout)});async function t(){let n=Date.now();e.onProgress?.(new G("ipns:republish:start"));let o=Date.now()-n,s=Ox-o;s<0&&(s=e.interval??Ox),setTimeout(()=>{t().catch(a=>{Rs.error("error republishing",a)})},s)}this.timeout=setTimeout(()=>{t().catch(n=>{Rs.error("error republishing",n)})},e.interval??Ox)}async#e(e,t={}){let n=e.split("/");try{let i=n[1];if(i==="ipns"){let o=n[2],s=o.substring(0,1),a;if(s==="1"||s==="Q")a=Le.decode(`z${o}`);else if(RC[s]!=null)a=RC[s].decode(o);else throw new I2(`Unsupported multibase prefix "${s}"`);let c;try{c=Ue(a)}catch{c=W.decode(a).multihash}if(!Nx(c,0)&&!Nx(c,18))throw new T2(`Unsupported multihash codec "${c.code}"`);let{cid:l}=await this.resolve(c,t),u=n.slice(3).join("/");return{cid:l,path:u}}else if(i==="ipfs"){let o=W.parse(n[2]),s=n.slice(3).join("/");return{cid:o,path:s}}}catch(i){Rs.error("error parsing ipfs path",i)}throw Rs.error("invalid ipfs path %s",e),new C2("Invalid value")}async#r(e,t={}){let n=[];if(await this.localStore.has(e,t))if(Rs("record is present in the cache"),t.nocache!==!0)try{let{record:a,created:c}=await this.localStore.get(e,t);this.log("record retrieved from cache"),await Ra(e,a),this.log("record was valid");let l=Dn(a),u=Number((l.ttl??PC)/1000000n);if(c.getTime()+u>Date.now())return this.log("record TTL was valid"),l;if(t.offline===!0)return this.log("record TTL has been reached but we are resolving offline-only, returning record"),l;this.log("record TTL has been reached, searching routing for updates"),n.push(a)}catch(a){this.log("cached record was invalid",a),await this.localStore.delete(e,t)}else Rs("ignoring local cache due to nocache=true option");if(t.offline===!0)throw new We("Record was not present in the cache or has expired");Rs("did not have record locally");let o=0;if(await Promise.all(this.routers.map(async a=>{let c;try{c=await a.get(e,{...t,validate:!1})}catch(l){Rs.error("error finding IPNS record",l);return}try{await Ra(e,c),n.push(c)}catch(l){o++,Rs.error("error finding IPNS record",l)}})),n.length===0)throw o>0?new _2(`${o>1?`${o} records`:"Record"} found for routing key ${o>1?"were":"was"} invalid`):new We("Could not find record for routing key");let s=n[S2(e,n)];return await this.localStore.put(e,s,t),Dn(s)}async republishRecord(e,t,n={}){let i;try{if(i=Ip(t)?.toMultihash(),i==null)if(typeof e=="string"){e.startsWith(Dx)&&(e=e.slice(Dx.length));try{i=at(e).toMultihash()}catch(a){throw new Error(`Invalid string key: ${a.message}`)}}else i=e;if(i==null)throw new Error("No public key multihash found to determine the routing key");let o=ks(i),s=Pa(t);await Ra(o,s),await this.localStore.put(o,s,n),n.offline!==!0&&await Promise.all(this.routers.map(async a=>{await a.put(o,s,n)}))}catch(o){throw n.onProgress?.(new G("ipns:republish:error",{key:i,record:t,err:o})),o}}};function OC(r,{routers:e=[]}={}){return new Lx(r,e)}function Bx(){return{filterProtocols:["unknown","transport-bitswap","transport-ipfs-gateway-http"],filterAddrs:["https","webtransport","webrtc","webrtc-direct","wss","tls"]}}var LC="[a-fA-F\\d:]",Na=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${LC})|(?<=${LC})(?=\\s|$))`:"",mo="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",fr="[a-fA-F\\d]{1,4}",M2=`
2
+ "use strict";var HeliaVerifiedFetch=(()=>{var PF=Object.create;var Zm=Object.defineProperty;var RF=Object.getOwnPropertyDescriptor;var DF=Object.getOwnPropertyNames;var NF=Object.getPrototypeOf,OF=Object.prototype.hasOwnProperty;var ft=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ft=(r,e)=>{for(var t in e)Zm(r,t,{get:e[t],enumerable:!0})},yS=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of DF(e))!OF.call(r,i)&&i!==t&&Zm(r,i,{get:()=>e[i],enumerable:!(n=RF(e,i))||n.enumerable});return r};var it=(r,e,t)=>(t=r!=null?PF(NF(r)):{},yS(e||!r||!r.__esModule?Zm(t,"default",{value:r,enumerable:!0}):t,r)),LF=r=>yS(Zm({},"__esModule",{value:!0}),r);var V_=ft((rue,u7)=>{"use strict";var dz=Object.prototype.hasOwnProperty,wn="~";function rp(){}Object.create&&(rp.prototype=Object.create(null),new rp().__proto__||(wn=!1));function hz(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function H_(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new hz(t,n||r,i),s=wn?wn+e:e;return r._events[s]?r._events[s].fn?r._events[s]=[r._events[s],o]:r._events[s].push(o):(r._events[s]=o,r._eventsCount++),r}function ig(r,e){--r._eventsCount===0?r._events=new rp:delete r._events[e]}function tn(){this._events=new rp,this._eventsCount=0}tn.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)dz.call(t,n)&&e.push(wn?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};tn.prototype.listeners=function(e){var t=wn?wn+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i<o;i++)s[i]=n[i].fn;return s};tn.prototype.listenerCount=function(e){var t=wn?wn+e:e,n=this._events[t];return n?n.fn?1:n.length:0};tn.prototype.emit=function(e,t,n,i,o,s){var a=wn?wn+e:e;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,f;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,i),!0;case 5:return c.fn.call(c.context,t,n,i,o),!0;case 6:return c.fn.call(c.context,t,n,i,o,s),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var h=c.length,d;for(f=0;f<h;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(d=1,u=new Array(l-1);d<l;d++)u[d-1]=arguments[d];c[f].fn.apply(c[f].context,u)}}return!0};tn.prototype.on=function(e,t,n){return H_(this,e,t,n,!1)};tn.prototype.once=function(e,t,n){return H_(this,e,t,n,!0)};tn.prototype.removeListener=function(e,t,n,i){var o=wn?wn+e:e;if(!this._events[o])return this;if(!t)return ig(this,o),this;var s=this._events[o];if(s.fn)s.fn===t&&(!i||s.once)&&(!n||s.context===n)&&ig(this,o);else{for(var a=0,c=[],l=s.length;a<l;a++)(s[a].fn!==t||i&&!s[a].once||n&&s[a].context!==n)&&c.push(s[a]);c.length?this._events[o]=c.length===1?c[0]:c:ig(this,o)}return this};tn.prototype.removeAllListeners=function(e){var t;return e?(t=wn?wn+e:e,this._events[t]&&ig(this,t)):(this._events=new rp,this._eventsCount=0),this};tn.prototype.off=tn.prototype.removeListener;tn.prototype.addListener=tn.prototype.on;tn.prefixed=wn;tn.EventEmitter=tn;typeof u7<"u"&&(u7.exports=tn)});var g7=ft((_ue,j_)=>{j_.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 i(o,s){t[o]=s,e++,e>=r&&(e=0,n=t,t=Object.create(null))}return{has:function(o){return t[o]!==void 0||n[o]!==void 0},remove:function(o){t[o]!==void 0&&(t[o]=void 0),n[o]!==void 0&&(n[o]=void 0)},get:function(o){var s=t[o];if(s!==void 0)return s;if((s=n[o])!==void 0)return i(o,s),s},set:function(o,s){t[o]!==void 0?t[o]=s:i(o,s)},clear:function(){t=Object.create(null),n=Object.create(null)}}}});var CT=ft(mp=>{(function(){var r,e,t,n,i,o,s,a;a=function(c){var l,u,f,h;return l=(c&255<<24)>>>24,u=(c&255<<16)>>>16,f=(c&65280)>>>8,h=c&255,[l,u,f,h].join(".")},s=function(c){var l,u,f,h,d,m;for(l=[],f=h=0;h<=3&&c.length!==0;f=++h){if(f>0){if(c[0]!==".")throw new Error("Invalid IP");c=c.substring(1)}m=e(c),d=m[0],u=m[1],c=c.substring(u),l.push(d)}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"),o=t("a"),i=t("A"),e=function(c){var l,u,f,h,d;for(h=0,l=10,u="9",f=0,c.length>1&&c[f]==="0"&&(c[f+1]==="x"||c[f+1]==="X"?(f+=2,l=16):"0"<=c[f+1]&&c[f+1]<="9"&&(f++,l=8,u="7")),d=f;f<c.length;){if("0"<=c[f]&&c[f]<=u)h=h*l+(t(c[f])-n)>>>0;else if(l===16)if("a"<=c[f]&&c[f]<="f")h=h*l+(10+t(c[f])-o)>>>0;else if("A"<=c[f]&&c[f]<="F")h=h*l+(10+t(c[f])-i)>>>0;else break;else break;if(h>4294967295)throw new Error("too large");f++}if(f===d)throw new Error("empty octet");return[h,f]},r=function(){function c(l,u){var f,h,d,m;if(typeof l!="string")throw new Error("Missing `net' parameter");if(u||(m=l.split("/",2),l=m[0],u=m[1]),u||(u=32),typeof u=="string"&&u.indexOf(".")>-1){try{this.maskLong=s(u)}catch(g){throw f=g,new Error("Invalid mask: "+u)}for(h=d=32;d>=0;h=--d)if(this.maskLong===4294967295<<32-h>>>0){this.bitmask=h;break}}else if(u||u===0)this.bitmask=parseInt(u,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(s(l)&this.maskLong)>>>0}catch(g){throw f=g,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+u);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):(s(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 u,f,h;for(h=s(this.first),f=s(this.last),u=0;h<=f;)l(a(h),h,u),u++,h++},c.prototype.toString=function(){return this.base+"/"+this.bitmask},c}(),mp.ip2long=s,mp.long2ip=a,mp.Netmask=r}).call(mp)});var l2=ft((fme,Ix)=>{var ume=function(){typeof Ix<"u"&&(Ix.exports=g);var r=86400,e=3200,t=146097*e/400,n=r*t,i=1e3*n,o=864e13,s=4294967296,a=1e6,c="000000000",l=Math.trunc||function(I){var k=I-I%1;return k==0&&(I<0||I===0&&1/I!=1/0)?-0:k},u=g.prototype,f=(g.fromDate=function(I){return new g(+I)},g.fromInt64BE=S(0,1,2,3,0,4),g.fromInt64LE=S(3,2,1,0,4,0),g.fromString=function(K){var k,X=new g,K=(K+="").replace(/^\s*[+\-]?\d+/,function(Y){var Y=+Y,$=1970+(Y-1970)%400;return X.year=Y-$,$}).replace(/(?:Z|([+\-]\d{2}):?(\d{2}))$/,function(V,Y,$){return Y<0&&($*=-1),k=6e4*(60*+Y+ +$),""}).replace(/\.\d+$/,function(V){return X.nano=+(V+c).substr(1,9),""}).split(/\D+/);if(1<K.length?K[1]--:K[1]=0,X.time=k=Date.UTC.apply(Date,K)-(k||0),isNaN(k))throw new TypeError("Invalid Date");return w(X)},g.fromTimeT=function(I){return v(I,0)},u.year=0,u.time=0,u.nano=0,u.addNano=function(I){return this.nano+=+I||0,this},u.getNano=function(){var I=w(this);return(I.time%1e3*a+ +I.nano+1e9)%1e9},u.getTimeT=function(){var k=w(this),I=Math.floor(k.time/1e3),k=k.year;return k&&(I+=k*t*r/e),I},u.getYear=function(){return this.toDate().getUTCFullYear()+this.year},u.toDate=function(){return x(w(this).time)},u.toJSON=function(){return this.toString().replace(/0{1,6}Z$/,"Z")},u.toString=function(I){var k=this,X=k.toDate(),K={H:function(){return D(X.getUTCHours())},L:function(){return A(X.getUTCMilliseconds(),3)},M:function(){return D(X.getUTCMinutes())},N:function(){return A(k.getNano(),9)},S:function(){return D(X.getUTCSeconds())},Y:function(){var V=k.getYear();return 999999<V?"+"+V:9999<V?"+"+A(V,6):0<=V?A(V,4):-999999<=V?"-"+A(-V,6):V},a:function(){return d[X.getUTCDay()]},b:function(){return h[X.getUTCMonth()]},d:function(){return D(X.getUTCDate())},e:function(){return function(V){return(9<V?"":" ")+(0|V)}(X.getUTCDate())},m:function(){return D(X.getUTCMonth()+1)}};return function V(Y){return Y.replace(/%./g,function($){var z=$[1],F=m[z],z=K[z];return F?V(F):z?z():$})}(I||f)},u.writeInt64BE=b(0,1,2,3,0,4),u.writeInt64LE=b(3,2,1,0,4,0),"%Y-%m-%dT%H:%M:%S.%NZ"),h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],m={"%":"%",F:"%Y-%m-%d",n:`
3
+ `,R:"%H:%M",T:"%H:%M:%S",t:" ",X:"%T",Z:"GMT",z:"+0000"};return g;function g(I,k,X){var K=this;if(!(K instanceof g))return new g(I,k,X);K.time=+I||0,K.nano=+k||0,K.year=+X||0,w(K)}function w(I){var k,X,K,V=I.year,Y=I.time,$=I.nano,F=(($<0||a<=$)&&($-=(X=Math.floor($/a))*a,Y+=X,X=1),V%e);return(Y<-o||o<Y||F)&&((k=l(Y/i))&&(V+=k*e,Y-=k*i),(K=x(Y)).setUTCFullYear(F+K.getUTCFullYear()),K=(Y=+K)+(k=l((V-=F)/e))*i,k&&-o<=K&&K<=o&&(V-=k*e,Y=K),X=1),X&&(I.year=V,I.time=Y,I.nano=$),I}function x(I){var k=new Date(0);return k.setTime(I),k}function v(V,K){V=+V||0;var X=l((K=(K|0)*s)/n)+l(V/n),K=K%n+V%n,V=l(K/n);return V&&(X+=V,K-=V*n),new g(1e3*K,0,X*e)}function b(I,k,X,K,V,Y){return function(F,z){var R=w(this);F=F||new Array(8),T(F,z|=0);var N=Math.floor(R.time/1e3),R=R.year*(t*r/e),M=l(R/s)+l(N/s),R=R%s+N%s,N=Math.floor(R/s);return N&&(M+=N,R-=N*s),$(F,z+V,M),$(F,z+Y,R),F};function $(F,z,M){F[z+I]=M>>24&255,F[z+k]=M>>16&255,F[z+X]=M>>8&255,F[z+K]=255&M}}function S(I,k,X,K,V,Y){return function(F,z){T(F,z|=0);var M=$(F,z+V);return v($(F,z+Y),M)};function $(F,z){return 16777216*F[z+I]+(F[z+k]<<16|F[z+X]<<8|F[z+K])}}function T(I,k){if(I=I&&I.length,I==null)throw new TypeError("Invalid Buffer");if(I<k+8)throw new RangeError("Out of range")}function D(I){return(9<I?"":"0")+(0|I)}function A(I,k){return(c+(0|I)).substr(-k)}}()});var QP=ft((ive,YP)=>{"use strict";YP.exports=r=>{if(Object.prototype.toString.call(r)!=="[object Object]")return!1;let e=Object.getPrototypeOf(r);return e===null||e===Object.prototype}});var nR=ft((tR,rR)=>{"use strict";var m3=QP(),{hasOwnProperty:JP}=Object.prototype,{propertyIsEnumerable:zW}=Object,ed=(r,e,t)=>Object.defineProperty(r,e,{value:t,writable:!0,enumerable:!0,configurable:!0}),KW=tR,ZP={concatArrays:!1,ignoreUndefined:!1},g3=r=>{let e=[];for(let t in r)JP.call(r,t)&&e.push(t);if(Object.getOwnPropertySymbols){let t=Object.getOwnPropertySymbols(r);for(let n of t)zW.call(r,n)&&e.push(n)}return e};function td(r){return Array.isArray(r)?qW(r):m3(r)?jW(r):r}function qW(r){let e=r.slice(0,0);return g3(r).forEach(t=>{ed(e,t,td(r[t]))}),e}function jW(r){let e=Object.getPrototypeOf(r)===null?Object.create(null):{};return g3(r).forEach(t=>{ed(e,t,td(r[t]))}),e}var eR=(r,e,t,n)=>(t.forEach(i=>{typeof e[i]>"u"&&n.ignoreUndefined||(i in r&&r[i]!==Object.getPrototypeOf(r)?ed(r,i,F9(r[i],e[i],n)):ed(r,i,td(e[i])))}),r),WW=(r,e,t)=>{let n=r.slice(0,0),i=0;return[r,e].forEach(o=>{let s=[];for(let a=0;a<o.length;a++)JP.call(o,a)&&(s.push(String(a)),o===r?ed(n,i++,o[a]):ed(n,i++,td(o[a])));n=eR(n,o,g3(o).filter(a=>!s.includes(a)),t)}),n};function F9(r,e,t){return t.concatArrays&&Array.isArray(r)&&Array.isArray(e)?WW(r,e,t):!m3(e)||!m3(r)?td(e):eR(r,e,g3(e),t)}rR.exports=function(...r){let e=F9(td(ZP),this!==KW&&this||{},ZP),t={_:{}};for(let n of r)if(n!==void 0){if(!m3(n))throw new TypeError("`"+n+"` is not an Option Object");t=F9(t,{_:n},e)}return t._}});var sR=ft((sve,oR)=>{"use strict";function GW(r){return r>=55296&&r<=56319}function XW(r){return r>=56320&&r<=57343}oR.exports=function(e,t,n){if(typeof t!="string")throw new Error("Input must be string");for(var i=t.length,o=0,s,a,c=0;c<i;c+=1){if(s=t.charCodeAt(c),a=t[c],GW(s)&&XW(t.charCodeAt(c+1))&&(c+=1,a+=t[c]),o+=e(a),o===n)return t.slice(0,c+1);if(o>n)return t.slice(0,c-a.length+1)}return t}});var cR=ft((ave,aR)=>{"use strict";function YW(r){return r>=55296&&r<=56319}function QW(r){return r>=56320&&r<=57343}aR.exports=function(e){if(typeof e!="string")throw new Error("Input must be string");for(var t=e.length,n=0,i=null,o=null,s=0;s<t;s++)i=e.charCodeAt(s),QW(i)?o!=null&&YW(o)?n+=1:n+=3:i<=127?n+=1:i>=128&&i<=2047?n+=2:i>=2048&&i<=65535&&(n+=3),o=i;return n}});var uR=ft((cve,lR)=>{"use strict";var ZW=sR(),JW=cR();lR.exports=ZW.bind(null,JW)});var hR=ft((lve,dR)=>{"use strict";var eG=uR(),tG=/[\/\?<>\\:\*\|"]/g,rG=/[\x00-\x1f\x80-\x9f]/g,nG=/^\.+$/,iG=/^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,oG=/[\. ]+$/;function fR(r,e){if(typeof r!="string")throw new Error("Input must be string");var t=r.replace(tG,e).replace(rG,e).replace(nG,e).replace(iG,e).replace(oG,e);return eG(t,255)}dR.exports=function(r,e){var t=e&&e.replacement||"",n=fR(r,t);return t===""?n:fR(n,"")}});var Ms=ft(nd=>{"use strict";var aG="[object ArrayBuffer]",Bs=class r{static isArrayBuffer(e){return Object.prototype.toString.call(e)===aG}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),i=r.toUint8Array(t);if(n.length!==i.byteLength)return!1;for(let o=0;o<n.length;o++)if(n[o]!==i[o])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 s of t)n+=s.byteLength;let i=new Uint8Array(n),o=0;for(let s of t){let a=this.toUint8Array(s);i.set(a,o),o+=a.length}return e[e.length-1]instanceof Function?this.toView(i,e[e.length-1]):i.buffer}},$9="string",cG=/^[0-9a-f\s]+$/i,lG=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,uG=/^[a-zA-Z0-9-_]+$/,w3=class{static fromString(e){let t=unescape(encodeURIComponent(e)),n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t.charCodeAt(i);return n.buffer}static toString(e){let t=Bs.toUint8Array(e),n="";for(let o=0;o<t.length;o++)n+=String.fromCharCode(t[o]);return decodeURIComponent(escape(n))}},Ni=class{static toString(e,t=!1){let n=Bs.toArrayBuffer(e),i=new DataView(n),o="";for(let s=0;s<n.byteLength;s+=2){let a=i.getUint16(s,t);o+=String.fromCharCode(a)}return o}static fromString(e,t=!1){let n=new ArrayBuffer(e.length*2),i=new DataView(n);for(let o=0;o<e.length;o++)i.setUint16(o*2,e.charCodeAt(o),t);return n}},x3=class r{static isHex(e){return typeof e===$9&&cG.test(e)}static isBase64(e){return typeof e===$9&&lG.test(e)}static isBase64Url(e){return typeof e===$9&&uG.test(e)}static ToString(e,t="utf8"){let n=Bs.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 Ni.toString(n,!0);case"utf16":case"utf16be":return Ni.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 Ni.fromString(e,!0);case"utf16":case"utf16be":return Ni.fromString(e);default:throw new Error(`Unknown type of encoding '${t}'`)}}static ToBase64(e){let t=Bs.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 w3.fromString(e);case"utf16":case"utf16be":return Ni.fromString(e);case"utf16le":case"usc2":return Ni.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 w3.toString(e);case"utf16":case"utf16be":return Ni.toString(e);case"utf16le":case"usc2":return Ni.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 i=0;i<t;i++)n[i]=e.charCodeAt(i);return n.buffer}static ToBinary(e){let t=Bs.toUint8Array(e),n="";for(let i=0;i<t.length;i++)n+=String.fromCharCode(t[i]);return n}static ToHex(e){let t=Bs.toUint8Array(e),n="",i=t.length;for(let o=0;o<i;o++){let s=t[o];s<16&&(n+="0"),n+=s.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 i=0;i<t.length;i=i+2){let o=t.slice(i,i+2);n[i/2]=parseInt(o,16)}return n.buffer}static ToUtf16String(e,t=!1){return Ni.toString(e,t)}static FromUtf16String(e,t=!1){return Ni.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,"")||""}};x3.DEFAULT_UTF8_ENCODING="utf8";function fG(r,...e){let t=arguments[0];for(let n=1;n<arguments.length;n++){let i=arguments[n];for(let o in i)t[o]=i[o]}return t}function dG(...r){let e=r.map(i=>i.byteLength).reduce((i,o)=>i+o),t=new Uint8Array(e),n=0;return r.map(i=>new Uint8Array(i)).forEach(i=>{for(let o of i)t[n++]=o}),t.buffer}function hG(r,e){if(!(r&&e)||r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<r.byteLength;i++)if(t[i]!==n[i])return!1;return!0}nd.BufferSourceConverter=Bs;nd.Convert=x3;nd.assign=fG;nd.combine=dG;nd.isEqual=hG});var $D=ft(()=>{var FD;(function(r){(function(e){var t=typeof globalThis=="object"||typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof this=="object"?this:a(),n=i(r);typeof t.Reflect<"u"&&(n=i(t.Reflect,n)),e(n,t),typeof t.Reflect>"u"&&(t.Reflect=r);function i(c,l){return function(u,f){Object.defineProperty(c,u,{configurable:!0,writable:!0,value:f}),l&&l(u,f)}}function o(){try{return Function("return this;")()}catch{}}function s(){try{return(0,eval)("(function() { return this; })()")}catch{}}function a(){return o()||s()}})(function(e,t){var n=Object.prototype.hasOwnProperty,i=typeof Symbol=="function",o=i&&typeof Symbol.toPrimitive<"u"?Symbol.toPrimitive:"@@toPrimitive",s=i&&typeof Symbol.iterator<"u"?Symbol.iterator:"@@iterator",a=typeof Object.create=="function",c={__proto__:[]}instanceof Array,l=!a&&!c,u={create:a?function(){return m8(Object.create(null))}:c?function(){return m8({__proto__:null})}:function(){return m8({})},has:l?function(C,L){return n.call(C,L)}:function(C,L){return L in C},get:l?function(C,L){return n.call(C,L)?C[L]:void 0}:function(C,L){return C[L]}},f=Object.getPrototypeOf(Function),h=typeof Map=="function"&&typeof Map.prototype.entries=="function"?Map:_F(),d=typeof Set=="function"&&typeof Set.prototype.entries=="function"?Set:IF(),m=typeof WeakMap=="function"?WeakMap:TF(),g=i?Symbol.for("@reflect-metadata:registry"):void 0,w=EF(),x=SF(w);function v(C,L,j,te){if(q(j)){if(!Rt(C))throw new TypeError;if(!mr(L))throw new TypeError;return V(C,L)}else{if(!Rt(C))throw new TypeError;if(!le(L))throw new TypeError;if(!le(te)&&!q(te)&&!ge(te))throw new TypeError;return ge(te)&&(te=void 0),j=bt(j),Y(C,L,j,te)}}e("decorate",v);function b(C,L){function j(te,Ae){if(!le(te))throw new TypeError;if(!q(Ae)&&!Qn(Ae))throw new TypeError;R(C,L,te,Ae)}return j}e("metadata",b);function S(C,L,j,te){if(!le(j))throw new TypeError;return q(te)||(te=bt(te)),R(C,L,j,te)}e("defineMetadata",S);function T(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),$(C,L,j)}e("hasMetadata",T);function D(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),F(C,L,j)}e("hasOwnMetadata",D);function A(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),z(C,L,j)}e("getMetadata",A);function I(C,L,j){if(!le(L))throw new TypeError;return q(j)||(j=bt(j)),M(C,L,j)}e("getOwnMetadata",I);function k(C,L){if(!le(C))throw new TypeError;return q(L)||(L=bt(L)),N(C,L)}e("getMetadataKeys",k);function X(C,L){if(!le(C))throw new TypeError;return q(L)||(L=bt(L)),Z(C,L)}e("getOwnMetadataKeys",X);function K(C,L,j){if(!le(L))throw new TypeError;if(q(j)||(j=bt(j)),!le(L))throw new TypeError;q(j)||(j=bt(j));var te=gh(L,j,!1);return q(te)?!1:te.OrdinaryDeleteMetadata(C,L,j)}e("deleteMetadata",K);function V(C,L){for(var j=C.length-1;j>=0;--j){var te=C[j],Ae=te(L);if(!q(Ae)&&!ge(Ae)){if(!mr(Ae))throw new TypeError;L=Ae}}return L}function Y(C,L,j,te){for(var Ae=C.length-1;Ae>=0;--Ae){var Yt=C[Ae],gr=Yt(L,j,te);if(!q(gr)&&!ge(gr)){if(!le(gr))throw new TypeError;te=gr}}return te}function $(C,L,j){var te=F(C,L,j);if(te)return!0;var Ae=p8(L);return ge(Ae)?!1:$(C,Ae,j)}function F(C,L,j){var te=gh(L,j,!1);return q(te)?!1:Ye(te.OrdinaryHasOwnMetadata(C,L,j))}function z(C,L,j){var te=F(C,L,j);if(te)return M(C,L,j);var Ae=p8(L);if(!ge(Ae))return z(C,Ae,j)}function M(C,L,j){var te=gh(L,j,!1);if(!q(te))return te.OrdinaryGetOwnMetadata(C,L,j)}function R(C,L,j,te){var Ae=gh(j,te,!0);Ae.OrdinaryDefineOwnMetadata(C,L,j,te)}function N(C,L){var j=Z(C,L),te=p8(C);if(te===null)return j;var Ae=N(te,L);if(Ae.length<=0)return j;if(j.length<=0)return Ae;for(var Yt=new d,gr=[],qe=0,ae=j;qe<ae.length;qe++){var fe=ae[qe],he=Yt.has(fe);he||(Yt.add(fe),gr.push(fe))}for(var we=0,je=Ae;we<je.length;we++){var fe=je[we],he=Yt.has(fe);he||(Yt.add(fe),gr.push(fe))}return gr}function Z(C,L){var j=gh(C,L,!1);return j?j.OrdinaryOwnMetadataKeys(C,L):[]}function ne(C){if(C===null)return 1;switch(typeof C){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return C===null?1:6;default:return 6}}function q(C){return C===void 0}function ge(C){return C===null}function ke(C){return typeof C=="symbol"}function le(C){return typeof C=="object"?C!==null:typeof C=="function"}function De(C,L){switch(ne(C)){case 0:return C;case 1:return C;case 2:return C;case 3:return C;case 4:return C;case 5:return C}var j=L===3?"string":L===5?"number":"default",te=mh(C,o);if(te!==void 0){var Ae=te.call(C,j);if(le(Ae))throw new TypeError;return Ae}return et(C,j==="default"?"number":j)}function et(C,L){if(L==="string"){var j=C.toString;if(Et(j)){var te=j.call(C);if(!le(te))return te}var Ae=C.valueOf;if(Et(Ae)){var te=Ae.call(C);if(!le(te))return te}}else{var Ae=C.valueOf;if(Et(Ae)){var te=Ae.call(C);if(!le(te))return te}var Yt=C.toString;if(Et(Yt)){var te=Yt.call(C);if(!le(te))return te}}throw new TypeError}function Ye(C){return!!C}function pt(C){return""+C}function bt(C){var L=De(C,3);return ke(L)?L:pt(L)}function Rt(C){return Array.isArray?Array.isArray(C):C instanceof Object?C instanceof Array:Object.prototype.toString.call(C)==="[object Array]"}function Et(C){return typeof C=="function"}function mr(C){return typeof C=="function"}function Qn(C){switch(ne(C)){case 3:return!0;case 4:return!0;default:return!1}}function ds(C,L){return C===L||C!==C&&L!==L}function mh(C,L){var j=C[L];if(j!=null){if(!Et(j))throw new TypeError;return j}}function Gm(C){var L=mh(C,s);if(!Et(L))throw new TypeError;var j=L.call(C);if(!le(j))throw new TypeError;return j}function Xm(C){return C.value}function Ym(C){var L=C.next();return L.done?!1:L}function Qm(C){var L=C.return;L&&L.call(C)}function p8(C){var L=Object.getPrototypeOf(C);if(typeof C!="function"||C===f||L!==f)return L;var j=C.prototype,te=j&&Object.getPrototypeOf(j);if(te==null||te===Object.prototype)return L;var Ae=te.constructor;return typeof Ae!="function"||Ae===C?L:Ae}function vF(){var C;!q(g)&&typeof t.Reflect<"u"&&!(g in t.Reflect)&&typeof t.Reflect.defineMetadata=="function"&&(C=AF(t.Reflect));var L,j,te,Ae=new m,Yt={registerProvider:gr,getProvider:ae,setProvider:he};return Yt;function gr(we){if(!Object.isExtensible(Yt))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case C===we:break;case q(L):L=we;break;case L===we:break;case q(j):j=we;break;case j===we:break;default:te===void 0&&(te=new d),te.add(we);break}}function qe(we,je){if(!q(L)){if(L.isProviderFor(we,je))return L;if(!q(j)){if(j.isProviderFor(we,je))return L;if(!q(te))for(var Tt=Gm(te);;){var Qt=Ym(Tt);if(!Qt)return;var Gi=Xm(Qt);if(Gi.isProviderFor(we,je))return Qm(Tt),Gi}}}if(!q(C)&&C.isProviderFor(we,je))return C}function ae(we,je){var Tt=Ae.get(we),Qt;return q(Tt)||(Qt=Tt.get(je)),q(Qt)&&(Qt=qe(we,je),q(Qt)||(q(Tt)&&(Tt=new h,Ae.set(we,Tt)),Tt.set(je,Qt))),Qt}function fe(we){if(q(we))throw new TypeError;return L===we||j===we||!q(te)&&te.has(we)}function he(we,je,Tt){if(!fe(Tt))throw new Error("Metadata provider not registered.");var Qt=ae(we,je);if(Qt!==Tt){if(!q(Qt))return!1;var Gi=Ae.get(we);q(Gi)&&(Gi=new h,Ae.set(we,Gi)),Gi.set(je,Tt)}return!0}}function EF(){var C;return!q(g)&&le(t.Reflect)&&Object.isExtensible(t.Reflect)&&(C=t.Reflect[g]),q(C)&&(C=vF()),!q(g)&&le(t.Reflect)&&Object.isExtensible(t.Reflect)&&Object.defineProperty(t.Reflect,g,{enumerable:!1,configurable:!1,writable:!1,value:C}),C}function SF(C){var L=new m,j={isProviderFor:function(fe,he){var we=L.get(fe);return q(we)?!1:we.has(he)},OrdinaryDefineOwnMetadata:gr,OrdinaryHasOwnMetadata:Ae,OrdinaryGetOwnMetadata:Yt,OrdinaryOwnMetadataKeys:qe,OrdinaryDeleteMetadata:ae};return w.registerProvider(j),j;function te(fe,he,we){var je=L.get(fe),Tt=!1;if(q(je)){if(!we)return;je=new h,L.set(fe,je),Tt=!0}var Qt=je.get(he);if(q(Qt)){if(!we)return;if(Qt=new h,je.set(he,Qt),!C.setProvider(fe,he,j))throw je.delete(he),Tt&&L.delete(fe),new Error("Wrong provider for target.")}return Qt}function Ae(fe,he,we){var je=te(he,we,!1);return q(je)?!1:Ye(je.has(fe))}function Yt(fe,he,we){var je=te(he,we,!1);if(!q(je))return je.get(fe)}function gr(fe,he,we,je){var Tt=te(we,je,!0);Tt.set(fe,he)}function qe(fe,he){var we=[],je=te(fe,he,!1);if(q(je))return we;for(var Tt=je.keys(),Qt=Gm(Tt),Gi=0;;){var gS=Ym(Qt);if(!gS)return we.length=Gi,we;var CF=Xm(gS);try{we[Gi]=CF}catch(kF){try{Qm(Qt)}finally{throw kF}}Gi++}}function ae(fe,he,we){var je=te(he,we,!1);if(q(je)||!je.delete(fe))return!1;if(je.size===0){var Tt=L.get(he);q(Tt)||(Tt.delete(we),Tt.size===0&&L.delete(Tt))}return!0}}function AF(C){var L=C.defineMetadata,j=C.hasOwnMetadata,te=C.getOwnMetadata,Ae=C.getOwnMetadataKeys,Yt=C.deleteMetadata,gr=new m,qe={isProviderFor:function(ae,fe){var he=gr.get(ae);return!q(he)&&he.has(fe)?!0:Ae(ae,fe).length?(q(he)&&(he=new d,gr.set(ae,he)),he.add(fe),!0):!1},OrdinaryDefineOwnMetadata:L,OrdinaryHasOwnMetadata:j,OrdinaryGetOwnMetadata:te,OrdinaryOwnMetadataKeys:Ae,OrdinaryDeleteMetadata:Yt};return qe}function gh(C,L,j){var te=w.getProvider(C,L);if(!q(te))return te;if(j){if(w.setProvider(C,L,x))return x;throw new Error("Illegal state.")}}function _F(){var C={},L=[],j=function(){function qe(ae,fe,he){this._index=0,this._keys=ae,this._values=fe,this._selector=he}return qe.prototype["@@iterator"]=function(){return this},qe.prototype[s]=function(){return this},qe.prototype.next=function(){var ae=this._index;if(ae>=0&&ae<this._keys.length){var fe=this._selector(this._keys[ae],this._values[ae]);return ae+1>=this._keys.length?(this._index=-1,this._keys=L,this._values=L):this._index++,{value:fe,done:!1}}return{value:void 0,done:!0}},qe.prototype.throw=function(ae){throw this._index>=0&&(this._index=-1,this._keys=L,this._values=L),ae},qe.prototype.return=function(ae){return this._index>=0&&(this._index=-1,this._keys=L,this._values=L),{value:ae,done:!0}},qe}(),te=function(){function qe(){this._keys=[],this._values=[],this._cacheKey=C,this._cacheIndex=-2}return Object.defineProperty(qe.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),qe.prototype.has=function(ae){return this._find(ae,!1)>=0},qe.prototype.get=function(ae){var fe=this._find(ae,!1);return fe>=0?this._values[fe]:void 0},qe.prototype.set=function(ae,fe){var he=this._find(ae,!0);return this._values[he]=fe,this},qe.prototype.delete=function(ae){var fe=this._find(ae,!1);if(fe>=0){for(var he=this._keys.length,we=fe+1;we<he;we++)this._keys[we-1]=this._keys[we],this._values[we-1]=this._values[we];return this._keys.length--,this._values.length--,ds(ae,this._cacheKey)&&(this._cacheKey=C,this._cacheIndex=-2),!0}return!1},qe.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=C,this._cacheIndex=-2},qe.prototype.keys=function(){return new j(this._keys,this._values,Ae)},qe.prototype.values=function(){return new j(this._keys,this._values,Yt)},qe.prototype.entries=function(){return new j(this._keys,this._values,gr)},qe.prototype["@@iterator"]=function(){return this.entries()},qe.prototype[s]=function(){return this.entries()},qe.prototype._find=function(ae,fe){if(!ds(this._cacheKey,ae)){this._cacheIndex=-1;for(var he=0;he<this._keys.length;he++)if(ds(this._keys[he],ae)){this._cacheIndex=he;break}}return this._cacheIndex<0&&fe&&(this._cacheIndex=this._keys.length,this._keys.push(ae),this._values.push(void 0)),this._cacheIndex},qe}();return te;function Ae(qe,ae){return qe}function Yt(qe,ae){return ae}function gr(qe,ae){return[qe,ae]}}function IF(){var C=function(){function L(){this._map=new h}return Object.defineProperty(L.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),L.prototype.has=function(j){return this._map.has(j)},L.prototype.add=function(j){return this._map.set(j,j),this},L.prototype.delete=function(j){return this._map.delete(j)},L.prototype.clear=function(){this._map.clear()},L.prototype.keys=function(){return this._map.keys()},L.prototype.values=function(){return this._map.keys()},L.prototype.entries=function(){return this._map.entries()},L.prototype["@@iterator"]=function(){return this.keys()},L.prototype[s]=function(){return this.keys()},L}();return C}function TF(){var C=16,L=u.create(),j=te();return function(){function ae(){this._key=te()}return ae.prototype.has=function(fe){var he=Ae(fe,!1);return he!==void 0?u.has(he,this._key):!1},ae.prototype.get=function(fe){var he=Ae(fe,!1);return he!==void 0?u.get(he,this._key):void 0},ae.prototype.set=function(fe,he){var we=Ae(fe,!0);return we[this._key]=he,this},ae.prototype.delete=function(fe){var he=Ae(fe,!1);return he!==void 0?delete he[this._key]:!1},ae.prototype.clear=function(){this._key=te()},ae}();function te(){var ae;do ae="@@WeakMap@@"+qe();while(u.has(L,ae));return L[ae]=!0,ae}function Ae(ae,fe){if(!n.call(ae,j)){if(!fe)return;Object.defineProperty(ae,j,{value:u.create()})}return ae[j]}function Yt(ae,fe){for(var he=0;he<fe;++he)ae[he]=Math.random()*255|0;return ae}function gr(ae){if(typeof Uint8Array=="function"){var fe=new Uint8Array(ae);return typeof crypto<"u"?crypto.getRandomValues(fe):typeof msCrypto<"u"?msCrypto.getRandomValues(fe):Yt(fe,ae),fe}return Yt(new Array(ae),ae)}function qe(){var ae=gr(C);ae[6]=ae[6]&79|64,ae[8]=ae[8]&191|128;for(var fe="",he=0;he<C;++he){var we=ae[he];(he===4||he===6||he===8)&&(fe+="-"),we<16&&(fe+="0"),fe+=we.toString(16).toLowerCase()}return fe}}function m8(C){return C.__=void 0,delete C.__,C}})})(FD||(FD={}))});var XN=ft((PBe,R4)=>{var kN,PN,RN,DN,NN,ON,LN,BN,MN,P4,fv,UN,FN,Ud,$N,HN,VN,zN,KN,qN,jN,WN,GN;(function(r){var e=typeof globalThis=="object"?globalThis:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){r(t(e,t(n)))}):typeof R4=="object"&&typeof R4.exports=="object"?r(t(e,t(R4.exports))):r(t(e));function t(n,i){return n!==e&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(o,s){return n[o]=i?i(o,s):s}}})(function(r){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var i in n)n.hasOwnProperty(i)&&(t[i]=n[i])};kN=function(t,n){e(t,n);function i(){this.constructor=t}t.prototype=n===null?Object.create(n):(i.prototype=n.prototype,new i)},PN=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])}return t},RN=function(t,n){var i={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.indexOf(o)<0&&(i[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,o=Object.getOwnPropertySymbols(t);s<o.length;s++)n.indexOf(o[s])<0&&Object.prototype.propertyIsEnumerable.call(t,o[s])&&(i[o[s]]=t[o[s]]);return i},DN=function(t,n,i,o){var s=arguments.length,a=s<3?n:o===null?o=Object.getOwnPropertyDescriptor(n,i):o,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,n,i,o);else for(var l=t.length-1;l>=0;l--)(c=t[l])&&(a=(s<3?c(a):s>3?c(n,i,a):c(n,i))||a);return s>3&&a&&Object.defineProperty(n,i,a),a},NN=function(t,n){return function(i,o){n(i,o,t)}},ON=function(t,n){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,n)},LN=function(t,n,i,o){function s(a){return a instanceof i?a:new i(function(c){c(a)})}return new(i||(i=Promise))(function(a,c){function l(h){try{f(o.next(h))}catch(d){c(d)}}function u(h){try{f(o.throw(h))}catch(d){c(d)}}function f(h){h.done?a(h.value):s(h.value).then(l,u)}f((o=o.apply(t,n||[])).next())})},BN=function(t,n){var i={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},o,s,a,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(c[Symbol.iterator]=function(){return this}),c;function l(f){return function(h){return u([f,h])}}function u(f){if(o)throw new TypeError("Generator is already executing.");for(;i;)try{if(o=1,s&&(a=f[0]&2?s.return:f[0]?s.throw||((a=s.return)&&a.call(s),0):s.next)&&!(a=a.call(s,f[1])).done)return a;switch(s=0,a&&(f=[f[0]&2,a.value]),f[0]){case 0:case 1:a=f;break;case 4:return i.label++,{value:f[1],done:!1};case 5:i.label++,s=f[1],f=[0];continue;case 7:f=i.ops.pop(),i.trys.pop();continue;default:if(a=i.trys,!(a=a.length>0&&a[a.length-1])&&(f[0]===6||f[0]===2)){i=0;continue}if(f[0]===3&&(!a||f[1]>a[0]&&f[1]<a[3])){i.label=f[1];break}if(f[0]===6&&i.label<a[1]){i.label=a[1],a=f;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(f);break}a[2]&&i.ops.pop(),i.trys.pop();continue}f=n.call(t,i)}catch(h){f=[6,h],s=0}finally{o=a=0}if(f[0]&5)throw f[1];return{value:f[0]?f[1]:void 0,done:!0}}},GN=function(t,n,i,o){o===void 0&&(o=i),t[o]=n[i]},MN=function(t,n){for(var i in t)i!=="default"&&!n.hasOwnProperty(i)&&(n[i]=t[i])},P4=function(t){var n=typeof Symbol=="function"&&Symbol.iterator,i=n&&t[n],o=0;if(i)return i.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&o>=t.length&&(t=void 0),{value:t&&t[o++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")},fv=function(t,n){var i=typeof Symbol=="function"&&t[Symbol.iterator];if(!i)return t;var o=i.call(t),s,a=[],c;try{for(;(n===void 0||n-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(l){c={error:l}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(c)throw c.error}}return a},UN=function(){for(var t=[],n=0;n<arguments.length;n++)t=t.concat(fv(arguments[n]));return t},FN=function(){for(var t=0,n=0,i=arguments.length;n<i;n++)t+=arguments[n].length;for(var o=Array(t),s=0,n=0;n<i;n++)for(var a=arguments[n],c=0,l=a.length;c<l;c++,s++)o[s]=a[c];return o},Ud=function(t){return this instanceof Ud?(this.v=t,this):new Ud(t)},$N=function(t,n,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=i.apply(t,n||[]),s,a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(m){o[m]&&(s[m]=function(g){return new Promise(function(w,x){a.push([m,g,w,x])>1||l(m,g)})})}function l(m,g){try{u(o[m](g))}catch(w){d(a[0][3],w)}}function u(m){m.value instanceof Ud?Promise.resolve(m.value.v).then(f,h):d(a[0][2],m)}function f(m){l("next",m)}function h(m){l("throw",m)}function d(m,g){m(g),a.shift(),a.length&&l(a[0][0],a[0][1])}},HN=function(t){var n,i;return n={},o("next"),o("throw",function(s){throw s}),o("return"),n[Symbol.iterator]=function(){return this},n;function o(s,a){n[s]=t[s]?function(c){return(i=!i)?{value:Ud(t[s](c)),done:s==="return"}:a?a(c):c}:a}},VN=function(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t[Symbol.asyncIterator],i;return n?n.call(t):(t=typeof P4=="function"?P4(t):t[Symbol.iterator](),i={},o("next"),o("throw"),o("return"),i[Symbol.asyncIterator]=function(){return this},i);function o(a){i[a]=t[a]&&function(c){return new Promise(function(l,u){c=t[a](c),s(l,u,c.done,c.value)})}}function s(a,c,l,u){Promise.resolve(u).then(function(f){a({value:f,done:l})},c)}},zN=function(t,n){return Object.defineProperty?Object.defineProperty(t,"raw",{value:n}):t.raw=n,t},KN=function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var i in t)Object.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n.default=t,n},qN=function(t){return t&&t.__esModule?t:{default:t}},jN=function(t,n){if(!n.has(t))throw new TypeError("attempted to get private field on non-instance");return n.get(t)},WN=function(t,n,i){if(!n.has(t))throw new TypeError("attempted to set private field on non-instance");return n.set(t,i),i},r("__extends",kN),r("__assign",PN),r("__rest",RN),r("__decorate",DN),r("__param",NN),r("__metadata",ON),r("__awaiter",LN),r("__generator",BN),r("__exportStar",MN),r("__createBinding",GN),r("__values",P4),r("__read",fv),r("__spread",UN),r("__spreadArrays",FN),r("__await",Ud),r("__asyncGenerator",$N),r("__asyncDelegator",HN),r("__asyncValues",VN),r("__makeTemplateObject",zN),r("__importStar",KN),r("__importDefault",qN),r("__classPrivateFieldGet",jN),r("__classPrivateFieldSet",WN)})});var TL=ft(c6=>{"use strict";Object.defineProperty(c6,"__esModule",{value:!0});var tE=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,i)=>{this.pullQueue.push({resolve:n,reject:i})})},return:()=>(this.isStopped=!0,this.pushQueue.length=0,this.remove(),Promise.resolve({value:void 0,done:!0}))}}},a6=class{constructor(e,{highWaterMark:t=100,lowWaterMark:n=1}={}){let i=new tE;i.highWaterMark=t,i.lowWaterMark=n,i.removeCallback=e({push:o=>i.push(o),stop:()=>i.stop(),fail:o=>i.fail(o),on:(o,s)=>{i.eventHandlers[o]=s}})||(()=>{}),this[Symbol.asyncIterator]=()=>i[Symbol.asyncIterator](),Object.freeze(this)}};c6.EventIterator=a6;c6.default=a6});var CL=ft(hm=>{"use strict";Object.defineProperty(hm,"__esModule",{value:!0});var rE=TL();hm.EventIterator=rE.EventIterator;function xY(r,e,t){return new rE.EventIterator(({push:n})=>(this.addEventListener(r,n,e),()=>this.removeEventListener(r,n,e)),t)}hm.subscribe=xY;hm.default=rE.EventIterator});var yB=ft((Nje,gB)=>{function ji(r,e){typeof e=="boolean"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(r)),this._timeouts=r,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}gB.exports=ji;ji.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};ji.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};ji.prototype.retry=function(r){if(this._timeout&&clearTimeout(this._timeout),!r)return!1;var e=new Date().getTime();if(r&&e-this._operationStart>=this._maxRetryTime)return this._errors.push(r),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(r);var t=this._timeouts.shift();if(t===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),t=this._cachedTimeouts.slice(-1);else return!1;var n=this;return this._timer=setTimeout(function(){n._attempts++,n._operationTimeoutCb&&(n._timeout=setTimeout(function(){n._operationTimeoutCb(n._attempts)},n._operationTimeout),n._options.unref&&n._timeout.unref()),n._fn(n._attempts)},t),this._options.unref&&this._timer.unref(),!0};ji.prototype.attempt=function(r,e){this._fn=r,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var t=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){t._operationTimeoutCb()},t._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};ji.prototype.try=function(r){console.log("Using RetryOperation.try() is deprecated"),this.attempt(r)};ji.prototype.start=function(r){console.log("Using RetryOperation.start() is deprecated"),this.attempt(r)};ji.prototype.start=ji.prototype.try;ji.prototype.errors=function(){return this._errors};ji.prototype.attempts=function(){return this._attempts};ji.prototype.mainError=function(){if(this._errors.length===0)return null;for(var r={},e=null,t=0,n=0;n<this._errors.length;n++){var i=this._errors[n],o=i.message,s=(r[o]||0)+1;r[o]=s,s>=t&&(e=i,t=s)}return e}});var wB=ft(Tu=>{var iQ=yB();Tu.operation=function(r){var e=Tu.timeouts(r);return new iQ(e,{forever:r&&(r.forever||r.retries===1/0),unref:r&&r.unref,maxRetryTime:r&&r.maxRetryTime})};Tu.timeouts=function(r){if(r instanceof Array)return[].concat(r);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var t in r)e[t]=r[t];if(e.minTimeout>e.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var n=[],i=0;i<e.retries;i++)n.push(this.createTimeout(i,e));return r&&r.forever&&!n.length&&n.push(this.createTimeout(i,e)),n.sort(function(o,s){return o-s}),n};Tu.createTimeout=function(r,e){var t=e.randomize?Math.random()+1:1,n=Math.round(t*Math.max(e.minTimeout,1)*Math.pow(e.factor,r));return n=Math.min(n,e.maxTimeout),n};Tu.wrap=function(r,e,t){if(e instanceof Array&&(t=e,e=null),!t){t=[];for(var n in r)typeof r[n]=="function"&&t.push(n)}for(var i=0;i<t.length;i++){var o=t[i],s=r[o];r[o]=function(c){var l=Tu.operation(e),u=Array.prototype.slice.call(arguments,1),f=u.pop();u.push(function(h){l.retry(h)||(h&&(arguments[0]=l.mainError()),f.apply(this,arguments))}),l.attempt(function(){c.apply(r,u)})}.bind(r,s),r[o].options=e}}});var bB=ft((Lje,xB)=>{xB.exports=wB()});var VB=ft((kXe,HB)=>{HB.exports=DE;var $B=128,TQ=127,CQ=~TQ,kQ=Math.pow(2,31);function DE(r,e,t){if(Number.MAX_SAFE_INTEGER&&r>Number.MAX_SAFE_INTEGER)throw DE.bytes=0,new RangeError("Could not encode varint");e=e||[],t=t||0;for(var n=t;r>=kQ;)e[t++]=r&255|$B,r/=128;for(;r&CQ;)e[t++]=r&255|$B,r>>>=7;return e[t]=r|0,DE.bytes=t-n+1,e}});var qB=ft((PXe,KB)=>{KB.exports=NE;var PQ=128,zB=127;function NE(r,n){var t=0,n=n||0,i=0,o=n,s,a=r.length;do{if(o>=a||i>49)throw NE.bytes=0,new RangeError("Could not decode varint");s=r[o++],t+=i<28?(s&zB)<<i:(s&zB)*Math.pow(2,i),i+=7}while(s>=PQ);return NE.bytes=o-n,t}});var WB=ft((RXe,jB)=>{var RQ=Math.pow(2,7),DQ=Math.pow(2,14),NQ=Math.pow(2,21),OQ=Math.pow(2,28),LQ=Math.pow(2,35),BQ=Math.pow(2,42),MQ=Math.pow(2,49),UQ=Math.pow(2,56),FQ=Math.pow(2,63);jB.exports=function(r){return r<RQ?1:r<DQ?2:r<NQ?3:r<OQ?4:r<LQ?5:r<BQ?6:r<MQ?7:r<UQ?8:r<FQ?9:10}});var u5=ft((DXe,GB)=>{GB.exports={encode:VB(),decode:qB(),encodingLength:WB()}});var hM=ft((Rm,A5)=>{(function(r,e){"use strict";var t={version:"3.0.0",x86:{},x64:{},inputValidation:!0};function n(d){if(!Array.isArray(d)&&!ArrayBuffer.isView(d))return!1;for(var m=0;m<d.length;m++)if(!Number.isInteger(d[m])||d[m]<0||d[m]>255)return!1;return!0}function i(d,m){return(d&65535)*m+(((d>>>16)*m&65535)<<16)}function o(d,m){return d<<m|d>>>32-m}function s(d){return d^=d>>>16,d=i(d,2246822507),d^=d>>>13,d=i(d,3266489909),d^=d>>>16,d}function a(d,m){d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535],m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];var g=[0,0,0,0];return g[3]+=d[3]+m[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=d[2]+m[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=d[1]+m[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=d[0]+m[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function c(d,m){d=[d[0]>>>16,d[0]&65535,d[1]>>>16,d[1]&65535],m=[m[0]>>>16,m[0]&65535,m[1]>>>16,m[1]&65535];var g=[0,0,0,0];return g[3]+=d[3]*m[3],g[2]+=g[3]>>>16,g[3]&=65535,g[2]+=d[2]*m[3],g[1]+=g[2]>>>16,g[2]&=65535,g[2]+=d[3]*m[2],g[1]+=g[2]>>>16,g[2]&=65535,g[1]+=d[1]*m[3],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=d[2]*m[2],g[0]+=g[1]>>>16,g[1]&=65535,g[1]+=d[3]*m[1],g[0]+=g[1]>>>16,g[1]&=65535,g[0]+=d[0]*m[3]+d[1]*m[2]+d[2]*m[1]+d[3]*m[0],g[0]&=65535,[g[0]<<16|g[1],g[2]<<16|g[3]]}function l(d,m){return m%=64,m===32?[d[1],d[0]]:m<32?[d[0]<<m|d[1]>>>32-m,d[1]<<m|d[0]>>>32-m]:(m-=32,[d[1]<<m|d[0]>>>32-m,d[0]<<m|d[1]>>>32-m])}function u(d,m){return m%=64,m===0?d:m<32?[d[0]<<m|d[1]>>>32-m,d[1]<<m]:[d[1]<<m-32,0]}function f(d,m){return[d[0]^m[0],d[1]^m[1]]}function h(d){return d=f(d,[0,d[0]>>>1]),d=c(d,[4283543511,3981806797]),d=f(d,[0,d[0]>>>1]),d=c(d,[3301882366,444984403]),d=f(d,[0,d[0]>>>1]),d}t.x86.hash32=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%4,w=d.length-g,x=m,v=0,b=3432918353,S=461845907,T=0;T<w;T=T+4)v=d[T]|d[T+1]<<8|d[T+2]<<16|d[T+3]<<24,v=i(v,b),v=o(v,15),v=i(v,S),x^=v,x=o(x,13),x=i(x,5)+3864292196;switch(v=0,g){case 3:v^=d[T+2]<<16;case 2:v^=d[T+1]<<8;case 1:v^=d[T],v=i(v,b),v=o(v,15),v=i(v,S),x^=v}return x^=d.length,x=s(x),x>>>0},t.x86.hash128=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%16,w=d.length-g,x=m,v=m,b=m,S=m,T=0,D=0,A=0,I=0,k=597399067,X=2869860233,K=951274213,V=2716044179,Y=0;Y<w;Y=Y+16)T=d[Y]|d[Y+1]<<8|d[Y+2]<<16|d[Y+3]<<24,D=d[Y+4]|d[Y+5]<<8|d[Y+6]<<16|d[Y+7]<<24,A=d[Y+8]|d[Y+9]<<8|d[Y+10]<<16|d[Y+11]<<24,I=d[Y+12]|d[Y+13]<<8|d[Y+14]<<16|d[Y+15]<<24,T=i(T,k),T=o(T,15),T=i(T,X),x^=T,x=o(x,19),x+=v,x=i(x,5)+1444728091,D=i(D,X),D=o(D,16),D=i(D,K),v^=D,v=o(v,17),v+=b,v=i(v,5)+197830471,A=i(A,K),A=o(A,17),A=i(A,V),b^=A,b=o(b,15),b+=S,b=i(b,5)+2530024501,I=i(I,V),I=o(I,18),I=i(I,k),S^=I,S=o(S,13),S+=x,S=i(S,5)+850148119;switch(T=0,D=0,A=0,I=0,g){case 15:I^=d[Y+14]<<16;case 14:I^=d[Y+13]<<8;case 13:I^=d[Y+12],I=i(I,V),I=o(I,18),I=i(I,k),S^=I;case 12:A^=d[Y+11]<<24;case 11:A^=d[Y+10]<<16;case 10:A^=d[Y+9]<<8;case 9:A^=d[Y+8],A=i(A,K),A=o(A,17),A=i(A,V),b^=A;case 8:D^=d[Y+7]<<24;case 7:D^=d[Y+6]<<16;case 6:D^=d[Y+5]<<8;case 5:D^=d[Y+4],D=i(D,X),D=o(D,16),D=i(D,K),v^=D;case 4:T^=d[Y+3]<<24;case 3:T^=d[Y+2]<<16;case 2:T^=d[Y+1]<<8;case 1:T^=d[Y],T=i(T,k),T=o(T,15),T=i(T,X),x^=T}return x^=d.length,v^=d.length,b^=d.length,S^=d.length,x+=v,x+=b,x+=S,v+=x,b+=x,S+=x,x=s(x),v=s(v),b=s(b),S=s(S),x+=v,x+=b,x+=S,v+=x,b+=x,S+=x,("00000000"+(x>>>0).toString(16)).slice(-8)+("00000000"+(v>>>0).toString(16)).slice(-8)+("00000000"+(b>>>0).toString(16)).slice(-8)+("00000000"+(S>>>0).toString(16)).slice(-8)},t.x64.hash128=function(d,m){if(t.inputValidation&&!n(d))return e;m=m||0;for(var g=d.length%16,w=d.length-g,x=[0,m],v=[0,m],b=[0,0],S=[0,0],T=[2277735313,289559509],D=[1291169091,658871167],A=0;A<w;A=A+16)b=[d[A+4]|d[A+5]<<8|d[A+6]<<16|d[A+7]<<24,d[A]|d[A+1]<<8|d[A+2]<<16|d[A+3]<<24],S=[d[A+12]|d[A+13]<<8|d[A+14]<<16|d[A+15]<<24,d[A+8]|d[A+9]<<8|d[A+10]<<16|d[A+11]<<24],b=c(b,T),b=l(b,31),b=c(b,D),x=f(x,b),x=l(x,27),x=a(x,v),x=a(c(x,[0,5]),[0,1390208809]),S=c(S,D),S=l(S,33),S=c(S,T),v=f(v,S),v=l(v,31),v=a(v,x),v=a(c(v,[0,5]),[0,944331445]);switch(b=[0,0],S=[0,0],g){case 15:S=f(S,u([0,d[A+14]],48));case 14:S=f(S,u([0,d[A+13]],40));case 13:S=f(S,u([0,d[A+12]],32));case 12:S=f(S,u([0,d[A+11]],24));case 11:S=f(S,u([0,d[A+10]],16));case 10:S=f(S,u([0,d[A+9]],8));case 9:S=f(S,[0,d[A+8]]),S=c(S,D),S=l(S,33),S=c(S,T),v=f(v,S);case 8:b=f(b,u([0,d[A+7]],56));case 7:b=f(b,u([0,d[A+6]],48));case 6:b=f(b,u([0,d[A+5]],40));case 5:b=f(b,u([0,d[A+4]],32));case 4:b=f(b,u([0,d[A+3]],24));case 3:b=f(b,u([0,d[A+2]],16));case 2:b=f(b,u([0,d[A+1]],8));case 1:b=f(b,[0,d[A]]),b=c(b,T),b=l(b,31),b=c(b,D),x=f(x,b)}return x=f(x,[0,d.length]),v=f(v,[0,d.length]),x=a(x,v),v=a(v,x),x=h(x),v=h(v),x=a(x,v),v=a(v,x),("00000000"+(x[0]>>>0).toString(16)).slice(-8)+("00000000"+(x[1]>>>0).toString(16)).slice(-8)+("00000000"+(v[0]>>>0).toString(16)).slice(-8)+("00000000"+(v[1]>>>0).toString(16)).slice(-8)},typeof Rm<"u"?(typeof A5<"u"&&A5.exports&&(Rm=A5.exports=t),Rm.murmurHash3=t):typeof define=="function"&&define.amd?define([],function(){return t}):(t._murmurHash3=r.murmurHash3,t.noConflict=function(){return r.murmurHash3=t._murmurHash3,t._murmurHash3=e,t.noConflict=e,t},r.murmurHash3=t)})(Rm)});var mM=ft((IQe,pM)=>{pM.exports=hM()});var I5=ft((NQe,yM)=>{"use strict";yM.exports=class{constructor(){this._bitArrays=[],this._data=[],this._length=0,this._changedLength=!1,this._changedData=!1}set(e,t){let n=this._internalPositionFor(e,!1);if(t===void 0)n!==-1&&(this._unsetInternalPos(n),this._unsetBit(e),this._changedLength=!0,this._changedData=!0);else{let i=!1;n===-1?(n=this._data.length,this._setBit(e),this._changedData=!0):i=!0,this._setInternalPos(n,e,t,i),this._changedLength=!0}}unset(e){this.set(e,void 0)}get(e){this._sortData();let t=this._internalPositionFor(e,!0);if(t!==-1)return this._data[t][1]}push(e){return this.set(this.length,e),this.length}get length(){if(this._sortData(),this._changedLength){let e=this._data[this._data.length-1];this._length=e?e[0]+1:0,this._changedLength=!1}return this._length}forEach(e){let t=0;for(;t<this.length;)e(this.get(t),t,this),t++}map(e){let t=0,n=new Array(this.length);for(;t<this.length;)n[t]=e(this.get(t),t,this),t++;return n}reduce(e,t){let n=0,i=t;for(;n<this.length;){let o=this.get(n);i=e(i,o,n),n++}return i}find(e){let t=0,n,i;for(;t<this.length&&!n;)i=this.get(t),n=e(i),t++;return n?i:void 0}_internalPositionFor(e,t){let n=this._bytePosFor(e,t);if(n>=this._bitArrays.length)return-1;let i=this._bitArrays[n],o=e-n*7;if(!((i&1<<o)>0))return-1;let a=this._bitArrays.slice(0,n).reduce(fZ,0),c=~(4294967295<<o+1),l=gM(i&c);return a+l-1}_bytePosFor(e,t){let n=Math.floor(e/7),i=n+1;for(;!t&&this._bitArrays.length<i;)this._bitArrays.push(0);return n}_setBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]|=1<<e-t*7}_unsetBit(e){let t=this._bytePosFor(e,!1);this._bitArrays[t]&=~(1<<e-t*7)}_setInternalPos(e,t,n,i){let o=this._data,s=[t,n];if(i)this._sortData(),o[e]=s;else{if(o.length)if(o[o.length-1][0]>=t)o.push(s);else if(o[0][0]<=t)o.unshift(s);else{let a=Math.round(o.length/2);this._data=o.slice(0,a).concat(s).concat(o.slice(a))}else this._data.push(s);this._changedData=!0,this._changedLength=!0}}_unsetInternalPos(e){this._data.splice(e,1)}_sortData(){this._changedData&&this._data.sort(dZ),this._changedData=!1}bitField(){let e=[],t=8,n=0,i=0,o,s=this._bitArrays.slice();for(;s.length||n;){n===0&&(o=s.shift(),n=7);let c=Math.min(n,t),l=~(255<<c),u=o&l;i|=u<<8-t,o=o>>>c,n-=c,t-=c,(!t||!n&&!s.length)&&(e.push(i),i=0,t=8)}for(var a=e.length-1;a>0&&e[a]===0;a--)e.pop();return e}compactArray(){return this._sortData(),this._data.map(hZ)}};function fZ(r,e){return r+gM(e)}function gM(r){let e=r;return e=e-(e>>1&1431655765),e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>24}function dZ(r,e){return r[0]-e[0]}function hZ(r){return r[1]}});var yU=ft(ZE=>{ZE.read=function(r,e,t,n,i){var o,s,a=i*8-n-1,c=(1<<a)-1,l=c>>1,u=-7,f=t?i-1:0,h=t?-1:1,d=r[e+f];for(f+=h,o=d&(1<<-u)-1,d>>=-u,u+=a;u>0;o=o*256+r[e+f],f+=h,u-=8);for(s=o&(1<<-u)-1,o>>=-u,u+=n;u>0;s=s*256+r[e+f],f+=h,u-=8);if(o===0)o=1-l;else{if(o===c)return s?NaN:(d?-1:1)*(1/0);s=s+Math.pow(2,n),o=o-l}return(d?-1:1)*s*Math.pow(2,o-n)};ZE.write=function(r,e,t,n,i,o){var s,a,c,l=o*8-i-1,u=(1<<l)-1,f=u>>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,m=n?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=u):(s=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-s))<1&&(s--,c*=2),s+f>=1?e+=h/c:e+=h*Math.pow(2,1-f),e*c>=2&&(s++,c/=2),s+f>=u?(a=0,s=u):s+f>=1?(a=(e*c-1)*Math.pow(2,i),s=s+f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));i>=8;r[t+d]=a&255,d+=m,a/=256,i-=8);for(s=s<<i|a,l+=i;l>0;r[t+d]=s&255,d+=m,s/=256,l-=8);r[t+d-m]|=g*128}});var OU=ft((Gnt,NU)=>{var fh=1e3,dh=fh*60,hh=dh*60,Uu=hh*24,iee=Uu*7,oee=Uu*365.25;NU.exports=function(r,e){e=e||{};var t=typeof r;if(t==="string"&&r.length>0)return see(r);if(t==="number"&&isFinite(r))return e.long?cee(r):aee(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function see(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*oee;case"weeks":case"week":case"w":return t*iee;case"days":case"day":case"d":return t*Uu;case"hours":case"hour":case"hrs":case"hr":case"h":return t*hh;case"minutes":case"minute":case"mins":case"min":case"m":return t*dh;case"seconds":case"second":case"secs":case"sec":case"s":return t*fh;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:return}}}}function aee(r){var e=Math.abs(r);return e>=Uu?Math.round(r/Uu)+"d":e>=hh?Math.round(r/hh)+"h":e>=dh?Math.round(r/dh)+"m":e>=fh?Math.round(r/fh)+"s":r+"ms"}function cee(r){var e=Math.abs(r);return e>=Uu?X5(r,e,Uu,"day"):e>=hh?X5(r,e,hh,"hour"):e>=dh?X5(r,e,dh,"minute"):e>=fh?X5(r,e,fh,"second"):r+" ms"}function X5(r,e,t,n){var i=e>=t*1.5;return Math.round(r/t)+" "+n+(i?"s":"")}});var BU=ft((Xnt,LU)=>{function lee(r){t.debug=t,t.default=t,t.coerce=c,t.disable=s,t.enable=i,t.enabled=a,t.humanize=OU(),t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let h=0;h<u.length;h++)f=(f<<5)-f+u.charCodeAt(h),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u){let f,h=null,d,m;function g(...w){if(!g.enabled)return;let x=g,v=Number(new Date),b=v-(f||v);x.diff=b,x.prev=f,x.curr=v,f=v,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let S=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(D,A)=>{if(D==="%%")return"%";S++;let I=t.formatters[A];if(typeof I=="function"){let k=w[S];D=I.call(x,k),w.splice(S,1),S--}return D}),t.formatArgs.call(x,w),(x.log||t.log).apply(x,w)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(d!==t.namespaces&&(d=t.namespaces,m=t.enabled(u)),m),set:w=>{h=w}}),typeof t.init=="function"&&t.init(g),g}function n(u,f){let h=t(this.namespace+(typeof f>"u"?":":f)+u);return h.log=this.log,h}function i(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f=(typeof u=="string"?u:"").trim().replace(" ",",").split(",").filter(Boolean);for(let h of f)h[0]==="-"?t.skips.push(h.slice(1)):t.names.push(h)}function o(u,f){let h=0,d=0,m=-1,g=0;for(;h<u.length;)if(d<f.length&&(f[d]===u[h]||f[d]==="*"))f[d]==="*"?(m=d,g=h,d++):(h++,d++);else if(m!==-1)d=m+1,g++,h=g;else return!1;for(;d<f.length&&f[d]==="*";)d++;return d===f.length}function s(){let u=[...t.names,...t.skips.map(f=>"-"+f)].join(",");return t.enable(""),u}function a(u){for(let f of t.skips)if(o(u,f))return!1;for(let f of t.names)if(o(u,f))return!0;return!1}function c(u){return u instanceof Error?u.stack||u.message:u}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}LU.exports=lee});var MU=ft((bi,Y5)=>{bi.formatArgs=fee;bi.save=dee;bi.load=hee;bi.useColors=uee;bi.storage=pee();bi.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`."))}})();bi.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 uee(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let r;return 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&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function fee(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Y5.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,i=>{i!=="%%"&&(t++,i==="%c"&&(n=t))}),r.splice(n,0,e)}bi.log=console.debug||console.log||(()=>{});function dee(r){try{r?bi.storage.setItem("debug",r):bi.storage.removeItem("debug")}catch{}}function hee(){let r;try{r=bi.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function pee(){try{return localStorage}catch{}}Y5.exports=BU()(bi);var{formatters:mee}=Y5.exports;mee.j=function(r){try{return JSON.stringify(r)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var eF=ft((Rot,JU)=>{"use strict";JU.exports={RTLD_LAZY:1,RTLD_NOW:2,RTLD_GLOBAL:256,RTLD_LOCAL:0,RTLD_DEEPBIND:8,E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOPNOTSUPP:95,EOVERFLOW:75,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18,PRIORITY_LOW:19,PRIORITY_BELOW_NORMAL:10,PRIORITY_NORMAL:0,PRIORITY_ABOVE_NORMAL:-7,PRIORITY_HIGH:-14,PRIORITY_HIGHEST:-20,SIGHUP:1,SIGINT:2,SIGQUIT:3,SIGILL:4,SIGTRAP:5,SIGABRT:6,SIGIOT:6,SIGBUS:7,SIGFPE:8,SIGKILL:9,SIGUSR1:10,SIGSEGV:11,SIGUSR2:12,SIGPIPE:13,SIGALRM:14,SIGTERM:15,SIGCHLD:17,SIGSTKFLT:16,SIGCONT:18,SIGSTOP:19,SIGTSTP:20,SIGTTIN:21,SIGTTOU:22,SIGURG:23,SIGXCPU:24,SIGXFSZ:25,SIGVTALRM:26,SIGPROF:27,SIGWINCH:28,SIGIO:29,SIGPOLL:29,SIGPWR:30,SIGSYS:31,UV_FS_SYMLINK_DIR:1,UV_FS_SYMLINK_JUNCTION:2,O_RDONLY:0,O_WRONLY:1,O_RDWR:2,UV_DIRENT_UNKNOWN:0,UV_DIRENT_FILE:1,UV_DIRENT_DIR:2,UV_DIRENT_LINK:3,UV_DIRENT_FIFO:4,UV_DIRENT_SOCKET:5,UV_DIRENT_CHAR:6,UV_DIRENT_BLOCK:7,EXTENSIONLESS_FORMAT_JAVASCRIPT:0,EXTENSIONLESS_FORMAT_WASM:1,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,O_CREAT:64,O_EXCL:128,UV_FS_O_FILEMAP:0,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_DIRECTORY:65536,O_NOATIME:262144,O_NOFOLLOW:131072,O_SYNC:1052672,O_DSYNC:4096,O_DIRECT:16384,O_NONBLOCK:2048,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,S_IXOTH:1,F_OK:0,R_OK:4,W_OK:2,X_OK:1,UV_FS_COPYFILE_EXCL:1,COPYFILE_EXCL:1,UV_FS_COPYFILE_FICLONE:2,COPYFILE_FICLONE:2,UV_FS_COPYFILE_FICLONE_FORCE:4,COPYFILE_FICLONE_FORCE:4,OPENSSL_VERSION_NUMBER:805306624,SSL_OP_ALL:2147485776,SSL_OP_ALLOW_NO_DHE_KEX:1024,SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION:262144,SSL_OP_CIPHER_SERVER_PREFERENCE:4194304,SSL_OP_CISCO_ANYCONNECT:32768,SSL_OP_COOKIE_EXCHANGE:8192,SSL_OP_CRYPTOPRO_TLSEXT_BUG:2147483648,SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS:2048,SSL_OP_LEGACY_SERVER_CONNECT:4,SSL_OP_NO_COMPRESSION:131072,SSL_OP_NO_ENCRYPT_THEN_MAC:524288,SSL_OP_NO_QUERY_MTU:4096,SSL_OP_NO_RENEGOTIATION:1073741824,SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION:65536,SSL_OP_NO_SSLv2:0,SSL_OP_NO_SSLv3:33554432,SSL_OP_NO_TICKET:16384,SSL_OP_NO_TLSv1:67108864,SSL_OP_NO_TLSv1_1:268435456,SSL_OP_NO_TLSv1_2:134217728,SSL_OP_NO_TLSv1_3:536870912,SSL_OP_PRIORITIZE_CHACHA:2097152,SSL_OP_TLS_ROLLBACK_BUG:8388608,ENGINE_METHOD_RSA:1,ENGINE_METHOD_DSA:2,ENGINE_METHOD_DH:4,ENGINE_METHOD_RAND:8,ENGINE_METHOD_EC:2048,ENGINE_METHOD_CIPHERS:64,ENGINE_METHOD_DIGESTS:128,ENGINE_METHOD_PKEY_METHS:512,ENGINE_METHOD_PKEY_ASN1_METHS:1024,ENGINE_METHOD_ALL:65535,ENGINE_METHOD_NONE:0,DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,RSA_PKCS1_PADDING:1,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,RSA_PSS_SALTLEN_DIGEST:-1,RSA_PSS_SALTLEN_MAX_SIGN:-2,RSA_PSS_SALTLEN_AUTO:-2,defaultCoreCipherList:"TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA",TLS1_VERSION:769,TLS1_1_VERSION:770,TLS1_2_VERSION:771,TLS1_3_VERSION:772,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var kte={};Ft(kte,{BasePlugin:()=>Mt,DirIndexHtmlPlugin:()=>Wm,PluginError:()=>zm,PluginFatalError:()=>na,createVerifiedFetch:()=>mS,dirIndexHtmlPluginFactory:()=>bF,verifiedFetch:()=>h8});var wS=Symbol.for("@libp2p/connection");var Do=Symbol.for("@libp2p/content-routing");function xS(r){return r==null?!1:(r.type==="RSA"||r.type==="Ed25519"||r.type==="secp256k1"||r.type==="ECDSA")&&r.raw instanceof Uint8Array&&typeof r.equals=="function"&&typeof r.toMultihash=="function"&&typeof r.toCID=="function"&&typeof r.verify=="function"}var _c=Symbol.for("@libp2p/peer-discovery");var Jm=Symbol.for("@libp2p/peer-id");function e0(r){return!!r?.[Jm]}var No=Symbol.for("@libp2p/peer-routing");var ia="keep-alive";var oa=Symbol.for("@libp2p/transport");var Ic;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Ic||(Ic={}));var Tr=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}},t0=class extends Error{static name="UnexpectedPeerError";constructor(e="Unexpected Peer"){super(e),this.name="UnexpectedPeerError"}},r0=class extends Error{static name="InvalidCryptoExchangeError";constructor(e="Invalid crypto exchange"){super(e),this.name="InvalidCryptoExchangeError"}},U=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},hs=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}},yh=class extends Error{static name="InvalidPrivateKeyError";constructor(e="Invalid private key"){super(e),this.name="InvalidPrivateKeyError"}};var n0=class extends Error{static name="ConnectionClosingError";constructor(e="The connection is closing"){super(e),this.name="ConnectionClosingError"}},$u=class extends Error{static name="ConnectionClosedError";constructor(e="The connection is closed"){super(e),this.name="ConnectionClosedError"}},Hu=class extends Error{static name="ConnectionFailedError";constructor(e="Connection failed"){super(e),this.name="ConnectionFailedError"}},Oo=class extends Error{static name="MuxerClosedError";constructor(e="The muxer is closed"){super(e),this.name="MuxerClosedError"}},i0=class extends Error{static name="StreamResetError";constructor(e="The stream has been reset"){super(e),this.name="StreamResetError"}},Tc=class extends Error{static name="StreamStateError";constructor(e="The stream is in an invalid state"){super(e),this.name="StreamStateError"}},We=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}},Vu=class extends Error{static name="InvalidPeerIdError";constructor(e="Invalid PeerID"){super(e),this.name="InvalidPeerIdError"}},sa=class extends Error{static name="InvalidMultiaddrError";constructor(e="Invalid multiaddr"){super(e),this.name="InvalidMultiaddrError"}},o0=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},aa=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}},ps=class extends Error{static name="UnsupportedProtocolError";constructor(e="Unsupported protocol error"){super(e),this.name="UnsupportedProtocolError"}},Be=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}},s0=class extends Error{static name="ProtocolError";constructor(e="Protocol error"){super(e),this.name="ProtocolError"}},Lo=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}},Zn=class extends Error{static name="NotStartedError";constructor(e="Not started"){super(e),this.name="NotStartedError"}};var ms=class extends Error{static name="DialError";constructor(e="Dial error"){super(e),this.name="DialError"}},Cc=class extends Error{static name="ListenError";constructor(e="Listen error"){super(e),this.name="ListenError"}},zu=class extends Error{static name="LimitedConnectionError";constructor(e="Limited connection"){super(e),this.name="LimitedConnectionError"}},a0=class extends Error{static name="TooManyInboundProtocolStreamsError";constructor(e="Too many inbound protocol streams"){super(e),this.name="TooManyInboundProtocolStreamsError"}},ca=class extends Error{static name="TooManyOutboundProtocolStreamsError";constructor(e="Too many outbound protocol streams"){super(e),this.name="TooManyOutboundProtocolStreamsError"}},Xi=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var Me=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){super.addEventListener(e,t,n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:(n!==!0&&n!==!1&&n?.once)??!1})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let i=this.#e.get(e);i!=null&&(i=i.filter(({callback:o})=>o!==t),this.#e.set(e,i))}dispatchEvent(e){let t=super.dispatchEvent(e),n=this.#e.get(e.type);return n==null||(n=n.filter(({once:i})=>!i),this.#e.set(e.type,n)),t}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};function c0(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Cr(...r){let e=[];for(let t of r)c0(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 Gr(...r){let e=[];for(let t of r)c0(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 tt=Symbol.for("@libp2p/service-capabilities"),Jn=Symbol.for("@libp2p/service-dependencies");function Ne(r){let e=new globalThis.AbortController;function t(){e.abort();for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}for(let o of r){if(o?.aborted===!0){t();break}o?.addEventListener!=null&&o.addEventListener("abort",t)}function n(){for(let o of r)o?.removeEventListener!=null&&o.removeEventListener("abort",t)}let i=e.signal;return i.clear=n,i}function ye(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var l0=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Ku=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new l0(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 l0(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 g8=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function Xr(r={}){return BF(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 BF(r,e){e=e??{};let t=e.onEnd,n=new Ku,i,o,s,a=ye(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((w,x)=>{o=v=>{o=null,n.push(v);try{w(r(n))}catch(b){x(b)}return i}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ye()})}},l=w=>o!=null?o(w):(n.push(w),i),u=w=>(n=new Ku,o!=null?o({error:w}):(n.push({error:w}),i)),f=w=>{if(s)return i;if(e?.objectMode!==!0&&w?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:w})},h=w=>s?i:(s=!0,w!=null?u(w):l({done:!0})),d=()=>(n=new Ku,h(),{done:!0}),m=w=>(h(w),{done:!0});if(i={[Symbol.asyncIterator](){return this},next:c,return:d,throw:m,push:f,end:h,get readableLength(){return n.size},onEmpty:async w=>{let x=w?.signal;if(x?.throwIfAborted(),n.isEmpty())return;let v,b;x!=null&&(v=new Promise((S,T)=>{b=()=>{T(new g8)},x.addEventListener("abort",b)}));try{await Promise.race([a.promise,v])}finally{b!=null&&x!=null&&x?.removeEventListener("abort",b)}}},t==null)return i;let g=i;return i={[Symbol.asyncIterator](){return this},next(){return g.next()},throw(w){return g.throw(w),t!=null&&(t(w),t=void 0),{done:!0}},return(){return g.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(w){return g.end(w),t!=null&&(t(w),t=void 0),i},get readableLength(){return g.readableLength},onEmpty:w=>g.onEmpty(w)},i}var y8=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 Er(r,e,t,n){let i=new y8(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(i):new Promise((o,s)=>{function a(){t?.removeEventListener("abort",u),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,l)}let c=f=>{try{if(n?.filter?.(f)===!1)return}catch(h){a(),s(h);return}a(),o(f)},l=f=>{a(),s(f.detail)},u=()=>{a(),s(i)};t?.addEventListener("abort",u),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,l)})}var u0=class extends Error{remainingPoints;msBeforeNext;consumedPoints;isFirstInDuration;constructor(e="Rate limit exceeded",t){super(e),this.name="RateLimitError",this.remainingPoints=t.remainingPoints,this.msBeforeNext=t.msBeforeNext,this.consumedPoints=t.consumedPoints,this.isFirstInDuration=t.isFirstInDuration}},f0=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}};var d0=class extends Error{type;code;constructor(e,t,n){super(e??"The operation was aborted"),this.type="aborted",this.name=n??"AbortError",this.code=t??"ABORT_ERR"}};async function Dt(r,e,t){if(e==null)return r;if(e.aborted)return r.catch(()=>{}),Promise.reject(new d0(t?.errorMessage,t?.errorCode,t?.errorName));let n,i=new d0(t?.errorMessage,t?.errorCode,t?.errorName);try{return await Promise.race([r,new Promise((o,s)=>{n=()=>{s(i)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var h0=class{deferred;signal;constructor(e){this.signal=e,this.deferred=ye(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Tr)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function MF(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var p0=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=MF(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Tr),this.cleanup())}async join(e={}){let t=new h0(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 Dt(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ln=class extends Me{concurrency;maxSize;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??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.sort=e.sort,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){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new f0;let n=new p0(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let o=0;o<this.queue.length;o++)if(this.queue[o]===n){this.queue.splice(o,1);break}}throw this.safeDispatchEvent("error",{detail:i}),this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Tr)}),this.clear()}async onEmpty(e){this.size!==0&&await Er(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await Er(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Er(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=Xr({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},i=c=>{c.detail!=null&&t.push(c.detail)},o=c=>{n(c.detail)},s=()=>{n()},a=()=>{n(new Tr("Queue aborted"))};this.addEventListener("completed",i),this.addEventListener("error",o),this.addEventListener("idle",s),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",i),this.removeEventListener("error",o),this.removeEventListener("idle",s),e?.signal?.removeEventListener("abort",a),n()}}};var kr=class extends ln{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};function UF(r){return r[Symbol.asyncIterator]!=null}function FF(r){if(UF(r))return(async()=>{for await(let e of r);})();for(let e of r);}var Sr=FF;function Pe(r=0){return new Uint8Array(r)}function $t(r=0){return new Uint8Array(r)}var $F=Math.pow(2,7),HF=Math.pow(2,14),VF=Math.pow(2,21),w8=Math.pow(2,28),x8=Math.pow(2,35),b8=Math.pow(2,42),v8=Math.pow(2,49),dt=128,Yr=127;function Oe(r){if(r<$F)return 1;if(r<HF)return 2;if(r<VF)return 3;if(r<w8)return 4;if(r<x8)return 5;if(r<b8)return 6;if(r<v8)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function E8(r,e,t=0){switch(Oe(r)){case 8:e[t++]=r&255|dt,r/=128;case 7:e[t++]=r&255|dt,r/=128;case 6:e[t++]=r&255|dt,r/=128;case 5:e[t++]=r&255|dt,r/=128;case 4:e[t++]=r&255|dt,r>>>=7;case 3:e[t++]=r&255|dt,r>>>=7;case 2:e[t++]=r&255|dt,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function zF(r,e,t=0){switch(Oe(r)){case 8:e.set(t++,r&255|dt),r/=128;case 7:e.set(t++,r&255|dt),r/=128;case 6:e.set(t++,r&255|dt),r/=128;case 5:e.set(t++,r&255|dt),r/=128;case 4:e.set(t++,r&255|dt),r>>>=7;case 3:e.set(t++,r&255|dt),r>>>=7;case 2:e.set(t++,r&255|dt),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function S8(r,e){let t=r[e],n=0;if(n+=t&Yr,t<dt||(t=r[e+1],n+=(t&Yr)<<7,t<dt)||(t=r[e+2],n+=(t&Yr)<<14,t<dt)||(t=r[e+3],n+=(t&Yr)<<21,t<dt)||(t=r[e+4],n+=(t&Yr)*w8,t<dt)||(t=r[e+5],n+=(t&Yr)*x8,t<dt)||(t=r[e+6],n+=(t&Yr)*b8,t<dt)||(t=r[e+7],n+=(t&Yr)*v8,t<dt))return n;throw new RangeError("Could not decode varint")}function KF(r,e){let t=r.get(e),n=0;if(n+=t&Yr,t<dt||(t=r.get(e+1),n+=(t&Yr)<<7,t<dt)||(t=r.get(e+2),n+=(t&Yr)<<14,t<dt)||(t=r.get(e+3),n+=(t&Yr)<<21,t<dt)||(t=r.get(e+4),n+=(t&Yr)*w8,t<dt)||(t=r.get(e+5),n+=(t&Yr)*x8,t<dt)||(t=r.get(e+6),n+=(t&Yr)*b8,t<dt)||(t=r.get(e+7),n+=(t&Yr)*v8,t<dt))return n;throw new RangeError("Could not decode varint")}function ht(r,e,t=0){return e==null&&(e=$t(Oe(r))),e instanceof Uint8Array?E8(r,e,t):zF(r,e,t)}function Zt(r,e=0){return r instanceof Uint8Array?S8(r,e):KF(r,e)}function Ve(r,e){e==null&&(e=r.reduce((i,o)=>i+o.length,0));let t=$t(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}function pe(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 vS=Symbol.for("@achingbrain/uint8arraylist");function bS(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let i=t+n.byteLength;if(e<i)return{buf:n,index:e-t};t=i}throw new RangeError("index is out of bounds")}function vi(r){return!!r?.[vS]}var oe=class r{bufs;length;[vS]=!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(vi(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(vi(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=bS(this.bufs,e);return t.buf[t.index]}set(e,t){let n=bS(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(vi(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:i}=this._subList(e,t);return Ve(n,i)}subarray(e,t){let{bufs:n,length:i}=this._subList(e,t);return n.length===1?n[0]:Ve(n,i)}sublist(e,t){let{bufs:n,length:i}=this._subList(e,t),o=new r;return o.length=i,o.bufs=[...n],o}_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=[],i=0;for(let o=0;o<this.bufs.length;o++){let s=this.bufs[o],a=i,c=a+s.byteLength;if(i=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(s);break}let f=e-a;n.push(s.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(s);continue}n.push(s.subarray(e-a));continue}if(u){if(t===c){n.push(s);break}n.push(s.subarray(0,t-a));break}n.push(s)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!vi(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 i=n.byteLength;if(i===0)throw new TypeError("search must be at least 1 byte long");let o=256,s=new Int32Array(o);for(let f=0;f<o;f++)s[f]=-1;for(let f=0;f<i;f++)s[n[f]]=f;let a=s,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let d=this.get(f+h);if(n[h]!==d){u=Math.max(1,h-a[d]);break}}if(u===0)return f}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=$t(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 i=Pe(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt16(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setInt32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigInt64(0,t,n),this.write(i,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=$t(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 i=Pe(2);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint16(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setUint32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setBigUint64(0,t,n),this.write(i,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 i=Pe(4);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat32(0,t,n),this.write(i,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 i=Pe(8);new DataView(i.buffer,i.byteOffset,i.byteLength).setFloat64(0,t,n),this.write(i,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(!pe(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((i,o)=>i+o.byteLength,0)),n.length=t,n}};var m0=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},qu=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},g0=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"},wh=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function y0(r){return r[Symbol.asyncIterator]!=null}function ES(r,e){if(r.byteLength>e)throw new qu("Message length too long")}var x0=r=>{let e=Oe(r),t=$t(e);return ht(r,t),x0.bytes=e,t};x0.bytes=0;function Yi(r,e){e=e??{};let t=e.lengthEncoder??x0,n=e?.maxDataLength??4194304;function*i(o){ES(o,n);let s=t(o.byteLength);s instanceof Uint8Array?yield s:yield*s,o instanceof Uint8Array?yield o:yield*o}return y0(r)?async function*(){for await(let o of r)yield*i(o)}():function*(){for(let o of r)yield*i(o)}()}Yi.single=(r,e)=>{e=e??{};let t=e.lengthEncoder??x0,n=e?.maxDataLength??4194304;return ES(r,n),new oe(t(r.byteLength),r)};var kc;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(kc||(kc={}));var A8=r=>{let e=Zt(r);return A8.bytes=Oe(e),e};A8.bytes=0;function Qi(r,e){let t=new oe,n=kc.LENGTH,i=-1,o=e?.lengthDecoder??A8,s=e?.maxLengthLength??8,a=e?.maxDataLength??4194304;function*c(){for(;t.byteLength>0;){if(n===kc.LENGTH)try{if(i=o(t),i<0)throw new m0("Invalid message length");if(i>a)throw new qu("Message length too long");let l=o.bytes;t.consume(l),e?.onLength!=null&&e.onLength(i),n=kc.DATA}catch(l){if(l instanceof RangeError){if(t.byteLength>s)throw new g0("Message length length too long");break}throw l}if(n===kc.DATA){if(t.byteLength<i)break;let l=t.sublist(0,i);t.consume(i),e?.onData!=null&&e.onData(l),yield l,n=kc.LENGTH}}}return y0(r)?async function*(){for await(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wh("Unexpected end of input")}():function*(){for(let l of r)t.append(l),yield*c();if(t.byteLength>0)throw new wh("Unexpected end of input")}()}Qi.fromReader=(r,e)=>{let t=1,n=async function*(){for(;;)try{let{done:o,value:s}=await r.next(t);if(o===!0)return;s!=null&&(yield s)}catch(o){if(o.code==="ERR_UNDER_READ")return{done:!0,value:null};throw o}finally{t=1}}();return Qi(n,{...e??{},onLength:o=>{t=o}})};function WF(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:i=>{n.push(i)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var ju=WF;function GF(r){return r[Symbol.asyncIterator]!=null}function XF(r,e){let t=0;if(GF(r))return async function*(){for await(let c of r)yield e(c,t++)}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();let s=e(i,t++);if(typeof s.then=="function")return async function*(){yield await s;for await(let c of n)yield e(c,t++)}();let a=e;return function*(){yield s;for(let c of n)yield a(c,t++)}()}var Nt=XF;var I8=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ye(),this.haveNext=ye()}[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=ye(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ye(),await Dt(this.readNext.promise,t?.signal,t)}};function b0(){return new I8}function YF(r){return r[Symbol.asyncIterator]!=null}async function QF(r,e){try{await Promise.all(r.map(async t=>{for await(let n of t)await e.push(n)})),await e.end()}catch(t){await e.end(t).catch(()=>{})}}async function*ZF(r){let e=b0();QF(r,e).catch(()=>{}),yield*e}function*JF(r){for(let e of r)yield*e}function e$(...r){let e=[];for(let t of r)YF(t)||e.push(t);return e.length===r.length?JF(e):ZF(r)}var un=e$;function ot(r,...e){if(r==null)throw new Error("Empty pipeline");if(T8(r)){let n=r;r=()=>n.source}else if(AS(r)||SS(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&T8(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++)T8(t[n])&&(t[n]=r$(t[n]));return t$(...t)}var t$=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},SS=r=>r?.[Symbol.asyncIterator]!=null,AS=r=>r?.[Symbol.iterator]!=null,T8=r=>r==null?!1:r.sink!=null&&r.source!=null,r$=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=Xr({objectMode:!0});t.then(()=>{n.end()},s=>{n.end(s)});let i,o=r.source;if(SS(o))i=async function*(){yield*o,n.end()};else if(AS(o))i=function*(){yield*o,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return un(n,i())}return r.source};function n$(r){return r[Symbol.asyncIterator]!=null}function i$(r,e){return n$(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 la=i$;var G=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var xh="/ipfs/bitswap/1.2.0";var C8=new Float32Array([-0]),ua=new Uint8Array(C8.buffer);function _S(r,e,t){C8[0]=r,e[t]=ua[0],e[t+1]=ua[1],e[t+2]=ua[2],e[t+3]=ua[3]}function IS(r,e){return ua[0]=r[e],ua[1]=r[e+1],ua[2]=r[e+2],ua[3]=r[e+3],C8[0]}var k8=new Float64Array([-0]),Qr=new Uint8Array(k8.buffer);function TS(r,e,t){k8[0]=r,e[t]=Qr[0],e[t+1]=Qr[1],e[t+2]=Qr[2],e[t+3]=Qr[3],e[t+4]=Qr[4],e[t+5]=Qr[5],e[t+6]=Qr[6],e[t+7]=Qr[7]}function CS(r,e){return Qr[0]=r[e],Qr[1]=r[e+1],Qr[2]=r[e+2],Qr[3]=r[e+3],Qr[4]=r[e+4],Qr[5]=r[e+5],Qr[6]=r[e+6],Qr[7]=r[e+7],k8[0]}var o$=BigInt(Number.MAX_SAFE_INTEGER),s$=BigInt(Number.MIN_SAFE_INTEGER),ti=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 Pc;if(e<o$&&e>s$)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,i=e-(n<<32n);return t&&(n=~n|0n,i=~i|0n,++i>kS&&(i=0n,++n>kS&&(n=0n))),new r(Number(i),Number(n))}static fromNumber(e){if(e===0)return Pc;let t=e<0;t&&(e=-e);let n=e>>>0,i=(e-n)/4294967296>>>0;return t&&(i=~i>>>0,n=~n>>>0,++n>4294967295&&(n=0,++i>4294967295&&(i=0))),new r(n,i)}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):Pc}},Pc=new ti(0,0);Pc.toBigInt=function(){return 0n};Pc.zzEncode=Pc.zzDecode=function(){return this};Pc.length=function(){return 1};var kS=4294967296n;function PS(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 RS(r,e,t){if(t-e<1)return"";let i,o=[],s=0,a;for(;e<t;)a=r[e++],a<128?o[s++]=a:a>191&&a<224?o[s++]=(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,o[s++]=55296+(a>>10),o[s++]=56320+(a&1023)):o[s++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,s>8191&&((i??(i=[])).push(String.fromCharCode.apply(String,o)),s=0);return i!=null?(s>0&&i.push(String.fromCharCode.apply(String,o.slice(0,s))),i.join("")):String.fromCharCode.apply(String,o.slice(0,s))}function P8(r,e,t){let n=t,i,o;for(let s=0;s<r.length;++s)i=r.charCodeAt(s),i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&((o=r.charCodeAt(s+1))&64512)===56320?(i=65536+((i&1023)<<10)+(o&1023),++s,e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128);return t-n}function Zi(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function v0(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var R8=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,Zi(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 Zi(this,4);return v0(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Zi(this,4);return v0(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Zi(this,4);let e=IS(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Zi(this,4);let e=CS(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 Zi(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return RS(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Zi(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Zi(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new ti(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 Zi(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 Zi(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 Zi(this,8);let e=v0(this.buf,this.pos+=4),t=v0(this.buf,this.pos+=4);return new ti(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=S8(this.buf,this.pos);return this.pos+=Oe(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 D8(r){return new R8(r instanceof Uint8Array?r:r.subarray())}function be(r,e,t){let n=D8(r);return e.decode(n,void 0,t)}var $8={};Ft($8,{base10:()=>m$});var Rc={};Ft(Rc,{coerce:()=>Ei,empty:()=>NS,equals:()=>N8,fromHex:()=>c$,fromString:()=>O8,isBinary:()=>l$,toHex:()=>a$,toString:()=>L8});var NS=new Uint8Array(0);function a$(r){return r.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function c$(r){let e=r.match(/../g);return e!=null?new Uint8Array(e.map(t=>parseInt(t,16))):NS}function N8(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 Ei(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 l$(r){return r instanceof ArrayBuffer||ArrayBuffer.isView(r)}function O8(r){return new TextEncoder().encode(r)}function L8(r){return new TextDecoder().decode(r)}function u$(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 i=0;i<r.length;i++){var o=r.charAt(i),s=o.charCodeAt(0);if(t[s]!==255)throw new TypeError(o+" is ambiguous");t[s]=i}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(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 g=0,w=0,x=0,v=m.length;x!==v&&m[x]===0;)x++,g++;for(var b=(v-x)*u+1>>>0,S=new Uint8Array(b);x!==v;){for(var T=m[x],D=0,A=b-1;(T!==0||D<w)&&A!==-1;A--,D++)T+=256*S[A]>>>0,S[A]=T%a>>>0,T=T/a>>>0;if(T!==0)throw new Error("Non-zero carry");w=D,x++}for(var I=b-w;I!==b&&S[I]===0;)I++;for(var k=c.repeat(g);I<b;++I)k+=r.charAt(S[I]);return k}function h(m){if(typeof m!="string")throw new TypeError("Expected String");if(m.length===0)return new Uint8Array;var g=0;if(m[g]!==" "){for(var w=0,x=0;m[g]===c;)w++,g++;for(var v=(m.length-g)*l+1>>>0,b=new Uint8Array(v);m[g];){var S=t[m.charCodeAt(g)];if(S===255)return;for(var T=0,D=v-1;(S!==0||T<x)&&D!==-1;D--,T++)S+=a*b[D]>>>0,b[D]=S%256>>>0,S=S/256>>>0;if(S!==0)throw new Error("Non-zero carry");x=T,g++}if(m[g]!==" "){for(var A=v-x;A!==v&&b[A]===0;)A++;for(var I=new Uint8Array(w+(v-A)),k=w;A!==v;)I[k++]=b[A++];return I}}}function d(m){var g=h(m);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:d}}var f$=u$,d$=f$,OS=d$;var B8=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")}},M8=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let i=t.codePointAt(0);if(i===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=i,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 LS(this,e)}},U8=class{decoders;constructor(e){this.decoders=e}or(e){return LS(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 LS(r,e){return new U8({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var F8=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,i){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=i,this.encoder=new B8(e,t,n),this.decoder=new M8(e,t,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function Wu({name:r,prefix:e,encode:t,decode:n}){return new F8(r,e,t,n)}function fa({name:r,prefix:e,alphabet:t}){let{encode:n,decode:i}=OS(t,r);return Wu({prefix:e,name:r,encode:n,decode:o=>Ei(i(o))})}function h$(r,e,t,n){let i={};for(let u=0;u<e.length;++u)i[e[u]]=u;let o=r.length;for(;r[o-1]==="=";)--o;let s=new Uint8Array(o*t/8|0),a=0,c=0,l=0;for(let u=0;u<o;++u){let f=i[r[u]];if(f===void 0)throw new SyntaxError(`Non-${n} character`);c=c<<t|f,a+=t,a>=8&&(a-=8,s[l++]=255&c>>a)}if(a>=t||(255&c<<8-a)!==0)throw new SyntaxError("Unexpected end of data");return s}function p$(r,e,t){let n=e[e.length-1]==="=",i=(1<<t)-1,o="",s=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],s+=8;s>t;)s-=t,o+=e[i&a>>s];if(s!==0&&(o+=e[i&a<<t-s]),n)for(;(o.length*t&7)!==0;)o+="=";return o}function Kt({name:r,prefix:e,bitsPerChar:t,alphabet:n}){return Wu({prefix:e,name:r,encode(i){return p$(i,n,t)},decode(i){return h$(i,n,t,r)}})}var m$=fa({prefix:"9",name:"base10",alphabet:"0123456789"});var H8={};Ft(H8,{base16:()=>g$,base16upper:()=>y$});var g$=Kt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),y$=Kt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var V8={};Ft(V8,{base2:()=>w$});var w$=Kt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var z8={};Ft(z8,{base256emoji:()=>S$});var BS=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}"),x$=BS.reduce((r,e,t)=>(r[t]=e,r),[]),b$=BS.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function v$(r){return r.reduce((e,t)=>(e+=x$[t],e),"")}function E$(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let i=b$[n];if(i==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}var S$=Wu({prefix:"\u{1F680}",name:"base256emoji",encode:v$,decode:E$});var K8={};Ft(K8,{base32:()=>Jt,base32hex:()=>T$,base32hexpad:()=>k$,base32hexpadupper:()=>P$,base32hexupper:()=>C$,base32pad:()=>_$,base32padupper:()=>I$,base32upper:()=>A$,base32z:()=>R$});var Jt=Kt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),A$=Kt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),_$=Kt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),I$=Kt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),T$=Kt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),C$=Kt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),k$=Kt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),P$=Kt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),R$=Kt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var q8={};Ft(q8,{base36:()=>fn,base36upper:()=>D$});var fn=fa({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),D$=fa({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var j8={};Ft(j8,{base58btc:()=>Le,base58flickr:()=>N$});var Le=fa({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),N$=fa({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var W8={};Ft(W8,{base64:()=>ar,base64pad:()=>O$,base64url:()=>Dc,base64urlpad:()=>L$});var ar=Kt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),O$=Kt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Dc=Kt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),L$=Kt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var G8={};Ft(G8,{base8:()=>B$});var B$=Kt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var X8={};Ft(X8,{identity:()=>M$});var M$=Wu({prefix:"\0",name:"identity",encode:r=>L8(r),decode:r=>O8(r)});var Gu={};Ft(Gu,{code:()=>Bo,decode:()=>Y8,encode:()=>H$,name:()=>$$});var U$=new TextEncoder,F$=new TextDecoder,$$="json",Bo=512;function H$(r){return U$.encode(JSON.stringify(r))}function Y8(r){return JSON.parse(F$.decode(r))}var _n={};Ft(_n,{code:()=>vt,decode:()=>K$,encode:()=>z$,name:()=>V$});var V$="raw",vt=85;function z$(r){return Ei(r)}function K$(r){return Ei(r)}var J8={};Ft(J8,{identity:()=>cr});var yt={};Ft(yt,{Digest:()=>Nc,create:()=>Zr,decode:()=>Ue,equals:()=>Z8,hasCode:()=>lH});var q$=FS,MS=128,j$=127,W$=~j$,G$=Math.pow(2,31);function FS(r,e,t){e=e||[],t=t||0;for(var n=t;r>=G$;)e[t++]=r&255|MS,r/=128;for(;r&W$;)e[t++]=r&255|MS,r>>>=7;return e[t]=r|0,FS.bytes=t-n+1,e}var X$=Q8,Y$=128,US=127;function Q8(r,n){var t=0,n=n||0,i=0,o=n,s,a=r.length;do{if(o>=a)throw Q8.bytes=0,new RangeError("Could not decode varint");s=r[o++],t+=i<28?(s&US)<<i:(s&US)*Math.pow(2,i),i+=7}while(s>=Y$);return Q8.bytes=o-n,t}var Q$=Math.pow(2,7),Z$=Math.pow(2,14),J$=Math.pow(2,21),eH=Math.pow(2,28),tH=Math.pow(2,35),rH=Math.pow(2,42),nH=Math.pow(2,49),iH=Math.pow(2,56),oH=Math.pow(2,63),sH=function(r){return r<Q$?1:r<Z$?2:r<J$?3:r<eH?4:r<tH?5:r<rH?6:r<nH?7:r<iH?8:r<oH?9:10},aH={encode:q$,decode:X$,encodingLength:sH},cH=aH,bh=cH;function vh(r,e=0){return[bh.decode(r,e),bh.decode.bytes]}function Xu(r,e,t=0){return bh.encode(r,e,t),e}function Yu(r){return bh.encodingLength(r)}function Zr(r,e){let t=e.byteLength,n=Yu(r),i=n+Yu(t),o=new Uint8Array(i+t);return Xu(r,o,0),Xu(t,o,n),o.set(e,i),new Nc(r,t,e,o)}function Ue(r){let e=Ei(r),[t,n]=vh(e),[i,o]=vh(e.subarray(n)),s=e.subarray(n+o);if(s.byteLength!==i)throw new Error("Incorrect length");return new Nc(t,i,s,e)}function Z8(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&N8(r.bytes,t.bytes)}}var Nc=class{code;size;digest;bytes;constructor(e,t,n,i){this.code=e,this.size=t,this.digest=n,this.bytes=i}};function lH(r,e){return r.code===e}var $S=0,uH="identity",HS=Ei;function fH(r){return Zr($S,HS(r))}var cr={code:$S,name:uH,encode:HS,digest:fH};var tw={};Ft(tw,{sha256:()=>Fe,sha512:()=>S0});function Oc({name:r,code:e,encode:t}){return new ew(r,e,t)}var ew=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?Zr(this.code,t):t.then(n=>Zr(this.code,n))}else throw Error("Unknown type, must be binary type")}};function zS(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var Fe=Oc({name:"sha2-256",code:18,encode:zS("SHA-256")}),S0=Oc({name:"sha2-512",code:19,encode:zS("SHA-512")});function KS(r,e){let{bytes:t,version:n}=r;switch(n){case 0:return hH(t,rw(r),e??Le.encoder);default:return pH(t,rw(r),e??Jt.encoder)}}var qS=new WeakMap;function rw(r){let e=qS.get(r);if(e==null){let t=new Map;return qS.set(r,t),t}return e}var W=class r{code;version;multihash;bytes;"/";constructor(e,t,n,i){this.code=t,this.version=e,this.multihash=n,this.bytes=i,this["/"]=i}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!==Eh)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==mH)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=Zr(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&&Z8(e.multihash,n.multihash)}toString(e){return KS(this,e)}toJSON(){return{"/":KS(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:i,multihash:o,bytes:s}=t;return new r(n,i,o,s??jS(n,i,o.bytes))}else if(t[gH]===!0){let{version:n,multihash:i,code:o}=t,s=Ue(i);return r.create(n,o,s)}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!==Eh)throw new Error(`Version 0 CID must use dag-pb (code: ${Eh}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let i=jS(e,t,n.bytes);return new r(e,t,n,i)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Eh,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,i=Ei(e.subarray(n,n+t.multihashSize));if(i.byteLength!==t.multihashSize)throw new Error("Incorrect length");let o=i.subarray(t.multihashSize-t.digestSize),s=new Nc(t.multihashCode,t.digestSize,o,i);return[t.version===0?r.createV0(s):r.createV1(t.codec,s),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=vh(e.subarray(t));return t+=h,f},i=n(),o=Eh;if(i===18?(i=0,t=0):o=n(),i!==0&&i!==1)throw new RangeError(`Invalid CID version ${i}`);let s=t,a=n(),c=n(),l=t+c,u=l-s;return{version:i,codec:o,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,i]=dH(e,t),o=r.decode(i);if(o.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return rw(o).set(n,e),o}};function dH(r,e){switch(r[0]){case"Q":{let t=e??Le;return[Le.prefix,t.decode(`${Le.prefix}${r}`)]}case Le.prefix:{let t=e??Le;return[Le.prefix,t.decode(r)]}case Jt.prefix:{let t=e??Jt;return[Jt.prefix,t.decode(r)]}case fn.prefix:{let t=e??fn;return[fn.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function hH(r,e,t){let{prefix:n}=t;if(n!==Le.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let i=e.get(n);if(i==null){let o=t.encode(r).slice(1);return e.set(n,o),o}else return i}function pH(r,e,t){let{prefix:n}=t,i=e.get(n);if(i==null){let o=t.encode(r);return e.set(n,o),o}else return i}var Eh=112,mH=18;function jS(r,e,t){let n=Yu(r),i=n+Yu(e),o=new Uint8Array(i+t.byteLength);return Xu(r,o,0),Xu(e,o,n),o.set(t,i),o}var gH=Symbol.for("@ipld/js-cid/CID");var Lc={...X8,...V8,...G8,...$8,...H8,...K8,...q8,...j8,...W8,...z8},die={...tw,...J8};function GS(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var WS=GS("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),nw=GS("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=$t(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),yH={utf8:WS,"utf-8":WS,hex:Lc.base16,latin1:nw,ascii:nw,binary:nw,...Lc},A0=yH;function O(r,e="utf8"){let t=A0[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function iw(r){let e=r??8192,t=e>>>1,n,i=e;return function(s){if(s<1||s>t)return $t(s);i+s>e&&(n=$t(e),i=0);let a=n.subarray(i,i+=s);return(i&7)!==0&&(i=(i|7)+1),a}}var Bc=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function ow(){}var aw=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},wH=iw();function xH(r){return globalThis.Buffer!=null?$t(r):wH(r)}var Ah=class{len;head;tail;states;constructor(){this.len=0,this.head=new Bc(ow,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new Bc(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new cw((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(_0,10,ti.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=ti.fromBigInt(e);return this._push(_0,t.length(),t)}uint64Number(e){return this._push(E8,Oe(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=ti.fromBigInt(e).zzEncode();return this._push(_0,t.length(),t)}sint64Number(e){let t=ti.fromNumber(e).zzEncode();return this._push(_0,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(sw,1,e?1:0)}fixed32(e){return this._push(Sh,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=ti.fromBigInt(e);return this._push(Sh,4,t.lo)._push(Sh,4,t.hi)}fixed64Number(e){let t=ti.fromNumber(e);return this._push(Sh,4,t.lo)._push(Sh,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(_S,4,e)}double(e){return this._push(TS,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(sw,1,0):this.uint32(t)._push(vH,t,e)}string(e){let t=PS(e);return t!==0?this.uint32(t)._push(P8,t,e):this._push(sw,1,0)}fork(){return this.states=new aw(this),this.head=this.tail=new Bc(ow,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 Bc(ow,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=xH(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function sw(r,e,t){e[t]=r&255}function bH(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var cw=class extends Bc{next;constructor(e,t){super(bH,e,t),this.next=void 0}};function _0(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 Sh(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 vH(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(Ah.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(EH,e,r),this},Ah.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(SH,e,r),this});function EH(r,e,t){e.set(r,t)}function SH(r,e,t){r.length<40?P8(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(O(r),t)}function lw(){return new Ah}function ve(r,e){let t=lw();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}var Qu;(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"})(Qu||(Qu={}));function I0(r,e,t,n){return{name:r,type:e,encode:t,decode:n}}function St(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(o,s){let a=e(o);s.int32(a)},n=function(o){let s=o.int32();return e(s)};return I0("enum",Qu.VARINT,t,n)}function Ee(r,e){return I0("message",Qu.LENGTH_DELIMITED,r,e)}var wt=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"},_h=class extends Error{code="ERR_MAX_SIZE";name="MaxSizeError"};var er;(function(r){r.WantBlock="WantBlock",r.WantHave="WantHave"})(er||(er={}));var uw;(function(r){r[r.WantBlock=0]="WantBlock",r[r.WantHave=1]="WantHave"})(uw||(uw={}));(function(r){r.codec=()=>St(uw)})(er||(er={}));var Zu;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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),er.codec().encode(t.wantType,n)),t.sendDontHave!=null&&(n.uint32(40),n.bool(t.sendDontHave)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={cid:Pe(0),priority:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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=er.codec().decode(t);break}case 5:{o.sendDontHave=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Zu||(Zu={}));var T0;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.entries!=null)for(let o of t.entries)n.uint32(10),Zu.codec().encode(o,n);t.full!=null&&(n.uint32(16),n.bool(t.full)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={entries:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{if(i.limits?.entries!=null&&o.entries.length===i.limits.entries)throw new wt('Decode error - map field "entries" had too many elements');o.entries.push(Zu.codec().decode(t,t.uint32(),{limits:i.limits?.entries$}));break}case 2:{o.full=t.bool();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(T0||(T0={}));var Ju;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={prefix:Pe(0),data:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.prefix=t.bytes();break}case 2:{o.data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ju||(Ju={}));var Si;(function(r){r.HaveBlock="HaveBlock",r.DoNotHaveBlock="DoNotHaveBlock"})(Si||(Si={}));var C0;(function(r){r[r.HaveBlock=0]="HaveBlock",r[r.DoNotHaveBlock=1]="DoNotHaveBlock"})(C0||(C0={}));(function(r){r.codec=()=>St(C0)})(Si||(Si={}));var ef;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.cid!=null&&t.cid.byteLength>0&&(n.uint32(10),n.bytes(t.cid)),t.type!=null&&C0[t.type]!==0&&(n.uint32(16),Si.codec().encode(t.type,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={cid:Pe(0),type:Si.HaveBlock},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.cid=t.bytes();break}case 2:{o.type=Si.codec().decode(t);break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(ef||(ef={}));var Mc;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.wantlist!=null&&(n.uint32(10),T0.codec().encode(t.wantlist,n)),t.blocks!=null)for(let o of t.blocks)n.uint32(26),Ju.codec().encode(o,n);if(t.blockPresences!=null)for(let o of t.blockPresences)n.uint32(34),ef.codec().encode(o,n);t.pendingBytes!=null&&t.pendingBytes!==0&&(n.uint32(40),n.int32(t.pendingBytes)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={blocks:[],blockPresences:[],pendingBytes:0},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.wantlist=T0.codec().decode(t,t.uint32(),{limits:i.limits?.wantlist});break}case 3:{if(i.limits?.blocks!=null&&o.blocks.length===i.limits.blocks)throw new wt('Decode error - map field "blocks" had too many elements');o.blocks.push(Ju.codec().decode(t,t.uint32(),{limits:i.limits?.blocks$}));break}case 4:{if(i.limits?.blockPresences!=null&&o.blockPresences.length===i.limits.blockPresences)throw new wt('Decode error - map field "blockPresences" had too many elements');o.blockPresences.push(ef.codec().decode(t,t.uint32(),{limits:i.limits?.blockPresences$}));break}case 5:{o.pendingBytes=t.int32();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Mc||(Mc={}));function XS(r,e){for(let[t,n]of e.wantlist.entries()){let i=r.wantlist.get(t);i!=null&&(i.priority>n.priority&&(n.priority=i.priority),n.cancel=n.cancel??i.cancel,n.wantType=n.wantType??i.wantType,n.sendDontHave=n.sendDontHave??i.sendDontHave),r.wantlist.set(t,n)}for(let[t,n]of e.blockPresences.entries())r.blockPresences.set(t,n);for(let[t,n]of e.blocks.entries())r.blocks.set(t,n);return e.full&&!r.full&&(r.full=!0),r}var k0=class extends Error{static name="BlockTooLargeError";constructor(e="Block too large"){super(e),this.name="BlockTooLargeError"}};var AH=4193648,_H=AH+16;function*YS(r,e){let t=[...r.wantlist.values()],n=[...r.blockPresences.values()],i=[...r.blocks.values()],o=0,s=0,a=0,c=!1;for(;;){let l={wantlist:{full:r.full??!1,entries:[]},blockPresences:[],blocks:[],pendingBytes:0},u=Mc.encode(l).byteLength,{added:f,hasMore:h,newSize:d}=fw(i,l.blocks,a,e,u,IH);a+=f,u=d;let m=h;({added:f,hasMore:h,newSize:d}=fw(n,l.blockPresences,s,e,u,TH)),s+=f,u=d;let g=h;if({added:f,hasMore:h,newSize:d}=fw(t,l.wantlist.entries,o,e,u,CH),o+=f,u=d,c=!m&&!g&&!h,c||(l.wantlist.full=!1),yield Mc.encode(l),c)break}}function fw(r,e,t,n,i,o){let s=0,a=!1;for(let c=t;c<r.length;c++){let l=r[c],u=o(l);if(u>_H)throw new k0("Cannot send block as after encoding it is over the max message size");let f=i+u;if(f>n){a=!0;break}e.push(l),s++,i=f}return{hasMore:a,added:s,newSize:i}}function IH(r){return dw(3,Ju.encode(r))}function TH(r){return dw(4,ef.encode(r))}function CH(r){return dw(1,Zu.encode(r))}function dw(r,e){let t=Oe(r),n=Oe(e.byteLength);return t+n+e.byteLength}var P0=class extends Me{log;libp2p;routing;protocols;running;maxInboundStreams;maxOutboundStreams;messageReceiveTimeout;registrarIds;metrics;sendQueue;runOnLimitedConnections;maxOutgoingMessageSize;maxIncomingMessageSize;constructor(e,t={}){super(),this.log=e.logger.forComponent("helia:bitswap:network"),this.libp2p=e.libp2p,this.routing=e.routing,this.protocols=t.protocols??[xh],this.registrarIds=[],this.running=!1,this._onStream=this._onStream.bind(this),this.maxInboundStreams=t.maxInboundStreams??1024,this.maxOutboundStreams=t.maxOutboundStreams??1024,this.messageReceiveTimeout=t.messageReceiveTimeout??5e3,this.runOnLimitedConnections=t.runOnLimitedConnections??!1,this.maxIncomingMessageSize=t.maxIncomingMessageSize??4194304,this.maxOutgoingMessageSize=t.maxOutgoingMessageSize??t.maxIncomingMessageSize??4194304,this.metrics={blocksSent:e.metrics?.registerCounter("helia_bitswap_sent_blocks_total"),dataSent:e.metrics?.registerCounter("helia_bitswap_sent_data_bytes_total")},this.sendQueue=new kr({concurrency:t.messageSendConcurrency??50,metrics:e.metrics,metricName:"helia_bitswap_message_send_queue"}),this.sendQueue.addEventListener("error",n=>{this.log.error("error sending wantlist to peer",n.detail)})}async start(){if(this.running)return;this.running=!0,await this.libp2p.handle(this.protocols,this._onStream,{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnections});let e={onConnect:t=>{this.safeDispatchEvent("peer:connected",{detail:t})},onDisconnect:t=>{this.safeDispatchEvent("peer:disconnected",{detail:t})}};this.registrarIds=[];for(let t of this.protocols)this.registrarIds.push(await this.libp2p.register(t,e));this.libp2p.getConnections().forEach(t=>{this.safeDispatchEvent("peer:connected",{detail:t.remotePeer})})}async stop(){if(this.running=!1,await this.libp2p.unhandle(this.protocols),this.registrarIds!=null){for(let e of this.registrarIds)this.libp2p.unregister(e);this.registrarIds=[]}}_onStream(e){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 i=()=>{t.status==="open"?t.abort(new Lo(`Incoming Bitswap stream timed out after ${this.messageReceiveTimeout}ms`)):this.log("stream aborted with status %s",t.status)},o=AbortSignal.timeout(this.messageReceiveTimeout);o.addEventListener("abort",i),await t.closeWrite(),await ot(t,s=>Qi(s,{maxDataLength:this.maxIncomingMessageSize}),async s=>{for await(let a of s)try{let c=Mc.decode(a);this.log("incoming new bitswap %s message from %p on stream",t.protocol,n.remotePeer,t.id),this.safeDispatchEvent("bitswap:message",{detail:{peer:n.remotePeer,message:c}}),o.removeEventListener("abort",i),o=AbortSignal.timeout(this.messageReceiveTimeout),o.addEventListener("abort",i)}catch(c){this.log.error("error reading incoming bitswap message from %p on stream",n.remotePeer,t.id,c),t.abort(c);break}})}).catch(i=>{this.log.error("error handling incoming stream from %p",n.remotePeer,i),t.abort(i)})}async*findProviders(e,t){t?.onProgress?.(new G("bitswap:network:find-providers",e));for await(let n of this.routing.findProviders(e,t))await this.libp2p.isDialable(n.multiaddrs,{runOnLimitedConnection:this.runOnLimitedConnections})&&(yield n)}async findAndConnect(e,t){await Sr(Nt(la(this.findProviders(e,t),t?.maxProviders??3),async n=>this.connectTo(n.id,t))).catch(n=>{this.log.error(n)})}async sendMessage(e,t,n){if(!this.running)throw new Error("network isn't running");let i=this.sendQueue.queue.find(o=>e.equals(o.options.peerId)&&o.status==="queued");if(i!=null){i.options.message=XS(i.options.message,t),await i.join({signal:n?.signal});return}await this.sendQueue.add(async o=>{let s=o?.message;if(s==null)throw new U("No message to send");this.log("sendMessage to %p",e),o?.onProgress?.(new G("bitswap:network:send-wantlist",e));let a=await this.libp2p.dialProtocol(e,xh,o);await a.closeRead();try{await ot(YS(s,this.maxOutgoingMessageSize),c=>Yi(c),a),await a.close(o)}catch(c){o?.onProgress?.(new G("bitswap:network:send-wantlist:error",{peer:e,error:c})),this.log.error("error sending message to %p",e,c),a.abort(c)}this._updateSentStats(s.blocks)},{peerId:e,signal:n?.signal,message:t})}async connectTo(e,t){if(!this.running)throw new Zn("Network isn't running");t?.onProgress?.(new G("bitswap:network:dial",e));let[n]=await Promise.all([this.libp2p.dial(e,t),Er(this.libp2p,"peer:identify",t?.signal,{filter:i=>{if(!i.detail.peerId.equals(e))return!1;if(i.detail.protocols.includes(xh))return!0;throw new ps(`${e} did not support ${xh}`)}})]);return n}_updateSentStats(e){let t=0;for(let n of e.values())t+=n.data.byteLength;this.metrics.dataSent?.increment(t),this.metrics.blocksSent?.increment(e.size)}};function H(r,e="utf8"){let t=A0[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var MH=parseInt("11111",2),hw=parseInt("10000000",2),UH=parseInt("01111111",2),QS={0:Ih,1:Ih,2:FH,3:VH,4:zH,5:HH,6:$H,16:Ih,22:Ih,48:Ih};function Ai(r,e={offset:0}){let t=r[e.offset]&MH;if(e.offset++,QS[t]!=null)return QS[t](r,e);throw new Error("No decoder for tag "+t)}function Th(r,e){let t=0;if((r[e.offset]&hw)===hw){let n=r[e.offset]&UH,i="0x";e.offset++;for(let o=0;o<n;o++,e.offset++)i+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(i,16)}else t=r[e.offset],e.offset++;return t}function Ih(r,e){Th(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=Ai(r,e);if(n===null)break;t.push(n)}return t}function FH(r,e){let t=Th(r,e),n=e.offset,i=e.offset+t,o=[];for(let s=n;s<i;s++)s===n&&r[s]===0||o.push(r[s]);return e.offset+=t,Uint8Array.from(o)}function $H(r,e){let t=Th(r,e),n=e.offset+t,i=r[e.offset];e.offset++;let o=0,s=0;i<40?(o=0,s=i):i<80?(o=1,s=i-40):(o=2,s=i-80);let a=`${o}.${s}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function HH(r,e){return e.offset++,null}function VH(r,e){let t=Th(r,e),n=r[e.offset];e.offset++;let i=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return i}function zH(r,e){let t=Th(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function KH(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new oe;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function R0(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=KH(r.byteLength);return new oe(Uint8Array.from([e.byteLength|hw]),e)}function dn(r){let e=new oe,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new oe(Uint8Array.from([2]),R0(e),e)}function Ch(r){let e=Uint8Array.from([0]),t=new oe(e,r);return new oe(Uint8Array.from([3]),R0(t),t)}function ZS(r){return new oe(Uint8Array.from([4]),R0(r),r)}function Ji(r,e=48){let t=new oe;for(let n of r)t.append(n);return new oe(Uint8Array.from([e]),R0(t),t)}var JS="1.2.840.10045.3.1.7",eA="1.3.132.0.34",tA="1.3.132.0.35";async function rA(r="P-256"){let e=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:r},!0,["sign","verify"]);return{publicKey:await crypto.subtle.exportKey("jwk",e.publicKey),privateKey:await crypto.subtle.exportKey("jwk",e.privateKey)}}async function nA(r,e){let t=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["sign"]),n=await crypto.subtle.sign({name:"ECDSA",hash:{name:"SHA-256"}},t,e.subarray());return new Uint8Array(n,0,n.byteLength)}async function iA(r,e,t){let n=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);return crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},n,e,t.subarray())}var qH=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),jH=Uint8Array.from([6,5,43,129,4,0,34]),WH=Uint8Array.from([6,5,43,129,4,0,35]),oA={ext:!0,kty:"EC",crv:"P-256"},sA={ext:!0,kty:"EC",crv:"P-384"},aA={ext:!0,kty:"EC",crv:"P-521"},tf=32,rf=48,nf=66;function cA(r){let e=Ai(r);return pw(e)}function pw(r){let e=r[1],t=H(e,"base64url"),n=r[2][1][0],i=1,o,s;if(e.byteLength===tf)return o=H(n.subarray(i,i+tf),"base64url"),s=H(n.subarray(i+tf),"base64url"),new Fc({...oA,key_ops:["sign"],d:t,x:o,y:s});if(e.byteLength===rf)return o=H(n.subarray(i,i+rf),"base64url"),s=H(n.subarray(i+rf),"base64url"),new Fc({...sA,key_ops:["sign"],d:t,x:o,y:s});if(e.byteLength===nf)return o=H(n.subarray(i,i+nf),"base64url"),s=H(n.subarray(i+nf),"base64url"),new Fc({...aA,key_ops:["sign"],d:t,x:o,y:s});throw new U(`Private key length was wrong length, got ${e.byteLength}, expected 32, 48 or 66`)}function mw(r){let e=Ai(r);return lA(e)}function lA(r){let e=r[1][1][0],t=1,n,i;if(e.byteLength===tf*2+1)return n=H(e.subarray(t,t+tf),"base64url"),i=H(e.subarray(t+tf),"base64url"),new Uc({...oA,key_ops:["verify"],x:n,y:i});if(e.byteLength===rf*2+1)return n=H(e.subarray(t,t+rf),"base64url"),i=H(e.subarray(t+rf),"base64url"),new Uc({...sA,key_ops:["verify"],x:n,y:i});if(e.byteLength===nf*2+1)return n=H(e.subarray(t,t+nf),"base64url"),i=H(e.subarray(t+nf),"base64url"),new Uc({...aA,key_ops:["verify"],x:n,y:i});throw new U(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function uA(r){return Ji([dn(Uint8Array.from([1])),ZS(O(r.d??"","base64url")),Ji([dA(r.crv)],160),Ji([Ch(new oe(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function fA(r){return Ji([dn(Uint8Array.from([1])),Ji([dA(r.crv)],160),Ji([Ch(new oe(Uint8Array.from([4]),O(r.x??"","base64url"),O(r.y??"","base64url")))],161)]).subarray()}function dA(r){if(r==="P-256")return qH;if(r==="P-384")return jH;if(r==="P-521")return WH;throw new U(`Invalid curve ${r}`)}async function hA(r="P-256"){let e=await rA(r);return new Fc(e.privateKey)}var Uc=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=fA(this.jwk)),this._raw}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}async verify(e,t){return iA(this.jwk,t,e)}},Fc=class{type="ECDSA";jwk;publicKey;_raw;constructor(e){this.jwk=e,this.publicKey=new Uc({crv:e.crv,ext:e.ext,key_ops:["verify"],kty:"EC",x:e.x,y:e.y})}get raw(){return this._raw==null&&(this._raw=uA(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}async sign(e){return nA(this.jwk,e)}};var $c=typeof globalThis=="object"&&"crypto"in globalThis?globalThis.crypto:void 0;function GH(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Mo(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function da(r,...e){if(!GH(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Hc(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.createHasher");Mo(r.outputLen),Mo(r.blockLen)}function sf(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 pA(r,e){da(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Jr(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function Vc(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function eo(r,e){return r<<32-e|r>>>e}function D0(r,e){return r<<e|r>>>32-e>>>0}var XH=async()=>{};async function mA(r,e,t){let n=Date.now();for(let i=0;i<r;i++){t(i);let o=Date.now()-n;o>=0&&o<e||(await XH(),n+=o)}}function gw(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function ha(r){return typeof r=="string"&&(r=gw(r)),da(r),r}function yw(r){return typeof r=="string"&&(r=gw(r)),da(r),r}function ww(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];da(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let o=r[n];t.set(o,i),i+=o.length}return t}function gA(r,e){if(e!==void 0&&{}.toString.call(e)!=="[object Object]")throw new Error("options should be object or undefined");return Object.assign(r,e)}var of=class{};function kh(r){let e=n=>r().update(ha(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function zc(r=32){if($c&&typeof $c.getRandomValues=="function")return $c.getRandomValues(new Uint8Array(r));if($c&&typeof $c.randomBytes=="function")return Uint8Array.from($c.randomBytes(r));throw new Error("crypto.getRandomValues must be defined")}function YH(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,l=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+l,a,n)}function N0(r,e,t){return r&e^~r&t}function O0(r,e,t){return r&e^r&t^e&t}var Kc=class extends of{constructor(e,t,n,i){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.buffer=new Uint8Array(e),this.view=Vc(this.buffer)}update(e){sf(this),e=ha(e),da(e);let{view:t,buffer:n,blockLen:i}=this,o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let c=Vc(e);for(;i<=o-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){sf(this),pA(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,Jr(this.buffer.subarray(s)),this.padOffset>i-s&&(this.process(n,0),s=0);for(let f=s;f<i;f++)t[f]=0;YH(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Vc(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],o)}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:i,finished:o,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=o,e.length=i,e.pos=a,i%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},gs=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Pr=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var L0=BigInt(4294967295),yA=BigInt(32);function QH(r,e=!1){return e?{h:Number(r&L0),l:Number(r>>yA&L0)}:{h:Number(r>>yA&L0)|0,l:Number(r&L0)|0}}function wA(r,e=!1){let t=r.length,n=new Uint32Array(t),i=new Uint32Array(t);for(let o=0;o<t;o++){let{h:s,l:a}=QH(r[o],e);[n[o],i[o]]=[s,a]}return[n,i]}var xw=(r,e,t)=>r>>>t,bw=(r,e,t)=>r<<32-t|e>>>t,qc=(r,e,t)=>r>>>t|e<<32-t,jc=(r,e,t)=>r<<32-t|e>>>t,Ph=(r,e,t)=>r<<64-t|e>>>t-32,Rh=(r,e,t)=>r>>>t-32|e<<64-t;function Uo(r,e,t,n){let i=(e>>>0)+(n>>>0);return{h:r+t+(i/2**32|0)|0,l:i|0}}var xA=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),bA=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,vA=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),EA=(r,e,t,n,i)=>e+t+n+i+(r/2**32|0)|0,SA=(r,e,t,n,i)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),AA=(r,e,t,n,i,o)=>e+t+n+i+o+(r/2**32|0)|0;var JH=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),pa=new Uint32Array(64),B0=class extends Kc{constructor(e=32){super(64,e,8,!1),this.A=gs[0]|0,this.B=gs[1]|0,this.C=gs[2]|0,this.D=gs[3]|0,this.E=gs[4]|0,this.F=gs[5]|0,this.G=gs[6]|0,this.H=gs[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:c}=this;return[e,t,n,i,o,s,a,c]}set(e,t,n,i,o,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)pa[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=pa[f-15],d=pa[f-2],m=eo(h,7)^eo(h,18)^h>>>3,g=eo(d,17)^eo(d,19)^d>>>10;pa[f]=g+pa[f-7]+m+pa[f-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=eo(a,6)^eo(a,11)^eo(a,25),d=u+h+N0(a,c,l)+JH[f]+pa[f]|0,g=(eo(n,2)^eo(n,13)^eo(n,22))+O0(n,i,o)|0;u=l,l=c,c=a,a=s+d|0,s=o,o=i,i=n,n=d+g|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,i,o,s,a,c,l,u)}roundClean(){Jr(pa)}destroy(){this.set(0,0,0,0,0,0,0,0),Jr(this.buffer)}};var _A=wA(["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))),eV=_A[0],tV=_A[1],ma=new Uint32Array(80),ga=new Uint32Array(80),M0=class extends Kc{constructor(e=64){super(128,e,16,!1),this.Ah=Pr[0]|0,this.Al=Pr[1]|0,this.Bh=Pr[2]|0,this.Bl=Pr[3]|0,this.Ch=Pr[4]|0,this.Cl=Pr[5]|0,this.Dh=Pr[6]|0,this.Dl=Pr[7]|0,this.Eh=Pr[8]|0,this.El=Pr[9]|0,this.Fh=Pr[10]|0,this.Fl=Pr[11]|0,this.Gh=Pr[12]|0,this.Gl=Pr[13]|0,this.Hh=Pr[14]|0,this.Hl=Pr[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:i,Ch:o,Cl:s,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:d,Gl:m,Hh:g,Hl:w}=this;return[e,t,n,i,o,s,a,c,l,u,f,h,d,m,g,w]}set(e,t,n,i,o,s,a,c,l,u,f,h,d,m,g,w){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=i|0,this.Ch=o|0,this.Cl=s|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=d|0,this.Gl=m|0,this.Hh=g|0,this.Hl=w|0}process(e,t){for(let b=0;b<16;b++,t+=4)ma[b]=e.getUint32(t),ga[b]=e.getUint32(t+=4);for(let b=16;b<80;b++){let S=ma[b-15]|0,T=ga[b-15]|0,D=qc(S,T,1)^qc(S,T,8)^xw(S,T,7),A=jc(S,T,1)^jc(S,T,8)^bw(S,T,7),I=ma[b-2]|0,k=ga[b-2]|0,X=qc(I,k,19)^Ph(I,k,61)^xw(I,k,6),K=jc(I,k,19)^Rh(I,k,61)^bw(I,k,6),V=vA(A,K,ga[b-7],ga[b-16]),Y=EA(V,D,X,ma[b-7],ma[b-16]);ma[b]=Y|0,ga[b]=V|0}let{Ah:n,Al:i,Bh:o,Bl:s,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:d,Fl:m,Gh:g,Gl:w,Hh:x,Hl:v}=this;for(let b=0;b<80;b++){let S=qc(f,h,14)^qc(f,h,18)^Ph(f,h,41),T=jc(f,h,14)^jc(f,h,18)^Rh(f,h,41),D=f&d^~f&g,A=h&m^~h&w,I=SA(v,T,A,tV[b],ga[b]),k=AA(I,x,S,D,eV[b],ma[b]),X=I|0,K=qc(n,i,28)^Ph(n,i,34)^Ph(n,i,39),V=jc(n,i,28)^Rh(n,i,34)^Rh(n,i,39),Y=n&o^n&a^o&a,$=i&s^i&c^s&c;x=g|0,v=w|0,g=d|0,w=m|0,d=f|0,m=h|0,{h:f,l:h}=Uo(l|0,u|0,k|0,X|0),l=a|0,u=c|0,a=o|0,c=s|0,o=n|0,s=i|0;let F=xA(X,V,$);n=bA(F,k,K,Y),i=F|0}({h:n,l:i}=Uo(this.Ah|0,this.Al|0,n|0,i|0)),{h:o,l:s}=Uo(this.Bh|0,this.Bl|0,o|0,s|0),{h:a,l:c}=Uo(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=Uo(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=Uo(this.Eh|0,this.El|0,f|0,h|0),{h:d,l:m}=Uo(this.Fh|0,this.Fl|0,d|0,m|0),{h:g,l:w}=Uo(this.Gh|0,this.Gl|0,g|0,w|0),{h:x,l:v}=Uo(this.Hh|0,this.Hl|0,x|0,v|0),this.set(n,i,o,s,a,c,l,u,f,h,d,m,g,w,x,v)}roundClean(){Jr(ma,ga)}destroy(){Jr(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}};var U0=kh(()=>new B0);var F0=kh(()=>new M0);var Aw=BigInt(0),Sw=BigInt(1);function Wc(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function _w(r){if(!Wc(r))throw new Error("Uint8Array expected")}function Fo(r,e){if(typeof e!="boolean")throw new Error(r+" boolean expected, got "+e)}function Dh(r){let e=r.toString(16);return e.length&1?"0"+e:e}function CA(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?Aw:BigInt("0x"+r)}var kA=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",rV=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function ya(r){if(_w(r),kA)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=rV[r[t]];return e}var ys={_0:48,_9:57,A:65,F:70,a:97,f:102};function IA(r){if(r>=ys._0&&r<=ys._9)return r-ys._0;if(r>=ys.A&&r<=ys.F)return r-(ys.A-10);if(r>=ys.a&&r<=ys.f)return r-(ys.a-10)}function Nh(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(kA)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let i=0,o=0;i<t;i++,o+=2){let s=IA(r.charCodeAt(o)),a=IA(r.charCodeAt(o+1));if(s===void 0||a===void 0){let c=r[o]+r[o+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+o)}n[i]=s*16+a}return n}function ws(r){return CA(ya(r))}function $o(r){return _w(r),CA(ya(Uint8Array.from(r).reverse()))}function Gc(r,e){return Nh(r.toString(16).padStart(e*2,"0"))}function wa(r,e){return Gc(r,e).reverse()}function At(r,e,t){let n;if(typeof e=="string")try{n=Nh(e)}catch(o){throw new Error(r+" must be hex string or Uint8Array, cause: "+o)}else if(Wc(e))n=Uint8Array.from(e);else throw new Error(r+" must be hex string or Uint8Array");let i=n.length;if(typeof t=="number"&&i!==t)throw new Error(r+" of length "+t+" expected, got "+i);return n}function xa(...r){let e=0;for(let n=0;n<r.length;n++){let i=r[n];_w(i),e+=i.length}let t=new Uint8Array(e);for(let n=0,i=0;n<r.length;n++){let o=r[n];t.set(o,i),i+=o.length}return t}var vw=r=>typeof r=="bigint"&&Aw<=r;function $0(r,e,t){return vw(r)&&vw(e)&&vw(t)&&e<=r&&r<t}function en(r,e,t,n){if(!$0(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function PA(r){let e;for(e=0;r>Aw;r>>=Sw,e+=1);return e}var Xc=r=>(Sw<<BigInt(r))-Sw,Ew=r=>new Uint8Array(r),TA=r=>Uint8Array.from(r);function RA(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=Ew(r),i=Ew(r),o=0,s=()=>{n.fill(1),i.fill(0),o=0},a=(...f)=>t(i,n,...f),c=(f=Ew(0))=>{i=a(TA([0]),f),n=a(),f.length!==0&&(i=a(TA([1]),f),n=a())},l=()=>{if(o++>=1e3)throw new Error("drbg: tried 1000 values");let f=0,h=[];for(;f<e;){n=a();let d=n.slice();h.push(d),f+=n.length}return xa(...h)};return(f,h)=>{s(),c(f);let d;for(;!(d=h(l()));)c();return s(),d}}var nV={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"||Wc(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 to(r,e,t={}){let n=(i,o,s)=>{let a=nV[o];if(typeof a!="function")throw new Error("invalid validator function");let c=r[i];if(!(s&&c===void 0)&&!a(c,r))throw new Error("param "+String(i)+" is invalid. Expected "+o+", got "+c)};for(let[i,o]of Object.entries(e))n(i,o,!1);for(let[i,o]of Object.entries(t))n(i,o,!0);return r}function af(r){let e=new WeakMap;return(t,...n)=>{let i=e.get(t);if(i!==void 0)return i;let o=r(t,...n);return e.set(t,o),o}}var hn=BigInt(0),yr=BigInt(1),Yc=BigInt(2),iV=BigInt(3),Iw=BigInt(4),DA=BigInt(5),NA=BigInt(8),oV=BigInt(9),sV=BigInt(16);function st(r,e){let t=r%e;return t>=hn?t:e+t}function Ct(r,e,t){let n=r;for(;e-- >hn;)n*=n,n%=t;return n}function H0(r,e){if(r===hn)throw new Error("invert: expected non-zero number");if(e<=hn)throw new Error("invert: expected positive modulus, got "+e);let t=st(r,e),n=e,i=hn,o=yr,s=yr,a=hn;for(;t!==hn;){let l=n/t,u=n%t,f=i-s*l,h=o-a*l;n=t,t=u,i=s,o=a,s=f,a=h}if(n!==yr)throw new Error("invert: does not exist");return st(i,e)}function aV(r){let e=r-yr,t=0;for(;e%Yc===hn;)e/=Yc,t++;let n=Yc,i=ro(r);for(;n<r&&OA(i,n);)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1){let s=(r+yr)/Iw;return function(c,l){let u=c.pow(l,s);if(!c.eql(c.sqr(u),l))throw new Error("Cannot find square root");return u}}let o=(e+yr)/Yc;return function(a,c){if(!OA(a,c))throw new Error("Cannot find square root");let l=t,u=a.pow(a.mul(a.ONE,n),e),f=a.pow(c,o),h=a.pow(c,e);for(;!a.eql(h,a.ONE);){if(a.eql(h,a.ZERO))return a.ZERO;let d=1;for(let g=a.sqr(h);d<l&&!a.eql(g,a.ONE);d++)g=a.sqr(g);let m=a.pow(u,yr<<BigInt(l-d-1));u=a.sqr(m),f=a.mul(f,m),h=a.mul(h,u),l=d}return f}}function cV(r){return r%Iw===iV?function(t,n){let i=(r+yr)/Iw,o=t.pow(n,i);if(!t.eql(t.sqr(o),n))throw new Error("Cannot find square root");return o}:r%NA===DA?function(t,n){let i=t.mul(n,Yc),o=(r-DA)/NA,s=t.pow(i,o),a=t.mul(n,s),c=t.mul(t.mul(a,Yc),s),l=t.mul(a,t.sub(c,t.ONE));if(!t.eql(t.sqr(l),n))throw new Error("Cannot find square root");return l}:(r%sV,aV(r))}var LA=(r,e)=>(st(r,e)&yr)===yr,lV=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Tw(r){let e={ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"},t=lV.reduce((n,i)=>(n[i]="function",n),e);return to(r,t)}function uV(r,e,t){if(t<hn)throw new Error("invalid exponent, negatives unsupported");if(t===hn)return r.ONE;if(t===yr)return e;let n=r.ONE,i=e;for(;t>hn;)t&yr&&(n=r.mul(n,i)),i=r.sqr(i),t>>=yr;return n}function cf(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),i=e.reduce((s,a,c)=>r.is0(a)?s:(n[c]=s,r.mul(s,a)),r.ONE),o=r.inv(i);return e.reduceRight((s,a,c)=>r.is0(a)?s:(n[c]=r.mul(s,n[c]),r.mul(s,a)),o),n}function fV(r,e){let t=(r.ORDER-yr)/Yc,n=r.pow(e,t),i=r.eql(n,r.ONE),o=r.eql(n,r.ZERO),s=r.eql(n,r.neg(r.ONE));if(!i&&!o&&!s)throw new Error("Cannot find square root: probably non-prime P");return i?1:o?0:-1}function OA(r,e){let t=fV(r,e);return t===0||t===1}function Cw(r,e){e!==void 0&&Mo(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}function ro(r,e,t=!1,n={}){if(r<=hn)throw new Error("invalid field: expected ORDER > 0, got "+r);let{nBitLength:i,nByteLength:o}=Cw(r,e);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");let s,a=Object.freeze({ORDER:r,isLE:t,BITS:i,BYTES:o,MASK:Xc(i),ZERO:hn,ONE:yr,create:c=>st(c,r),isValid:c=>{if(typeof c!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof c);return hn<=c&&c<r},is0:c=>c===hn,isOdd:c=>(c&yr)===yr,neg:c=>st(-c,r),eql:(c,l)=>c===l,sqr:c=>st(c*c,r),add:(c,l)=>st(c+l,r),sub:(c,l)=>st(c-l,r),mul:(c,l)=>st(c*l,r),pow:(c,l)=>uV(a,c,l),div:(c,l)=>st(c*H0(l,r),r),sqrN:c=>c*c,addN:(c,l)=>c+l,subN:(c,l)=>c-l,mulN:(c,l)=>c*l,inv:c=>H0(c,r),sqrt:n.sqrt||(c=>(s||(s=cV(r)),s(a,c))),toBytes:c=>t?wa(c,o):Gc(c,o),fromBytes:c=>{if(c.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+c.length);return t?$o(c):ws(c)},invertBatch:c=>cf(a,c),cmov:(c,l,u)=>u?l:c});return Object.freeze(a)}function BA(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 kw(r){let e=BA(r);return e+Math.ceil(e/2)}function MA(r,e,t=!1){let n=r.length,i=BA(e),o=kw(e);if(n<16||n<o||n>1024)throw new Error("expected "+o+"-1024 bytes of input, got "+n);let s=t?$o(r):ws(r),a=st(s,e-yr)+yr;return t?wa(a,i):Gc(a,i)}var UA=BigInt(0),Ow=BigInt(1);function Pw(r,e){let t=e.negate();return r?t:e}function $A(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Rw(r,e){$A(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),i=2**r,o=Xc(r),s=BigInt(r);return{windows:t,windowSize:n,mask:o,maxNumber:i,shiftBy:s}}function FA(r,e,t){let{windowSize:n,mask:i,maxNumber:o,shiftBy:s}=t,a=Number(r&i),c=r>>s;a>n&&(a-=o,c+=Ow);let l=e*n,u=l+Math.abs(a)-1,f=a===0,h=a<0,d=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:h,isNegF:d,offsetF:l}}function dV(r,e){if(!Array.isArray(r))throw new Error("array expected");r.forEach((t,n)=>{if(!(t instanceof e))throw new Error("invalid point at index "+n)})}function hV(r,e){if(!Array.isArray(r))throw new Error("array of scalars expected");r.forEach((t,n)=>{if(!e.isValid(t))throw new Error("invalid scalar at index "+n)})}var Dw=new WeakMap,HA=new WeakMap;function Nw(r){return HA.get(r)||1}function V0(r,e){return{constTimeNegate:Pw,hasPrecomputes(t){return Nw(t)!==1},unsafeLadder(t,n,i=r.ZERO){let o=t;for(;n>UA;)n&Ow&&(i=i.add(o)),o=o.double(),n>>=Ow;return i},precomputeWindow(t,n){let{windows:i,windowSize:o}=Rw(n,e),s=[],a=t,c=a;for(let l=0;l<i;l++){c=a,s.push(c);for(let u=1;u<o;u++)c=c.add(a),s.push(c);a=c.double()}return s},wNAF(t,n,i){let o=r.ZERO,s=r.BASE,a=Rw(t,e);for(let c=0;c<a.windows;c++){let{nextN:l,offset:u,isZero:f,isNeg:h,isNegF:d,offsetF:m}=FA(i,c,a);i=l,f?s=s.add(Pw(d,n[m])):o=o.add(Pw(h,n[u]))}return{p:o,f:s}},wNAFUnsafe(t,n,i,o=r.ZERO){let s=Rw(t,e);for(let a=0;a<s.windows&&i!==UA;a++){let{nextN:c,offset:l,isZero:u,isNeg:f}=FA(i,a,s);if(i=c,!u){let h=n[l];o=o.add(f?h.negate():h)}}return o},getPrecomputes(t,n,i){let o=Dw.get(n);return o||(o=this.precomputeWindow(n,t),t!==1&&Dw.set(n,i(o))),o},wNAFCached(t,n,i){let o=Nw(t);return this.wNAF(o,this.getPrecomputes(o,t,i),n)},wNAFCachedUnsafe(t,n,i,o){let s=Nw(t);return s===1?this.unsafeLadder(t,n,o):this.wNAFUnsafe(s,this.getPrecomputes(s,t,i),n,o)},setWindowSize(t,n){$A(n,e),HA.set(t,n),Dw.delete(t)}}}function z0(r,e,t,n){if(dV(t,r),hV(n,e),t.length!==n.length)throw new Error("arrays of points and scalars must have equal length");let i=r.ZERO,o=PA(BigInt(t.length)),s=o>12?o-3:o>4?o-2:o?2:1,a=Xc(s),c=new Array(Number(a)+1).fill(i),l=Math.floor((e.BITS-1)/s)*s,u=i;for(let f=l;f>=0;f-=s){c.fill(i);for(let d=0;d<n.length;d++){let m=n[d],g=Number(m>>BigInt(f)&a);c[g]=c[g].add(t[d])}let h=i;for(let d=c.length-1,m=i;d>0;d--)m=m.add(c[d]),h=h.add(m);if(u=u.add(h),f!==0)for(let d=0;d<s;d++)u=u.double()}return u}function Oh(r){return Tw(r.Fp),to(r,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...Cw(r.n,r.nBitLength),...r,p:r.Fp.ORDER})}var Ho=BigInt(0),pn=BigInt(1),VA=BigInt(2),pV=BigInt(8),mV={zip215:!0};function gV(r){let e=Oh(r);return to(r,{hash:"function",a:"bigint",d:"bigint",randomBytes:"function"},{adjustScalarBytes:"function",domain:"function",uvRatio:"function",mapToCurve:"function"}),Object.freeze({...e})}function zA(r){let e=gV(r),{Fp:t,n,prehash:i,hash:o,randomBytes:s,nByteLength:a,h:c}=e,l=VA<<BigInt(a*8)-pn,u=t.create,f=ro(e.n,e.nBitLength),h=e.uvRatio||((M,R)=>{try{return{isValid:!0,value:t.sqrt(M*t.inv(R))}}catch{return{isValid:!1,value:Ho}}}),d=e.adjustScalarBytes||(M=>M),m=e.domain||((M,R,N)=>{if(Fo("phflag",N),R.length||N)throw new Error("Contexts/pre-hash are not supported");return M});function g(M,R,N=!1){let Z=N?pn:Ho;en("coordinate "+M,R,Z,l)}function w(M){if(!(M instanceof b))throw new Error("ExtendedPoint expected")}let x=af((M,R)=>{let{ex:N,ey:Z,ez:ne}=M,q=M.is0();R==null&&(R=q?pV:t.inv(ne));let ge=u(N*R),ke=u(Z*R),le=u(ne*R);if(q)return{x:Ho,y:pn};if(le!==pn)throw new Error("invZ was invalid");return{x:ge,y:ke}}),v=af(M=>{let{a:R,d:N}=e;if(M.is0())throw new Error("bad point: ZERO");let{ex:Z,ey:ne,ez:q,et:ge}=M,ke=u(Z*Z),le=u(ne*ne),De=u(q*q),et=u(De*De),Ye=u(ke*R),pt=u(De*u(Ye+le)),bt=u(et+u(N*u(ke*le)));if(pt!==bt)throw new Error("bad point: equation left != right (1)");let Rt=u(Z*ne),Et=u(q*ge);if(Rt!==Et)throw new Error("bad point: equation left != right (2)");return!0});class b{constructor(R,N,Z,ne){g("x",R),g("y",N),g("z",Z,!0),g("t",ne),this.ex=R,this.ey=N,this.ez=Z,this.et=ne,Object.freeze(this)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static fromAffine(R){if(R instanceof b)throw new Error("extended point not allowed");let{x:N,y:Z}=R||{};return g("x",N),g("y",Z),new b(N,Z,pn,u(N*Z))}static normalizeZ(R){let N=cf(t,R.map(Z=>Z.ez));return R.map((Z,ne)=>Z.toAffine(N[ne])).map(b.fromAffine)}static msm(R,N){return z0(b,f,R,N)}_setWindowSize(R){D.setWindowSize(this,R)}assertValidity(){v(this)}equals(R){w(R);let{ex:N,ey:Z,ez:ne}=this,{ex:q,ey:ge,ez:ke}=R,le=u(N*ke),De=u(q*ne),et=u(Z*ke),Ye=u(ge*ne);return le===De&&et===Ye}is0(){return this.equals(b.ZERO)}negate(){return new b(u(-this.ex),this.ey,this.ez,u(-this.et))}double(){let{a:R}=e,{ex:N,ey:Z,ez:ne}=this,q=u(N*N),ge=u(Z*Z),ke=u(VA*u(ne*ne)),le=u(R*q),De=N+Z,et=u(u(De*De)-q-ge),Ye=le+ge,pt=Ye-ke,bt=le-ge,Rt=u(et*pt),Et=u(Ye*bt),mr=u(et*bt),Qn=u(pt*Ye);return new b(Rt,Et,Qn,mr)}add(R){w(R);let{a:N,d:Z}=e,{ex:ne,ey:q,ez:ge,et:ke}=this,{ex:le,ey:De,ez:et,et:Ye}=R,pt=u(ne*le),bt=u(q*De),Rt=u(ke*Z*Ye),Et=u(ge*et),mr=u((ne+q)*(le+De)-pt-bt),Qn=Et-Rt,ds=Et+Rt,mh=u(bt-N*pt),Gm=u(mr*Qn),Xm=u(ds*mh),Ym=u(mr*mh),Qm=u(Qn*ds);return new b(Gm,Xm,Qm,Ym)}subtract(R){return this.add(R.negate())}wNAF(R){return D.wNAFCached(this,R,b.normalizeZ)}multiply(R){let N=R;en("scalar",N,pn,n);let{p:Z,f:ne}=this.wNAF(N);return b.normalizeZ([Z,ne])[0]}multiplyUnsafe(R,N=b.ZERO){let Z=R;return en("scalar",Z,Ho,n),Z===Ho?T:this.is0()||Z===pn?this:D.wNAFCachedUnsafe(this,Z,b.normalizeZ,N)}isSmallOrder(){return this.multiplyUnsafe(c).is0()}isTorsionFree(){return D.unsafeLadder(this,n).is0()}toAffine(R){return x(this,R)}clearCofactor(){let{h:R}=e;return R===pn?this:this.multiplyUnsafe(R)}static fromHex(R,N=!1){let{d:Z,a:ne}=e,q=t.BYTES;R=At("pointHex",R,q),Fo("zip215",N);let ge=R.slice(),ke=R[q-1];ge[q-1]=ke&-129;let le=$o(ge),De=N?l:t.ORDER;en("pointHex.y",le,Ho,De);let et=u(le*le),Ye=u(et-pn),pt=u(Z*et-ne),{isValid:bt,value:Rt}=h(Ye,pt);if(!bt)throw new Error("Point.fromHex: invalid y coordinate");let Et=(Rt&pn)===pn,mr=(ke&128)!==0;if(!N&&Rt===Ho&&mr)throw new Error("Point.fromHex: x=0 and x_0=1");return mr!==Et&&(Rt=u(-Rt)),b.fromAffine({x:Rt,y:le})}static fromPrivateKey(R){let{scalar:N}=k(R);return S.multiply(N)}toRawBytes(){let{x:R,y:N}=this.toAffine(),Z=wa(N,t.BYTES);return Z[Z.length-1]|=R&pn?128:0,Z}toHex(){return ya(this.toRawBytes())}}b.BASE=new b(e.Gx,e.Gy,pn,u(e.Gx*e.Gy)),b.ZERO=new b(Ho,pn,pn,Ho);let{BASE:S,ZERO:T}=b,D=V0(b,a*8);function A(M){return st(M,n)}function I(M){return A($o(M))}function k(M){let R=t.BYTES;M=At("private key",M,R);let N=At("hashed private key",o(M),2*R),Z=d(N.slice(0,R)),ne=N.slice(R,2*R),q=I(Z);return{head:Z,prefix:ne,scalar:q}}function X(M){let{head:R,prefix:N,scalar:Z}=k(M),ne=S.multiply(Z),q=ne.toRawBytes();return{head:R,prefix:N,scalar:Z,point:ne,pointBytes:q}}function K(M){return X(M).pointBytes}function V(M=Uint8Array.of(),...R){let N=xa(...R);return I(o(m(N,At("context",M),!!i)))}function Y(M,R,N={}){M=At("message",M),i&&(M=i(M));let{prefix:Z,scalar:ne,pointBytes:q}=X(R),ge=V(N.context,Z,M),ke=S.multiply(ge).toRawBytes(),le=V(N.context,ke,q,M),De=A(ge+le*ne);en("signature.s",De,Ho,n);let et=xa(ke,wa(De,t.BYTES));return At("result",et,t.BYTES*2)}let $=mV;function F(M,R,N,Z=$){let{context:ne,zip215:q}=Z,ge=t.BYTES;M=At("signature",M,2*ge),R=At("message",R),N=At("publicKey",N,ge),q!==void 0&&Fo("zip215",q),i&&(R=i(R));let ke=$o(M.slice(ge,2*ge)),le,De,et;try{le=b.fromHex(N,q),De=b.fromHex(M.slice(0,ge),q),et=S.multiplyUnsafe(ke)}catch{return!1}if(!q&&le.isSmallOrder())return!1;let Ye=V(ne,De.toRawBytes(),le.toRawBytes(),R);return De.add(le.multiplyUnsafe(Ye)).subtract(et).clearCofactor().equals(b.ZERO)}return S._setWindowSize(8),{CURVE:e,getPublicKey:K,sign:Y,verify:F,ExtendedPoint:b,utils:{getExtendedPublicKey:X,randomPrivateKey:()=>s(t.BYTES),precompute(M=8,R=b.BASE){return R._setWindowSize(M),R.multiply(BigInt(3)),R}}}}var lf=BigInt(0),Lw=BigInt(1);function yV(r){return to(r,{a:"bigint"},{montgomeryBits:"isSafeInteger",nByteLength:"isSafeInteger",adjustScalarBytes:"function",domain:"function",powPminus2:"function",Gu:"bigint"}),Object.freeze({...r})}function KA(r){let e=yV(r),{P:t}=e,n=ro(t),i=b=>st(b,t),o=e.montgomeryBits,s=Math.ceil(o/8),a=e.nByteLength,c=e.adjustScalarBytes||(b=>b),l=e.powPminus2||(b=>n.pow(b,t-BigInt(2)));function u(b,S,T){let D=i(b*(S-T));return S=i(S-D),T=i(T+D),[S,T]}let f=(e.a-BigInt(2))/BigInt(4);function h(b,S){en("u",b,lf,t),en("scalar",S,lf,t);let T=S,D=b,A=Lw,I=lf,k=b,X=Lw,K=lf,V;for(let $=BigInt(o-1);$>=lf;$--){let F=T>>$&Lw;K^=F,V=u(K,A,k),A=V[0],k=V[1],V=u(K,I,X),I=V[0],X=V[1],K=F;let z=A+I,M=i(z*z),R=A-I,N=i(R*R),Z=M-N,ne=k+X,q=k-X,ge=i(q*z),ke=i(ne*R),le=ge+ke,De=ge-ke;k=i(le*le),X=i(D*i(De*De)),A=i(M*N),I=i(Z*(M+i(f*Z)))}V=u(K,A,k),A=V[0],k=V[1],V=u(K,I,X),I=V[0],X=V[1];let Y=l(I);return i(A*Y)}function d(b){return wa(i(b),s)}function m(b){let S=At("u coordinate",b,s);return a===32&&(S[31]&=127),$o(S)}function g(b){let S=At("scalar",b),T=S.length;if(T!==s&&T!==a){let D=""+s+" or "+a;throw new Error("invalid scalar, expected "+D+" bytes, got "+T)}return $o(c(S))}function w(b,S){let T=m(S),D=g(b),A=h(T,D);if(A===lf)throw new Error("invalid private or public key received");return d(A)}let x=d(e.Gu);function v(b){return w(b,x)}return{scalarMult:w,scalarMultBase:v,getSharedSecret:(b,S)=>w(b,S),getPublicKey:b=>v(b),utils:{randomPrivateKey:()=>e.randomBytes(e.nByteLength)},GuBytes:x}}var Lh=BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),qA=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),ase=BigInt(0),wV=BigInt(1),jA=BigInt(2),xV=BigInt(3),bV=BigInt(5),vV=BigInt(8);function GA(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),i=BigInt(80),o=Lh,a=r*r%o*r%o,c=Ct(a,jA,o)*a%o,l=Ct(c,wV,o)*r%o,u=Ct(l,bV,o)*l%o,f=Ct(u,e,o)*u%o,h=Ct(f,t,o)*f%o,d=Ct(h,n,o)*h%o,m=Ct(d,i,o)*d%o,g=Ct(m,i,o)*d%o,w=Ct(g,e,o)*u%o;return{pow_p_5_8:Ct(w,jA,o)*r%o,b2:a}}function XA(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}function EV(r,e){let t=Lh,n=st(e*e*e,t),i=st(n*n*e,t),o=GA(r*i).pow_p_5_8,s=st(r*n*o,t),a=st(e*s*s,t),c=s,l=st(s*qA,t),u=a===r,f=a===st(-r,t),h=a===st(-r*qA,t);return u&&(s=c),(f||h)&&(s=l),LA(s,t)&&(s=st(-s,t)),{isValid:u||f,value:s}}var WA=ro(Lh,void 0,!0),SV={a:WA.create(BigInt(-1)),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),Fp:WA,n:BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),h:vV,Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960"),hash:F0,randomBytes:zc,adjustScalarBytes:XA,uvRatio:EV},Bh=zA(SV);var Mh=KA({P:Lh,a:BigInt(486662),montgomeryBits:255,nByteLength:32,Gu:BigInt(9),powPminus2:r=>{let e=Lh,{pow_p_5_8:t,b2:n}=GA(r);return st(Ct(t,xV,e)*n,e)},adjustScalarBytes:XA,randomBytes:zc});var Qc=32,_i=64,Bw=32;function YA(){let r=Bh.utils.randomPrivateKey(),e=Bh.getPublicKey(r);return{privateKey:AV(r,e),publicKey:e}}function QA(r,e){let t=r.subarray(0,Bw);return Bh.sign(e instanceof Uint8Array?e:e.subarray(),t)}function ZA(r,e,t){return Bh.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}function AV(r,e){let t=new Uint8Array(_i);for(let n=0;n<Bw;n++)t[n]=r[n],t[Bw+n]=e[n];return t}var Uh=class{type="Ed25519";raw;constructor(e){this.raw=ff(e,Qc)}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return ZA(this.raw,t,e)}},uf=class{type="Ed25519";raw;publicKey;constructor(e,t){this.raw=ff(e,_i),this.publicKey=new Uh(t)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return QA(this.raw,e)}};function Mw(r){if(r.length>_i){r=ff(r,_i+Qc);let n=r.subarray(0,_i),i=r.subarray(_i,r.length);return new uf(n,i)}r=ff(r,_i);let e=r.subarray(0,_i),t=r.subarray(Qc);return new uf(e,t)}function Uw(r){return r=ff(r,Qc),new Uh(r)}async function e_(){let{privateKey:r,publicKey:e}=YA();return new uf(r,e)}function ff(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new U(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var _t;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(_t||(_t={}));var Fw;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(Fw||(Fw={}));(function(r){r.codec=()=>St(Fw)})(_t||(_t={}));var Vo;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_t.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=_t.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Vo||(Vo={}));var Fh;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Type!=null&&(n.uint32(8),_t.codec().encode(t.Type,n)),t.Data!=null&&(n.uint32(18),n.bytes(t.Data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.Type=_t.codec().decode(t);break}case 2:{o.Data=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Fh||(Fh={}));function mn(r){if(isNaN(r)||r<=0)throw new U("random bytes length must be a Number bigger than 0");return zc(r)}var $h=class extends Error{constructor(e="An error occurred while signing a message"){super(e),this.name="SigningError"}},Hh=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},K0=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var r_={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new K0("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var In=r_;var zh={};Ft(zh,{MAX_RSA_KEY_SIZE:()=>$w,generateRSAKeyPair:()=>Xw,jwkToJWKKeyPair:()=>o_,jwkToPkcs1:()=>CV,jwkToPkix:()=>Kw,jwkToRSAPrivateKey:()=>Gw,pkcs1MessageToJwk:()=>Vw,pkcs1MessageToRSAPrivateKey:()=>q0,pkcs1ToJwk:()=>TV,pkcs1ToRSAPrivateKey:()=>qw,pkixMessageToJwk:()=>zw,pkixMessageToRSAPublicKey:()=>Ww,pkixToJwk:()=>kV,pkixToRSAPublicKey:()=>jw});var zo=U0;var df=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=zh.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return W.createV1(114,this._multihash)}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return i_(this.jwk,t,e)}},Vh=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=zh.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return n_(this.jwk,e)}};var $w=8192,Hw=18,_V=1062,IV=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function TV(r){let e=Ai(r);return Vw(e)}function Vw(r){return{n:H(r[1],"base64url"),e:H(r[2],"base64url"),d:H(r[3],"base64url"),p:H(r[4],"base64url"),q:H(r[5],"base64url"),dp:H(r[6],"base64url"),dq:H(r[7],"base64url"),qi:H(r[8],"base64url"),kty:"RSA"}}function CV(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 U("JWK was missing components");return Ji([dn(Uint8Array.from([0])),dn(O(r.n,"base64url")),dn(O(r.e,"base64url")),dn(O(r.d,"base64url")),dn(O(r.p,"base64url")),dn(O(r.q,"base64url")),dn(O(r.dp,"base64url")),dn(O(r.dq,"base64url")),dn(O(r.qi,"base64url"))]).subarray()}function kV(r){let e=Ai(r,{offset:0});return zw(e)}function zw(r){let e=Ai(r[1],{offset:0});return{kty:"RSA",n:H(e[0],"base64url"),e:H(e[1],"base64url")}}function Kw(r){if(r.n==null||r.e==null)throw new U("JWK was missing components");return Ji([IV,Ch(Ji([dn(O(r.n,"base64url")),dn(O(r.e,"base64url"))]))]).subarray()}function qw(r){let e=Ai(r);return q0(e)}function q0(r){let e=Vw(r);return Gw(e)}function jw(r,e){if(r.byteLength>=_V)throw new hs("Key size is too large");let t=Ai(r,{offset:0});return Ww(t,r,e)}function Ww(r,e,t){let n=zw(r);if(t==null){let i=zo(Vo.encode({Type:_t.RSA,Data:e}));t=Zr(Hw,i)}return new df(n,t)}function Gw(r){if(a_(r)>$w)throw new U("Key size is too large");let e=o_(r),t=zo(Vo.encode({Type:_t.RSA,Data:Kw(e.publicKey)})),n=Zr(Hw,t);return new Vh(e.privateKey,new df(e.publicKey,n))}async function Xw(r){if(r>$w)throw new U("Key size is too large");let e=await s_(r),t=zo(Vo.encode({Type:_t.RSA,Data:Kw(e.publicKey)})),n=Zr(Hw,t);return new Vh(e.privateKey,new df(e.publicKey,n))}function o_(r){if(r==null)throw new U("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function s_(r){let e=await In.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 PV(e);return{privateKey:t[0],publicKey:t[1]}}async function n_(r,e){let t=await In.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await In.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function i_(r,e,t){let n=await In.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return In.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function PV(r){if(r.privateKey==null||r.publicKey==null)throw new U("Private and public key are required");return Promise.all([In.get().subtle.exportKey("jwk",r.privateKey),In.get().subtle.exportKey("jwk",r.publicKey)])}function a_(r){if(r.kty!=="RSA")throw new U("invalid key type");if(r.n==null)throw new U("invalid key modulus");return O(r.n,"base64url").length*8}var j0=class extends of{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,Hc(e);let n=ha(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 i=this.blockLen,o=new Uint8Array(i);o.set(n.length>i?e.create().update(n).digest():n);for(let s=0;s<o.length;s++)o[s]^=54;this.iHash.update(o),this.oHash=e.create();for(let s=0;s<o.length;s++)o[s]^=106;this.oHash.update(o),Jr(o)}update(e){return sf(this),this.iHash.update(e),this}digestInto(e){sf(this),da(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:i,destroyed:o,blockLen:s,outputLen:a}=this;return e=e,e.finished=i,e.destroyed=o,e.blockLen=s,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},ba=(r,e,t)=>new j0(r,e).update(t).digest();ba.create=(r,e)=>new j0(r,e);function c_(r){r.lowS!==void 0&&Fo("lowS",r.lowS),r.prehash!==void 0&&Fo("prehash",r.prehash)}function RV(r){let e=Oh(r);to(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:i}=e;if(t){if(!n.eql(i,n.ZERO))throw new Error("invalid 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("invalid endomorphism, expected beta: bigint and splitScalar: function")}return Object.freeze({...e})}var Yw=class extends Error{constructor(e=""){super(e)}},xs={Err:Yw,_tlv:{encode:(r,e)=>{let{Err:t}=xs;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,i=Dh(n);if(i.length/2&128)throw new t("tlv.encode: long form length too big");let o=n>127?Dh(i.length/2|128):"";return Dh(r)+o+i+e},decode(r,e){let{Err:t}=xs,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let i=e[n++],o=!!(i&128),s=0;if(!o)s=i;else{let c=i&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)s=s<<8|u;if(n+=c,s<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+s);if(a.length!==s)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+s)}}},_int:{encode(r){let{Err:e}=xs;if(r<bs)throw new e("integer: negative integers are not allowed");let t=Dh(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=xs;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return ws(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=xs,i=At("signature",r),{v:o,l:s}=n.decode(48,i);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,o),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=xs,n=e.encode(2,t.encode(r.r)),i=e.encode(2,t.encode(r.s)),o=n+i;return e.encode(48,o)}},bs=BigInt(0),Ar=BigInt(1),iae=BigInt(2),l_=BigInt(3),oae=BigInt(4);function DV(r){let e=RV(r),{Fp:t}=e,n=ro(e.n,e.nBitLength),i=e.toBytes||((g,w,x)=>{let v=w.toAffine();return xa(Uint8Array.from([4]),t.toBytes(v.x),t.toBytes(v.y))}),o=e.fromBytes||(g=>{let w=g.subarray(1),x=t.fromBytes(w.subarray(0,t.BYTES)),v=t.fromBytes(w.subarray(t.BYTES,2*t.BYTES));return{x,y:v}});function s(g){let{a:w,b:x}=e,v=t.sqr(g),b=t.mul(v,g);return t.add(t.add(b,t.mul(g,w)),x)}if(!t.eql(t.sqr(e.Gy),s(e.Gx)))throw new Error("bad generator point: equation left != right");function a(g){return $0(g,Ar,e.n)}function c(g){let{allowedPrivateKeyLengths:w,nByteLength:x,wrapPrivateKey:v,n:b}=e;if(w&&typeof g!="bigint"){if(Wc(g)&&(g=ya(g)),typeof g!="string"||!w.includes(g.length))throw new Error("invalid private key");g=g.padStart(x*2,"0")}let S;try{S=typeof g=="bigint"?g:ws(At("private key",g,x))}catch{throw new Error("invalid private key, expected hex or "+x+" bytes, got "+typeof g)}return v&&(S=st(S,b)),en("private key",S,Ar,b),S}function l(g){if(!(g instanceof h))throw new Error("ProjectivePoint expected")}let u=af((g,w)=>{let{px:x,py:v,pz:b}=g;if(t.eql(b,t.ONE))return{x,y:v};let S=g.is0();w==null&&(w=S?t.ONE:t.inv(b));let T=t.mul(x,w),D=t.mul(v,w),A=t.mul(b,w);if(S)return{x:t.ZERO,y:t.ZERO};if(!t.eql(A,t.ONE))throw new Error("invZ was invalid");return{x:T,y:D}}),f=af(g=>{if(g.is0()){if(e.allowInfinityPoint&&!t.is0(g.py))return;throw new Error("bad point: ZERO")}let{x:w,y:x}=g.toAffine();if(!t.isValid(w)||!t.isValid(x))throw new Error("bad point: x or y not FE");let v=t.sqr(x),b=s(w);if(!t.eql(v,b))throw new Error("bad point: equation left != right");if(!g.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});class h{constructor(w,x,v){if(w==null||!t.isValid(w))throw new Error("x required");if(x==null||!t.isValid(x)||t.is0(x))throw new Error("y required");if(v==null||!t.isValid(v))throw new Error("z required");this.px=w,this.py=x,this.pz=v,Object.freeze(this)}static fromAffine(w){let{x,y:v}=w||{};if(!w||!t.isValid(x)||!t.isValid(v))throw new Error("invalid affine point");if(w instanceof h)throw new Error("projective point not allowed");let b=S=>t.eql(S,t.ZERO);return b(x)&&b(v)?h.ZERO:new h(x,v,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(w){let x=cf(t,w.map(v=>v.pz));return w.map((v,b)=>v.toAffine(x[b])).map(h.fromAffine)}static fromHex(w){let x=h.fromAffine(o(At("pointHex",w)));return x.assertValidity(),x}static fromPrivateKey(w){return h.BASE.multiply(c(w))}static msm(w,x){return z0(h,n,w,x)}_setWindowSize(w){m.setWindowSize(this,w)}assertValidity(){f(this)}hasEvenY(){let{y:w}=this.toAffine();if(t.isOdd)return!t.isOdd(w);throw new Error("Field doesn't support isOdd")}equals(w){l(w);let{px:x,py:v,pz:b}=this,{px:S,py:T,pz:D}=w,A=t.eql(t.mul(x,D),t.mul(S,b)),I=t.eql(t.mul(v,D),t.mul(T,b));return A&&I}negate(){return new h(this.px,t.neg(this.py),this.pz)}double(){let{a:w,b:x}=e,v=t.mul(x,l_),{px:b,py:S,pz:T}=this,D=t.ZERO,A=t.ZERO,I=t.ZERO,k=t.mul(b,b),X=t.mul(S,S),K=t.mul(T,T),V=t.mul(b,S);return V=t.add(V,V),I=t.mul(b,T),I=t.add(I,I),D=t.mul(w,I),A=t.mul(v,K),A=t.add(D,A),D=t.sub(X,A),A=t.add(X,A),A=t.mul(D,A),D=t.mul(V,D),I=t.mul(v,I),K=t.mul(w,K),V=t.sub(k,K),V=t.mul(w,V),V=t.add(V,I),I=t.add(k,k),k=t.add(I,k),k=t.add(k,K),k=t.mul(k,V),A=t.add(A,k),K=t.mul(S,T),K=t.add(K,K),k=t.mul(K,V),D=t.sub(D,k),I=t.mul(K,X),I=t.add(I,I),I=t.add(I,I),new h(D,A,I)}add(w){l(w);let{px:x,py:v,pz:b}=this,{px:S,py:T,pz:D}=w,A=t.ZERO,I=t.ZERO,k=t.ZERO,X=e.a,K=t.mul(e.b,l_),V=t.mul(x,S),Y=t.mul(v,T),$=t.mul(b,D),F=t.add(x,v),z=t.add(S,T);F=t.mul(F,z),z=t.add(V,Y),F=t.sub(F,z),z=t.add(x,b);let M=t.add(S,D);return z=t.mul(z,M),M=t.add(V,$),z=t.sub(z,M),M=t.add(v,b),A=t.add(T,D),M=t.mul(M,A),A=t.add(Y,$),M=t.sub(M,A),k=t.mul(X,z),A=t.mul(K,$),k=t.add(A,k),A=t.sub(Y,k),k=t.add(Y,k),I=t.mul(A,k),Y=t.add(V,V),Y=t.add(Y,V),$=t.mul(X,$),z=t.mul(K,z),Y=t.add(Y,$),$=t.sub(V,$),$=t.mul(X,$),z=t.add(z,$),V=t.mul(Y,z),I=t.add(I,V),V=t.mul(M,z),A=t.mul(F,A),A=t.sub(A,V),V=t.mul(F,Y),k=t.mul(M,k),k=t.add(k,V),new h(A,I,k)}subtract(w){return this.add(w.negate())}is0(){return this.equals(h.ZERO)}wNAF(w){return m.wNAFCached(this,w,h.normalizeZ)}multiplyUnsafe(w){let{endo:x,n:v}=e;en("scalar",w,bs,v);let b=h.ZERO;if(w===bs)return b;if(this.is0()||w===Ar)return this;if(!x||m.hasPrecomputes(this))return m.wNAFCachedUnsafe(this,w,h.normalizeZ);let{k1neg:S,k1:T,k2neg:D,k2:A}=x.splitScalar(w),I=b,k=b,X=this;for(;T>bs||A>bs;)T&Ar&&(I=I.add(X)),A&Ar&&(k=k.add(X)),X=X.double(),T>>=Ar,A>>=Ar;return S&&(I=I.negate()),D&&(k=k.negate()),k=new h(t.mul(k.px,x.beta),k.py,k.pz),I.add(k)}multiply(w){let{endo:x,n:v}=e;en("scalar",w,Ar,v);let b,S;if(x){let{k1neg:T,k1:D,k2neg:A,k2:I}=x.splitScalar(w),{p:k,f:X}=this.wNAF(D),{p:K,f:V}=this.wNAF(I);k=m.constTimeNegate(T,k),K=m.constTimeNegate(A,K),K=new h(t.mul(K.px,x.beta),K.py,K.pz),b=k.add(K),S=X.add(V)}else{let{p:T,f:D}=this.wNAF(w);b=T,S=D}return h.normalizeZ([b,S])[0]}multiplyAndAddUnsafe(w,x,v){let b=h.BASE,S=(D,A)=>A===bs||A===Ar||!D.equals(b)?D.multiplyUnsafe(A):D.multiply(A),T=S(this,x).add(S(w,v));return T.is0()?void 0:T}toAffine(w){return u(this,w)}isTorsionFree(){let{h:w,isTorsionFree:x}=e;if(w===Ar)return!0;if(x)return x(h,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:w,clearCofactor:x}=e;return w===Ar?this:x?x(h,this):this.multiplyUnsafe(e.h)}toRawBytes(w=!0){return Fo("isCompressed",w),this.assertValidity(),i(h,this,w)}toHex(w=!0){return Fo("isCompressed",w),ya(this.toRawBytes(w))}}h.BASE=new h(e.Gx,e.Gy,t.ONE),h.ZERO=new h(t.ZERO,t.ONE,t.ZERO);let d=e.nBitLength,m=V0(h,e.endo?Math.ceil(d/2):d);return{CURVE:e,ProjectivePoint:h,normPrivateKeyToScalar:c,weierstrassEquation:s,isWithinCurveOrder:a}}function NV(r){let e=Oh(r);return to(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function u_(r){let e=NV(r),{Fp:t,n}=e,i=t.BYTES+1,o=2*t.BYTES+1;function s($){return st($,n)}function a($){return H0($,n)}let{ProjectivePoint:c,normPrivateKeyToScalar:l,weierstrassEquation:u,isWithinCurveOrder:f}=DV({...e,toBytes($,F,z){let M=F.toAffine(),R=t.toBytes(M.x),N=xa;return Fo("isCompressed",z),z?N(Uint8Array.from([F.hasEvenY()?2:3]),R):N(Uint8Array.from([4]),R,t.toBytes(M.y))},fromBytes($){let F=$.length,z=$[0],M=$.subarray(1);if(F===i&&(z===2||z===3)){let R=ws(M);if(!$0(R,Ar,t.ORDER))throw new Error("Point is not on curve");let N=u(R),Z;try{Z=t.sqrt(N)}catch(ge){let ke=ge instanceof Error?": "+ge.message:"";throw new Error("Point is not on curve"+ke)}let ne=(Z&Ar)===Ar;return(z&1)===1!==ne&&(Z=t.neg(Z)),{x:R,y:Z}}else if(F===o&&z===4){let R=t.fromBytes(M.subarray(0,t.BYTES)),N=t.fromBytes(M.subarray(t.BYTES,2*t.BYTES));return{x:R,y:N}}else{let R=i,N=o;throw new Error("invalid Point, expected length of "+R+", or uncompressed "+N+", got "+F)}}}),h=$=>ya(Gc($,e.nByteLength));function d($){let F=n>>Ar;return $>F}function m($){return d($)?s(-$):$}let g=($,F,z)=>ws($.slice(F,z));class w{constructor(F,z,M){en("r",F,Ar,n),en("s",z,Ar,n),this.r=F,this.s=z,M!=null&&(this.recovery=M),Object.freeze(this)}static fromCompact(F){let z=e.nByteLength;return F=At("compactSignature",F,z*2),new w(g(F,0,z),g(F,z,2*z))}static fromDER(F){let{r:z,s:M}=xs.toSig(At("DER",F));return new w(z,M)}assertValidity(){}addRecoveryBit(F){return new w(this.r,this.s,F)}recoverPublicKey(F){let{r:z,s:M,recovery:R}=this,N=D(At("msgHash",F));if(R==null||![0,1,2,3].includes(R))throw new Error("recovery id invalid");let Z=R===2||R===3?z+e.n:z;if(Z>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let ne=(R&1)===0?"02":"03",q=c.fromHex(ne+h(Z)),ge=a(Z),ke=s(-N*ge),le=s(M*ge),De=c.BASE.multiplyAndAddUnsafe(q,ke,le);if(!De)throw new Error("point at infinify");return De.assertValidity(),De}hasHighS(){return d(this.s)}normalizeS(){return this.hasHighS()?new w(this.r,s(-this.s),this.recovery):this}toDERRawBytes(){return Nh(this.toDERHex())}toDERHex(){return xs.hexFromSig(this)}toCompactRawBytes(){return Nh(this.toCompactHex())}toCompactHex(){return h(this.r)+h(this.s)}}let x={isValidPrivateKey($){try{return l($),!0}catch{return!1}},normPrivateKeyToScalar:l,randomPrivateKey:()=>{let $=kw(e.n);return MA(e.randomBytes($),e.n)},precompute($=8,F=c.BASE){return F._setWindowSize($),F.multiply(BigInt(3)),F}};function v($,F=!0){return c.fromPrivateKey($).toRawBytes(F)}function b($){let F=Wc($),z=typeof $=="string",M=(F||z)&&$.length;return F?M===i||M===o:z?M===2*i||M===2*o:$ instanceof c}function S($,F,z=!0){if(b($))throw new Error("first arg must be private key");if(!b(F))throw new Error("second arg must be public key");return c.fromHex(F).multiply(l($)).toRawBytes(z)}let T=e.bits2int||function($){if($.length>8192)throw new Error("input is too large");let F=ws($),z=$.length*8-e.nBitLength;return z>0?F>>BigInt(z):F},D=e.bits2int_modN||function($){return s(T($))},A=Xc(e.nBitLength);function I($){return en("num < 2^"+e.nBitLength,$,bs,A),Gc($,e.nByteLength)}function k($,F,z=X){if(["recovered","canonical"].some(Ye=>Ye in z))throw new Error("sign() legacy options not supported");let{hash:M,randomBytes:R}=e,{lowS:N,prehash:Z,extraEntropy:ne}=z;N==null&&(N=!0),$=At("msgHash",$),c_(z),Z&&($=At("prehashed msgHash",M($)));let q=D($),ge=l(F),ke=[I(ge),I(q)];if(ne!=null&&ne!==!1){let Ye=ne===!0?R(t.BYTES):ne;ke.push(At("extraEntropy",Ye))}let le=xa(...ke),De=q;function et(Ye){let pt=T(Ye);if(!f(pt))return;let bt=a(pt),Rt=c.BASE.multiply(pt).toAffine(),Et=s(Rt.x);if(Et===bs)return;let mr=s(bt*s(De+Et*ge));if(mr===bs)return;let Qn=(Rt.x===Et?0:2)|Number(Rt.y&Ar),ds=mr;return N&&d(mr)&&(ds=m(mr),Qn^=1),new w(Et,ds,Qn)}return{seed:le,k2sig:et}}let X={lowS:e.lowS,prehash:!1},K={lowS:e.lowS,prehash:!1};function V($,F,z=X){let{seed:M,k2sig:R}=k($,F,z),N=e;return RA(N.hash.outputLen,N.nByteLength,N.hmac)(M,R)}c.BASE._setWindowSize(8);function Y($,F,z,M=K){let R=$;F=At("msgHash",F),z=At("publicKey",z);let{lowS:N,prehash:Z,format:ne}=M;if(c_(M),"strict"in M)throw new Error("options.strict was renamed to lowS");if(ne!==void 0&&ne!=="compact"&&ne!=="der")throw new Error("format must be compact or der");let q=typeof R=="string"||Wc(R),ge=!q&&!ne&&typeof R=="object"&&R!==null&&typeof R.r=="bigint"&&typeof R.s=="bigint";if(!q&&!ge)throw new Error("invalid signature, expected Uint8Array, hex string or Signature instance");let ke,le;try{if(ge&&(ke=new w(R.r,R.s)),q){try{ne!=="compact"&&(ke=w.fromDER(R))}catch(Qn){if(!(Qn instanceof xs.Err))throw Qn}!ke&&ne!=="der"&&(ke=w.fromCompact(R))}le=c.fromHex(z)}catch{return!1}if(!ke||N&&ke.hasHighS())return!1;Z&&(F=e.hash(F));let{r:De,s:et}=ke,Ye=D(F),pt=a(et),bt=s(Ye*pt),Rt=s(De*pt),Et=c.BASE.multiplyAndAddUnsafe(le,bt,Rt)?.toAffine();return Et?s(Et.x)===De:!1}return{CURVE:e,getPublicKey:v,getSharedSecret:S,sign:V,verify:Y,ProjectivePoint:c,Signature:w,utils:x}}function OV(r){return{hash:r,hmac:(e,...t)=>ba(r,e,ww(...t)),randomBytes:zc}}function f_(r,e){let t=n=>u_({...r,...OV(n)});return{...t(e),create:t}}var p_=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),d_=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),LV=BigInt(1),Qw=BigInt(2),h_=(r,e)=>(r+e/Qw)/e;function BV(r){let e=p_,t=BigInt(3),n=BigInt(6),i=BigInt(11),o=BigInt(22),s=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=Ct(u,t,e)*u%e,h=Ct(f,t,e)*u%e,d=Ct(h,Qw,e)*l%e,m=Ct(d,i,e)*d%e,g=Ct(m,o,e)*m%e,w=Ct(g,a,e)*g%e,x=Ct(w,c,e)*w%e,v=Ct(x,a,e)*g%e,b=Ct(v,t,e)*u%e,S=Ct(b,s,e)*m%e,T=Ct(S,n,e)*l%e,D=Ct(T,Qw,e);if(!Zw.eql(Zw.sqr(D),r))throw new Error("Cannot find square root");return D}var Zw=ro(p_,void 0,void 0,{sqrt:BV}),Ii=f_({a:BigInt(0),b:BigInt(7),Fp:Zw,n:d_,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=d_,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-LV*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),i=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),o=t,s=BigInt("0x100000000000000000000000000000000"),a=h_(o*r,e),c=h_(-n*r,e),l=st(r-a*t-c*i,e),u=st(-a*n-c*o,e),f=l>s,h=u>s;if(f&&(l=e-l),h&&(u=e-u),l>s||u>s)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}}},U0),pae=BigInt(0);var mae=Ii.ProjectivePoint;function Jw(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var m_=32;function g_(r,e){let t=Fe.digest(e instanceof Uint8Array?e:e.subarray());if(Jw(t))return t.then(({digest:n})=>Ii.sign(n,r).toDERRawBytes()).catch(n=>{throw new $h(String(n))});try{return Ii.sign(t.digest,r).toDERRawBytes()}catch(n){throw new $h(String(n))}}function y_(r,e,t){let n=Fe.digest(t instanceof Uint8Array?t:t.subarray());if(Jw(n))return n.then(({digest:i})=>Ii.verify(e,i,r)).catch(i=>{throw new Hh(String(i))});try{return Ii.verify(e,n.digest,r)}catch(i){throw new Hh(String(i))}}var Kh=class{type="secp256k1";raw;_key;constructor(e){this._key=b_(e),this.raw=w_(this._key)}toMultihash(){return cr.digest(lr(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return Le.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}verify(e,t){return y_(this._key,t,e)}},qh=class{type="secp256k1";raw;publicKey;constructor(e,t){this.raw=x_(e),this.publicKey=new Kh(t??v_(e))}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:pe(this.raw,e.raw)}sign(e){return g_(this.raw,e)}};function e7(r){return new qh(r)}function t7(r){return new Kh(r)}async function E_(){let r=MV();return new qh(r)}function w_(r){return Ii.ProjectivePoint.fromHex(r).toRawBytes(!0)}function x_(r){try{return Ii.getPublicKey(r,!0),r}catch(e){throw new yh(String(e))}}function b_(r){try{return Ii.ProjectivePoint.fromHex(r),r}catch(e){throw new hs(String(e))}}function v_(r){try{return Ii.getPublicKey(r,!0)}catch(e){throw new yh(String(e))}}function MV(){return Ii.utils.randomPrivateKey()}async function hf(r,e){if(r==="Ed25519")return e_();if(r==="secp256k1")return E_();if(r==="RSA")return Xw(UV(e));if(r==="ECDSA")return hA(FV(e));throw new Xi}function tr(r,e){let{Type:t,Data:n}=Vo.decode(r),i=n??new Uint8Array;switch(t){case _t.RSA:return jw(i,e);case _t.Ed25519:return Uw(i);case _t.secp256k1:return t7(i);case _t.ECDSA:return mw(i);default:throw new Xi}}function W0(r){let{Type:e,Data:t}=Vo.decode(r.digest),n=t??new Uint8Array;switch(e){case _t.Ed25519:return Uw(n);case _t.secp256k1:return t7(n);case _t.ECDSA:return mw(n);default:throw new Xi}}function lr(r){return Vo.encode({Type:_t[r.type],Data:r.raw})}function S_(r){let e=Fh.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case _t.RSA:return qw(t);case _t.Ed25519:return Mw(t);case _t.secp256k1:return e7(t);case _t.ECDSA:return cA(t);default:throw new Xi}}function A_(r){if(r.byteLength===_i)return Mw(r);if(r.byteLength===m_)return e7(r);let e=Ai(r),t=e[2]?.[0];if(t===JS||t===eA||t===tA)return pw(e);if(e.length>8)return q0(e);throw new U("Could not extract private key from raw bytes")}function Zc(r){return Fh.encode({Type:_t[r.type],Data:r.raw})}function UV(r){return r==null?2048:parseInt(r,10)}function FV(r){if(r==="P-256"||r==null)return"P-256";if(r==="P-384")return"P-384";if(r==="P-521")return"P-521";throw new U("Unsupported curve, should be P-256, P-384 or P-521")}async function G0(r){if(r.type==="RSA")return{privateKey:await crypto.subtle.importKey("jwk",r.jwk,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),publicKey:await crypto.subtle.importKey("jwk",r.publicKey.jwk,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])};if(r.type==="ECDSA")return{privateKey:await crypto.subtle.importKey("jwk",r.jwk,{name:"ECDSA",namedCurve:r.jwk.crv??"P-256"},!0,["sign"]),publicKey:await crypto.subtle.importKey("jwk",r.publicKey.jwk,{name:"ECDSA",namedCurve:r.publicKey.jwk.crv??"P-256"},!0,["verify"])};throw new U("Only RSA and ECDSA keys are supported")}var __=Symbol.for("nodejs.util.inspect.custom"),$V=114,jh=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Jm]=!0;toString(){return this.string==null&&(this.string=Le.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return W.createV1($V,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return pe(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return pe(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[__](){return`PeerId(${this.toString()})`}},Wh=class extends jh{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Gh=class extends jh{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},Xh=class extends jh{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},HV=2336,Yh=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=cr.digest(O(this.url))}[__](){return`PeerId(${this.url})`}[Jm]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return W.createV1(HV,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=H(e)),e.toString()===this.toString())}};var VV=114,I_=2336;function at(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=Ue(Le.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return gn(W.parse(r));if(e==null)throw new U('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=Ue(e.decode(r))}return ur(t)}function Ko(r){if(r.type==="Ed25519")return new Gh({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new Xh({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Wh({multihash:r.toCID().multihash,publicKey:r});throw new Xi}function T_(r){return Ko(r.publicKey)}function ur(r){if(KV(r))return new Wh({multihash:r});if(zV(r))try{let e=W0(r);if(e.type==="Ed25519")return new Gh({multihash:r,publicKey:e});if(e.type==="secp256k1")return new Xh({multihash:r,publicKey:e})}catch{let t=H(r.digest);return new Yh(new URL(t))}throw new aa("Supplied PeerID Multihash is invalid")}function gn(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==VV&&r.code!==I_)throw new o0("Supplied PeerID CID is invalid");if(r.code===I_){let e=H(r.multihash.digest);return new Yh(new URL(e))}return ur(r.multihash)}function zV(r){return r.code===cr.code}function KV(r){return r.code===Fe.code}function Jc(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),i=n.value;return n.done===!0||i==null?{done:!0,value:void 0}:{done:!1,value:e(i)}}};return t}function X0(r){let e=Ue(Le.decode(`z${r}`));return ur(e)}var _r=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return Jc(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return Jc(this.map.values(),e=>e.key)}values(){return Jc(this.map.values(),e=>e.value)}get size(){return this.map.size}};var yn=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 Jc(this.set.entries(),e=>{let t=X0(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=X0(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return Jc(this.set.values(),e=>X0(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};function r7(){return new yn}function C_(r,e,t,n){Hc(r);let i=gA({dkLen:32,asyncTick:10},n),{c:o,dkLen:s,asyncTick:a}=i;if(Mo(o),Mo(s),Mo(a),o<1)throw new Error("iterations (c) should be >= 1");let c=yw(e),l=yw(t),u=new Uint8Array(s),f=ba.create(r,c),h=f._cloneInto().update(l);return{c:o,dkLen:s,asyncTick:a,DK:u,PRF:f,PRFSalt:h}}function k_(r,e,t,n,i){return r.destroy(),e.destroy(),n&&n.destroy(),Jr(i),t}function P_(r,e,t,n){let{c:i,dkLen:o,DK:s,PRF:a,PRFSalt:c}=C_(r,e,t,n),l,u=new Uint8Array(4),f=Vc(u),h=new Uint8Array(a.outputLen);for(let d=1,m=0;m<o;d++,m+=a.outputLen){let g=s.subarray(m,m+a.outputLen);f.setInt32(0,d,!1),(l=c._cloneInto(l)).update(u).digestInto(h),g.set(h.subarray(0,g.length));for(let w=1;w<i;w++){a._cloneInto(l).update(h).digestInto(h);for(let x=0;x<g.length;x++)g[x]^=h[x]}}return k_(a,c,s,l,h)}async function Y0(r,e,t,n){let{c:i,dkLen:o,asyncTick:s,DK:a,PRF:c,PRFSalt:l}=C_(r,e,t,n),u,f=new Uint8Array(4),h=Vc(f),d=new Uint8Array(c.outputLen);for(let m=1,g=0;g<o;m++,g+=c.outputLen){let w=a.subarray(g,g+c.outputLen);h.setInt32(0,m,!1),(u=l._cloneInto(u)).update(f).digestInto(d),w.set(d.subarray(0,w.length)),await mA(i-1,s,()=>{c._cloneInto(u).update(d).digestInto(d);for(let x=0;x<w.length;x++)w[x]^=d[x]})}return k_(c,l,a,u,d)}var Qh=Uint32Array.from([1732584193,4023233417,2562383102,271733878,3285377520]),va=new Uint32Array(80),Q0=class extends Kc{constructor(){super(64,20,8,!1),this.A=Qh[0]|0,this.B=Qh[1]|0,this.C=Qh[2]|0,this.D=Qh[3]|0,this.E=Qh[4]|0}get(){let{A:e,B:t,C:n,D:i,E:o}=this;return[e,t,n,i,o]}set(e,t,n,i,o){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0}process(e,t){for(let c=0;c<16;c++,t+=4)va[c]=e.getUint32(t,!1);for(let c=16;c<80;c++)va[c]=D0(va[c-3]^va[c-8]^va[c-14]^va[c-16],1);let{A:n,B:i,C:o,D:s,E:a}=this;for(let c=0;c<80;c++){let l,u;c<20?(l=N0(i,o,s),u=1518500249):c<40?(l=i^o^s,u=1859775393):c<60?(l=O0(i,o,s),u=2400959708):(l=i^o^s,u=3395469782);let f=D0(n,5)+l+a+u+va[c]|0;a=s,s=o,o=D0(i,30),i=n,n=f}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,this.set(n,i,o,s,a)}roundClean(){Jr(va)}destroy(){this.set(0,0,0,0,0),Jr(this.buffer)}},R_=kh(()=>new Q0);var D_=R_;var pf=F0;var N_={sha1:D_,"sha2-256":zo,"sha2-512":pf};function Zh(r,e,t,n,i){if(i!=="sha1"&&i!=="sha2-256"&&i!=="sha2-512"){let a=Object.keys(N_).join(" / ");throw new U(`Hash '${i}' is unknown or not supported. Must be ${a}`)}let o=N_[i],s=P_(o,r,e,{c:t,dkLen:n});return ar.encode(s).substring(1)}var n7={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},O_={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},L_=new globalThis.TextEncoder;function qV(r,e){let t=n7[e],n=O_[e];for(let i=0;i<r.length;i++)n^=BigInt(r[i]),n=BigInt.asUintN(e,n*t);return n}function jV(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=n7[e],i=O_[e],o=r;for(;o.length>0;){let s=L_.encodeInto(o,t);o=o.slice(s.read);for(let a=0;a<s.written;a++)i^=BigInt(t[a]),i=BigInt.asUintN(e,i*n)}return i}function i7(r,{size:e=32,utf8Buffer:t}={}){if(!n7[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return jV(r,e,t);r=L_.encode(r)}return qV(r,e)}var Jh={hash:r=>Number(i7(r,{size:32})),hashV:(r,e)=>WV(Jh.hash(r,e))};function WV(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),O(e,"base16")}var o7=64,no=class{fp;h;seed;constructor(e,t,n,i=2){if(i>o7)throw new TypeError("Invalid Fingerprint Size");let o=t.hashV(e,n),s=Pe(i);for(let a=0;a<s.length;a++)s[a]=o[a];s.length===0&&(s[0]=7),this.fp=s,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?pe(this.fp,e.fp):!1}};function el(r,e){return Math.floor(Math.random()*(e-r))+r}var tl=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");let t=el(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof no))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var GV=500,ep=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Jh,this.seed=e.seed??el(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new tl(this.bucketSize)),this.buckets[i]==null&&(this.buckets[i]=new tl(this.bucketSize)),this.buckets[n].add(t)||this.buckets[i].add(t))return this.count++,!0;let o=[n,i],s=o[el(0,o.length-1)];this.buckets[s]==null&&(this.buckets[s]=new tl(this.bucketSize));for(let a=0;a<GV;a++){let c=this.buckets[s].swap(t);if(c!=null&&(s=(s^c.hash())%this.filterSize,this.buckets[s]==null&&(this.buckets[s]=new tl(this.bucketSize)),this.buckets[s].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=this.buckets[n]?.has(t)??!1;if(i)return i;let o=(n^t.hash())%this.filterSize;return this.buckets[o]?.has(t)??!1}remove(e){typeof e=="string"&&(e=O(e));let t=new no(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,i=this.buckets[n]?.remove(t)??!1;if(i)return this.count--,i;let o=(n^t.hash())%this.filterSize,s=this.buckets[o]?.remove(t)??!1;return s&&this.count--,s}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},XV={1:.5,2:.84,4:.95,8:.98};function YV(r=.001){return r>.002?2:r>1e-5?4:8}function B_(r,e=.001){let t=YV(e),n=XV[t],i=Math.round(r/n),o=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),o7);return{filterSize:i,bucketSize:t,fingerprintSize:o}}var mf=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Jh,this.seed=e.seed??el(0,Math.pow(2,10)),this.filterSeries=[new ep({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=O(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new ep({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=O(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Tn(r,e=.001,t){return new mf({...B_(r,e),...t??{}})}var Z0=class{filter;constructor(e,t){this.filter=Tn(e,t)}has(e){return this.filter.has(e.toMultihash().bytes)}add(e){this.filter.add(e.toMultihash().bytes)}remove(e){this.filter.remove?.(e.toMultihash().bytes)}};function s7(r,e=.001){return new Z0(r,e)}var a7=class extends _r{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 tp(r){let{name:e,metrics:t}=r,n;return t!=null?n=new a7({name:e,metrics:t}):n=new _r,n}var vs=class{full;pendingBytes;wantlist;blocks;blockPresences;constructor(e=!1,t=0){this.full=e,this.wantlist=new Map,this.blocks=new Map,this.blockPresences=new Map,this.pendingBytes=0}addWantlistEntry(e,t){let n=ar.encode(e.multihash.bytes);this.wantlist.set(n,t)}addBlockPresence(e,t){let n=ar.encode(e.multihash.bytes);this.blockPresences.set(n,t)}addBlock(e,t){let n=ar.encode(e.multihash.bytes);this.blocks.set(n,t)}};function QV(r){let e=new Uint8Array(r.reduce((n,i)=>n+Oe(i),0)),t=0;for(let n of r)e=ht(n,e,t),t+=Oe(n);return e}var M_=QV;function c7(r){return M_([r.version,r.code,r.multihash.code,r.multihash.digest.byteLength])}var J0=class{peerId;blockstore;network;wants;exchangeCount;bytesSent;bytesReceived;lastExchange;maxSizeReplaceHasWithBlock;log;constructor(e,t){this.peerId=e.peerId,this.blockstore=e.blockstore,this.network=e.network,this.wants=new Map,this.log=e.logger.forComponent(`helia:bitswap:ledger:${e.peerId}`),this.exchangeCount=0,this.bytesSent=0,this.bytesReceived=0,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock??1024}sentBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesSent+=e}receivedBytes(e){this.exchangeCount++,this.lastExchange=new Date().getTime(),this.bytesReceived+=e}debtRatio(){return this.bytesSent/(this.bytesReceived+1)}async sendBlocksToPeer(e){let t=new vs,n=new Set;for(let[i,o]of this.wants.entries())try{let s=await this.blockstore.get(o.cid,e);o.wantType===er.WantHave?s.byteLength<this.maxSizeReplaceHasWithBlock?(this.log("sending have and block for %c",o.cid),n.add(i),t.addBlock(o.cid,{data:s,prefix:c7(o.cid)})):(this.log("sending have for %c",o.cid),t.addBlockPresence(o.cid,{cid:o.cid.bytes,type:Si.HaveBlock})):(this.log("sending block for %c",o.cid),n.add(i),t.addBlock(o.cid,{data:s,prefix:c7(o.cid)}))}catch(s){if(s.name!=="NotFoundError")throw s;if(this.log("do not have block for %c",o.cid),!o.sendDontHave||o.sentDoNotHave===!0)continue;o.sentDoNotHave=!0,t.addBlockPresence(o.cid,{cid:o.cid.bytes,type:Si.DoNotHaveBlock})}if(t.blocks.size>0||t.blockPresences.size>0){this.log("sending message"),await this.network.sendMessage(this.peerId,t,e),this.log("sent message"),this.sentBytes([...t.blocks.values()].reduce((i,o)=>i+o.data.byteLength,0));for(let i of n)this.wants.delete(i)}}};var eg=class{blockstore;network;ledgerMap;maxSizeReplaceHasWithBlock;log;logger;constructor(e,t={}){this.blockstore=e.blockstore,this.network=e.network,this.maxSizeReplaceHasWithBlock=t.maxSizeReplaceHasWithBlock,this.log=e.logger.forComponent("helia:bitswap:peer-want-lists"),this.logger=e.logger,this.ledgerMap=tp({name:"helia_bitswap_ledger_map",metrics:e.metrics}),this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(i=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,i)})}),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 J0({peerId:e,blockstore:this.blockstore,network:this.network,logger:this.logger},{maxSizeReplaceHasWithBlock:this.maxSizeReplaceHasWithBlock}),this.ledgerMap.set(e,n)),n.receivedBytes(t.blocks?.reduce((i,o)=>i+o.data.byteLength,0)??0),t.wantlist!=null){t.wantlist.full===!0&&n.wants.clear();for(let i of t.wantlist.entries){let o=W.decode(i.cid),s=H(o.multihash.bytes,"base64");i.cancel===!0?(this.log("peer %p cancelled want of block for %c",e,o),n.wants.delete(s)):(i.wantType===er.WantHave?this.log("peer %p wanted block presence for %c",e,o):this.log("peer %p wanted block for %c",e,o),n.wants.set(s,{cid:o,priority:i.priority,wantType:i.wantType??er.WantBlock,sendDontHave:i.sendDontHave??!1}))}}this.log("send blocks to peer"),await n.sendBlocksToPeer()}async receivedBlock(e,t){let n=H(e.multihash.bytes,"base64"),i=[];for(let o of this.ledgerMap.values())o.wants.has(n)&&i.push(o);await Promise.all(i.map(async o=>o.sendBlocksToPeer(t)))}peerDisconnected(e){this.ledgerMap.delete(e)}};function ZV(r,e){try{if(typeof r=="string"&&r.length>0)return JV(r);if(typeof r=="number"&&isFinite(r))return e?.long?tz(r):ez(r);throw new Error("Value is not a string or number.")}catch(t){let n=rz(t)?`${t.message}. value=${JSON.stringify(r)}`:"An unknown error has occured.";throw new Error(n)}}function JV(r){if(r=String(r),r.length>100)throw new Error("Value exceeds the maximum length of 100 characters.");let 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)return NaN;let t=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return t*315576e5;case"weeks":case"week":case"w":return t*6048e5;case"days":case"day":case"d":return t*864e5;case"hours":case"hour":case"hrs":case"hr":case"h":return t*36e5;case"minutes":case"minute":case"mins":case"min":case"m":return t*6e4;case"seconds":case"second":case"secs":case"sec":case"s":return t*1e3;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return t;default:throw new Error(`The unit ${n} was matched, but no matching case exists.`)}}var rg=ZV;function ez(r){let e=Math.abs(r);return e>=864e5?`${Math.round(r/864e5)}d`:e>=36e5?`${Math.round(r/36e5)}h`:e>=6e4?`${Math.round(r/6e4)}m`:e>=1e3?`${Math.round(r/1e3)}s`:`${r}ms`}function tz(r){let e=Math.abs(r);return e>=864e5?tg(r,e,864e5,"day"):e>=36e5?tg(r,e,36e5,"hour"):e>=6e4?tg(r,e,6e4,"minute"):e>=1e3?tg(r,e,1e3,"second"):`${r} ms`}function tg(r,e,t,n){let i=e>=t*1.5;return`${Math.round(r/t)} ${n}${i?"s":""}`}function rz(r){return typeof r=="object"&&r!==null&&"message"in r}function l7(r){t.debug=t,t.default=t,t.coerce=c,t.disable=o,t.enable=i,t.enabled=s,t.humanize=rg,t.destroy=l,Object.keys(r).forEach(u=>{t[u]=r[u]}),t.names=[],t.skips=[],t.formatters={};function e(u){let f=0;for(let h=0;h<u.length;h++)f=(f<<5)-f+u.charCodeAt(h),f|=0;return t.colors[Math.abs(f)%t.colors.length]}t.selectColor=e;function t(u){let f,h=null,d,m;function g(...w){if(!g.enabled)return;let x=g,v=Number(new Date),b=v-(f||v);x.diff=b,x.prev=f,x.curr=v,f=v,w[0]=t.coerce(w[0]),typeof w[0]!="string"&&w.unshift("%O");let S=0;w[0]=w[0].replace(/%([a-zA-Z%])/g,(D,A)=>{if(D==="%%")return"%";S++;let I=t.formatters[A];if(typeof I=="function"){let k=w[S];D=I.call(x,k),w.splice(S,1),S--}return D}),t.formatArgs.call(x,w),(x.log||t.log).apply(x,w)}return g.namespace=u,g.useColors=t.useColors(),g.color=t.selectColor(u),g.extend=n,g.destroy=t.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>h!==null?h:(d!==t.namespaces&&(d=t.namespaces,m=t.enabled(u)),m),set:w=>{h=w}}),typeof t.init=="function"&&t.init(g),g}function n(u,f){let h=t(this.namespace+(typeof f>"u"?":":f)+u);return h.log=this.log,h}function i(u){t.save(u),t.namespaces=u,t.names=[],t.skips=[];let f,h=(typeof u=="string"?u:"").split(/[\s,]+/),d=h.length;for(f=0;f<d;f++)h[f]&&(u=h[f].replace(/\*/g,".*?"),u[0]==="-"?t.skips.push(new RegExp("^"+u.substr(1)+"$")):t.names.push(new RegExp("^"+u+"$")))}function o(){let u=[...t.names.map(a),...t.skips.map(a).map(f=>"-"+f)].join(",");return t.enable(""),u}function s(u){if(u[u.length-1]==="*")return!0;let f,h;for(f=0,h=t.skips.length;f<h;f++)if(t.skips[f].test(u))return!1;for(f=0,h=t.names.length;f<h;f++)if(t.names[f].test(u))return!0;return!1}function a(u){return u.toString().substring(2,u.toString().length-2).replace(/\.\*\?$/,"*")}function c(u){return u instanceof Error?u.stack??u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return t.setupFormatters(t.formatters),t.enable(t.load()),t}var ng=lz(),nz=["#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 iz(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/(edge|trident)\/(\d+)/)!=null?!1:typeof document<"u"&&document.documentElement?.style?.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/firefox\/(\d+)/)!=null&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent?.toLowerCase().match(/applewebkit\/(\d+)/)}function oz(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+rg(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,i=>{i!=="%%"&&(t++,i==="%c"&&(n=t))}),r.splice(n,0,e)}var sz=console.debug??console.log??(()=>{});function az(r){try{r?ng?.setItem("debug",r):ng?.removeItem("debug")}catch{}}function cz(){let r;try{r=ng?.getItem("debug")}catch{}return!r&&typeof globalThis.process<"u"&&"env"in globalThis.process&&(r=globalThis.process.env.DEBUG),r}function lz(){try{return localStorage}catch{}}function uz(r){r.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}}var U_=l7({formatArgs:oz,save:az,load:cz,useColors:iz,setupFormatters:uz,colors:nz,storage:ng,log:sz});var Cn=U_;Cn.formatters.b=r=>r==null?"undefined":Le.baseEncode(r);Cn.formatters.t=r=>r==null?"undefined":Jt.baseEncode(r);Cn.formatters.m=r=>r==null?"undefined":ar.baseEncode(r);Cn.formatters.p=r=>r==null?"undefined":r.toString();Cn.formatters.c=r=>r==null?"undefined":r.toString();Cn.formatters.k=r=>r==null?"undefined":r.toString();Cn.formatters.a=r=>r==null?"undefined":r.toString();Cn.formatters.e=r=>r==null?"undefined":F_(r.stack)??F_(r.message)??r.toString();function fz(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 $_(r){return{forComponent(e){return ze(`${r}:${e}`)}}}function Ea(){return{forComponent(r){return ze(r)}}}function ze(r){let e=fz(`${r}:trace`);return Cn.enabled(`${r}:trace`)&&Cn.names.map(t=>t.toString()).find(t=>t.includes(":trace"))!=null&&(e=Cn(`${r}:trace`)),Object.assign(Cn(r),{error:Cn(`${r}:error`),trace:e})}function F_(r){if(r!=null&&(r=r.trim(),r.length!==0))return r}var f7=it(V_(),1);var np=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},d7=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},z_=r=>globalThis.DOMException===void 0?new d7(r):new DOMException(r),K_=r=>{let e=r.reason===void 0?z_("This operation was aborted."):r.reason;return e instanceof Error?e:z_(e)};function io(r,e){let{milliseconds:t,fallback:n,message:i,customTimers:o={setTimeout,clearTimeout}}=e,s,a,l=new Promise((u,f)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(e.signal){let{signal:d}=e;d.aborted&&f(K_(d)),a=()=>{f(K_(d))},d.addEventListener("abort",a,{once:!0})}if(t===Number.POSITIVE_INFINITY){r.then(u,f);return}let h=new np;s=o.setTimeout.call(void 0,()=>{if(n){try{u(n())}catch(d){f(d)}return}typeof r.cancel=="function"&&r.cancel(),i===!1?u():i instanceof Error?f(i):(h.message=i??`Promise timed out after ${t} milliseconds`,f(h))},t),(async()=>{try{u(await r)}catch(d){f(d)}})()}).finally(()=>{l.clear(),a&&e.signal&&e.signal.removeEventListener("abort",a)});return l.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},l}function h7(r,e,t){let n=0,i=r.length;for(;i>0;){let o=Math.trunc(i/2),s=n+o;t(r[s],e)<=0?(n=++s,i-=o+1):i=o}return n}var ip=class{#e=[];enqueue(e,t){t={priority:0,...t};let n={priority:t.priority,id:t.id,run:e};if(this.size===0||this.#e[this.size-1].priority>=t.priority){this.#e.push(n);return}let i=h7(this.#e,n,(o,s)=>s.priority-o.priority);this.#e.splice(i,0,n)}setPriority(e,t){let n=this.#e.findIndex(o=>o.id===e);if(n===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);let[i]=this.#e.splice(n,1);this.enqueue(i.run,{priority:t,id:e})}dequeue(){return this.#e.shift()?.run}filter(e){return this.#e.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#e.length}};var kn=class extends f7.default{#e;#r;#n=0;#m;#u;#A=0;#y;#a;#s;#c;#i=0;#t;#l;#w;#p=1n;timeout;constructor(e){if(super(),e={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:ip,...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.#r=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#m=e.intervalCap,this.#u=e.interval,this.#s=new e.queueClass,this.#c=e.queueClass,this.concurrency=e.concurrency,this.timeout=e.timeout,this.#w=e.throwOnTimeout===!0,this.#l=e.autoStart===!1}get#f(){return this.#r||this.#n<this.#m}get#b(){return this.#i<this.#t}#d(){this.#i--,this.#g(),this.emit("next")}#v(){this.#_(),this.#x(),this.#a=void 0}get#E(){let e=Date.now();if(this.#y===void 0){let t=this.#A-e;if(t<0)this.#n=this.#e?this.#i:0;else return this.#a===void 0&&(this.#a=setTimeout(()=>{this.#v()},t)),!0}return!1}#g(){if(this.#s.size===0)return this.#y&&clearInterval(this.#y),this.#y=void 0,this.emit("empty"),this.#i===0&&this.emit("idle"),!1;if(!this.#l){let e=!this.#E;if(this.#f&&this.#b){let t=this.#s.dequeue();return t?(this.emit("active"),t(),e&&this.#x(),!0):!1}}return!1}#x(){this.#r||this.#y!==void 0||(this.#y=setInterval(()=>{this.#_()},this.#u),this.#A=Date.now()+this.#u)}#_(){this.#n===0&&this.#i===0&&this.#y&&(clearInterval(this.#y),this.#y=void 0),this.#n=this.#e?this.#i:0,this.#h()}#h(){for(;this.#g(););}get concurrency(){return this.#t}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.#t=e,this.#h()}async#R(e){return new Promise((t,n)=>{e.addEventListener("abort",()=>{n(e.reason)},{once:!0})})}setPriority(e,t){this.#s.setPriority(e,t)}async add(e,t={}){return t.id??=(this.#p++).toString(),t={timeout:this.timeout,throwOnTimeout:this.#w,...t},new Promise((n,i)=>{this.#s.enqueue(async()=>{this.#i++,this.#n++;try{t.signal?.throwIfAborted();let o=e({signal:t.signal});t.timeout&&(o=io(Promise.resolve(o),{milliseconds:t.timeout})),t.signal&&(o=Promise.race([o,this.#R(t.signal)]));let s=await o;n(s),this.emit("completed",s)}catch(o){if(o instanceof np&&!t.throwOnTimeout){n();return}i(o),this.emit("error",o)}finally{this.#d()}},t),this.emit("add"),this.#g()})}async addAll(e,t){return Promise.all(e.map(async n=>this.add(n,t)))}start(){return this.#l?(this.#l=!1,this.#h(),this):this}pause(){this.#l=!0}clear(){this.#s=new this.#c}async onEmpty(){this.#s.size!==0&&await this.#k("empty")}async onSizeLessThan(e){this.#s.size<e||await this.#k("next",()=>this.#s.size<e)}async onIdle(){this.#i===0&&this.#s.size===0||await this.#k("idle")}async#k(e,t){return new Promise(n=>{let i=()=>{t&&!t()||(this.off(e,i),n())};this.on(e,i)})}get size(){return this.#s.size}sizeBy(e){return this.#s.filter(e).length}get pending(){return this.#i}get isPaused(){return this.#l}};function og(r){let e=[rn.A];return r==null?e:Array.isArray(r)?r.length===0?e:r:[r]}var p7=60;function sg(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:rn[e.type]})),Answer:(r.Answer??r.answers??[]).map(e=>({name:e.name,type:rn[e.type],TTL:e.TTL??e.ttl??p7,data:e.data instanceof Uint8Array?H(e.data):e.data}))}}var pz=4;function m7(r,e={}){let t=new kn({concurrency:e.queryConcurrency??pz});return async(n,i={})=>{let o=new URLSearchParams;o.set("name",n),og(i.types).forEach(a=>{o.append("type",rn[a])}),i.onProgress?.(new G("dns:query",{detail:n}));let s=await t.add(async()=>{let a=await fetch(`${r}?${o}`,{headers:{accept:"application/dns-json"},signal:i?.signal});if(a.status!==200)throw new Error(`Unexpected HTTP status: ${a.status} - ${a.statusText}`);let c=sg(await a.json());return i.onProgress?.(new G("dns:response",{detail:c})),c},{signal:i.signal});if(s==null)throw new Error("No DNS response received");return s}}function q_(){return[m7("https://cloudflare-dns.com/dns-query"),m7("https://dns.google/resolve")]}var W_=it(g7(),1);var y7=class{lru;constructor(e){this.lru=(0,W_.default)(e)}get(e,t){let n=!0,i=[];for(let o of t){let s=this.getAnswers(e,o);if(s.length===0){n=!1;break}i.push(...s)}if(n)return sg({answers:i})}getAnswers(e,t){let n=`${e.toLowerCase()}-${t}`,i=this.lru.get(n);if(i!=null){let o=i.filter(s=>s.expires>Date.now()).map(({expires:s,value:a})=>({...a,TTL:Math.round((s-Date.now())/1e3),type:rn[a.type]}));return o.length===0&&this.lru.remove(n),o}return[]}add(e,t){let n=`${e.toLowerCase()}-${t.type}`,i=this.lru.get(n)??[];i.push({expires:Date.now()+(t.TTL??p7)*1e3,value:t}),this.lru.set(n,i)}remove(e,t){let n=`${e.toLowerCase()}-${t}`;this.lru.remove(n)}clear(){this.lru.clear()}};function G_(r){return new y7(r)}var mz=1e3,ag=class{resolvers;cache;constructor(e){this.resolvers={},this.cache=G_(e.cacheSize??mz),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["."]=q_())}async query(e,t={}){let n=og(t.types),i=t.cached!==!1?this.cache.get(e,n):void 0;if(i!=null)return t.onProgress?.(new G("dns:cache",{detail:i})),i;let o=`${e.split(".").pop()}.`,s=(this.resolvers[o]??this.resolvers["."]).sort(()=>Math.random()>.5?-1:1),a=[];for(let c of s){if(t.signal?.aborted===!0)break;try{let l=await c(e,{...t,types:n});for(let u of l.Answer)this.cache.add(e,u);return l}catch(l){a.push(l),t.onProgress?.(new G("dns:error",{detail:l}))}}throw a.length===1?a[0]:new AggregateError(a,`DNS lookup of ${e} ${n} failed`)}};var rn;(function(r){r[r.A=1]="A",r[r.CNAME=5]="CNAME",r[r.TXT=16]="TXT",r[r.AAAA=28]="AAAA"})(rn||(rn={}));function rl(r={}){return new ag(r)}var gz=["string","number","bigint","symbol"],yz=["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 X_(r){if(r===null)return"null";if(r===void 0)return"undefined";if(r===!0||r===!1)return"boolean";let e=typeof r;if(gz.includes(e))return e;if(e==="function")return"Function";if(Array.isArray(r))return"Array";if(wz(r))return"Buffer";let t=xz(r);return t||"Object"}function wz(r){return r&&r.constructor&&r.constructor.isBuffer&&r.constructor.isBuffer.call(null,r)}function xz(r){let e=Object.prototype.toString.call(r).slice(8,-1);if(yz.includes(e))return e}var _=class{constructor(e,t,n){this.major=e,this.majorEncoded=e<<5,this.name=t,this.terminal=n}toString(){return`Type[${this.major}].${this.name}`}compare(e){return this.major<e.major?-1:this.major>e.major?1:0}};_.uint=new _(0,"uint",!0);_.negint=new _(1,"negint",!0);_.bytes=new _(2,"bytes",!0);_.string=new _(3,"string",!0);_.array=new _(4,"array",!1);_.map=new _(5,"map",!1);_.tag=new _(6,"tag",!1);_.float=new _(7,"float",!0);_.false=new _(7,"false",!0);_.true=new _(7,"true",!0);_.null=new _(7,"null",!0);_.undefined=new _(7,"undefined",!0);_.break=new _(7,"break",!0);var Q=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 gf=globalThis.process&&!globalThis.process.browser&&globalThis.Buffer&&typeof globalThis.Buffer.isBuffer=="function",bz=new TextDecoder,vz=new TextEncoder;function cg(r){return gf&&globalThis.Buffer.isBuffer(r)}function op(r){return r instanceof Uint8Array?cg(r)?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r:Uint8Array.from(r)}var J_=gf?(r,e,t)=>t-e>64?globalThis.Buffer.from(r.subarray(e,t)).toString("utf8"):Q_(r,e,t):(r,e,t)=>t-e>64?bz.decode(r.subarray(e,t)):Q_(r,e,t),lg=gf?r=>r.length>64?globalThis.Buffer.from(r):Y_(r):r=>r.length>64?vz.encode(r):Y_(r),qo=r=>Uint8Array.from(r),yf=gf?(r,e,t)=>cg(r)?new Uint8Array(r.subarray(e,t)):r.slice(e,t):(r,e,t)=>r.slice(e,t),eI=gf?(r,e)=>(r=r.map(t=>t instanceof Uint8Array?t:globalThis.Buffer.from(t)),op(globalThis.Buffer.concat(r,e))):(r,e)=>{let t=new Uint8Array(e),n=0;for(let i of r)n+i.length>t.length&&(i=i.subarray(0,t.length-n)),t.set(i,n),n+=i.length;return t},tI=gf?r=>globalThis.Buffer.allocUnsafe(r):r=>new Uint8Array(r);function rI(r,e){if(cg(r)&&cg(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 Y_(r){let e=[],t=0;for(let n=0;n<r.length;n++){let i=r.charCodeAt(n);i<128?e[t++]=i:i<2048?(e[t++]=i>>6|192,e[t++]=i&63|128):(i&64512)===55296&&n+1<r.length&&(r.charCodeAt(n+1)&64512)===56320?(i=65536+((i&1023)<<10)+(r.charCodeAt(++n)&1023),e[t++]=i>>18|240,e[t++]=i>>12&63|128,e[t++]=i>>6&63|128,e[t++]=i&63|128):(e[t++]=i>>12|224,e[t++]=i>>6&63|128,e[t++]=i&63|128)}return e}function Q_(r,e,t){let n=[];for(;e<t;){let i=r[e],o=null,s=i>239?4:i>223?3:i>191?2:1;if(e+s<=t){let a,c,l,u;switch(s){case 1:i<128&&(o=i);break;case 2:a=r[e+1],(a&192)===128&&(u=(i&31)<<6|a&63,u>127&&(o=u));break;case 3:a=r[e+1],c=r[e+2],(a&192)===128&&(c&192)===128&&(u=(i&15)<<12|(a&63)<<6|c&63,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:a=r[e+1],c=r[e+2],l=r[e+3],(a&192)===128&&(c&192)===128&&(l&192)===128&&(u=(i&15)<<18|(a&63)<<12|(c&63)<<6|l&63,u>65535&&u<1114112&&(o=u))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),e+=s}return w7(n)}var Z_=4096;function w7(r){let e=r.length;if(e<=Z_)return String.fromCharCode.apply(String,r);let t="",n=0;for(;n<e;)t+=String.fromCharCode.apply(String,r.slice(n,n+=Z_));return t}var Ez=256,sp=class{constructor(e=Ez){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 i=t.length-(this.maxCursor-this.cursor)-1;t.set(e,i)}else{if(t){let i=t.length-(this.maxCursor-this.cursor)-1;i<t.length&&(this.chunks[this.chunks.length-1]=t.subarray(0,i),this.maxCursor=this.cursor-1)}e.length<64&&e.length<this.chunkSize?(t=tI(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=yf(n,0,this.cursor)}else t=eI(this.chunks,this.cursor);return e&&this.reset(),t}};var me="CBOR decode error:",Es="CBOR encode error:",ap=[];ap[23]=1;ap[24]=2;ap[25]=3;ap[26]=5;ap[27]=9;function Ss(r,e,t){if(r.length-e<t)throw new Error(`${me} not enough data for type`)}var Ir=[24,256,65536,4294967296,BigInt("18446744073709551616")];function ri(r,e,t){Ss(r,e,1);let n=r[e];if(t.strict===!0&&n<Ir[0])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function ni(r,e,t){Ss(r,e,2);let n=r[e]<<8|r[e+1];if(t.strict===!0&&n<Ir[1])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function ii(r,e,t){Ss(r,e,4);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3];if(t.strict===!0&&n<Ir[2])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);return n}function oi(r,e,t){Ss(r,e,8);let n=r[e]*16777216+(r[e+1]<<16)+(r[e+2]<<8)+r[e+3],i=r[e+4]*16777216+(r[e+5]<<16)+(r[e+6]<<8)+r[e+7],o=(BigInt(n)<<BigInt(32))+BigInt(i);if(t.strict===!0&&o<Ir[3])throw new Error(`${me} integer encoded in more bytes than necessary (strict decode)`);if(o<=Number.MAX_SAFE_INTEGER)return Number(o);if(t.allowBigInt===!0)return o;throw new Error(`${me} integers outside of the safe integer range are not supported`)}function nI(r,e,t,n){return new Q(_.uint,ri(r,e+1,n),2)}function iI(r,e,t,n){return new Q(_.uint,ni(r,e+1,n),3)}function oI(r,e,t,n){return new Q(_.uint,ii(r,e+1,n),5)}function sI(r,e,t,n){return new Q(_.uint,oi(r,e+1,n),9)}function Ti(r,e){return Rr(r,0,e.value)}function Rr(r,e,t){if(t<Ir[0]){let n=Number(t);r.push([e|n])}else if(t<Ir[1]){let n=Number(t);r.push([e|24,n])}else if(t<Ir[2]){let n=Number(t);r.push([e|25,n>>>8,n&255])}else if(t<Ir[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<Ir[4]){let i=[e|27,0,0,0,0,0,0,0],o=Number(n&BigInt(4294967295)),s=Number(n>>BigInt(32)&BigInt(4294967295));i[8]=o&255,o=o>>8,i[7]=o&255,o=o>>8,i[6]=o&255,o=o>>8,i[5]=o&255,i[4]=s&255,s=s>>8,i[3]=s&255,s=s>>8,i[2]=s&255,s=s>>8,i[1]=s&255,r.push(i)}else throw new Error(`${me} encountered BigInt larger than allowable range`)}}Ti.encodedSize=function(e){return Rr.encodedSize(e.value)};Rr.encodedSize=function(e){return e<Ir[0]?1:e<Ir[1]?2:e<Ir[2]?3:e<Ir[3]?5:9};Ti.compareTokens=function(e,t){return e.value<t.value?-1:e.value>t.value?1:0};function aI(r,e,t,n){return new Q(_.negint,-1-ri(r,e+1,n),2)}function cI(r,e,t,n){return new Q(_.negint,-1-ni(r,e+1,n),3)}function lI(r,e,t,n){return new Q(_.negint,-1-ii(r,e+1,n),5)}var x7=BigInt(-1),uI=BigInt(1);function fI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i!="bigint"){let o=-1-i;if(o>=Number.MIN_SAFE_INTEGER)return new Q(_.negint,o,9)}if(n.allowBigInt!==!0)throw new Error(`${me} integers outside of the safe integer range are not supported`);return new Q(_.negint,x7-BigInt(i),9)}function ug(r,e){let t=e.value,n=typeof t=="bigint"?t*x7-uI:t*-1-1;Rr(r,e.type.majorEncoded,n)}ug.encodedSize=function(e){let t=e.value,n=typeof t=="bigint"?t*x7-uI:t*-1-1;return n<Ir[0]?1:n<Ir[1]?2:n<Ir[2]?3:n<Ir[3]?5:9};ug.compareTokens=function(e,t){return e.value<t.value?1:e.value>t.value?-1:0};function cp(r,e,t,n){Ss(r,e,t+n);let i=yf(r,e+t,e+t+n);return new Q(_.bytes,i,t+n)}function dI(r,e,t,n){return cp(r,e,1,t)}function hI(r,e,t,n){return cp(r,e,2,ri(r,e+1,n))}function pI(r,e,t,n){return cp(r,e,3,ni(r,e+1,n))}function mI(r,e,t,n){return cp(r,e,5,ii(r,e+1,n))}function gI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer bytes lengths not supported`);return cp(r,e,9,i)}function fg(r){return r.encodedBytes===void 0&&(r.encodedBytes=r.type===_.string?lg(r.value):r.value),r.encodedBytes}function wf(r,e){let t=fg(e);Rr(r,e.type.majorEncoded,t.length),r.push(t)}wf.encodedSize=function(e){let t=fg(e);return Rr.encodedSize(t.length)+t.length};wf.compareTokens=function(e,t){return Az(fg(e),fg(t))};function Az(r,e){return r.length<e.length?-1:r.length>e.length?1:rI(r,e)}function lp(r,e,t,n,i){let o=t+n;Ss(r,e,o);let s=new Q(_.string,J_(r,e+t,e+o),o);return i.retainStringBytes===!0&&(s.byteValue=yf(r,e+t,e+o)),s}function yI(r,e,t,n){return lp(r,e,1,t,n)}function wI(r,e,t,n){return lp(r,e,2,ri(r,e+1,n),n)}function xI(r,e,t,n){return lp(r,e,3,ni(r,e+1,n),n)}function bI(r,e,t,n){return lp(r,e,5,ii(r,e+1,n),n)}function vI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer string lengths not supported`);return lp(r,e,9,i,n)}var EI=wf;function xf(r,e,t,n){return new Q(_.array,n,t)}function SI(r,e,t,n){return xf(r,e,1,t)}function AI(r,e,t,n){return xf(r,e,2,ri(r,e+1,n))}function _I(r,e,t,n){return xf(r,e,3,ni(r,e+1,n))}function II(r,e,t,n){return xf(r,e,5,ii(r,e+1,n))}function TI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer array lengths not supported`);return xf(r,e,9,i)}function CI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return xf(r,e,1,1/0)}function dg(r,e){Rr(r,_.array.majorEncoded,e.value)}dg.compareTokens=Ti.compareTokens;dg.encodedSize=function(e){return Rr.encodedSize(e.value)};function bf(r,e,t,n){return new Q(_.map,n,t)}function kI(r,e,t,n){return bf(r,e,1,t)}function PI(r,e,t,n){return bf(r,e,2,ri(r,e+1,n))}function RI(r,e,t,n){return bf(r,e,3,ni(r,e+1,n))}function DI(r,e,t,n){return bf(r,e,5,ii(r,e+1,n))}function NI(r,e,t,n){let i=oi(r,e+1,n);if(typeof i=="bigint")throw new Error(`${me} 64-bit integer map lengths not supported`);return bf(r,e,9,i)}function OI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return bf(r,e,1,1/0)}function hg(r,e){Rr(r,_.map.majorEncoded,e.value)}hg.compareTokens=Ti.compareTokens;hg.encodedSize=function(e){return Rr.encodedSize(e.value)};function LI(r,e,t,n){return new Q(_.tag,t,1)}function BI(r,e,t,n){return new Q(_.tag,ri(r,e+1,n),2)}function MI(r,e,t,n){return new Q(_.tag,ni(r,e+1,n),3)}function UI(r,e,t,n){return new Q(_.tag,ii(r,e+1,n),5)}function FI(r,e,t,n){return new Q(_.tag,oi(r,e+1,n),9)}function pg(r,e){Rr(r,_.tag.majorEncoded,e.value)}pg.compareTokens=Ti.compareTokens;pg.encodedSize=function(e){return Rr.encodedSize(e.value)};var Pz=20,Rz=21,Dz=22,Nz=23;function $I(r,e,t,n){if(n.allowUndefined===!1)throw new Error(`${me} undefined values are not supported`);return n.coerceUndefinedToNull===!0?new Q(_.null,null,1):new Q(_.undefined,void 0,1)}function HI(r,e,t,n){if(n.allowIndefinite===!1)throw new Error(`${me} indefinite length items not allowed`);return new Q(_.break,void 0,1)}function b7(r,e,t){if(t){if(t.allowNaN===!1&&Number.isNaN(r))throw new Error(`${me} NaN values are not supported`);if(t.allowInfinity===!1&&(r===1/0||r===-1/0))throw new Error(`${me} Infinity values are not supported`)}return new Q(_.float,r,e)}function VI(r,e,t,n){return b7(v7(r,e+1),3,n)}function zI(r,e,t,n){return b7(E7(r,e+1),5,n)}function KI(r,e,t,n){return b7(GI(r,e+1),9,n)}function mg(r,e,t){let n=e.value;if(n===!1)r.push([_.float.majorEncoded|Pz]);else if(n===!0)r.push([_.float.majorEncoded|Rz]);else if(n===null)r.push([_.float.majorEncoded|Dz]);else if(n===void 0)r.push([_.float.majorEncoded|Nz]);else{let i,o=!1;(!t||t.float64!==!0)&&(jI(n),i=v7(oo,1),n===i||Number.isNaN(n)?(oo[0]=249,r.push(oo.slice(0,3)),o=!0):(WI(n),i=E7(oo,1),n===i&&(oo[0]=250,r.push(oo.slice(0,5)),o=!0))),o||(Oz(n),i=GI(oo,1),oo[0]=251,r.push(oo.slice(0,9)))}}mg.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){jI(n);let i=v7(oo,1);if(n===i||Number.isNaN(n))return 3;if(WI(n),i=E7(oo,1),n===i)return 5}return 9};var qI=new ArrayBuffer(9),Ci=new DataView(qI,1),oo=new Uint8Array(qI,0);function jI(r){if(r===1/0)Ci.setUint16(0,31744,!1);else if(r===-1/0)Ci.setUint16(0,64512,!1);else if(Number.isNaN(r))Ci.setUint16(0,32256,!1);else{Ci.setFloat32(0,r);let e=Ci.getUint32(0),t=(e&2139095040)>>23,n=e&8388607;if(t===255)Ci.setUint16(0,31744,!1);else if(t===0)Ci.setUint16(0,(r&2147483648)>>16|n>>13,!1);else{let i=t-127;i<-24?Ci.setUint16(0,0):i<-14?Ci.setUint16(0,(e&2147483648)>>16|1<<24+i,!1):Ci.setUint16(0,(e&2147483648)>>16|i+15<<10|n>>13,!1)}}}function v7(r,e){if(r.length-e<2)throw new Error(`${me} 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,i=t&1023,o;return n===0?o=i*2**-24:n!==31?o=(i+1024)*2**(n-25):o=i===0?1/0:NaN,t&32768?-o:o}function WI(r){Ci.setFloat32(0,r,!1)}function E7(r,e){if(r.length-e<4)throw new Error(`${me} not enough data for float32`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,4).getFloat32(0,!1)}function Oz(r){Ci.setFloat64(0,r,!1)}function GI(r,e){if(r.length-e<8)throw new Error(`${me} not enough data for float64`);let t=(r.byteOffset||0)+e;return new DataView(r.buffer,t,8).getFloat64(0,!1)}mg.compareTokens=Ti.compareTokens;function rt(r,e,t){throw new Error(`${me} encountered invalid minor (${t}) for major ${r[e]>>>5}`)}function gg(r){return()=>{throw new Error(`${me} ${r}`)}}var ie=[];for(let r=0;r<=23;r++)ie[r]=rt;ie[24]=nI;ie[25]=iI;ie[26]=oI;ie[27]=sI;ie[28]=rt;ie[29]=rt;ie[30]=rt;ie[31]=rt;for(let r=32;r<=55;r++)ie[r]=rt;ie[56]=aI;ie[57]=cI;ie[58]=lI;ie[59]=fI;ie[60]=rt;ie[61]=rt;ie[62]=rt;ie[63]=rt;for(let r=64;r<=87;r++)ie[r]=dI;ie[88]=hI;ie[89]=pI;ie[90]=mI;ie[91]=gI;ie[92]=rt;ie[93]=rt;ie[94]=rt;ie[95]=gg("indefinite length bytes/strings are not supported");for(let r=96;r<=119;r++)ie[r]=yI;ie[120]=wI;ie[121]=xI;ie[122]=bI;ie[123]=vI;ie[124]=rt;ie[125]=rt;ie[126]=rt;ie[127]=gg("indefinite length bytes/strings are not supported");for(let r=128;r<=151;r++)ie[r]=SI;ie[152]=AI;ie[153]=_I;ie[154]=II;ie[155]=TI;ie[156]=rt;ie[157]=rt;ie[158]=rt;ie[159]=CI;for(let r=160;r<=183;r++)ie[r]=kI;ie[184]=PI;ie[185]=RI;ie[186]=DI;ie[187]=NI;ie[188]=rt;ie[189]=rt;ie[190]=rt;ie[191]=OI;for(let r=192;r<=215;r++)ie[r]=LI;ie[216]=BI;ie[217]=MI;ie[218]=UI;ie[219]=FI;ie[220]=rt;ie[221]=rt;ie[222]=rt;ie[223]=rt;for(let r=224;r<=243;r++)ie[r]=gg("simple values are not supported");ie[244]=rt;ie[245]=rt;ie[246]=rt;ie[247]=$I;ie[248]=gg("simple values are not supported");ie[249]=VI;ie[250]=zI;ie[251]=KI;ie[252]=rt;ie[253]=rt;ie[254]=rt;ie[255]=HI;var so=[];for(let r=0;r<24;r++)so[r]=new Q(_.uint,r,1);for(let r=-1;r>=-24;r--)so[31-r]=new Q(_.negint,r,1);so[64]=new Q(_.bytes,new Uint8Array(0),1);so[96]=new Q(_.string,"",1);so[128]=new Q(_.array,0,1);so[160]=new Q(_.map,0,1);so[244]=new Q(_.false,!1,1);so[245]=new Q(_.true,!0,1);so[246]=new Q(_.null,null,1);function S7(r){switch(r.type){case _.false:return qo([244]);case _.true:return qo([245]);case _.null:return qo([246]);case _.bytes:return r.value.length?void 0:qo([64]);case _.string:return r.value===""?qo([96]):void 0;case _.array:return r.value===0?qo([128]):void 0;case _.map:return r.value===0?qo([160]):void 0;case _.uint:return r.value<24?qo([Number(r.value)]):void 0;case _.negint:if(r.value>=-24)return qo([31-Number(r.value)])}}var Bz={float64:!1,mapSorter:Uz,quickEncodeToken:S7};function _7(){let r=[];return r[_.uint.major]=Ti,r[_.negint.major]=ug,r[_.bytes.major]=wf,r[_.string.major]=EI,r[_.array.major]=dg,r[_.map.major]=hg,r[_.tag.major]=pg,r[_.float.major]=mg,r}var XI=_7(),A7=new sp,yg=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(`${Es} object contains circular references`);return new r(t,e)}},Sa={null:new Q(_.null,null),undefined:new Q(_.undefined,void 0),true:new Q(_.true,!0),false:new Q(_.false,!1),emptyArray:new Q(_.array,0),emptyMap:new Q(_.map,0)},Aa={number(r,e,t,n){return!Number.isInteger(r)||!Number.isSafeInteger(r)?new Q(_.float,r):r>=0?new Q(_.uint,r):new Q(_.negint,r)},bigint(r,e,t,n){return r>=BigInt(0)?new Q(_.uint,r):new Q(_.negint,r)},Uint8Array(r,e,t,n){return new Q(_.bytes,r)},string(r,e,t,n){return new Q(_.string,r)},boolean(r,e,t,n){return r?Sa.true:Sa.false},null(r,e,t,n){return Sa.null},undefined(r,e,t,n){return Sa.undefined},ArrayBuffer(r,e,t,n){return new Q(_.bytes,new Uint8Array(r))},DataView(r,e,t,n){return new Q(_.bytes,new Uint8Array(r.buffer,r.byteOffset,r.byteLength))},Array(r,e,t,n){if(!r.length)return t.addBreakTokens===!0?[Sa.emptyArray,new Q(_.break)]:Sa.emptyArray;n=yg.createCheck(n,r);let i=[],o=0;for(let s of r)i[o++]=up(s,t,n);return t.addBreakTokens?[new Q(_.array,r.length),i,new Q(_.break)]:[new Q(_.array,r.length),i]},Object(r,e,t,n){let i=e!=="Object",o=i?r.keys():Object.keys(r),s=i?r.size:o.length;if(!s)return t.addBreakTokens===!0?[Sa.emptyMap,new Q(_.break)]:Sa.emptyMap;n=yg.createCheck(n,r);let a=[],c=0;for(let l of o)a[c++]=[up(l,t,n),up(i?r.get(l):r[l],t,n)];return Mz(a,t),t.addBreakTokens?[new Q(_.map,s),a,new Q(_.break)]:[new Q(_.map,s),a]}};Aa.Map=Aa.Object;Aa.Buffer=Aa.Uint8Array;for(let r of"Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64".split(" "))Aa[`${r}Array`]=Aa.DataView;function up(r,e={},t){let n=X_(r),i=e&&e.typeEncoders&&e.typeEncoders[n]||Aa[n];if(typeof i=="function"){let s=i(r,n,e,t);if(s!=null)return s}let o=Aa[n];if(!o)throw new Error(`${Es} unsupported type: ${n}`);return o(r,n,e,t)}function Mz(r,e){e.mapSorter&&r.sort(e.mapSorter)}function Uz(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 i=t.type.major,o=XI[i].compareTokens(t,n);return o===0&&console.warn("WARNING: complex key types used, CBOR key sorting guarantees are gone"),o}function YI(r,e,t,n){if(Array.isArray(e))for(let i of e)YI(r,i,t,n);else t[e.type.major](r,e,n)}function I7(r,e,t){let n=up(r,t);if(!Array.isArray(n)&&t.quickEncodeToken){let i=t.quickEncodeToken(n);if(i)return i;let o=e[n.type.major];if(o.encodedSize){let s=o.encodedSize(n,t),a=new sp(s);if(o(a,n,t),a.chunks.length!==1)throw new Error(`Unexpected error: pre-calculated length for ${n} was wrong`);return op(a.chunks[0])}}return A7.reset(),YI(A7,n,e,t),A7.toBytes(!0)}function As(r,e){return e=Object.assign({},Bz,e),I7(r,XI,e)}var Fz={strict:!1,allowIndefinite:!0,allowUndefined:!0,allowBigInt:!0},wg=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=so[e];if(t===void 0){let n=ie[e];if(!n)throw new Error(`${me} no decoder for major type ${e>>>5} (byte 0x${e.toString(16).padStart(2,"0")})`);let i=e&31;t=n(this.data,this._pos,i,this.options)}return this._pos+=t.encodedLength,t}},fp=Symbol.for("DONE"),xg=Symbol.for("BREAK");function $z(r,e,t){let n=[];for(let i=0;i<r.value;i++){let o=vf(e,t);if(o===xg){if(r.value===1/0)break;throw new Error(`${me} got unexpected break to lengthed array`)}if(o===fp)throw new Error(`${me} found array but not enough entries (got ${i}, expected ${r.value})`);n[i]=o}return n}function Hz(r,e,t){let n=t.useMaps===!0,i=n?void 0:{},o=n?new Map:void 0;for(let s=0;s<r.value;s++){let a=vf(e,t);if(a===xg){if(r.value===1/0)break;throw new Error(`${me} got unexpected break to lengthed map`)}if(a===fp)throw new Error(`${me} found map but not enough entries (got ${s} [no key], expected ${r.value})`);if(n!==!0&&typeof a!="string")throw new Error(`${me} non-string keys not supported (got ${typeof a})`);if(t.rejectDuplicateMapKeys===!0&&(n&&o.has(a)||!n&&a in i))throw new Error(`${me} found repeat map key "${a}"`);let c=vf(e,t);if(c===fp)throw new Error(`${me} found map but not enough entries (got ${s} [no value], expected ${r.value})`);n?o.set(a,c):i[a]=c}return n?o:i}function vf(r,e){if(r.done())return fp;let t=r.next();if(t.type===_.break)return xg;if(t.type.terminal)return t.value;if(t.type===_.array)return $z(t,r,e);if(t.type===_.map)return Hz(t,r,e);if(t.type===_.tag){if(e.tags&&typeof e.tags[t.value]=="function"){let n=vf(r,e);return e.tags[t.value](n)}throw new Error(`${me} tag not supported (${t.value})`)}throw new Error("unsupported")}function T7(r,e){if(!(r instanceof Uint8Array))throw new Error(`${me} data to decode must be a Uint8Array`);e=Object.assign({},Fz,e);let t=e.tokenizer||new wg(r,e),n=vf(t,e);if(n===fp)throw new Error(`${me} did not find any content to decode`);if(n===xg)throw new Error(`${me} got unexpected break`);return[n,r.subarray(t.pos())]}function xn(r,e){let[t,n]=T7(r,e);if(n.length>0)throw new Error(`${me} too many terminals, data makes no sense`);return t}var _s="/",QI=new TextEncoder().encode(_s),bg=QI[0],nt=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=O(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]!==bg)throw new Error("Invalid key")}toString(e="utf8"){return H(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(_s))}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=QI),this._buf[0]!==bg){let e=new Uint8Array(this._buf.byteLength+1);e.fill(bg,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===bg;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let i=0;i<t.length;i++){if(n.length<i+1)return!1;let o=t[i],s=n[i];if(o<s)return!0;if(o>s)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(_s).slice(1)}type(){return Vz(this.baseNamespace())}name(){return zz(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(_s)||(e+=_s),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(_s):new r(e.slice(0,-1).join(_s))}child(e){return this.toString()===_s?e:e.toString()===_s?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(),...Kz(e.map(t=>t.namespaces()))])}};function Vz(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function zz(r){let e=r.split(":");return e[e.length-1]}function Kz(r){return[].concat(...r)}function vg({enumerable:r=!0,configurable:e=!1}={}){return{enumerable:r,configurable:e,writable:!1}}function*qz(r,e){if(e!=null&&typeof e=="object")if(Array.isArray(e))for(let[t,n]of e.entries()){let i=[...r,t],o=W.asCID(n);o!=null?yield[i.join("/"),o]:typeof n=="object"&&(yield*k7(n,i))}else{let t=W.asCID(e);t!=null?yield[r.join("/"),t]:yield*k7(e,r)}}function*k7(r,e){if(r==null||r instanceof Uint8Array)return;let t=W.asCID(r);t!=null&&(yield[e.join("/"),t]);for(let[n,i]of Object.entries(r)){let o=[...e,n];yield*qz(o,i)}}function*jz(r,e){if(Array.isArray(e))for(let[t,n]of e.entries()){let i=[...r,t];yield i.join("/"),typeof n=="object"&&W.asCID(n)==null&&(yield*P7(n,i))}else yield*P7(e,r)}function*P7(r,e){if(!(r==null||typeof r!="object"))for(let[t,n]of Object.entries(r)){let i=[...e,t];yield i.join("/"),n!=null&&!(n instanceof Uint8Array)&&typeof n=="object"&&W.asCID(n)==null&&(yield*jz(i,n))}}function Wz(r,e){let t=r;for(let[n,i]of e.entries()){if(t=t[i],t==null)throw new Error(`Object has no property at ${e.slice(0,n+1).map(s=>`[${JSON.stringify(s)}]`).join("")}`);let o=W.asCID(t);if(o!=null)return{value:o,remaining:e.slice(n+1).join("/")}}return{value:t}}var R7=class{cid;bytes;value;asBlock;constructor({cid:e,bytes:t,value:n}){if(e==null||t==null||typeof n>"u")throw new Error("Missing required argument");this.cid=e,this.bytes=t,this.value=n,this.asBlock=this,Object.defineProperties(this,{cid:vg(),bytes:vg(),value:vg(),asBlock:vg()})}links(){return k7(this.value,[])}tree(){return P7(this.value,[])}get(e="/"){return Wz(this.value,e.split("/").filter(Boolean))}};function Eg({bytes:r,cid:e,value:t,codec:n}){let i=t!==void 0?t:n?.decode(r);if(i===void 0)throw new Error('Missing required argument, must either provide "value" or "codec"');return new R7({cid:e,bytes:r,value:i})}var eT="/pin/",ZI="/pinned-block/",D7=fn,JI=1;function Sg(r){return r.version===0&&(r=r.toV1()),new nt(`${eT}${r.toString(D7)}`)}var Ag=class{datastore;blockstore;getCodec;constructor(e,t,n){this.datastore=e,this.blockstore=t,this.getCodec=n}async*add(e,t={}){let n=Sg(e);if(await this.datastore.has(n))throw new Error("Already pinned");let i=Math.round(t.depth??1/0);if(i<0)throw new Error("Depth must be greater than or equal to 0");let o=new ln({concurrency:JI});for await(let a of this.#e(e,o,{...t,depth:i}))await this.#r(a,c=>c.pinnedBy.find(l=>pe(l,e.bytes))!=null?!1:(c.pinCount++,c.pinnedBy.push(e.bytes),!0),t),yield a;let s={depth:i,metadata:t.metadata??{}};await this.datastore.put(n,As(s),t)}async*#e(e,t,n){if(n.depth===-1)return;let i=await this.getCodec(e.code),o=await this.blockstore.get(e,n),s=Eg({bytes:o,cid:e,codec:i});yield e;for await(let[,a]of s.links())yield*await t.add(async()=>this.#e(a,t,{...n,depth:n.depth-1}))}async#r(e,t,n){let i=new nt(`${ZI}${D7.encode(e.multihash.bytes)}`),o={pinCount:0,pinnedBy:[]};try{o=xn(await this.datastore.get(i,n))}catch(a){if(a.name!=="NotFoundError")throw a}if(t(o)){if(o.pinCount===0&&await this.datastore.has(i)){await this.datastore.delete(i);return}await this.datastore.put(i,As(o),n),n.onProgress?.(new G("helia:pin:add",e))}}async*rm(e,t={}){let n=Sg(e),i=await this.datastore.get(n,t),o=xn(i);await this.datastore.delete(n,t);let s=new ln({concurrency:JI});for await(let a of this.#e(e,s,{...t,depth:o.depth}))await this.#r(a,c=>(c.pinCount--,c.pinnedBy=c.pinnedBy.filter(l=>pe(l,e.bytes)),!0),{...t,depth:o.depth}),yield a}async*ls(e={}){for await(let{key:t,value:n}of this.datastore.query({prefix:eT+(e.cid!=null?`${e.cid.toString(fn)}`:"")},e)){let i=W.parse(t.toString().substring(5),fn),o=xn(n);yield{cid:i,...o}}}async isPinned(e,t={}){let n=new nt(`${ZI}${D7.encode(e.multihash.bytes)}`);return this.datastore.has(n,t)}async get(e,t){let n=Sg(e),i=await this.datastore.get(n,t);return xn(i)}async setMetadata(e,t,n){let i=Sg(e),o=await this.datastore.get(i,n),s=xn(o);s.metadata=t??{},await this.datastore.put(i,As(s),n)}};var _g=class extends Error{static name="InsufficientProvidersError";constructor(e="Insufficient providers found"){super(e),this.name="InsufficientProvidersError"}},il=class extends Error{static name="NoRoutersAvailableError";constructor(e="No routers available"){super(e),this.name="NoRoutersAvailableError"}},Ig=class extends Error{static name="UnknownHashAlgorithmError";constructor(e="Unknown hash algorithm"){super(e),this.name="UnknownHashAlgorithmError"}},Tg=class extends Error{static name="UnknownCodecError";constructor(e="Unknown codec"){super(e),this.name="UnknownCodecError"}};var Gz=5,Cg=class{log;routers;providerLookupConcurrency;constructor(e,t){this.log=e.logger.forComponent("helia:routing"),this.routers=t.routers??[],this.providerLookupConcurrency=t.providerLookupConcurrency??Gz,this.findProviders=e.metrics?.traceFunction("helia.routing.findProviders",this.findProviders.bind(this),{optionsIndex:1})??this.findProviders,this.provide=e.metrics?.traceFunction("helia.routing.provide",this.provide.bind(this),{optionsIndex:1})??this.provide,this.cancelReprovide=e.metrics?.traceFunction("helia.routing.cancelReprovide",this.cancelReprovide.bind(this),{optionsIndex:1})??this.cancelReprovide,this.put=e.metrics?.traceFunction("helia.routing.put",this.put.bind(this),{optionsIndex:2})??this.put,this.get=e.metrics?.traceFunction("helia.routing.get",this.get.bind(this),{optionsIndex:1})??this.get,this.findPeer=e.metrics?.traceFunction("helia.routing.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("helia.routing.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async start(){await Cr(...this.routers)}async stop(){await Gr(...this.routers)}async*findProviders(e,t={}){if(this.routers.length===0)throw new il("No content routers available");let n=new kr({concurrency:this.providerLookupConcurrency});n.addEventListener("error",()=>{});for await(let i of un(n.toGenerator(),...ol(this.routers,"findProviders").map(o=>o.findProviders(e,t))))if(i!=null){if(i.multiaddrs.length===0){if(n.find(i.id)!=null)continue;n.add(async()=>{try{let o=await this.findPeer(i.id,t);return o.multiaddrs.length===0?null:o}catch(o){return this.log.error("could not load multiaddrs for peer %p",i.id,o),null}},{peerId:i.id,signal:t.signal}).catch(o=>{this.log.error("could not load multiaddrs for peer %p",i.id,o)})}yield i}}async provide(e,t={}){if(this.routers.length===0)throw new il("No content routers available");await Promise.all(ol(this.routers,"provide").map(async n=>{await n.provide(e,t)}))}async cancelReprovide(e,t={}){await Promise.all(ol(this.routers,"cancelReprovide").map(async n=>{await n.cancelReprovide(e,t)}))}async put(e,t,n){await Promise.all(ol(this.routers,"put").map(async i=>{await i.put(e,t,n)}))}async get(e,t){return Promise.any(ol(this.routers,"get").map(async n=>n.get(e,t)))}async findPeer(e,t){if(this.routers.length===0)throw new il("No peer routers available");let n=this,i=un(...ol(this.routers,"findPeer").map(o=>async function*(){try{yield await o.findPeer(e,t)}catch(s){n.log.error(s)}}()));for await(let o of i)if(o!=null)return o;throw new We("Could not find peer in routing")}async*getClosestPeers(e,t={}){if(this.routers.length===0)throw new il("No peer routers available");for await(let n of un(...ol(this.routers,"getClosestPeers").map(i=>i.getClosestPeers(e,t))))n!=null&&(yield n)}};function ol(r,e){return r.filter(t=>t[e]!=null)}var _a={},Ef=r=>{r.addEventListener("message",e=>{Ef.dispatchEvent("message",r,e)}),r.port!=null&&r.port.addEventListener("message",e=>{Ef.dispatchEvent("message",r,e)})};Ef.addEventListener=(r,e)=>{_a[r]==null&&(_a[r]=[]),_a[r].push(e)};Ef.removeEventListener=(r,e)=>{_a[r]!=null&&(_a[r]=_a[r].filter(t=>t===e))};Ef.dispatchEvent=function(r,e,t){_a[r]!=null&&_a[r].forEach(n=>n(e,t))};var N7=Ef;var O7="lock:worker:request-read",L7="lock:worker:release-read",B7="lock:master:grant-read",M7="lock:worker:request-write",U7="lock:worker:release-write",F7="lock:master:grant-write";var tT=(r=21)=>Math.random().toString().substring(2);var rT=(r,e,t,n,i)=>(o,s)=>{if(s.data.type!==t)return;let a={type:s.data.type,name:s.data.name,identifier:s.data.identifier};r.dispatchEvent(new MessageEvent(e,{data:{name:a.name,handler:async()=>{o.postMessage({type:i,name:a.name,identifier:a.identifier}),await new Promise(c=>{let l=u=>{if(u?.data==null)return;let f={type:u.data.type,name:u.data.name,identifier:u.data.identifier};f.type===n&&f.identifier===a.identifier&&(o.removeEventListener("message",l),c())};o.addEventListener("message",l)})}}}))},nT=(r,e,t,n)=>async()=>{let i=tT();return globalThis.postMessage({type:e,identifier:i,name:r}),new Promise(o=>{let s=a=>{if(a?.data==null)return;let c={type:a.data.type,identifier:a.data.identifier};c.type===t&&c.identifier===i&&(globalThis.removeEventListener("message",s),o(()=>{globalThis.postMessage({type:n,identifier:i,name:r})}))};globalThis.addEventListener("message",s)})},Xz={singleProcess:!1},iT=r=>{if(r=Object.assign({},Xz,r),!!globalThis.document||r.singleProcess){let t=new EventTarget;return N7.addEventListener("message",rT(t,"requestReadLock",O7,L7,B7)),N7.addEventListener("message",rT(t,"requestWriteLock",M7,U7,F7)),t}return{isWorker:!0,readLock:t=>nT(t,O7,B7,L7),writeLock:t=>nT(t,M7,F7,U7)}};var sl={},Ia;async function $7(r,e){let t,n=new Promise(i=>{t=i});return r.add(async()=>io((async()=>{await new Promise(i=>{t(()=>{i()})})})(),{milliseconds:e.timeout})),n}var Yz=(r,e)=>{if(Ia.isWorker===!0)return{readLock:Ia.readLock(r,e),writeLock:Ia.writeLock(r,e)};let t=new kn({concurrency:1}),n;return{async readLock(){if(n!=null)return $7(n,e);n=new kn({concurrency:e.concurrency,autoStart:!1});let i=n,o=$7(n,e);return t.add(async()=>{i.start(),await i.onIdle().then(()=>{n===i&&(n=null)})}),o},async writeLock(){return n=null,$7(t,e)}}},Qz={name:"lock",concurrency:1/0,timeout:846e5,singleProcess:!1};function al(r){let e=Object.assign({},Qz,r);return Ia==null&&(Ia=iT(e),Ia.isWorker!==!0&&(Ia.addEventListener("requestReadLock",t=>{sl[t.data.name]!=null&&sl[t.data.name].readLock().then(async n=>t.data.handler().finally(()=>{n()}))}),Ia.addEventListener("requestWriteLock",async t=>{sl[t.data.name]!=null&&sl[t.data.name].writeLock().then(async n=>t.data.handler().finally(()=>{n()}))}))),sl[e.name]==null&&(sl[e.name]=Yz(e.name,e)),sl[e.name]}var kg=class{lock;child;pins;started;constructor(e,t,n={}){this.child=e,this.pins=t,this.lock=al({singleProcess:n.holdGcLock}),this.started=!1}isStarted(){return this.started}async start(){await Cr(this.child),this.started=!0}async stop(){await Gr(this.child),this.started=!1}unwrap(){return this.child}async put(e,t,n={}){n?.signal?.throwIfAborted();let i=await this.lock.readLock();try{return await this.child.put(e,t,n)}finally{i()}}async*putMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.putMany(e,t)}finally{n()}}async get(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.get(e,t)}finally{n()}}async*getMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{yield*this.child.getMany(e,t)}finally{n()}}async delete(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{if(await this.pins.isPinned(e))throw new Error("CID was pinned");await this.child.delete(e,t)}finally{n()}}async*deleteMany(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.writeLock();try{let i=this;yield*this.child.deleteMany(async function*(){for await(let o of e){if(await i.pins.isPinned(o))throw new Error("CID was pinned");yield o}}(),t)}finally{n()}}async has(e,t={}){t?.signal?.throwIfAborted();let n=await this.lock.readLock();try{return await this.child.has(e,t)}finally{n()}}async*getAll(e={}){e?.signal?.throwIfAborted();let t=await this.lock.readLock();try{yield*this.child.getAll(e)}finally{t()}}createSession(e,t){return t?.signal?.throwIfAborted(),this.child.createSession(e,t)}};var H7=new nt("/version"),oT=1;async function sT(r){if(!await r.has(H7)){await r.put(H7,O(`${oT}`));return}let e=await r.get(H7),t=H(e);if(parseInt(t,10)!==oT)throw new Error("Unknown datastore version, a datastore migration may be required")}var Ca={};Ft(Ca,{code:()=>Pn,decode:()=>Ta,decodeOptions:()=>nK,encode:()=>Sf,encodeOptions:()=>tK,name:()=>iK,toByteView:()=>cT});var aT=42;function cT(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function Zz(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=W.asCID(r);if(!e)return null;let t=new Uint8Array(e.bytes.byteLength+1);return t.set(e.bytes,1),[new Q(_.tag,aT),new Q(_.bytes,t)]}function Jz(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function eK(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 V7={float64:!0,typeEncoders:{Object:Zz,undefined:Jz,number:eK}},tK={...V7,typeEncoders:{...V7.typeEncoders}};function rK(r){if(r[0]!==0)throw new Error("Invalid CID for CBOR tag 42; expected leading 0x00");return W.decode(r.subarray(1))}var Pg={allowIndefinite:!1,coerceUndefinedToNull:!0,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};Pg.tags[aT]=rK;var nK={...Pg,tags:Pg.tags.slice()},iK="dag-cbor",Pn=113,Sf=r=>As(r,V7),Ta=r=>xn(cT(r),Pg);var cl={};Ft(cl,{code:()=>co,decode:()=>_f,encode:()=>Dg,format:()=>mK,name:()=>pK,parse:()=>yK,stringify:()=>mK});var z7=class extends Array{constructor(){super(),this.inRecursive=[]}prefix(e){let t=this.inRecursive[this.inRecursive.length-1];t&&(t.type===_.array&&(t.elements++,t.elements!==1&&e.push([44])),t.type===_.map&&(t.elements++,t.elements!==1&&(t.elements%2===1?e.push([44]):e.push([58]))))}[_.uint.major](e,t){this.prefix(e);let n=String(t.value),i=[];for(let o=0;o<n.length;o++)i[o]=n.charCodeAt(o);e.push(i)}[_.negint.major](e,t){this[_.uint.major](e,t)}[_.bytes.major](e,t){throw new Error(`${Es} unsupported type: Uint8Array`)}[_.string.major](e,t){this.prefix(e);let n=lg(JSON.stringify(t.value));e.push(n.length>32?op(n):n)}[_.array.major](e,t){this.prefix(e),this.inRecursive.push({type:_.array,elements:0}),e.push([91])}[_.map.major](e,t){this.prefix(e),this.inRecursive.push({type:_.map,elements:0}),e.push([123])}[_.tag.major](e,t){}[_.float.major](e,t){if(t.type.name==="break"){let s=this.inRecursive.pop();if(s){if(s.type===_.array)e.push([93]);else if(s.type===_.map)e.push([125]);else throw new Error("Unexpected recursive type; this should not happen!");return}throw new Error("Unexpected break; this should not happen!")}if(t.value===void 0)throw new Error(`${Es} 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),i=[],o=!1;for(let s=0;s<n.length;s++)i[s]=n.charCodeAt(s),!o&&(i[s]===46||i[s]===101||i[s]===69)&&(o=!0);o||(i.push(46),i.push(48)),e.push(i)}};function oK(r,e){if(Array.isArray(r[0])||Array.isArray(e[0]))throw new Error(`${Es} complex map keys are not supported`);let t=r[0],n=e[0];if(t.type!==_.string||n.type!==_.string)throw new Error(`${Es} non-string map keys are not supported`);if(t<n)return-1;if(t>n)return 1;throw new Error(`${Es} unexpected duplicate map keys, this is not supported`)}var sK={addBreakTokens:!0,mapSorter:oK};function dp(r,e){return e=Object.assign({},sK,e),I7(r,new z7,e)}var Af=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(`${me} 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(`${me} unexpected token at position ${this._pos}, expected to find '${String.fromCharCode(...e)}'`)}parseNumber(){let e=this._pos,t=!1,n=!1,i=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 Q(_.uint,0,this._pos-e);if(i([48,49,50,51,52,53,54,55,56,57]),t&&this._pos===e+1)throw new Error(`${me} unexpected token at position ${this._pos}`);if(!this.done()&&this.ch()===46){if(n)throw new Error(`${me} unexpected token at position ${this._pos}`);n=!0,this._pos++,i([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++,i([48,49,50,51,52,53,54,55,56,57]));let o=String.fromCharCode.apply(null,this.data.subarray(e,this._pos)),s=parseFloat(o);return n?new Q(_.float,s,this._pos-e):this.options.allowBigInt!==!0||Number.isSafeInteger(s)?new Q(s>=0?_.uint:_.negint,s,this._pos-e):new Q(s>=0?_.uint:_.negint,BigInt(o),this._pos-e)}parseString(){if(this.ch()!==34)throw new Error(`${me} unexpected character at position ${this._pos}; this shouldn't happen`);this._pos++;for(let o=this._pos,s=0;o<this.data.length&&s<65536;o++,s++){let a=this.data[o];if(a===92||a<32||a>=128)break;if(a===34){let c=String.fromCharCode.apply(null,this.data.subarray(this._pos,o));return this._pos=o+1,new Q(_.string,c,s)}}let e=this._pos,t=[],n=()=>{if(this._pos+4>=this.data.length)throw new Error(`${me} unexpected end of unicode escape sequence at position ${this._pos}`);let o=0;for(let s=0;s<4;s++){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(`${me} unexpected unicode escape character at position ${this._pos}`);o=o*16+a,this._pos++}return o},i=()=>{let o=this.ch(),s=null,a=o>239?4:o>223?3:o>191?2:1;if(this._pos+a>this.data.length)throw new Error(`${me} unexpected unicode sequence at position ${this._pos}`);let c,l,u,f;switch(a){case 1:o<128&&(s=o);break;case 2:c=this.data[this._pos+1],(c&192)===128&&(f=(o&31)<<6|c&63,f>127&&(s=f));break;case 3:c=this.data[this._pos+1],l=this.data[this._pos+2],(c&192)===128&&(l&192)===128&&(f=(o&15)<<12|(c&63)<<6|l&63,f>2047&&(f<55296||f>57343)&&(s=f));break;case 4:c=this.data[this._pos+1],l=this.data[this._pos+2],u=this.data[this._pos+3],(c&192)===128&&(l&192)===128&&(u&192)===128&&(f=(o&15)<<18|(c&63)<<12|(l&63)<<6|u&63,f>65535&&f<1114112&&(s=f))}s===null?(s=65533,a=1):s>65535&&(s-=65536,t.push(s>>>10&1023|55296),s=56320|s&1023),t.push(s),this._pos+=a};for(;!this.done();){let o=this.ch(),s;switch(o){case 92:if(this._pos++,this.done())throw new Error(`${me} unexpected string termination at position ${this._pos}`);switch(s=this.ch(),this._pos++,s){case 34:case 39:case 92:case 47:t.push(s);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(`${me} unexpected string escape character at position ${this._pos}`)}break;case 34:return this._pos++,new Q(_.string,w7(t),this._pos-e);default:if(o<32)throw new Error(`${me} invalid control character at position ${this._pos}`);o<128?(t.push(o),this._pos++):i()}}throw new Error(`${me} unexpected end of string at position ${this._pos}`)}parseValue(){switch(this.ch()){case 123:return this.modeStack.push("obj-start"),this._pos++,new Q(_.map,1/0,1);case 91:return this.modeStack.push("array-start"),this._pos++,new Q(_.array,1/0,1);case 34:return this.parseString();case 110:return this.expect([110,117,108,108]),new Q(_.null,null,4);case 102:return this.expect([102,97,108,115,101]),new Q(_.false,!1,5);case 116:return this.expect([116,114,117,101]),new Q(_.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(`${me} 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 Q(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${me} 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 Q(_.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 Q(_.break,void 0,1);if(this.ch()!==44)throw new Error(`${me} 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 Q(_.break,void 0,1);let e=this.parseString();if(this.skipWhitespace(),this.ch()!==58)throw new Error(`${me} 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(`${me} unexpected parse state at position ${this._pos}; this shouldn't happen`)}}};function K7(r,e){return e=Object.assign({tokenizer:new Af(r,e)},e),xn(r,e)}function cK(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}function lK(r){if(r.asCID!==r&&r["/"]!==r.bytes)return null;let e=W.asCID(r);if(!e)return null;let t=e.toString();return[new Q(_.map,1/0,1),new Q(_.string,"/",1),new Q(_.string,t,t.length),new Q(_.break,void 0,1)]}function Rg(r){let e=ar.encode(r).slice(1);return[new Q(_.map,1/0,1),new Q(_.string,"/",1),new Q(_.map,1/0,1),new Q(_.string,"bytes",5),new Q(_.string,e,e.length),new Q(_.break,void 0,1),new Q(_.break,void 0,1)]}function ao(r){return Rg(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}function uK(r){return Rg(new Uint8Array(r))}function fK(){throw new Error("`undefined` is not supported by the IPLD Data Model and cannot be encoded")}function dK(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 hK={typeEncoders:{Object:lK,Buffer:Rg,Uint8Array:Rg,Int8Array:ao,Uint16Array:ao,Int16Array:ao,Uint32Array:ao,Int32Array:ao,Float32Array:ao,Float64Array:ao,Uint8ClampedArray:ao,BigInt64Array:ao,BigUint64Array:ao,DataView:ao,ArrayBuffer:uK,undefined:fK,number:dK}},q7=class extends Af{constructor(e,t){super(e,t),this.tokenBuffer=[]}done(){return this.tokenBuffer.length===0&&super.done()}_next(){return this.tokenBuffer.length>0?this.tokenBuffer.pop():super.next()}next(){let e=this._next();if(e.type===_.map){let t=this._next();if(t.type===_.string&&t.value==="/"){let n=this._next();if(n.type===_.string){if(this._next().type!==_.break)throw new Error("Invalid encoded CID form");return this.tokenBuffer.push(n),new Q(_.tag,42,0)}if(n.type===_.map){let i=this._next();if(i.type===_.string&&i.value==="bytes"){let o=this._next();if(o.type===_.string){for(let a=0;a<2;a++)if(this._next().type!==_.break)throw new Error("Invalid encoded Bytes form");let s=ar.decode(`m${o.value}`);return new Q(_.bytes,s,o.value.length)}this.tokenBuffer.push(o)}this.tokenBuffer.push(i)}this.tokenBuffer.push(n)}this.tokenBuffer.push(t)}return e}},j7={allowIndefinite:!1,allowUndefined:!1,allowNaN:!1,allowInfinity:!1,allowBigInt:!0,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,tags:[]};j7.tags[42]=W.parse;var pK="dag-json",co=297,Dg=r=>dp(r,hK),_f=r=>{let e=cK(r),t=Object.assign(j7,{tokenizer:new q7(e,j7)});return K7(e,t)},mK=r=>gK.decode(Dg(r));var gK=new TextDecoder,yK=r=>_f(wK.encode(r)),wK=new TextEncoder;var nr={};Ft(nr,{code:()=>ct,createLink:()=>wT,createNode:()=>yT,decode:()=>rr,encode:()=>Qe,name:()=>kK,prepare:()=>qt,validate:()=>X7});var xK=new TextDecoder;function W7(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 i=r[e++];if(t+=n<28?(i&127)<<n:(i&127)*2**n,i<128)break}return[t,e]}function Ng(r,e){let t;[t,e]=W7(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 lT(r,e){let t;return[t,e]=W7(r,e),[t&7,t>>3,e]}function bK(r){let e={},t=r.length,n=0;for(;n<t;){let i,o;if([i,o,n]=lT(r,n),o===1){if(e.Hash)throw new Error("protobuf: (PBLink) duplicate Hash section");if(i!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) 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]=Ng(r,n)}else if(o===2){if(e.Name!==void 0)throw new Error("protobuf: (PBLink) duplicate Name section");if(i!==2)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) for Name`);if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) invalid order, found Tsize before Name");let s;[s,n]=Ng(r,n),e.Name=xK.decode(s)}else if(o===3){if(e.Tsize!==void 0)throw new Error("protobuf: (PBLink) duplicate Tsize section");if(i!==0)throw new Error(`protobuf: (PBLink) wrong wireType (${i}) for Tsize`);[e.Tsize,n]=W7(r,n)}else throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${o}`)}if(n>t)throw new Error("protobuf: (PBLink) unexpected end of data");return e}function uT(r){let e=r.length,t=0,n,i=!1,o;for(;t<e;){let a,c;if([a,c,t]=lT(r,t),a!==2)throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${a}`);if(c===1){if(o)throw new Error("protobuf: (PBNode) duplicate Data section");[o,t]=Ng(r,t),n&&(i=!0)}else if(c===2){if(i)throw new Error("protobuf: (PBNode) duplicate Links section");n||(n=[]);let l;[l,t]=Ng(r,t),n.push(bK(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 s={};return o&&(s.Data=o),s.Links=n||[],s}var dT=new TextEncoder,fT=2**32,vK=2**31;function EK(r,e){let t=e.length;if(typeof r.Tsize=="number"){if(r.Tsize<0)throw new Error("Tsize cannot be negative");if(!Number.isSafeInteger(r.Tsize))throw new Error("Tsize too large for encoding");t=hp(e,t,r.Tsize)-1,e[t]=24}if(typeof r.Name=="string"){let n=dT.encode(r.Name);t-=n.length,e.set(n,t),t=hp(e,t,n.length)-1,e[t]=18}return r.Hash&&(t-=r.Hash.length,e.set(r.Hash,t),t=hp(e,t,r.Hash.length)-1,e[t]=10),e.length-t}function hT(r){let e=AK(r),t=new Uint8Array(e),n=e;if(r.Data&&(n-=r.Data.length,t.set(r.Data,n),n=hp(t,n,r.Data.length)-1,t[n]=10),r.Links)for(let i=r.Links.length-1;i>=0;i--){let o=EK(r.Links[i],t.subarray(0,n));n-=o,n=hp(t,n,o)-1,t[n]=18}return t}function SK(r){let e=0;if(r.Hash){let t=r.Hash.length;e+=1+t+If(t)}if(typeof r.Name=="string"){let t=dT.encode(r.Name).length;e+=1+t+If(t)}return typeof r.Tsize=="number"&&(e+=1+If(r.Tsize)),e}function AK(r){let e=0;if(r.Data){let t=r.Data.length;e+=1+t+If(t)}if(r.Links)for(let t of r.Links){let n=SK(t);e+=1+n+If(n)}return e}function hp(r,e,t){e-=If(t);let n=e;for(;t>=vK;)r[e++]=t&127|128,t/=128;for(;t>=128;)r[e++]=t&127|128,t>>>=7;return r[e]=t,n}function If(r){return r%2===0&&r++,Math.floor((_K(r)+6)/7)}function _K(r){let e=0;return r>=fT&&(r=Math.floor(r/fT),e=32),r>=65536&&(r>>>=16,e+=16),r>=256&&(r>>>=8,e+=8),e+IK[r]}var IK=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8];var TK=["Data","Links"],CK=["Hash","Name","Tsize"],G7=new TextEncoder;function mT(r,e){if(r===e)return 0;let t=r.Name?G7.encode(r.Name):[],n=e.Name?G7.encode(e.Name):[],i=t.length,o=n.length;for(let s=0,a=Math.min(i,o);s<a;++s)if(t[s]!==n[s]){i=t[s],o=n[s];break}return i<o?-1:o<i?1:0}function pT(r,e){return!Object.keys(r).some(t=>!e.includes(t))}function gT(r){if(typeof r.asCID=="object"){let t=W.asCID(r);if(!t)throw new TypeError("Invalid DAG-PB form");return{Hash:t}}if(typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Hash){let t=W.asCID(r.Hash);try{t||(typeof r.Hash=="string"?t=W.parse(r.Hash):r.Hash instanceof Uint8Array&&(t=W.decode(r.Hash)))}catch(n){throw new TypeError(`Invalid DAG-PB form: ${n.message}`)}t&&(e.Hash=t)}if(!e.Hash)throw new TypeError("Invalid DAG-PB form");return typeof r.Name=="string"&&(e.Name=r.Name),typeof r.Tsize=="number"&&(e.Tsize=r.Tsize),e}function qt(r){if((r instanceof Uint8Array||typeof r=="string")&&(r={Data:r}),typeof r!="object"||Array.isArray(r))throw new TypeError("Invalid DAG-PB form");let e={};if(r.Data!==void 0)if(typeof r.Data=="string")e.Data=G7.encode(r.Data);else if(r.Data instanceof Uint8Array)e.Data=r.Data;else throw new TypeError("Invalid DAG-PB form");if(r.Links!==void 0)if(Array.isArray(r.Links))e.Links=r.Links.map(gT),e.Links.sort(mT);else throw new TypeError("Invalid DAG-PB form");else e.Links=[];return e}function X7(r){if(!r||typeof r!="object"||Array.isArray(r)||r instanceof Uint8Array||r["/"]&&r["/"]===r.bytes)throw new TypeError("Invalid DAG-PB form");if(!pT(r,TK))throw new TypeError("Invalid DAG-PB form (extraneous properties)");if(r.Data!==void 0&&!(r.Data instanceof Uint8Array))throw new TypeError("Invalid DAG-PB form (Data must be bytes)");if(!Array.isArray(r.Links))throw new TypeError("Invalid DAG-PB form (Links must be a list)");for(let e=0;e<r.Links.length;e++){let t=r.Links[e];if(!t||typeof t!="object"||Array.isArray(t)||t instanceof Uint8Array||t["/"]&&t["/"]===t.bytes)throw new TypeError("Invalid DAG-PB form (bad link)");if(!pT(t,CK))throw new TypeError("Invalid DAG-PB form (extraneous properties on link)");if(t.Hash===void 0)throw new TypeError("Invalid DAG-PB form (link must have a Hash)");if(t.Hash==null||!t.Hash["/"]||t.Hash["/"]!==t.Hash.bytes)throw new TypeError("Invalid DAG-PB form (link Hash must be a CID)");if(t.Name!==void 0&&typeof t.Name!="string")throw new TypeError("Invalid DAG-PB form (link Name must be a string)");if(t.Tsize!==void 0){if(typeof t.Tsize!="number"||t.Tsize%1!==0)throw new TypeError("Invalid DAG-PB form (link Tsize must be an integer)");if(t.Tsize<0)throw new TypeError("Invalid DAG-PB form (link Tsize cannot be negative)")}if(e>0&&mT(t,r.Links[e-1])===-1)throw new TypeError("Invalid DAG-PB form (links must be sorted by Name bytes)")}}function yT(r,e=[]){return qt({Data:r,Links:e})}function wT(r,e,t){return gT({Hash:t,Name:r,Tsize:e})}function xT(r){return r instanceof ArrayBuffer?new Uint8Array(r,0,r.byteLength):r}var kK="dag-pb",ct=112;function Qe(r){X7(r);let e={};return r.Links&&(e.Links=r.Links.map(t=>{let n={};return t.Hash&&(n.Hash=t.Hash.bytes),t.Name!==void 0&&(n.Name=t.Name),t.Tsize!==void 0&&(n.Tsize=t.Tsize),n})),r.Data&&(e.Data=r.Data),hT(e)}function rr(r){let e=xT(r),t=uT(e),n={};return t.Data&&(n.Data=t.Data),t.Links&&(n.Links=t.Links.map(i=>{let o={};try{o.Hash=W.decode(i.Hash)}catch{}if(!o.Hash)throw new Error("Invalid Hash field found in link, expected CID");return i.Name!==void 0&&(o.Name=i.Name),i.Tsize!==void 0&&(o.Tsize=i.Tsize),o})),n}function Tf(r){return r?.then!=null}function bT(r=[],e){let t={[ct]:nr,[vt]:_n,[Pn]:Ca,[co]:cl,[Bo]:Gu};return r.forEach(n=>{t[n.code]=n}),async n=>{let i=t[n];if(i==null&&e!=null){let o=e(n);Tf(o)?i=await o:i=o,t[i.code]=i}if(i!=null)return i;throw new Tg(`Could not load codec for ${n}`)}}function vT(r=[],e){let t={[Fe.code]:Fe,[S0.code]:S0,[cr.code]:cr};return r.forEach(n=>{t[n.code]=n}),async n=>{let i=t[n];if(i==null&&e!=null){let o=e(n);Tf(o)?i=await o:i=o,t[i.code]=i}if(i!=null)return i;throw new Ig(`No hasher configured for multihash code 0x${n.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`)}}var ki=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not Found"){super(e)}};var Is=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:i}of e)await this.put(n,i,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 Og=0,Lg=class extends Is{child;constructor(e){super(),this.child=e}put(e,t){return e.multihash.code===Og||this.child==null?e:this.child.put(e,t)}get(e){if(e.multihash.code===Og)return e.multihash.digest;if(this.child==null)throw new ki;return this.child.get(e)}has(e){return e.multihash.code===Og?!0:this.child==null?!1:this.child.has(e)}delete(e){if(e.code!==Og&&this.child!=null)return this.child.delete(e)}getAll(e){return this.child!=null?this.child.getAll(e):[]}};function PK(r){return r[Symbol.asyncIterator]!=null}function RK(r,e){let t=0;if(PK(r))return async function*(){for await(let c of r)await e(c,t++)&&(yield c)}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();let s=e(i,t++);if(typeof s.then=="function")return async function*(){await s&&(yield i);for await(let c of n)await e(c,t++)&&(yield c)}();let a=e;return function*(){s===!0&&(yield i);for(let c of n)a(c,t++)&&(yield c)}()}var si=RK;function DK(r){return r[Symbol.asyncIterator]!=null}function ET(r){return r?.then!=null}function NK(r,e){let t=0;if(DK(r))return async function*(){for await(let c of r){let l=e(c,t++);ET(l)&&await l,yield c}}();let n=ju(r),{value:i,done:o}=n.next();if(o===!0)return function*(){}();if(typeof e(i,t++)?.then=="function")return async function*(){yield i;for await(let c of n){let l=e(c,t++);ET(l)&&await l,yield c}}();let a=e;return function*(){yield i;for(let c of n)a(c,t++),yield c}()}var ll=NK;var Bg=class{child;getHasher;log;logger;components;constructor(e){this.log=e.logger.forComponent("helia:networked-storage"),this.logger=e.logger,this.components=e,this.child=new Lg(e.blockstore),this.getHasher=e.getHasher}async put(e,t,n={}){return await this.child.has(e,n)?(n.onProgress?.(new G("blocks:put:duplicate",e)),e):(n.onProgress?.(new G("blocks:put:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async i=>i.announce?.(e,t,n))),n.onProgress?.(new G("blocks:put:blockstore:put",e)),this.child.put(e,t,n))}async*putMany(e,t={}){let n=si(e,async({cid:o})=>{let s=await this.child.has(o,t);return s&&t.onProgress?.(new G("blocks:put-many:duplicate",o)),!s}),i=ll(n,async({cid:o,block:s})=>{t.onProgress?.(new G("blocks:put-many:providers:notify",o)),await Promise.all(this.components.blockBrokers.map(async a=>a.announce?.(o,s,t)))});t.onProgress?.(new G("blocks:put-many:blockstore:put-many")),yield*this.child.putMany(i,t)}async get(e,t={}){if(t.offline!==!0&&!await this.child.has(e,t)){let n=await this.getHasher(e.multihash.code);t.onProgress?.(new G("blocks:get:providers:get",e));let i=await ST(e,this.components.blockBrokers,n,{...t,log:this.log});return t.onProgress?.(new G("blocks:get:blockstore:put",e)),await this.child.put(e,i,t),t.onProgress?.(new G("blocks:get:providers:notify",e)),await Promise.all(this.components.blockBrokers.map(async o=>o.announce?.(e,i,t))),i}return t.onProgress?.(new G("blocks:get:blockstore:get",e)),this.child.get(e,t)}async*getMany(e,t={}){t.onProgress?.(new G("blocks:get-many:blockstore:get-many")),yield*this.child.getMany(ll(e,async n=>{if(t.offline!==!0&&!await this.child.has(n,t)){let i=await this.getHasher(n.multihash.code);t.onProgress?.(new G("blocks:get-many:providers:get",n));let o=await ST(n,this.components.blockBrokers,i,{...t,log:this.log});t.onProgress?.(new G("blocks:get-many:blockstore:put",n)),await this.child.put(n,o,t),t.onProgress?.(new G("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 G("blocks:delete:blockstore:delete",e)),await this.child.delete(e,t)}async*deleteMany(e,t={}){t.onProgress?.(new G("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 G("blocks:get-all:blockstore:get-many")),yield*this.child.getAll(e)}},Mg=class extends Bg{started;constructor(e){super(e),this.started=!1}isStarted(){return this.started}async start(){await Cr(this.child,...this.components.blockBrokers),this.started=!0}async stop(){await Gr(this.child,...this.components.blockBrokers),this.started=!1}unwrap(){return this.child}createSession(e,t){let n=this.components.blockBrokers.map(i=>i.createSession==null?i:i.createSession(t));return new Y7({blockstore:this.child,blockBrokers:n,getHasher:this.getHasher,logger:this.logger},{root:e})}},Y7=class extends Bg{closeController;constructor(e,t){super(e),this.closeController=new AbortController,this.closeController.signal,this.log=e.logger.forComponent(`helia:session-storage:${t.root}`)}close(){this.closeController.abort()}async put(e,t,n={}){let i=Ne([this.closeController.signal,n.signal]);try{return await super.put(e,t,{...n,signal:i})}finally{i.clear()}}async*putMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.putMany(e,{...t,signal:n})}finally{n.clear()}}async get(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{return await super.get(e,{...t,signal:n})}finally{n.clear()}}async*getMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.getMany(e,{...t,signal:n})}finally{n.clear()}}async delete(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{await super.delete(e,{...t,signal:n})}finally{n.clear()}}async*deleteMany(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{yield*super.deleteMany(e,{...t,signal:n})}finally{n.clear()}}async has(e,t={}){let n=Ne([this.closeController.signal,t.signal]);try{return await super.has(e,{...t,signal:n})}finally{n.clear()}}async*getAll(e={}){let t=Ne([this.closeController.signal,e.signal]);try{yield*super.getAll({...e,signal:t})}finally{t.clear()}}};function OK(r){return typeof r.retrieve=="function"}var LK=(r,e)=>{if(e==null)throw new U(`No hasher configured for multihash code 0x${r.multihash.code.toString(16)}, please configure one. You can look up which hash this is at https://github.com/multiformats/multicodec/blob/master/table.csv`);return async t=>{let n,i=e.digest(t);if(Tf(i)?n=await i:n=i,!pe(n.digest,r.multihash.digest))throw new aa("Hash of downloaded block did not match multihash from passed CID")}};async function ST(r,e,t,n){let i=LK(r,t),o=new AbortController,s=Ne([o.signal,n.signal]);o.signal;let a=[];for(let c of e)OK(c)&&a.push(c);try{return await Promise.any(a.map(async c=>{try{let l=!1,u=await c.retrieve(r,{...n,signal:s,validateFn:async f=>{await i(f),l=!0}});return l||await i(u),u}catch(l){throw n.log.error("could not retrieve verified block for %c",r,l),l}}))}finally{o.abort(),s.clear()}}var ul=class extends Me{initialPeerSearchComplete;requests;name;log;logger;minProviders;maxProviders;providers;evictionFilter;constructor(e,t){super(),this.name=t.name,this.logger=e.logger,this.log=e.logger.forComponent(this.name),this.requests=new Map,this.minProviders=t.minProviders??1,this.maxProviders=t.maxProviders??5,this.providers=[],this.evictionFilter=Tn(this.maxProviders)}async retrieve(e,t={}){let n=ar.encode(e.multihash.bytes),i=this.requests.get(n);if(i!=null)return this.log("join existing request for %c",e),i;let o=ye();if(this.requests.set(n,o.promise),this.providers.length===0){let l=!1;this.initialPeerSearchComplete==null&&(l=!0,this.log=this.logger.forComponent(`${this.name}:${e}`),this.initialPeerSearchComplete=this.findProviders(e,this.minProviders,t)),await this.initialPeerSearchComplete,l&&this.log("found initial session peers for %c",e)}let s=!1,a=new ln({concurrency:this.maxProviders});a.addEventListener("error",()=>{}),a.addEventListener("failure",l=>{this.log.error("error querying provider %o, evicting from session",l.detail.job.options.provider,l.detail.error),this.evict(l.detail.job.options.provider)}),a.addEventListener("success",l=>{s=!0,o.resolve(l.detail.result)}),a.addEventListener("idle",()=>{s||t.signal?.aborted===!0||Promise.resolve().then(async()=>{this.log("no session peers had block for for %c, finding new providers",e);for(let l=0;l<this.minProviders&&this.providers.length!==0;l++){let u=this.providers[Math.floor(Math.random()*this.providers.length)];this.evict(u)}await this.findProviders(e,this.minProviders,t),this.log("found new providers re-retrieving %c",e),this.requests.delete(n),o.resolve(await this.retrieve(e,t))}).catch(l=>{this.log.error("could not find new providers for %c",e,l),o.reject(l)})});let c=l=>{a.add(async()=>this.queryProvider(e,l.detail,t),{provider:l.detail}).catch(u=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,u)})};this.addEventListener("provider",c),Promise.all([...this.providers].map(async l=>a.add(async()=>this.queryProvider(e,l,t),{provider:l}))).catch(l=>{t.signal?.aborted!==!0&&this.log.error("error retrieving session block for %c",e,l)});try{return await o.promise}finally{this.removeEventListener("provider",c),a.clear(),this.requests.delete(n)}}evict(e){this.evictionFilter.add(this.toEvictionKey(e));let t=this.providers.findIndex(n=>this.equals(n,e));t!==-1&&this.providers.splice(t,1)}isEvicted(e){return this.evictionFilter.has(this.toEvictionKey(e))}hasProvider(e){return!!(this.providers.find(t=>this.equals(t,e))!=null||this.isEvicted(e))}async findProviders(e,t,n){let i=ye(),o=0;return Promise.resolve().then(async()=>{this.log("finding %d-%d new provider(s) for %c",t,this.maxProviders,e);for await(let s of this.findNewProviders(e,n)){if(o===this.maxProviders||n.signal?.aborted===!0)break;if(!this.hasProvider(s)&&(this.log("found %d/%d new providers",o,this.maxProviders),this.providers.push(s),this.safeDispatchEvent("provider",{detail:s}),o++,o===t&&(this.log("session is ready"),i.resolve()),this.providers.length===this.maxProviders)){this.log("found max session peers",o);break}}if(this.log("found %d/%d new session peers",o,this.maxProviders),o<t)throw new _g(`Found ${o} of ${t} ${this.name} providers for ${e}`)}).catch(s=>{this.log.error("error searching routing for potential session peers for %c",e,s.errors??s),i.reject(s)}),i.promise}};var Ug=class{blockstore;datastore;pins;logger;routing;getCodec;getHasher;dns;metrics;log;constructor(e){this.logger=e.logger??Ea(),this.log=this.logger.forComponent("helia"),this.getHasher=vT(e.hashers,e.loadHasher),this.getCodec=bT(e.codecs,e.loadCodec),this.dns=e.dns??rl(),this.metrics=e.metrics;let t={blockstore:e.blockstore,datastore:e.datastore,logger:this.logger,blockBrokers:[],getHasher:this.getHasher,getCodec:this.getCodec,dns:this.dns,metrics:this.metrics,...e.components??{}};this.routing=t.routing=new Cg(t,{routers:(e.routers??[]).flatMap(i=>{let o=[i];return i[Do]!=null&&o.push(i[Do]),i[No]!=null&&o.push(i[No]),o}),providerLookupConcurrency:e.providerLookupConcurrency});let n=new Mg(t);this.pins=new Ag(e.datastore,n,this.getCodec),this.blockstore=new kg(n,this.pins,{holdGcLock:e.holdGcLock??!0}),this.datastore=e.datastore,t.blockBrokers=e.blockBrokers.map(i=>i(t))}async start(){await sT(this.datastore),await Cr(this.blockstore,this.datastore,this.routing)}async stop(){await Gr(this.blockstore,this.datastore,this.routing)}async gc(e={}){let t=await this.blockstore.lock.writeLock();try{let n=this,i=this.blockstore.unwrap();this.log("gc start"),await Sr(i.deleteMany(async function*(){for await(let{cid:o}of i.getAll())try{if(await n.pins.isPinned(o,e))continue;yield o,e.onProgress?.(new G("helia:gc:deleted",o))}catch(s){n.log.error("Error during gc",s),e.onProgress?.(new G("helia:gc:error",s))}}()))}finally{t()}this.log("gc finished")}};var Q7=class extends ul{wantList;network;constructor(e,t){super(e,{...t,name:"helia:bitswap:session"}),this.wantList=e.wantList,this.network=e.network}async queryProvider(e,t,n){this.log("sending WANT-BLOCK for %c to %p",e,t);let i=await this.wantList.wantSessionBlock(e,t,n);if(this.log("%p %s %c",t,i.has?"has":"does not have",e),i.has&&i.block!=null)return i.block;throw new Error("Provider did not have block")}async*findNewProviders(e,t={}){for await(let n of this.network.findProviders(e,t))yield n.id}toEvictionKey(e){return e.toMultihash().bytes}equals(e,t){return e.equals(t)}};function AT(r,e){return new Q7(r,e)}var Fg=class{blocksReceived;duplicateBlocksReceived;dataReceived;duplicateDataReceived;constructor(e){this.blocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_received_blocks"),this.duplicateBlocksReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_received_blocks"),this.dataReceived=e.metrics?.registerMetricGroup("helia_bitswap_data_received_bytes"),this.duplicateDataReceived=e.metrics?.registerMetricGroup("helia_bitswap_duplicate_data_received_bytes")}updateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.blocksReceived?.increment(n)}updateDuplicateBlocksReceived(e=1,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateBlocksReceived?.increment(n)}updateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.dataReceived?.increment(n)}updateDuplicateDataReceived(e,t){let n={global:e};t!=null&&(n[t.toString()]=e),this.duplicateDataReceived?.increment(n)}};var Z7=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 $g(r){let{name:e,metrics:t}=r,n;return t!=null?n=new Z7({name:e,metrics:t}):n=new Map,n}function UK(r){if(!(r instanceof Uint8Array))throw new Error("arg needs to be a Uint8Array");let e=[];for(;r.length>0;){let t=Zt(r);e.push(t),r=r.slice(Oe(t))}return e}var _T=UK;var Hg=class extends Me{peers;wants;network;log;sendMessagesDelay;sendMessagesTimeout;hashLoader;sendingMessages;constructor(e,t={}){super(),this.peers=tp({name:"helia_bitswap_peers",metrics:e.metrics}),this.wants=$g({name:"helia_bitswap_wantlist",metrics:e.metrics}),this.network=e.network,this.sendMessagesDelay=t.sendMessagesDelay??10,this.log=e.logger.forComponent("helia:bitswap:wantlist"),this.hashLoader=t.hashLoader,this.network.addEventListener("bitswap:message",n=>{this.receiveMessage(n.detail.peer,n.detail.message).catch(i=>{this.log.error("error receiving bitswap message from %p",n.detail.peer,i)})}),this.network.addEventListener("peer:connected",n=>{this.peerConnected(n.detail).catch(i=>{this.log.error("error processing newly connected bitswap peer %p",n.detail,i)})}),this.network.addEventListener("peer:disconnected",n=>{this.peerDisconnected(n.detail)})}async addEntry(e,t){let n=H(e.multihash.bytes,"base64"),i=this.wants.get(n);i==null&&(i={cid:e,priority:t.priority??1,wantType:t.wantType??er.WantBlock,cancel:!1,sendDontHave:!0},this.wants.set(n,i)),i.wantType===er.WantHave&&t.wantType===er.WantBlock&&(i.wantType=er.WantBlock),await this.sendMessagesDebounced();try{return t.wantType===er.WantBlock?(await Er(this,"block",t?.signal,{filter:a=>pe(e.multihash.digest,a.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail:(await Er(this,"presence",t?.signal,{filter:s=>pe(e.multihash.digest,s.detail.cid.multihash.digest),errorMessage:"Want was aborted"})).detail}finally{t.signal?.aborted===!0&&(this.log("want for %c was aborted, cancelling want",e),i.cancel=!0,await this.sendMessagesDebounced())}}async sendMessagesDebounced(){await this.sendingMessages?.promise,clearTimeout(this.sendMessagesTimeout),this.sendMessagesTimeout=setTimeout(()=>{this.sendMessages().catch(e=>{this.log("error sending messages to peers",e)})},this.sendMessagesDelay)}async sendMessages(){this.sendingMessages=ye(),await Promise.all([...this.peers.entries()].map(async([e,t])=>{let n=new Set,i=new vs;for(let[o,s]of this.wants.entries())t.has(o)||s.cancel||(n.add(o),i.addWantlistEntry(s.cid,{cid:s.cid.bytes,priority:s.priority,wantType:s.wantType,cancel:s.cancel,sendDontHave:s.sendDontHave}));if(i.wantlist.size!==0)try{await this.network.sendMessage(e,i);for(let o of n)t.add(o)}catch(o){this.log.error("error sending full wantlist to new peer",o)}})).catch(e=>{this.log.error("error sending messages",e)});for(let[e,t]of this.wants)if(t.cancel){this.wants.delete(e);for(let n of this.peers.values())n.delete(e)}this.sendingMessages.resolve()}has(e){let t=H(e.multihash.bytes,"base64");return this.wants.has(t)}async wantSessionPresence(e,t,n={}){let i=new vs;return i.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:er.WantHave,priority:1}),await this.network.sendMessage(t,i),(await Er(this,"presence",n.signal,{filter:s=>t.equals(s.detail.sender)&&pe(e.multihash.digest,s.detail.cid.multihash.digest)})).detail}async wantBlock(e,t={}){return this.addEntry(e,{...t,wantType:er.WantBlock})}async wantSessionBlock(e,t,n={}){let i=new vs;return i.addWantlistEntry(e,{cid:e.bytes,sendDontHave:!0,wantType:er.WantBlock,priority:1}),await this.network.sendMessage(t,i),(await Er(this,"presence",n.signal,{filter:s=>t.equals(s.detail.sender)&&pe(e.multihash.digest,s.detail.cid.multihash.digest)})).detail}async receivedBlock(e,t){let n=H(e.multihash.bytes,"base64"),i=this.wants.get(n);i!=null&&(i.cancel=!0,await this.sendMessagesDebounced())}async receiveMessage(e,t){this.log("received message from %p with %d blocks",e,t.blocks.length);let n=!1;for(let i of t.blocks){if(i.prefix==null||i.data==null)continue;let o=_T(i.prefix),s=o[0],a=o[1],c=o[2],l=c===Fe.code?Fe:await this.hashLoader?.getHasher(c);if(l==null){this.log.error("unknown hash algorithm",c);continue}let u=l.digest(i.data);u.then!=null&&(u=await u);let f=W.create(s===0?0:1,a,u);this.log("received block from %p for %c",e,f),this.safeDispatchEvent("block",{detail:{sender:e,cid:f,block:i.data}}),this.safeDispatchEvent("presence",{detail:{sender:e,cid:f,has:!0,block:i.data}});let h=H(f.multihash.bytes,"base64"),d=this.wants.get(h);d!=null&&(d.cancel=!0,n=!0)}for(let{cid:i,type:o}of t.blockPresences){let s=W.decode(i);this.log("received %s from %p for %c",o,e,s),this.safeDispatchEvent("presence",{detail:{sender:e,cid:s,has:o===Si.HaveBlock}})}n&&await this.sendMessagesDebounced()}async peerConnected(e){let t=new Set,n=new vs(!0);for(let[i,o]of this.wants.entries())o.cancel||(t.add(i),n.addWantlistEntry(o.cid,{cid:o.cid.bytes,priority:1,wantType:er.WantBlock,cancel:!1,sendDontHave:!1}));if(n.wantlist.size===0){this.peers.set(e,t);return}try{await this.network.sendMessage(e,n),this.peers.set(e,t)}catch(i){this.log.error("error sending full wantlist to new peer %p",e,i)}}peerDisconnected(e){this.peers.delete(e)}start(){}stop(){this.peers.clear(),clearTimeout(this.sendMessagesTimeout)}};var Vg=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 Fg(e),this.network=new P0(e,t),this.peerWantLists=new eg({...e,network:this.network},t),this.wantList=new Hg({...e,network:this.network},t)}createSession(e={}){return AT({wantList:this.wantList,network:this.network,logger:this.logger},e)}async want(e,t={}){let n=new AbortController,i=Ne([n.signal,t.signal]);n.signal,this.network.findAndConnect(e,{...t,signal:i}).catch(o=>{n.signal.aborted||this.log.error("error during finding and connect for cid %c",e,o)});try{return(await this.wantList.wantBlock(e,{...t,signal:i})).block}finally{n.abort(),i.clear()}}async notify(e,t,n={}){await Promise.all([this.peerWantLists.receivedBlock(e,n),this.wantList.receivedBlock(e,n)])}getWantlist(){return[...this.wantList.wants.values()].filter(e=>!e.cancel).map(e=>({cid:e.cid,priority:e.priority,wantType:e.wantType}))}getPeerWantlist(e){return this.peerWantLists.wantListForPeer(e)}async start(){this.wantList.start(),await this.network.start()}async stop(){this.wantList.stop(),await this.network.stop()}};var IT=(r,e={})=>new Vg(r,e);var J7=class{bitswap;started;constructor(e,t={}){let{getHasher:n}=e;this.bitswap=IT(e,{hashLoader:{getHasher:async i=>n(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}async announce(e,t,n){await this.bitswap.notify(e,t,n)}async retrieve(e,t={}){return this.bitswap.want(e,t)}createSession(e){let t=this.bitswap.createSession(e);return{announce:async(n,i,o)=>{await this.bitswap.notify(n,i,o)},retrieve:async(n,i)=>t.retrieve(n,i)}}};function pp(r={}){return e=>new J7(e,r)}var zg=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,i){return this.readAtomically(()=>{let o=0,s=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*i)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(o*=e,o+=u,o>l||(s+=1,t!==void 0&&s>t))return}if(s!==0)return!n&&c&&s>1?void 0:o})}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 i=n*2;if(n<t.length-3){let s=this.readSeparator(":",n,()=>this.readIPv4Addr());if(s!==void 0)return t[i]=s[0],t[i+1]=s[1],t[i+2]=s[2],t[i+3]=s[3],[i+4,!0]}let o=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(o===void 0)return[i,!1];t[i]=o>>8,t[i+1]=o&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,i]=e(t);if(n===16)return t;if(i||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let o=new Uint8Array(14),s=16-(n+2),[a]=e(o.subarray(0,s));return t.set(o.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var TT=45,FK=15,Cf=new zg;function Kg(r){if(!(r.length>FK))return Cf.new(r).parseWith(()=>Cf.readIPv4Addr())}function qg(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>TT))return Cf.new(r).parseWith(()=>Cf.readIPv6Addr())}function fl(r,e=!1){if(r.includes("%")&&(r=r.split("%")[0]),r.length>TT)return;let t=Cf.new(r).parseWith(()=>Cf.readIPAddr());if(t)return e&&t.length===4?Uint8Array.from([0,0,0,0,0,0,0,0,0,0,255,255,t[0],t[1],t[2],t[3]]):t}function lo(r){return!!Kg(r)}function kf(r){return!!qg(r)}function jg(r){return!!fl(r)}var kT=it(CT(),1),$K=["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"],HK=$K.map(r=>new kT.Netmask(r));function ex(r){for(let e of HK)if(e.contains(r))return!0;return!1}function VK(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function zK(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),i=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return ex(i)}function KK(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function qK(r){let e=r.split(":"),t=e[e.length-1];return ex(t)}function jK(r){return/^::$/.test(r)||/^::1$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}function bn(r){return lo(r)?ex(r):VK(r)?zK(r):KK(r)?qK(r):kf(r)?jK(r):void 0}var WK=r=>r.toString().split("/").slice(1),Pf=r=>({match:e=>e.length<1?!1:r(e[0])?e.slice(1):!1,pattern:"fn"}),$e=r=>({match:e=>Pf(t=>t===r).match(e),pattern:r}),dl=()=>({match:r=>Pf(e=>typeof e=="string").match(r),pattern:"{string}"}),gp=()=>({match:r=>Pf(e=>!isNaN(parseInt(e))).match(r),pattern:"{number}"}),mt=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{Le.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),yp=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Dc.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),lt=r=>({match:e=>{let t=r.match(e);return t===!1?e:t},pattern:`optional(${r.pattern})`}),nn=(...r)=>({match:e=>{let t;for(let n of r){let i=n.match(e);i!==!1&&(t==null||i.length<t.length)&&(t=i)}return t??!1},pattern:`or(${r.map(e=>e.pattern).join(", ")})`}),Ge=(...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 gt(...r){function e(i){let o=WK(i);for(let s of r){let a=s.match(o);if(a===!1)return!1;o=a}return o}function t(i){return e(i)!==!1}function n(i){let o=e(i);return o===!1?!1:o.length===0}return{matchers:r,matches:t,exactMatch:n}}var GK=mt(),PT=gt(GK),Gg=Ge($e("dns4"),dl()),Xg=Ge($e("dns6"),dl()),Yg=Ge($e("dnsaddr"),dl()),rx=Ge($e("dns"),dl()),kpe=gt(Gg,lt(mt())),Ppe=gt(Xg,lt(mt())),Rpe=gt(Yg,lt(mt())),wp=gt(nn(rx,Yg,Gg,Xg),lt(mt())),RT=Ge($e("ip4"),Pf(lo)),DT=Ge($e("ip6"),Pf(kf)),nx=nn(RT,DT),Ts=nn(nx,rx,Gg,Xg,Yg),NT=gt(nn(nx,Ge(nn(rx,Yg,Gg,Xg),lt(mt())))),ix=gt(RT),ox=gt(DT),OT=gt(nx),sx=Ge(Ts,$e("tcp"),gp()),xp=Ge(Ts,$e("udp"),gp()),hl=gt(Ge(sx,lt(mt()))),Dpe=gt(xp),ax=Ge(xp,$e("quic"),lt(mt())),Qg=Ge(xp,$e("quic-v1"),lt(mt())),XK=nn(ax,Qg),Npe=gt(ax),LT=gt(Qg),tx=nn(Ts,sx,xp,ax,Qg),BT=nn(Ge(tx,$e("ws"),lt(mt()))),Cs=gt(BT),MT=nn(Ge(tx,$e("wss"),lt(mt())),Ge(tx,$e("tls"),lt(Ge($e("sni"),dl())),$e("ws"),lt(mt()))),pl=gt(MT),UT=Ge(xp,$e("webrtc-direct"),lt(yp()),lt(yp()),lt(mt())),bp=gt(UT),FT=Ge(Qg,$e("webtransport"),lt(yp()),lt(yp()),lt(mt())),cx=gt(FT),Wg=nn(BT,MT,Ge(sx,lt(mt())),Ge(XK,lt(mt())),Ge(Ts,lt(mt())),UT,FT,mt()),Zg=gt(Wg),YK=Ge(Wg,$e("p2p-circuit"),mt()),Rn=gt(YK),QK=nn(Ge(Wg,$e("p2p-circuit"),$e("webrtc"),lt(mt())),Ge(Wg,$e("webrtc"),lt(mt())),Ge($e("webrtc"),lt(mt()))),vp=gt(QK),ZK=nn(Ge(Ts,$e("tcp"),gp(),$e("http"),lt(mt())),Ge(Ts,$e("http"),lt(mt()))),$T=gt(ZK),JK=nn(Ge(Ts,$e("tcp"),nn(Ge($e("443"),$e("http")),Ge(gp(),$e("https"))),lt(mt())),Ge(Ts,$e("tls"),$e("http"),lt(mt())),Ge(Ts,$e("https"),lt(mt()))),HT=gt(JK),eq=nn(Ge($e("memory"),dl(),lt(mt()))),Ope=gt(eq);function VT(r,e,t){let n=0;for(let i of r)if(!(n<e)){if(n>t)break;if(i!==255)return!1;n++}return!0}function zT(r,e,t,n){let i=0;for(let o of r)if(!(i<t)){if(i>n)break;if(o!==e[i])return!1;i++}return!0}function lx(r){switch(r.length){case ml:return r.join(".");case gl:{let e=[];for(let t=0;t<r.length;t++)t%2===0&&e.push(r[t].toString(16).padStart(2,"0")+r[t+1].toString(16).padStart(2,"0"));return e.join(":")}default:throw new Error("Invalid ip length")}}function KT(r){let e=0;for(let[t,n]of r.entries()){if(n===255){e+=8;continue}for(;(n&128)!=0;)e++,n=n<<1;if((n&128)!=0)return-1;for(let i=t+1;i<r.length;i++)if(r[i]!=0)return-1;break}return e}function qT(r){let e="0x";for(let t of r)e+=(t>>4).toString(16)+(t&15).toString(16);return e}var ml=4,gl=16,$pe=parseInt("0xFFFF",16),tq=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Ep(r,e){e.length===gl&&r.length===ml&&VT(e,0,11)&&(e=e.slice(12)),e.length===ml&&r.length===gl&&zT(r,tq,0,11)&&(r=r.slice(12));let t=r.length;if(t!=e.length)throw new Error("Failed to mask ip");let n=new Uint8Array(t);for(let i=0;i<t;i++)n[i]=r[i]&e[i];return n}function jT(r,e){if(typeof e=="string"&&(e=fl(e)),e==null)throw new Error("Invalid ip");if(e.length!==r.network.length)return!1;for(let t=0;t<e.length;t++)if((r.network[t]&r.mask[t])!==(e[t]&r.mask[t]))return!1;return!0}function ux(r){let[e,t]=r.split("/");if(!e||!t)throw new Error("Failed to parse given CIDR: "+r);let n=ml,i=Kg(e);if(i==null&&(n=gl,i=qg(e),i==null))throw new Error("Failed to parse given CIDR: "+r);let o=parseInt(t,10);if(Number.isNaN(o)||String(o).length!==t.length||o<0||o>n*8)throw new Error("Failed to parse given CIDR: "+r);let s=fx(o,8*n);return{network:Ep(i,s),mask:s}}function fx(r,e){if(e!==8*ml&&e!==8*gl)throw new Error("Invalid CIDR mask");if(r<0||r>e)throw new Error("Invalid CIDR mask");let t=e/8,n=new Uint8Array(t);for(let i=0;i<t;i++){if(r>=8){n[i]=255,r-=8;continue}n[i]=255-(255>>r),r=0}return n}var yl=class{constructor(e,t){if(t==null)({network:this.network,mask:this.mask}=ux(e));else{let n=fl(e);if(n==null)throw new Error("Failed to parse network");t=String(t);let i=parseInt(t,10);if(Number.isNaN(i)||String(i).length!==t.length||i<0||i>n.length*8){let o=fl(t);if(o==null)throw new Error("Failed to parse mask");this.mask=o}else this.mask=fx(i,8*n.length);this.network=Ep(n,this.mask)}}contains(e){return jT({network:this.network,mask:this.mask},e)}toString(){let e=KT(this.mask),t=e!==-1?String(e):qT(this.mask);return lx(this.network)+"/"+t}};function WT(r,e){return new yl(r).contains(e)}var GT=lo,rq=kf,dx=function(r){let e=0;if(r=r.toString().trim(),GT(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(rq(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let o=GT(t[n]),s;o&&(s=dx(t[n]),t[n]=H(s.slice(0,2),"base16")),s!=null&&++n<8&&t.splice(n,0,H(s.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 o=[n,1];for(n=9-t.length;n>0;n--)o.push("0");t.splice.apply(t,o)}let i=new Uint8Array(e+16);for(n=0;n<t.length;n++){let o=parseInt(t[n],16);i[e++]=o>>8&255,i[e++]=o&255}return i}throw new Error("invalid ip address")},XT=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let i=[];for(let o=0;o<t;o++)i.push(r[e+o]);return i.join(".")}if(t===16){let i=[];for(let o=0;o<t;o+=2)i.push(n.getUint16(e+o).toString(16));return i.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Rf={},hx={},iq=[[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"],[481,-1,"http-path"],[777,-1,"memory"]];iq.forEach(r=>{let e=oq(...r);hx[e.code]=e,Rf[e.name]=e});function oq(r,e,t,n,i){return{code:r,size:e,name:t,resolvable:!!n,path:!!i}}function Ie(r){if(typeof r=="number"){if(hx[r]!=null)return hx[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Rf[r]!=null)return Rf[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var sq=Ie("ip4"),aq=Ie("ip6"),cq=Ie("ipcidr");function yx(r,e){switch(Ie(r).code){case 4:case 41:return uq(e);case 42:return gx(e);case 43:return H(e,"base10");case 6:case 273:case 33:case 132:return ZT(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return gx(e);case 421:return pq(e);case 444:return QT(e);case 445:return QT(e);case 466:return hq(e);case 481:return globalThis.encodeURIComponent(gx(e));default:return H(e,"base16")}}function wx(r,e){switch(Ie(r).code){case 4:return YT(e);case 41:return YT(e);case 42:return mx(e);case 43:return O(e,"base10");case 6:case 273:case 33:case 132:return bx(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return mx(e);case 421:return fq(e);case 444:return mq(e);case 445:return gq(e);case 466:return dq(e);case 481:return mx(globalThis.decodeURIComponent(e));default:return O(e,"base16")}}function xx(r){let e,t;if(r.stringTuples().forEach(([n,i])=>{(n===sq.code||n===aq.code)&&(t=i),n===cq.code&&(e=i)}),e==null||t==null)throw new Error("Invalid multiaddr");return new yl(t,e)}var px=Object.values(Lc).map(r=>r.decoder),lq=function(){let r=px[0].or(px[1]);return px.slice(2).forEach(e=>r=r.or(e)),r}();function YT(r){if(!jg(r))throw new Error("invalid ip address");return dx(r)}function uq(r){let e=XT(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!jg(e))throw new Error("invalid ip address");return e}function bx(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function ZT(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function mx(r){let e=O(r),t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function gx(r){let e=Zt(r);if(r=r.slice(Oe(e)),r.length!==e)throw new Error("inconsistent lengths");return H(r)}function fq(r){let e;r[0]==="Q"||r[0]==="1"?e=Ue(Le.decode(`z${r}`)).bytes:e=W.parse(r).multihash.bytes;let t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function dq(r){let e=lq.decode(r),t=Uint8Array.from(ht(e.length));return Ve([t,e],t.length+e.length)}function hq(r){let e=Zt(r),t=r.slice(Oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+H(t,"base64url")}function pq(r){let e=Zt(r),t=r.slice(Oe(e));if(t.length!==e)throw new Error("inconsistent lengths");return H(t,"base58btc")}function mq(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=Jt.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 i=bx(n);return Ve([t,i],t.length+i.length)}function gq(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=Jt.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 i=bx(n);return Ve([t,i],t.length+i.length)}function QT(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=H(e,"base32"),i=ZT(t);return`${n}:${i}`}function JT(r){r=vx(r);let e=[],t=[],n=null,i=r.split("/").slice(1);if(i.length===1&&i[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let o=0;o<i.length;o++){let s=i[o],a=Ie(s);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(o++,o>=i.length)throw new Jg("invalid address: "+r);if(a.path===!0){n=vx(i.slice(o).join("/")),e.push([a.code,wx(a.code,n)]),t.push([a.code,n]);break}let c=wx(a.code,i[o]);e.push([a.code,c]),t.push([a.code,yx(a.code,c)])}return{string:eC(t),bytes:e2(e),tuples:e,stringTuples:t,path:n}}function Ex(r){let e=[],t=[],n=null,i=0;for(;i<r.length;){let o=Zt(r,i),s=Oe(o),a=Ie(o),c=yq(a,r.slice(i+s));if(c===0){e.push([o]),t.push([o]),i+=s;continue}let l=r.slice(i+s,i+s+c);if(i+=c+s,i>r.length)throw new Jg("Invalid address Uint8Array: "+H(r,"base16"));e.push([o,l]);let u=yx(o,l);if(t.push([o,u]),a.path===!0){n=u;break}}return{bytes:Uint8Array.from(r),string:eC(t),tuples:e,stringTuples:t,path:n}}function eC(r){let e=[];return r.map(t=>{let n=Ie(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),vx(e.join("/"))}function e2(r){return Ve(r.map(e=>{let t=Ie(e[0]),n=Uint8Array.from(ht(t.code));return e.length>1&&e[1]!=null&&(n=Ve([n,e[1]])),n}))}function yq(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=Zt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Oe(t)}}function vx(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}var Jg=class extends Error{static name="ParseError";name="ParseError";constructor(e){super(`Error parsing address: ${e}`)}};var wq=Symbol.for("nodejs.util.inspect.custom"),Ax=Symbol.for("@multiformats/js-multiaddr/multiaddr"),xq=[Ie("dns").code,Ie("dns4").code,Ie("dns6").code,Ie("dnsaddr").code],Sx=class extends Error{constructor(e="No available resolver"){super(e),this.name="NoAvailableResolverError"}},t2=class r{bytes;#e;#r;#n;#m;[Ax]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Ex(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=JT(e)}else if(ka(e))t=Ex(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#r=t.tuples,this.#n=t.stringTuples,this.#m=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,i,o="",s=Ie("tcp"),a=Ie("udp"),c=Ie("ip4"),l=Ie("ip6"),u=Ie("dns6"),f=Ie("ip6zone");for(let[d,m]of this.stringTuples())d===f.code&&(o=`%${m??""}`),xq.includes(d)&&(t=s.name==="tcp"?"tcp":"udp",i=443,n=`${m??""}${o}`,e=d===u.code?6:4),(d===s.code||d===a.code)&&(t=Ie(d).name==="tcp"?"tcp":"udp",i=parseInt(m??"")),(d===c.code||d===l.code)&&(t=Ie(d).name==="tcp"?"tcp":"udp",n=`${m??""}${o}`,e=d===l.code?6:4);if(e==null||t==null||n==null||i==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:i}}protos(){return this.#r.map(([e])=>Object.assign({},Ie(e)))}protoCodes(){return this.#r.map(([e])=>e)}protoNames(){return this.#r.map(([e])=>Ie(e).name)}tuples(){return this.#r.map(([e,t])=>t==null?[e]:[e,t])}stringTuples(){return this.#n.map(([e,t])=>t==null?[e]:[e,t])}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),i=n.lastIndexOf(t);if(i<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,i))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(e2(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,i])=>{n===Rf.p2p.code&&e.push([n,i]),n===Rf["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?H(Le.decode(`z${n}`),"base58btc"):H(W.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#m}equals(e){return pe(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(o=>o.resolvable);if(t==null)return[this];let n=Df.get(t.name);if(n==null)throw new Sx(`no available resolver for ${t.name}`);return(await n(this,e)).map(o=>se(o))}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)}[wq](){return`Multiaddr(${this.#e})`}};var Df=new Map;function ka(r){return!!r?.[Ax]}function se(r){return new t2(r)}var bq=[Ie("tcp").code,Ie("dns").code,Ie("dnsaddr").code,Ie("dns4").code,Ie("dns6").code];function tC(r){return iC("sni",r)?.[1]}function rC(r){let e=iC("tcp",r)?.[1];return e==null?"":`:${e}`}function iC(r,e){let t;try{t=Ie(r).code}catch{return}for(let[n,i]of e)if(n===t&&i!=null)return[n,i]}function nC(r){return r.some(([e,t])=>e===Ie("tls").code)}function uo(r,e,t){let n=oC[Ie(r).name];if(n==null)throw new Error(`Can't interpret protocol ${Ie(r).name}`);let i=n(e,t);return r===Ie("ip6").code?`[${i}]`:i}var oC={ip4:(r,e)=>r,ip6:(r,e)=>e.length===0?r:`[${r}]`,tcp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`tcp://${uo(t[0],t[1]??"",e)}:${r}`},udp:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`udp://${uo(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==null)throw new Error("Unexpected end of multiaddr");return`${uo(t[0],t[1]??"",e)}`},p2p:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return`${uo(t[0],t[1]??"",e)}`},http:(r,e)=>{let t=nC(e),n=tC(e),i=rC(e);if(t&&n!=null)return`https://${n}${i}`;let o=t?"https://":"http://",s=e.pop();if(s==null)throw new Error("Unexpected end of multiaddr");let a=uo(s[0],s[1]??"",e);return a=a.replace("tcp://",""),`${o}${a}`},"http-path":(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e),i=decodeURIComponent(r);return`${n}/${i}`},tls:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return uo(t[0],t[1]??"",e)},sni:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");return uo(t[0],t[1]??"",e)},https:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`https://${n}`},ws:(r,e)=>{let t=nC(e),n=tC(e),i=rC(e);if(t&&n!=null)return`wss://${n}${i}`;let o=t?"wss://":"ws://",s=e.pop();if(s==null)throw new Error("Unexpected end of multiaddr");let a=uo(s[0],s[1]??"",e);return a=a.replace("tcp://",""),`${o}${a}`},wss:(r,e)=>{let t=e.pop();if(t==null)throw new Error("Unexpected end of multiaddr");let n=uo(t[0],t[1]??"",e);return n=n.replace("tcp://",""),`wss://${n}`}};function r2(r,e){let n=se(r).stringTuples(),i=n.pop();if(i==null)throw new Error("Unexpected end of multiaddr");let o=Ie(i[0]),s=oC[o.name];if(s==null)throw new Error(`No interpreter found for ${o.name}`);let a=s(i[1]??"",n);return e?.assumeHttp!==!1&&bq.includes(i[0])&&(a=a.replace(/^.*:\/\//,""),i[1]==="443"?a=`https://${a}`:a=`http://${a}`),(a.startsWith("http://")||a.startsWith("https://")||a.startsWith("ws://")||a.startsWith("wss://"))&&(a=new URL(a).toString(),a.endsWith("/")&&(a=a.substring(0,a.length-1))),a}var n2=class{url;#e=0;#r=0;#n=0;#m=0;#u=new Map;log;transformRequestInit;constructor(e,{logger:t,transformRequestInit:n}){this.url=e instanceof URL?e:new URL(e),this.transformRequestInit=n,this.log=t.forComponent(`helia:trustless-gateway-block-broker:${this.url.hostname}`)}#A(e){let t=e.multihash.bytes;return ar.encode(t)}async getRawBlock(e,t){let n=new URL(this.url.toString());if(n.pathname=`/ipfs/${e.toString()}`,n.search="?format=raw",t?.aborted===!0)throw new Error(`Signal to fetch raw block for CID ${e} from gateway ${this.url} was aborted prior to fetch`);let i=this.#A(e),o=new AbortController,s=()=>{o.abort()};t?.addEventListener("abort",s);try{let a=this.#u.get(i);if(a==null){this.#e++;let c={signal:o.signal,headers:{Accept:"application/vnd.ipld.raw"},cache:"force-cache"},l=this.transformRequestInit!=null?await this.transformRequestInit(c):c;a=fetch(n.toString(),l).then(async u=>{if(this.log("GET %s %d",n,u.status),!u.ok)throw this.#r++,new Error(`unable to fetch raw block for CID ${e} from gateway ${this.url}`);return this.#m++,new Uint8Array(await u.arrayBuffer())}),this.#u.set(i,a)}return await a}catch{throw t?.aborted===!0?new Error(`fetching raw block for CID ${e} from gateway ${this.url} was aborted`):(this.#r++,new Error(`unable to fetch raw block for CID ${e}`))}finally{t?.removeEventListener("abort",s),this.#u.delete(i)}}reliability(){return this.#e===0?1:this.#n>0?-1/0:this.#m/(this.#e+this.#r*3)}incrementInvalidBlocks(){this.#n++}getStats(){return{attempts:this.#e,errors:this.#r,invalidBlocks:this.#n,successes:this.#m,pendingResponses:this.#u.size}}};function vq(r,e,t){return r.filter(n=>{if(HT.matches(n)||e&&$T.matches(n))return t||wp.matches(n)?!0:bn(n.toOptions().host)===!1;if(!e&&t){let{host:i}=n.toOptions();if(i==="127.0.0.1"||i==="localhost"||i.endsWith(".localhost"))return!0}return!1})}async function*i2(r,e,t,n,i,o={}){for await(let s of e.findProviders(r,o)){let a=vq(s.multiaddrs,n,i);if(a.length===0)continue;let c=r2(a[0]);yield new n2(c,{logger:t,transformRequestInit:o.transformRequestInit})}}var _x=class extends ul{routing;allowInsecure;allowLocal;transformRequestInit;constructor(e,t){super(e,{...t,name:"helia:trustless-gateway:session"}),this.routing=e.routing,this.allowInsecure=t.allowInsecure??o2,this.allowLocal=t.allowLocal??s2,this.transformRequestInit=t.transformRequestInit}async queryProvider(e,t,n){this.log("fetching BLOCK for %c from %s",e,t.url);let i=await t.getRawBlock(e,n.signal);return this.log.trace("got block for %c from %s",e,t.url),await n.validateFn?.(i),i}async*findNewProviders(e,t={}){yield*i2(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})}toEvictionKey(e){return e.url.toString()}equals(e,t){return e.url.toString()===t.url.toString()}};function sC(r,e){return new _x(r,e)}var a2=class{allowInsecure;allowLocal;transformRequestInit;routing;log;logger;constructor(e,t={}){this.log=e.logger.forComponent("helia:trustless-gateway-block-broker"),this.logger=e.logger,this.routing=e.routing,this.allowInsecure=t.allowInsecure??o2,this.allowLocal=t.allowLocal??s2,this.transformRequestInit=t.transformRequestInit}async retrieve(e,t={}){let n=[];for await(let i of i2(e,this.routing,this.logger,this.allowInsecure,this.allowLocal,{...t,transformRequestInit:this.transformRequestInit})){this.log("getting block for %c from %s",e,i.url);try{let o=await i.getRawBlock(e,t.signal);this.log.trace("got block for %c from %s",e,i.url);try{await t.validateFn?.(o)}catch(s){this.log.error("failed to validate block for %c from %s",e,i.url,s);continue}return o}catch(o){if(this.log.error("failed to get block for %c from %s",e,i.url,o),o instanceof Error?n.push(o):n.push(new Error(`Unable to fetch raw block for CID ${e} from gateway ${i.url}`)),t.signal?.aborted===!0){this.log.trace("request aborted while fetching raw block for CID %c from gateway %s",e,i.url);break}}}throw n.length>0?new AggregateError(n,`Unable to fetch raw block for CID ${e} from any gateway`):new Error(`Unable to fetch raw block for CID ${e} from any gateway`)}createSession(e={}){return sC({logger:this.logger,routing:this.routing},{...e,allowLocal:this.allowLocal,allowInsecure:this.allowInsecure,transformRequestInit:this.transformRequestInit})}};var o2=!1,s2=!1;function Sp(r={}){return e=>new a2(e,r)}async function*c2(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 dC=it(l2(),1);var u2=class extends Error{static name="SignatureCreationError";constructor(e="Record signature creation failed"){super(e),this.name="SignatureCreationError"}},fo=class extends Error{static name="SignatureVerificationError";constructor(e="Record signature verification failed"){super(e),this.name="SignatureVerificationError"}},f2=class extends Error{static name="RecordExpiredError";constructor(e="Record has expired"){super(e),this.name="RecordExpiredError"}},wl=class extends Error{static name="UnsupportedValidityError";constructor(e="The validity type is unsupported"){super(e),this.name="UnsupportedValidityError"}},d2=class extends Error{static name="RecordTooLargeError";constructor(e="The record is too large"){super(e),this.name="RecordTooLargeError"}},Ap=class extends Error{static name="InvalidValueError";constructor(e="Value must be a valid content path starting with /"){super(e),this.name="InvalidValueError"}},h2=class extends Error{static name="InvalidRecordDataError";constructor(e="Invalid record data"){super(e),this.name="InvalidRecordDataError"}},_p=class extends Error{static name="InvalidEmbeddedPublicKeyError";constructor(e="Invalid embedded public key"){super(e),this.name="InvalidEmbeddedPublicKeyError"}};var Dr;(function(r){let e;(function(i){i.EOL="EOL"})(e=r.ValidityType||(r.ValidityType={}));let t;(function(i){i[i.EOL=0]="EOL"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.ValidityType||(r.ValidityType={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.value!=null&&(o.uint32(10),o.bytes(i.value)),i.signatureV1!=null&&(o.uint32(18),o.bytes(i.signatureV1)),i.validityType!=null&&(o.uint32(24),r.ValidityType.codec().encode(i.validityType,o)),i.validity!=null&&(o.uint32(34),o.bytes(i.validity)),i.sequence!=null&&(o.uint32(40),o.uint64(i.sequence)),i.ttl!=null&&(o.uint32(48),o.uint64(i.ttl)),i.pubKey!=null&&(o.uint32(58),o.bytes(i.pubKey)),i.signatureV2!=null&&(o.uint32(66),o.bytes(i.signatureV2)),i.data!=null&&(o.uint32(74),o.bytes(i.data)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.value=i.bytes();break}case 2:{a.signatureV1=i.bytes();break}case 3:{a.validityType=r.ValidityType.codec().decode(i);break}case 4:{a.validity=i.bytes();break}case 5:{a.sequence=i.uint64();break}case 6:{a.ttl=i.uint64();break}case 7:{a.pubKey=i.bytes();break}case 8:{a.signatureV2=i.bytes();break}case 9:{a.data=i.bytes();break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(Dr||(Dr={}));var Eq=ze("ipns:utils"),aC=O("/ipns/"),Sq=114,Aq=0,_q=18;function Ip(r){let e;if(r.pubKey!=null)try{e=tr(r.pubKey)}catch(t){throw Eq.error(t),t}if(e!=null)return e}function cC(r,e,t){let n=O(e);return Ve([r,t,n])}function m2(r){let e=O("ipns-signature:");return Ve([e,r])}function Pa(r){return"signatureV1"in r?Dr.encode({value:O(r.value),signatureV1:r.signatureV1,validityType:r.validityType,validity:O(r.validity),sequence:r.sequence,ttl:r.ttl,pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data}):Dr.encode({pubKey:r.pubKey,signatureV2:r.signatureV2,data:r.data})}function Dn(r){let e=Dr.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 new fo("Missing data or signatureV2");let t=uC(e.data),n=Iq(t.Value),i=H(t.Validity);if(e.value!=null&&e.signatureV1!=null)return Tq(e),{value:n,validityType:Dr.ValidityType.EOL,validity:i,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:Dr.ValidityType.EOL,validity:i,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")}function ks(r){return Ve([aC,r.bytes])}function Nf(r){let e=Ue(r.slice(aC.length));if(!p2(e,Aq)&&!p2(e,_q))throw new aa("Multihash in IPNS key was not identity or sha2-256");return e}function lC(r,e,t,n,i){let o;if(e===Dr.ValidityType.EOL)o=0;else throw new wl("The validity type is unsupported");return As({Value:r,Validity:t,ValidityType:o,Sequence:n,TTL:i})}function uC(r){let e=xn(r);if(e.ValidityType===0)e.ValidityType=Dr.ValidityType.EOL;else throw new wl("The validity type is unsupported");return Number.isInteger(e.Sequence)&&(e.Sequence=BigInt(e.Sequence)),Number.isInteger(e.TTL)&&(e.TTL=BigInt(e.TTL)),e}function Iq(r){let e=H(r).trim();if(e.startsWith("/"))return e;try{return`/ipfs/${W.decode(r).toV1().toString()}`}catch{}try{return`/ipfs/${W.parse(e).toV1().toString()}`}catch{}throw new Ap("Value must be a valid content path starting with /")}function fC(r){if(r!=null){let e=Pq(r);if(e!=null)return e.code===Sq?`/ipns/${e.toString(fn)}`:`/ipfs/${e.toV1().toString()}`;if(Cq(r))return`/ipns/${fn.encode(r.bytes)}`;let t=r.toString().trim();if(t.startsWith("/")&&t.length>1)return t}throw new Ap("Value must be a valid content path starting with /")}function Tq(r){if(r.data==null)throw new h2("Record data is missing");let e=uC(r.data);if(!pe(e.Value,r.value??new Uint8Array(0)))throw new fo('Field "value" did not match between protobuf and CBOR');if(!pe(e.Validity,r.validity??new Uint8Array(0)))throw new fo('Field "validity" did not match between protobuf and CBOR');if(e.ValidityType!==r.validityType)throw new fo('Field "validityType" did not match between protobuf and CBOR');if(e.Sequence!==r.sequence)throw new fo('Field "sequence" did not match between protobuf and CBOR');if(e.TTL!==r.ttl)throw new fo('Field "ttl" did not match between protobuf and CBOR')}function Cq(r){return r.bytes instanceof Uint8Array}function kq(r){return typeof r?.toCID=="function"}function Pq(r){if(kq(r))return r.toCID();try{return W.parse(r)}catch{}return W.asCID(r)}function p2(r,e){return r.code===e}var Rq=ze("ipns"),hC=5*60*1e9,Dq="/ipns/",Ome=Dq.length,pC={v1Compatible:!0,ttlNs:hC};async function mC(r,e,t,n,i=pC){let o=new dC.default(Date.now()+Number(n)),s=Dr.ValidityType.EOL,a=BigInt(i.ttlNs??hC);return Nq(r,e,t,s,o.toString(),a,i)}var Nq=async(r,e,t,n,i,o,s=pC)=>{t=BigInt(t);let a=O(i),c=fC(e),l=O(c),u=lC(l,n,a,t,o),f=m2(u),h=await r.sign(f),d;if(r.type==="RSA"&&(d=lr(r.publicKey)),s.v1Compatible===!0){let m=await Oq(r,l,n,a),g={value:c,signatureV1:m,validity:i,validityType:n,sequence:t,ttl:o,signatureV2:h,data:u};return d!=null&&(g.pubKey=d),g}else{let m={value:c,validity:i,validityType:n,sequence:t,ttl:o,signatureV2:h,data:u};return d!=null&&(m.pubKey=d),m}},Oq=async(r,e,t,n)=>{try{let i=cC(e,t,n);return await r.sign(i)}catch(i){throw Rq.error("record signature creation failed",i),new u2("Record signature creation failed")}};var gC=it(l2(),1);var g2=ze("ipns:validator"),Lq=1024*10,Bq=async(r,e)=>{let t=Dn(e),n;try{let i=m2(t.data);n=await r.verify(i,t.signatureV2)}catch{n=!1}if(!n)throw g2.error("record signature verification failed"),new fo("Record signature verification failed");if(t.validityType===Dr.ValidityType.EOL){if(gC.default.fromString(t.validity).toDate().getTime()<Date.now())throw g2.error("record has expired"),new f2("record has expired")}else if(t.validityType!=null)throw g2.error("the validity type is unsupported"),new wl("The validity type is unsupported");g2("ipns record for %s is valid",t.value)};async function Ra(r,e){if(e.byteLength>Lq)throw new d2("The record is too large");let t=Nf(r),n;p2(t,0)&&(n=W0(t));let i=Dn(e),o=Ip(i)??n;if(o==null)throw new _p("Could not extract public key from IPNS record or routing key");let s=ks(o.toMultihash());if(!pe(s,r))throw new _p("Embedded public key did not match routing key");await Bq(o,e)}var y2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MESSAGE_LENGTH"};async function*Tp(r,e={}){let t=/\r?\n/,n=new TextDecoder("utf8"),i="";for await(let o of r){if(typeof o=="string"&&(o=new TextEncoder().encode(o)),vi(o)&&(o=o.subarray()),i+=n.decode(o,{stream:!0}),i.length>(e?.maxMessageLength??i.length))throw new y2("Incoming message too long");let s=i.split(t);i=s.pop()??"";for(let a=0;a<s.length;a++)yield JSON.parse(s[a])}i+=n.decode(),i!==""&&(yield JSON.parse(i))}var Of=class extends Error{static name="InvalidRequestError";constructor(e="Invalid request"){super(e),this.name="InvalidRequestError"}},ho=class extends Error{static name="BadResponseError";constructor(e="Bad response"){super(e),this.name="BadResponseError"}};function Mq(r){return r[Symbol.asyncIterator]!=null}function Uq(r){if(Mq(r))return(async()=>{for await(let e of r)return e})();for(let e of r)return e}var Lf=Uq;var yC=O("/ipns/");function wC(r){return pe(r.subarray(0,yC.byteLength),yC)}var w2=class{client;constructor(e){this.client=e}async*findProviders(e,t={}){yield*Nt(this.client.getProviders(e,t),n=>({id:n.ID,multiaddrs:n.Addrs??[]}))}async provide(){}async cancelReprovide(){}async put(e,t,n){if(!wC(e))return;let i=Nf(e),o=W.createV1(114,i),s=Dn(t);await this.client.putIPNS(o,s,n)}async get(e,t){if(!wC(e))throw new We("Not found");let n=Nf(e),i=W.createV1(114,n);try{let o=await this.client.getIPNS(i,t);return Pa(o)}catch(o){throw o.name==="BadResponseError"?new We("Not found"):o}}},x2=class{client;constructor(e){this.client=e}async findPeer(e,t={}){let n=await Lf(this.client.getPeers(e,t));if(n!=null)return{id:n.ID,multiaddrs:n.Addrs??[]};throw new We("Not found")}async*getClosestPeers(e,t={}){}};var Nr=ze("delegated-routing-v1-http-api-client"),b2={concurrentRequests:4,timeout:3e4,cacheTTL:5*60*1e3,cacheName:"delegated-routing-v1-cache"},v2=class{started;httpQueue;shutDownController;clientUrl;timeout;contentRouting;peerRouting;filterAddrs;filterProtocols;inFlightRequests;cacheName;cache;cacheTTL;constructor(e,t={}){this.started=!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.httpQueue=new kn({concurrency:t.concurrentRequests??b2.concurrentRequests}),this.inFlightRequests=new Map,this.clientUrl=e instanceof URL?e:new URL(e),this.timeout=t.timeout??b2.timeout,this.filterAddrs=t.filterAddrs,this.filterProtocols=t.filterProtocols,this.contentRouting=new w2(this),this.peerRouting=new x2(this),this.cacheName=t.cacheName??b2.cacheName,this.cacheTTL=t.cacheTTL??b2.cacheTTL}get[Do](){return this.contentRouting}get[No](){return this.peerRouting}isStarted(){return this.started}async start(){this.started||(this.started=!0,this.cacheTTL>0&&(this.cache=await globalThis.caches?.open(this.cacheName),this.cache!=null&&Nr("cache enabled with ttl %d",this.cacheTTL)))}async stop(){this.httpQueue.clear(),this.shutDownController.abort(),await globalThis.caches?.delete(this.cacheName),this.started=!1}async*getProviders(e,t={}){Nr("getProviders starts: %c",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let a=new URL(`${this.clientUrl}routing/v1/providers/${e.toString()}`);this.#r(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:i},l=await this.#n(a.toString(),c);if(l==null)throw new ho("No response received");if(!l.ok)throw l.status===404?new We("No matching records found"):l.status===422?new Of("Request does not conform to schema or semantic constraints"):new ho(`Unexpected status code: ${l.status}`);if(l.body==null)throw new ho("Routing response had no body");let u=l.headers.get("Content-Type");if(u==null)throw new ho("No Content-Type header received");if(u?.startsWith("application/json")){let f=await l.json();for(let h of f.Providers){let d=this.#e(h);d!=null&&(yield d)}}else if(u.includes("application/x-ndjson"))for await(let f of Tp(c2(l.body))){let h=this.#e(f);h!=null&&(yield h)}else throw new ho(`Unsupported Content-Type: ${u}`)}finally{i.clear(),s.resolve(),Nr("getProviders finished: %c",e)}}async*getPeers(e,t={}){Nr("getPeers starts: %c",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));try{await o.promise;let a=new URL(`${this.clientUrl}routing/v1/peers/${e.toCID().toString()}`);this.#r(a,t.filterAddrs,t.filterProtocols);let c={headers:{Accept:"application/x-ndjson"},signal:i},l=await this.#n(a.toString(),c);if(l.status===404)throw new We("No matching records found");if(l.status===422)throw new Of("Request does not conform to schema or semantic constraints");if(l.body==null)throw new ho("Routing response had no body");if(l.headers.get("Content-Type")==="application/json"){let f=await l.json();for(let h of f.Peers){let d=this.#e(h);d!=null&&(yield d)}}else for await(let f of Tp(c2(l.body))){let h=this.#e(f);h!=null&&(yield h)}}catch(a){Nr.error("getPeers errored:",a)}finally{i.clear(),s.resolve(),Nr("getPeers finished: %c",e)}}async getIPNS(e,t={}){Nr("getIPNS starts: %s",e);let n=AbortSignal.timeout(this.timeout),i=Ne([this.shutDownController.signal,n,t.signal]);let o=ye(),s=ye();this.httpQueue.add(async()=>(o.resolve(),s.promise));let a=`${this.clientUrl}routing/v1/ipns/${e}`;try{await o.promise;let c={headers:{Accept:"application/vnd.ipfs.ipns-record"},signal:i},l=await this.#n(a,c);if(Nr("getIPNS GET %s %d",a,l.status),l.status===404)throw new We("No matching records found");if(l.status===422)throw new Of("Request does not conform to schema or semantic constraints");if(l.body==null)throw new ho("GET ipns response had no body");let u=await l.arrayBuffer(),f=new Uint8Array(u,0,u.byteLength);return t.validate!==!1&&await Ra(ks(e.multihash),f),Dn(f)}catch(c){throw Nr.error("getIPNS GET %s error:",a,c),c}finally{i.clear(),s.resolve(),Nr("getIPNS finished: %s",e)}}async putIPNS(e,t,n={}){Nr("putIPNS starts: %c",e);let i=AbortSignal.timeout(this.timeout),o=Ne([this.shutDownController.signal,i,n.signal]);let s=ye(),a=ye();this.httpQueue.add(async()=>(s.resolve(),a.promise));let c=`${this.clientUrl}routing/v1/ipns/${e}`;try{await s.promise;let l=Pa(t),u={method:"PUT",headers:{"Content-Type":"application/vnd.ipfs.ipns-record"},body:l,signal:o},f=await this.#n(c,u);if(Nr("putIPNS PUT %s %d",c,f.status),f.status!==200)throw new ho("PUT ipns response had status other than 200")}catch(l){throw Nr.error("putIPNS PUT %s error:",c,l.stack),l}finally{o.clear(),a.resolve(),Nr("putIPNS finished: %c",e)}}#e(e){try{let t=[],n=e.Addrs?.map(se)??[];return e.Protocols!=null&&t.push(...e.Protocols),e.Protocol!=null&&(t.push(e.Protocol),delete e.Protocol),{...e,Schema:"peer",ID:at(e.ID),Addrs:n,Protocols:t}}catch(t){Nr.error("could not conform record to peer schema",t)}}#r(e,t,n){if(t!=null||this.filterAddrs!=null){let i=t?.join(",")??this.filterAddrs?.join(",")??"";i!==""&&e.searchParams.set("filter-addrs",i)}if(n!=null||this.filterProtocols!=null){let i=n?.join(",")??this.filterProtocols?.join(",")??"";i!==""&&e.searchParams.set("filter-protocols",i)}}async#n(e,t){let n=t.method??"GET",i=`${n}-${e}`;if(n==="GET"){let c=await this.cache?.match(e);if(c!=null){if(parseInt(c.headers.get("x-cache-expires")??"0",10)>Date.now())return Nr("returning cached response for %s",i),c;await this.cache?.delete(e)}}let o=this.inFlightRequests.get(i);if(o!=null){let c=await o;return Nr("deduplicating outgoing request for %s",i),c.clone()}let s=fetch(e,t).then(async c=>{if(this.cache!=null&&c.ok&&n==="GET"){let l=Date.now()+this.cacheTTL,u=new Headers(c.headers);u.set("x-cache-expires",l.toString());let f=new Response(c.clone().body,{status:c.status,statusText:c.statusText,headers:u});await this.cache.put(e,f)}return c}).finally(()=>{this.inFlightRequests.delete(i)});return this.inFlightRequests.set(i,s),await s}};function E2(r,e={}){return new v2(new URL(r),e)}var Tx=it(l2(),1);function S2(r,e){let t=e.map((n,i)=>({record:Dn(n),index:i}));return t.sort((n,i)=>{let o=n.record.sequence,s=i.record.sequence;if(o>s)return-1;if(o<s)return 1;if(n.record.validityType===Dr.ValidityType.EOL&&i.record.validityType===Dr.ValidityType.EOL){let a=Tx.default.fromString(n.record.validity).toDate(),c=Tx.default.fromString(i.record.validity).toDate();if(a.getTime()>c.getTime())return-1;if(a.getTime()<c.getTime())return 1}return 0}),t[0].index}var A2=class extends Error{static name="DNSLinkNotFoundError";constructor(e="DNSLink not found"){super(e),this.name="DNSLinkNotFoundError"}},_2=class extends Error{static name="RecordsFailedValidationError";constructor(e="Records failed validation"){super(e),this.name="RecordsFailedValidationError"}},I2=class extends Error{static name="UnsupportedMultibasePrefixError";constructor(e="Unsupported multibase prefix"){super(e),this.name="UnsupportedMultibasePrefixError"}},T2=class extends Error{static name="UnsupportedMultihashCodecError";constructor(e="Unsupported multihash codec"){super(e),this.name="UnsupportedMultihashCodecError"}},C2=class extends Error{static name="InvalidValueError";constructor(e="Invalid value"){super(e),this.name="InvalidValueError"}};var Fq=32;async function xC(r,e,t,n,i={}){if(e===0)throw new Error("recursion limit exceeded");n("query %s for TXT and CNAME records",r);let s=((await t.query(r,{...i,types:[rn.TXT]}))?.Answer??[]).sort((l,u)=>l.data.localeCompare(u.data));n("found %d TXT records for %s",s.length,r);for(let l of s)try{let u=l.data;if(u.startsWith('"')&&u.endsWith('"')&&(u=u.substring(1,u.length-1)),!u.startsWith("dnslink="))continue;n("%s TXT %s",l.name,u),u=u.replace("dnslink=","");let[,f,h,...d]=u.split("/");if(f==="ipfs")try{return{value:`/ipfs/${W.parse(h)}${d.length>0?`/${d.join("/")}`:""}`,answer:l}}catch{}else if(f==="ipns"){try{let m;return h.charAt(0)==="1"||h.charAt(0)==="Q"?m=at(h):m=gn(W.parse(h)),{value:`/ipns/${m}${d.length>0?`/${d.join("/")}`:""}`,answer:l}}catch{}return await k2(h,e-1,t,n,i)}else{if(f==="dnslink")return await k2(h,e-1,t,n,i);n('unknown protocol "%s" in DNSLink record for domain: %s',f,r);continue}}catch(u){n.error("could not parse DNS link record for domain %s, %s",r,l.data,u)}n("no DNSLink records found for %s, falling back to CNAME",r);let c=((await t.query(r,{...i,types:[rn.CNAME]}))?.Answer??[]).sort((l,u)=>l.data.localeCompare(u.data));n("found %d CNAME records for %s",c.length,r);for(let l of c)try{return await k2(l.data,e-1,t,n,i)}catch(u){n.error("domain %s cname %s had no DNSLink records",r,l.data,u)}throw new A2(`No DNSLink records found for domain: ${r}`)}async function k2(r,e,t,n,i={}){if(e===0)throw new Error("recursion limit exceeded");r.startsWith("_dnslink.")||(r=`_dnslink.${r}`);try{return await xC(r,e,t,n,i)}catch(o){if(o.code!=="ENOTFOUND"&&o.code!=="ENODATA"&&o.name!=="DNSLinkNotFoundError"&&o.name!=="NotFoundError")throw o;return r.startsWith("_dnslink.")?r=r.replace("_dnslink.",""):r=`_dnslink.${r}`,xC(r,e,t,n,i)}}async function bC(r,e,t,n={}){return k2(r,n.maxRecursiveDepth??Fq,e,t,n)}var Cx=class{routing;constructor(e){this.routing=e}async put(e,t,n={}){try{await this.routing.put(e,t,n)}catch(i){n.onProgress?.(new G("ipns:routing:helia:error",i))}}async get(e,t={}){try{return await this.routing.get(e,t)}catch(n){t.onProgress?.(new G("ipns:routing:helia:error",n))}throw new Error("Not found")}};function vC(r){return new Cx(r)}var Cp;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={key:Pe(0),value:Pe(0),timeReceived:""},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Cp||(Cp={}));function EC(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),i=String(r.getUTCHours()).padStart(2,"0"),o=String(r.getUTCMinutes()).padStart(2,"0"),s=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${i}:${o}:${s}.${c}Z`}function SC(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),i=parseInt(t[2],10)-1,o=parseInt(t[3],10),s=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,i,o,s,a,c,l))}var kt=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 Cp.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:EC(this.timeReceived)}}static deserialize(e){let t=Cp.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=SC(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};var P2=globalThis.CustomEvent??Event;async function*Or(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,i=new EventTarget,o=[],s=ye(),a=ye(),c=!1,l,u=!1;i.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let m of r){if(o.length===t&&(s=ye(),await s.promise),u)break;let g={done:!1};o.push(g),m().then(w=>{g.done=!0,g.ok=!0,g.value=w,i.dispatchEvent(new P2("task-complete"))},w=>{g.done=!0,g.err=w,i.dispatchEvent(new P2("task-complete"))})}c=!0,i.dispatchEvent(new P2("task-complete"))}catch(m){l=m,i.dispatchEvent(new P2("task-complete"))}});function f(){return n?o[0]?.done:!!o.find(m=>m.done)}function*h(){for(;o.length>0&&o[0].done;){let m=o[0];if(o.shift(),m.ok)yield m.value;else throw u=!0,s.resolve(),m.err;s.resolve()}}function*d(){for(;f();)for(let m=0;m<o.length;m++)if(o[m].done){let g=o[m];if(o.splice(m,1),m--,g.ok)yield g.value;else throw u=!0,s.resolve(),g.err;s.resolve()}}for(;;){if(f()||(a=ye(),await a.promise),l!=null||(n?yield*h():yield*d(),l!=null))throw l;if(c&&o.length===0)break}}var Bf=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),i=e-this.movingAverage,o=n*i;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+i*o),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*i}else this.movingAverage=e;this.previousTime=t}};var Hq=1.2,Vq=2,zq=2e3,po=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;constructor(e={}){this.success=new Bf(e.interval??5e3),this.failure=new Bf(e.interval??5e3),this.next=new Bf(e.interval??5e3),this.failureMultiplier=e.failureMultiplier??Vq,this.timeoutMultiplier=e.timeoutMultiplier??Hq,this.minTimeout=e.minTimeout??zq,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.max(Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier)),this.minTimeout),n=AbortSignal.timeout(t),i=Ne([e.signal,n]);return i.start=Date.now(),i.timeout=t,i}cleanUp(e){let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var kx=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=ye(),this.haveNext=ye()}[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=ye(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ye(),await Dt(this.readNext.promise,t?.signal,t)}};function AC(){return new kx}var R2=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};var Px=class extends Error{code;constructor(e,t){super(e),this.code=t}},Rx=class extends Px{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted",this.name="AbortError"}};function _C(r,e){let t=AC();r.sink(t).catch(async s=>{await t.end(s)}),r.sink=async s=>{for await(let a of s)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 i=new oe;return{read:async(s,a)=>{a?.signal?.throwIfAborted();let c,l=new Promise((u,f)=>{c=()=>{f(new Rx("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(s==null){let{done:f,value:h}=await Promise.race([n.next(),l]);return f===!0?new oe:h}for(;i.byteLength<s;){let{value:f,done:h}=await Promise.race([n.next(),l]);if(h===!0)throw new R2("unexpected end of input");i.append(f)}let u=i.sublist(0,s);return i.consume(s),u}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(s,a)=>{a?.signal?.throwIfAborted(),s instanceof Uint8Array?await t.push(s,a):await t.push(s.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let s=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*s}()}return r}}}var D2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},N2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},O2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function IC(r,e={}){let t=_C(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read(1,s));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new D2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new O2("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new N2("message length too long");return t.read(a,s)},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Nn(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=$t(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function Da(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}function Kq(r){return r[Symbol.asyncIterator]!=null}function qq(r){if(Kq(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 L2=qq;var jq=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 Wq(r,e,t){let n,i=new Promise((o,s)=>{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:u}=jq(r),f=(...d)=>{let m=t.multiArgs?d:d[0];t.filter&&!t.filter(m)||(c.push(m),t.count===c.length&&(n(),o(c)))},h=d=>{n(),s(d)};n=()=>{for(let d of a)u(d,f);for(let d of t.rejectionEvents)u(d,h)};for(let d of a)l(d,f);for(let d of t.rejectionEvents)l(d,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&o(c)});if(i.cancel=n,typeof t.timeout=="number"){let o=io(i,{milliseconds:t.timeout});return o.cancel=n,o}return i}function TC(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=Wq(r,e,t),i=n.then(o=>o[0]);return i.cancel=n.cancel,i}function Xq(r){return r[Symbol.asyncIterator]!=null}function Yq(r){if(Xq(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 Ps=Yq;var CC;(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"})(CC||(CC={}));function B2(r){return new nt("/dht/record/"+H(r,"base32"),!1)}function kC(r){return{async put(e,t,n={}){try{let i=B2(e);try{let s=await r.get(i),a=kt.deserialize(s);if(pe(a.value,t))return}catch(s){if(s.name!=="NotFoundError")throw s}let o=new kt(e,t,new Date);n.onProgress?.(new G("ipns:routing:datastore:put")),await r.put(i,o.serialize(),n)}catch(i){throw n.onProgress?.(new G("ipns:routing:datastore:error",i)),i}},async get(e,t={}){try{let n=B2(e);t.onProgress?.(new G("ipns:routing:datastore:get"));let i=await r.get(n,t),o=kt.deserialize(i);return{record:o.value,created:o.timeReceived}}catch(n){throw t.onProgress?.(new G("ipns:routing:datastore:error",n)),n}},async has(e,t={}){let n=B2(e);return r.has(n,t)},async delete(e,t){let n=B2(e);return r.delete(n,t)}}}var Dx="/ipns/";function Nx(r,e){return r.code===e}var Rs=ze("helia:ipns"),DC=60*1e3,NC=60*DC,Jq=48*NC,Ox=23*NC,PC=BigInt(DC)*5000000n,RC={[fn.prefix]:fn,[Le.prefix]:Le},Lx=class{routers;localStore;timeout;dns;log;constructor(e,t=[]){this.routers=[vC(e.routing),...t],this.localStore=kC(e.datastore),this.dns=e.dns,this.log=e.logger.forComponent("helia:ipns")}async publish(e,t,n={}){try{let i=1n,o=ks(e.publicKey.toMultihash());if(await this.localStore.has(o,n)){let{record:l}=await this.localStore.get(o,n);i=Dn(l).sequence+1n}let s=n.ttl!=null?BigInt(n.ttl)*1000000n:PC,a=await mC(e,t,i,n.lifetime??Jq,{...n,ttlNs:s}),c=Pa(a);return await this.localStore.put(o,c,n),n.offline!==!0&&await Promise.all(this.routers.map(async l=>{await l.put(o,c,n)})),a}catch(i){throw n.onProgress?.(new G("ipns:publish:error",i)),i}}async resolve(e,t={}){let n=xS(e)?e.toMultihash():e,i=ks(n),o=await this.#r(i,t);return{...await this.#e(o.value,t),record:o}}async resolveDNSLink(e,t={}){let n=await bC(e,this.dns,this.log,t);return{...await this.#e(n.value,t),answer:n.answer}}republish(e={}){if(this.timeout!=null)throw new Error("Republish is already running");e.signal?.addEventListener("abort",()=>{clearTimeout(this.timeout)});async function t(){let n=Date.now();e.onProgress?.(new G("ipns:republish:start"));let o=Date.now()-n,s=Ox-o;s<0&&(s=e.interval??Ox),setTimeout(()=>{t().catch(a=>{Rs.error("error republishing",a)})},s)}this.timeout=setTimeout(()=>{t().catch(n=>{Rs.error("error republishing",n)})},e.interval??Ox)}async#e(e,t={}){let n=e.split("/");try{let i=n[1];if(i==="ipns"){let o=n[2],s=o.substring(0,1),a;if(s==="1"||s==="Q")a=Le.decode(`z${o}`);else if(RC[s]!=null)a=RC[s].decode(o);else throw new I2(`Unsupported multibase prefix "${s}"`);let c;try{c=Ue(a)}catch{c=W.decode(a).multihash}if(!Nx(c,0)&&!Nx(c,18))throw new T2(`Unsupported multihash codec "${c.code}"`);let{cid:l}=await this.resolve(c,t),u=n.slice(3).join("/");return{cid:l,path:u}}else if(i==="ipfs"){let o=W.parse(n[2]),s=n.slice(3).join("/");return{cid:o,path:s}}}catch(i){Rs.error("error parsing ipfs path",i)}throw Rs.error("invalid ipfs path %s",e),new C2("Invalid value")}async#r(e,t={}){let n=[];if(await this.localStore.has(e,t))if(Rs("record is present in the cache"),t.nocache!==!0)try{let{record:a,created:c}=await this.localStore.get(e,t);this.log("record retrieved from cache"),await Ra(e,a),this.log("record was valid");let l=Dn(a),u=Number((l.ttl??PC)/1000000n);if(c.getTime()+u>Date.now())return this.log("record TTL was valid"),l;if(t.offline===!0)return this.log("record TTL has been reached but we are resolving offline-only, returning record"),l;this.log("record TTL has been reached, searching routing for updates"),n.push(a)}catch(a){this.log("cached record was invalid",a),await this.localStore.delete(e,t)}else Rs("ignoring local cache due to nocache=true option");if(t.offline===!0)throw new We("Record was not present in the cache or has expired");Rs("did not have record locally");let o=0;if(await Promise.all(this.routers.map(async a=>{let c;try{c=await a.get(e,{...t,validate:!1})}catch(l){Rs.error("error finding IPNS record",l);return}try{await Ra(e,c),n.push(c)}catch(l){o++,Rs.error("error finding IPNS record",l)}})),n.length===0)throw o>0?new _2(`${o>1?`${o} records`:"Record"} found for routing key ${o>1?"were":"was"} invalid`):new We("Could not find record for routing key");let s=n[S2(e,n)];return await this.localStore.put(e,s,t),Dn(s)}async republishRecord(e,t,n={}){let i;try{if(i=Ip(t)?.toMultihash(),i==null)if(typeof e=="string"){e.startsWith(Dx)&&(e=e.slice(Dx.length));try{i=at(e).toMultihash()}catch(a){throw new Error(`Invalid string key: ${a.message}`)}}else i=e;if(i==null)throw new Error("No public key multihash found to determine the routing key");let o=ks(i),s=Pa(t);await Ra(o,s),await this.localStore.put(o,s,n),n.offline!==!0&&await Promise.all(this.routers.map(async a=>{await a.put(o,s,n)}))}catch(o){throw n.onProgress?.(new G("ipns:republish:error",{key:i,record:t,err:o})),o}}};function OC(r,{routers:e=[]}={}){return new Lx(r,e)}function Bx(){return{filterProtocols:["unknown","transport-bitswap","transport-ipfs-gateway-http"],filterAddrs:["https","webtransport","webrtc","webrtc-direct","wss","tls"]}}var LC="[a-fA-F\\d:]",Na=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${LC})|(?<=${LC})(?=\\s|$))`:"",mo="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",fr="[a-fA-F\\d]{1,4}",M2=`
4
4
  (?:
5
5
  (?:${fr}:){7}(?:${fr}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
6
6
  (?:${fr}:){6}(?:${mo}|:${fr}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
@@ -11,7 +11,7 @@
11
11
  (?:${fr}:){1}(?:(?::${fr}){0,4}:${mo}|(?::${fr}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
12
12
  (?::(?:(?::${fr}){0,5}:${mo}|(?::${fr}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
13
13
  )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
14
- `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),ej=new RegExp(`(?:^${mo}$)|(?:^${M2}$)`),tj=new RegExp(`^${mo}$`),rj=new RegExp(`^${M2}$`),Mx=r=>r&&r.exact?ej:new RegExp(`(?:${Na(r)}${mo}${Na(r)})|(?:${Na(r)}${M2}${Na(r)})`,"g");Mx.v4=r=>r&&r.exact?tj:new RegExp(`${Na(r)}${mo}${Na(r)}`,"g");Mx.v6=r=>r&&r.exact?rj:new RegExp(`${Na(r)}${M2}${Na(r)}`,"g");var Ux=Mx;function Fx(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function BC(){return!1}var{toString:nj}=Object.prototype;function $x(r){return nj.call(r)==="[object RegExp]"}var MC={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function Hx(r,e={}){if(!$x(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(MC).map(i=>(typeof e[i]=="boolean"?e[i]:r[i])?MC[i]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function Vx(r,e,{timeout:t}={}){try{return Fx(()=>Hx(r).test(e),{timeout:t})()}catch(n){if(BC(n))return!1;throw n}}var ij=15,oj=45,UC={timeout:400};function zx(r){return r.length>oj?!1:Vx(Ux.v6({exact:!0}),r,UC)}function FC(r){return r.length>ij?!1:Vx(Ux.v4({exact:!0}),r,UC)}var $C={http:"80",https:"443",ws:"80",wss:"443"},sj=["http","https","ws","wss"];function HC(r,e){e=e??{};let t=e.defaultDnsType??"dns4",{scheme:n,hostname:i,port:o,path:s}=aj(r),a=[cj(i,t),lj(o,n),uj(n)];s!=null&&a.push(fj(s));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return se(c)}function aj(r){let[e]=r.split(":");sj.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:i,pathname:o,search:s}=new URL(r);if(i==null||i===""){let c=dj(e);c!=null&&(i=c),c==null&&t==="http:"&&(i="80")}let a;return o!=null&&o!==""&&o!=="/"&&(o.startsWith("/")&&(o=o.substring(1)),a=o),s!=null&&s!==""&&(a=a??"",a+=s),{scheme:e,hostname:n,port:i,path:a}}function cj(r,e){if(!(r==null||r==="")){if(FC(r))return["ip4",r];if(zx(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(zx(t))return["ip6",t]}return[e,r]}}function lj(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function uj(r){if(r.match(/^tcp$|^udp$/)==null)return[r]}function fj(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function dj(r){if(!(r==null||r===""||$C[r]==null))return $C[r]}var hj=["https://trustless-gateway.link","https://4everland.io"],pj=2336;function mj(r){return r=r.toString(),{id:gn(W.createV1(pj,cr.digest(O(r)))),multiaddrs:[HC(r)]}}var Kx=class{gateways;constructor(e={}){this.gateways=(e.gateways??hj).map(t=>mj(t))}async*findProviders(e,t){yield*this.gateways.toSorted(()=>Math.random()>.5?1:-1).map(n=>({...n,protocols:["transport-ipfs-gateway-http"]}))}};function kp(r={}){return new Kx(r)}var qx=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function Pp(r){return new qx(r)}var Rp=class extends Is{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(Jt.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(Jt.encode(e.multihash.bytes));if(t==null)throw new ki;return t}has(e){return this.data.has(Jt.encode(e.multihash.bytes))}async delete(e){this.data.delete(Jt.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:W.createV1(vt,Ue(Jt.decode(e))),block:t}}};var H2e=ze("blockstore:core:tiered");var KC="SHARDING";function yj(r){return r[Symbol.asyncIterator]!=null}function wj(r,e){return yj(r)?async function*(){yield*(await Ps(r)).sort(e)}():function*(){yield*Ps(r).sort(e)}()}var U2=wj;var Ds=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:i}of e)await this.put(n,i,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,i){e.push({key:n,value:i})},delete(n){t.push(n)},commit:async n=>{await Sr(this.putMany(e,n)),e=[],await Sr(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 i=e.prefix;n=si(n,o=>o.key.toString().startsWith(i))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((i,o)=>si(i,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((i,o)=>U2(i,o),n)),e.offset!=null){let i=0,o=e.offset;n=si(n,()=>i++>=o)}return e.limit!=null&&(n=la(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let i=e.prefix;n=si(n,o=>o.toString().startsWith(i))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((i,o)=>si(i,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((i,o)=>U2(i,o),n)),e.offset!=null){let i=e.offset,o=0;n=si(n,()=>o++>=i)}return e.limit!=null&&(n=la(n,e.limit)),n}};var xl=class extends Ds{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 new ki;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 nt(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new nt(e)}};var xye=new nt(KC);var Nye=ze("datastore:core:tiered");var F2=class extends Ug{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 $2=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function go(r,e){let t=b0();r.sink(t).catch(async s=>{await t.end(s)}),r.sink=async s=>{for await(let a of s)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 i=new oe;return{read:async s=>{if(s?.signal?.throwIfAborted(),s?.bytes==null){let{done:c,value:l}=await Dt(n.next(),s?.signal);return c===!0?null:l}for(;i.byteLength<s.bytes;){let{value:c,done:l}=await Dt(n.next(),s?.signal);if(l===!0)throw new $2("unexpected end of input");i.append(c)}let a=i.sublist(0,s.bytes);return i.consume(s.bytes),a},write:async(s,a)=>{a?.signal?.throwIfAborted(),s instanceof Uint8Array?await t.push(s,a):await t.push(s.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let s=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*s}()}return r}}}var H2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},V2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},z2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function jx(r,e={}){let t=go(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read({...s,bytes:1}));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new H2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new z2("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new V2("message length too long");return t.read({...s,bytes:a})},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Wx(){let r=ye(),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 jC(){let r=Wx(),e=Wx();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Mf=!!globalThis.process?.env?.DUMP_SESSION_KEYS;function GC(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function K2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function q2(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function on(r,...e){if(!GC(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Gx(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 XC(r,e){on(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Ns(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Os(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function xj(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}var bj=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function vj(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function j2(r){if(typeof r=="string")r=vj(r);else if(GC(r))r=W2(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function YC(r,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(r,e)}function QC(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 Xx=(r,e)=>{function t(n,...i){if(on(n),!bj)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let u=i[0];if(!u)throw new Error("nonce / iv required");r.varSizeNonce?on(u):on(u,r.nonceLength)}let o=r.tagLength;o&&i[1]!==void 0&&on(i[1]);let s=e(n,...i),a=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");on(f)}},c=!1;return{encrypt(u,f){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,on(u),a(s.encrypt.length,f),s.encrypt(u,f)},decrypt(u,f){if(on(u),o&&u.length<o)throw new Error("invalid ciphertext length: smaller than tagLength="+o);return a(s.decrypt.length,f),s.decrypt(u,f)}}}return Object.assign(t,r),t};function Yx(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!Ej(e))throw new Error("invalid output, must be aligned");return e}function WC(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,l=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+l,a,n)}function ZC(r,e,t){K2(t);let n=new Uint8Array(16),i=xj(n);return WC(i,0,BigInt(e),t),WC(i,8,BigInt(r),t),n}function Ej(r){return r.byteOffset%4===0}function W2(r){return Uint8Array.from(r)}var ek=r=>Uint8Array.from(r.split("").map(e=>e.charCodeAt(0))),Sj=ek("expand 16-byte k"),Aj=ek("expand 32-byte k"),_j=Ns(Sj),Ij=Ns(Aj);function de(r,e){return r<<e|r>>>32-e}function Qx(r){return r.byteOffset%4===0}var G2=64,Tj=16,tk=2**32-1,JC=new Uint32Array;function Cj(r,e,t,n,i,o,s,a){let c=i.length,l=new Uint8Array(G2),u=Ns(l),f=Qx(i)&&Qx(o),h=f?Ns(i):JC,d=f?Ns(o):JC;for(let m=0;m<c;s++){if(r(e,t,n,u,s,a),s>=tk)throw new Error("arx: counter overflow");let g=Math.min(G2,c-m);if(f&&g===G2){let w=m/4;if(m%4!==0)throw new Error("arx: invalid block position");for(let x=0,v;x<Tj;x++)v=w+x,d[v]=h[v]^u[x];m+=G2;continue}for(let w=0,x;w<g;w++)x=m+w,o[x]=i[x]^l[w];m+=g}}function Zx(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:i,counterRight:o,rounds:s}=YC({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return q2(i),q2(s),K2(o),K2(t),(a,c,l,u,f=0)=>{on(a),on(c),on(l);let h=l.length;if(u===void 0&&(u=new Uint8Array(h)),on(u),q2(f),f<0||f>=tk)throw new Error("arx: counter overflow");if(u.length<h)throw new Error(`arx: output (${u.length}) is shorter than data (${h})`);let d=[],m=a.length,g,w;if(m===32)d.push(g=W2(a)),w=Ij;else if(m===16&&t)g=new Uint8Array(32),g.set(a),g.set(a,16),w=_j,d.push(g);else throw new Error(`arx: invalid 32-byte key, got length=${m}`);Qx(c)||d.push(c=W2(c));let x=Ns(g);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(w,x,Ns(c.subarray(0,16)),x),c=c.subarray(16)}let v=16-i;if(v!==c.length)throw new Error(`arx: nonce must be ${v} or 16 bytes`);if(v!==12){let S=new Uint8Array(12);S.set(c,o?0:12-c.length),c=S,d.push(c)}let b=Ns(c);return Cj(r,w,x,b,l,u,f,s),Os(...d),u}}var Lr=(r,e)=>r[e++]&255|(r[e++]&255)<<8,Jx=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=j2(e),on(e,32);let t=Lr(e,0),n=Lr(e,2),i=Lr(e,4),o=Lr(e,6),s=Lr(e,8),a=Lr(e,10),c=Lr(e,12),l=Lr(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|i<<6)&7939,this.r[3]=(i>>>7|o<<9)&8191,this.r[4]=(o>>>4|s<<12)&255,this.r[5]=s>>>1&8190,this.r[6]=(s>>>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 u=0;u<8;u++)this.pad[u]=Lr(e,16+2*u)}process(e,t,n=!1){let i=n?0:2048,{h:o,r:s}=this,a=s[0],c=s[1],l=s[2],u=s[3],f=s[4],h=s[5],d=s[6],m=s[7],g=s[8],w=s[9],x=Lr(e,t+0),v=Lr(e,t+2),b=Lr(e,t+4),S=Lr(e,t+6),T=Lr(e,t+8),D=Lr(e,t+10),A=Lr(e,t+12),I=Lr(e,t+14),k=o[0]+(x&8191),Q=o[1]+((x>>>13|v<<3)&8191),K=o[2]+((v>>>10|b<<6)&8191),V=o[3]+((b>>>7|S<<9)&8191),X=o[4]+((S>>>4|T<<12)&8191),$=o[5]+(T>>>1&8191),F=o[6]+((T>>>14|D<<2)&8191),z=o[7]+((D>>>11|A<<5)&8191),M=o[8]+((A>>>8|I<<8)&8191),R=o[9]+(I>>>5|i),N=0,Z=N+k*a+Q*(5*w)+K*(5*g)+V*(5*m)+X*(5*d);N=Z>>>13,Z&=8191,Z+=$*(5*h)+F*(5*f)+z*(5*u)+M*(5*l)+R*(5*c),N+=Z>>>13,Z&=8191;let ne=N+k*c+Q*a+K*(5*w)+V*(5*g)+X*(5*m);N=ne>>>13,ne&=8191,ne+=$*(5*d)+F*(5*h)+z*(5*f)+M*(5*u)+R*(5*l),N+=ne>>>13,ne&=8191;let q=N+k*l+Q*c+K*a+V*(5*w)+X*(5*g);N=q>>>13,q&=8191,q+=$*(5*m)+F*(5*d)+z*(5*h)+M*(5*f)+R*(5*u),N+=q>>>13,q&=8191;let ge=N+k*u+Q*l+K*c+V*a+X*(5*w);N=ge>>>13,ge&=8191,ge+=$*(5*g)+F*(5*m)+z*(5*d)+M*(5*h)+R*(5*f),N+=ge>>>13,ge&=8191;let ke=N+k*f+Q*u+K*l+V*c+X*a;N=ke>>>13,ke&=8191,ke+=$*(5*w)+F*(5*g)+z*(5*m)+M*(5*d)+R*(5*h),N+=ke>>>13,ke&=8191;let le=N+k*h+Q*f+K*u+V*l+X*c;N=le>>>13,le&=8191,le+=$*a+F*(5*w)+z*(5*g)+M*(5*m)+R*(5*d),N+=le>>>13,le&=8191;let De=N+k*d+Q*h+K*f+V*u+X*l;N=De>>>13,De&=8191,De+=$*c+F*a+z*(5*w)+M*(5*g)+R*(5*m),N+=De>>>13,De&=8191;let et=N+k*m+Q*d+K*h+V*f+X*u;N=et>>>13,et&=8191,et+=$*l+F*c+z*a+M*(5*w)+R*(5*g),N+=et>>>13,et&=8191;let Ye=N+k*g+Q*m+K*d+V*h+X*f;N=Ye>>>13,Ye&=8191,Ye+=$*u+F*l+z*c+M*a+R*(5*w),N+=Ye>>>13,Ye&=8191;let pt=N+k*w+Q*g+K*m+V*d+X*h;N=pt>>>13,pt&=8191,pt+=$*f+F*u+z*l+M*c+R*a,N+=pt>>>13,pt&=8191,N=(N<<2)+N|0,N=N+Z|0,Z=N&8191,N=N>>>13,ne+=N,o[0]=Z,o[1]=ne,o[2]=q,o[3]=ge,o[4]=ke,o[5]=le,o[6]=De,o[7]=et,o[8]=Ye,o[9]=pt}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),i=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=i,i=e[a]>>>13,e[a]&=8191;e[0]+=i*5,i=e[0]>>>13,e[0]&=8191,e[1]+=i,i=e[1]>>>13,e[1]&=8191,e[2]+=i,n[0]=e[0]+5,i=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+i,i=n[a]>>>13,n[a]&=8191;n[9]-=8192;let o=(i^1)-1;for(let a=0;a<10;a++)n[a]&=o;o=~o;for(let a=0;a<10;a++)e[a]=e[a]&o|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 s=e[0]+t[0];e[0]=s&65535;for(let a=1;a<8;a++)s=(e[a]+t[a]|0)+(s>>>16)|0,e[a]=s&65535;Os(n)}update(e){Gx(this),e=j2(e),on(e);let{buffer:t,blockLen:n}=this,i=e.length;for(let o=0;o<i;){let s=Math.min(n-this.pos,i-o);if(s===n){for(;n<=i-o;o+=n)this.process(e,o);continue}t.set(e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){Os(this.h,this.r,this.buffer,this.pad)}digestInto(e){Gx(this),XC(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:i}=this;if(i){for(t[i++]=1;i<16;i++)t[i]=0;this.process(t,0,!0)}this.finalize();let o=0;for(let s=0;s<8;s++)e[o++]=n[s]>>>0,e[o++]=n[s]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function kj(r){let e=(n,i)=>r(i).update(j2(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var rk=kj(r=>new Jx(r));function ok(r,e,t,n,i,o=20){let s=r[0],a=r[1],c=r[2],l=r[3],u=e[0],f=e[1],h=e[2],d=e[3],m=e[4],g=e[5],w=e[6],x=e[7],v=i,b=t[0],S=t[1],T=t[2],D=s,A=a,I=c,k=l,Q=u,K=f,V=h,X=d,$=m,F=g,z=w,M=x,R=v,N=b,Z=S,ne=T;for(let ge=0;ge<o;ge+=2)D=D+Q|0,R=de(R^D,16),$=$+R|0,Q=de(Q^$,12),D=D+Q|0,R=de(R^D,8),$=$+R|0,Q=de(Q^$,7),A=A+K|0,N=de(N^A,16),F=F+N|0,K=de(K^F,12),A=A+K|0,N=de(N^A,8),F=F+N|0,K=de(K^F,7),I=I+V|0,Z=de(Z^I,16),z=z+Z|0,V=de(V^z,12),I=I+V|0,Z=de(Z^I,8),z=z+Z|0,V=de(V^z,7),k=k+X|0,ne=de(ne^k,16),M=M+ne|0,X=de(X^M,12),k=k+X|0,ne=de(ne^k,8),M=M+ne|0,X=de(X^M,7),D=D+K|0,ne=de(ne^D,16),z=z+ne|0,K=de(K^z,12),D=D+K|0,ne=de(ne^D,8),z=z+ne|0,K=de(K^z,7),A=A+V|0,R=de(R^A,16),M=M+R|0,V=de(V^M,12),A=A+V|0,R=de(R^A,8),M=M+R|0,V=de(V^M,7),I=I+X|0,N=de(N^I,16),$=$+N|0,X=de(X^$,12),I=I+X|0,N=de(N^I,8),$=$+N|0,X=de(X^$,7),k=k+Q|0,Z=de(Z^k,16),F=F+Z|0,Q=de(Q^F,12),k=k+Q|0,Z=de(Z^k,8),F=F+Z|0,Q=de(Q^F,7);let q=0;n[q++]=s+D|0,n[q++]=a+A|0,n[q++]=c+I|0,n[q++]=l+k|0,n[q++]=u+Q|0,n[q++]=f+K|0,n[q++]=h+V|0,n[q++]=d+X|0,n[q++]=m+$|0,n[q++]=g+F|0,n[q++]=w+z|0,n[q++]=x+M|0,n[q++]=v+R|0,n[q++]=b+N|0,n[q++]=S+Z|0,n[q++]=T+ne|0}function Pj(r,e,t,n){let i=r[0],o=r[1],s=r[2],a=r[3],c=e[0],l=e[1],u=e[2],f=e[3],h=e[4],d=e[5],m=e[6],g=e[7],w=t[0],x=t[1],v=t[2],b=t[3];for(let T=0;T<20;T+=2)i=i+c|0,w=de(w^i,16),h=h+w|0,c=de(c^h,12),i=i+c|0,w=de(w^i,8),h=h+w|0,c=de(c^h,7),o=o+l|0,x=de(x^o,16),d=d+x|0,l=de(l^d,12),o=o+l|0,x=de(x^o,8),d=d+x|0,l=de(l^d,7),s=s+u|0,v=de(v^s,16),m=m+v|0,u=de(u^m,12),s=s+u|0,v=de(v^s,8),m=m+v|0,u=de(u^m,7),a=a+f|0,b=de(b^a,16),g=g+b|0,f=de(f^g,12),a=a+f|0,b=de(b^a,8),g=g+b|0,f=de(f^g,7),i=i+l|0,b=de(b^i,16),m=m+b|0,l=de(l^m,12),i=i+l|0,b=de(b^i,8),m=m+b|0,l=de(l^m,7),o=o+u|0,w=de(w^o,16),g=g+w|0,u=de(u^g,12),o=o+u|0,w=de(w^o,8),g=g+w|0,u=de(u^g,7),s=s+f|0,x=de(x^s,16),h=h+x|0,f=de(f^h,12),s=s+f|0,x=de(x^s,8),h=h+x|0,f=de(f^h,7),a=a+c|0,v=de(v^a,16),d=d+v|0,c=de(c^d,12),a=a+c|0,v=de(v^a,8),d=d+v|0,c=de(c^d,7);let S=0;n[S++]=i,n[S++]=o,n[S++]=s,n[S++]=a,n[S++]=w,n[S++]=x,n[S++]=v,n[S++]=b}var Rj=Zx(ok,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Dj=Zx(ok,{counterRight:!1,counterLength:8,extendNonceFn:Pj,allowShortKeys:!1});var Nj=new Uint8Array(16),nk=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(Nj.subarray(t))},Oj=new Uint8Array(32);function ik(r,e,t,n,i){let o=r(e,t,Oj),s=rk.create(o);i&&nk(s,i),nk(s,n);let a=ZC(n.length,i?i.length:0,!0);s.update(a);let c=s.digest();return Os(o,a),c}var sk=r=>(e,t,n)=>({encrypt(o,s){let a=o.length;s=Yx(a+16,s,!1),s.set(o);let c=s.subarray(0,-16);r(e,t,c,c,1);let l=ik(r,e,t,c,n);return s.set(l,a),Os(l),s},decrypt(o,s){s=Yx(o.length-16,s,!1);let a=o.subarray(0,-16),c=o.subarray(-16),l=ik(r,e,t,a,n);if(!QC(c,l))throw new Error("invalid tag");return s.set(o.subarray(0,-16)),r(e,t,s,s,1),Os(l),s}}),e9=Xx({blockSize:64,nonceLength:12,tagLength:16},sk(Rj)),A3e=Xx({blockSize:64,nonceLength:24,tagLength:16},sk(Dj));function ck(r,e,t){return Hc(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ba(r,ha(t),ha(e))}var t9=Uint8Array.from([0]),ak=Uint8Array.of();function lk(r,e,t,n=32){Hc(r),Mo(n);let i=r.outputLen;if(n>255*i)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/i);t===void 0&&(t=ak);let s=new Uint8Array(o*i),a=ba.create(r,e),c=a._cloneInto(),l=new Uint8Array(a.outputLen);for(let u=0;u<o;u++)t9[0]=u+1,c.update(u===0?ak:l).update(t).update(t9).digestInto(l),s.set(l,i*u),a._cloneInto(c);return a.destroy(),c.destroy(),Jr(l,t9),s.slice(0,n)}var r9={hashSHA256(r){return zo(r.subarray())},getHKDF(r,e){let t=ck(zo,e,r),i=lk(zo,t,void 0,96),o=i.subarray(0,32),s=i.subarray(32,64),a=i.subarray(64,96);return[o,s,a]},generateX25519KeyPair(){let r=Mh.utils.randomPrivateKey();return{publicKey:Mh.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:Mh.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return Mh.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return e9(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,i){return e9(n,e,t).decrypt(r.subarray(),i)}};var uk=r9;function fk(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 Uf=r=>{let e=$t(2);return e[0]=r>>8,e[1]=r,e};Uf.bytes=2;var Dp=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)};Dp.bytes=2;function dk(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 n9(r,e){!e.enabled||!Mf||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${H(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${H(r.privateKey,"hex")}`)):e("Missing local static keys."))}function i9(r,e){!e.enabled||!Mf||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${H(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${H(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function hk(r,e){!e.enabled||!Mf||e(r?`REMOTE_STATIC_PUBLIC_KEY ${H(r.subarray(),"hex")}`:"Missing remote static public key.")}function o9(r,e){!e.enabled||!Mf||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${H(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function s9(r,e,t){!t.enabled||!Mf||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&H(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&H(e.k,"hex")}`))}var Ff=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var Lj=0,Bj=4294967295,Mj="Cipherstate has reached maximum n, a new handshake must be performed",X2=class{n;bytes;view;constructor(e=Lj){this.n=e,this.bytes=Pe(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>Bj)throw new Error(Mj)}};var bl=Pe(0),$f=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new X2(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 i=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),i}},a9=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=O(t,"utf-8");this.h=Uj(e,n),this.ck=this.h,this.cs=new $f(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new $f(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new oe(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,bl);return[new $f(this.crypto,e),new $f(this.crypto,t)]}},c9=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:i,initiator:o,s,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new a9(t,n),this.ss.mixHash(i),this.initiator=o,this.s=s,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 i=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(i),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},Np=class extends c9{writeMessageA(e){return new oe(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new oe(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new oe(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ff(`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 Ff(`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 Ff(`handshake stage 2 validation fail: ${t.message}`)}}};function Uj(r,e){if(e.length<=32){let t=Pe(32);return t.set(e),t}else return r.hash(e)}var Y2;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let o of t.webtransportCerthashes)n.uint32(10),n.bytes(o);if(t.streamMuxers!=null)for(let o of t.streamMuxers)n.uint32(18),n.string(o);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={webtransportCerthashes:[],streamMuxers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{if(i.limits?.webtransportCerthashes!=null&&o.webtransportCerthashes.length===i.limits.webtransportCerthashes)throw new wt('Decode error - map field "webtransportCerthashes" had too many elements');o.webtransportCerthashes.push(t.bytes());break}case 2:{if(i.limits?.streamMuxers!=null&&o.streamMuxers.length===i.limits.streamMuxers)throw new wt('Decode error - map field "streamMuxers" had too many elements');o.streamMuxers.push(t.string());break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Y2||(Y2={}));var Op;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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),Y2.codec().encode(t.extensions,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={identityKey:Pe(0),identitySig:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=Y2.codec().decode(t,t.uint32(),{limits:i.limits?.extensions});break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Op||(Op={}));async function l9(r,e,t){let n=await r.sign(pk(e));return Op.encode({identityKey:lr(r.publicKey),identitySig:n,extensions:t})}async function u9(r,e,t){try{let n=Op.decode(r),i=tr(n.identityKey);if(t?.equals(i)===!1)throw new Error(`Payload identity key ${i} does not match expected remote identity key ${t}`);if(!e)throw new Error("Remote static does not exist");let o=pk(e);if(!await i.verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new t0(n.message)}}function pk(r){let e=O("noise-libp2p-static-key:");return r instanceof Uint8Array?Ve([e,r],e.length+r.length):(r.prepend(e),r)}async function mk(r,e){let{log:t,connection:n,crypto:i,privateKey:o,prologue:s,s:a,remoteIdentityKey:c,extensions:l}=r,u=await l9(o,a.publicKey,l),f=new Np({crypto:i,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:a});n9(f.s,t),t.trace("Stage 0 - Initiator starting to send first message."),await n.write(f.writeMessageA(bl),e),t.trace("Stage 0 - Initiator finished sending first message."),i9(f.e,t),t.trace("Stage 1 - Initiator waiting to receive first message from responder...");let h=f.readMessageB(await n.read(e));t.trace("Stage 1 - Initiator received the message."),o9(f.re,t),hk(f.rs,t),t.trace("Initiator going to check remote's signature...");let d=await u9(h,f.rs,c);t.trace("All good with the signature!"),t.trace("Stage 2 - Initiator sending third handshake message."),await n.write(f.writeMessageC(u),e),t.trace("Stage 2 - Initiator sent message with signed payload.");let[m,g]=f.ss.split();return s9(m,g,t),{payload:d,encrypt:w=>m.encryptWithAd(bl,w),decrypt:(w,x)=>g.decryptWithAd(bl,w,x)}}async function gk(r,e){let{log:t,connection:n,crypto:i,privateKey:o,prologue:s,s:a,remoteIdentityKey:c,extensions:l}=r,u=await l9(o,a.publicKey,l),f=new Np({crypto:i,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:a});n9(f.s,t),t.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await n.read(e)),t.trace("Stage 0 - Responder received first message."),o9(f.re,t),t.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(f.writeMessageB(u),e),t.trace("Stage 1 - Responder sent the second handshake message with signed payload."),i9(f.e,t),t.trace("Stage 2 - Responder waiting for third handshake message...");let h=f.readMessageC(await n.read(e));t.trace("Stage 2 - Responder received the message, finished handshake.");let d=await u9(h,f.rs,c),[m,g]=f.ss.split();return s9(m,g,t),{payload:d,encrypt:w=>g.encryptWithAd(bl,w),decrypt:(w,x)=>m.decryptWithAd(bl,w,x)}}var wk=16;function xk(r,e){return async function*(t){for await(let n of t)for(let i=0;i<n.length;i+=65519){let o=i+65519;o>n.length&&(o=n.length);let s;n instanceof Uint8Array?s=r.encrypt(n.subarray(i,o)):s=r.encrypt(n.sublist(i,o)),e?.encryptedPackets.increment(),yield new oe(Uf(s.byteLength),s)}}}function bk(r,e){return async function*(t){for await(let n of t)for(let i=0;i<n.length;i+=65535){let o=i+65535;if(o>n.length&&(o=n.length),o-wk<i)throw new Error("Invalid chunk");let s=n.sublist(i,o),a=n.subarray(i,o-wk);try{let c=r.decrypt(s,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var Q2=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:i,crypto:o,prologueBytes:s}=t,{metrics:a}=e;this.components=e;let c=o??uk;this.crypto=fk(c),this.extensions={webtransportCerthashes:[],...i},this.metrics=a?dk(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=s??Pe(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[tt]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,t){let n=jx(e,{lengthEncoder:Uf,lengthDecoder:Dp,maxDataLength:65535}),i=await this.performHandshakeInitiator(n,this.components.privateKey,t?.remotePeer?.publicKey,t),o=await this.createSecureConnection(n,i);e.source=o.source,e.sink=o.sink;let s=tr(i.payload.identityKey);return{conn:e,remoteExtensions:i.payload.extensions,remotePeer:Ko(s),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(i.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;let t=this.components.upgrader.getStreamMuxers();if(t!=null)for(let n of e){let i=t.get(n);if(i!=null)return i}if(e.length)throw new r0("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,t){let n=jx(e,{lengthEncoder:Uf,lengthDecoder:Dp,maxDataLength:65535}),i=await this.performHandshakeResponder(n,this.components.privateKey,t?.remotePeer?.publicKey,t),o=await this.createSecureConnection(n,i);e.source=o.source,e.sink=o.sink;let s=tr(i.payload.identityKey);return{conn:e,remoteExtensions:i.payload.extensions,remotePeer:Ko(s),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(i.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,t,n,i){let o,s=i?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{o=await mk({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:s,webtransportCerthashes:[],...this.extensions}},i),this.metrics?.xxHandshakeSuccesses.increment()}catch(a){throw this.metrics?.xxHandshakeErrors.increment(),a}return o}async performHandshakeResponder(e,t,n,i){let o,s=i?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{o=await gk({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:s,webtransportCerthashes:[],...this.extensions}},i),this.metrics?.xxHandshakeSuccesses.increment()}catch(a){throw this.metrics?.xxHandshakeErrors.increment(),a}return o}async createSecureConnection(e,t){let[n,i]=jC(),o=e.unwrap();return await ot(n,xk(t,this.metrics),o,s=>Qi(s,{lengthDecoder:Dp}),bk(t,this.metrics),n),i}};function Z2(r={}){return e=>new Q2(e,r)}function Hf(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 yo=class extends Error{static name="InvalidFrameError";constructor(e="The frame was invalid"){super(e),this.name="InvalidFrameError"}},Vf=class extends Error{static name="UnrequestedPingError";constructor(e="Unrequested ping error"){super(e),this.name="UnrequestedPingError"}},zf=class extends Error{static name="NotMatchingPingError";constructor(e="Unrequested ping error"){super(e),this.name="NotMatchingPingError"}},J2=class extends Error{static name="InvalidStateError";constructor(e="Invalid state"){super(e),this.name="InvalidStateError"}},ey=class extends Error{static name="StreamAlreadyExistsError";constructor(e="Strean already exists"){super(e),this.name="StreamAlreadyExistsError"}},ty=class extends Error{static name="DecodeInvalidVersionError";constructor(e="Decode invalid version"){super(e),this.name="DecodeInvalidVersionError"}},ry=class extends Error{static name="BothClientsError";constructor(e="Both clients"){super(e),this.name="BothClientsError"}},Kf=class extends Error{static name="ReceiveWindowExceededError";constructor(e="Receive window exceeded"){super(e),this.name="ReceiveWindowExceededError"}};var vk=new Set([yo.name,Vf.name,zf.name,ey.name,ty.name,ry.name,Kf.name]),Bp=256*1024,Ek=16*1024*1024;var Sk={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Bp,maxStreamWindowSize:Ek,maxMessageSize:64*1024};function Ak(r){if(r.keepAliveInterval<=0)throw new U("keep-alive interval must be positive");if(r.maxInboundStreams<0)throw new U("max inbound streams must be larger or equal 0");if(r.maxOutboundStreams<0)throw new U("max outbound streams must be larger or equal 0");if(r.initialStreamWindowSize<Bp)throw new U("InitialStreamWindowSize must be larger or equal 256 kB");if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new U("MaxStreamWindowSize must be larger than the InitialStreamWindowSize");if(r.maxStreamWindowSize>2**32-1)throw new U("MaxStreamWindowSize must be less than equal MAX_UINT32");if(r.maxMessageSize<1024)throw new U("MaxMessageSize must be greater than a kilobyte")}var jt;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(jt||(jt={}));var Ot;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(Ot||(Ot={}));var z4e=Object.values(Ot).filter(r=>typeof r!="string"),_k=0,Pi;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Pi||(Pi={}));var Oa=12;var Ik=2**24;function Fj(r){if(r[0]!==_k)throw new yo("Invalid frame version");return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Ik+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Ik+(r[9]<<16)+(r[10]<<8)+r[11]}}var ny=class{source;buffer;frameInProgress;constructor(e){this.source=$j(e),this.buffer=new oe,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:i}=t;n===jt.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,i)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new J2("decoding frame already in progress");if(this.buffer.length<Oa)return;let e=Fj(this.buffer.subarray(0,Oa));return this.buffer.consume(Oa),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 $j(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 f9(r){let e=new Uint8Array(Oa);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 Tk(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function iy(r,e){let t=Hf(r).return?.();Tk(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var Hj=5e3;function d9(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var La=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=ye(),this.closed=ye(),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??Hj,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=Xr({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 Tc(`writable end state is "${this.writeStatus}" not "ready"`);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let i=this.sendNewStream(t);d9(i)&&await i}let n=()=>{iy(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let i of e){i=i instanceof Uint8Array?new oe(i):i;let o=this.sendData(i,t);d9(o)&&(this.sendingData=ye(),await o,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.status==="open"&&(this.log.trace("closing gracefully"),this.status="closing",await Dt(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 Dt(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Dt(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Dt(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();d9(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 i0("stream reset");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 Ri;(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"})(Ri||(Ri={}));var oy=class extends La{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=Ri.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Bp,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=ll(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-Oa,e.length),i=this.getSendFlags();this.sendFrame({type:jt.Data,flag:i,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|Ot.FIN;this.sendFrame({type:jt.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,i=()=>{this.status==="open"||this.status==="closing"?n(new Tr("Stream aborted")):t()};e.signal?.addEventListener("abort",i);try{await new Promise((o,s)=>{this.sendWindowCapacityUpdate=()=>{o()},n=s,t=o})}finally{e.signal?.removeEventListener("abort",i)}}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 Kf("Receive window exceeded");let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&Ot.ACK)===Ot.ACK&&this.state===Ri.SYNSent&&(this.state=Ri.Established),(e&Ot.FIN)===Ot.FIN&&this.remoteCloseWrite(),(e&Ot.RST)===Ot.RST&&this.reset()}getSendFlags(){switch(this.state){case Ri.Init:return this.state=Ri.SYNSent,Ot.SYN;case Ri.SYNReceived:return this.state=Ri.Established,Ot.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 i=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:jt.WindowUpdate,flag:e,streamID:this._id,length:i})}};var Ck="/yamux/1.0.0",Vj=500,sy=class{protocol=Ck;_components;_init;constructor(e,t={}){this._components=e,this._init=t}[Symbol.toStringTag]="@chainsafe/libp2p-yamux";[tt]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new h9(this._components,{...this._init,...e})}},h9=class{protocol=Ck;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={...Sk,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Ak(this.config),this.closeController=new AbortController,this.closeController.signal,this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=Xr({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let i=()=>{let a=Hf(n);if(a.return!=null){let c=a.return();zj(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},o,s;try{let a=new ny(n);try{this.closeController.signal.addEventListener("abort",i);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",i)}o=Pi.NormalTermination}catch(a){vk.has(a.name)?(this.log?.error("protocol error in sink",a),o=Pi.ProtocolError):(this.log?.error("internal error in sink",a),o=Pi.InternalError),s=a}this.log?.trace("muxer sink ended"),s!=null?this.abort(s,o):await this.close({reason:o})},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 Oo("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Oo("Muxer closed locally");let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new ca("max outbound streams exceeded");this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,Ri.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new Oo("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Oo("Muxer closed locally");if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((i,o)=>{let s=()=>{o(new Oo("Muxer closed locally"))};this.closeController.signal.addEventListener("abort",s,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",s),i()}}),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??Pi.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(Vj);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??Pi.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,i){if(this._streams.get(e)!=null)throw new U("Stream already exists with that id");let o=new oy({id:e.toString(),name:t,state:n,direction:i,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(o)},log:this.logger.forComponent(`libp2p:yamux:${i}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return o}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:i,length:o}=e;if(this.log?.trace("received frame %o",e),n===0)switch(i){case jt.Ping:{this.handlePing(e);return}case jt.GoAway:{this.handleGoAway(o);return}default:throw new yo("Invalid frame type")}else switch(e.type){case jt.Data:case jt.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new yo("Invalid frame type")}}handlePing(e){if(e.flag===Ot.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,Ot.ACK);else if(e.flag===Ot.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new yo("Invalid frame flag")}handlePingResponse(e){if(this.activePing===void 0)throw new Vf("ping not requested");if(this.activePing.id!==e)throw new zf("ping doesn't match our id");this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Pi[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:i,type:o}=e;(i&Ot.SYN)===Ot.SYN&&this.incomingStream(n);let s=this._streams.get(n);if(s===void 0){if(o===jt.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.trace("frame for missing stream id=%s",n);return}switch(o){case jt.WindowUpdate:{s.handleWindowUpdate(e);return}case jt.Data:{if(t===void 0)throw new Error("unreachable");await s.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new U("Both endpoints are clients");if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,Ri.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===jt.Data){if(t===void 0)throw new yo("Invalid frame");this.source.push(new oe(f9(e),t))}else this.source.push(f9(e))}sendPing(e,t=Ot.SYN){t===Ot.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:jt.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Pi.NormalTermination){this.log?.("sending GoAway reason=%s",Pi[e]),this.localGoAway=e,this.sendFrame({type:jt.GoAway,flag:0,streamID:0,length:e})}};function zj(r){return r!=null&&typeof r.then=="function"}function kk(r={}){return e=>new sy(e,r)}var Kj=41;function ay(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!1;if(e===Kj)return WT("2000::/3",t)}catch{}return!1}function cy(r){try{let[[e]]=r.stringTuples();return e===4||e===41}catch{}return!1}function Di(r){try{if(!cy(r))return!1;let[[,e]]=r.stringTuples();return e==null?!1:bn(e)??!1}catch{}return!0}function Pk(r,e,t){let n,i;function o(){let a={signal:i.signal};if(t?.timeout!=null){let c=Ne([i.signal,AbortSignal.timeout(t.timeout)]);a.signal=c}Promise.resolve().then(async()=>{await r(a)}).catch(()=>{}).finally(()=>{i.signal.aborted||(n=setTimeout(o,e))})}let s=!1;return{setInterval:a=>{e=a,n!=null&&(clearTimeout(n),n=setTimeout(o,e))},setTimeout:a=>{t==null&&(t={}),t.timeout=a},start:()=>{s||(s=!0,i=new AbortController,i.signal,t?.runImmediately===!0?queueMicrotask(()=>{o()}):n=setTimeout(o,e))},stop:()=>{clearTimeout(n),i?.abort(),s=!1}}}var ly=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},uy=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},fy=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Rk(r,e={}){let t=go(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read({...s,bytes:1}));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new ly("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new fy("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new uy("message length too long");return t.read({...s,bytes:a})},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function ir(r,e){let t=Rk(r,e),n={read:async(i,o)=>{let s=await t.read(o);return i.decode(s)},write:async(i,o,s)=>{await t.write(o.encode(i),s)},writeV:async(i,o,s)=>{await t.writeV(i.map(a=>o.encode(a)),s)},pb:i=>({read:async o=>n.read(i,o),write:async(o,s)=>n.write(o,i,s),writeV:async(o,s)=>n.writeV(o,i,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Dk="libp2p",Nk="autonat",Ok="1.0.0";var Pt;(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=()=>St(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 i;(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"})(i||(i={})),function(l){l.codec=()=>St(i)}(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{if(d.lengthDelimited!==!1&&h.fork(),f.id!=null&&(h.uint32(10),h.bytes(f.id)),f.addrs!=null)for(let m of f.addrs)h.uint32(18),h.bytes(m);d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={addrs:[]},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.id=f.bytes();break}case 2:{if(d.limits?.addrs!=null&&m.addrs.length===d.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');m.addrs.push(f.bytes());break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(o=r.PeerInfo||(r.PeerInfo={}));let s;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(f.peer,h)),d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.peer=r.PeerInfo.codec().decode(f,f.uint32(),{limits:d.limits?.peer});break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(s=r.Dial||(r.Dial={}));let a;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(f.status,h)),f.statusText!=null&&(h.uint32(18),h.string(f.statusText)),f.addr!=null&&(h.uint32(26),h.bytes(f.addr)),d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.status=r.ResponseStatus.codec().decode(f);break}case 2:{m.statusText=f.string();break}case 3:{m.addr=f.bytes();break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=Ee((l,u,f={})=>{f.lengthDelimited!==!1&&u.fork(),l.type!=null&&(u.uint32(8),r.MessageType.codec().encode(l.type,u)),l.dial!=null&&(u.uint32(18),r.Dial.codec().encode(l.dial,u)),l.dialResponse!=null&&(u.uint32(26),r.DialResponse.codec().encode(l.dialResponse,u)),f.lengthDelimited!==!1&&u.ldelim()},(l,u,f={})=>{let h={},d=u==null?l.len:l.pos+u;for(;l.pos<d;){let m=l.uint32();switch(m>>>3){case 1:{h.type=r.MessageType.codec().decode(l);break}case 2:{h.dial=r.Dial.codec().decode(l,l.uint32(),{limits:f.limits?.dial});break}case 3:{h.dialResponse=r.DialResponse.codec().decode(l,l.uint32(),{limits:f.limits?.dialResponse});break}default:{l.skipType(m&7);break}}}return h})),c),r.encode=l=>ve(l,r.codec()),r.decode=(l,u)=>be(l,r.codec(),u)})(Pt||(Pt={}));var Yj=4,Qj=8,dy=class{components;protocol;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;started;log;topologyId;dialResults;findPeers;addressFilter;connectionThreshold;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:auto-nat"),this.started=!1,this.protocol=`/${t.protocolPrefix??Dk}/${Nk}/${Ok}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??20,this.connectionThreshold=t.connectionThreshold??80,this.maxMessageSize=t.maxMessageSize??8192,this.dialResults=new Map,this.findPeers=Pk(this.findRandomPeers.bind(this),6e4),this.addressFilter=Tn(1024)}[Symbol.toStringTag]="@libp2p/autonat";[tt]=["@libp2p/autonat"];get[Jn](){return["@libp2p/identify"]}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 - %e",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.topologyId=await this.components.registrar.register(this.protocol,{onConnect:(e,t)=>{this.verifyExternalAddresses(t).catch(n=>{this.log.error("could not verify addresses - %e",n)})}}),this.findPeers.start(),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.topologyId!=null&&await this.components.registrar.unhandle(this.topologyId),this.dialResults.clear(),this.findPeers.stop(),this.started=!1}allAddressesAreVerified(){return this.components.addressManager.getAddressesWithMetadata().every(e=>e.expires>Date.now()?!0:e.verified)}async findRandomPeers(e){if(this.allAddressesAreVerified())return;let t=Ne([AbortSignal.timeout(1e4),e?.signal]);try{this.log("starting random walk to find peers to run AutoNAT");for await(let n of this.components.randomWalk.walk({signal:t})){if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable %s",n.id,n.multiaddrs.map(i=>i.toString()).join(", "));continue}try{this.log.trace("dial random peer %p",n.id),await this.components.connectionManager.openConnection(n.multiaddrs,{signal:t})}catch{}if(this.allAddressesAreVerified()){this.log("stopping random walk, all addresses are verified");return}if(!this.hasConnectionCapacity()){this.log("stopping random walk, too close to max connections");return}}}catch{}}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout);let n=ir(e.stream,{maxDataLength:this.maxMessageSize}).pb(Pt);try{let i=await n.read({signal:t}),o=await this.handleAutonatMessage(i,e.connection,{signal:t});await n.write(o,{signal:t}),await n.unwrap().unwrap().close({signal:t})}catch(i){this.log.error("error handling incoming autonat stream - %e",i),e.stream.abort(i)}}async handleAutonatMessage(e,t,n){let i=this.components.addressManager.getAddresses().map(f=>f.toOptions().host),o=e.dial;if(o==null)return this.log.error("dial was missing from message"),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}};let s,a=o.peer;if(a?.id==null)return this.log.error("PeerId missing from message"),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}};try{let f=Ue(a.id);s=ur(f)}catch(f){return this.log.error("invalid PeerId - %e",f),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}}}if(this.log("incoming request from %p",s),!t.remotePeer.equals(s))return this.log("target peer %p did not equal sending peer %p",s,t.remotePeer),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}};let c=a.addrs.map(f=>se(f)).filter(f=>{let h=f.toOptions();return Di(f)?!1:h.host!==t.remoteAddr.toOptions().host?(this.log.trace("not dialing %a - target host did not match remote host %a",f,t.remoteAddr),!1):i.includes(h.host)?!1:this.components.transportManager.dialTransportForMultiaddr(f)==null?(this.log.trace("not dialing %a - transport unsupported",f),!1):!0}).map(f=>(f.getPeerId()==null&&(f=f.encapsulate(`/p2p/${s.toString()}`)),f));if(c.length===0)return this.log("refused to dial all multiaddrs for %p from message",s),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}};this.log("dial multiaddrs %s for peer %p",c.map(f=>f.toString()).join(", "),s);let l="",u=c[0];for await(let f of c){let h;u=f;try{if(h=await this.components.connectionManager.openConnection(f,n),!h.remoteAddr.equals(f))throw this.log.error("tried to dial %a but dialed %a",f,h.remoteAddr),new Error("Unexpected remote address");return this.log("successfully dialed %p via %a",s,f),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.OK,addr:h.remoteAddr.decapsulateCode(Ie("p2p").code).bytes}}}catch(d){this.log.error("could not dial %p - %e",s,d),l=d.message}finally{h!=null&&await h.close()}}return{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_DIAL_ERROR,statusText:l,addr:u.bytes}}}getFirstUnverifiedMultiaddr(e,t){let n=this.components.addressManager.getAddressesWithMetadata().sort((i,o)=>i.type==="observed"&&o.type!=="observed"?1:o.type==="observed"&&i.type!=="observed"?-1:0).filter(i=>!(!(i.expires<Date.now())||i.multiaddr.toOptions().family===6&&(!t||!ay(i.multiaddr))||Di(i.multiaddr)));for(let i of n){let o=i.multiaddr.toString(),s=this.dialResults.get(o);if(s!=null){if(s.networkSegments.includes(e)){this.log.trace("%a already has a network segment result from %s",s.multiaddr,e);continue}if(s.queue.size>10){this.log.trace("%a already has enough peers queued",s.multiaddr);continue}}if(s==null){let a=i.expires<Date.now();if(a&&this.addressFilter.remove?.(o),this.addressFilter.has(o))continue;this.addressFilter.add(o),this.log.trace("creating dial result %s %s",a?"to revalidate":"for",o),s={multiaddr:i.multiaddr,success:0,failure:0,networkSegments:[],verifyingPeers:r7(),queue:new kr({concurrency:3,maxSize:50}),type:i.type,lastVerified:i.lastVerified},this.dialResults.set(o,s)}return s}}removeOutdatedMultiaddrResults(){let e=new Set(this.components.addressManager.getAddressesWithMetadata().filter(({expires:t})=>t<Date.now()).map(({multiaddr:t})=>t.toString()));for(let t of this.dialResults.keys())e.has(t)||(this.log.trace("remove results for %a",t),this.dialResults.delete(t))}async verifyExternalAddresses(e){if(!this.isStarted())return;this.removeOutdatedMultiaddrResults();let n=(await this.components.peerStore.get(e.remotePeer)).addresses.some(({multiaddr:s})=>s.toOptions().family===6),i=this.getNetworkSegment(e.remoteAddr),o=this.getFirstUnverifiedMultiaddr(i,n);if(o==null){this.log.trace("no unverified public addresses found for peer %p to verify, not requesting verification",e.remotePeer);return}if(!this.hasConnectionCapacity()){o.lastVerified!=null?(this.log("automatically re-verifying %a because we are too close to the connection limit",o.multiaddr),this.confirmAddress(o)):this.log("skipping verifying %a because we are too close to the connection limit",o.multiaddr);return}o.queue.add(async s=>{await this.askPeerToVerify(e,i,s)},{peerId:e.remotePeer,multiaddr:o.multiaddr}).catch(s=>{o?.result==null&&this.log.error("error from %p verifying address %a - %e",e.remotePeer,o?.multiaddr,s)})}async askPeerToVerify(e,t,n){let i=this.dialResults.get(n.multiaddr.toString());if(i==null){this.log("%a was verified while %p was queued",n.multiaddr,e.remotePeer);return}let o=AbortSignal.timeout(this.timeout);this.log.trace("asking %p to verify multiaddr %s",e.remotePeer,n.multiaddr);let s=await e.newStream(this.protocol,{signal:o});try{let a=ir(s).pb(Pt),[,c]=await Promise.all([a.write({type:Pt.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toMultihash().bytes,addrs:[n.multiaddr.bytes]}}},{signal:o}),a.read({signal:o})]);if(c.type!==Pt.MessageType.DIAL_RESPONSE||c.dialResponse==null){this.log("invalid autonat response from %p - %j",e.remotePeer,c);return}let l=c.dialResponse.status;if(this.log.trace("autonat response from %p for %a is %s",e.remotePeer,n.multiaddr,l),l!==Pt.ResponseStatus.OK&&l!==Pt.ResponseStatus.E_DIAL_ERROR)return;if(i=this.dialResults.get(n.multiaddr.toString()),i==null){this.log.trace("peer reported %a as %s but there is no result object",n.multiaddr,c.dialResponse.status);return}if(i.networkSegments.includes(t)){this.log.trace("%a results included network segment %s",n.multiaddr,t);return}if(i.result!=null){this.log.trace("already resolved result for %a, ignoring response from",n.multiaddr,e.remotePeer);return}if(i.verifyingPeers.has(e.remotePeer)){this.log.trace("peer %p has already verified %a, ignoring response",e.remotePeer,n.multiaddr);return}if(i.verifyingPeers.add(e.remotePeer),i.networkSegments.push(t),l===Pt.ResponseStatus.OK){if(i.success++,i.type!=="observed"){this.confirmAddress(i);return}}else l===Pt.ResponseStatus.E_DIAL_ERROR&&i.failure++;this.log("%a success %d failure %d",i.multiaddr,i.success,i.failure),i.success===Yj&&this.confirmAddress(i),i.failure===Qj&&this.unconfirmAddress(i)}finally{try{await s.close({signal:o})}catch(a){s.abort(a)}}}hasConnectionCapacity(){let t=this.components.connectionManager.getConnections().length,n=this.components.connectionManager.getMaxConnections();return t/n*100<this.connectionThreshold}confirmAddress(e){this.log("%s address %a is externally dialable",e.type,e.multiaddr),this.components.addressManager.confirmObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!0,e.queue.abort()}unconfirmAddress(e){this.log("%s address %a is not externally dialable",e.type,e.multiaddr),this.components.addressManager.removeObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!1,e.queue.abort()}getNetworkSegment(e){let t=e.toOptions();return t.family===4?t.host.split(".")[0].padStart(3,"0"):t.host.split(":")[0].padStart(4,"0")}};function Lk(r={}){return e=>new dy(e,r)}var Zj=ce("dns4"),Jj=ce("dns6"),eW=ce("dnsaddr"),El=or(ce("dns"),eW,Zj,Jj),my=or(ce("ip4"),ce("ip6")),qf=or(Ce(my,ce("tcp")),Ce(El,ce("tcp"))),gy=Ce(my,ce("udp")),tW=Ce(gy,ce("utp")),rW=Ce(gy,ce("quic")),nW=Ce(gy,ce("quic-v1")),p9=or(Ce(qf,ce("ws")),Ce(El,ce("ws"))),hy=or(Ce(p9,ce("p2p")),p9),m9=or(Ce(qf,ce("wss")),Ce(El,ce("wss")),Ce(qf,ce("tls"),ce("ws")),Ce(El,ce("tls"),ce("ws"))),py=or(Ce(m9,ce("p2p")),m9),g9=or(Ce(qf,ce("http")),Ce(my,ce("http")),Ce(El,ce("http"))),y9=or(Ce(qf,ce("https")),Ce(my,ce("https")),Ce(El,ce("https"))),Bk=Ce(gy,ce("webrtc-direct"),ce("certhash")),Fk=or(Ce(Bk,ce("p2p")),Bk),Mk=Ce(nW,ce("webtransport"),ce("certhash"),ce("certhash")),$k=or(Ce(Mk,ce("p2p")),Mk),Hk=or(Ce(hy,ce("p2p-webrtc-star"),ce("p2p")),Ce(py,ce("p2p-webrtc-star"),ce("p2p")),Ce(hy,ce("p2p-webrtc-star")),Ce(py,ce("p2p-webrtc-star"))),d5e=or(Ce(hy,ce("p2p-websocket-star"),ce("p2p")),Ce(py,ce("p2p-websocket-star"),ce("p2p")),Ce(hy,ce("p2p-websocket-star")),Ce(py,ce("p2p-websocket-star"))),Vk=or(Ce(g9,ce("p2p-webrtc-direct"),ce("p2p")),Ce(y9,ce("p2p-webrtc-direct"),ce("p2p")),Ce(g9,ce("p2p-webrtc-direct")),Ce(y9,ce("p2p-webrtc-direct"))),Sl=or(p9,m9,g9,y9,Hk,Vk,qf,tW,rW,El,Fk,$k),h5e=or(Ce(Sl,ce("p2p-stardust"),ce("p2p")),Ce(Sl,ce("p2p-stardust"))),Ba=or(Ce(Sl,ce("p2p")),Hk,Vk,Fk,$k,ce("p2p")),Uk=or(Ce(Ba,ce("p2p-circuit"),Ba),Ce(Ba,ce("p2p-circuit")),Ce(ce("p2p-circuit"),Ba),Ce(Sl,ce("p2p-circuit")),Ce(ce("p2p-circuit"),Sl),ce("p2p-circuit")),zk=()=>or(Ce(Uk,zk),Uk),vl=zk(),Kk=or(Ce(vl,Ba,vl),Ce(Ba,vl),Ce(vl,Ba),vl,Ba);var p5e=or(Ce(vl,ce("webrtc"),ce("p2p")),Ce(vl,ce("webrtc")),Ce(Sl,ce("webrtc"),ce("p2p")),Ce(Sl,ce("webrtc")),ce("webrtc"));function qk(r){function e(t){let n;try{n=se(t)}catch{return!1}let i=r(n.protoNames());return i===null?!1:i===!0||i===!1?i:i.length===0}return e}function Ce(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(i=>(n=typeof i=="function"?i().partialMatch(t):i.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:qk(e),partialMatch:e}}function or(...r){function e(n){let i=null;return r.some(o=>{let s=typeof o=="function"?o().partialMatch(n):o.partialMatch(n);return s!=null?(i=s,!0):!1}),i}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:qk(e),partialMatch:e}}function ce(r){let e=r;function t(i){let o;try{o=se(i)}catch{return!1}let s=o.protoNames();return s.length===1&&s[0]===e}function n(i){return i.length===0?null:i[0]===e?i.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var iW="bootstrap",oW=50,sW=1e3,w9=class extends Me{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??sW,this.list=[];for(let n of t.list){if(!Kk.matches(n)){this.log.error("Invalid multiaddr");continue}let i=se(n),o=i.getPeerId();if(o==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let s={id:at(o),multiaddrs:[i]};this.list.push(s)}this._init=t}[_c]=this;[Symbol.toStringTag]="@libp2p/bootstrap";[tt]=["@libp2p/peer-discovery"];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??iW]:{value:this._init.tagValue??oW,ttl:this._init.tagTTL}},multiaddrs:e.multiaddrs}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e}),this.components.connectionManager.openConnection(e.id).catch(t=>{this.log.error("could not dial bootstrap peer %p",e.id,t)})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function jk(r){return e=>new w9(e,r)}var Mp;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={publicKey:Pe(0),payloadType:Pe(0),payload:Pe(0),signature:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Mp||(Mp={}));var yy=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var ai=class r{static createFromProtobuf=async e=>{let t=Mp.decode(e),n=tr(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,i=e.codec,o=e.marshal(),s=Wk(n,i,o),a=await t.sign(s.subarray());return new r({publicKey:t.publicKey,payloadType:i,payload:o,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new yy("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:i,signature:o}=e;this.publicKey=t,this.payloadType=n,this.payload=i,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=Mp.encode({publicKey:lr(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return pe(this.marshal(),e.marshal())}async validate(e){let t=Wk(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},Wk=(r,e,t)=>{let n=O(r),i=ht(n.byteLength),o=ht(e.length),s=ht(t.length);return new oe(i,n,o,e,s,t)};function Gk(r,e){let t=(n,i)=>n.toString().localeCompare(i.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,i)=>e[i].equals(n)))}var Xk="libp2p-peer-record",Yk=Uint8Array.from([3,1]);var Up;(function(r){let e;(function(n){let i;n.codec=()=>(i==null&&(i=Ee((o,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),o.multiaddr!=null&&o.multiaddr.byteLength>0&&(s.uint32(10),s.bytes(o.multiaddr)),a.lengthDelimited!==!1&&s.ldelim()},(o,s,a={})=>{let c={multiaddr:Pe(0)},l=s==null?o.len:o.pos+s;for(;o.pos<l;){let u=o.uint32();switch(u>>>3){case 1:{c.multiaddr=o.bytes();break}default:{o.skipType(u&7);break}}}return c})),i),n.encode=o=>ve(o,n.codec()),n.decode=(o,s)=>be(o,n.codec(),s)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Ee((n,i,o={})=>{if(o.lengthDelimited!==!1&&i.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(i.uint32(10),i.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(i.uint32(16),i.uint64(n.seq)),n.addresses!=null)for(let s of n.addresses)i.uint32(26),r.AddressInfo.codec().encode(s,i);o.lengthDelimited!==!1&&i.ldelim()},(n,i,o={})=>{let s={peerId:Pe(0),seq:0n,addresses:[]},a=i==null?n.len:n.pos+i;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{s.peerId=n.bytes();break}case 2:{s.seq=n.uint64();break}case 3:{if(o.limits?.addresses!=null&&s.addresses.length===o.limits.addresses)throw new wt('Decode error - map field "addresses" had too many elements');s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:o.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return s})),t),r.encode=n=>ve(n,r.codec()),r.decode=(n,i)=>be(n,r.codec(),i)})(Up||(Up={}));var vn=class r{static createFromProtobuf=e=>{let t=Up.decode(e),n=ur(Ue(t.peerId)),i=(t.addresses??[]).map(s=>se(s.multiaddr)),o=t.seq;return new r({peerId:n,multiaddrs:i,seqNumber:o})};static DOMAIN=Xk;static CODEC=Yk;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:i}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=i??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Up.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!Gk(this.multiaddrs,e.multiaddrs))}};var x9=1e3,Qk=60*x9,Zk=290;var W5e=2*60*Qk,Jk=1,wy=2e3,eP=100;var Fp=`${ia}-circuit-relay`,G5e=`${ia}-circuit-relay-source`,X5e=2*Qk,Y5e=BigInt(1<<17),Al="/libp2p/circuit/relay/0.2.0/hop",b9="/libp2p/circuit/relay/0.2.0/stop",Q5e=30*x9,Z5e=30*x9,v9=300,tP=4096,rP=.001;var Ma;(function(r){let e;(function(i){i.RESERVE="RESERVE",i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.RESERVE=0]="RESERVE",i[i.CONNECT=1]="CONNECT",i[i.STATUS=2]="STATUS"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.peer!=null&&(o.uint32(18),jf.codec().encode(i.peer,o)),i.reservation!=null&&(o.uint32(26),xy.codec().encode(i.reservation,o)),i.limit!=null&&(o.uint32(34),Wf.codec().encode(i.limit,o)),i.status!=null&&(o.uint32(40),Br.codec().encode(i.status,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{a.peer=jf.codec().decode(i,i.uint32(),{limits:s.limits?.peer});break}case 3:{a.reservation=xy.codec().decode(i,i.uint32(),{limits:s.limits?.reservation});break}case 4:{a.limit=Wf.codec().decode(i,i.uint32(),{limits:s.limits?.limit});break}case 5:{a.status=Br.codec().decode(i);break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(Ma||(Ma={}));var jo;(function(r){let e;(function(i){i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.CONNECT=0]="CONNECT",i[i.STATUS=1]="STATUS"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.peer!=null&&(o.uint32(18),jf.codec().encode(i.peer,o)),i.limit!=null&&(o.uint32(26),Wf.codec().encode(i.limit,o)),i.status!=null&&(o.uint32(32),Br.codec().encode(i.status,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{a.peer=jf.codec().decode(i,i.uint32(),{limits:s.limits?.peer});break}case 3:{a.limit=Wf.codec().decode(i,i.uint32(),{limits:s.limits?.limit});break}case 4:{a.status=Br.codec().decode(i);break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(jo||(jo={}));var jf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let o of t.addrs)n.uint32(18),n.bytes(o);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={id:Pe(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.id=t.bytes();break}case 2:{if(i.limits?.addrs!=null&&o.addrs.length===i.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');o.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(jf||(jf={}));var xy;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let o of t.addrs)n.uint32(18),n.bytes(o);t.voucher!=null&&(n.uint32(26),vy.codec().encode(t.voucher,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.expire=t.uint64();break}case 2:{if(i.limits?.addrs!=null&&o.addrs.length===i.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');o.addrs.push(t.bytes());break}case 3:{o.voucher=vy.codec().decode(t,t.uint32(),{limits:i.limits?.voucher});break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(xy||(xy={}));var Wf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.duration=t.uint32();break}case 2:{o.data=t.uint64();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Wf||(Wf={}));var Br;(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"})(Br||(Br={}));var E9;(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"})(E9||(E9={}));(function(r){r.codec=()=>St(E9)})(Br||(Br={}));var by;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={relay:Pe(0),peer:Pe(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(by||(by={}));var vy;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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&&(n.uint32(26),by.codec().encode(t.payload,n)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={publicKey:Pe(0),payloadType:Pe(0),signature:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.publicKey=t.bytes();break}case 2:{o.payloadType=t.bytes();break}case 3:{o.payload=by.codec().decode(t,t.uint32(),{limits:i.limits?.payload});break}case 5:{o.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(vy||(vy={}));var $p=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},Ey=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},Sy=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};function S9(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Hp=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},Ay=gt(Ge(Zg.matchers[0],$e("p2p-circuit"))),_y=gt($e("p2p-circuit"));function A9(r){let{stream:e,remoteAddr:t,logger:n,onDataRead:i,onDataWrite:o}=r,s=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,l=e.close.bind(e);e.close=async m=>{await l(m),d(!0)};let u=e.abort.bind(e);e.abort=m=>{u(m),d(!0)};let f=e.sink.bind(e);e.sink=async m=>{try{await f(ot(m,g=>ll(g,w=>o?.(w))))}catch(g){g.type!=="aborted"&&s.error("%s error in sink",t,g)}finally{c=!0,d()}};let h={log:s,sink:e.sink,source:async function*(){try{for await(let m of e.source)i?.(m),yield m}finally{a=!0,d()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function d(m){m===!0&&(a=!0,c=!0),a&&c&&h.timeline.close==null&&(h.timeline.close=Date.now())}return h}var Iy=class extends Me{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,this.discoveryController.signal}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Al,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,this.discoveryController.signal,Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(Al)],orders:[()=>Math.random()<.5?1:-1,(n,i)=>{let o=nP(n),s=nP(i);return o>s?-1:s>o?1:0}]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=this.queue=new kr({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(i=>i.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(async()=>{let i=Ne([this.discoveryController.signal,AbortSignal.timeout(5e3)]);try{await this.connectionManager.openConnection(n.id,{signal:i})}finally{i.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(i=>{this.log.error("error opening connection to random peer %p",n.id,i)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};function nP(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(H(e)).getTime()}var _9=class extends Me{connectionManager;addressManager;reservationStore;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.addressManager=e.addressManager,this.reservationStore=e.reservationStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??wy,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs.forEach(t=>{this.addressManager.removeObservedAddr(t)}),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{details:t}=e.detail;t.type!=="configured"&&t.id===this.reservationId&&this.addedRelay(e.detail)};async listen(e){if(_y.exactMatch(e))this.log("searching for circuit relay servers"),this.reservationId=this.reservationStore.reserveRelay();else if(Ay.exactMatch(e)){this.log("listen on specific relay server %a",e);let t=AbortSignal.timeout(this.listenTimeout);let n=e.decapsulate("/p2p-circuit"),i=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(i.remotePeer)){this.log("making reservation on peer %p",i.remotePeer);let o=await this.reservationStore.addRelay(i.remotePeer,"configured");this.addedRelay(o)}}else throw new Cc(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}updateAnnounceAddrs(){}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}addedRelay(e){this.log("relay peer added %p",e.relay),this.relay=e.relay,this.listeningAddrs=e.details.reservation.addrs.map(t=>se(t).encapsulate("/p2p-circuit")),this.listeningAddrs.forEach(t=>{this.addressManager.confirmObservedAddr(t,{type:"transport"})}),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}};function iP(r){return new _9(r)}var oP="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var sP=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=oP[t[r]&63];return e};var aW=60*1e3*10,cW=60*1e3*5,lW=30*1e3,Ty=class extends Me{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new _r,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??eP,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??wy,this.started=!1,this.relayFilter=Tn(100),this.reserveQueue=new kr({concurrency:t?.reservationConcurrency??Jk,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(o=>o.connection===n.detail.id)!=null&&this.#r(n.detail.remotePeer).catch(o=>{this.log("could not remove relay %p - %e",n.detail,o)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(Fp)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[Fp]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#n()}).catch(e=>{this.log.error(e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=sP();return this.pendingReservations.push(e),this.#n(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new Cc("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new Sy("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new Cc("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let i=Date.now();try{let o=this.reservations.get(e);if(o!=null){let m=this.connectionManager.getConnections(e),g=!1;if(m.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),m.map(w=>w.id).includes(o.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),g=!0),g&&S9(o.reservation.expire)>aW)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:o};await this.#r(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new $p("Not making reservation on discovered relay because we do not need any more relays");let s=AbortSignal.timeout(this.reservationCompletionTimeout);let a=await this.connectionManager.openConnection(e,{signal:s});if(Rn.matches(a.remoteAddr))throw new Ey("not creating reservation over relayed connection");let c=await this.#e(a,{signal:s}),l=S9(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+l).toString());let u=Math.min(Math.max(l-cW,lW),Math.pow(2,31)-1),f=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async m=>{this.log.error("could not refresh reservation to relay %p - %e",e,m),await this.#r(e)}).catch(m=>{this.log.error("could not remove expired reservation to relay %p - %e",e,m)})},u),h;if(t==="discovered"){let m=this.pendingReservations.pop();if(m==null)throw new $p("Made reservation on relay but did not need any more discovered relays");h={timeout:f,reservation:c,type:t,connection:a.id,id:m}}else h={timeout:f,reservation:c,type:t,connection:a.id};this.reservations.set(e,h),await this.peerStore.merge(e,{tags:{[Fp]:{value:1,ttl:l}}}),this.#n();let d={relay:e,details:h};return this.safeDispatchEvent("relay:created-reservation",{detail:d}),d}catch(o){throw t==="discovered"&&o.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-i,o),(o.name==="DialError"||o.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#r(e).catch(s=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,s)}),o}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Al,t),o=ir(n).pb(Ma);this.log.trace("send RESERVE to %p",e.remotePeer),await o.write({type:Ma.Type.RESERVE},t);let s;try{this.log.trace("reading response from %p",e.remotePeer),s=await o.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %o",s),s.status===Br.OK&&s.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let l of s.reservation.addrs){let u=se(l);u.getPeerId()==null&&(u=u.encapsulate(`/p2p/${e.remotePeer}`)),u=se(u.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(u.toString())}return s.reservation.addrs=[...c].map(l=>se(l).bytes),s.reservation}let a=`reservation failed with status ${s.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#r(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[Fp]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#n())}#n(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Tn(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var uW=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(se)}catch{return!1}return!0},aP={maxInboundStopStreams:v9,maxOutboundStopStreams:v9,stopTimeout:3e4},Cy=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;started;log;shutdownController;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??aP.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??aP.maxOutboundStopStreams,this.shutdownController=new AbortController,this.discovery=new Iy(e,{filter:t.discoveryFilter??s7(tP,rP)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(i=>{i.name!=="HadEnoughRelaysError"&&i.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p",n.detail,i)})}),this.reservationStore=new Ty(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[tt]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Jn](){return this.discovery!=null?["@libp2p/identify"]:[]}[oa]=!0;isStarted(){return this.started}async start(){this.shutdownController=new AbortController,await this.registrar.handle(b9,e=>{let t=this.upgrader.createInboundAbortSignal(this.shutdownController.signal);this.onStop(e,t).catch(n=>{this.log.error("error while handling STOP protocol",n),e.stream.abort(n)}).finally(()=>{t.clear()})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Cr(this.discovery,this.reservationStore),this.started=!0}async stop(){this.shutdownController.abort(),await Gr(this.discovery,this.reservationStore),await this.registrar.unhandle(b9),this.started=!1}async dial(e,t){if(e.protoCodes().filter(d=>d===Zk).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,e),new ms(d)}let n=e.toString().split("/p2p-circuit"),i=se(n[0]),o=se(n[n.length-1]),s=i.getPeerId(),a=o.getPeerId();if(s==null||a==null){let d=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${d}`),new ms(`C${d}`)}let c=at(s),l=at(a),f=this.connectionManager.getConnections(c)[0];f==null?(await this.peerStore.merge(c,{multiaddrs:[i]}),t.onProgress?.(new G("circuit-relay:open-connection")),f=await this.connectionManager.openConnection(c,t)):t.onProgress?.(new G("circuit-relay:reuse-connection"));let h;try{t.onProgress?.(new G("circuit-relay:open-hop-stream")),h=await f.newStream(Al,t);let d=ir(h),m=d.pb(Ma);t.onProgress?.(new G("circuit-relay:write-connect-message")),await m.write({type:Ma.Type.CONNECT,peer:{id:l.toMultihash().bytes,addrs:[se(o).bytes]}},t),t.onProgress?.(new G("circuit-relay:read-connect-response"));let g=await m.read(t);if(g.status!==Br.OK)throw new Be(`failed to connect via relay with status ${g?.status?.toString()??"undefined"}`);let w=new Hp(g.limit),x=A9({stream:d.unwrap(),remoteAddr:e,localAddr:i.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:w.onData,onDataWrite:w.onData});return this.log("new outbound relayed connection %a",x.remoteAddr),await this.upgrader.upgradeOutbound(x,{...t,limits:w.getLimits()})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,d),h?.abort(d),d}}createListener(e){return iP({peerId:this.peerId,connectionManager:this.connectionManager,addressManager:this.addressManager,reservationStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Ay.exactMatch(t)||_y.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Rn.exactMatch(t))}async onStop({connection:e,stream:t},n){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(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let i=ir(t).pb(jo),o=await i.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,o.type),o?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(o.type!==jo.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!uW(o)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.MALFORMED_MESSAGE},{signal:n}),await t.close({signal:n});return}let s=ur(Ue(o.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,s)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.PERMISSION_DENIED},{signal:n}),await t.close({signal:n});return}this.log.trace("sending success response to %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.OK},{signal:n});let a=new Hp(o.limit),c=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${s.toString()}`),l=this.addressManager.getAddresses()[0],u=A9({stream:i.unwrap().unwrap(),remoteAddr:c,localAddr:l,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",u.remoteAddr),await this.upgrader.upgradeInbound(u,{limits:a.getLimits(),signal:n}),this.log("%s connection %a upgraded","inbound",u.remoteAddr)}};function I9(r={}){return e=>new Cy(e,r)}var cP=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},fW=new WeakMap;function dW({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:i}={})=>{if(i?.aborted)return Promise.reject(cP());let o,s,a,c=r??clearTimeout,l=()=>{c(o),a(cP())},u=()=>{i&&i.removeEventListener("abort",l)},f=new Promise((h,d)=>{s=()=>{u(),h(n)},a=d,o=(e??setTimeout)(s,t)});return i&&i.addEventListener("abort",l,{once:!0}),fW.set(f,()=>{c(o),o=null,s()}),f}}var hW=dW(),ky=hW;var wo;(function(r){let e;(function(i){i.UNUSED="UNUSED",i.CONNECT="CONNECT",i.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.UNUSED=0]="UNUSED",i[i.CONNECT=100]="CONNECT",i[i.SYNC=300]="SYNC"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.observedAddresses!=null)for(let a of i.observedAddresses)o.uint32(18),o.bytes(a);s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={observedAddresses:[]},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{if(s.limits?.observedAddresses!=null&&a.observedAddresses.length===s.limits.observedAddresses)throw new wt('Decode error - map field "observedAddresses" had too many elements');a.observedAddresses.push(i.bytes());break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(wo||(wo={}));function T9(r,e){return Rn.matches(r)||e.dialTransportForMultiaddr(r)==null?!1:wp.matches(r)?!0:OT.matches(r)?bn(r.toOptions().host)===!1:!1}var lP=1024*4,uP=100,Py={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},Ry=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??Py.timeout,this.retries=t.retries??Py.retries,this.maxInboundStreams=t.maxInboundStreams??Py.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Py.maxOutboundStreams}[Symbol.toStringTag]="@libp2p/dcutr";[Jn]=["@libp2p/identify"];isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(Vp,{notifyOnLimitedConnection:!0,onConnect:(e,t)=>{Rn.exactMatch(t.remoteAddr)&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(Vp,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,runOnLimitedConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(Vp),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 i={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([Vp],{signal:i.signal,runOnLimitedConnection:!0});let o=ir(t,{maxDataLength:lP}).pb(wo);this.log("B sending connect to %p",e.remotePeer);let s=Date.now();await o.write({type:wo.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(f=>f.bytes)},i),this.log("B receiving connect from %p",e.remotePeer);let a=await o.read(i);if(a.type!==wo.Type.CONNECT)throw this.log("A sent wrong message type"),new Be("DCUtR message type was incorrect");let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new Be("DCUtR connect message had no multiaddrs");let l=Date.now()-s;this.log("A sending sync, rtt %dms",l),await o.write({type:wo.Type.SYNC,observedAddresses:[]},i),this.log("A waiting for half RTT"),await ky(l/2),this.log("B dialing",c);let u=await this.connectionManager.openConnection(c,{signal:i.signal,priority:uP,force:!0,initiator:!1});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,u.remoteAddr),await e.close(i);break}catch(o){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,o),t?.abort(o),n===this.retries)throw o}finally{t!=null&&await t.close(i)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(i=>{let o=i.multiaddr;return o.getPeerId()==null?o.encapsulate(`/p2p/${e.remotePeer}`):o}).filter(i=>T9(i,this.transportManager));if(n.length>0){let i=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let o=await this.connectionManager.openConnection(n,{signal:i,force:!0});if(Rn.exactMatch(o.remoteAddr))throw new Error("Could not open a new, non-limited, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,o.remoteAddr),await e.close({signal:i}),!0}catch(o){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,o)}}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 i=ir(e,{maxDataLength:lP}).pb(wo);this.log("A receiving connect");let o=await i.read(n);if(o.type!==wo.Type.CONNECT)throw this.log("B sent wrong message type"),new Be("DCUtR message type was incorrect");if(o.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new Be("DCUtR connect message had no multiaddrs");let s=this.getDialableMultiaddrs(o.observedAddresses);if(s.length===0)throw this.log("B had no dialable multiaddrs"),new Be("DCUtR connect message had no dialable multiaddrs");if(this.log("A sending connect"),await i.write({type:wo.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await i.read(n)).type!==wo.Type.SYNC)throw new Be("DCUtR message type was incorrect");this.log("A dialing",s);let c=await this.connectionManager.openConnection(s,{signal:n.signal,priority:uP,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(i){this.log.error("incoming DCUtR from %p failed",t.remotePeer,i),e.abort(i)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let i=se(n);if(!T9(i,this.transportManager))continue;t.push(i)}catch{}return t}};var Vp="/libp2p/dcutr";function fP(r={}){return e=>new Ry(e,r)}var dP="0.1.0",hP="id",pP="id/push",mP="1.0.0",gP="1.0.0";var Ua;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.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 o of t.listenAddrs)n.uint32(18),n.bytes(o);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let o of t.protocols)n.uint32(26),n.string(o);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 5:{o.protocolVersion=t.string();break}case 6:{o.agentVersion=t.string();break}case 1:{o.publicKey=t.bytes();break}case 2:{if(i.limits?.listenAddrs!=null&&o.listenAddrs.length===i.limits.listenAddrs)throw new wt('Decode error - map field "listenAddrs" had too many elements');o.listenAddrs.push(t.bytes());break}case 4:{o.observedAddr=t.bytes();break}case 3:{if(i.limits?.protocols!=null&&o.protocols.length===i.limits.protocols)throw new wt('Decode error - map field "protocols" had too many elements');o.protocols.push(t.string());break}case 8:{o.signedPeerRecord=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ua||(Ua={}));var On={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:8192,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnLimitedConnection:!0,concurrency:32};function yP(r){if(r!=null&&r.length>0)try{return se(r)}catch{}}function gW(r,e){return e??r.userAgent}async function Dy(r,e,t,n,i){if(t("received identify from %p",n.remotePeer),i==null)throw new Be("message was null or undefined");let o={};if(i.listenAddrs.length>0&&(o.addresses=i.listenAddrs.map(c=>({isCertified:!1,multiaddr:se(c)}))),i.protocols.length>0&&(o.protocols=i.protocols),i.publicKey!=null){let c=tr(i.publicKey);if(!Ko(c).equals(n.remotePeer))throw new Be("public key did not match remote PeerId");o.publicKey=c}let s;if(i.signedPeerRecord!=null){t.trace("received signedPeerRecord from %p",n.remotePeer);let c=i.signedPeerRecord,l=await ai.openAndCertify(c,vn.DOMAIN),u=vn.createFromProtobuf(l.payload),f=gn(l.publicKey.toCID());if(!u.peerId.equals(f))throw new Be("signing key does not match PeerId in the PeerRecord");if(!n.remotePeer.equals(u.peerId))throw new Be("signing key does not match remote PeerId");let h;try{h=await r.get(u.peerId)}catch(d){if(d.name!=="NotFoundError")throw d}if(h!=null&&(o.metadata=h.metadata,h.peerRecordEnvelope!=null)){let d=await ai.createFromProtobuf(h.peerRecordEnvelope),m=vn.createFromProtobuf(d.payload);m.seqNumber>=u.seqNumber&&(t("sequence number was lower or equal to existing sequence number - stored: %d received: %d",m.seqNumber,u.seqNumber),u=m,c=h.peerRecordEnvelope)}o.peerRecordEnvelope=c,o.addresses=u.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),s={seq:u.seqNumber,addresses:u.multiaddrs}}else t("%p did not send a signed peer record",n.remotePeer);if(t.trace("patching %p with",n.remotePeer,o),await r.patch(n.remotePeer,o),i.agentVersion!=null||i.protocolVersion!=null){let c={};i.agentVersion!=null&&(c.AgentVersion=O(i.agentVersion)),i.protocolVersion!=null&&(c.ProtocolVersion=O(i.protocolVersion)),t.trace("merging %p metadata",n.remotePeer,c),await r.merge(n.remotePeer,{metadata:c})}let a={peerId:n.remotePeer,protocolVersion:i.protocolVersion,agentVersion:i.agentVersion,publicKey:i.publicKey,listenAddrs:i.listenAddrs.map(c=>se(c)),observedAddr:i.observedAddr==null?void 0:se(i.observedAddr),protocols:i.protocols,signedPeerRecord:s,connection:n};return e.safeDispatchEvent("peer:identify",{detail:a}),a}var Gf=class{host;protocol;started;timeout;peerId;privateKey;peerStore;registrar;addressManager;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;events;runOnLimitedConnection;log;constructor(e,t){this.protocol=t.protocol,this.started=!1,this.peerId=e.peerId,this.privateKey=e.privateKey,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.events=e.events,this.log=t.log,this.timeout=t.timeout??On.timeout,this.maxInboundStreams=t.maxInboundStreams??On.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??On.maxOutboundStreams,this.maxMessageSize=t.maxMessageSize??On.maxMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??On.maxObservedAddresses,this.runOnLimitedConnection=t.runOnLimitedConnection??On.runOnLimitedConnection,this.host={protocolVersion:`${t.protocolPrefix??On.protocolPrefix}/${dP}`,agentVersion:gW(e.nodeInfo,t.agentVersion)}}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:O(this.host.agentVersion),ProtocolVersion:O(this.host.protocolVersion)}}),await this.registrar.handle(this.protocol,e=>{this.handleProtocol(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.protocol),this.started=!1}};var Ny=class extends Gf{connectionManager;concurrency;constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??On.protocolPrefix}/${pP}/${gP}`,log:e.logger.forComponent("libp2p:identify-push")}),this.connectionManager=e.connectionManager,this.concurrency=t.concurrency??On.concurrency,(t.runOnSelfUpdate??On.runOnSelfUpdate)&&e.events.addEventListener("self:peer:update",n=>{this.push().catch(i=>{this.log.error(i)})})}[tt]=["@libp2p/identify-push"];async push(){if(!this.isStarted())return;let e=this.addressManager.getAddresses().map(u=>u.decapsulateCode(Ie("p2p").code)),t=new vn({peerId:this.peerId,multiaddrs:e}),n=await ai.seal(t,this.privateKey),i=this.registrar.getProtocols(),o=await this.peerStore.get(this.peerId),s=H(o.metadata.get("AgentVersion")??O(this.host.agentVersion)),a=H(o.metadata.get("ProtocolVersion")??O(this.host.protocolVersion)),c=this;async function*l(){for(let u of c.connectionManager.getConnections())(await c.peerStore.get(u.remotePeer)).protocols.includes(c.protocol)&&(yield async()=>{let h,d=AbortSignal.timeout(c.timeout);try{h=await u.newStream(c.protocol,{signal:d,runOnLimitedConnection:c.runOnLimitedConnection}),await ir(h,{maxDataLength:c.maxMessageSize}).pb(Ua).write({listenAddrs:e.map(g=>g.bytes),signedPeerRecord:n.marshal(),protocols:i,agentVersion:s,protocolVersion:a},{signal:d}),await h.close({signal:d})}catch(m){c.log.error("could not push identify update to peer",m),h?.abort(m)}})}await Sr(Or(l(),{concurrency:this.concurrency}))}async handleProtocol(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let i={signal:AbortSignal.timeout(this.timeout)},s=await ir(n,{maxDataLength:this.maxMessageSize}).pb(Ua).read(i);await n.close(i),await Dy(this.peerStore,this.events,this.log,t,s)}catch(i){this.log.error("received invalid message",i),n.abort(i);return}this.log.trace("handled push from %p",t.remotePeer)}};var yW=41,Oy=class extends Gf{constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??On.protocolPrefix}/${hP}/${mP}`,log:e.logger.forComponent("libp2p:identify")}),(t.runOnConnectionOpen??On.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let i=n.detail;this.identify(i).catch(o=>{o.name!==ps.name&&this.log.error("error during identify trigged by connection:open",o)})})}[tt]=["@libp2p/identify"];async _identify(e,t={}){let n;if(t.signal==null){let i=AbortSignal.timeout(this.timeout);t={...t,signal:i}}try{n=await e.newStream(this.protocol,{...t,runOnLimitedConnection:this.runOnLimitedConnection});let o=await ir(n,{maxDataLength:this.maxMessageSize}).pb(Ua).read(t);return await n.close(t),o}catch(i){throw n?.abort(i),i}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:i,protocols:o,observedAddr:s}=n;if(i==null)throw new Be("public key was missing from identify message");let a=tr(i),c=gn(a.toCID());if(!e.remotePeer.equals(c))throw new Be("identified peer does not match the expected peer");if(this.peerId.equals(c))throw new Be("identified peer is our own peer id?");return this.maybeAddObservedAddress(s),this.log("identify completed for peer %p and protocols %o",c,o),Dy(this.peerStore,this.events,this.log,e,n)}maybeAddObservedAddress(e){let t=yP(e);if(t==null)return;if(this.log.trace("our observed address was %a",t),Di(t)){this.log.trace("our observed address was private");return}if(t.stringTuples()[0][0]===yW&&!ay(t)){this.log.trace("our observed address was IPv6 but not a global unicast address");return}hl.exactMatch(t)||(this.log.trace("storing the observed address"),this.addressManager.addObservedAddr(t))}async handleProtocol(e){let{connection:t,stream:n}=e,i=AbortSignal.timeout(this.timeout);try{let o=await this.peerStore.get(this.peerId),s=this.addressManager.getAddresses().map(u=>u.decapsulateCode(Ie("p2p").code)),a=o.peerRecordEnvelope;if(s.length>0&&a==null){let u=new vn({peerId:this.peerId,multiaddrs:s});a=(await ai.seal(u,this.privateKey)).marshal().subarray()}let c=t.remoteAddr.bytes;NT.matches(t.remoteAddr)||(c=void 0),await ir(n).pb(Ua).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:lr(this.privateKey.publicKey),listenAddrs:s.map(u=>u.bytes),signedPeerRecord:a,observedAddr:c,protocols:o.protocols},{signal:i}),await n.close({signal:i})}catch(o){this.log.error("could not respond to identify request",o),n.abort(o)}}};function wP(r={}){return e=>new Oy(e,r)}function xP(r={}){return e=>new Ny(e,r)}var Xf=1e3,C9=60*Xf,Ly=60*C9,bP=36*Ly,vP="/ipfs/kad/1.0.0",EP=48*Ly;var SP=24*Ly,AP=10,_P=16384,IP=Ly,l7e=10*Xf;var By=20,Yf=3,TP=5*C9,CP=Xf,kP=5*Xf,PP=5*C9,RP=30*Xf,DP=180*Xf,k9=`${ia}-kad-dht`;var Fa=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},My=class extends Error{constructor(e="Query aborted"){super(e),this.name="QueryAbortedError"}},Uy=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},Fy=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var NP;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(NP||(NP={}));var Ze;(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"})(Ze||(Ze={}));var $y;(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"})($y||($y={}));(function(r){r.codec=()=>St($y)})(Ze||(Ze={}));var Zf;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Zf||(Zf={}));var P9;(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"})(P9||(P9={}));(function(r){r.codec=()=>St(P9)})(Zf||(Zf={}));var Qf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let o of t.multiaddrs)n.uint32(18),n.bytes(o);t.connection!=null&&(n.uint32(24),Zf.codec().encode(t.connection,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={id:Pe(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.id=t.bytes();break}case 2:{if(i.limits?.multiaddrs!=null&&o.multiaddrs.length===i.limits.multiaddrs)throw new wt('Decode error - map field "multiaddrs" had too many elements');o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Zf.codec().decode(t);break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Qf||(Qf={}));var Ls;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.type!=null&&$y[t.type]!==0&&(n.uint32(8),Ze.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 o of t.closer)n.uint32(66),Qf.codec().encode(o,n);if(t.providers!=null)for(let o of t.providers)n.uint32(74),Qf.codec().encode(o,n);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={type:Ze.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.type=Ze.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:{if(i.limits?.closer!=null&&o.closer.length===i.limits.closer)throw new wt('Decode error - map field "closer" had too many elements');o.closer.push(Qf.codec().decode(t,t.uint32(),{limits:i.limits?.closer$}));break}case 9:{if(i.limits?.providers!=null&&o.providers.length===i.limits.providers)throw new wt('Decode error - map field "providers" had too many elements');o.providers.push(Qf.codec().decode(t,t.uint32(),{limits:i.limits?.providers$}));break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ls||(Ls={}));function R9(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function zp(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function Hy(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function ci(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function D9(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function Kp(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function N9(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function OP(r,e,t){if(t.length===0)throw new U("No records given");let i=H(e).split("/");if(i.length<3)throw new U("Record key does not have a selector function");let o=r[i[1].toString()];if(o==null)throw new Fy(`No selector function configured for key type "${i[1]}"`);return t.length===1?0:o(e,t)}function wW(r,e){return 0}var LP={pk:wW};async function Jf(r,e){let t=e.key,i=H(t).split("/");if(i.length<3)return;let o=r[i[1].toString()];if(o==null)throw new U(`No validator available for key type "${i[1]}"`);await o(t,e.value)}var xW=async(r,e)=>{if(!(r instanceof Uint8Array))throw new U('"key" must be a Uint8Array');if(r.byteLength<5)throw new U("Invalid public key record");if(H(r.subarray(0,4))!=="/pk/")throw new U("key was not prefixed with /pk/");let n=tr(e),i=r.slice(4);if(!pe(i,n.toMultihash().bytes))throw new U("public key does not match passed in key")},BP={pk:xW};var bW=O("/pk/");function MP(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 i=bn(n);return i==null?!0:!i})}}async function $a(r){return(await Fe.digest(r)).digest}async function Mr(r){return $a(r.toMultihash().bytes)}function Ha(r,e){return new nt(`${r}/${H(e,"base32")}`,!1)}function UP(r){return Ve([bW,r.toMultihash().bytes])}function FP(r){return H(r.subarray(0,4))==="/pk/"}function $P(r){let e=Ue(r.subarray(4));return ur(e)}function O9(r,e){let t=new Date;return new kt(r,e,t).serialize()}var vW=290,EW=54,SW=55,AW=56,_W=4,IW=41;function HP(r){let e=r.stringTuples();for(let t of e)if(t[0]===vW)return!1;if(e[0][0]===EW||e[0][0]===SW||e[0][0]===AW)return!0;if(e[0][0]===_W||e[0][0]===IW){let t=bn(`${e[0][1]}`);return t==null||!t}return!1}function Vy(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:W.createV1(vt,Ue(O(n,"base32"))),peerId:at(t)}}function zy(r,e,t){let n=typeof e=="string"?e:H(e.multihash.bytes,"base32"),i=[r,n];return t!=null&&i.push(t.toString()),new nt(i.join("/"))}function Ky(r){return new Date(Zt(r))}function _l(r,e,t){return async function*(...n){let i=e.queryTime?.timer(t),o=e.errorTime?.timer(t),s=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw s=!0,o?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||i?.()}}}function qy(r,e,t){return async function(...n){let i=e?.queryTime?.timer(t),o=e?.errorTime?.timer(t),s=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw s=!0,o?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||i?.()}}}var jy=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:i,peerRouting:o,queryManager:s,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=i,this.peerRouting=o,this.queryManager=s,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e){this.log("getLocal %b",e);let t=Ha(this.datastorePrefix,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 i=kt.deserialize(n);return await Jf(this.validators,i),i}async*sendCorrectionRecord(e,t,n,i={}){this.log("sendCorrection for %b",e);let o=O9(e,n);for(let{value:s,from:a}of t){if(pe(s,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=Ha(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,o.subarray())}catch(u){this.log.error("Failed error correcting self",u)}continue}let c=!1,l={type:Ze.PUT_VALUE,key:e,record:o};for await(let u of this.network.sendRequest(a,l,i))u.name==="PEER_RESPONSE"&&u.record!=null&&pe(u.record.value,kt.deserialize(o).value)&&(c=!0),yield u;c||(yield ci({from:a,error:new Fa("Value not put correctly")},i)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let i=O9(e,t),o=Ha(this.datastorePrefix,e);this.log(`storing record for key ${o.toString()}`),await this.components.datastore.put(o,i.subarray()),yield*ot(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),s=>Nt(s,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:Ze.PUT_VALUE,key:e,record:i};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,n))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&pe(u.record.value,kt.deserialize(i).value)||c.push(ci({from:a.peer.id,error:new Fa("Value not put correctly")},n)));return c}),s=>Or(s,{ordered:!1,concurrency:Yf}),async function*(s){for await(let a of s)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 i=n.map(a=>a.value),o=0;try{o=OP(this.selectors,e,i)}catch(a){if(a.name!=="InvalidParametersError")throw a}let s=i[o];if(this.log("GetValue %b %b",e,s),s==null)throw new We("Best value was not found");yield*this.sendCorrectionRecord(e,n,s,t),yield n[o]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let o=await this.getLocal(e);yield Kp({value:o.value,from:this.components.peerId},t)}catch(o){this.log("error getting local value for %b",e,o)}let n=this,i=async function*({peer:o,signal:s}){for await(let a of n.peerRouting.getValueOrPeers(o,e,{...t,signal:s}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield Kp({from:o,value:a.record.value},t))};yield*this.queryManager.run(e,i,t)}};function VP(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function qp(r){if(r.id==null)throw new Error("Invalid peer in message");let e=Ue(r.id);return{id:ur(e),multiaddrs:(r.multiaddrs??[]).map(t=>se(t))}}var Wy=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:i,queryManager:o,routingTable:s,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=i,this.queryManager=o,this.routingTable=s,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PROVIDER"&&(u.providers??=[],u.providers.push(...l.providers.map(f=>f.id.toString()))),u)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PEER_RESPONSE"&&l.messageName==="ADD_PROVIDER"&&(u.providers??=[],u.providers.push(l.from.toString())),u)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let i=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let o={type:Ze.ADD_PROVIDER,key:i,providers:[VP({id:this.components.peerId,multiaddrs:t})]},s=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let u of this.network.sendMessage(c.peer.id,o,n))u.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),s++),l.push(u)}catch(u){this.log.error("error sending provide record to peer %p",c.peer.id,u),l.push(ci({from:c.peer.id,error:u},n))}return l};yield*ot(this.peerRouting.getClosestPeers(i,n),c=>Nt(c,l=>a(l)),c=>Or(c,{ordered:!1,concurrency:Yf}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,i=0,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:d})=>d)})}catch(h){if(h.name!=="NotFoundError")throw h;this.log("no peer store entry for %p",f)}if(yield zp({from:this.components.peerId,messageType:Ze.GET_PROVIDERS,providers:u},t),yield D9({from:this.components.peerId,providers:u},t),i+=u.length,i>=n)return}let c=async function*({peer:u,signal:f}){let h={type:Ze.GET_PROVIDERS,key:o};yield*s.network.sendRequest(u,h,{...t,signal:f})},l=new yn(a);for await(let u of this.queryManager.run(o,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield D9({from:u.from,providers:f},t),i+=f.length,i>=n))return}}};function L9(r,e){let t=IC(r,e),n={read:async(i,o)=>{let s=await t.read(o);return i.decode(s)},write:async(i,o,s)=>{await t.write(o.encode(i),s)},writeV:async(i,o,s)=>{await t.writeV(i.map(a=>o.encode(a)),s)},pb:i=>({read:async o=>n.read(i,o),write:async(o,s)=>n.write(o,i,s),writeV:async(o,s)=>n.writeV(o,i,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Gy=class extends Me{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new po({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,i],o){return{...o,to:n.toString(),"message type":`${i.type}`}},getAttributesFromYieldedValue:(n,i)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((o,s)=>{i[`providers-${s}`]=o.id.toString()}),n.closer.length>0&&n.closer.forEach((o,s)=>{i[`closer-${s}`]=o.id.toString()})),i)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,i],o){return{...o,to:n.toString(),"message type":`${i.type}`}},getAttributesFromYieldedValue:(n,i)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((o,s)=>{i[`providers-${s}`]=o.id.toString()}),n.closer.length>0&&n.closer.forEach((o,s)=>{i[`closer-${s}`]=o.id.toString()})),i)})??this.sendMessage}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 i=t.type;if(i==null)throw new U("Message type was missing");this.log("sending %s to %p",t.type,e),yield N9({peer:e},n),yield R9({to:e,type:i},n);let o,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[i]:!0}),o=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(o,t,n);o.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),o?.abort(l)}),yield zp({from:e,messageType:c.type,closer:c.closer.map(qp),providers:c.providers.map(qp),record:c.record==null?void 0:kt.deserialize(c.record)},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),o?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield ci({from:e,error:a},n)}finally{this.timeout.cleanUp(s)}}async*sendMessage(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new U("Message type was missing");this.log("sending %s to %p",t.type,e),yield N9({peer:e},n),yield R9({to:e,type:i},n);let o,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[i]:!0}),o=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(o,t,n),o.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),o?.abort(c)}),yield zp({from:e,messageType:i},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),o?.abort(a),yield ci({from:e,error:a},n)}finally{this.timeout.cleanUp(s)}}async _writeMessage(e,t,n){await L9(e).write(t,Ls,n)}async _writeReadMessage(e,t,n){let i=L9(e);await i.write(t,Ls,n);let o=await i.read(Ls,n);return o.closer.forEach(s=>{this.safeDispatchEvent("peer",{detail:qp(s)})}),o.providers.forEach(s=>{this.safeDispatchEvent("peer",{detail:qp(s)})}),o}};var Va=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.peer)}async add(e){let t=await Mr(e.id);this.addWithKadId(e,t)}addWithKadId(e,t){if(this.peerDistances.find(o=>o.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:Nn(this.originDhtKey,t)},i=!1;for(let o=0;o<this.peerDistances.length;o++){let s=Da(this.peerDistances[o].distance,n.distance);if(s===0||s===1){i=!0,this.peerDistances.splice(o,0,n);break}}i||this.peerDistances.push(n),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await Mr(e),n=Nn(t,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return Da(n,i)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Xy=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}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(i){if(i.name!=="NotFoundError")throw i}}if(t==null)try{t=await this.peerStore.get(e)}catch(i){if(i.name!=="NotFoundError")throw i}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n={}){let i={type:Ze.GET_VALUE,key:t};yield*this.network.sendRequest(e,i,n)}async*getPublicKeyFromNode(e,t={}){let n=UP(e);for await(let i of this._getValueSingle(e,n,t))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let o=tr(i.record.value),s=Ko(o);if(!s.equals(e))throw new hs("public key does not match id");if(s.publicKey==null)throw new hs("public key missing");yield Kp({from:e,value:i.record.value},t)}throw new Fa(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let i=await this.findPeerLocal(e);if(i!=null){this.log("found local"),yield Hy({from:this.peerId,peer:i},t);return}}let n=!1;if(t.useNetwork!==!1){let i=this,o=async function*({peer:s,signal:a}){let c={type:Ze.FIND_NODE,key:e.toMultihash().bytes};for await(let l of i.network.sendRequest(s,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let u=l.closer.find(f=>f.id.equals(e));u!=null&&(yield Hy({from:l.from,peer:u},t))}};for await(let s of this.queryManager.run(e.toMultihash().bytes,o,t))s.name==="FINAL_PEER"&&(n=!0),yield s}n||(yield ci({from:this.peerId,error:new We("Not found")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await $a(e),i=this.routingTable.closestPeers(n),o=this,s=new Va(n,this.routingTable.kBucketSize);await Promise.all(i.map(async c=>{await s.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){o.log("closerPeersSingle %s from %p",H(e,"base32"),c);let u={type:Ze.FIND_NODE,key:e};yield*o.network.sendRequest(c,u,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await s.add(l)})),yield c;this.log("found %d peers close to %b",s.length,e);for(let c of s.peers)yield Hy({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let i of this._getValueSingle(e,t,n)){if(i.name==="PEER_RESPONSE"&&i.record!=null)try{await this._verifyRecordOnline(i.record)}catch{let s="invalid record received, discarded";this.log(s),yield ci({from:i.from,error:new Fa(s)},n);continue}yield i}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new Uy("invalid record received");await Jf(this.validators,new kt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=[];try{let c=Ue(e),l=ur(c),u=await this.peerStore.get(l);n.push({id:u.id,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch{}let i=await $a(e),o=this.routingTable.closestPeers(i),s=await Mr(t),a=Nn(s,i);for(let c of o){let l=await Mr(c),u=Nn(l,i);if(Da(u,a)===-1)try{let f=await this.peerStore.get(c);n.push({id:c,multiaddrs:f.addresses.map(({multiaddr:h})=>h)})}catch(f){if(f.name!=="NotFoundError")throw f}}return n.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",n.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),n}};var Yy=class{log;datastore;datastorePrefix;lock;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore,this.lock=t.lock}async addProvider(e,t){let n=await this.lock.readLock();try{this.log("%p provides %s",t,e),await this.writeProviderEntry(e,t)}finally{n()}}async removeProvider(e,t){let n=await this.lock.writeLock();try{let i=zy(this.datastorePrefix,e,t);this.log("%p no longer provides %s",t,e),await this.datastore.delete(i)}finally{n()}}async getProviders(e){let t=await this.lock.readLock();try{this.log("get providers for %c",e);let n=await this.loadProviders(e);return this.log("got %d providers for %c",n.size,e),[...n.keys()]}finally{t()}}async writeProviderEntry(e,t,n=new Date){let i=zy(this.datastorePrefix,e,t),o=ht(n.getTime());await this.datastore.put(i,o)}async loadProviders(e){let t=new _r,n=zy(this.datastorePrefix,e);for await(let i of this.datastore.query({prefix:n.toString()})){let{peerId:o}=Vy(i.key);t.set(o,Ky(i.value))}return t}};async function*zP(r){let{key:e,startingPeer:t,ourPeerId:n,signal:i,query:o,alpha:s,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:u,peersSeen:f,connectionManager:h}=r,d=new ln({concurrency:s,sort:(w,x)=>Da(w.options.distance,x.options.distance)}),m=await $a(e);function g(w,x){if(w==null)return;f.add(w);let v=Nn(x,m);d.add(async()=>{let b=[i];l!=null&&b.push(AbortSignal.timeout(l));let S=Ne(b);try{for await(let T of o({...r,key:e,peer:w,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(T.name==="PEER_RESPONSE")for(let D of T.closer){if(f.has(D.id)){u.trace("already seen %p in query",D.id);continue}if(n.equals(D.id)){u("not querying ourselves");continue}if(!await h.isDialable(D.multiaddrs)){u("not querying undialable peer");continue}let A=await Mr(D.id),I=Nn(A,m);if(Da(I,v)!==-1){u.trace("skipping %p as they are not closer to %b than %p",D.id,e,w);continue}u.trace("querying closer peer %p",D.id),g(D.id,A)}d.safeDispatchEvent("completed",{detail:T})}}catch(T){if(!i.aborted)return ci({from:w,error:T},r)}finally{S.clear()}},{distance:v}).catch(b=>{u.error(b)})}g(t,await Mr(t));try{for await(let w of d.toGenerator({signal:i}))w!=null&&(yield w)}catch(w){throw i.aborted?new My("Query aborted"):w}}var Qy=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??By,this.alpha=t.alpha??Yf,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(DP);n={...n,signal:c}}let i=new AbortController,o=Ne([this.shutDownController.signal,i.signal,n.signal]);i.signal;let s=this.logger.forComponent(`${this.logPrefix}:query:`+H(e,"base58btc")),a=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(s("waiting for initial query-self query before continuing"),await Dt(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),s("query:start");let c=await $a(e),l=this.routingTable.closestPeers(c),u=l.slice(0,Math.min(this.disjointPaths,l.length));if(l.length===0){s.error("Running query with no peers");return}let f=new yn,h=u.map((d,m)=>zP({...n,key:e,startingPeer:d,ourPeerId:this.peerId,signal:o,query:t,pathIndex:m,numPaths:u.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:s,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let d of un(...h)){if(d.name==="QUERY_ERROR"&&s.error("query error",d.error),d.name==="PEER_RESPONSE")for(let m of[...d.closer,...d.providers])await this.connectionManager.isDialable(m.multiaddrs)&&await this.routingTable.add(m.id);yield d}a=!0}catch(c){if(!(!this.running&&c.name==="QueryAbortedError"))throw c}finally{a||(s("query exited early"),i.abort()),o.clear(),s("query:done")}}};var Zy=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.running=!1,this.peerRouting=t.peerRouting,this.routingTable=t.routingTable,this.count=t.count??By,this.interval=t.interval??TP,this.initialInterval=t.initialInterval??CP,this.queryTimeout=t.queryTimeout??kP,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=qy(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){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=ye(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=Ne(e);this.controller.signal;try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await TC(this.routingTable,"peer:add",{signal:t,filter:o=>!this.peerId.equals(o.detail)}),this.log("routing table has peers, continuing with query")),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),i=await ot(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),o=>la(o,this.count),async o=>L2(o));this.log("self-query found %d peers in %dms",i,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Jy=class extends Me{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;lock;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new ln({concurrency:t.concurrency??AP,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new po({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??SP,this.maxQueueSize=t.maxQueueSize??_P,this.validity=t.validity??EP,this.interval=t.interval??IP,this.contentRouting=t.contentRouting,this.lock=t.lock,this.running=!1,this.reprovide=qy(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.cleanUp().catch(e=>{this.log.error("error running reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async cleanUp(){let e=await this.lock.writeLock();try{this.safeDispatchEvent("reprovide:start");for await(let t of this.datastore.query({prefix:this.datastorePrefix}))try{let{cid:n,peerId:i}=Vy(t.key),o=Ky(t.value).getTime(),s=o+this.validity,a=Date.now(),c=a>s;this.log.trace("comparing: %d < %d = %s %s",o,a-this.validity,c,c?"(expired)":""),c&&await this.datastore.delete(t.key),this.peerId.equals(i)&&a-s<this.reprovideThreshold&&this.queueReprovide(n).catch(l=>{this.log.error("could not reprovide %c - %e",n,l)})}catch(n){this.log.error("error processing datastore key %s - %e",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{e(),this.safeDispatchEvent("reprovide:end"),this.running&&(this.timeout=setTimeout(()=>{this.cleanUp().catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}async queueReprovide(e){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize);let t=this.reprovideQueue.queue.find(n=>n.options.cid.equals(e));if(t!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),t.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async n=>{if(n.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(n);try{await this.reprovide(n.cid,n)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(n=>{this.log.error("could not re-provide key %c - %e",e,n)})}async reprovide(e,t){await Sr(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var CW=20,kW=5e3,PW="kad-close",RW=50,e3=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??kW,this.peerSetSize=t.peerSetSize??CW,this.closeTagName=t.closeTagName??PW,this.closeTagValue=t.closeTagValue??RW,this.closestPeers=new yn,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await Mr(this.components.peerId);this.newPeers=new Va(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new yn(this.newPeers?.peers.map(i=>i.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:{value:this.closeTagValue},[k9]:{value:1}}})}),...[...n].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:void 0,[k9]:void 0}})})])}};function jp(r){return Array.isArray(r?.peers)}var t3=class{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e){this.prefixLength=e.prefixLength??KP,this.kBucketSize=e.kBucketSize??B9,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfOldContactsToPing??qP,this.lastPingThreshold=e.lastPingThreshold??jP,this.ping=e.ping,this.verify=e.verify,this.onAdd=e.onAdd,this.onRemove=e.onRemove,this.addingPeerMap=new _r,this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e){this.localPeer={peerId:e,kadId:await Mr(e),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await Mr(e),lastPing:0},i=this.addingPeerMap.get(e);if(i!=null)return i;try{let o=this._add(n,t);this.addingPeerMap.set(e,o),await o}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!NW(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let i=n.peers.filter(s=>!(s.peerId.equals(this.localPeer?.peerId)||s.lastPing>Date.now()-this.lastPingThreshold)).sort((s,a)=>s.lastPing<a.lastPing?-1:s.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),o=!1;for await(let s of this.ping(i,t))o=!0,await this.remove(s.kadId);o&&await this._add(e,t)}*closest(e,t=this.kBucketSize){let n=new Va(e,t);for(let i of this.toIterable())n.addWithKadId({id:i.peerId,multiaddrs:[]},i.kadId);yield*Nt(n.peers,i=>i.id)}count(){function e(t){if(jp(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let i=t.peers.splice(n,1)[0];await this.onRemove?.(i,t)}}*toIterable(){function*e(t){if(jp(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+H(Nn(e,t),"base16"))}_determineBucket(e){let t=H(e,"base2");function n(i,o=0){return jp(i)?i:t[o]==="0"?n(i.left,o+1):n(i.right,o+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>pe(n.kadId,t))}async _split(e){let t={prefix:"0",depth:e.depth+1,peers:[]},n={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)H(i.kadId,"base2")[e.depth]==="0"?(t.peers.push(i),await this.onMove?.(i,e,t)):(n.peers.push(i),await this.onMove?.(i,e,n));DW(e,t,n)}};function DW(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function NW(r,e){return r.lastPing<Date.now()-e}var B9=20,KP=6;var OW=20,LW=100,qP=3;var BW=20,MW=100,WP="kad-peer",UW=1,jP=6e5,FW=!0,$W=1e3,r3=class extends Me{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??B9,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??WP,this.peerTagValue=t.peerTagValue??UW,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??FW,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??$W,this.pingOldContactQueue=new kr({concurrency:t.pingOldContactConcurrency??BW,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??MW}),this.pingOldContactTimeout=new po({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new kr({concurrency:t.pingNewContactConcurrency??OW,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??LW}),this.pingNewContactTimeout=new po({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new t3({kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved}),this.closestPeerTagger=new e3(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,await Cr(this.closestPeerTagger),await this.kb.addSelfPeer(this.components.peerId))}async afterStart(){Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let e=0;for(let t of await this.components.peerStore.all({filters:[n=>n.protocols.includes(this.protocol)&&n.tags.has(WP)],limit:this.populateFromDatastoreLimit})){if(!this.running)return;try{await this.add(t.id),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(t.id,{tags:{[this.peerTagName]:void 0}})}}this.log("added %d peer store peers to the routing table",e)}).catch(e=>{this.log.error("error adding peer store peers to the routing table %e",e)})}async stop(){this.running=!1,await Gr(this.closestPeerTagger),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort()}async peerAdded(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let i of e){if(this.kb.get(i.kadId)==null){this.log("asked to ping contact %p that was not in routing table",i.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let o=this.pingOldContactQueue.find(i.peerId);if(o!=null)return this.log("asked to ping contact %p was already being pinged",i.peerId),await o.join(t)?void 0:i;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=Ne([c,a?.signal]);try{return await this.pingContact(i,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:i.peerId,signal:t?.signal}))return i})}for await(let i of Or(n))i!=null&&(yield i)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),i=Ne([n,t?.signal]);try{let o=this.pingNewContactQueue.find(e.peerId);return o!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await o.join({signal:i})):await this.pingNewContactQueue.add(async s=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,s)),{peerId:e.peerId,signal:i})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),i.clear()}}async pingContact(e,t){let n;try{this.log("pinging contact %p",e.peerId);for await(let i of this.network.sendRequest(e.peerId,{type:Ze.PING},t))if(i.type===n3.PEER_RESPONSE)return i.messageType===Ze.PING?(this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0):!1;return!1}catch(i){return this.log("error pinging old contact %p - %e",e.peerId,i),n?.abort(i),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Mr(e);return this.kb.get(t)?.peerId}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)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Mr(e);await this.kb.remove(t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,i=20,o=0;function s(a){if(jp(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<i&&(i=a.peers.length),a.peers.length>o&&(o=a.peers.length);return}s(a.left),s(a.right)}s(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(i),this.metrics.routingTableKadBucketMaxOccupancy.update(o),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var GP=[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 i3=15,o3=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:i,refreshInterval:o,refreshQueryTimeout:s,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=i,this.refreshInterval=o??PP,this.refreshQueryTimeout=s??RP,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(n.map(async(i,o)=>{try{if(await this._refreshCommonPrefixLength(o,i,e),this._numPeersForCpl(t)===0){let s=Math.min(2*(o+1),n.length-1);for(let a=o+1;a<s+1;a++)try{await this._refreshCommonPrefixLength(a,i,e)}catch(c){this.log.error(c)}}}catch(s){this.log.error(s)}})).catch(i=>{this.log.error(i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error(i)})}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 i=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let o=AbortSignal.timeout(this.refreshQueryTimeout);let s=await L2(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:o}));this.log(`found ${s} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>i3&&(e=i3);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");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=mn(2),n=(t[1]<<8)+t[0],i=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),o=Ue(i);return ur(o)}async _makePeerId(e,t,n){if(n>i3)throw new Error(`Cannot generate peer ID for common prefix length greater than ${i3}`);let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=s&a|t&~a,l=GP[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,Fe.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.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?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Nn(this.routingTable.kb.localPeer.kadId,e),n=0;for(let i of t)if(i===0)n++;else break;yield n}}};var s3=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new Be("Missing key");let n;try{n=W.decode(t.key)}catch{throw new Be("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async i=>{let o=Ue(i.id),s=ur(o),a=i.multiaddrs.map(c=>se(c));if(!e.equals(s)){this.log("invalid provider peer %p from %p",i.id,e);return}if(i.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,s),await this.peerStore.merge(s,{multiaddrs:a})}))}};var a3=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new Be("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);pe(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(o=>o.decapsulateCode(Ie("p2p").code))});let i={type:Ze.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:o})=>o.length).map(o=>({id:o.id.toMultihash().bytes,multiaddrs:o.multiaddrs.map(s=>s.bytes)})),providers:[]};return i.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),i}};var c3=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:i,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=i,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Be("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=W.decode(t.key)}catch{throw new Be("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[i,o]=await Promise.all([Ps(Nt(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getCloserPeersOffline(t.key,this.peerId)]),s={type:Ze.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:i.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",s.providers.length,s.closer.length),s}async _getAddresses(e){return[]}};var l3=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,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 Be("Invalid key");let i={type:Ze.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(FP(n)){this.log("is public key");let a=$P(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new We("No public key found in key book");c=lr(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),i.record=new kt(n,c,new Date).serialize(),i}let[o,s]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return o!=null&&(this.log("had record for %b in local datastore",n),i.record=o.serialize()),s.length>0&&(this.log("had %s closer peers in routing table",s.length),i.closer=s.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),i}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Ha(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(o){if(o.name==="NotFoundError")return;throw o}let i=kt.deserialize(n);if(i.timeReceived==null||Date.now()-i.timeReceived.getTime()>bP){await this.datastore.delete(t);return}return i}};var u3=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 f3=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,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 i=`Empty record from: ${e.toString()}`;throw this.log.error(i),new Be(i)}try{let i=kt.deserialize(t.record);await Jf(this.validators,i),i.timeReceived=new Date;let o=Ha(this.datastorePrefix,i.key);await this.components.datastore.put(o,i.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,o)}catch(i){this.log("did not put record for key %b into datastore %o",n,i)}return t}};var d3=class{handlers;routingTable;log;metrics;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`)},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.routingTable=t.routingTable,this.handlers={[Ze.GET_VALUE.toString()]:new l3(e,t),[Ze.PUT_VALUE.toString()]:new f3(e,t),[Ze.FIND_NODE.toString()]:new a3(e,t),[Ze.ADD_PROVIDER.toString()]:new s3(e,t),[Ze.GET_PROVIDERS.toString()]:new c3(e,t),[Ze.PING.toString()]:new u3(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}onIncomingStream(e){let t="unknown";Promise.resolve().then(async()=>{let{stream:n,connection:i}=e,o=i.remotePeer,s=this;await ot(n,a=>Qi(a),async function*(a){for await(let c of a){let l=Ls.decode(c);t=l.type,s.log("incoming %s from %p",l.type,o);let u=await s.handleMessage(o,l);u!=null&&(yield Ls.encode(u))}},a=>Yi(a),n)}).catch(n=>{this.log.error("error handling %s RPC message from %p - %e",t,e.connection.remotePeer,n)})}};var h3=class extends Me{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:i}=t;this.components=e,this.log=e.logger.forComponent(`${i}: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 CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var M9=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Sr(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}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 Sr(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 We("Could not find value for key")}},U9=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 We("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},HW=32,VW=64,p3=class extends Me{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",i=t.datastorePrefix??"/dht",o=t.metricsPrefix??"libp2p_kad_dht",s={queries:e.metrics?.registerMetricGroup(`${o}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${o}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${o}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${o}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.protocol=t.protocol??vP,this.kBucketSize=t.kBucketSize??20,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??HW,this.maxOutboundStreams=t.maxOutboundStreams??VW,this.peerInfoMapper=t.peerInfoMapper??MP;let a=al();this.providers=new Yy(e,{...t.providers,logPrefix:n,datastorePrefix:i,lock:a}),this.validators={...BP,...t.validators},this.selectors={...LP,...t.selectors},this.network=new Gy(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:o}),this.routingTable=new r3(e,{kBucketSize:t.kBucketSize,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:o,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let c=ye();t.allowQueryWithZeroPeers===!0&&c.resolve(),this.queryManager=new Qy(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:n,metricsPrefix:o,initialQuerySelfHasRun:c,routingTable:this.routingTable}),this.peerRouting=new Xy(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new jy(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:i}),this.contentRouting=new Wy(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new o3(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new d3(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:o,datastorePrefix:i,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new h3(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Zy(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:c,routingTable:this.routingTable,operationMetrics:s}),this.reprovider=new Jy(e,{...t.reprovide,logPrefix:n,metricsPrefix:o,datastorePrefix:i,contentRouting:this.contentRouting,lock:a,operationMetrics:s}),this.network.addEventListener("peer",l=>{let u=l.detail;this.onPeerConnect(u).catch(f=>{this.log.error("could not add %p to routing table",u.id,f)}),this.dispatchEvent(new CustomEvent("peer",{detail:u}))}),this.topologyListener.addEventListener("peer",l=>{let u=l.detail;Promise.resolve().then(async()=>{let f=await this.components.peerStore.get(u),h={id:u,multiaddrs:f.addresses.map(({multiaddr:d})=>d),protocols:f.protocols};await this.onPeerConnect(h)}).catch(f=>{this.log.error("could not add %p to routing table - %e",u,f)})}),this.dhtPeerRouting=new U9(this),this.dhtContentRouting=new M9(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",l=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let u=l.detail.peer.addresses.some(({multiaddr:h})=>HP(h)),f=this.getMode();u&&f==="client"?await this.setMode("server"):f==="server"&&!u&&await this.setMode("client")}).catch(u=>{this.log.error("error setting dht server mode",u)})}),this.get=_l(this.get.bind(this),s,"GET_VALUE"),this.findProviders=_l(this.findProviders.bind(this),s,"FIND_PROVIDERS"),this.findPeer=_l(this.findPeer.bind(this),s,"FIND_PEER"),this.getClosestPeers=_l(this.getClosestPeers.bind(this),s,"GET_CLOSEST_PEERS"),this.provide=_l(this.provide.bind(this),s,"PROVIDE"),this.put=_l(this.put.bind(this),s,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[tt]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[Jn]=["@libp2p/identify"];get[Do](){return this.dhtContentRouting}get[No](){return this.dhtPeerRouting}get[_c](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("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,t=!1){if(e===this.getMode()&&!t){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol),e===this.getMode()&&!t){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),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||(this.running=!0,await this.setMode(this.clientMode?"client":"server",!0),await Cr(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Cr(this.querySelf))}async stop(){this.running=!1,await Gr(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}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 cancelReprovide(e){await this.providers.removeProvider(e,this.components.peerId)}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 n3;(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"})(n3||(n3={}));function XP(r={}){return e=>new p3(e,r)}var iR=it(nR(),1),Wt=iR.default;var rD=it(hR(),1);var rd={};Ft(rd,{create:()=>sG,derivedEmptyPasswordKey:()=>y3});var y3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function sG(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,i=r?.digest??"SHA-256",o=r?.saltLength??16,s=r?.iterations??32767,a=In.get();t*=8;async function c(f,h){let d=a.getRandomValues(new Uint8Array(o)),m=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:m};typeof h=="string"&&(h=O(h));let w;if(h.length===0){w=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["encrypt"]);try{let v={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}catch{w=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["encrypt"])}}else{let v={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}let x=await a.subtle.encrypt(g,w,f);return Ve([d,g.iv,new Uint8Array(x)])}async function l(f,h){let d=f.subarray(0,o),m=f.subarray(o,o+n),g=f.subarray(o+n),w={name:e,iv:m};typeof h=="string"&&(h=O(h));let x;if(h.length===0)try{let b={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{x=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let v=await a.subtle.decrypt(w,x,g);return new Uint8Array(v)}return{encrypt:c,decrypt:l}}var Li={};Ft(Li,{Any:()=>Go,BaseBlock:()=>dr,BaseStringBlock:()=>Yp,BitString:()=>xo,BmpString:()=>kl,Boolean:()=>Tl,CharacterString:()=>Ul,Choice:()=>od,Constructed:()=>wr,DATE:()=>r1,DateTime:()=>i1,Duration:()=>o1,EndOfContent:()=>Qp,Enumerated:()=>Cl,GeneralString:()=>Ml,GeneralizedTime:()=>Fl,GraphicString:()=>Bl,HexBlock:()=>Xo,IA5String:()=>Ll,Integer:()=>li,Null:()=>Mn,NumericString:()=>Rl,ObjectIdentifier:()=>ui,OctetString:()=>sn,Primitive:()=>Fs,PrintableString:()=>Dl,RawData:()=>z9,RelativeObjectIdentifier:()=>t1,Repeated:()=>$l,Sequence:()=>Lt,Set:()=>Un,TIME:()=>s1,TeletexString:()=>Nl,TimeOfDay:()=>n1,UTCTime:()=>ja,UniversalString:()=>Pl,Utf8String:()=>Oi,ValueBlock:()=>Ur,VideotexString:()=>Ol,ViewWriter:()=>id,VisibleString:()=>qa,compareSchema:()=>Ka,fromBER:()=>fi,verifySchema:()=>TG});var He=it(Ms());function Il(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 za(r,e,t=-1){let n=t,i=r,o=0,s=Math.pow(2,e);for(let a=1;a<8;a++){if(r<s){let c;if(n<0)c=new ArrayBuffer(a),o=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),o=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[o-u-1]=Math.floor(i/f),i-=l[o-u-1]*f}return c}s*=Math.pow(2,e)}return new ArrayBuffer(0)}function b3(...r){let e=0,t=0;for(let o of r)e+=o.length;let n=new ArrayBuffer(e),i=new Uint8Array(n);for(let o of r)i.set(o,t),t+=o.length;return i}function H9(){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=Il(t,8),i=new ArrayBuffer(this.valueHex.byteLength),o=new Uint8Array(i);for(let a=0;a<this.valueHex.byteLength;a++)o[a]=r[a];return o[0]&=127,Il(o,8)-n}function pR(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let s=t-e,a=za(s,8,n),c=new Uint8Array(a);return c[0]|=128,a}let i=za(e,8,n),o=new Uint8Array(i);if(o[0]&128){let s=i.slice(0),a=new Uint8Array(s);i=new ArrayBuffer(i.byteLength+1),o=new Uint8Array(i);for(let c=0;c<s.byteLength;c++)o[c+1]=a[c];o[0]=0}return i}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function mR(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<t.length;i++)if(t[i]!==n[i])return!1;return!0}function Ln(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,i=new Array(n);for(let s=0;s<n;s++)i[s]="0";return i.join("").concat(t)}var mve=Math.log(2);function v3(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function K9(r){let e=0,t=0;for(let i=0;i<r.length;i++){let o=r[i];e+=o.byteLength}let n=new Uint8Array(e);for(let i=0;i<r.length;i++){let o=r[i];n.set(new Uint8Array(o),t),t+=o.byteLength}return n.buffer}function $s(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 id=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return K9(this.items)}},Wp=[new Uint8Array([1])],gR="0123456789",V9="name",yR="valueHexView",mG="isHexOnly",gG="idBlock",yG="tagClass",wG="tagNumber",xG="isConstructed",bG="fromBER",vG="toBER",EG="local",Bn="",bo=new ArrayBuffer(0),B3=new Uint8Array(0),Xp="EndOfContent",xR="OCTET STRING",bR="BIT STRING";function Xo(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var i;super(...n);let o=n[0]||{};this.isHexOnly=(i=o.isHexOnly)!==null&&i!==void 0?i:!1,this.valueHexView=o.valueHex?He.BufferSourceConverter.toUint8Array(o.valueHex):B3}fromBER(n,i,o){let s=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!$s(this,s,i,o))return-1;let a=i+o;return this.valueHexView=s.subarray(i,a),this.valueHexView.length?(this.blockLength=o,a):(this.warnings.push("Zero buffer length"),i)}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",bo)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:He.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Us=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=Bn,warnings:n=[],valueBeforeDecode:i=B3}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=He.BufferSourceConverter.toUint8Array(i)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:He.Convert.ToHex(this.valueBeforeDecodeView)}}};Us.NAME="baseBlock";var Ur=class extends Us{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'")}};Ur.NAME="valueBlock";var E3=class extends Xo(Us){constructor({idBlock:e={}}={}){var t,n,i,o;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?He.BufferSourceConverter.toUint8Array(e.valueHex):B3,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(i=e.tagNumber)!==null&&i!==void 0?i:-1,this.isConstructed=(o=e.isConstructed)!==null&&o!==void 0?o:!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",bo}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let i=new Uint8Array(1);if(!e){let o=this.tagNumber;o&=31,t|=o,i[0]=t}return i.buffer}if(!this.isHexOnly){let i=za(this.tagNumber,7),o=new Uint8Array(i),s=i.byteLength,a=new Uint8Array(s+1);if(a[0]=t|31,!e){for(let c=0;c<s-1;c++)a[c+1]=o[c]|128;a[s]=o[s-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let i=this.valueHexView;for(let o=0;o<i.length-1;o++)n[o+1]=i[o]|128;n[this.valueHexView.byteLength]=i[i.length-1]}return n.buffer}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;switch(o[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=(o[0]&32)===32,this.isHexOnly=!1;let a=o[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;o[c]&128;){if(l[c-1]=o[c]&127,c++,c>=o.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let h=new Uint8Array(u);for(let d=0;d<l.length;d++)h[d]=l[d];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=o[c]&127;let f=new Uint8Array(c);for(let h=0;h<c;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=Il(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}}};E3.NAME="identificationBlock";var S3=class extends Us{constructor({lenBlock:e={}}={}){var t,n,i;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=(i=e.length)!==null&&i!==void 0?i:0}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;if(o[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=o[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,t+this.blockLength;let s=o[0]&127;if(s>8)return this.error="Too big integer",-1;if(s+1>o.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=i.subarray(a,a+s);return c[s-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Il(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=s+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 i=za(this.length,8);if(i.byteLength>127)return this.error="Too big length",bo;if(t=new ArrayBuffer(i.byteLength+1),e)return t;let o=new Uint8Array(i);n=new Uint8Array(t),n[0]=i.byteLength|128;for(let s=0;s<i.byteLength;s++)n[s+1]=o[s];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}}};S3.NAME="lengthBlock";var ue={},dr=class extends Us{constructor({name:e=Bn,optional:t=!1,primitiveSchema:n,...i}={},o){super(i),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new E3(i),this.lenBlock=new S3(i),this.valueBlock=o?new o(i):new Ur(i)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}toBER(e,t){let n=t||new id;t||vR(this);let i=this.idBlock.toBER(e);if(n.write(i),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(e);this.lenBlock.length=o.byteLength;let s=this.lenBlock.toBER(e);n.write(s),n.write(o)}return t?bo: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():He.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=He.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return mR(t,n)}};dr.NAME="BaseBlock";function vR(r){var e;if(r instanceof ue.Constructed)for(let t of r.valueBlock.value)vR(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var Yp=class extends dr{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=Bn,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Yp.NAME="BaseStringBlock";var A3=class extends Xo(Ur){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};A3.NAME="PrimitiveValueBlock";var ER,Fs=class extends dr{constructor(e={}){super(e,A3),this.idBlock.isConstructed=!1}};ER=Fs;ue.Primitive=ER;Fs.NAME="PRIMITIVE";function SG(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 sd(r,e=0,t=r.length){let n=e,i=new dr({},Ur),o=new Us;if(!$s(o,r,e,t))return i.error=o.error,{offset:-1,result:i};if(!r.subarray(e,e+t).length)return i.error="Zero buffer length",{offset:-1,result:i};let a=i.idBlock.fromBER(r,e,t);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),a===-1)return i.error=i.idBlock.error,{offset:-1,result:i};if(e=a,t-=i.idBlock.blockLength,a=i.lenBlock.fromBER(r,e,t),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),a===-1)return i.error=i.lenBlock.error,{offset:-1,result:i};if(e=a,t-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let c=dr;switch(i.idBlock.tagClass){case 1:if(i.idBlock.tagNumber>=37&&i.idBlock.isHexOnly===!1)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};c=ue.EndOfContent;break;case 1:c=ue.Boolean;break;case 2:c=ue.Integer;break;case 3:c=ue.BitString;break;case 4:c=ue.OctetString;break;case 5:c=ue.Null;break;case 6:c=ue.ObjectIdentifier;break;case 10:c=ue.Enumerated;break;case 12:c=ue.Utf8String;break;case 13:c=ue.RelativeObjectIdentifier;break;case 14:c=ue.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:c=ue.Sequence;break;case 17:c=ue.Set;break;case 18:c=ue.NumericString;break;case 19:c=ue.PrintableString;break;case 20:c=ue.TeletexString;break;case 21:c=ue.VideotexString;break;case 22:c=ue.IA5String;break;case 23:c=ue.UTCTime;break;case 24:c=ue.GeneralizedTime;break;case 25:c=ue.GraphicString;break;case 26:c=ue.VisibleString;break;case 27:c=ue.GeneralString;break;case 28:c=ue.UniversalString;break;case 29:c=ue.CharacterString;break;case 30:c=ue.BmpString;break;case 31:c=ue.DATE;break;case 32:c=ue.TimeOfDay;break;case 33:c=ue.DateTime;break;case 34:c=ue.Duration;break;default:{let l=i.idBlock.isConstructed?new ue.Constructed:new ue.Primitive;l.idBlock=i.idBlock,l.lenBlock=i.lenBlock,l.warnings=i.warnings,i=l}}break;case 2:case 3:case 4:default:c=i.idBlock.isConstructed?ue.Constructed:ue.Primitive}return i=SG(i,c),a=i.fromBER(r,e,i.lenBlock.isIndefiniteForm?t:i.lenBlock.length),i.valueBeforeDecodeView=r.subarray(n,n+i.blockLength),{offset:a,result:i}}function fi(r){if(!r.byteLength){let e=new dr({},Ur);return e.error="Input buffer has zero length",{offset:-1,result:e}}return sd(He.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function AG(r,e){return r?1:e}var Wo=class extends Ur{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;if(this.valueBeforeDecodeView=i.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let o=t;for(;AG(this.isIndefiniteForm,n)>0;){let s=sd(i,o,n);if(s.offset===-1)return this.error=s.result.error,this.warnings.concat(s.result.warnings),-1;if(o=s.offset,this.blockLength+=s.result.blockLength,n-=s.result.blockLength,this.value.push(s.result),this.isIndefiniteForm&&s.result.constructor.NAME===Xp)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Xp?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(e,t){let n=t||new id;for(let i=0;i<this.value.length;i++)this.value[i].toBER(e,n);return t?bo:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};Wo.NAME="ConstructedValueBlock";var SR,wr=class extends dr{constructor(e={}){super(e,Wo),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
14
+ `.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),ej=new RegExp(`(?:^${mo}$)|(?:^${M2}$)`),tj=new RegExp(`^${mo}$`),rj=new RegExp(`^${M2}$`),Mx=r=>r&&r.exact?ej:new RegExp(`(?:${Na(r)}${mo}${Na(r)})|(?:${Na(r)}${M2}${Na(r)})`,"g");Mx.v4=r=>r&&r.exact?tj:new RegExp(`${Na(r)}${mo}${Na(r)}`,"g");Mx.v6=r=>r&&r.exact?rj:new RegExp(`${Na(r)}${M2}${Na(r)}`,"g");var Ux=Mx;function Fx(r){let e=(...t)=>r(...t);return Object.defineProperty(e,"name",{value:`functionTimeout(${r.name||"<anonymous>"})`,configurable:!0}),e}function BC(){return!1}var{toString:nj}=Object.prototype;function $x(r){return nj.call(r)==="[object RegExp]"}var MC={global:"g",ignoreCase:"i",multiline:"m",dotAll:"s",sticky:"y",unicode:"u"};function Hx(r,e={}){if(!$x(r))throw new TypeError("Expected a RegExp instance");let t=Object.keys(MC).map(i=>(typeof e[i]=="boolean"?e[i]:r[i])?MC[i]:"").join(""),n=new RegExp(e.source||r.source,t);return n.lastIndex=typeof e.lastIndex=="number"?e.lastIndex:r.lastIndex,n}function Vx(r,e,{timeout:t}={}){try{return Fx(()=>Hx(r).test(e),{timeout:t})()}catch(n){if(BC(n))return!1;throw n}}var ij=15,oj=45,UC={timeout:400};function zx(r){return r.length>oj?!1:Vx(Ux.v6({exact:!0}),r,UC)}function FC(r){return r.length>ij?!1:Vx(Ux.v4({exact:!0}),r,UC)}var $C={http:"80",https:"443",ws:"80",wss:"443"},sj=["http","https","ws","wss"];function HC(r,e){e=e??{};let t=e.defaultDnsType??"dns4",{scheme:n,hostname:i,port:o,path:s}=aj(r),a=[cj(i,t),lj(o,n),uj(n)];s!=null&&a.push(fj(s));let c="/"+a.filter(l=>!!l).reduce((l,u)=>l.concat(u),[]).join("/");return se(c)}function aj(r){let[e]=r.split(":");sj.includes(e)||(r="http"+r.substring(e.length));let{protocol:t,hostname:n,port:i,pathname:o,search:s}=new URL(r);if(i==null||i===""){let c=dj(e);c!=null&&(i=c),c==null&&t==="http:"&&(i="80")}let a;return o!=null&&o!==""&&o!=="/"&&(o.startsWith("/")&&(o=o.substring(1)),a=o),s!=null&&s!==""&&(a=a??"",a+=s),{scheme:e,hostname:n,port:i,path:a}}function cj(r,e){if(!(r==null||r==="")){if(FC(r))return["ip4",r];if(zx(r))return["ip6",r];if(r[0]==="["){let t=r.substring(1,r.length-1);if(zx(t))return["ip6",t]}return[e,r]}}function lj(r,e){if(!(r==null||r===""))return e==="udp"?["udp",r]:["tcp",r]}function uj(r){if(r.match(/^tcp$|^udp$/)==null)return[r]}function fj(r){if(!(r==null||r===""))return["http-path",encodeURIComponent(r)]}function dj(r){if(!(r==null||r===""||$C[r]==null))return $C[r]}var hj=["https://trustless-gateway.link","https://4everland.io"],pj=2336;function mj(r){return r=r.toString(),{id:gn(W.createV1(pj,cr.digest(O(r)))),multiaddrs:[HC(r)]}}var Kx=class{gateways;constructor(e={}){this.gateways=(e.gateways??hj).map(t=>mj(t))}async*findProviders(e,t){yield*this.gateways.toSorted(()=>Math.random()>.5?1:-1).map(n=>({...n,protocols:["transport-ipfs-gateway-http"]}))}};function kp(r={}){return new Kx(r)}var qx=class{libp2p;constructor(e){this.libp2p=e}async provide(e,t){await this.libp2p.contentRouting.provide(e,t)}async cancelReprovide(e,t){await this.libp2p.contentRouting.cancelReprovide(e,t)}async*findProviders(e,t){yield*this.libp2p.contentRouting.findProviders(e,t)}async put(e,t,n){await this.libp2p.contentRouting.put(e,t,n)}async get(e,t){return this.libp2p.contentRouting.get(e,t)}async findPeer(e,t){return this.libp2p.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t){yield*this.libp2p.peerRouting.getClosestPeers(e,t)}};function Pp(r){return new qx(r)}var Rp=class extends Is{data;constructor(){super(),this.data=new Map}put(e,t){return this.data.set(Jt.encode(e.multihash.bytes),t),e}get(e){let t=this.data.get(Jt.encode(e.multihash.bytes));if(t==null)throw new ki;return t}has(e){return this.data.has(Jt.encode(e.multihash.bytes))}async delete(e){this.data.delete(Jt.encode(e.multihash.bytes))}async*getAll(){for(let[e,t]of this.data.entries())yield{cid:W.createV1(vt,Ue(Jt.decode(e))),block:t}}};var H2e=ze("blockstore:core:tiered");var KC="SHARDING";function yj(r){return r[Symbol.asyncIterator]!=null}function wj(r,e){return yj(r)?async function*(){yield*(await Ps(r)).sort(e)}():function*(){yield*Ps(r).sort(e)}()}var U2=wj;var Ds=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:i}of e)await this.put(n,i,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,i){e.push({key:n,value:i})},delete(n){t.push(n)},commit:async n=>{await Sr(this.putMany(e,n)),e=[],await Sr(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 i=e.prefix;n=si(n,o=>o.key.toString().startsWith(i))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((i,o)=>si(i,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((i,o)=>U2(i,o),n)),e.offset!=null){let i=0,o=e.offset;n=si(n,()=>i++>=o)}return e.limit!=null&&(n=la(n,e.limit)),n}queryKeys(e,t){let n=this._allKeys(e,t);if(e.prefix!=null){let i=e.prefix;n=si(n,o=>o.toString().startsWith(i))}if(Array.isArray(e.filters)&&(n=e.filters.reduce((i,o)=>si(i,o),n)),Array.isArray(e.orders)&&(n=e.orders.reduce((i,o)=>U2(i,o),n)),e.offset!=null){let i=e.offset,o=0;n=si(n,()=>o++>=i)}return e.limit!=null&&(n=la(n,e.limit)),n}};var xl=class extends Ds{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 new ki;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 nt(e),value:t}}*_allKeys(){for(let e of this.data.keys())yield new nt(e)}};var xye=new nt(KC);var Nye=ze("datastore:core:tiered");var F2=class extends Ug{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 $2=class extends Error{name="UnexpectedEOFError";code="ERR_UNEXPECTED_EOF"};function go(r,e){let t=b0();r.sink(t).catch(async s=>{await t.end(s)}),r.sink=async s=>{for await(let a of s)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 i=new oe;return{read:async s=>{if(s?.signal?.throwIfAborted(),s?.bytes==null){let{done:c,value:l}=await Dt(n.next(),s?.signal);return c===!0?null:l}for(;i.byteLength<s.bytes;){let{value:c,done:l}=await Dt(n.next(),s?.signal);if(l===!0)throw new $2("unexpected end of input");i.append(c)}let a=i.sublist(0,s.bytes);return i.consume(s.bytes),a},write:async(s,a)=>{a?.signal?.throwIfAborted(),s instanceof Uint8Array?await t.push(s,a):await t.push(s.subarray(),a)},unwrap:()=>{if(i.byteLength>0){let s=r.source;r.source=async function*(){e?.yieldBytes===!1?yield i:yield*i,yield*s}()}return r}}}var H2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},V2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},z2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function jx(r,e={}){let t=go(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read({...s,bytes:1}));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new H2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new z2("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new V2("message length too long");return t.read({...s,bytes:a})},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function Wx(){let r=ye(),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 jC(){let r=Wx(),e=Wx();return[{source:r.source,sink:e.sink},{source:e.source,sink:r.sink}]}var Mf=!!globalThis.process?.env?.DUMP_SESSION_KEYS;function GC(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function K2(r){if(typeof r!="boolean")throw new Error(`boolean expected, not ${r}`)}function q2(r){if(!Number.isSafeInteger(r)||r<0)throw new Error("positive integer expected, got "+r)}function on(r,...e){if(!GC(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error("Uint8Array expected of length "+e+", got length="+r.length)}function Gx(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 XC(r,e){on(r);let t=e.outputLen;if(r.length<t)throw new Error("digestInto() expects output buffer of length at least "+t)}function Ns(r){return new Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}function Os(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function xj(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}var bj=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function vj(r){if(typeof r!="string")throw new Error("string expected");return new Uint8Array(new TextEncoder().encode(r))}function j2(r){if(typeof r=="string")r=vj(r);else if(GC(r))r=W2(r);else throw new Error("Uint8Array expected, got "+typeof r);return r}function YC(r,e){if(e==null||typeof e!="object")throw new Error("options must be defined");return Object.assign(r,e)}function QC(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 Xx=(r,e)=>{function t(n,...i){if(on(n),!bj)throw new Error("Non little-endian hardware is not yet supported");if(r.nonceLength!==void 0){let u=i[0];if(!u)throw new Error("nonce / iv required");r.varSizeNonce?on(u):on(u,r.nonceLength)}let o=r.tagLength;o&&i[1]!==void 0&&on(i[1]);let s=e(n,...i),a=(u,f)=>{if(f!==void 0){if(u!==2)throw new Error("cipher output not supported");on(f)}},c=!1;return{encrypt(u,f){if(c)throw new Error("cannot encrypt() twice with same key + nonce");return c=!0,on(u),a(s.encrypt.length,f),s.encrypt(u,f)},decrypt(u,f){if(on(u),o&&u.length<o)throw new Error("invalid ciphertext length: smaller than tagLength="+o);return a(s.decrypt.length,f),s.decrypt(u,f)}}}return Object.assign(t,r),t};function Yx(r,e,t=!0){if(e===void 0)return new Uint8Array(r);if(e.length!==r)throw new Error("invalid output length, expected "+r+", got: "+e.length);if(t&&!Ej(e))throw new Error("invalid output, must be aligned");return e}function WC(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),c=n?4:0,l=n?0:4;r.setUint32(e+c,s,n),r.setUint32(e+l,a,n)}function ZC(r,e,t){K2(t);let n=new Uint8Array(16),i=xj(n);return WC(i,0,BigInt(e),t),WC(i,8,BigInt(r),t),n}function Ej(r){return r.byteOffset%4===0}function W2(r){return Uint8Array.from(r)}var ek=r=>Uint8Array.from(r.split("").map(e=>e.charCodeAt(0))),Sj=ek("expand 16-byte k"),Aj=ek("expand 32-byte k"),_j=Ns(Sj),Ij=Ns(Aj);function de(r,e){return r<<e|r>>>32-e}function Qx(r){return r.byteOffset%4===0}var G2=64,Tj=16,tk=2**32-1,JC=new Uint32Array;function Cj(r,e,t,n,i,o,s,a){let c=i.length,l=new Uint8Array(G2),u=Ns(l),f=Qx(i)&&Qx(o),h=f?Ns(i):JC,d=f?Ns(o):JC;for(let m=0;m<c;s++){if(r(e,t,n,u,s,a),s>=tk)throw new Error("arx: counter overflow");let g=Math.min(G2,c-m);if(f&&g===G2){let w=m/4;if(m%4!==0)throw new Error("arx: invalid block position");for(let x=0,v;x<Tj;x++)v=w+x,d[v]=h[v]^u[x];m+=G2;continue}for(let w=0,x;w<g;w++)x=m+w,o[x]=i[x]^l[w];m+=g}}function Zx(r,e){let{allowShortKeys:t,extendNonceFn:n,counterLength:i,counterRight:o,rounds:s}=YC({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},e);if(typeof r!="function")throw new Error("core must be a function");return q2(i),q2(s),K2(o),K2(t),(a,c,l,u,f=0)=>{on(a),on(c),on(l);let h=l.length;if(u===void 0&&(u=new Uint8Array(h)),on(u),q2(f),f<0||f>=tk)throw new Error("arx: counter overflow");if(u.length<h)throw new Error(`arx: output (${u.length}) is shorter than data (${h})`);let d=[],m=a.length,g,w;if(m===32)d.push(g=W2(a)),w=Ij;else if(m===16&&t)g=new Uint8Array(32),g.set(a),g.set(a,16),w=_j,d.push(g);else throw new Error(`arx: invalid 32-byte key, got length=${m}`);Qx(c)||d.push(c=W2(c));let x=Ns(g);if(n){if(c.length!==24)throw new Error("arx: extended nonce must be 24 bytes");n(w,x,Ns(c.subarray(0,16)),x),c=c.subarray(16)}let v=16-i;if(v!==c.length)throw new Error(`arx: nonce must be ${v} or 16 bytes`);if(v!==12){let S=new Uint8Array(12);S.set(c,o?0:12-c.length),c=S,d.push(c)}let b=Ns(c);return Cj(r,w,x,b,l,u,f,s),Os(...d),u}}var Lr=(r,e)=>r[e++]&255|(r[e++]&255)<<8,Jx=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=j2(e),on(e,32);let t=Lr(e,0),n=Lr(e,2),i=Lr(e,4),o=Lr(e,6),s=Lr(e,8),a=Lr(e,10),c=Lr(e,12),l=Lr(e,14);this.r[0]=t&8191,this.r[1]=(t>>>13|n<<3)&8191,this.r[2]=(n>>>10|i<<6)&7939,this.r[3]=(i>>>7|o<<9)&8191,this.r[4]=(o>>>4|s<<12)&255,this.r[5]=s>>>1&8190,this.r[6]=(s>>>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 u=0;u<8;u++)this.pad[u]=Lr(e,16+2*u)}process(e,t,n=!1){let i=n?0:2048,{h:o,r:s}=this,a=s[0],c=s[1],l=s[2],u=s[3],f=s[4],h=s[5],d=s[6],m=s[7],g=s[8],w=s[9],x=Lr(e,t+0),v=Lr(e,t+2),b=Lr(e,t+4),S=Lr(e,t+6),T=Lr(e,t+8),D=Lr(e,t+10),A=Lr(e,t+12),I=Lr(e,t+14),k=o[0]+(x&8191),X=o[1]+((x>>>13|v<<3)&8191),K=o[2]+((v>>>10|b<<6)&8191),V=o[3]+((b>>>7|S<<9)&8191),Y=o[4]+((S>>>4|T<<12)&8191),$=o[5]+(T>>>1&8191),F=o[6]+((T>>>14|D<<2)&8191),z=o[7]+((D>>>11|A<<5)&8191),M=o[8]+((A>>>8|I<<8)&8191),R=o[9]+(I>>>5|i),N=0,Z=N+k*a+X*(5*w)+K*(5*g)+V*(5*m)+Y*(5*d);N=Z>>>13,Z&=8191,Z+=$*(5*h)+F*(5*f)+z*(5*u)+M*(5*l)+R*(5*c),N+=Z>>>13,Z&=8191;let ne=N+k*c+X*a+K*(5*w)+V*(5*g)+Y*(5*m);N=ne>>>13,ne&=8191,ne+=$*(5*d)+F*(5*h)+z*(5*f)+M*(5*u)+R*(5*l),N+=ne>>>13,ne&=8191;let q=N+k*l+X*c+K*a+V*(5*w)+Y*(5*g);N=q>>>13,q&=8191,q+=$*(5*m)+F*(5*d)+z*(5*h)+M*(5*f)+R*(5*u),N+=q>>>13,q&=8191;let ge=N+k*u+X*l+K*c+V*a+Y*(5*w);N=ge>>>13,ge&=8191,ge+=$*(5*g)+F*(5*m)+z*(5*d)+M*(5*h)+R*(5*f),N+=ge>>>13,ge&=8191;let ke=N+k*f+X*u+K*l+V*c+Y*a;N=ke>>>13,ke&=8191,ke+=$*(5*w)+F*(5*g)+z*(5*m)+M*(5*d)+R*(5*h),N+=ke>>>13,ke&=8191;let le=N+k*h+X*f+K*u+V*l+Y*c;N=le>>>13,le&=8191,le+=$*a+F*(5*w)+z*(5*g)+M*(5*m)+R*(5*d),N+=le>>>13,le&=8191;let De=N+k*d+X*h+K*f+V*u+Y*l;N=De>>>13,De&=8191,De+=$*c+F*a+z*(5*w)+M*(5*g)+R*(5*m),N+=De>>>13,De&=8191;let et=N+k*m+X*d+K*h+V*f+Y*u;N=et>>>13,et&=8191,et+=$*l+F*c+z*a+M*(5*w)+R*(5*g),N+=et>>>13,et&=8191;let Ye=N+k*g+X*m+K*d+V*h+Y*f;N=Ye>>>13,Ye&=8191,Ye+=$*u+F*l+z*c+M*a+R*(5*w),N+=Ye>>>13,Ye&=8191;let pt=N+k*w+X*g+K*m+V*d+Y*h;N=pt>>>13,pt&=8191,pt+=$*f+F*u+z*l+M*c+R*a,N+=pt>>>13,pt&=8191,N=(N<<2)+N|0,N=N+Z|0,Z=N&8191,N=N>>>13,ne+=N,o[0]=Z,o[1]=ne,o[2]=q,o[3]=ge,o[4]=ke,o[5]=le,o[6]=De,o[7]=et,o[8]=Ye,o[9]=pt}finalize(){let{h:e,pad:t}=this,n=new Uint16Array(10),i=e[1]>>>13;e[1]&=8191;for(let a=2;a<10;a++)e[a]+=i,i=e[a]>>>13,e[a]&=8191;e[0]+=i*5,i=e[0]>>>13,e[0]&=8191,e[1]+=i,i=e[1]>>>13,e[1]&=8191,e[2]+=i,n[0]=e[0]+5,i=n[0]>>>13,n[0]&=8191;for(let a=1;a<10;a++)n[a]=e[a]+i,i=n[a]>>>13,n[a]&=8191;n[9]-=8192;let o=(i^1)-1;for(let a=0;a<10;a++)n[a]&=o;o=~o;for(let a=0;a<10;a++)e[a]=e[a]&o|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 s=e[0]+t[0];e[0]=s&65535;for(let a=1;a<8;a++)s=(e[a]+t[a]|0)+(s>>>16)|0,e[a]=s&65535;Os(n)}update(e){Gx(this),e=j2(e),on(e);let{buffer:t,blockLen:n}=this,i=e.length;for(let o=0;o<i;){let s=Math.min(n-this.pos,i-o);if(s===n){for(;n<=i-o;o+=n)this.process(e,o);continue}t.set(e.subarray(o,o+s),this.pos),this.pos+=s,o+=s,this.pos===n&&(this.process(t,0,!1),this.pos=0)}return this}destroy(){Os(this.h,this.r,this.buffer,this.pad)}digestInto(e){Gx(this),XC(e,this),this.finished=!0;let{buffer:t,h:n}=this,{pos:i}=this;if(i){for(t[i++]=1;i<16;i++)t[i]=0;this.process(t,0,!0)}this.finalize();let o=0;for(let s=0;s<8;s++)e[o++]=n[s]>>>0,e[o++]=n[s]>>>8;return e}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}};function kj(r){let e=(n,i)=>r(i).update(j2(n)).digest(),t=r(new Uint8Array(32));return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=n=>r(n),e}var rk=kj(r=>new Jx(r));function ok(r,e,t,n,i,o=20){let s=r[0],a=r[1],c=r[2],l=r[3],u=e[0],f=e[1],h=e[2],d=e[3],m=e[4],g=e[5],w=e[6],x=e[7],v=i,b=t[0],S=t[1],T=t[2],D=s,A=a,I=c,k=l,X=u,K=f,V=h,Y=d,$=m,F=g,z=w,M=x,R=v,N=b,Z=S,ne=T;for(let ge=0;ge<o;ge+=2)D=D+X|0,R=de(R^D,16),$=$+R|0,X=de(X^$,12),D=D+X|0,R=de(R^D,8),$=$+R|0,X=de(X^$,7),A=A+K|0,N=de(N^A,16),F=F+N|0,K=de(K^F,12),A=A+K|0,N=de(N^A,8),F=F+N|0,K=de(K^F,7),I=I+V|0,Z=de(Z^I,16),z=z+Z|0,V=de(V^z,12),I=I+V|0,Z=de(Z^I,8),z=z+Z|0,V=de(V^z,7),k=k+Y|0,ne=de(ne^k,16),M=M+ne|0,Y=de(Y^M,12),k=k+Y|0,ne=de(ne^k,8),M=M+ne|0,Y=de(Y^M,7),D=D+K|0,ne=de(ne^D,16),z=z+ne|0,K=de(K^z,12),D=D+K|0,ne=de(ne^D,8),z=z+ne|0,K=de(K^z,7),A=A+V|0,R=de(R^A,16),M=M+R|0,V=de(V^M,12),A=A+V|0,R=de(R^A,8),M=M+R|0,V=de(V^M,7),I=I+Y|0,N=de(N^I,16),$=$+N|0,Y=de(Y^$,12),I=I+Y|0,N=de(N^I,8),$=$+N|0,Y=de(Y^$,7),k=k+X|0,Z=de(Z^k,16),F=F+Z|0,X=de(X^F,12),k=k+X|0,Z=de(Z^k,8),F=F+Z|0,X=de(X^F,7);let q=0;n[q++]=s+D|0,n[q++]=a+A|0,n[q++]=c+I|0,n[q++]=l+k|0,n[q++]=u+X|0,n[q++]=f+K|0,n[q++]=h+V|0,n[q++]=d+Y|0,n[q++]=m+$|0,n[q++]=g+F|0,n[q++]=w+z|0,n[q++]=x+M|0,n[q++]=v+R|0,n[q++]=b+N|0,n[q++]=S+Z|0,n[q++]=T+ne|0}function Pj(r,e,t,n){let i=r[0],o=r[1],s=r[2],a=r[3],c=e[0],l=e[1],u=e[2],f=e[3],h=e[4],d=e[5],m=e[6],g=e[7],w=t[0],x=t[1],v=t[2],b=t[3];for(let T=0;T<20;T+=2)i=i+c|0,w=de(w^i,16),h=h+w|0,c=de(c^h,12),i=i+c|0,w=de(w^i,8),h=h+w|0,c=de(c^h,7),o=o+l|0,x=de(x^o,16),d=d+x|0,l=de(l^d,12),o=o+l|0,x=de(x^o,8),d=d+x|0,l=de(l^d,7),s=s+u|0,v=de(v^s,16),m=m+v|0,u=de(u^m,12),s=s+u|0,v=de(v^s,8),m=m+v|0,u=de(u^m,7),a=a+f|0,b=de(b^a,16),g=g+b|0,f=de(f^g,12),a=a+f|0,b=de(b^a,8),g=g+b|0,f=de(f^g,7),i=i+l|0,b=de(b^i,16),m=m+b|0,l=de(l^m,12),i=i+l|0,b=de(b^i,8),m=m+b|0,l=de(l^m,7),o=o+u|0,w=de(w^o,16),g=g+w|0,u=de(u^g,12),o=o+u|0,w=de(w^o,8),g=g+w|0,u=de(u^g,7),s=s+f|0,x=de(x^s,16),h=h+x|0,f=de(f^h,12),s=s+f|0,x=de(x^s,8),h=h+x|0,f=de(f^h,7),a=a+c|0,v=de(v^a,16),d=d+v|0,c=de(c^d,12),a=a+c|0,v=de(v^a,8),d=d+v|0,c=de(c^d,7);let S=0;n[S++]=i,n[S++]=o,n[S++]=s,n[S++]=a,n[S++]=w,n[S++]=x,n[S++]=v,n[S++]=b}var Rj=Zx(ok,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Dj=Zx(ok,{counterRight:!1,counterLength:8,extendNonceFn:Pj,allowShortKeys:!1});var Nj=new Uint8Array(16),nk=(r,e)=>{r.update(e);let t=e.length%16;t&&r.update(Nj.subarray(t))},Oj=new Uint8Array(32);function ik(r,e,t,n,i){let o=r(e,t,Oj),s=rk.create(o);i&&nk(s,i),nk(s,n);let a=ZC(n.length,i?i.length:0,!0);s.update(a);let c=s.digest();return Os(o,a),c}var sk=r=>(e,t,n)=>({encrypt(o,s){let a=o.length;s=Yx(a+16,s,!1),s.set(o);let c=s.subarray(0,-16);r(e,t,c,c,1);let l=ik(r,e,t,c,n);return s.set(l,a),Os(l),s},decrypt(o,s){s=Yx(o.length-16,s,!1);let a=o.subarray(0,-16),c=o.subarray(-16),l=ik(r,e,t,a,n);if(!QC(c,l))throw new Error("invalid tag");return s.set(o.subarray(0,-16)),r(e,t,s,s,1),Os(l),s}}),e9=Xx({blockSize:64,nonceLength:12,tagLength:16},sk(Rj)),A3e=Xx({blockSize:64,nonceLength:24,tagLength:16},sk(Dj));function ck(r,e,t){return Hc(r),t===void 0&&(t=new Uint8Array(r.outputLen)),ba(r,ha(t),ha(e))}var t9=Uint8Array.from([0]),ak=Uint8Array.of();function lk(r,e,t,n=32){Hc(r),Mo(n);let i=r.outputLen;if(n>255*i)throw new Error("Length should be <= 255*HashLen");let o=Math.ceil(n/i);t===void 0&&(t=ak);let s=new Uint8Array(o*i),a=ba.create(r,e),c=a._cloneInto(),l=new Uint8Array(a.outputLen);for(let u=0;u<o;u++)t9[0]=u+1,c.update(u===0?ak:l).update(t).update(t9).digestInto(l),s.set(l,i*u),a._cloneInto(c);return a.destroy(),c.destroy(),Jr(l,t9),s.slice(0,n)}var r9={hashSHA256(r){return zo(r.subarray())},getHKDF(r,e){let t=ck(zo,e,r),i=lk(zo,t,void 0,96),o=i.subarray(0,32),s=i.subarray(32,64),a=i.subarray(64,96);return[o,s,a]},generateX25519KeyPair(){let r=Mh.utils.randomPrivateKey();return{publicKey:Mh.getPublicKey(r),privateKey:r}},generateX25519KeyPairFromSeed(r){return{publicKey:Mh.getPublicKey(r),privateKey:r}},generateX25519SharedKey(r,e){return Mh.getSharedSecret(r.subarray(),e.subarray())},chaCha20Poly1305Encrypt(r,e,t,n){return e9(n,e,t).encrypt(r.subarray())},chaCha20Poly1305Decrypt(r,e,t,n,i){return e9(n,e,t).decrypt(r.subarray(),i)}};var uk=r9;function fk(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 Uf=r=>{let e=$t(2);return e[0]=r>>8,e[1]=r,e};Uf.bytes=2;var Dp=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)};Dp.bytes=2;function dk(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 n9(r,e){!e.enabled||!Mf||(r?(e(`LOCAL_STATIC_PUBLIC_KEY ${H(r.publicKey,"hex")}`),e(`LOCAL_STATIC_PRIVATE_KEY ${H(r.privateKey,"hex")}`)):e("Missing local static keys."))}function i9(r,e){!e.enabled||!Mf||(r?(e(`LOCAL_PUBLIC_EPHEMERAL_KEY ${H(r.publicKey,"hex")}`),e(`LOCAL_PRIVATE_EPHEMERAL_KEY ${H(r.privateKey,"hex")}`)):e("Missing local ephemeral keys."))}function hk(r,e){!e.enabled||!Mf||e(r?`REMOTE_STATIC_PUBLIC_KEY ${H(r.subarray(),"hex")}`:"Missing remote static public key.")}function o9(r,e){!e.enabled||!Mf||e(r?`REMOTE_EPHEMERAL_PUBLIC_KEY ${H(r.subarray(),"hex")}`:"Missing remote ephemeral keys.")}function s9(r,e,t){!t.enabled||!Mf||(t(`CIPHER_STATE_1 ${r.n.getUint64()} ${r.k&&H(r.k,"hex")}`),t(`CIPHER_STATE_2 ${e.n.getUint64()} ${e.k&&H(e.k,"hex")}`))}var Ff=class r extends Error{code;constructor(e="Invalid crypto exchange"){super(e),this.code=r.code}static code="ERR_INVALID_CRYPTO_EXCHANGE"};var Lj=0,Bj=4294967295,Mj="Cipherstate has reached maximum n, a new handshake must be performed",X2=class{n;bytes;view;constructor(e=Lj){this.n=e,this.bytes=Pe(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>Bj)throw new Error(Mj)}};var bl=Pe(0),$f=class{k;n;crypto;constructor(e,t=void 0,n=0){this.crypto=e,this.k=t,this.n=new X2(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 i=this.crypto.decrypt(t,this.n.getBytes(),e,this.k,n);return this.n.increment(),i}},a9=class{cs;ck;h;crypto;constructor(e,t){this.crypto=e;let n=O(t,"utf-8");this.h=Uj(e,n),this.ck=this.h,this.cs=new $f(e)}mixKey(e){let[t,n]=this.crypto.hkdf(this.ck,e);this.ck=t,this.cs=new $f(this.crypto,n)}mixHash(e){this.h=this.crypto.hash(new oe(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,bl);return[new $f(this.crypto,e),new $f(this.crypto,t)]}},c9=class{ss;s;e;rs;re;initiator;crypto;constructor(e){let{crypto:t,protocolName:n,prologue:i,initiator:o,s,e:a,rs:c,re:l}=e;this.crypto=t,this.ss=new a9(t,n),this.ss.mixHash(i),this.initiator=o,this.s=s,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 i=e.sublist(t,t+n);return this.rs=this.ss.decryptAndHash(i),n}readEE(){this.writeEE()}readES(){this.writeES()}readSE(){this.writeSE()}},Np=class extends c9{writeMessageA(e){return new oe(this.writeE(),this.ss.encryptAndHash(e))}writeMessageB(e){let t=this.writeE();this.writeEE();let n=this.writeS();return this.writeES(),new oe(t,n,this.ss.encryptAndHash(e))}writeMessageC(e){let t=this.writeS();return this.writeSE(),new oe(t,this.ss.encryptAndHash(e))}readMessageA(e){try{return this.readE(e),this.ss.decryptAndHash(e.sublist(32))}catch(t){throw new Ff(`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 Ff(`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 Ff(`handshake stage 2 validation fail: ${t.message}`)}}};function Uj(r,e){if(e.length<=32){let t=Pe(32);return t.set(e),t}else return r.hash(e)}var Y2;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.webtransportCerthashes!=null)for(let o of t.webtransportCerthashes)n.uint32(10),n.bytes(o);if(t.streamMuxers!=null)for(let o of t.streamMuxers)n.uint32(18),n.string(o);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={webtransportCerthashes:[],streamMuxers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{if(i.limits?.webtransportCerthashes!=null&&o.webtransportCerthashes.length===i.limits.webtransportCerthashes)throw new wt('Decode error - map field "webtransportCerthashes" had too many elements');o.webtransportCerthashes.push(t.bytes());break}case 2:{if(i.limits?.streamMuxers!=null&&o.streamMuxers.length===i.limits.streamMuxers)throw new wt('Decode error - map field "streamMuxers" had too many elements');o.streamMuxers.push(t.string());break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Y2||(Y2={}));var Op;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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),Y2.codec().encode(t.extensions,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={identityKey:Pe(0),identitySig:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.identityKey=t.bytes();break}case 2:{o.identitySig=t.bytes();break}case 4:{o.extensions=Y2.codec().decode(t,t.uint32(),{limits:i.limits?.extensions});break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Op||(Op={}));async function l9(r,e,t){let n=await r.sign(pk(e));return Op.encode({identityKey:lr(r.publicKey),identitySig:n,extensions:t})}async function u9(r,e,t){try{let n=Op.decode(r),i=tr(n.identityKey);if(t?.equals(i)===!1)throw new Error(`Payload identity key ${i} does not match expected remote identity key ${t}`);if(!e)throw new Error("Remote static does not exist");let o=pk(e);if(!await i.verify(o,n.identitySig))throw new Error("Invalid payload signature");return n}catch(n){throw new t0(n.message)}}function pk(r){let e=O("noise-libp2p-static-key:");return r instanceof Uint8Array?Ve([e,r],e.length+r.length):(r.prepend(e),r)}async function mk(r,e){let{log:t,connection:n,crypto:i,privateKey:o,prologue:s,s:a,remoteIdentityKey:c,extensions:l}=r,u=await l9(o,a.publicKey,l),f=new Np({crypto:i,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!0,prologue:s,s:a});n9(f.s,t),t.trace("Stage 0 - Initiator starting to send first message."),await n.write(f.writeMessageA(bl),e),t.trace("Stage 0 - Initiator finished sending first message."),i9(f.e,t),t.trace("Stage 1 - Initiator waiting to receive first message from responder...");let h=f.readMessageB(await n.read(e));t.trace("Stage 1 - Initiator received the message."),o9(f.re,t),hk(f.rs,t),t.trace("Initiator going to check remote's signature...");let d=await u9(h,f.rs,c);t.trace("All good with the signature!"),t.trace("Stage 2 - Initiator sending third handshake message."),await n.write(f.writeMessageC(u),e),t.trace("Stage 2 - Initiator sent message with signed payload.");let[m,g]=f.ss.split();return s9(m,g,t),{payload:d,encrypt:w=>m.encryptWithAd(bl,w),decrypt:(w,x)=>g.decryptWithAd(bl,w,x)}}async function gk(r,e){let{log:t,connection:n,crypto:i,privateKey:o,prologue:s,s:a,remoteIdentityKey:c,extensions:l}=r,u=await l9(o,a.publicKey,l),f=new Np({crypto:i,protocolName:"Noise_XX_25519_ChaChaPoly_SHA256",initiator:!1,prologue:s,s:a});n9(f.s,t),t.trace("Stage 0 - Responder waiting to receive first message."),f.readMessageA(await n.read(e)),t.trace("Stage 0 - Responder received first message."),o9(f.re,t),t.trace("Stage 1 - Responder sending out first message with signed payload and static key."),await n.write(f.writeMessageB(u),e),t.trace("Stage 1 - Responder sent the second handshake message with signed payload."),i9(f.e,t),t.trace("Stage 2 - Responder waiting for third handshake message...");let h=f.readMessageC(await n.read(e));t.trace("Stage 2 - Responder received the message, finished handshake.");let d=await u9(h,f.rs,c),[m,g]=f.ss.split();return s9(m,g,t),{payload:d,encrypt:w=>g.encryptWithAd(bl,w),decrypt:(w,x)=>m.decryptWithAd(bl,w,x)}}var wk=16;function xk(r,e){return async function*(t){for await(let n of t)for(let i=0;i<n.length;i+=65519){let o=i+65519;o>n.length&&(o=n.length);let s;n instanceof Uint8Array?s=r.encrypt(n.subarray(i,o)):s=r.encrypt(n.sublist(i,o)),e?.encryptedPackets.increment(),yield new oe(Uf(s.byteLength),s)}}}function bk(r,e){return async function*(t){for await(let n of t)for(let i=0;i<n.length;i+=65535){let o=i+65535;if(o>n.length&&(o=n.length),o-wk<i)throw new Error("Invalid chunk");let s=n.sublist(i,o),a=n.subarray(i,o-wk);try{let c=r.decrypt(s,a);e?.decryptedPackets.increment(),yield c}catch(c){throw e?.decryptErrors.increment(),c}}}}var Q2=class{protocol="/noise";crypto;prologue;staticKey;extensions;metrics;components;constructor(e,t={}){let{staticNoiseKey:n,extensions:i,crypto:o,prologueBytes:s}=t,{metrics:a}=e;this.components=e;let c=o??uk;this.crypto=fk(c),this.extensions={webtransportCerthashes:[],...i},this.metrics=a?dk(a):void 0,n?this.staticKey=c.generateX25519KeyPairFromSeed(n):this.staticKey=c.generateX25519KeyPair(),this.prologue=s??Pe(0)}[Symbol.toStringTag]="@chainsafe/libp2p-noise";[tt]=["@libp2p/connection-encryption","@chainsafe/libp2p-noise"];async secureOutbound(e,t){let n=jx(e,{lengthEncoder:Uf,lengthDecoder:Dp,maxDataLength:65535}),i=await this.performHandshakeInitiator(n,this.components.privateKey,t?.remotePeer?.publicKey,t),o=await this.createSecureConnection(n,i);e.source=o.source,e.sink=o.sink;let s=tr(i.payload.identityKey);return{conn:e,remoteExtensions:i.payload.extensions,remotePeer:Ko(s),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(i.payload.extensions?.streamMuxers)}}getStreamMuxer(e){if(e==null||e.length===0)return;let t=this.components.upgrader.getStreamMuxers();if(t!=null)for(let n of e){let i=t.get(n);if(i!=null)return i}if(e.length)throw new r0("Early muxer negotiation was requested but the initiator and responder had no common muxers")}async secureInbound(e,t){let n=jx(e,{lengthEncoder:Uf,lengthDecoder:Dp,maxDataLength:65535}),i=await this.performHandshakeResponder(n,this.components.privateKey,t?.remotePeer?.publicKey,t),o=await this.createSecureConnection(n,i);e.source=o.source,e.sink=o.sink;let s=tr(i.payload.identityKey);return{conn:e,remoteExtensions:i.payload.extensions,remotePeer:Ko(s),streamMuxer:t?.skipStreamMuxerNegotiation===!0?void 0:this.getStreamMuxer(i.payload.extensions?.streamMuxers)}}async performHandshakeInitiator(e,t,n,i){let o,s=i?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{o=await mk({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:s,webtransportCerthashes:[],...this.extensions}},i),this.metrics?.xxHandshakeSuccesses.increment()}catch(a){throw this.metrics?.xxHandshakeErrors.increment(),a}return o}async performHandshakeResponder(e,t,n,i){let o,s=i?.skipStreamMuxerNegotiation===!0?[]:[...this.components.upgrader.getStreamMuxers().keys()];try{o=await gk({connection:e,privateKey:t,remoteIdentityKey:n,log:this.components.logger.forComponent("libp2p:noise:xxhandshake"),crypto:this.crypto,prologue:this.prologue,s:this.staticKey,extensions:{streamMuxers:s,webtransportCerthashes:[],...this.extensions}},i),this.metrics?.xxHandshakeSuccesses.increment()}catch(a){throw this.metrics?.xxHandshakeErrors.increment(),a}return o}async createSecureConnection(e,t){let[n,i]=jC(),o=e.unwrap();return await ot(n,xk(t,this.metrics),o,s=>Qi(s,{lengthDecoder:Dp}),bk(t,this.metrics),n),i}};function Z2(r={}){return e=>new Q2(e,r)}function Hf(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 yo=class extends Error{static name="InvalidFrameError";constructor(e="The frame was invalid"){super(e),this.name="InvalidFrameError"}},Vf=class extends Error{static name="UnrequestedPingError";constructor(e="Unrequested ping error"){super(e),this.name="UnrequestedPingError"}},zf=class extends Error{static name="NotMatchingPingError";constructor(e="Unrequested ping error"){super(e),this.name="NotMatchingPingError"}},J2=class extends Error{static name="InvalidStateError";constructor(e="Invalid state"){super(e),this.name="InvalidStateError"}},ey=class extends Error{static name="StreamAlreadyExistsError";constructor(e="Strean already exists"){super(e),this.name="StreamAlreadyExistsError"}},ty=class extends Error{static name="DecodeInvalidVersionError";constructor(e="Decode invalid version"){super(e),this.name="DecodeInvalidVersionError"}},ry=class extends Error{static name="BothClientsError";constructor(e="Both clients"){super(e),this.name="BothClientsError"}},Kf=class extends Error{static name="ReceiveWindowExceededError";constructor(e="Receive window exceeded"){super(e),this.name="ReceiveWindowExceededError"}};var vk=new Set([yo.name,Vf.name,zf.name,ey.name,ty.name,ry.name,Kf.name]),Bp=256*1024,Ek=16*1024*1024;var Sk={enableKeepAlive:!0,keepAliveInterval:3e4,maxInboundStreams:1e3,maxOutboundStreams:1e3,initialStreamWindowSize:Bp,maxStreamWindowSize:Ek,maxMessageSize:64*1024};function Ak(r){if(r.keepAliveInterval<=0)throw new U("keep-alive interval must be positive");if(r.maxInboundStreams<0)throw new U("max inbound streams must be larger or equal 0");if(r.maxOutboundStreams<0)throw new U("max outbound streams must be larger or equal 0");if(r.initialStreamWindowSize<Bp)throw new U("InitialStreamWindowSize must be larger or equal 256 kB");if(r.maxStreamWindowSize<r.initialStreamWindowSize)throw new U("MaxStreamWindowSize must be larger than the InitialStreamWindowSize");if(r.maxStreamWindowSize>2**32-1)throw new U("MaxStreamWindowSize must be less than equal MAX_UINT32");if(r.maxMessageSize<1024)throw new U("MaxMessageSize must be greater than a kilobyte")}var jt;(function(r){r[r.Data=0]="Data",r[r.WindowUpdate=1]="WindowUpdate",r[r.Ping=2]="Ping",r[r.GoAway=3]="GoAway"})(jt||(jt={}));var Ot;(function(r){r[r.SYN=1]="SYN",r[r.ACK=2]="ACK",r[r.FIN=4]="FIN",r[r.RST=8]="RST"})(Ot||(Ot={}));var z4e=Object.values(Ot).filter(r=>typeof r!="string"),_k=0,Pi;(function(r){r[r.NormalTermination=0]="NormalTermination",r[r.ProtocolError=1]="ProtocolError",r[r.InternalError=2]="InternalError"})(Pi||(Pi={}));var Oa=12;var Ik=2**24;function Fj(r){if(r[0]!==_k)throw new yo("Invalid frame version");return{type:r[1],flag:(r[2]<<8)+r[3],streamID:r[4]*Ik+(r[5]<<16)+(r[6]<<8)+r[7],length:r[8]*Ik+(r[9]<<16)+(r[10]<<8)+r[11]}}var ny=class{source;buffer;frameInProgress;constructor(e){this.source=$j(e),this.buffer=new oe,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:i}=t;n===jt.Data?(this.frameInProgress=!0,yield{header:t,readData:this.readBytes.bind(this,i)}):yield{header:t}}}readHeader(){if(this.frameInProgress)throw new J2("decoding frame already in progress");if(this.buffer.length<Oa)return;let e=Fj(this.buffer.subarray(0,Oa));return this.buffer.consume(Oa),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 $j(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 f9(r){let e=new Uint8Array(Oa);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 Tk(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}function iy(r,e){let t=Hf(r).return?.();Tk(t)&&t.catch(n=>{e.error("could not cause iterator to return",n)})}var Hj=5e3;function d9(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var La=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=ye(),this.closed=ye(),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??Hj,this.onEnd=e.onEnd,this.onCloseRead=e?.onCloseRead,this.onCloseWrite=e?.onCloseWrite,this.onReset=e?.onReset,this.onAbort=e?.onAbort,this.source=this.streamSource=Xr({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 Tc(`writable end state is "${this.writeStatus}" not "ready"`);try{this.writeStatus="writing";let t={signal:this.sinkController.signal};if(this.direction==="outbound"){let i=this.sendNewStream(t);d9(i)&&await i}let n=()=>{iy(e,this.log)};try{this.sinkController.signal.addEventListener("abort",n),this.log.trace("sink reading from source");for await(let i of e){i=i instanceof Uint8Array?new oe(i):i;let o=this.sendData(i,t);d9(o)&&(this.sendingData=ye(),await o,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.status==="open"&&(this.log.trace("closing gracefully"),this.status="closing",await Dt(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 Dt(this.sink([]),e.signal)),this.writeStatus==="writing"&&(this.sendingData!=null&&await Dt(this.sendingData.promise,e.signal),this.log.trace("aborting source passed to .sink"),this.sinkController.abort(),await Dt(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();d9(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 i0("stream reset");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 Ri;(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"})(Ri||(Ri={}));var oy=class extends La{name;state;config;_id;sendWindowCapacity;sendWindowCapacityUpdate;recvWindow;recvWindowCapacity;epochStart;getRTT;sendFrame;constructor(e){super({...e,onEnd:t=>{this.state=Ri.Finished,e.onEnd?.(t)}}),this.config=e.config,this._id=parseInt(e.id,10),this.name=e.name,this.state=e.state,this.sendWindowCapacity=Bp,this.recvWindow=this.config.initialStreamWindowSize,this.recvWindowCapacity=this.recvWindow,this.epochStart=Date.now(),this.getRTT=e.getRTT,this.sendFrame=e.sendFrame,this.source=ll(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-Oa,e.length),i=this.getSendFlags();this.sendFrame({type:jt.Data,flag:i,streamID:this._id,length:n},e.sublist(0,n)),this.sendWindowCapacity-=n,e.consume(n)}}async sendReset(){this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:this._id,length:0})}async sendCloseWrite(){let e=this.getSendFlags()|Ot.FIN;this.sendFrame({type:jt.WindowUpdate,flag:e,streamID:this._id,length:0})}async sendCloseRead(){}async waitForSendWindowCapacity(e={}){if(this.sendWindowCapacity>0)return;let t,n,i=()=>{this.status==="open"||this.status==="closing"?n(new Tr("Stream aborted")):t()};e.signal?.addEventListener("abort",i);try{await new Promise((o,s)=>{this.sendWindowCapacityUpdate=()=>{o()},n=s,t=o})}finally{e.signal?.removeEventListener("abort",i)}}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 Kf("Receive window exceeded");let n=await t();this.recvWindowCapacity-=e.length,this.sourcePush(n)}processFlags(e){(e&Ot.ACK)===Ot.ACK&&this.state===Ri.SYNSent&&(this.state=Ri.Established),(e&Ot.FIN)===Ot.FIN&&this.remoteCloseWrite(),(e&Ot.RST)===Ot.RST&&this.reset()}getSendFlags(){switch(this.state){case Ri.Init:return this.state=Ri.SYNSent,Ot.SYN;case Ri.SYNReceived:return this.state=Ri.Established,Ot.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 i=this.recvWindow-this.recvWindowCapacity;this.recvWindowCapacity=this.recvWindow,this.epochStart=t,this.sendFrame({type:jt.WindowUpdate,flag:e,streamID:this._id,length:i})}};var Ck="/yamux/1.0.0",Vj=500,sy=class{protocol=Ck;_components;_init;constructor(e,t={}){this._components=e,this._init=t}[Symbol.toStringTag]="@chainsafe/libp2p-yamux";[tt]=["@libp2p/stream-multiplexing"];createStreamMuxer(e){return new h9(this._components,{...this._init,...e})}},h9=class{protocol=Ck;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={...Sk,...t},this.logger=e.logger,this.log=this.logger.forComponent("libp2p:yamux"),Ak(this.config),this.closeController=new AbortController,this.closeController.signal,this.onIncomingStream=t.onIncomingStream,this.onStreamEnd=t.onStreamEnd,this._streams=new Map,this.source=Xr({onEnd:()=>{this.log?.trace("muxer source ended"),this._streams.forEach(n=>{n.destroy()})}}),this.sink=async n=>{let i=()=>{let a=Hf(n);if(a.return!=null){let c=a.return();zj(c)&&c.catch(l=>{this.log?.("could not cause sink source to return",l)})}},o,s;try{let a=new ny(n);try{this.closeController.signal.addEventListener("abort",i);for await(let c of a.emitFrames())await this.handleFrame(c.header,c.readData)}finally{this.closeController.signal.removeEventListener("abort",i)}o=Pi.NormalTermination}catch(a){vk.has(a.name)?(this.log?.error("protocol error in sink",a),o=Pi.ProtocolError):(this.log?.error("internal error in sink",a),o=Pi.InternalError),s=a}this.log?.trace("muxer sink ended"),s!=null?this.abort(s,o):await this.close({reason:o})},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 Oo("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Oo("Muxer closed locally");let t=this.nextStreamID;if(this.nextStreamID+=2,this.numOutboundStreams>=this.config.maxOutboundStreams)throw new ca("max outbound streams exceeded");this.log?.trace("new outgoing stream id=%s",t);let n=this._newStream(t,e,Ri.Init,"outbound");return this._streams.set(t,n),this.numOutboundStreams++,n.sendWindowUpdate(),n}async ping(){if(this.remoteGoAway!==void 0)throw new Oo("Muxer closed remotely");if(this.localGoAway!==void 0)throw new Oo("Muxer closed locally");if(this.activePing===void 0){let e=()=>{};this.activePing={id:this.nextPingID++,promise:new Promise((i,o)=>{let s=()=>{o(new Oo("Muxer closed locally"))};this.closeController.signal.addEventListener("abort",s,{once:!0}),e=()=>{this.closeController.signal.removeEventListener("abort",s),i()}}),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??Pi.NormalTermination;if(this.log?.trace("muxer close reason=%s",t),e.signal==null){let n=AbortSignal.timeout(Vj);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??Pi.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,i){if(this._streams.get(e)!=null)throw new U("Stream already exists with that id");let o=new oy({id:e.toString(),name:t,state:n,direction:i,sendFrame:this.sendFrame.bind(this),onEnd:()=>{this.closeStream(e),this.onStreamEnd?.(o)},log:this.logger.forComponent(`libp2p:yamux:${i}:${e}`),config:this.config,getRTT:this.getRTT.bind(this)});return o}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:i,length:o}=e;if(this.log?.trace("received frame %o",e),n===0)switch(i){case jt.Ping:{this.handlePing(e);return}case jt.GoAway:{this.handleGoAway(o);return}default:throw new yo("Invalid frame type")}else switch(e.type){case jt.Data:case jt.WindowUpdate:{await this.handleStreamMessage(e,t);return}default:throw new yo("Invalid frame type")}}handlePing(e){if(e.flag===Ot.SYN)this.log?.trace("received ping request pingId=%s",e.length),this.sendPing(e.length,Ot.ACK);else if(e.flag===Ot.ACK)this.log?.trace("received ping response pingId=%s",e.length),this.handlePingResponse(e.length);else throw new yo("Invalid frame flag")}handlePingResponse(e){if(this.activePing===void 0)throw new Vf("ping not requested");if(this.activePing.id!==e)throw new zf("ping doesn't match our id");this.activePing.resolve()}handleGoAway(e){this.log?.trace("received GoAway reason=%s",Pi[e]??"unknown"),this.remoteGoAway=e;for(let t of this._streams.values())t.reset();this._closeMuxer()}async handleStreamMessage(e,t){let{streamID:n,flag:i,type:o}=e;(i&Ot.SYN)===Ot.SYN&&this.incomingStream(n);let s=this._streams.get(n);if(s===void 0){if(o===jt.Data){if(this.log?.("discarding data for stream id=%s",n),t===void 0)throw new Error("unreachable");await t()}else this.log?.trace("frame for missing stream id=%s",n);return}switch(o){case jt.WindowUpdate:{s.handleWindowUpdate(e);return}case jt.Data:{if(t===void 0)throw new Error("unreachable");await s.handleData(e,t);return}default:throw new Error("unreachable")}}incomingStream(e){if(this.client!==(e%2===0))throw new U("Both endpoints are clients");if(this._streams.has(e))return;if(this.log?.trace("new incoming stream id=%s",e),this.localGoAway!==void 0){this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:e,length:0});return}if(this.numInboundStreams>=this.config.maxInboundStreams){this.log?.("maxIncomingStreams exceeded, forcing stream reset"),this.sendFrame({type:jt.WindowUpdate,flag:Ot.RST,streamID:e,length:0});return}let t=this._newStream(e,void 0,Ri.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===jt.Data){if(t===void 0)throw new yo("Invalid frame");this.source.push(new oe(f9(e),t))}else this.source.push(f9(e))}sendPing(e,t=Ot.SYN){t===Ot.SYN?this.log?.trace("sending ping request pingId=%s",e):this.log?.trace("sending ping response pingId=%s",e),this.sendFrame({type:jt.Ping,flag:t,streamID:0,length:e})}sendGoAway(e=Pi.NormalTermination){this.log?.("sending GoAway reason=%s",Pi[e]),this.localGoAway=e,this.sendFrame({type:jt.GoAway,flag:0,streamID:0,length:e})}};function zj(r){return r!=null&&typeof r.then=="function"}function kk(r={}){return e=>new sy(e,r)}var Kj=41;function ay(r){try{let[[e,t]]=r.stringTuples();if(t==null)return!1;if(e===Kj)return WT("2000::/3",t)}catch{}return!1}function cy(r){try{let[[e]]=r.stringTuples();return e===4||e===41}catch{}return!1}function Di(r){try{if(!cy(r))return!1;let[[,e]]=r.stringTuples();return e==null?!1:bn(e)??!1}catch{}return!0}function Pk(r,e,t){let n,i;function o(){let a={signal:i.signal};if(t?.timeout!=null){let c=Ne([i.signal,AbortSignal.timeout(t.timeout)]);a.signal=c}Promise.resolve().then(async()=>{await r(a)}).catch(()=>{}).finally(()=>{i.signal.aborted||(n=setTimeout(o,e))})}let s=!1;return{setInterval:a=>{e=a,n!=null&&(clearTimeout(n),n=setTimeout(o,e))},setTimeout:a=>{t==null&&(t={}),t.timeout=a},start:()=>{s||(s=!0,i=new AbortController,i.signal,t?.runImmediately===!0?queueMicrotask(()=>{o()}):n=setTimeout(o,e))},stop:()=>{clearTimeout(n),i?.abort(),s=!1}}}var ly=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},uy=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},fy=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function Rk(r,e={}){let t=go(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Oe(e.maxDataLength));let n=e?.lengthDecoder??Zt,i=e?.lengthEncoder??ht;return{read:async s=>{let a=-1,c=new oe;for(;;){c.append(await t.read({...s,bytes:1}));try{a=n(c)}catch(l){if(l instanceof RangeError)continue;throw l}if(a<0)throw new ly("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new fy("message length length too long");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new uy("message length too long");return t.read({...s,bytes:a})},write:async(s,a)=>{await t.write(new oe(i(s.byteLength),s),a)},writeV:async(s,a)=>{let c=new oe(...s.flatMap(l=>[i(l.byteLength),l]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function ir(r,e){let t=Rk(r,e),n={read:async(i,o)=>{let s=await t.read(o);return i.decode(s)},write:async(i,o,s)=>{await t.write(o.encode(i),s)},writeV:async(i,o,s)=>{await t.writeV(i.map(a=>o.encode(a)),s)},pb:i=>({read:async o=>n.read(i,o),write:async(o,s)=>n.write(o,i,s),writeV:async(o,s)=>n.writeV(o,i,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Dk="libp2p",Nk="autonat",Ok="1.0.0";var Pt;(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=()=>St(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 i;(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"})(i||(i={})),function(l){l.codec=()=>St(i)}(n=r.ResponseStatus||(r.ResponseStatus={}));let o;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{if(d.lengthDelimited!==!1&&h.fork(),f.id!=null&&(h.uint32(10),h.bytes(f.id)),f.addrs!=null)for(let m of f.addrs)h.uint32(18),h.bytes(m);d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={addrs:[]},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.id=f.bytes();break}case 2:{if(d.limits?.addrs!=null&&m.addrs.length===d.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');m.addrs.push(f.bytes());break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(o=r.PeerInfo||(r.PeerInfo={}));let s;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.peer!=null&&(h.uint32(10),r.PeerInfo.codec().encode(f.peer,h)),d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.peer=r.PeerInfo.codec().decode(f,f.uint32(),{limits:d.limits?.peer});break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(s=r.Dial||(r.Dial={}));let a;(function(l){let u;l.codec=()=>(u==null&&(u=Ee((f,h,d={})=>{d.lengthDelimited!==!1&&h.fork(),f.status!=null&&(h.uint32(8),r.ResponseStatus.codec().encode(f.status,h)),f.statusText!=null&&(h.uint32(18),h.string(f.statusText)),f.addr!=null&&(h.uint32(26),h.bytes(f.addr)),d.lengthDelimited!==!1&&h.ldelim()},(f,h,d={})=>{let m={},g=h==null?f.len:f.pos+h;for(;f.pos<g;){let w=f.uint32();switch(w>>>3){case 1:{m.status=r.ResponseStatus.codec().decode(f);break}case 2:{m.statusText=f.string();break}case 3:{m.addr=f.bytes();break}default:{f.skipType(w&7);break}}}return m})),u),l.encode=f=>ve(f,l.codec()),l.decode=(f,h)=>be(f,l.codec(),h)})(a=r.DialResponse||(r.DialResponse={}));let c;r.codec=()=>(c==null&&(c=Ee((l,u,f={})=>{f.lengthDelimited!==!1&&u.fork(),l.type!=null&&(u.uint32(8),r.MessageType.codec().encode(l.type,u)),l.dial!=null&&(u.uint32(18),r.Dial.codec().encode(l.dial,u)),l.dialResponse!=null&&(u.uint32(26),r.DialResponse.codec().encode(l.dialResponse,u)),f.lengthDelimited!==!1&&u.ldelim()},(l,u,f={})=>{let h={},d=u==null?l.len:l.pos+u;for(;l.pos<d;){let m=l.uint32();switch(m>>>3){case 1:{h.type=r.MessageType.codec().decode(l);break}case 2:{h.dial=r.Dial.codec().decode(l,l.uint32(),{limits:f.limits?.dial});break}case 3:{h.dialResponse=r.DialResponse.codec().decode(l,l.uint32(),{limits:f.limits?.dialResponse});break}default:{l.skipType(m&7);break}}}return h})),c),r.encode=l=>ve(l,r.codec()),r.decode=(l,u)=>be(l,r.codec(),u)})(Pt||(Pt={}));var Yj=4,Qj=8,dy=class{components;protocol;timeout;maxInboundStreams;maxOutboundStreams;maxMessageSize;started;log;topologyId;dialResults;findPeers;addressFilter;connectionThreshold;constructor(e,t){this.components=e,this.log=e.logger.forComponent("libp2p:auto-nat"),this.started=!1,this.protocol=`/${t.protocolPrefix??Dk}/${Nk}/${Ok}`,this.timeout=t.timeout??3e4,this.maxInboundStreams=t.maxInboundStreams??2,this.maxOutboundStreams=t.maxOutboundStreams??20,this.connectionThreshold=t.connectionThreshold??80,this.maxMessageSize=t.maxMessageSize??8192,this.dialResults=new Map,this.findPeers=Pk(this.findRandomPeers.bind(this),6e4),this.addressFilter=Tn(1024)}[Symbol.toStringTag]="@libp2p/autonat";[tt]=["@libp2p/autonat"];get[Jn](){return["@libp2p/identify"]}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 - %e",t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}),this.topologyId=await this.components.registrar.register(this.protocol,{onConnect:(e,t)=>{this.verifyExternalAddresses(t).catch(n=>{this.log.error("could not verify addresses - %e",n)})}}),this.findPeers.start(),this.started=!0)}async stop(){await this.components.registrar.unhandle(this.protocol),this.topologyId!=null&&await this.components.registrar.unhandle(this.topologyId),this.dialResults.clear(),this.findPeers.stop(),this.started=!1}allAddressesAreVerified(){return this.components.addressManager.getAddressesWithMetadata().every(e=>e.expires>Date.now()?!0:e.verified)}async findRandomPeers(e){if(this.allAddressesAreVerified())return;let t=Ne([AbortSignal.timeout(1e4),e?.signal]);try{this.log("starting random walk to find peers to run AutoNAT");for await(let n of this.components.randomWalk.walk({signal:t})){if(!await this.components.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable %s",n.id,n.multiaddrs.map(i=>i.toString()).join(", "));continue}try{this.log.trace("dial random peer %p",n.id),await this.components.connectionManager.openConnection(n.multiaddrs,{signal:t})}catch{}if(this.allAddressesAreVerified()){this.log("stopping random walk, all addresses are verified");return}if(!this.hasConnectionCapacity()){this.log("stopping random walk, too close to max connections");return}}}catch{}}async handleIncomingAutonatStream(e){let t=AbortSignal.timeout(this.timeout);let n=ir(e.stream,{maxDataLength:this.maxMessageSize}).pb(Pt);try{let i=await n.read({signal:t}),o=await this.handleAutonatMessage(i,e.connection,{signal:t});await n.write(o,{signal:t}),await n.unwrap().unwrap().close({signal:t})}catch(i){this.log.error("error handling incoming autonat stream - %e",i),e.stream.abort(i)}}async handleAutonatMessage(e,t,n){let i=this.components.addressManager.getAddresses().map(f=>f.toOptions().host),o=e.dial;if(o==null)return this.log.error("dial was missing from message"),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"No Dial message found in message"}};let s,a=o.peer;if(a?.id==null)return this.log.error("PeerId missing from message"),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"missing peer info"}};try{let f=Ue(a.id);s=ur(f)}catch(f){return this.log.error("invalid PeerId - %e",f),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"bad peer id"}}}if(this.log("incoming request from %p",s),!t.remotePeer.equals(s))return this.log("target peer %p did not equal sending peer %p",s,t.remotePeer),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_BAD_REQUEST,statusText:"peer id mismatch"}};let c=a.addrs.map(f=>se(f)).filter(f=>{let h=f.toOptions();return Di(f)?!1:h.host!==t.remoteAddr.toOptions().host?(this.log.trace("not dialing %a - target host did not match remote host %a",f,t.remoteAddr),!1):i.includes(h.host)?!1:this.components.transportManager.dialTransportForMultiaddr(f)==null?(this.log.trace("not dialing %a - transport unsupported",f),!1):!0}).map(f=>(f.getPeerId()==null&&(f=f.encapsulate(`/p2p/${s.toString()}`)),f));if(c.length===0)return this.log("refused to dial all multiaddrs for %p from message",s),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_DIAL_REFUSED,statusText:"no dialable addresses"}};this.log("dial multiaddrs %s for peer %p",c.map(f=>f.toString()).join(", "),s);let l="",u=c[0];for await(let f of c){let h;u=f;try{if(h=await this.components.connectionManager.openConnection(f,n),!h.remoteAddr.equals(f))throw this.log.error("tried to dial %a but dialed %a",f,h.remoteAddr),new Error("Unexpected remote address");return this.log("successfully dialed %p via %a",s,f),{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.OK,addr:h.remoteAddr.decapsulateCode(Ie("p2p").code).bytes}}}catch(d){this.log.error("could not dial %p - %e",s,d),l=d.message}finally{h!=null&&await h.close()}}return{type:Pt.MessageType.DIAL_RESPONSE,dialResponse:{status:Pt.ResponseStatus.E_DIAL_ERROR,statusText:l,addr:u.bytes}}}getFirstUnverifiedMultiaddr(e,t){let n=this.components.addressManager.getAddressesWithMetadata().sort((i,o)=>i.type==="observed"&&o.type!=="observed"?1:o.type==="observed"&&i.type!=="observed"?-1:0).filter(i=>!(!(i.expires<Date.now())||i.multiaddr.toOptions().family===6&&(!t||!ay(i.multiaddr))||Di(i.multiaddr)));for(let i of n){let o=i.multiaddr.toString(),s=this.dialResults.get(o);if(s!=null){if(s.networkSegments.includes(e)){this.log.trace("%a already has a network segment result from %s",s.multiaddr,e);continue}if(s.queue.size>10){this.log.trace("%a already has enough peers queued",s.multiaddr);continue}}if(s==null){let a=i.expires<Date.now();if(a&&this.addressFilter.remove?.(o),this.addressFilter.has(o))continue;this.addressFilter.add(o),this.log.trace("creating dial result %s %s",a?"to revalidate":"for",o),s={multiaddr:i.multiaddr,success:0,failure:0,networkSegments:[],verifyingPeers:r7(),queue:new kr({concurrency:3,maxSize:50}),type:i.type,lastVerified:i.lastVerified},this.dialResults.set(o,s)}return s}}removeOutdatedMultiaddrResults(){let e=new Set(this.components.addressManager.getAddressesWithMetadata().filter(({expires:t})=>t<Date.now()).map(({multiaddr:t})=>t.toString()));for(let t of this.dialResults.keys())e.has(t)||(this.log.trace("remove results for %a",t),this.dialResults.delete(t))}async verifyExternalAddresses(e){if(!this.isStarted())return;this.removeOutdatedMultiaddrResults();let n=(await this.components.peerStore.get(e.remotePeer)).addresses.some(({multiaddr:s})=>s.toOptions().family===6),i=this.getNetworkSegment(e.remoteAddr),o=this.getFirstUnverifiedMultiaddr(i,n);if(o==null){this.log.trace("no unverified public addresses found for peer %p to verify, not requesting verification",e.remotePeer);return}if(!this.hasConnectionCapacity()){o.lastVerified!=null?(this.log("automatically re-verifying %a because we are too close to the connection limit",o.multiaddr),this.confirmAddress(o)):this.log("skipping verifying %a because we are too close to the connection limit",o.multiaddr);return}o.queue.add(async s=>{await this.askPeerToVerify(e,i,s)},{peerId:e.remotePeer,multiaddr:o.multiaddr}).catch(s=>{o?.result==null&&this.log.error("error from %p verifying address %a - %e",e.remotePeer,o?.multiaddr,s)})}async askPeerToVerify(e,t,n){let i=this.dialResults.get(n.multiaddr.toString());if(i==null){this.log("%a was verified while %p was queued",n.multiaddr,e.remotePeer);return}let o=AbortSignal.timeout(this.timeout);this.log.trace("asking %p to verify multiaddr %s",e.remotePeer,n.multiaddr);let s=await e.newStream(this.protocol,{signal:o});try{let a=ir(s).pb(Pt),[,c]=await Promise.all([a.write({type:Pt.MessageType.DIAL,dial:{peer:{id:this.components.peerId.toMultihash().bytes,addrs:[n.multiaddr.bytes]}}},{signal:o}),a.read({signal:o})]);if(c.type!==Pt.MessageType.DIAL_RESPONSE||c.dialResponse==null){this.log("invalid autonat response from %p - %j",e.remotePeer,c);return}let l=c.dialResponse.status;if(this.log.trace("autonat response from %p for %a is %s",e.remotePeer,n.multiaddr,l),l!==Pt.ResponseStatus.OK&&l!==Pt.ResponseStatus.E_DIAL_ERROR)return;if(i=this.dialResults.get(n.multiaddr.toString()),i==null){this.log.trace("peer reported %a as %s but there is no result object",n.multiaddr,c.dialResponse.status);return}if(i.networkSegments.includes(t)){this.log.trace("%a results included network segment %s",n.multiaddr,t);return}if(i.result!=null){this.log.trace("already resolved result for %a, ignoring response from",n.multiaddr,e.remotePeer);return}if(i.verifyingPeers.has(e.remotePeer)){this.log.trace("peer %p has already verified %a, ignoring response",e.remotePeer,n.multiaddr);return}if(i.verifyingPeers.add(e.remotePeer),i.networkSegments.push(t),l===Pt.ResponseStatus.OK){if(i.success++,i.type!=="observed"){this.confirmAddress(i);return}}else l===Pt.ResponseStatus.E_DIAL_ERROR&&i.failure++;this.log("%a success %d failure %d",i.multiaddr,i.success,i.failure),i.success===Yj&&this.confirmAddress(i),i.failure===Qj&&this.unconfirmAddress(i)}finally{try{await s.close({signal:o})}catch(a){s.abort(a)}}}hasConnectionCapacity(){let t=this.components.connectionManager.getConnections().length,n=this.components.connectionManager.getMaxConnections();return t/n*100<this.connectionThreshold}confirmAddress(e){this.log("%s address %a is externally dialable",e.type,e.multiaddr),this.components.addressManager.confirmObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!0,e.queue.abort()}unconfirmAddress(e){this.log("%s address %a is not externally dialable",e.type,e.multiaddr),this.components.addressManager.removeObservedAddr(e.multiaddr),this.dialResults.delete(e.multiaddr.toString()),e.result=!1,e.queue.abort()}getNetworkSegment(e){let t=e.toOptions();return t.family===4?t.host.split(".")[0].padStart(3,"0"):t.host.split(":")[0].padStart(4,"0")}};function Lk(r={}){return e=>new dy(e,r)}var Zj=ce("dns4"),Jj=ce("dns6"),eW=ce("dnsaddr"),El=or(ce("dns"),eW,Zj,Jj),my=or(ce("ip4"),ce("ip6")),qf=or(Ce(my,ce("tcp")),Ce(El,ce("tcp"))),gy=Ce(my,ce("udp")),tW=Ce(gy,ce("utp")),rW=Ce(gy,ce("quic")),nW=Ce(gy,ce("quic-v1")),p9=or(Ce(qf,ce("ws")),Ce(El,ce("ws"))),hy=or(Ce(p9,ce("p2p")),p9),m9=or(Ce(qf,ce("wss")),Ce(El,ce("wss")),Ce(qf,ce("tls"),ce("ws")),Ce(El,ce("tls"),ce("ws"))),py=or(Ce(m9,ce("p2p")),m9),g9=or(Ce(qf,ce("http")),Ce(my,ce("http")),Ce(El,ce("http"))),y9=or(Ce(qf,ce("https")),Ce(my,ce("https")),Ce(El,ce("https"))),Bk=Ce(gy,ce("webrtc-direct"),ce("certhash")),Fk=or(Ce(Bk,ce("p2p")),Bk),Mk=Ce(nW,ce("webtransport"),ce("certhash"),ce("certhash")),$k=or(Ce(Mk,ce("p2p")),Mk),Hk=or(Ce(hy,ce("p2p-webrtc-star"),ce("p2p")),Ce(py,ce("p2p-webrtc-star"),ce("p2p")),Ce(hy,ce("p2p-webrtc-star")),Ce(py,ce("p2p-webrtc-star"))),d5e=or(Ce(hy,ce("p2p-websocket-star"),ce("p2p")),Ce(py,ce("p2p-websocket-star"),ce("p2p")),Ce(hy,ce("p2p-websocket-star")),Ce(py,ce("p2p-websocket-star"))),Vk=or(Ce(g9,ce("p2p-webrtc-direct"),ce("p2p")),Ce(y9,ce("p2p-webrtc-direct"),ce("p2p")),Ce(g9,ce("p2p-webrtc-direct")),Ce(y9,ce("p2p-webrtc-direct"))),Sl=or(p9,m9,g9,y9,Hk,Vk,qf,tW,rW,El,Fk,$k),h5e=or(Ce(Sl,ce("p2p-stardust"),ce("p2p")),Ce(Sl,ce("p2p-stardust"))),Ba=or(Ce(Sl,ce("p2p")),Hk,Vk,Fk,$k,ce("p2p")),Uk=or(Ce(Ba,ce("p2p-circuit"),Ba),Ce(Ba,ce("p2p-circuit")),Ce(ce("p2p-circuit"),Ba),Ce(Sl,ce("p2p-circuit")),Ce(ce("p2p-circuit"),Sl),ce("p2p-circuit")),zk=()=>or(Ce(Uk,zk),Uk),vl=zk(),Kk=or(Ce(vl,Ba,vl),Ce(Ba,vl),Ce(vl,Ba),vl,Ba);var p5e=or(Ce(vl,ce("webrtc"),ce("p2p")),Ce(vl,ce("webrtc")),Ce(Sl,ce("webrtc"),ce("p2p")),Ce(Sl,ce("webrtc")),ce("webrtc"));function qk(r){function e(t){let n;try{n=se(t)}catch{return!1}let i=r(n.protoNames());return i===null?!1:i===!0||i===!1?i:i.length===0}return e}function Ce(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(i=>(n=typeof i=="function"?i().partialMatch(t):i.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:qk(e),partialMatch:e}}function or(...r){function e(n){let i=null;return r.some(o=>{let s=typeof o=="function"?o().partialMatch(n):o.partialMatch(n);return s!=null?(i=s,!0):!1}),i}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:qk(e),partialMatch:e}}function ce(r){let e=r;function t(i){let o;try{o=se(i)}catch{return!1}let s=o.protoNames();return s.length===1&&s[0]===e}function n(i){return i.length===0?null:i[0]===e?i.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var iW="bootstrap",oW=50,sW=1e3,w9=class extends Me{static tag="bootstrap";log;timer;list;timeout;components;_init;constructor(e,t={list:[]}){if(t.list==null||t.list.length===0)throw new Error("Bootstrap requires a list of peer addresses");super(),this.components=e,this.log=e.logger.forComponent("libp2p:bootstrap"),this.timeout=t.timeout??sW,this.list=[];for(let n of t.list){if(!Kk.matches(n)){this.log.error("Invalid multiaddr");continue}let i=se(n),o=i.getPeerId();if(o==null){this.log.error("Invalid bootstrap multiaddr without peer id");continue}let s={id:at(o),multiaddrs:[i]};this.list.push(s)}this._init=t}[_c]=this;[Symbol.toStringTag]="@libp2p/bootstrap";[tt]=["@libp2p/peer-discovery"];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??iW]:{value:this._init.tagValue??oW,ttl:this._init.tagTTL}},multiaddrs:e.multiaddrs}),this.timer==null)return;this.safeDispatchEvent("peer",{detail:e}),this.components.connectionManager.openConnection(e.id).catch(t=>{this.log.error("could not dial bootstrap peer %p",e.id,t)})}}stop(){this.timer!=null&&clearTimeout(this.timer),this.timer=void 0}};function jk(r){return e=>new w9(e,r)}var Mp;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={publicKey:Pe(0),payloadType:Pe(0),payload:Pe(0),signature:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Mp||(Mp={}));var yy=class extends Error{constructor(e="Invalid signature"){super(e),this.name="InvalidSignatureError"}};var ai=class r{static createFromProtobuf=async e=>{let t=Mp.decode(e),n=tr(t.publicKey);return new r({publicKey:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t==null)throw new Error("Missing private key");let n=e.domain,i=e.codec,o=e.marshal(),s=Wk(n,i,o),a=await t.sign(s.subarray());return new r({publicKey:t.publicKey,payloadType:i,payload:o,signature:a})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new yy("Envelope signature is not valid for the given domain");return n};publicKey;payloadType;payload;signature;marshaled;constructor(e){let{publicKey:t,payloadType:n,payload:i,signature:o}=e;this.publicKey=t,this.payloadType=n,this.payload=i,this.signature=o}marshal(){return this.marshaled==null&&(this.marshaled=Mp.encode({publicKey:lr(this.publicKey),payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return pe(this.marshal(),e.marshal())}async validate(e){let t=Wk(e,this.payloadType,this.payload);return this.publicKey.verify(t.subarray(),this.signature)}},Wk=(r,e,t)=>{let n=O(r),i=ht(n.byteLength),o=ht(e.length),s=ht(t.length);return new oe(i,n,o,e,s,t)};function Gk(r,e){let t=(n,i)=>n.toString().localeCompare(i.toString());return r.length!==e.length?!1:(e.sort(t),r.sort(t).every((n,i)=>e[i].equals(n)))}var Xk="libp2p-peer-record",Yk=Uint8Array.from([3,1]);var Up;(function(r){let e;(function(n){let i;n.codec=()=>(i==null&&(i=Ee((o,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),o.multiaddr!=null&&o.multiaddr.byteLength>0&&(s.uint32(10),s.bytes(o.multiaddr)),a.lengthDelimited!==!1&&s.ldelim()},(o,s,a={})=>{let c={multiaddr:Pe(0)},l=s==null?o.len:o.pos+s;for(;o.pos<l;){let u=o.uint32();switch(u>>>3){case 1:{c.multiaddr=o.bytes();break}default:{o.skipType(u&7);break}}}return c})),i),n.encode=o=>ve(o,n.codec()),n.decode=(o,s)=>be(o,n.codec(),s)})(e=r.AddressInfo||(r.AddressInfo={}));let t;r.codec=()=>(t==null&&(t=Ee((n,i,o={})=>{if(o.lengthDelimited!==!1&&i.fork(),n.peerId!=null&&n.peerId.byteLength>0&&(i.uint32(10),i.bytes(n.peerId)),n.seq!=null&&n.seq!==0n&&(i.uint32(16),i.uint64(n.seq)),n.addresses!=null)for(let s of n.addresses)i.uint32(26),r.AddressInfo.codec().encode(s,i);o.lengthDelimited!==!1&&i.ldelim()},(n,i,o={})=>{let s={peerId:Pe(0),seq:0n,addresses:[]},a=i==null?n.len:n.pos+i;for(;n.pos<a;){let c=n.uint32();switch(c>>>3){case 1:{s.peerId=n.bytes();break}case 2:{s.seq=n.uint64();break}case 3:{if(o.limits?.addresses!=null&&s.addresses.length===o.limits.addresses)throw new wt('Decode error - map field "addresses" had too many elements');s.addresses.push(r.AddressInfo.codec().decode(n,n.uint32(),{limits:o.limits?.addresses$}));break}default:{n.skipType(c&7);break}}}return s})),t),r.encode=n=>ve(n,r.codec()),r.decode=(n,i)=>be(n,r.codec(),i)})(Up||(Up={}));var vn=class r{static createFromProtobuf=e=>{let t=Up.decode(e),n=ur(Ue(t.peerId)),i=(t.addresses??[]).map(s=>se(s.multiaddr)),o=t.seq;return new r({peerId:n,multiaddrs:i,seqNumber:o})};static DOMAIN=Xk;static CODEC=Yk;peerId;multiaddrs;seqNumber;domain=r.DOMAIN;codec=r.CODEC;marshaled;constructor(e){let{peerId:t,multiaddrs:n,seqNumber:i}=e;this.peerId=t,this.multiaddrs=n??[],this.seqNumber=i??BigInt(Date.now())}marshal(){return this.marshaled==null&&(this.marshaled=Up.encode({peerId:this.peerId.toMultihash().bytes,seq:BigInt(this.seqNumber),addresses:this.multiaddrs.map(e=>({multiaddr:e.bytes}))})),this.marshaled}equals(e){return!(!(e instanceof r)||!this.peerId.equals(e.peerId)||this.seqNumber!==e.seqNumber||!Gk(this.multiaddrs,e.multiaddrs))}};var x9=1e3,Qk=60*x9,Zk=290;var W5e=2*60*Qk,Jk=1,wy=2e3,eP=100;var Fp=`${ia}-circuit-relay`,G5e=`${ia}-circuit-relay-source`,X5e=2*Qk,Y5e=BigInt(1<<17),Al="/libp2p/circuit/relay/0.2.0/hop",b9="/libp2p/circuit/relay/0.2.0/stop",Q5e=30*x9,Z5e=30*x9,v9=300,tP=4096,rP=.001;var Ma;(function(r){let e;(function(i){i.RESERVE="RESERVE",i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.RESERVE=0]="RESERVE",i[i.CONNECT=1]="CONNECT",i[i.STATUS=2]="STATUS"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.peer!=null&&(o.uint32(18),jf.codec().encode(i.peer,o)),i.reservation!=null&&(o.uint32(26),xy.codec().encode(i.reservation,o)),i.limit!=null&&(o.uint32(34),Wf.codec().encode(i.limit,o)),i.status!=null&&(o.uint32(40),Br.codec().encode(i.status,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{a.peer=jf.codec().decode(i,i.uint32(),{limits:s.limits?.peer});break}case 3:{a.reservation=xy.codec().decode(i,i.uint32(),{limits:s.limits?.reservation});break}case 4:{a.limit=Wf.codec().decode(i,i.uint32(),{limits:s.limits?.limit});break}case 5:{a.status=Br.codec().decode(i);break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(Ma||(Ma={}));var jo;(function(r){let e;(function(i){i.CONNECT="CONNECT",i.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.CONNECT=0]="CONNECT",i[i.STATUS=1]="STATUS"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.peer!=null&&(o.uint32(18),jf.codec().encode(i.peer,o)),i.limit!=null&&(o.uint32(26),Wf.codec().encode(i.limit,o)),i.status!=null&&(o.uint32(32),Br.codec().encode(i.status,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{a.peer=jf.codec().decode(i,i.uint32(),{limits:s.limits?.peer});break}case 3:{a.limit=Wf.codec().decode(i,i.uint32(),{limits:s.limits?.limit});break}case 4:{a.status=Br.codec().decode(i);break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(jo||(jo={}));var jf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let o of t.addrs)n.uint32(18),n.bytes(o);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={id:Pe(0),addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.id=t.bytes();break}case 2:{if(i.limits?.addrs!=null&&o.addrs.length===i.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');o.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(jf||(jf={}));var xy;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let o of t.addrs)n.uint32(18),n.bytes(o);t.voucher!=null&&(n.uint32(26),vy.codec().encode(t.voucher,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={expire:0n,addrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.expire=t.uint64();break}case 2:{if(i.limits?.addrs!=null&&o.addrs.length===i.limits.addrs)throw new wt('Decode error - map field "addrs" had too many elements');o.addrs.push(t.bytes());break}case 3:{o.voucher=vy.codec().decode(t,t.uint32(),{limits:i.limits?.voucher});break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(xy||(xy={}));var Wf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.duration=t.uint32();break}case 2:{o.data=t.uint64();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Wf||(Wf={}));var Br;(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"})(Br||(Br={}));var E9;(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"})(E9||(E9={}));(function(r){r.codec=()=>St(E9)})(Br||(Br={}));var by;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={relay:Pe(0),peer:Pe(0),expiration:0n},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(by||(by={}));var vy;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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&&(n.uint32(26),by.codec().encode(t.payload,n)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={publicKey:Pe(0),payloadType:Pe(0),signature:Pe(0)},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.publicKey=t.bytes();break}case 2:{o.payloadType=t.bytes();break}case 3:{o.payload=by.codec().decode(t,t.uint32(),{limits:i.limits?.payload});break}case 5:{o.signature=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(vy||(vy={}));var $p=class extends Error{static name="HadEnoughRelaysError";name="HadEnoughRelaysError"},Ey=class extends Error{static name="DoubleRelayError";name="DoubleRelayError"},Sy=class extends Error{static name="RelayQueueFullError";name="RelayQueueFullError"};function S9(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}var Hp=class{expires;bytes;constructor(e){e?.duration!=null&&e?.duration!==0&&(this.expires=Date.now()+e.duration*1e3),this.bytes=e?.data,this.bytes===0n&&(this.bytes=void 0),this.onData=this.onData.bind(this)}onData(e){this.bytes!=null&&(this.bytes-=BigInt(e.byteLength),this.bytes<0n&&(this.bytes=0n))}getLimits(){if(this.expires==null&&this.bytes==null)return;let e={};if(this.bytes!=null){let t=this;Object.defineProperty(e,"bytes",{get(){return t.bytes}})}if(this.expires!=null){let t=this;Object.defineProperty(e,"seconds",{get(){return Math.round(((t.expires??0)-Date.now())/1e3)}})}return e}},Ay=gt(Ge(Zg.matchers[0],$e("p2p-circuit"))),_y=gt($e("p2p-circuit"));function A9(r){let{stream:e,remoteAddr:t,logger:n,onDataRead:i,onDataWrite:o}=r,s=n.forComponent("libp2p:stream:converter"),a=!1,c=!1,l=e.close.bind(e);e.close=async m=>{await l(m),d(!0)};let u=e.abort.bind(e);e.abort=m=>{u(m),d(!0)};let f=e.sink.bind(e);e.sink=async m=>{try{await f(ot(m,g=>ll(g,w=>o?.(w))))}catch(g){g.type!=="aborted"&&s.error("%s error in sink",t,g)}finally{c=!0,d()}};let h={log:s,sink:e.sink,source:async function*(){try{for await(let m of e.source)i?.(m),yield m}finally{a=!0,d()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function d(m){m===!0&&(a=!0,c=!0),a&&c&&h.timeline.close==null&&(h.timeline.close=Date.now())}return h}var Iy=class extends Me{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;queue;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,this.discoveryController.signal}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Al,{filter:this.filter,onConnect:e=>{this.log.trace("discovered relay %p queue (length: %d, active %d)",e,this.queue?.size,this.queue?.running),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,this.discoveryController.signal,Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(Al)],orders:[()=>Math.random()<.5?1:-1,(n,i)=>{let o=nP(n),s=nP(i);return o>s?-1:s>o?1:0}]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=this.queue=new kr({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(i=>i.toString()));continue}t.queued>10&&(this.log.trace("wait for space in queue for %p",n.id),await t.onSizeLessThan(10,{signal:this.discoveryController.signal})),this.log("adding random peer %p to dial queue (length: %d, active %d)",n.id,t.size,t.running),t.add(async()=>{let i=Ne([this.discoveryController.signal,AbortSignal.timeout(5e3)]);try{await this.connectionManager.openConnection(n.id,{signal:i})}finally{i.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(i=>{this.log.error("error opening connection to random peer %p",n.id,i)})}this.log("stop random walk"),await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};function nP(r){let e=r.metadata.get("last-dial-success");return e==null?0:new Date(H(e)).getTime()}var _9=class extends Me{connectionManager;addressManager;reservationStore;listeningAddrs;log;listenTimeout;reservationId;relay;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.addressManager=e.addressManager,this.reservationStore=e.reservationStore,this.listeningAddrs=[],this.listenTimeout=t.listenTimeout??wy,this.reservationStore.addEventListener("relay:removed",this._onRemoveRelayPeer),this.reservationStore.addEventListener("relay:created-reservation",this._onAddRelayPeer)}_onRemoveRelayPeer=e=>{this.log("relay removed %p our relay %p",e.detail.relay,this.relay,this.relay?.equals(e.detail.relay)),this.relay?.equals(e.detail.relay)===!0&&(this.log("relay peer removed %p",e.detail.relay),this.listeningAddrs.forEach(t=>{this.addressManager.removeObservedAddr(t)}),this.listeningAddrs=[],this.safeDispatchEvent("listening"))};_onAddRelayPeer=e=>{let{details:t}=e.detail;t.type!=="configured"&&t.id===this.reservationId&&this.addedRelay(e.detail)};async listen(e){if(_y.exactMatch(e))this.log("searching for circuit relay servers"),this.reservationId=this.reservationStore.reserveRelay();else if(Ay.exactMatch(e)){this.log("listen on specific relay server %a",e);let t=AbortSignal.timeout(this.listenTimeout);let n=e.decapsulate("/p2p-circuit"),i=await this.connectionManager.openConnection(n,{signal:t});if(!this.reservationStore.hasReservation(i.remotePeer)){this.log("making reservation on peer %p",i.remotePeer);let o=await this.reservationStore.addRelay(i.remotePeer,"configured");this.addedRelay(o)}}else throw new Cc(`Could not listen on p2p-circuit address "${e}"`)}getAddrs(){return[...this.listeningAddrs.values()].flat()}updateAnnounceAddrs(){}async close(){this.reservationStore.cancelReservations(),this.listeningAddrs=[],this.reservationStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),queueMicrotask(()=>{this.safeDispatchEvent("close")})}addedRelay(e){this.log("relay peer added %p",e.relay),this.relay=e.relay,this.listeningAddrs=e.details.reservation.addrs.map(t=>se(t).encapsulate("/p2p-circuit")),this.listeningAddrs.forEach(t=>{this.addressManager.confirmObservedAddr(t,{type:"transport"})}),queueMicrotask(()=>{this.safeDispatchEvent("listening")})}};function iP(r){return new _9(r)}var oP="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var sP=(r=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(r|=0));for(;r--;)e+=oP[t[r]&63];return e};var aW=60*1e3*10,cW=60*1e3*5,lW=30*1e3,Ty=class extends Me{peerId;connectionManager;peerStore;events;reserveQueue;reservations;pendingReservations;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new _r,this.pendingReservations=[],this.maxReservationQueueLength=t?.maxReservationQueueLength??eP,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??wy,this.started=!1,this.relayFilter=Tn(100),this.reserveQueue=new kr({concurrency:t?.reservationConcurrency??Jk,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("connection:close",n=>{[...this.reservations.values()].find(o=>o.connection===n.detail.id)!=null&&this.#r(n.detail.remotePeer).catch(o=>{this.log("could not remove relay %p - %e",n.detail,o)})})}isStarted(){return this.started}start(){this.started=!0}afterStart(){Promise.resolve().then(async()=>{let e=await this.peerStore.all({filters:[t=>t.tags.has(Fp)]});this.log("removing tag from %d old relays",e.length),await Promise.all(e.map(async t=>{await this.peerStore.merge(t.id,{tags:{[Fp]:void 0}})})),this.log("redialing %d old relays",e.length),await Promise.all(e.map(async t=>this.addRelay(t.id,"discovered"))),this.#n()}).catch(e=>{this.log.error(e)})}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}reserveRelay(){let e=sP();return this.pendingReservations.push(e),this.#n(),e}async addRelay(e,t){if(this.peerId.equals(e))throw this.log.trace("not trying to use self as relay"),new Cc("Cannot use self as relay");if(this.reserveQueue.size>this.maxReservationQueueLength)throw new Sy("The reservation queue is full");let n=this.reserveQueue.find(e);if(n!=null)return this.log.trace("potential relay peer %p is already in the reservation queue",e),n.join();if(this.relayFilter.has(e.toMultihash().bytes))throw new Cc("The relay was previously invalid");return this.log.trace("try to reserve relay slot with %p",e),this.reserveQueue.add(async()=>{let i=Date.now();try{let o=this.reservations.get(e);if(o!=null){let m=this.connectionManager.getConnections(e),g=!1;if(m.length===0&&this.log("already have relay reservation with %p but we are no longer connected",e),m.map(w=>w.id).includes(o.connection)&&(this.log("already have relay reservation with %p and the original connection is still open",e),g=!0),g&&S9(o.reservation.expire)>aW)return this.log("already have relay reservation with %p but we are still connected and it does not expire soon",e),{relay:e,details:o};await this.#r(e)}if(t==="discovered"&&this.pendingReservations.length===0)throw new $p("Not making reservation on discovered relay because we do not need any more relays");let s=AbortSignal.timeout(this.reservationCompletionTimeout);let a=await this.connectionManager.openConnection(e,{signal:s});if(Rn.matches(a.remoteAddr))throw new Ey("not creating reservation over relayed connection");let c=await this.#e(a,{signal:s}),l=S9(c.expire);this.log("created reservation on relay peer %p, expiry date is %s",e,new Date(Date.now()+l).toString());let u=Math.min(Math.max(l-cW,lW),Math.pow(2,31)-1),f=setTimeout(()=>{this.log("refresh reservation to relay %p",e),this.addRelay(e,t).catch(async m=>{this.log.error("could not refresh reservation to relay %p - %e",e,m),await this.#r(e)}).catch(m=>{this.log.error("could not remove expired reservation to relay %p - %e",e,m)})},u),h;if(t==="discovered"){let m=this.pendingReservations.pop();if(m==null)throw new $p("Made reservation on relay but did not need any more discovered relays");h={timeout:f,reservation:c,type:t,connection:a.id,id:m}}else h={timeout:f,reservation:c,type:t,connection:a.id};this.reservations.set(e,h),await this.peerStore.merge(e,{tags:{[Fp]:{value:1,ttl:l}}}),this.#n();let d={relay:e,details:h};return this.safeDispatchEvent("relay:created-reservation",{detail:d}),d}catch(o){throw t==="discovered"&&o.name==="HadEnoughRelaysError"||this.log.error("could not reserve slot on %p after %dms - %e",e,Date.now()-i,o),(o.name==="DialError"||o.name==="UnsupportedProtocolError")&&this.relayFilter.add(e.toMultihash().bytes),this.#r(e).catch(s=>{this.log.error("could not remove reservation on %p after reserving slot failed - %e",e,s)}),o}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(e){return e==null?this.reservations.size:[...this.reservations.values()].reduce((t,n)=>(n.type===e&&t++,t),0)}cancelReservations(){[...this.reservations.values()].forEach(e=>{clearTimeout(e.timeout)}),this.reservations.clear()}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Al,t),o=ir(n).pb(Ma);this.log.trace("send RESERVE to %p",e.remotePeer),await o.write({type:Ma.Type.RESERVE},t);let s;try{this.log.trace("reading response from %p",e.remotePeer),s=await o.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(this.log.trace("read response %o",s),s.status===Br.OK&&s.reservation!=null){let c=new Set;c.add(e.remoteAddr.toString());for(let l of s.reservation.addrs){let u=se(l);u.getPeerId()==null&&(u=u.encapsulate(`/p2p/${e.remotePeer}`)),u=se(u.toString().replace(`/p2p/${e.remotePeer}/p2p/${e.remotePeer}`,`/p2p/${e.remotePeer}`)),c.add(u.toString())}return s.reservation.addrs=[...c].map(l=>se(l).bytes),s.reservation}let a=`reservation failed with status ${s.status??"undefined"}`;throw this.log.error(a),new Error(a)}async#r(e){let t=this.reservations.get(e);t!=null&&(this.log("removing relay reservation with %p from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),t.type==="discovered"&&this.pendingReservations.push(t.id),await this.peerStore.merge(e,{tags:{[Fp]:void 0}}),this.safeDispatchEvent("relay:removed",{detail:{relay:e,details:t}}),this.#n())}#n(){if(this.pendingReservations.length===0){this.log.trace("have discovered enough relays"),this.reserveQueue.clear(),this.safeDispatchEvent("relay:found-enough-relays");return}this.relayFilter=Tn(100),this.log("not discovered enough relays %d/%d",this.reservations.size,this.pendingReservations.length),this.safeDispatchEvent("relay:not-enough-relays")}};var uW=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(se)}catch{return!1}return!0},aP={maxInboundStopStreams:v9,maxOutboundStopStreams:v9,stopTimeout:3e4},Cy=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;started;log;shutdownController;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??aP.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??aP.maxOutboundStopStreams,this.shutdownController=new AbortController,this.discovery=new Iy(e,{filter:t.discoveryFilter??s7(tP,rP)}),this.discovery.addEventListener("relay:discover",n=>{this.reservationStore.addRelay(n.detail,"discovered").catch(i=>{i.name!=="HadEnoughRelaysError"&&i.name!=="RelayQueueFullError"&&this.log.error("could not add discovered relay %p",n.detail,i)})}),this.reservationStore=new Ty(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:found-enough-relays",()=>{this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[tt]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Jn](){return this.discovery!=null?["@libp2p/identify"]:[]}[oa]=!0;isStarted(){return this.started}async start(){this.shutdownController=new AbortController,await this.registrar.handle(b9,e=>{let t=this.upgrader.createInboundAbortSignal(this.shutdownController.signal);this.onStop(e,t).catch(n=>{this.log.error("error while handling STOP protocol",n),e.stream.abort(n)}).finally(()=>{t.clear()})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnLimitedConnection:!0}),await Cr(this.discovery,this.reservationStore),this.started=!0}async stop(){this.shutdownController.abort(),await Gr(this.discovery,this.reservationStore),await this.registrar.unhandle(b9),this.started=!1}async dial(e,t){if(e.protoCodes().filter(d=>d===Zk).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,e),new ms(d)}let n=e.toString().split("/p2p-circuit"),i=se(n[0]),o=se(n[n.length-1]),s=i.getPeerId(),a=o.getPeerId();if(s==null||a==null){let d=`ircuit relay dial to ${e.toString()} failed as address did not have both relay and destination PeerIDs`;throw this.log.error(`c${d}`),new ms(`C${d}`)}let c=at(s),l=at(a),f=this.connectionManager.getConnections(c)[0];f==null?(await this.peerStore.merge(c,{multiaddrs:[i]}),t.onProgress?.(new G("circuit-relay:open-connection")),f=await this.connectionManager.openConnection(c,t)):t.onProgress?.(new G("circuit-relay:reuse-connection"));let h;try{t.onProgress?.(new G("circuit-relay:open-hop-stream")),h=await f.newStream(Al,t);let d=ir(h),m=d.pb(Ma);t.onProgress?.(new G("circuit-relay:write-connect-message")),await m.write({type:Ma.Type.CONNECT,peer:{id:l.toMultihash().bytes,addrs:[se(o).bytes]}},t),t.onProgress?.(new G("circuit-relay:read-connect-response"));let g=await m.read(t);if(g.status!==Br.OK)throw new Be(`failed to connect via relay with status ${g?.status?.toString()??"undefined"}`);let w=new Hp(g.limit),x=A9({stream:d.unwrap(),remoteAddr:e,localAddr:i.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger,onDataRead:w.onData,onDataWrite:w.onData});return this.log("new outbound relayed connection %a",x.remoteAddr),await this.upgrader.upgradeOutbound(x,{...t,limits:w.getLimits()})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",l,c,d),h?.abort(d),d}}createListener(e){return iP({peerId:this.peerId,connectionManager:this.connectionManager,addressManager:this.addressManager,reservationStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Ay.exactMatch(t)||_y.exactMatch(t))}dialFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Rn.exactMatch(t))}async onStop({connection:e,stream:t},n){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(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let i=ir(t).pb(jo),o=await i.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,o.type),o?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(o.type!==jo.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!uW(o)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.MALFORMED_MESSAGE},{signal:n}),await t.close({signal:n});return}let s=ur(Ue(o.peer.id));if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,s)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.PERMISSION_DENIED},{signal:n}),await t.close({signal:n});return}this.log.trace("sending success response to %p",e.remotePeer),await i.write({type:jo.Type.STATUS,status:Br.OK},{signal:n});let a=new Hp(o.limit),c=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${s.toString()}`),l=this.addressManager.getAddresses()[0],u=A9({stream:i.unwrap().unwrap(),remoteAddr:c,localAddr:l,logger:this.logger,onDataRead:a.onData,onDataWrite:a.onData});this.log("new inbound relayed connection %a",u.remoteAddr),await this.upgrader.upgradeInbound(u,{limits:a.getLimits(),signal:n}),this.log("%s connection %a upgraded","inbound",u.remoteAddr)}};function I9(r={}){return e=>new Cy(e,r)}var cP=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},fW=new WeakMap;function dW({clearTimeout:r,setTimeout:e}={}){return(t,{value:n,signal:i}={})=>{if(i?.aborted)return Promise.reject(cP());let o,s,a,c=r??clearTimeout,l=()=>{c(o),a(cP())},u=()=>{i&&i.removeEventListener("abort",l)},f=new Promise((h,d)=>{s=()=>{u(),h(n)},a=d,o=(e??setTimeout)(s,t)});return i&&i.addEventListener("abort",l,{once:!0}),fW.set(f,()=>{c(o),o=null,s()}),f}}var hW=dW(),ky=hW;var wo;(function(r){let e;(function(i){i.UNUSED="UNUSED",i.CONNECT="CONNECT",i.SYNC="SYNC"})(e=r.Type||(r.Type={}));let t;(function(i){i[i.UNUSED=0]="UNUSED",i[i.CONNECT=100]="CONNECT",i[i.SYNC=300]="SYNC"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),i.type!=null&&(o.uint32(8),r.Type.codec().encode(i.type,o)),i.observedAddresses!=null)for(let a of i.observedAddresses)o.uint32(18),o.bytes(a);s.lengthDelimited!==!1&&o.ldelim()},(i,o,s={})=>{let a={observedAddresses:[]},c=o==null?i.len:i.pos+o;for(;i.pos<c;){let l=i.uint32();switch(l>>>3){case 1:{a.type=r.Type.codec().decode(i);break}case 2:{if(s.limits?.observedAddresses!=null&&a.observedAddresses.length===s.limits.observedAddresses)throw new wt('Decode error - map field "observedAddresses" had too many elements');a.observedAddresses.push(i.bytes());break}default:{i.skipType(l&7);break}}}return a})),n),r.encode=i=>ve(i,r.codec()),r.decode=(i,o)=>be(i,r.codec(),o)})(wo||(wo={}));function T9(r,e){return Rn.matches(r)||e.dialTransportForMultiaddr(r)==null?!1:wp.matches(r)?!0:OT.matches(r)?bn(r.toOptions().host)===!1:!1}var lP=1024*4,uP=100,Py={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},Ry=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??Py.timeout,this.retries=t.retries??Py.retries,this.maxInboundStreams=t.maxInboundStreams??Py.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??Py.maxOutboundStreams}[Symbol.toStringTag]="@libp2p/dcutr";[Jn]=["@libp2p/identify"];isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(Vp,{notifyOnLimitedConnection:!0,onConnect:(e,t)=>{Rn.exactMatch(t.remoteAddr)&&t.direction==="inbound"&&this.upgradeInbound(t).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(Vp,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,runOnLimitedConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(Vp),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 i={signal:AbortSignal.timeout(this.timeout)};try{t=await e.newStream([Vp],{signal:i.signal,runOnLimitedConnection:!0});let o=ir(t,{maxDataLength:lP}).pb(wo);this.log("B sending connect to %p",e.remotePeer);let s=Date.now();await o.write({type:wo.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(f=>f.bytes)},i),this.log("B receiving connect from %p",e.remotePeer);let a=await o.read(i);if(a.type!==wo.Type.CONNECT)throw this.log("A sent wrong message type"),new Be("DCUtR message type was incorrect");let c=this.getDialableMultiaddrs(a.observedAddresses);if(c.length===0)throw this.log("A did not have any dialable multiaddrs"),new Be("DCUtR connect message had no multiaddrs");let l=Date.now()-s;this.log("A sending sync, rtt %dms",l),await o.write({type:wo.Type.SYNC,observedAddresses:[]},i),this.log("A waiting for half RTT"),await ky(l/2),this.log("B dialing",c);let u=await this.connectionManager.openConnection(c,{signal:i.signal,priority:uP,force:!0,initiator:!1});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",e.remotePeer,u.remoteAddr),await e.close(i);break}catch(o){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,o),t?.abort(o),n===this.retries)throw o}finally{t!=null&&await t.close(i)}}}async attemptUnilateralConnectionUpgrade(e){let n=(await this.peerStore.get(e.remotePeer)).addresses.map(i=>{let o=i.multiaddr;return o.getPeerId()==null?o.encapsulate(`/p2p/${e.remotePeer}`):o}).filter(i=>T9(i,this.transportManager));if(n.length>0){let i=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let o=await this.connectionManager.openConnection(n,{signal:i,force:!0});if(Rn.exactMatch(o.remoteAddr))throw new Error("Could not open a new, non-limited, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",e.remotePeer,o.remoteAddr),await e.close({signal:i}),!0}catch(o){this.log.error("unilateral connection upgrade to %p on addresses %a failed",e.remotePeer,n,o)}}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 i=ir(e,{maxDataLength:lP}).pb(wo);this.log("A receiving connect");let o=await i.read(n);if(o.type!==wo.Type.CONNECT)throw this.log("B sent wrong message type"),new Be("DCUtR message type was incorrect");if(o.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new Be("DCUtR connect message had no multiaddrs");let s=this.getDialableMultiaddrs(o.observedAddresses);if(s.length===0)throw this.log("B had no dialable multiaddrs"),new Be("DCUtR connect message had no dialable multiaddrs");if(this.log("A sending connect"),await i.write({type:wo.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await i.read(n)).type!==wo.Type.SYNC)throw new Be("DCUtR message type was incorrect");this.log("A dialing",s);let c=await this.connectionManager.openConnection(s,{signal:n.signal,priority:uP,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",t.remotePeer,c.remoteAddr),await t.close(n)}catch(i){this.log.error("incoming DCUtR from %p failed",t.remotePeer,i),e.abort(i)}finally{await e.close(n)}}getDialableMultiaddrs(e){let t=[];for(let n of e)if(!(n==null||n.length===0))try{let i=se(n);if(!T9(i,this.transportManager))continue;t.push(i)}catch{}return t}};var Vp="/libp2p/dcutr";function fP(r={}){return e=>new Ry(e,r)}var dP="0.1.0",hP="id",pP="id/push",mP="1.0.0",gP="1.0.0";var Ua;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.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 o of t.listenAddrs)n.uint32(18),n.bytes(o);if(t.observedAddr!=null&&(n.uint32(34),n.bytes(t.observedAddr)),t.protocols!=null)for(let o of t.protocols)n.uint32(26),n.string(o);t.signedPeerRecord!=null&&(n.uint32(66),n.bytes(t.signedPeerRecord)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={listenAddrs:[],protocols:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 5:{o.protocolVersion=t.string();break}case 6:{o.agentVersion=t.string();break}case 1:{o.publicKey=t.bytes();break}case 2:{if(i.limits?.listenAddrs!=null&&o.listenAddrs.length===i.limits.listenAddrs)throw new wt('Decode error - map field "listenAddrs" had too many elements');o.listenAddrs.push(t.bytes());break}case 4:{o.observedAddr=t.bytes();break}case 3:{if(i.limits?.protocols!=null&&o.protocols.length===i.limits.protocols)throw new wt('Decode error - map field "protocols" had too many elements');o.protocols.push(t.string());break}case 8:{o.signedPeerRecord=t.bytes();break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ua||(Ua={}));var On={protocolPrefix:"ipfs",timeout:5e3,maxInboundStreams:1,maxOutboundStreams:1,maxObservedAddresses:10,maxMessageSize:8192,runOnConnectionOpen:!0,runOnSelfUpdate:!0,runOnLimitedConnection:!0,concurrency:32};function yP(r){if(r!=null&&r.length>0)try{return se(r)}catch{}}function gW(r,e){return e??r.userAgent}async function Dy(r,e,t,n,i){if(t("received identify from %p",n.remotePeer),i==null)throw new Be("message was null or undefined");let o={};if(i.listenAddrs.length>0&&(o.addresses=i.listenAddrs.map(c=>({isCertified:!1,multiaddr:se(c)}))),i.protocols.length>0&&(o.protocols=i.protocols),i.publicKey!=null){let c=tr(i.publicKey);if(!Ko(c).equals(n.remotePeer))throw new Be("public key did not match remote PeerId");o.publicKey=c}let s;if(i.signedPeerRecord!=null){t.trace("received signedPeerRecord from %p",n.remotePeer);let c=i.signedPeerRecord,l=await ai.openAndCertify(c,vn.DOMAIN),u=vn.createFromProtobuf(l.payload),f=gn(l.publicKey.toCID());if(!u.peerId.equals(f))throw new Be("signing key does not match PeerId in the PeerRecord");if(!n.remotePeer.equals(u.peerId))throw new Be("signing key does not match remote PeerId");let h;try{h=await r.get(u.peerId)}catch(d){if(d.name!=="NotFoundError")throw d}if(h!=null&&(o.metadata=h.metadata,h.peerRecordEnvelope!=null)){let d=await ai.createFromProtobuf(h.peerRecordEnvelope),m=vn.createFromProtobuf(d.payload);m.seqNumber>=u.seqNumber&&(t("sequence number was lower or equal to existing sequence number - stored: %d received: %d",m.seqNumber,u.seqNumber),u=m,c=h.peerRecordEnvelope)}o.peerRecordEnvelope=c,o.addresses=u.multiaddrs.map(d=>({isCertified:!0,multiaddr:d})),s={seq:u.seqNumber,addresses:u.multiaddrs}}else t("%p did not send a signed peer record",n.remotePeer);if(t.trace("patching %p with",n.remotePeer,o),await r.patch(n.remotePeer,o),i.agentVersion!=null||i.protocolVersion!=null){let c={};i.agentVersion!=null&&(c.AgentVersion=O(i.agentVersion)),i.protocolVersion!=null&&(c.ProtocolVersion=O(i.protocolVersion)),t.trace("merging %p metadata",n.remotePeer,c),await r.merge(n.remotePeer,{metadata:c})}let a={peerId:n.remotePeer,protocolVersion:i.protocolVersion,agentVersion:i.agentVersion,publicKey:i.publicKey,listenAddrs:i.listenAddrs.map(c=>se(c)),observedAddr:i.observedAddr==null?void 0:se(i.observedAddr),protocols:i.protocols,signedPeerRecord:s,connection:n};return e.safeDispatchEvent("peer:identify",{detail:a}),a}var Gf=class{host;protocol;started;timeout;peerId;privateKey;peerStore;registrar;addressManager;maxInboundStreams;maxOutboundStreams;maxMessageSize;maxObservedAddresses;events;runOnLimitedConnection;log;constructor(e,t){this.protocol=t.protocol,this.started=!1,this.peerId=e.peerId,this.privateKey=e.privateKey,this.peerStore=e.peerStore,this.registrar=e.registrar,this.addressManager=e.addressManager,this.events=e.events,this.log=t.log,this.timeout=t.timeout??On.timeout,this.maxInboundStreams=t.maxInboundStreams??On.maxInboundStreams,this.maxOutboundStreams=t.maxOutboundStreams??On.maxOutboundStreams,this.maxMessageSize=t.maxMessageSize??On.maxMessageSize,this.maxObservedAddresses=t.maxObservedAddresses??On.maxObservedAddresses,this.runOnLimitedConnection=t.runOnLimitedConnection??On.runOnLimitedConnection,this.host={protocolVersion:`${t.protocolPrefix??On.protocolPrefix}/${dP}`,agentVersion:gW(e.nodeInfo,t.agentVersion)}}isStarted(){return this.started}async start(){this.started||(await this.peerStore.merge(this.peerId,{metadata:{AgentVersion:O(this.host.agentVersion),ProtocolVersion:O(this.host.protocolVersion)}}),await this.registrar.handle(this.protocol,e=>{this.handleProtocol(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnLimitedConnection:this.runOnLimitedConnection}),this.started=!0)}async stop(){await this.registrar.unhandle(this.protocol),this.started=!1}};var Ny=class extends Gf{connectionManager;concurrency;constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??On.protocolPrefix}/${pP}/${gP}`,log:e.logger.forComponent("libp2p:identify-push")}),this.connectionManager=e.connectionManager,this.concurrency=t.concurrency??On.concurrency,(t.runOnSelfUpdate??On.runOnSelfUpdate)&&e.events.addEventListener("self:peer:update",n=>{this.push().catch(i=>{this.log.error(i)})})}[tt]=["@libp2p/identify-push"];async push(){if(!this.isStarted())return;let e=this.addressManager.getAddresses().map(u=>u.decapsulateCode(Ie("p2p").code)),t=new vn({peerId:this.peerId,multiaddrs:e}),n=await ai.seal(t,this.privateKey),i=this.registrar.getProtocols(),o=await this.peerStore.get(this.peerId),s=H(o.metadata.get("AgentVersion")??O(this.host.agentVersion)),a=H(o.metadata.get("ProtocolVersion")??O(this.host.protocolVersion)),c=this;async function*l(){for(let u of c.connectionManager.getConnections())(await c.peerStore.get(u.remotePeer)).protocols.includes(c.protocol)&&(yield async()=>{let h,d=AbortSignal.timeout(c.timeout);try{h=await u.newStream(c.protocol,{signal:d,runOnLimitedConnection:c.runOnLimitedConnection}),await ir(h,{maxDataLength:c.maxMessageSize}).pb(Ua).write({listenAddrs:e.map(g=>g.bytes),signedPeerRecord:n.marshal(),protocols:i,agentVersion:s,protocolVersion:a},{signal:d}),await h.close({signal:d})}catch(m){c.log.error("could not push identify update to peer",m),h?.abort(m)}})}await Sr(Or(l(),{concurrency:this.concurrency}))}async handleProtocol(e){let{connection:t,stream:n}=e;try{if(this.peerId.equals(t.remotePeer))throw new Error("received push from ourselves?");let i={signal:AbortSignal.timeout(this.timeout)},s=await ir(n,{maxDataLength:this.maxMessageSize}).pb(Ua).read(i);await n.close(i),await Dy(this.peerStore,this.events,this.log,t,s)}catch(i){this.log.error("received invalid message",i),n.abort(i);return}this.log.trace("handled push from %p",t.remotePeer)}};var yW=41,Oy=class extends Gf{constructor(e,t={}){super(e,{...t,protocol:`/${t.protocolPrefix??On.protocolPrefix}/${hP}/${mP}`,log:e.logger.forComponent("libp2p:identify")}),(t.runOnConnectionOpen??On.runOnConnectionOpen)&&e.events.addEventListener("connection:open",n=>{let i=n.detail;this.identify(i).catch(o=>{o.name!==ps.name&&this.log.error("error during identify trigged by connection:open",o)})})}[tt]=["@libp2p/identify"];async _identify(e,t={}){let n;if(t.signal==null){let i=AbortSignal.timeout(this.timeout);t={...t,signal:i}}try{n=await e.newStream(this.protocol,{...t,runOnLimitedConnection:this.runOnLimitedConnection});let o=await ir(n,{maxDataLength:this.maxMessageSize}).pb(Ua).read(t);return await n.close(t),o}catch(i){throw n?.abort(i),i}}async identify(e,t={}){let n=await this._identify(e,t),{publicKey:i,protocols:o,observedAddr:s}=n;if(i==null)throw new Be("public key was missing from identify message");let a=tr(i),c=gn(a.toCID());if(!e.remotePeer.equals(c))throw new Be("identified peer does not match the expected peer");if(this.peerId.equals(c))throw new Be("identified peer is our own peer id?");return this.maybeAddObservedAddress(s),this.log("identify completed for peer %p and protocols %o",c,o),Dy(this.peerStore,this.events,this.log,e,n)}maybeAddObservedAddress(e){let t=yP(e);if(t==null)return;if(this.log.trace("our observed address was %a",t),Di(t)){this.log.trace("our observed address was private");return}if(t.stringTuples()[0][0]===yW&&!ay(t)){this.log.trace("our observed address was IPv6 but not a global unicast address");return}hl.exactMatch(t)||(this.log.trace("storing the observed address"),this.addressManager.addObservedAddr(t))}async handleProtocol(e){let{connection:t,stream:n}=e,i=AbortSignal.timeout(this.timeout);try{let o=await this.peerStore.get(this.peerId),s=this.addressManager.getAddresses().map(u=>u.decapsulateCode(Ie("p2p").code)),a=o.peerRecordEnvelope;if(s.length>0&&a==null){let u=new vn({peerId:this.peerId,multiaddrs:s});a=(await ai.seal(u,this.privateKey)).marshal().subarray()}let c=t.remoteAddr.bytes;NT.matches(t.remoteAddr)||(c=void 0),await ir(n).pb(Ua).write({protocolVersion:this.host.protocolVersion,agentVersion:this.host.agentVersion,publicKey:lr(this.privateKey.publicKey),listenAddrs:s.map(u=>u.bytes),signedPeerRecord:a,observedAddr:c,protocols:o.protocols},{signal:i}),await n.close({signal:i})}catch(o){this.log.error("could not respond to identify request",o),n.abort(o)}}};function wP(r={}){return e=>new Oy(e,r)}function xP(r={}){return e=>new Ny(e,r)}var Xf=1e3,C9=60*Xf,Ly=60*C9,bP=36*Ly,vP="/ipfs/kad/1.0.0",EP=48*Ly;var SP=24*Ly,AP=10,_P=16384,IP=Ly,l7e=10*Xf;var By=20,Yf=3,TP=5*C9,CP=Xf,kP=5*Xf,PP=5*C9,RP=30*Xf,DP=180*Xf,k9=`${ia}-kad-dht`;var Fa=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},My=class extends Error{constructor(e="Query aborted"){super(e),this.name="QueryAbortedError"}},Uy=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},Fy=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var NP;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.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)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>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(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(NP||(NP={}));var Ze;(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"})(Ze||(Ze={}));var $y;(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"})($y||($y={}));(function(r){r.codec=()=>St($y)})(Ze||(Ze={}));var Zf;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(Zf||(Zf={}));var P9;(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"})(P9||(P9={}));(function(r){r.codec=()=>St(P9)})(Zf||(Zf={}));var Qf;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.multiaddrs!=null)for(let o of t.multiaddrs)n.uint32(18),n.bytes(o);t.connection!=null&&(n.uint32(24),Zf.codec().encode(t.connection,n)),i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={id:Pe(0),multiaddrs:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.id=t.bytes();break}case 2:{if(i.limits?.multiaddrs!=null&&o.multiaddrs.length===i.limits.multiaddrs)throw new wt('Decode error - map field "multiaddrs" had too many elements');o.multiaddrs.push(t.bytes());break}case 3:{o.connection=Zf.codec().decode(t);break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Qf||(Qf={}));var Ls;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{if(i.lengthDelimited!==!1&&n.fork(),t.type!=null&&$y[t.type]!==0&&(n.uint32(8),Ze.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 o of t.closer)n.uint32(66),Qf.codec().encode(o,n);if(t.providers!=null)for(let o of t.providers)n.uint32(74),Qf.codec().encode(o,n);i.lengthDelimited!==!1&&n.ldelim()},(t,n,i={})=>{let o={type:Ze.PUT_VALUE,closer:[],providers:[]},s=n==null?t.len:t.pos+n;for(;t.pos<s;){let a=t.uint32();switch(a>>>3){case 1:{o.type=Ze.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:{if(i.limits?.closer!=null&&o.closer.length===i.limits.closer)throw new wt('Decode error - map field "closer" had too many elements');o.closer.push(Qf.codec().decode(t,t.uint32(),{limits:i.limits?.closer$}));break}case 9:{if(i.limits?.providers!=null&&o.providers.length===i.limits.providers)throw new wt('Decode error - map field "providers" had too many elements');o.providers.push(Qf.codec().decode(t,t.uint32(),{limits:i.limits?.providers$}));break}default:{t.skipType(a&7);break}}}return o})),e),r.encode=t=>ve(t,r.codec()),r.decode=(t,n)=>be(t,r.codec(),n)})(Ls||(Ls={}));function R9(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function zp(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function Hy(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function ci(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function D9(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function Kp(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function N9(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function OP(r,e,t){if(t.length===0)throw new U("No records given");let i=H(e).split("/");if(i.length<3)throw new U("Record key does not have a selector function");let o=r[i[1].toString()];if(o==null)throw new Fy(`No selector function configured for key type "${i[1]}"`);return t.length===1?0:o(e,t)}function wW(r,e){return 0}var LP={pk:wW};async function Jf(r,e){let t=e.key,i=H(t).split("/");if(i.length<3)return;let o=r[i[1].toString()];if(o==null)throw new U(`No validator available for key type "${i[1]}"`);await o(t,e.value)}var xW=async(r,e)=>{if(!(r instanceof Uint8Array))throw new U('"key" must be a Uint8Array');if(r.byteLength<5)throw new U("Invalid public key record");if(H(r.subarray(0,4))!=="/pk/")throw new U("key was not prefixed with /pk/");let n=tr(e),i=r.slice(4);if(!pe(i,n.toMultihash().bytes))throw new U("public key does not match passed in key")},BP={pk:xW};var bW=O("/pk/");function MP(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 i=bn(n);return i==null?!0:!i})}}async function $a(r){return(await Fe.digest(r)).digest}async function Mr(r){return $a(r.toMultihash().bytes)}function Ha(r,e){return new nt(`${r}/${H(e,"base32")}`,!1)}function UP(r){return Ve([bW,r.toMultihash().bytes])}function FP(r){return H(r.subarray(0,4))==="/pk/"}function $P(r){let e=Ue(r.subarray(4));return ur(e)}function O9(r,e){let t=new Date;return new kt(r,e,t).serialize()}var vW=290,EW=54,SW=55,AW=56,_W=4,IW=41;function HP(r){let e=r.stringTuples();for(let t of e)if(t[0]===vW)return!1;if(e[0][0]===EW||e[0][0]===SW||e[0][0]===AW)return!0;if(e[0][0]===_W||e[0][0]===IW){let t=bn(`${e[0][1]}`);return t==null||!t}return!1}function Vy(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:W.createV1(vt,Ue(O(n,"base32"))),peerId:at(t)}}function zy(r,e,t){let n=typeof e=="string"?e:H(e.multihash.bytes,"base32"),i=[r,n];return t!=null&&i.push(t.toString()),new nt(i.join("/"))}function Ky(r){return new Date(Zt(r))}function _l(r,e,t){return async function*(...n){let i=e.queryTime?.timer(t),o=e.errorTime?.timer(t),s=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw s=!0,o?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||i?.()}}}function qy(r,e,t){return async function(...n){let i=e?.queryTime?.timer(t),o=e?.errorTime?.timer(t),s=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw s=!0,o?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||i?.()}}}var jy=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:i,peerRouting:o,queryManager:s,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=i,this.peerRouting=o,this.queryManager=s,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e){this.log("getLocal %b",e);let t=Ha(this.datastorePrefix,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 i=kt.deserialize(n);return await Jf(this.validators,i),i}async*sendCorrectionRecord(e,t,n,i={}){this.log("sendCorrection for %b",e);let o=O9(e,n);for(let{value:s,from:a}of t){if(pe(s,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=Ha(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,o.subarray())}catch(u){this.log.error("Failed error correcting self",u)}continue}let c=!1,l={type:Ze.PUT_VALUE,key:e,record:o};for await(let u of this.network.sendRequest(a,l,i))u.name==="PEER_RESPONSE"&&u.record!=null&&pe(u.record.value,kt.deserialize(o).value)&&(c=!0),yield u;c||(yield ci({from:a,error:new Fa("Value not put correctly")},i)),this.log.error("Failed error correcting entry")}}async*put(e,t,n={}){this.log("put key %b value %b",e,t);let i=O9(e,t),o=Ha(this.datastorePrefix,e);this.log(`storing record for key ${o.toString()}`),await this.components.datastore.put(o,i.subarray()),yield*ot(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),s=>Nt(s,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:Ze.PUT_VALUE,key:e,record:i};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,n))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&pe(u.record.value,kt.deserialize(i).value)||c.push(ci({from:a.peer.id,error:new Fa("Value not put correctly")},n)));return c}),s=>Or(s,{ordered:!1,concurrency:Yf}),async function*(s){for await(let a of s)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 i=n.map(a=>a.value),o=0;try{o=OP(this.selectors,e,i)}catch(a){if(a.name!=="InvalidParametersError")throw a}let s=i[o];if(this.log("GetValue %b %b",e,s),s==null)throw new We("Best value was not found");yield*this.sendCorrectionRecord(e,n,s,t),yield n[o]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let o=await this.getLocal(e);yield Kp({value:o.value,from:this.components.peerId},t)}catch(o){this.log("error getting local value for %b",e,o)}let n=this,i=async function*({peer:o,signal:s}){for await(let a of n.peerRouting.getValueOrPeers(o,e,{...t,signal:s}))yield a,a.name==="PEER_RESPONSE"&&a.record!=null&&(yield Kp({from:o,value:a.record.value},t))};yield*this.queryManager.run(e,i,t)}};function VP(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function qp(r){if(r.id==null)throw new Error("Invalid peer in message");let e=Ue(r.id);return{id:ur(e),multiaddrs:(r.multiaddrs??[]).map(t=>se(t))}}var Wy=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:i,queryManager:o,routingTable:s,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=i,this.queryManager=o,this.routingTable=s,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PROVIDER"&&(u.providers??=[],u.providers.push(...l.providers.map(f=>f.id.toString()))),u)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PEER_RESPONSE"&&l.messageName==="ADD_PROVIDER"&&(u.providers??=[],u.providers.push(l.from.toString())),u)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let i=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId);let o={type:Ze.ADD_PROVIDER,key:i,providers:[VP({id:this.components.peerId,multiaddrs:t})]},s=0,a=c=>async()=>{if(c.name!=="FINAL_PEER")return[c];let l=[];this.log("putProvider %s to %p",e,c.peer.id);try{this.log("sending provider record for %s to %p",e,c.peer.id);for await(let u of this.network.sendMessage(c.peer.id,o,n))u.name==="PEER_RESPONSE"&&(this.log("sent provider record for %s to %p",e,c.peer.id),s++),l.push(u)}catch(u){this.log.error("error sending provide record to peer %p",c.peer.id,u),l.push(ci({from:c.peer.id,error:u},n))}return l};yield*ot(this.peerRouting.getClosestPeers(i,n),c=>Nt(c,l=>a(l)),c=>Or(c,{ordered:!1,concurrency:Yf}),async function*(c){for await(let l of c)yield*l}),this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,i=0,o=e.multihash.bytes,s=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:d})=>d)})}catch(h){if(h.name!=="NotFoundError")throw h;this.log("no peer store entry for %p",f)}if(yield zp({from:this.components.peerId,messageType:Ze.GET_PROVIDERS,providers:u},t),yield D9({from:this.components.peerId,providers:u},t),i+=u.length,i>=n)return}let c=async function*({peer:u,signal:f}){let h={type:Ze.GET_PROVIDERS,key:o};yield*s.network.sendRequest(u,h,{...t,signal:f})},l=new yn(a);for await(let u of this.queryManager.run(o,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield D9({from:u.from,providers:f},t),i+=f.length,i>=n))return}}};function L9(r,e){let t=IC(r,e),n={read:async(i,o)=>{let s=await t.read(o);return i.decode(s)},write:async(i,o,s)=>{await t.write(o.encode(i),s)},writeV:async(i,o,s)=>{await t.writeV(i.map(a=>o.encode(a)),s)},pb:i=>({read:async o=>n.read(i,o),write:async(o,s)=>n.write(o,i,s),writeV:async(o,s)=>n.writeV(o,i,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Gy=class extends Me{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new po({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,i],o){return{...o,to:n.toString(),"message type":`${i.type}`}},getAttributesFromYieldedValue:(n,i)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((o,s)=>{i[`providers-${s}`]=o.id.toString()}),n.closer.length>0&&n.closer.forEach((o,s)=>{i[`closer-${s}`]=o.id.toString()})),i)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,i],o){return{...o,to:n.toString(),"message type":`${i.type}`}},getAttributesFromYieldedValue:(n,i)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((o,s)=>{i[`providers-${s}`]=o.id.toString()}),n.closer.length>0&&n.closer.forEach((o,s)=>{i[`closer-${s}`]=o.id.toString()})),i)})??this.sendMessage}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 i=t.type;if(i==null)throw new U("Message type was missing");this.log("sending %s to %p",t.type,e),yield N9({peer:e},n),yield R9({to:e,type:i},n);let o,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[i]:!0}),o=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n);let c=await this._writeReadMessage(o,t,n);o.close(n).catch(l=>{this.log.error("error closing stream to %p",e,l),o?.abort(l)}),yield zp({from:e,messageType:c.type,closer:c.closer.map(qp),providers:c.providers.map(qp),record:c.record==null?void 0:kt.deserialize(c.record)},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),o?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield ci({from:e,error:a},n)}finally{this.timeout.cleanUp(s)}}async*sendMessage(e,t,n={}){if(!this.running)return;let i=t.type;if(i==null)throw new U("Message type was missing");this.log("sending %s to %p",t.type,e),yield N9({peer:e},n),yield R9({to:e,type:i},n);let o,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[i]:!0}),o=await(await this.components.connectionManager.openConnection(e,n)).newStream(this.protocol,n),await this._writeMessage(o,t,n),o.close(n).catch(c=>{this.log.error("error closing stream to %p",e,c),o?.abort(c)}),yield zp({from:e,messageType:i},n)}catch(a){this.metrics.errors?.increment({[i]:!0}),o?.abort(a),yield ci({from:e,error:a},n)}finally{this.timeout.cleanUp(s)}}async _writeMessage(e,t,n){await L9(e).write(t,Ls,n)}async _writeReadMessage(e,t,n){let i=L9(e);await i.write(t,Ls,n);let o=await i.read(Ls,n);return o.closer.forEach(s=>{this.safeDispatchEvent("peer",{detail:qp(s)})}),o.providers.forEach(s=>{this.safeDispatchEvent("peer",{detail:qp(s)})}),o}};var Va=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.peer)}async add(e){let t=await Mr(e.id);this.addWithKadId(e,t)}addWithKadId(e,t){if(this.peerDistances.find(o=>o.peer.id.equals(e.id))!=null)return;let n={peer:e,distance:Nn(this.originDhtKey,t)},i=!1;for(let o=0;o<this.peerDistances.length;o++){let s=Da(this.peerDistances[o].distance,n.distance);if(s===0||s===1){i=!0,this.peerDistances.splice(o,0,n);break}}i||this.peerDistances.push(n),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e){if(this.length===0)return!0;let t=await Mr(e),n=Nn(t,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return Da(n,i)===-1}async anyCloser(e){return e.length===0?!1:Promise.any(e.map(async t=>this.isCloser(t)))}};var Xy=class{log;routingTable;network;validators;queryManager;peerStore;peerId;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.peerStore=e.peerStore,this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}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(i){if(i.name!=="NotFoundError")throw i}}if(t==null)try{t=await this.peerStore.get(e)}catch(i){if(i.name!=="NotFoundError")throw i}if(t!=null)return this.log("findPeerLocal found %p in peer store",e),{id:t.id,multiaddrs:t.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n={}){let i={type:Ze.GET_VALUE,key:t};yield*this.network.sendRequest(e,i,n)}async*getPublicKeyFromNode(e,t={}){let n=UP(e);for await(let i of this._getValueSingle(e,n,t))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let o=tr(i.record.value),s=Ko(o);if(!s.equals(e))throw new hs("public key does not match id");if(s.publicKey==null)throw new hs("public key missing");yield Kp({from:e,value:i.record.value},t)}throw new Fa(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let i=await this.findPeerLocal(e);if(i!=null){this.log("found local"),yield Hy({from:this.peerId,peer:i},t);return}}let n=!1;if(t.useNetwork!==!1){let i=this,o=async function*({peer:s,signal:a}){let c={type:Ze.FIND_NODE,key:e.toMultihash().bytes};for await(let l of i.network.sendRequest(s,c,{...t,signal:a}))if(yield l,l.name==="PEER_RESPONSE"){let u=l.closer.find(f=>f.id.equals(e));u!=null&&(yield Hy({from:l.from,peer:u},t))}};for await(let s of this.queryManager.run(e.toMultihash().bytes,o,t))s.name==="FINAL_PEER"&&(n=!0),yield s}n||(yield ci({from:this.peerId,error:new We("Not found")},t))}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await $a(e),i=this.routingTable.closestPeers(n),o=this,s=new Va(n,this.routingTable.kBucketSize);await Promise.all(i.map(async c=>{await s.add({id:c,multiaddrs:[]})}));let a=async function*({peer:c,signal:l}){o.log("closerPeersSingle %s from %p",H(e,"base32"),c);let u={type:Ze.FIND_NODE,key:e};yield*o.network.sendRequest(c,u,{...t,signal:l})};for await(let c of this.queryManager.run(e,a,t))c.name==="PEER_RESPONSE"&&await Promise.all(c.closer.map(async l=>{await s.add(l)})),yield c;this.log("found %d peers close to %b",s.length,e);for(let c of s.peers)yield Hy({from:this.peerId,peer:c},t)}async*getValueOrPeers(e,t,n={}){for await(let i of this._getValueSingle(e,t,n)){if(i.name==="PEER_RESPONSE"&&i.record!=null)try{await this._verifyRecordOnline(i.record)}catch{let s="invalid record received, discarded";this.log(s),yield ci({from:i.from,error:new Fa(s)},n);continue}yield i}}async _verifyRecordOnline(e){if(e.timeReceived==null)throw new Uy("invalid record received");await Jf(this.validators,new kt(e.key,e.value,e.timeReceived))}async getCloserPeersOffline(e,t){let n=[];try{let c=Ue(e),l=ur(c),u=await this.peerStore.get(l);n.push({id:u.id,multiaddrs:u.addresses.map(({multiaddr:f})=>f)})}catch{}let i=await $a(e),o=this.routingTable.closestPeers(i),s=await Mr(t),a=Nn(s,i);for(let c of o){let l=await Mr(c),u=Nn(l,i);if(Da(u,a)===-1)try{let f=await this.peerStore.get(c);n.push({id:c,multiaddrs:f.addresses.map(({multiaddr:h})=>h)})}catch(f){if(f.name!=="NotFoundError")throw f}}return n.length>0?this.log("getCloserPeersOffline found %d peer(s) closer to %b than %p",n.length,e,t):this.log("getCloserPeersOffline could not find peer closer to %b than %p with %d peers in the routing table",e,t,this.routingTable.size),n}};var Yy=class{log;datastore;datastorePrefix;lock;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore,this.lock=t.lock}async addProvider(e,t){let n=await this.lock.readLock();try{this.log("%p provides %s",t,e),await this.writeProviderEntry(e,t)}finally{n()}}async removeProvider(e,t){let n=await this.lock.writeLock();try{let i=zy(this.datastorePrefix,e,t);this.log("%p no longer provides %s",t,e),await this.datastore.delete(i)}finally{n()}}async getProviders(e){let t=await this.lock.readLock();try{this.log("get providers for %c",e);let n=await this.loadProviders(e);return this.log("got %d providers for %c",n.size,e),[...n.keys()]}finally{t()}}async writeProviderEntry(e,t,n=new Date){let i=zy(this.datastorePrefix,e,t),o=ht(n.getTime());await this.datastore.put(i,o)}async loadProviders(e){let t=new _r,n=zy(this.datastorePrefix,e);for await(let i of this.datastore.query({prefix:n.toString()})){let{peerId:o}=Vy(i.key);t.set(o,Ky(i.value))}return t}};async function*zP(r){let{key:e,startingPeer:t,ourPeerId:n,signal:i,query:o,alpha:s,pathIndex:a,numPaths:c,queryFuncTimeout:l,log:u,peersSeen:f,connectionManager:h}=r,d=new ln({concurrency:s,sort:(w,x)=>Da(w.options.distance,x.options.distance)}),m=await $a(e);function g(w,x){if(w==null)return;f.add(w);let v=Nn(x,m);d.add(async()=>{let b=[i];l!=null&&b.push(AbortSignal.timeout(l));let S=Ne(b);try{for await(let T of o({...r,key:e,peer:w,signal:S,pathIndex:a,numPaths:c})){if(S.aborted)return;if(T.name==="PEER_RESPONSE")for(let D of T.closer){if(f.has(D.id)){u.trace("already seen %p in query",D.id);continue}if(n.equals(D.id)){u("not querying ourselves");continue}if(!await h.isDialable(D.multiaddrs)){u("not querying undialable peer");continue}let A=await Mr(D.id),I=Nn(A,m);if(Da(I,v)!==-1){u.trace("skipping %p as they are not closer to %b than %p",D.id,e,w);continue}u.trace("querying closer peer %p",D.id),g(D.id,A)}d.safeDispatchEvent("completed",{detail:T})}}catch(T){if(!i.aborted)return ci({from:w,error:T},r)}finally{S.clear()}},{distance:v}).catch(b=>{u.error(b)})}g(t,await Mr(t));try{for await(let w of d.toGenerator({signal:i}))w!=null&&(yield w)}catch(w){throw i.aborted?new My("Query aborted"):w}}var Qy=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??By,this.alpha=t.alpha??Yf,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(DP);n={...n,signal:c}}let i=new AbortController,o=Ne([this.shutDownController.signal,i.signal,n.signal]);i.signal;let s=this.logger.forComponent(`${this.logPrefix}:query:`+H(e,"base58btc")),a=!1;try{n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(s("waiting for initial query-self query before continuing"),await Dt(this.initialQuerySelfHasRun.promise,o),this.initialQuerySelfHasRun=void 0),s("query:start");let c=await $a(e),l=this.routingTable.closestPeers(c),u=l.slice(0,Math.min(this.disjointPaths,l.length));if(l.length===0){s.error("Running query with no peers");return}let f=new yn,h=u.map((d,m)=>zP({...n,key:e,startingPeer:d,ourPeerId:this.peerId,signal:o,query:t,pathIndex:m,numPaths:u.length,alpha:this.alpha,queryFuncTimeout:n.queryFuncTimeout,log:s,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let d of un(...h)){if(d.name==="QUERY_ERROR"&&s.error("query error",d.error),d.name==="PEER_RESPONSE")for(let m of[...d.closer,...d.providers])await this.connectionManager.isDialable(m.multiaddrs)&&await this.routingTable.add(m.id);yield d}a=!0}catch(c){if(!(!this.running&&c.name==="QueryAbortedError"))throw c}finally{a||(s("query exited early"),i.abort()),o.clear(),s("query:done")}}};var Zy=class{log;peerId;peerRouting;routingTable;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.running=!1,this.peerRouting=t.peerRouting,this.routingTable=t.routingTable,this.count=t.count??By,this.interval=t.interval??TP,this.initialInterval=t.initialInterval??CP,this.queryTimeout=t.queryTimeout??kP,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=qy(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){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=ye(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=Ne(e);this.controller.signal;try{this.routingTable.size===0&&(this.log("routing table was empty, waiting for some peers before running query"),await TC(this.routingTable,"peer:add",{signal:t,filter:o=>!this.peerId.equals(o.detail)}),this.log("routing table has peers, continuing with query")),this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),i=await ot(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),o=>la(o,this.count),async o=>L2(o));this.log("self-query found %d peers in %dms",i,Date.now()-n)}catch(n){this.log.error("self-query error",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query",e)})},this.interval))}};var Jy=class extends Me{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;lock;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new ln({concurrency:t.concurrency??AP,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new po({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??SP,this.maxQueueSize=t.maxQueueSize??_P,this.validity=t.validity??EP,this.interval=t.interval??IP,this.contentRouting=t.contentRouting,this.lock=t.lock,this.running=!1,this.reprovide=qy(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.cleanUp().catch(e=>{this.log.error("error running reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async cleanUp(){let e=await this.lock.writeLock();try{this.safeDispatchEvent("reprovide:start");for await(let t of this.datastore.query({prefix:this.datastorePrefix}))try{let{cid:n,peerId:i}=Vy(t.key),o=Ky(t.value).getTime(),s=o+this.validity,a=Date.now(),c=a>s;this.log.trace("comparing: %d < %d = %s %s",o,a-this.validity,c,c?"(expired)":""),c&&await this.datastore.delete(t.key),this.peerId.equals(i)&&a-s<this.reprovideThreshold&&this.queueReprovide(n).catch(l=>{this.log.error("could not reprovide %c - %e",n,l)})}catch(n){this.log.error("error processing datastore key %s - %e",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{e(),this.safeDispatchEvent("reprovide:end"),this.running&&(this.timeout=setTimeout(()=>{this.cleanUp().catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}async queueReprovide(e){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize);let t=this.reprovideQueue.queue.find(n=>n.options.cid.equals(e));if(t!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),t.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async n=>{if(n.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(n);try{await this.reprovide(n.cid,n)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(n=>{this.log.error("could not re-provide key %c - %e",e,n)})}async reprovide(e,t){await Sr(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var CW=20,kW=5e3,PW="kad-close",RW=50,e3=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??kW,this.peerSetSize=t.peerSetSize??CW,this.closeTagName=t.closeTagName??PW,this.closeTagValue=t.closeTagValue??RW,this.closestPeers=new yn,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await Mr(this.components.peerId);this.newPeers=new Va(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new yn(this.newPeers?.peers.map(i=>i.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:{value:this.closeTagValue},[k9]:{value:1}}})}),...[...n].map(async i=>{await this.components.peerStore.merge(i,{tags:{[this.closeTagName]:void 0,[k9]:void 0}})})])}};function jp(r){return Array.isArray(r?.peers)}var t3=class{root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e){this.prefixLength=e.prefixLength??KP,this.kBucketSize=e.kBucketSize??B9,this.splitThreshold=e.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=e.numberOfOldContactsToPing??qP,this.lastPingThreshold=e.lastPingThreshold??jP,this.ping=e.ping,this.verify=e.verify,this.onAdd=e.onAdd,this.onRemove=e.onRemove,this.addingPeerMap=new _r,this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e){this.localPeer={peerId:e,kadId:await Mr(e),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await Mr(e),lastPing:0},i=this.addingPeerMap.get(e);if(i!=null)return i;try{let o=this._add(n,t);this.addingPeerMap.set(e,o),await o}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!NW(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let i=n.peers.filter(s=>!(s.peerId.equals(this.localPeer?.peerId)||s.lastPing>Date.now()-this.lastPingThreshold)).sort((s,a)=>s.lastPing<a.lastPing?-1:s.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),o=!1;for await(let s of this.ping(i,t))o=!0,await this.remove(s.kadId);o&&await this._add(e,t)}*closest(e,t=this.kBucketSize){let n=new Va(e,t);for(let i of this.toIterable())n.addWithKadId({id:i.peerId,multiaddrs:[]},i.kadId);yield*Nt(n.peers,i=>i.id)}count(){function e(t){if(jp(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e){let t=this._determineBucket(e),n=this._indexOf(t,e);if(n>-1){let i=t.peers.splice(n,1)[0];await this.onRemove?.(i,t)}}*toIterable(){function*e(t){if(jp(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+H(Nn(e,t),"base16"))}_determineBucket(e){let t=H(e,"base2");function n(i,o=0){return jp(i)?i:t[o]==="0"?n(i.left,o+1):n(i.right,o+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>pe(n.kadId,t))}async _split(e){let t={prefix:"0",depth:e.depth+1,peers:[]},n={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)H(i.kadId,"base2")[e.depth]==="0"?(t.peers.push(i),await this.onMove?.(i,e,t)):(n.peers.push(i),await this.onMove?.(i,e,n));DW(e,t,n)}};function DW(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function NW(r,e){return r.lastPing<Date.now()-e}var B9=20,KP=6;var OW=20,LW=100,qP=3;var BW=20,MW=100,WP="kad-peer",UW=1,jP=6e5,FW=!0,$W=1e3,r3=class extends Me{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??B9,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??WP,this.peerTagValue=t.peerTagValue??UW,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??FW,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??$W,this.pingOldContactQueue=new kr({concurrency:t.pingOldContactConcurrency??BW,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??MW}),this.pingOldContactTimeout=new po({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new kr({concurrency:t.pingNewContactConcurrency??OW,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??LW}),this.pingNewContactTimeout=new po({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new t3({kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved}),this.closestPeerTagger=new e3(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,await Cr(this.closestPeerTagger),await this.kb.addSelfPeer(this.components.peerId))}async afterStart(){Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let e=0;for(let t of await this.components.peerStore.all({filters:[n=>n.protocols.includes(this.protocol)&&n.tags.has(WP)],limit:this.populateFromDatastoreLimit})){if(!this.running)return;try{await this.add(t.id),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(t.id,{tags:{[this.peerTagName]:void 0}})}}this.log("added %d peer store peers to the routing table",e)}).catch(e=>{this.log.error("error adding peer store peers to the routing table %e",e)})}async stop(){this.running=!1,await Gr(this.closestPeerTagger),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort()}async peerAdded(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}}),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let i of e){if(this.kb.get(i.kadId)==null){this.log("asked to ping contact %p that was not in routing table",i.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let o=this.pingOldContactQueue.find(i.peerId);if(o!=null)return this.log("asked to ping contact %p was already being pinged",i.peerId),await o.join(t)?void 0:i;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=Ne([c,a?.signal]);try{return await this.pingContact(i,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:i.peerId,signal:t?.signal}))return i})}for await(let i of Or(n))i!=null&&(yield i)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),i=Ne([n,t?.signal]);try{let o=this.pingNewContactQueue.find(e.peerId);return o!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await o.join({signal:i})):await this.pingNewContactQueue.add(async s=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,s)),{peerId:e.peerId,signal:i})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),i.clear()}}async pingContact(e,t){let n;try{this.log("pinging contact %p",e.peerId);for await(let i of this.network.sendRequest(e.peerId,{type:Ze.PING},t))if(i.type===n3.PEER_RESPONSE)return i.messageType===Ze.PING?(this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0):!1;return!1}catch(i){return this.log("error pinging old contact %p - %e",e.peerId,i),n?.abort(i),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e){let t=await Mr(e);return this.kb.get(t)?.peerId}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)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e){if(this.kb==null)throw new Error("RoutingTable is not started");let t=await Mr(e);await this.kb.remove(t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,i=20,o=0;function s(a){if(jp(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<i&&(i=a.peers.length),a.peers.length>o&&(o=a.peers.length);return}s(a.left),s(a.right)}s(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(i),this.metrics.routingTableKadBucketMaxOccupancy.update(o),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var GP=[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 i3=15,o3=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:i,refreshInterval:o,refreshQueryTimeout:s,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=i,this.refreshInterval=o??PP,this.refreshQueryTimeout=s??RP,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1){this.log("refreshing routing table");let t=this._maxCommonPrefix(),n=this._getTrackedCommonPrefixLengthsForRefresh(t);this.log(`max common prefix length ${t}`),this.log(`tracked CPLs [ ${n.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(n.map(async(i,o)=>{try{if(await this._refreshCommonPrefixLength(o,i,e),this._numPeersForCpl(t)===0){let s=Math.min(2*(o+1),n.length-1);for(let a=o+1;a<s+1;a++)try{await this._refreshCommonPrefixLength(a,i,e)}catch(c){this.log.error(c)}}}catch(s){this.log.error(s)}})).catch(i=>{this.log.error(i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error(i)})}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 i=await this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let o=AbortSignal.timeout(this.refreshQueryTimeout);let s=await L2(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:o}));this.log(`found ${s} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}_getTrackedCommonPrefixLengthsForRefresh(e){e>i3&&(e=i3);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");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=mn(2),n=(t[1]<<8)+t[0],i=await this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),o=Ue(i);return ur(o)}async _makePeerId(e,t,n){if(n>i3)throw new Error(`Cannot generate peer ID for common prefix length greater than ${i3}`);let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=s&a|t&~a,l=GP[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,Fe.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.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?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Nn(this.routingTable.kb.localPeer.kadId,e),n=0;for(let i of t)if(i===0)n++;else break;yield n}}};var s3=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new Be("Missing key");let n;try{n=W.decode(t.key)}catch{throw new Be("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async i=>{let o=Ue(i.id),s=ur(o),a=i.multiaddrs.map(c=>se(c));if(!e.equals(s)){this.log("invalid provider peer %p from %p",i.id,e);return}if(i.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,s),await this.peerStore.merge(s,{multiaddrs:a})}))}};var a3=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(this.log("incoming request from %p for peers closer to %b",e,t.key),t.key==null)throw new Be("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getCloserPeersOffline(t.key,e);pe(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(o=>o.decapsulateCode(Ie("p2p").code))});let i={type:Ze.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:o})=>o.length).map(o=>({id:o.id.toMultihash().bytes,multiaddrs:o.multiaddrs.map(s=>s.bytes)})),providers:[]};return i.closer.length===0&&this.log("could not find any peers closer to %b than %p",t.key,e),i}};var c3=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:i,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=i,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Be("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=W.decode(t.key)}catch{throw new Be("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[i,o]=await Promise.all([Ps(Nt(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getCloserPeersOffline(t.key,this.peerId)]),s={type:Ze.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:i.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",s.providers.length,s.closer.length),s}async _getAddresses(e){return[]}};var l3=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,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 Be("Invalid key");let i={type:Ze.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(FP(n)){this.log("is public key");let a=$P(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new We("No public key found in key book");c=lr(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),i.record=new kt(n,c,new Date).serialize(),i}let[o,s]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getCloserPeersOffline(n,e)]);return o!=null&&(this.log("had record for %b in local datastore",n),i.record=o.serialize()),s.length>0&&(this.log("had %s closer peers in routing table",s.length),i.closer=s.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),i}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Ha(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(o){if(o.name==="NotFoundError")return;throw o}let i=kt.deserialize(n);if(i.timeReceived==null||Date.now()-i.timeReceived.getTime()>bP){await this.datastore.delete(t);return}return i}};var u3=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 f3=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,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 i=`Empty record from: ${e.toString()}`;throw this.log.error(i),new Be(i)}try{let i=kt.deserialize(t.record);await Jf(this.validators,i),i.timeReceived=new Date;let o=Ha(this.datastorePrefix,i.key);await this.components.datastore.put(o,i.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,o)}catch(i){this.log("did not put record for key %b into datastore %o",n,i)}return t}};var d3=class{handlers;routingTable;log;metrics;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`)},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.routingTable=t.routingTable,this.handlers={[Ze.GET_VALUE.toString()]:new l3(e,t),[Ze.PUT_VALUE.toString()]:new f3(e,t),[Ze.FIND_NODE.toString()]:new a3(e,t),[Ze.ADD_PROVIDER.toString()]:new s3(e,t),[Ze.GET_PROVIDERS.toString()]:new c3(e,t),[Ze.PING.toString()]:new u3(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}onIncomingStream(e){let t="unknown";Promise.resolve().then(async()=>{let{stream:n,connection:i}=e,o=i.remotePeer,s=this;await ot(n,a=>Qi(a),async function*(a){for await(let c of a){let l=Ls.decode(c);t=l.type,s.log("incoming %s from %p",l.type,o);let u=await s.handleMessage(o,l);u!=null&&(yield Ls.encode(u))}},a=>Yi(a),n)}).catch(n=>{this.log.error("error handling %s RPC message from %p - %e",t,e.connection.remotePeer,n)})}};var h3=class extends Me{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:i}=t;this.components=e,this.log=e.logger.forComponent(`${i}: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 CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var M9=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await Sr(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}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 Sr(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 We("Could not find value for key")}},U9=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 We("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},HW=32,VW=64,p3=class extends Me{protocol;routingTable;providers;network;peerRouting;components;log;running;kBucketSize;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",i=t.datastorePrefix??"/dht",o=t.metricsPrefix??"libp2p_kad_dht",s={queries:e.metrics?.registerMetricGroup(`${o}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${o}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${o}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${o}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.protocol=t.protocol??vP,this.kBucketSize=t.kBucketSize??20,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??HW,this.maxOutboundStreams=t.maxOutboundStreams??VW,this.peerInfoMapper=t.peerInfoMapper??MP;let a=al();this.providers=new Yy(e,{...t.providers,logPrefix:n,datastorePrefix:i,lock:a}),this.validators={...BP,...t.validators},this.selectors={...LP,...t.selectors},this.network=new Gy(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:o}),this.routingTable=new r3(e,{kBucketSize:t.kBucketSize,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:o,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let c=ye();t.allowQueryWithZeroPeers===!0&&c.resolve(),this.queryManager=new Qy(e,{disjointPaths:Math.ceil(this.kBucketSize/2),logPrefix:n,metricsPrefix:o,initialQuerySelfHasRun:c,routingTable:this.routingTable}),this.peerRouting=new Xy(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new jy(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:i}),this.contentRouting=new Wy(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new o3(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new d3(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:o,datastorePrefix:i,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new h3(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Zy(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:c,routingTable:this.routingTable,operationMetrics:s}),this.reprovider=new Jy(e,{...t.reprovide,logPrefix:n,metricsPrefix:o,datastorePrefix:i,contentRouting:this.contentRouting,lock:a,operationMetrics:s}),this.network.addEventListener("peer",l=>{let u=l.detail;this.onPeerConnect(u).catch(f=>{this.log.error("could not add %p to routing table",u.id,f)}),this.dispatchEvent(new CustomEvent("peer",{detail:u}))}),this.topologyListener.addEventListener("peer",l=>{let u=l.detail;Promise.resolve().then(async()=>{let f=await this.components.peerStore.get(u),h={id:u,multiaddrs:f.addresses.map(({multiaddr:d})=>d),protocols:f.protocols};await this.onPeerConnect(h)}).catch(f=>{this.log.error("could not add %p to routing table - %e",u,f)})}),this.dhtPeerRouting=new U9(this),this.dhtContentRouting=new M9(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",l=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let u=l.detail.peer.addresses.some(({multiaddr:h})=>HP(h)),f=this.getMode();u&&f==="client"?await this.setMode("server"):f==="server"&&!u&&await this.setMode("client")}).catch(u=>{this.log.error("error setting dht server mode",u)})}),this.get=_l(this.get.bind(this),s,"GET_VALUE"),this.findProviders=_l(this.findProviders.bind(this),s,"FIND_PROVIDERS"),this.findPeer=_l(this.findPeer.bind(this),s,"FIND_PEER"),this.getClosestPeers=_l(this.getClosestPeers.bind(this),s,"GET_CLOSEST_PEERS"),this.provide=_l(this.provide.bind(this),s,"PROVIDE"),this.put=_l(this.put.bind(this),s,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[tt]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery"];[Jn]=["@libp2p/identify"];get[Do](){return this.dhtContentRouting}get[No](){return this.dhtPeerRouting}get[_c](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("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,t=!1){if(e===this.getMode()&&!t){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol),e===this.getMode()&&!t){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),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||(this.running=!0,await this.setMode(this.clientMode?"client":"server",!0),await Cr(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Cr(this.querySelf))}async stop(){this.running=!1,await Gr(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}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 cancelReprovide(e){await this.providers.removeProvider(e,this.components.peerId)}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 n3;(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"})(n3||(n3={}));function XP(r={}){return e=>new p3(e,r)}var iR=it(nR(),1),Wt=iR.default;var rD=it(hR(),1);var rd={};Ft(rd,{create:()=>sG,derivedEmptyPasswordKey:()=>y3});var y3={alg:"A128GCM",ext:!0,k:"scm9jmO_4BJAgdwWGVulLg",key_ops:["encrypt","decrypt"],kty:"oct"};function sG(r){let e=r?.algorithm??"AES-GCM",t=r?.keyLength??16,n=r?.nonceLength??12,i=r?.digest??"SHA-256",o=r?.saltLength??16,s=r?.iterations??32767,a=In.get();t*=8;async function c(f,h){let d=a.getRandomValues(new Uint8Array(o)),m=a.getRandomValues(new Uint8Array(n)),g={name:e,iv:m};typeof h=="string"&&(h=O(h));let w;if(h.length===0){w=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["encrypt"]);try{let v={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}catch{w=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["encrypt"])}}else{let v={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},b=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);w=await a.subtle.deriveKey(v,b,{name:e,length:t},!0,["encrypt"])}let x=await a.subtle.encrypt(g,w,f);return Ve([d,g.iv,new Uint8Array(x)])}async function l(f,h){let d=f.subarray(0,o),m=f.subarray(o,o+n),g=f.subarray(o+n),w={name:e,iv:m};typeof h=="string"&&(h=O(h));let x;if(h.length===0)try{let b={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}catch{x=await a.subtle.importKey("jwk",y3,{name:"AES-GCM"},!0,["decrypt"])}else{let b={name:"PBKDF2",salt:d,iterations:s,hash:{name:i}},S=await a.subtle.importKey("raw",h,{name:"PBKDF2"},!1,["deriveKey"]);x=await a.subtle.deriveKey(b,S,{name:e,length:t},!0,["decrypt"])}let v=await a.subtle.decrypt(w,x,g);return new Uint8Array(v)}return{encrypt:c,decrypt:l}}var Li={};Ft(Li,{Any:()=>Go,BaseBlock:()=>dr,BaseStringBlock:()=>Yp,BitString:()=>xo,BmpString:()=>kl,Boolean:()=>Tl,CharacterString:()=>Ul,Choice:()=>od,Constructed:()=>wr,DATE:()=>r1,DateTime:()=>i1,Duration:()=>o1,EndOfContent:()=>Qp,Enumerated:()=>Cl,GeneralString:()=>Ml,GeneralizedTime:()=>Fl,GraphicString:()=>Bl,HexBlock:()=>Xo,IA5String:()=>Ll,Integer:()=>li,Null:()=>Mn,NumericString:()=>Rl,ObjectIdentifier:()=>ui,OctetString:()=>sn,Primitive:()=>Fs,PrintableString:()=>Dl,RawData:()=>z9,RelativeObjectIdentifier:()=>t1,Repeated:()=>$l,Sequence:()=>Lt,Set:()=>Un,TIME:()=>s1,TeletexString:()=>Nl,TimeOfDay:()=>n1,UTCTime:()=>ja,UniversalString:()=>Pl,Utf8String:()=>Oi,ValueBlock:()=>Ur,VideotexString:()=>Ol,ViewWriter:()=>id,VisibleString:()=>qa,compareSchema:()=>Ka,fromBER:()=>fi,verifySchema:()=>TG});var He=it(Ms());function Il(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 za(r,e,t=-1){let n=t,i=r,o=0,s=Math.pow(2,e);for(let a=1;a<8;a++){if(r<s){let c;if(n<0)c=new ArrayBuffer(a),o=a;else{if(n<a)return new ArrayBuffer(0);c=new ArrayBuffer(n),o=n}let l=new Uint8Array(c);for(let u=a-1;u>=0;u--){let f=Math.pow(2,u*e);l[o-u-1]=Math.floor(i/f),i-=l[o-u-1]*f}return c}s*=Math.pow(2,e)}return new ArrayBuffer(0)}function b3(...r){let e=0,t=0;for(let o of r)e+=o.length;let n=new ArrayBuffer(e),i=new Uint8Array(n);for(let o of r)i.set(o,t),t+=o.length;return i}function H9(){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=Il(t,8),i=new ArrayBuffer(this.valueHex.byteLength),o=new Uint8Array(i);for(let a=0;a<this.valueHex.byteLength;a++)o[a]=r[a];return o[0]&=127,Il(o,8)-n}function pR(r){let e=r<0?r*-1:r,t=128;for(let n=1;n<8;n++){if(e<=t){if(r<0){let s=t-e,a=za(s,8,n),c=new Uint8Array(a);return c[0]|=128,a}let i=za(e,8,n),o=new Uint8Array(i);if(o[0]&128){let s=i.slice(0),a=new Uint8Array(s);i=new ArrayBuffer(i.byteLength+1),o=new Uint8Array(i);for(let c=0;c<s.byteLength;c++)o[c+1]=a[c];o[0]=0}return i}t*=Math.pow(2,8)}return new ArrayBuffer(0)}function mR(r,e){if(r.byteLength!==e.byteLength)return!1;let t=new Uint8Array(r),n=new Uint8Array(e);for(let i=0;i<t.length;i++)if(t[i]!==n[i])return!1;return!0}function Ln(r,e){let t=r.toString(10);if(e<t.length)return"";let n=e-t.length,i=new Array(n);for(let s=0;s<n;s++)i[s]="0";return i.join("").concat(t)}var mve=Math.log(2);function v3(){if(typeof BigInt>"u")throw new Error("BigInt is not defined. Your environment doesn't implement BigInt.")}function K9(r){let e=0,t=0;for(let i=0;i<r.length;i++){let o=r[i];e+=o.byteLength}let n=new Uint8Array(e);for(let i=0;i<r.length;i++){let o=r[i];n.set(new Uint8Array(o),t),t+=o.byteLength}return n.buffer}function $s(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 id=class{constructor(){this.items=[]}write(e){this.items.push(e)}final(){return K9(this.items)}},Wp=[new Uint8Array([1])],gR="0123456789",V9="name",yR="valueHexView",mG="isHexOnly",gG="idBlock",yG="tagClass",wG="tagNumber",xG="isConstructed",bG="fromBER",vG="toBER",EG="local",Bn="",bo=new ArrayBuffer(0),B3=new Uint8Array(0),Xp="EndOfContent",xR="OCTET STRING",bR="BIT STRING";function Xo(r){var e;return e=class extends r{get valueHex(){return this.valueHexView.slice().buffer}set valueHex(n){this.valueHexView=new Uint8Array(n)}constructor(...n){var i;super(...n);let o=n[0]||{};this.isHexOnly=(i=o.isHexOnly)!==null&&i!==void 0?i:!1,this.valueHexView=o.valueHex?He.BufferSourceConverter.toUint8Array(o.valueHex):B3}fromBER(n,i,o){let s=n instanceof ArrayBuffer?new Uint8Array(n):n;if(!$s(this,s,i,o))return-1;let a=i+o;return this.valueHexView=s.subarray(i,a),this.valueHexView.length?(this.blockLength=o,a):(this.warnings.push("Zero buffer length"),i)}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",bo)}toJSON(){return{...super.toJSON(),isHexOnly:this.isHexOnly,valueHex:He.Convert.ToHex(this.valueHexView)}}},e.NAME="hexBlock",e}var Us=class{static blockName(){return this.NAME}get valueBeforeDecode(){return this.valueBeforeDecodeView.slice().buffer}set valueBeforeDecode(e){this.valueBeforeDecodeView=new Uint8Array(e)}constructor({blockLength:e=0,error:t=Bn,warnings:n=[],valueBeforeDecode:i=B3}={}){this.blockLength=e,this.error=t,this.warnings=n,this.valueBeforeDecodeView=He.BufferSourceConverter.toUint8Array(i)}toJSON(){return{blockName:this.constructor.NAME,blockLength:this.blockLength,error:this.error,warnings:this.warnings,valueBeforeDecode:He.Convert.ToHex(this.valueBeforeDecodeView)}}};Us.NAME="baseBlock";var Ur=class extends Us{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'")}};Ur.NAME="valueBlock";var E3=class extends Xo(Us){constructor({idBlock:e={}}={}){var t,n,i,o;super(),e?(this.isHexOnly=(t=e.isHexOnly)!==null&&t!==void 0?t:!1,this.valueHexView=e.valueHex?He.BufferSourceConverter.toUint8Array(e.valueHex):B3,this.tagClass=(n=e.tagClass)!==null&&n!==void 0?n:-1,this.tagNumber=(i=e.tagNumber)!==null&&i!==void 0?i:-1,this.isConstructed=(o=e.isConstructed)!==null&&o!==void 0?o:!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",bo}if(this.isConstructed&&(t|=32),this.tagNumber<31&&!this.isHexOnly){let i=new Uint8Array(1);if(!e){let o=this.tagNumber;o&=31,t|=o,i[0]=t}return i.buffer}if(!this.isHexOnly){let i=za(this.tagNumber,7),o=new Uint8Array(i),s=i.byteLength,a=new Uint8Array(s+1);if(a[0]=t|31,!e){for(let c=0;c<s-1;c++)a[c+1]=o[c]|128;a[s]=o[s-1]}return a.buffer}let n=new Uint8Array(this.valueHexView.byteLength+1);if(n[0]=t|31,!e){let i=this.valueHexView;for(let o=0;o<i.length-1;o++)n[o+1]=i[o]|128;n[this.valueHexView.byteLength]=i[i.length-1]}return n.buffer}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;switch(o[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=(o[0]&32)===32,this.isHexOnly=!1;let a=o[0]&31;if(a!==31)this.tagNumber=a,this.blockLength=1;else{let c=1,l=this.valueHexView=new Uint8Array(255),u=255;for(;o[c]&128;){if(l[c-1]=o[c]&127,c++,c>=o.length)return this.error="End of input reached before message was fully decoded",-1;if(c===u){u+=255;let h=new Uint8Array(u);for(let d=0;d<l.length;d++)h[d]=l[d];l=this.valueHexView=new Uint8Array(u)}}this.blockLength=c+1,l[c-1]=o[c]&127;let f=new Uint8Array(c);for(let h=0;h<c;h++)f[h]=l[h];l=this.valueHexView=new Uint8Array(c),l.set(f),this.blockLength<=9?this.tagNumber=Il(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}}};E3.NAME="identificationBlock";var S3=class extends Us{constructor({lenBlock:e={}}={}){var t,n,i;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=(i=e.length)!==null&&i!==void 0?i:0}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(o.length===0)return this.error="Zero buffer length",-1;if(o[0]===255)return this.error="Length block 0xFF is reserved by standard",-1;if(this.isIndefiniteForm=o[0]===128,this.isIndefiniteForm)return this.blockLength=1,t+this.blockLength;if(this.longFormUsed=!!(o[0]&128),this.longFormUsed===!1)return this.length=o[0],this.blockLength=1,t+this.blockLength;let s=o[0]&127;if(s>8)return this.error="Too big integer",-1;if(s+1>o.length)return this.error="End of input reached before message was fully decoded",-1;let a=t+1,c=i.subarray(a,a+s);return c[s-1]===0&&this.warnings.push("Needlessly long encoded length"),this.length=Il(c,8),this.longFormUsed&&this.length<=127&&this.warnings.push("Unnecessary usage of long length form"),this.blockLength=s+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 i=za(this.length,8);if(i.byteLength>127)return this.error="Too big length",bo;if(t=new ArrayBuffer(i.byteLength+1),e)return t;let o=new Uint8Array(i);n=new Uint8Array(t),n[0]=i.byteLength|128;for(let s=0;s<i.byteLength;s++)n[s+1]=o[s];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}}};S3.NAME="lengthBlock";var ue={},dr=class extends Us{constructor({name:e=Bn,optional:t=!1,primitiveSchema:n,...i}={},o){super(i),this.name=e,this.optional=t,n&&(this.primitiveSchema=n),this.idBlock=new E3(i),this.lenBlock=new S3(i),this.valueBlock=o?new o(i):new Ur(i)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}toBER(e,t){let n=t||new id;t||vR(this);let i=this.idBlock.toBER(e);if(n.write(i),this.lenBlock.isIndefiniteForm)n.write(new Uint8Array([128]).buffer),this.valueBlock.toBER(e,n),n.write(new ArrayBuffer(2));else{let o=this.valueBlock.toBER(e);this.lenBlock.length=o.byteLength;let s=this.lenBlock.toBER(e);n.write(s),n.write(o)}return t?bo: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():He.Convert.ToHex(this.toBER())}onAsciiEncoding(){let e=this.constructor.NAME,t=He.Convert.ToHex(this.valueBlock.valueBeforeDecodeView);return`${e} : ${t}`}isEqual(e){if(this===e)return!0;if(!(e instanceof this.constructor))return!1;let t=this.toBER(),n=e.toBER();return mR(t,n)}};dr.NAME="BaseBlock";function vR(r){var e;if(r instanceof ue.Constructed)for(let t of r.valueBlock.value)vR(t)&&(r.lenBlock.isIndefiniteForm=!0);return!!(!((e=r.lenBlock)===null||e===void 0)&&e.isIndefiniteForm)}var Yp=class extends dr{getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}constructor({value:e=Bn,...t}={},n){super(t,n),e&&this.fromString(e)}fromBER(e,t,n){let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}onAsciiEncoding(){return`${this.constructor.NAME} : '${this.valueBlock.value}'`}};Yp.NAME="BaseStringBlock";var A3=class extends Xo(Ur){constructor({isHexOnly:e=!0,...t}={}){super(t),this.isHexOnly=e}};A3.NAME="PrimitiveValueBlock";var ER,Fs=class extends dr{constructor(e={}){super(e,A3),this.idBlock.isConstructed=!1}};ER=Fs;ue.Primitive=ER;Fs.NAME="PRIMITIVE";function SG(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 sd(r,e=0,t=r.length){let n=e,i=new dr({},Ur),o=new Us;if(!$s(o,r,e,t))return i.error=o.error,{offset:-1,result:i};if(!r.subarray(e,e+t).length)return i.error="Zero buffer length",{offset:-1,result:i};let a=i.idBlock.fromBER(r,e,t);if(i.idBlock.warnings.length&&i.warnings.concat(i.idBlock.warnings),a===-1)return i.error=i.idBlock.error,{offset:-1,result:i};if(e=a,t-=i.idBlock.blockLength,a=i.lenBlock.fromBER(r,e,t),i.lenBlock.warnings.length&&i.warnings.concat(i.lenBlock.warnings),a===-1)return i.error=i.lenBlock.error,{offset:-1,result:i};if(e=a,t-=i.lenBlock.blockLength,!i.idBlock.isConstructed&&i.lenBlock.isIndefiniteForm)return i.error="Indefinite length form used for primitive encoding form",{offset:-1,result:i};let c=dr;switch(i.idBlock.tagClass){case 1:if(i.idBlock.tagNumber>=37&&i.idBlock.isHexOnly===!1)return i.error="UNIVERSAL 37 and upper tags are reserved by ASN.1 standard",{offset:-1,result:i};switch(i.idBlock.tagNumber){case 0:if(i.idBlock.isConstructed&&i.lenBlock.length>0)return i.error="Type [UNIVERSAL 0] is reserved",{offset:-1,result:i};c=ue.EndOfContent;break;case 1:c=ue.Boolean;break;case 2:c=ue.Integer;break;case 3:c=ue.BitString;break;case 4:c=ue.OctetString;break;case 5:c=ue.Null;break;case 6:c=ue.ObjectIdentifier;break;case 10:c=ue.Enumerated;break;case 12:c=ue.Utf8String;break;case 13:c=ue.RelativeObjectIdentifier;break;case 14:c=ue.TIME;break;case 15:return i.error="[UNIVERSAL 15] is reserved by ASN.1 standard",{offset:-1,result:i};case 16:c=ue.Sequence;break;case 17:c=ue.Set;break;case 18:c=ue.NumericString;break;case 19:c=ue.PrintableString;break;case 20:c=ue.TeletexString;break;case 21:c=ue.VideotexString;break;case 22:c=ue.IA5String;break;case 23:c=ue.UTCTime;break;case 24:c=ue.GeneralizedTime;break;case 25:c=ue.GraphicString;break;case 26:c=ue.VisibleString;break;case 27:c=ue.GeneralString;break;case 28:c=ue.UniversalString;break;case 29:c=ue.CharacterString;break;case 30:c=ue.BmpString;break;case 31:c=ue.DATE;break;case 32:c=ue.TimeOfDay;break;case 33:c=ue.DateTime;break;case 34:c=ue.Duration;break;default:{let l=i.idBlock.isConstructed?new ue.Constructed:new ue.Primitive;l.idBlock=i.idBlock,l.lenBlock=i.lenBlock,l.warnings=i.warnings,i=l}}break;case 2:case 3:case 4:default:c=i.idBlock.isConstructed?ue.Constructed:ue.Primitive}return i=SG(i,c),a=i.fromBER(r,e,i.lenBlock.isIndefiniteForm?t:i.lenBlock.length),i.valueBeforeDecodeView=r.subarray(n,n+i.blockLength),{offset:a,result:i}}function fi(r){if(!r.byteLength){let e=new dr({},Ur);return e.error="Input buffer has zero length",{offset:-1,result:e}}return sd(He.BufferSourceConverter.toUint8Array(r).slice(),0,r.byteLength)}function AG(r,e){return r?1:e}var Wo=class extends Ur{constructor({value:e=[],isIndefiniteForm:t=!1,...n}={}){super(n),this.value=e,this.isIndefiniteForm=t}fromBER(e,t,n){let i=He.BufferSourceConverter.toUint8Array(e);if(!$s(this,i,t,n))return-1;if(this.valueBeforeDecodeView=i.subarray(t,t+n),this.valueBeforeDecodeView.length===0)return this.warnings.push("Zero buffer length"),t;let o=t;for(;AG(this.isIndefiniteForm,n)>0;){let s=sd(i,o,n);if(s.offset===-1)return this.error=s.result.error,this.warnings.concat(s.result.warnings),-1;if(o=s.offset,this.blockLength+=s.result.blockLength,n-=s.result.blockLength,this.value.push(s.result),this.isIndefiniteForm&&s.result.constructor.NAME===Xp)break}return this.isIndefiniteForm&&(this.value[this.value.length-1].constructor.NAME===Xp?this.value.pop():this.warnings.push("No EndOfContent block encoded")),o}toBER(e,t){let n=t||new id;for(let i=0;i<this.value.length;i++)this.value[i].toBER(e,n);return t?bo:n.final()}toJSON(){let e={...super.toJSON(),isIndefiniteForm:this.isIndefiniteForm,value:[]};for(let t of this.value)e.value.push(t.toJSON());return e}};Wo.NAME="ConstructedValueBlock";var SR,wr=class extends dr{constructor(e={}){super(e,Wo),this.idBlock.isConstructed=!0}fromBER(e,t,n){this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm;let i=this.valueBlock.fromBER(e,t,this.lenBlock.isIndefiniteForm?n:this.lenBlock.length);return i===-1?(this.error=this.valueBlock.error,i):(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),i)}onAsciiEncoding(){let e=[];for(let n of this.valueBlock.value)e.push(n.toString("ascii").split(`
15
15
  `).map(i=>` ${i}`).join(`
16
16
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
17
17
  ${e.join(`
@@ -79,8 +79,8 @@ ${[...t.errors.entries()].map(([o,s])=>`
79
79
  `),t),t.log.trace('handle: responded with "%s" for "%s"',i,i),{stream:n.unwrap(),protocol:i};if(i==="ls"){let o=new oe(...e.map(s=>Yi.single(O(`${s}
80
80
  `))),O(`
81
81
  `));t.log.trace('handle: respond with "%s" for %s',e,i),await Cu(n,o,t),t.log.trace('handle: responded with "%s" for %s',e,i);continue}t.log.trace('handle: respond with "na" for "%s"',i),await Cu(n,O(`na
82
- `),t),t.log('handle: responded with "na" for "%s"',i)}}var xQ=500,CE=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:i,close:o,abort:s,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.limits=e.limits,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=i,this._close=o,this._abort=s,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[wS]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new n0("the connection is being closed");if(this.status==="closed")throw new $u("the connection is closed");if(Array.isArray(e)||(e=[e]),this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new zu("Cannot open protocol stream on limited 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(xQ);e={...e,signal:t}}try{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.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this._abort(e),this.status="closed",this.timeline.close=Date.now())}};function TB(r){return new CE(r)}function vQ(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return _E}function EQ(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??IE}function CB(r,e,t){let n=0;return t.streams.forEach(i=>{i.direction===e&&i.protocol===r&&n++}),n}var e5=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(e,t){this.components=e,this.connectionEncrypters=new Map,t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=new Map,t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new N6(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=Ne([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,i=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=await this.components.connectionManager.acceptIncomingConnection(e),!n)throw new O6("Connection denied");await this.shouldBlockConnection("denyInboundConnection",e),await this._performUpgrade(e,"inbound",{...t,signal:i})}catch(o){throw this.metrics.errors?.increment({inbound:!0}),o}finally{i.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getPeerId(),i;n!=null&&(i=at(n),await this.shouldBlockConnection("denyOutboundConnection",i,e));let o="outbound";return t.initiator===!1&&(o="inbound"),await this._performUpgrade(e,o,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),n}}async _performUpgrade(e,t,n){let i,o,s,a,c;this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t);let l=e;if(n?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(e.log("protecting the %s connection",t),l=await u.protect(e,n))}try{if(i=l,n?.skipEncryption!==!0){n?.onProgress?.(new G(`upgrader:encrypt-${t}-connection`)),{conn:i,remotePeer:o,protocol:c,streamMuxer:a}=await(t==="inbound"?this._encryptInbound(l,n):this._encryptOutbound(l,n));let u={...l,...i};await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",o,u)}else{let u=e.remoteAddr.getPeerId();if(u==null)throw new sa(`${t} connection that skipped encryption must have a peer id`);let f=at(u);c="native",o=f}if(o.equals(this.components.peerId)){let u=new Vu("Can not dial self");throw e.abort(u),u}if(s=i,n?.muxerFactory!=null)a=n.muxerFactory;else if(a==null&&this.streamMuxers.size>0){n?.onProgress?.(new G(`upgrader:multiplex-${t}-connection`));let u=await(t==="inbound"?this._multiplexInbound({...l,...i},this.streamMuxers,n):this._multiplexOutbound({...l,...i},this.streamMuxers,n));a=u.muxerFactory,s=u.stream}}catch(u){throw e.log.error("failed to upgrade inbound connection %s %a - %e",t==="inbound"?"from":"to",e.remoteAddr,u),u}return await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",o,e),e.log("successfully upgraded %s connection",t),this._createConnection({cryptoProtocol:c,direction:t,maConn:e,upgradedConn:s,muxerFactory:a,remotePeer:o,limits:n?.limits})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:i,upgradedConn:o,remotePeer:s,muxerFactory:a,limits:c}=e,l,u,f;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:m=>{f!=null&&Promise.resolve().then(async()=>{let g=this.components.registrar.getProtocols(),w=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);let{stream:x,protocol:v}=await vm(m,g,{signal:w,log:m.log,yieldBytes:!1});if(f==null)return;f.log("incoming stream opened on %s",v);let b=vQ(v,this.components.registrar);if(CB(v,"inbound",f)===b){let T=new a0(`Too many inbound protocol streams for protocol "${v}" - limit ${b}`);throw m.abort(T),T}m.source=x.source,m.sink=x.sink,m.protocol=v,x.closeWrite!=null&&(m.closeWrite=x.closeWrite),x.closeRead!=null&&(m.closeRead=x.closeRead),x.close!=null&&(m.close=x.close),await this.components.peerStore.merge(s,{protocols:[v]}),this.components.metrics?.trackProtocolStream(m,f),this._onStream({connection:f,stream:m,protocol:v})}).catch(async g=>{f.log.error("error handling incoming stream id %s - %e",m.id,g),m.timeline.close==null&&await m.close()})}}),u=async(m,g={})=>{if(l==null)throw new _u("Connection is not multiplexed");f.log.trace("starting new stream for protocols %s",m);let w=await l.newStream();f.log.trace("started new stream %s for protocols %s",w.id,m);try{if(g.signal==null){w.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",m);let T=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);g={...g,signal:T}}w.log.trace("selecting protocol from protocols %s",m);let{stream:x,protocol:v}=await bm(w,m,{...g,log:w.log,yieldBytes:!0});w.log.trace("selected protocol %s",v);let b=EQ(v,this.components.registrar,g),S=CB(v,"outbound",f);if(S>=b){let T=new ca(`Too many outbound protocol streams for protocol "${v}" - ${S}/${b}`);throw w.abort(T),T}return await this.components.peerStore.merge(s,{protocols:[v]}),w.source=x.source,w.sink=x.sink,w.protocol=v,x.closeWrite!=null&&(w.closeWrite=x.closeWrite),x.closeRead!=null&&(w.closeRead=x.closeRead),x.close!=null&&(w.close=x.close),this.components.metrics?.trackProtocolStream(w,f),w}catch(x){throw f.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",e.maConn.remoteAddr,m,x),w.timeline.close==null&&w.abort(x),x}},Promise.all([l.sink(o.source),o.sink(l.source)]).catch(m=>{f.log.error("error piping data through muxer - %e",m)}));let h=i.timeline;i.timeline=new Proxy(h,{set:(...m)=>(m[1]==="close"&&m[2]!=null&&h.close==null&&(async()=>{try{f.status==="open"&&await f.close()}catch(g){f.log.error("error closing connection after timeline close %e",g)}finally{this.events.safeDispatchEvent("connection:close",{detail:f})}})().catch(g=>{f.log.error("error thrown while dispatching connection:close event %e",g)}),Reflect.set(...m))}),i.timeline.upgraded=Date.now();let d=()=>{throw new _u("Connection is not multiplexed")};return f=TB({remoteAddr:i.remoteAddr,remotePeer:s,status:"open",direction:n,timeline:i.timeline,multiplexer:l?.protocol,encryption:t,limits:c,logger:this.components.logger,newStream:u??d,getStreams:()=>l?.streams??[],close:async m=>{await l?.close(m),await i.close(m)},abort:m=>{i.abort(m),l?.abort(m)}}),this.events.safeDispatchEvent("connection:open",{detail:f}),f.__maConnTimeline=h,f}_onStream(e){let{connection:t,stream:n,protocol:i}=e,{handler:o,options:s}=this.components.registrar.getHandler(i);if(t.limits!=null&&s.runOnLimitedConnection!==!0)throw new zu("Cannot open protocol stream on limited connection");o({connection:t,stream:n})}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:i,protocol:o}=await vm(e,n,{...t,log:e.log}),s=this.connectionEncrypters.get(o);if(s==null)throw new Iu(`no crypto module found for ${o}`);return e.log("encrypting inbound connection to %a using %s",e.remoteAddr,o),{...await s.secureInbound(i,t),protocol:o}}catch(i){throw e.log.error("encrypting inbound connection from %a failed",e.remoteAddr,i),new Iu(i.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let{stream:i,protocol:o}=await bm(e,n,{...t,log:e.log,yieldBytes:!0}),s=this.connectionEncrypters.get(o);if(s==null)throw new Iu(`no crypto module found for ${o}`);return e.log("encrypting outbound connection to %a using %s",e.remoteAddr,o),{...await s.secureOutbound(i,t),protocol:o}}catch(i){throw e.log.error("encrypting outbound connection to %a failed",e.remoteAddr,i),new Iu(i.message)}}async _multiplexOutbound(e,t,n){let i=Array.from(t.keys());e.log("outbound selecting muxer %s",i);try{e.log.trace("selecting stream muxer from %s",i);let{stream:o,protocol:s}=await bm(e,i,{...n,log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let a=t.get(s);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new _u(String(o))}}async _multiplexInbound(e,t,n){let i=Array.from(t.keys());e.log("inbound handling muxers %s",i);try{let{stream:o,protocol:s}=await vm(e,i,{...n,log:e.log}),a=t.get(s);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new _u(String(o))}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};var t5=class extends Me{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Me,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),f=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||f},this.peerId=e.peerId,this.logger=e.logger??Ea(),this.log=this.logger.forComponent("libp2p"),this.services={};let i=e.nodeInfo?.name??f6,o=e.nodeInfo?.version??u6,s=this.components=aB({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:i,version:o,userAgent:e.nodeInfo?.userAgent??d6(i,o)},logger:this.logger,events:t,datastore:e.datastore??new xl,connectionGater:lB(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",eB(s,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),s.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(f=>f.multiaddr)};s.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(s)),this.components.upgrader=new e5(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout??e.connectionManager?.protocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout??e.connectionManager?.protocolNegotiationTimeout}),this.configureComponent("transportManager",new Y6(this.components,e.transportManager)),this.configureComponent("connectionManager",new K6(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new q6(this.components,e.connectionMonitor)),this.configureComponent("registrar",new X6(this.components)),this.configureComponent("addressManager",new A6(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new W6(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new j6(this.components,{routers:c})),this.configureComponent("randomWalk",new G6(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",h=>{this.#e(h)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],f=u(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=f,this.configureComponent(l,f),f[Do]!=null&&(this.log("registering service %s for content routing",l),c.push(f[Do])),f[No]!=null&&(this.log("registering service %s for peer routing",l),a.push(f[No])),f[_c]!=null&&(this.log("registering service %s for peer discovery",l),f[_c].addEventListener?.("peer",h=>{this.#e(h)}))}cB(s)}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 yn;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 U("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new U("no protocols were provided to open a 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={}){ka(e)&&(e=at(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.name!=="NotFoundError")throw s}let n=Ve([O("/pk/"),e.toMultihash().bytes]),i=await this.contentRouting.get(n,t),o=tr(i);return await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async i=>{await this.components.registrar.handle(i,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function r5(r={}){r.privateKey??=await hf("Ed25519");let e=new t5({...await KL(r),peerId:T_(r.privateKey)});return r.start!==!1&&await e.start(),e}async function kB(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await iE(r.datastore,r.keychain));let t=pm(e);return t.datastore=t.datastore??r.datastore,await r5({...t,...e,start:!1})}async function PB(r={}){let e=r.datastore??new xl,t=r.blockstore??new Rp,n;SQ(r.libp2p)?n=r.libp2p:n=await kB({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e});let i=new F2({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[Sp(),pp()],routers:r.routers??[Pp(n),kp()],metrics:n.metrics});return r.start!==!1&&await i.start(),i}function SQ(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}function RB(){let r=pm();r.start=!1,r.addresses={listen:[]},r.transports=[s6(),l6()],r.peerDiscovery=[];let e={dcutr:r.services.dcutr,identify:r.services.identify,keychain:r.services.keychain,ping:r.services.ping};return{...r,start:!1,services:e}}var Xd=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,NB=new Set,kE=typeof process=="object"&&process?process:{},OB=(r,e,t,n)=>{typeof kE.emitWarning=="function"?kE.emitWarning(r,e,t,n):console.error(`[${t}] ${e}: ${r}`)},n5=globalThis.AbortController,DB=globalThis.AbortSignal;if(typeof n5>"u"){DB=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,i){this._onabort.push(i)}},n5=class{constructor(){e()}signal=new DB;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let i of this.signal._onabort)i(n);this.signal.onabort?.(n)}}};let r=kE.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{r&&(r=!1,OB("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}var AQ=r=>!NB.has(r),pXe=Symbol("type"),yc=r=>r&&r===Math.floor(r)&&r>0&&isFinite(r),LB=r=>yc(r)?r<=Math.pow(2,8)?Uint8Array:r<=Math.pow(2,16)?Uint16Array:r<=Math.pow(2,32)?Uint32Array:r<=Number.MAX_SAFE_INTEGER?Yd:null:null,Yd=class extends Array{constructor(e){super(e),this.fill(0)}},PE=class r{heap;length;static#e=!1;static create(e){let t=LB(e);if(!t)return[];r.#e=!0;let n=new r(e,t);return r.#e=!1,n}constructor(e,t){if(!r.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},i5=class r{#e;#r;#n;#m;#u;#A;#y;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#a;#s;#c;#i;#t;#l;#w;#p;#f;#b;#d;#v;#E;#g;#x;#_;#h;#R;static unsafeExposeInternals(e){return{starts:e.#E,ttls:e.#g,sizes:e.#v,keyMap:e.#c,keyList:e.#i,valList:e.#t,next:e.#l,prev:e.#w,get head(){return e.#p},get tail(){return e.#f},free:e.#b,isBackgroundFetch:t=>e.#o(t),backgroundFetch:(t,n,i,o)=>e.#M(t,n,i,o),moveToTail:t=>e.#O(t),indexes:t=>e.#I(t),rindexes:t=>e.#T(t),isStale:t=>e.#S(t)}}get max(){return this.#e}get maxSize(){return this.#r}get calculatedSize(){return this.#s}get size(){return this.#a}get fetchMethod(){return this.#A}get memoMethod(){return this.#y}get dispose(){return this.#n}get onInsert(){return this.#m}get disposeAfter(){return this.#u}constructor(e){let{max:t=0,ttl:n,ttlResolution:i=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:c,dispose:l,onInsert:u,disposeAfter:f,noDisposeOnSet:h,noUpdateTTL:d,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:w,fetchMethod:x,memoMethod:v,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:T,allowStaleOnFetchAbort:D,ignoreFetchAbort:A}=e;if(t!==0&&!yc(t))throw new TypeError("max option must be a nonnegative integer");let I=t?LB(t):Array;if(!I)throw new Error("invalid max value: "+t);if(this.#e=t,this.#r=m,this.maxEntrySize=g||this.#r,this.sizeCalculation=w,this.sizeCalculation){if(!this.#r&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#y=v,x!==void 0&&typeof x!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#A=x,this.#_=!!x,this.#c=new Map,this.#i=new Array(t).fill(void 0),this.#t=new Array(t).fill(void 0),this.#l=new I(t),this.#w=new I(t),this.#p=0,this.#f=0,this.#b=PE.create(t),this.#a=0,this.#s=0,typeof l=="function"&&(this.#n=l),typeof u=="function"&&(this.#m=u),typeof f=="function"?(this.#u=f,this.#d=[]):(this.#u=void 0,this.#d=void 0),this.#x=!!this.#n,this.#R=!!this.#m,this.#h=!!this.#u,this.noDisposeOnSet=!!h,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!T,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!A,this.maxEntrySize!==0){if(this.#r!==0&&!yc(this.#r))throw new TypeError("maxSize must be a positive integer if specified");if(!yc(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#z()}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=yc(i)||i===0?i:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!yc(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#k()}if(this.#e===0&&this.ttl===0&&this.#r===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#r){let k="LRU_CACHE_UNBOUNDED";AQ(k)&&(NB.add(k),OB("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",k,r))}}getRemainingTTL(e){return this.#c.has(e)?1/0:0}#k(){let e=new Yd(this.#e),t=new Yd(this.#e);this.#g=e,this.#E=t,this.#U=(o,s,a=Xd.now())=>{if(t[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let c=setTimeout(()=>{this.#S(o)&&this.#C(this.#i[o],"expire")},s+1);c.unref&&c.unref()}},this.#D=o=>{t[o]=e[o]!==0?Xd.now():0},this.#P=(o,s)=>{if(e[s]){let a=e[s],c=t[s];if(!a||!c)return;o.ttl=a,o.start=c,o.now=n||i();let l=o.now-c;o.remainingTTL=a-l}};let n=0,i=()=>{let o=Xd.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#c.get(o);if(s===void 0)return 0;let a=e[s],c=t[s];if(!a||!c)return 1/0;let l=(n||i())-c;return a-l},this.#S=o=>{let s=t[o],a=e[o];return!!a&&!!s&&(n||i())-s>a}}#D=()=>{};#P=()=>{};#U=()=>{};#S=()=>!1;#z(){let e=new Yd(this.#e);this.#s=0,this.#v=e,this.#N=t=>{this.#s-=e[t],e[t]=0},this.#F=(t,n,i,o)=>{if(this.#o(n))return 0;if(!yc(i))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(i=o(n,t),!yc(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i},this.#L=(t,n,i)=>{if(e[t]=n,this.#r){let o=this.#r-e[t];for(;this.#s>o;)this.#B(!0)}this.#s+=e[t],i&&(i.entrySize=n,i.totalCalculatedSize=this.#s)}}#N=e=>{};#L=(e,t,n)=>{};#F=(e,t,n,i)=>{if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:e=this.allowStale}={}){if(this.#a)for(let t=this.#f;!(!this.#$(t)||((e||!this.#S(t))&&(yield t),t===this.#p));)t=this.#w[t]}*#T({allowStale:e=this.allowStale}={}){if(this.#a)for(let t=this.#p;!(!this.#$(t)||((e||!this.#S(t))&&(yield t),t===this.#f));)t=this.#l[t]}#$(e){return e!==void 0&&this.#c.get(this.#i[e])===e}*entries(){for(let e of this.#I())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#o(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*rentries(){for(let e of this.#T())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#o(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*keys(){for(let e of this.#I()){let t=this.#i[e];t!==void 0&&!this.#o(this.#t[e])&&(yield t)}}*rkeys(){for(let e of this.#T()){let t=this.#i[e];t!==void 0&&!this.#o(this.#t[e])&&(yield t)}}*values(){for(let e of this.#I())this.#t[e]!==void 0&&!this.#o(this.#t[e])&&(yield this.#t[e])}*rvalues(){for(let e of this.#T())this.#t[e]!==void 0&&!this.#o(this.#t[e])&&(yield this.#t[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let n of this.#I()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],t)}}forEach(e,t=this){for(let n of this.#I()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;o!==void 0&&e.call(t,o,this.#i[n],this)}}rforEach(e,t=this){for(let n of this.#T()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;o!==void 0&&e.call(t,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let t of this.#T({allowStale:!0}))this.#S(t)&&(this.#C(this.#i[t],"expire"),e=!0);return e}info(e){let t=this.#c.get(e);if(t===void 0)return;let n=this.#t[t],i=this.#o(n)?n.__staleWhileFetching:n;if(i===void 0)return;let o={value:i};if(this.#g&&this.#E){let s=this.#g[t],a=this.#E[t];if(s&&a){let c=s-(Xd.now()-a);o.ttl=c,o.start=Date.now()}}return this.#v&&(o.size=this.#v[t]),o}dump(){let e=[];for(let t of this.#I({allowStale:!0})){let n=this.#i[t],i=this.#t[t],o=this.#o(i)?i.__staleWhileFetching:i;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#g&&this.#E){s.ttl=this.#g[t];let a=Xd.now()-this.#E[t];s.start=Math.floor(Date.now()-a)}this.#v&&(s.size=this.#v[t]),e.unshift([n,s])}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let i=Date.now()-n.start;n.start=Xd.now()-i}this.set(t,n.value,n)}}set(e,t,n={}){if(t===void 0)return this.delete(e),this;let{ttl:i=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:c}=n,{noUpdateTTL:l=this.noUpdateTTL}=n,u=this.#F(e,t,n.size||0,a);if(this.maxEntrySize&&u>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.#C(e,"set"),this;let f=this.#a===0?void 0:this.#c.get(e);if(f===void 0)f=this.#a===0?this.#f:this.#b.length!==0?this.#b.pop():this.#a===this.#e?this.#B(!1):this.#a,this.#i[f]=e,this.#t[f]=t,this.#c.set(e,f),this.#l[this.#f]=f,this.#w[f]=this.#f,this.#f=f,this.#a++,this.#L(f,u,c),c&&(c.set="add"),l=!1,this.#R&&this.#m?.(t,e,"add");else{this.#O(f);let h=this.#t[f];if(t!==h){if(this.#_&&this.#o(h)){h.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:d}=h;d!==void 0&&!s&&(this.#x&&this.#n?.(d,e,"set"),this.#h&&this.#d?.push([d,e,"set"]))}else s||(this.#x&&this.#n?.(h,e,"set"),this.#h&&this.#d?.push([h,e,"set"]));if(this.#N(f),this.#L(f,u,c),this.#t[f]=t,c){c.set="replace";let d=h&&this.#o(h)?h.__staleWhileFetching:h;d!==void 0&&(c.oldValue=d)}}else c&&(c.set="update");this.#R&&this.onInsert?.(t,e,t===h?"update":"replace")}if(i!==0&&!this.#g&&this.#k(),this.#g&&(l||this.#U(f,i,o),c&&this.#P(c,f)),!s&&this.#h&&this.#d){let h=this.#d,d;for(;d=h?.shift();)this.#u?.(...d)}return this}pop(){try{for(;this.#a;){let e=this.#t[this.#p];if(this.#B(!0),this.#o(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#h&&this.#d){let e=this.#d,t;for(;t=e?.shift();)this.#u?.(...t)}}}#B(e){let t=this.#p,n=this.#i[t],i=this.#t[t];return this.#_&&this.#o(i)?i.__abortController.abort(new Error("evicted")):(this.#x||this.#h)&&(this.#x&&this.#n?.(i,n,"evict"),this.#h&&this.#d?.push([i,n,"evict"])),this.#N(t),e&&(this.#i[t]=void 0,this.#t[t]=void 0,this.#b.push(t)),this.#a===1?(this.#p=this.#f=0,this.#b.length=0):this.#p=this.#l[t],this.#c.delete(n),this.#a--,t}has(e,t={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:i}=t,o=this.#c.get(e);if(o!==void 0){let s=this.#t[o];if(this.#o(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#S(o))i&&(i.has="stale",this.#P(i,o));else return n&&this.#D(o),i&&(i.has="hit",this.#P(i,o)),!0}else i&&(i.has="miss");return!1}peek(e,t={}){let{allowStale:n=this.allowStale}=t,i=this.#c.get(e);if(i===void 0||!n&&this.#S(i))return;let o=this.#t[i];return this.#o(o)?o.__staleWhileFetching:o}#M(e,t,n,i){let o=t===void 0?void 0:this.#t[t];if(this.#o(o))return o;let s=new n5,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let c={signal:s.signal,options:n,context:i},l=(g,w=!1)=>{let{aborted:x}=s.signal,v=n.ignoreFetchAbort&&g!==void 0;if(n.status&&(x&&!w?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,v&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),x&&!v&&!w)return f(s.signal.reason);let b=d;return this.#t[t]===d&&(g===void 0?b.__staleWhileFetching?this.#t[t]=b.__staleWhileFetching:this.#C(e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(e,g,c.options))),g},u=g=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=g),f(g)),f=g=>{let{aborted:w}=s.signal,x=w&&n.allowStaleOnFetchAbort,v=x||n.allowStaleOnFetchRejection,b=v||n.noDeleteOnFetchRejection,S=d;if(this.#t[t]===d&&(!b||S.__staleWhileFetching===void 0?this.#C(e,"fetch"):x||(this.#t[t]=S.__staleWhileFetching)),v)return n.status&&S.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),S.__staleWhileFetching;if(S.__returned===S)throw g},h=(g,w)=>{let x=this.#A?.(e,o,c);x&&x instanceof Promise&&x.then(v=>g(v===void 0?void 0:v),w),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(g(void 0),n.allowStaleOnFetchAbort&&(g=v=>l(v,!0)))})};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(h).then(l,u),m=Object.assign(d,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,m,{...c.options,status:void 0}),t=this.#c.get(e)):this.#t[t]=m,m}#o(e){if(!this.#_)return!1;let t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof n5}async fetch(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:c=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:h=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:g,forceRefresh:w=!1,status:x,signal:v}=t;if(!this.#_)return x&&(x.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:o,status:x});let b={allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:c,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:h,allowStaleOnFetchAbort:m,ignoreFetchAbort:d,status:x,signal:v},S=this.#c.get(e);if(S===void 0){x&&(x.fetch="miss");let T=this.#M(e,S,b,g);return T.__returned=T}else{let T=this.#t[S];if(this.#o(T)){let Q=n&&T.__staleWhileFetching!==void 0;return x&&(x.fetch="inflight",Q&&(x.returnedStale=!0)),Q?T.__staleWhileFetching:T.__returned=T}let D=this.#S(S);if(!w&&!D)return x&&(x.fetch="hit"),this.#O(S),i&&this.#D(S),x&&this.#P(x,S),T;let A=this.#M(e,S,b,g),k=A.__staleWhileFetching!==void 0&&n;return x&&(x.fetch=D?"stale":"refresh",k&&D&&(x.returnedStale=!0)),k?A.__staleWhileFetching:A.__returned=A}}async forceFetch(e,t={}){let n=await this.fetch(e,t);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,t={}){let n=this.#y;if(!n)throw new Error("no memoMethod provided to constructor");let{context:i,forceRefresh:o,...s}=t,a=this.get(e,s);if(!o&&a!==void 0)return a;let c=n(e,a,{options:s,context:i});return this.set(e,c,s),c}get(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=t,a=this.#c.get(e);if(a!==void 0){let c=this.#t[a],l=this.#o(c);return s&&this.#P(s,a),this.#S(a)?(s&&(s.get="stale"),l?(s&&n&&c.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?c.__staleWhileFetching:void 0):(o||this.#C(e,"expire"),s&&n&&(s.returnedStale=!0),n?c:void 0)):(s&&(s.get="hit"),l?c.__staleWhileFetching:(this.#O(a),i&&this.#D(a),c))}else s&&(s.get="miss")}#H(e,t){this.#w[t]=e,this.#l[e]=t}#O(e){e!==this.#f&&(e===this.#p?this.#p=this.#l[e]:this.#H(this.#w[e],this.#l[e]),this.#H(this.#f,e),this.#f=e)}delete(e){return this.#C(e,"delete")}#C(e,t){let n=!1;if(this.#a!==0){let i=this.#c.get(e);if(i!==void 0)if(n=!0,this.#a===1)this.#V(t);else{this.#N(i);let o=this.#t[i];if(this.#o(o)?o.__abortController.abort(new Error("deleted")):(this.#x||this.#h)&&(this.#x&&this.#n?.(o,e,t),this.#h&&this.#d?.push([o,e,t])),this.#c.delete(e),this.#i[i]=void 0,this.#t[i]=void 0,i===this.#f)this.#f=this.#w[i];else if(i===this.#p)this.#p=this.#l[i];else{let s=this.#w[i];this.#l[s]=this.#l[i];let a=this.#l[i];this.#w[a]=this.#w[i]}this.#a--,this.#b.push(i)}}if(this.#h&&this.#d?.length){let i=this.#d,o;for(;o=i?.shift();)this.#u?.(...o)}return n}clear(){return this.#V("delete")}#V(e){for(let t of this.#T({allowStale:!0})){let n=this.#t[t];if(this.#o(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#i[t];this.#x&&this.#n?.(n,i,e),this.#h&&this.#d?.push([n,i,e])}}if(this.#c.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#g&&this.#E&&(this.#g.fill(0),this.#E.fill(0)),this.#v&&this.#v.fill(0),this.#p=0,this.#f=0,this.#b.length=0,this.#s=0,this.#a=0,this.#h&&this.#d){let t=this.#d,n;for(;n=t?.shift();)this.#u?.(...n)}}};var mi=class extends Error{static name="InvalidRangeError";constructor(e="Invalid range request"){super(e),this.name="InvalidRangeError"}},o5=class extends Error{static name="NoContentError";constructor(e="No content found"){super(e),this.name="NoContentError"}},s5=class extends Error{static name="SubdomainNotSupportedError";constructor(e="Subdomain not supported"){super(e),this.name="SubdomainNotSupportedError"}};function BB(r,e){if(r==null)return;if(r instanceof Headers)return r.get(e)??void 0;if(Array.isArray(r))return r.find(([i])=>i.toLowerCase()===e.toLowerCase())?.[1];let t=Object.keys(r).find(n=>n.toLowerCase()===e.toLowerCase());if(t!=null)return r[t]}function MB(r,e,t){if((r??0)>(e??1/0))throw new mi("Invalid range: Range-start index is greater than range-end index.");if(r!=null&&(e??0)>=(t??1/0))throw new mi("Invalid range: Range-end index is greater than or equal to the size of the file.");if(r==null&&(e??0)>(t??1/0))throw new mi("Invalid range: Range-end index is greater than the size of the file.");if(r!=null&&r<0)throw new mi("Invalid range: Range-start index cannot be negative.");if(r!=null&&e!=null)return{byteSize:e-r+1,start:r,end:e};if(r==null&&e!=null)return t==null?{end:e}:e===t?{byteSize:t,start:0,end:t-1}:{byteSize:e,start:t-e,end:t-1};if(r!=null&&e==null){if(t==null)return{start:r};let n=t-1;return{byteSize:t-r,start:r,end:n}}return{byteSize:t,start:0,end:t!=null?t-1:0}}function UB({ttl:r,protocol:e,response:t}){if(t.headers.has("cache-control"))return;let n;e==="ipfs"?n="public, max-age=29030400, immutable":r==null?n="public, max-age=300":n=`public, max-age=${r}`,t.headers.set("cache-control",n)}function FB({byteStart:r,byteEnd:e,byteSize:t}){let n=t??"*";if((e??0)>=(t??1/0))throw new mi("Invalid range: Range-end index is greater than or equal to the size of the file.");if((r??0)>=(t??1/0))throw new mi("Invalid range: Range-start index is greater than or equal to the size of the file.");if(r!=null&&e==null)return t==null?`bytes */${n}`:`bytes ${r}-${t-1}/${t}`;if(r==null&&e!=null){if(t==null)return`bytes */${n}`;let i=t-1;return`bytes ${i-e+1}-${i}/${t}`}return r==null&&e==null?`bytes */${n}`:`bytes ${r}-${e}/${n}`}function a5(r,e){e!=null&&r.headers.set("X-Ipfs-Roots",RE(e))}function RE(r){return r.map(e=>e.toV1().toString()).join(",")}function _Q(r){return typeof r=="string"?r.length:r instanceof ArrayBuffer||r instanceof Uint8Array?r.byteLength:r instanceof Blob?r.size:(r instanceof ReadableStream,null)}function IQ(r){let e=r.match(/^bytes=(?<start>\d+)?-(?<end>\d+)?$/);if(e?.groups==null)throw new mi("Invalid range request");let{start:t,end:n}=e.groups;return{start:t,end:n}}var c5=class{headers;isRangeRequest;_fileSize;_body=null;rangeRequestHeader;log;requestRangeStart;requestRangeEnd;byteStart;byteEnd;byteSize;constructor(e,t){if(this.headers=t,this.log=e.forComponent("helia:verified-fetch:byte-range-context"),this.rangeRequestHeader=BB(this.headers,"Range"),this.rangeRequestHeader!=null){this.isRangeRequest=!0,this.log.trace("range request detected");try{let{start:n,end:i}=IQ(this.rangeRequestHeader);this.requestRangeStart=n!=null?parseInt(n):null,this.requestRangeEnd=i!=null?parseInt(i):null}catch(n){this.log.error("error parsing range request header: %o",n),this.requestRangeStart=null,this.requestRangeEnd=null}this.setOffsetDetails()}else this.log.trace("no range request detected"),this.isRangeRequest=!1,this.requestRangeStart=null,this.requestRangeEnd=null}setBody(e){this._body=e,this.setFileSize(this._fileSize??_Q(e)),this.log.trace("set request body with fileSize %o",this._fileSize)}getBody(){let e=this._body;if(e==null)return this.log.trace("body is null"),e;if(!this.isRangeRequest||!this.isValidRangeRequest)return this.log.trace("returning body unmodified for non-range, or invalid range, request"),e;let t=this.byteStart,n=this.byteEnd,i=this.byteSize;return t!=null||n!=null?(this.log.trace("returning body with byteStart=%o, byteEnd=%o, byteSize=%o",t,n,i),e instanceof ReadableStream?e:this.getSlicedBody(e)):(this.log.error("returning unmodified body for valid range request"),e)}getSlicedBody(e){let t=this.byteStart??0,n;return this.byteEnd!=null&&this.byteStart!=null?n=this.byteEnd-this.byteStart+1:n=void 0,this.log.trace("slicing body with offset=%o and length=%o",t,n),typeof e=="string"||e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?e.slice(t,n!==void 0?t+n:void 0):e}setFileSize(e){this._fileSize=e!=null?Number(e):null,this.log.trace("set _fileSize to %o",this._fileSize),this.setOffsetDetails()}getFileSize(){return this._fileSize}isValidByteStart(){return!(this.byteStart!=null&&(this.byteStart<0||this._fileSize!=null&&this.byteStart>=this._fileSize||this.byteEnd!=null&&this.byteStart>this.byteEnd))}isValidByteEnd(){return!(this.byteEnd!=null&&(this.byteEnd<0||this._fileSize!=null&&this.byteEnd>=this._fileSize||this.byteStart!=null&&this.byteEnd<this.byteStart))}get isValidRangeRequest(){if(!this.isRangeRequest)return!1;if(this.requestRangeStart==null&&this.requestRangeEnd==null)return this.log.trace("invalid range request, range request values not provided"),!1;if(!this.isValidByteStart())return this.log.trace("invalid range request, byteStart is less than 0 or greater than fileSize"),!1;if(!this.isValidByteEnd())return this.log.trace("invalid range request, byteEnd is less than 0 or greater than fileSize"),!1;if(this.requestRangeEnd!=null&&this.requestRangeStart!=null){if(this.requestRangeStart>this.requestRangeEnd)return this.log.trace("invalid range request, start is greater than end"),!1;if(this.requestRangeStart<0)return this.log.trace("invalid range request, start is less than 0"),!1;if(this.requestRangeEnd<0)return this.log.trace("invalid range request, end is less than 0"),!1}return this.byteEnd==null&&this.byteStart==null&&this.byteSize==null?(this.log.trace("invalid range request, could not calculate byteStart, byteEnd, or byteSize"),!1):!0}get offset(){return this.byteStart??0}get length(){return this.byteEnd!=null&&this.byteStart!=null?this.byteEnd-this.byteStart+1:this.byteEnd!=null?this.byteEnd+1:this.byteSize}setOffsetDetails(){if(this.requestRangeStart==null&&this.requestRangeEnd==null){this.log.trace("requestRangeStart and requestRangeEnd are null");return}try{let{start:e,end:t,byteSize:n}=MB(this.requestRangeStart??void 0,this.requestRangeEnd??void 0,this._fileSize??void 0);this.log.trace("set byteStart to %o, byteEnd to %o, byteSize to %o",e,t,n),this.byteStart=e,this.byteEnd=t,this.byteSize=n}catch(e){this.log.error("error setting offset details: %o",e),this.byteStart=void 0,this.byteEnd=void 0,this.byteSize=void 0}}get contentRangeHeaderValue(){if(!this.isValidRangeRequest)throw this.log.error("cannot get contentRangeHeaderValue for invalid range request"),new mi("Invalid range request");return FB({byteStart:this.byteStart,byteEnd:this.byteEnd,byteSize:this._fileSize??void 0})}};var Mt=class{codes=[];log;pluginOptions;constructor(e){let t=this.constructor.name.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();this.log=e.logger.forComponent(t),this.pluginOptions=e}canHandle(e){throw new Error("Not implemented")}async handle(e){throw new Error("Not implemented")}};var l5=class extends Mt{canHandle(e){return e.byteRangeContext==null}async handle(e){return e.byteRangeContext=new c5(this.pluginOptions.logger,e.options?.headers),e.modified++,null}};var OE=it(u5(),1);var LE=40;function BE(r,e){if(!r.length)throw new Error("Unexpected end of data");let t=OE.default.decode(r);return e.seek(OE.default.decode.bytes),t}function ME(r){let e=new DataView(r.buffer,r.byteOffset,r.byteLength),t=0;return{version:2,characteristics:[e.getBigUint64(t,!0),e.getBigUint64(t+=8,!0)],dataOffset:Number(e.getBigUint64(t+=8,!0)),dataSize:Number(e.getBigUint64(t+=8,!0)),indexOffset:Number(e.getBigUint64(t+=8,!0))}}var wc={Null:r=>r===null?r:void 0,Int:r=>Number.isInteger(r)?r:void 0,Float:r=>typeof r=="number"&&Number.isFinite(r)?r:void 0,String:r=>typeof r=="string"?r:void 0,Bool:r=>typeof r=="boolean"?r:void 0,Bytes:r=>r instanceof Uint8Array?r:void 0,Link:r=>r!==null&&typeof r=="object"&&r.asCID===r?r:void 0,List:r=>Array.isArray(r)?r:void 0,Map:r=>r!==null&&typeof r=="object"&&r.asCID!==r&&!Array.isArray(r)&&!(r instanceof Uint8Array)?r:void 0},Em={"CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)":wc.Link,"CarV1HeaderOrV2Pragma > roots (anon)":r=>{if(wc.List(r)!==void 0){for(let e=0;e<r.length;e++){let t=r[e];if(t=Em["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](t),t===void 0)return;if(t!==r[e]){let n=r.slice(0,e);for(let i=e;i<r.length;i++){let o=r[i];if(o=Em["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](o),o===void 0)return;n.push(o)}return n}}return r}},Int:wc.Int,CarV1HeaderOrV2Pragma:r=>{if(wc.Map(r)===void 0)return;let e=Object.entries(r),t=r,n=1;for(let i=0;i<e.length;i++){let[o,s]=e[i];switch(o){case"roots":{let a=Em["CarV1HeaderOrV2Pragma > roots (anon)"](r[o]);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.roots=a}}break;case"version":{n--;let a=Em.Int(r[o]);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.version=a}}break;default:return}}if(!(n>0))return t}},Sm={"CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)":wc.Link,"CarV1HeaderOrV2Pragma > roots (anon)":r=>{if(wc.List(r)!==void 0){for(let e=0;e<r.length;e++){let t=r[e];if(t=Sm["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](t),t===void 0)return;if(t!==r[e]){let n=r.slice(0,e);for(let i=e;i<r.length;i++){let o=r[i];if(o=Sm["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](o),o===void 0)return;n.push(o)}return n}}return r}},Int:wc.Int,CarV1HeaderOrV2Pragma:r=>{if(wc.Map(r)===void 0)return;let e=Object.entries(r),t=r,n=1;for(let i=0;i<e.length;i++){let[o,s]=e[i];switch(o){case"roots":{let a=Sm["CarV1HeaderOrV2Pragma > roots (anon)"](s);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.roots=a}}break;case"version":{n--;let a=Sm.Int(s);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.version=a}}break;default:return}}if(!(n>0))return t}},UE={toTyped:Em.CarV1HeaderOrV2Pragma,toRepresentation:Sm.CarV1HeaderOrV2Pragma};var zXe=_7();var zQ=it(u5(),1);var GXe=[new Y(_.map,2),new Y(_.string,"version"),new Y(_.uint,1),new Y(_.string,"roots")],XXe=new Y(_.tag,42);async function FE(r,e){let t=BE(await r.upTo(8),r);if(t===0)throw new Error("Invalid CAR header (zero length)");let n=await r.exactly(t,!0),i=Ta(n);if(UE.toTyped(i)===void 0)throw new Error("Invalid CAR header format");if(i.version!==1&&i.version!==2||e!==void 0&&i.version!==e)throw new Error(`Invalid CAR version: ${i.version}${e!==void 0?` (expected ${e})`:""}`);if(i.version===1){if(!Array.isArray(i.roots))throw new Error("Invalid CAR header format");return i}if(i.roots!==void 0)throw new Error("Invalid CAR header format");let o=ME(await r.exactly(LE,!0));r.seek(o.dataOffset-r.pos);let s=await FE(r,1);return Object.assign(s,o)}function Am(r){let e=0;return{async upTo(t){return r.subarray(e,e+Math.min(t,r.length-e))},async exactly(t,n=!1){if(t>r.length-e)throw new Error("Unexpected end of data");let i=r.subarray(e,e+t);return n&&(e+=t),i},seek(t){e+=t},get pos(){return e}}}var $E=it(u5(),1),QB=1;function HE(r){let e=Sf({version:QB,roots:r}),t=$E.default.encode(e.length),n=new Uint8Array(t.length+e.length);return n.set(t,0),n.set(e,t.length),n}function ZB(r){return{async setRoots(e){let t=HE(e);await r.write(t)},async writeBlock(e){let{cid:t,bytes:n}=e;await r.write(new Uint8Array($E.default.encode(t.bytes.length+n.length))),await r.write(t.bytes),n.length&&await r.write(n)},async close(){await r.end()},version(){return QB}}}function f5(){}function JB(){let r=[],e=null,t=f5,n=!1,i=null,o=f5,s=()=>(e||(e=new Promise(l=>{t=()=>{e=null,t=f5,l()}})),e),a={write(l){r.push(l);let u=s();return o(),u},async end(){n=!0;let l=s();o(),await l}},c={async next(){let l=r.shift();return l?(r.length===0&&t(),{done:!1,value:l}):n?(t(),{done:!0,value:void 0}):(i||(i=new Promise(u=>{o=()=>(i=null,o=f5,u(c.next()))})),i)}};return{writer:a,iterator:c}}var _m=class r{constructor(e,t){this._encoder=t,this._mutex=t.setRoots(e),this._ended=!1}async put(e){if(!(e.bytes instanceof Uint8Array)||!e.cid)throw new TypeError("Can only write {cid, bytes} objects");if(this._ended)throw new Error("Already closed");let t=W.asCID(e.cid);if(!t)throw new TypeError("Can only write {cid, bytes} objects");return this._mutex=this._mutex.then(()=>this._encoder.writeBlock({cid:t,bytes:e.bytes})),this._mutex}async close(){if(this._ended)throw new Error("Already closed");return await this._mutex,this._ended=!0,this._encoder.close()}version(){return this._encoder.version()}static create(e){e=WQ(e);let{encoder:t,iterator:n}=eM(),i=new r(e,t),o=new d5(n);return{writer:i,out:o}}static createAppender(){let{encoder:e,iterator:t}=eM();e.setRoots=()=>Promise.resolve();let n=new r([],e),i=new d5(t);return{writer:n,out:i}}static async updateRootsInBytes(e,t){let n=Am(e);await FE(n);let i=HE(t);if(Number(n.pos)!==i.length)throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${n.pos} bytes, new header is ${i.length} bytes)`);return e.set(i,0),e}},d5=class{constructor(e){this._iterator=e}[Symbol.asyncIterator](){if(this._iterating)throw new Error("Multiple iterator not supported");return this._iterating=!0,this._iterator}};function eM(){let r=JB(),{writer:e,iterator:t}=r;return{encoder:ZB(e),iterator:t}}function WQ(r){if(r===void 0)return[];if(!Array.isArray(r)){let t=W.asCID(r);if(!t)throw new TypeError("roots must be a single CID or an array of CIDs");return[t]}let e=[];for(let t of r){let n=W.asCID(t);if(!n)throw new TypeError("roots must be a single CID or an array of CIDs");e.push(n)}return e}var GQ=1,VE=class{components;constructor(e,t){this.components=e}async import(e,t){await Sr(this.components.blockstore.putMany(Nt(e.blocks(),({cid:n,bytes:i})=>({cid:n,block:i})),t))}async export(e,t,n){let i=ye(),o=Array.isArray(e)?e:[e],s=new kn({concurrency:GQ});s.on("idle",()=>{i.resolve()}),s.on("error",a=>{s.clear(),i.reject(a)});for(let a of o)s.add(async()=>{await this.#e(a,s,async(c,l)=>{n?.blockFilter?.has(c.multihash.bytes)!==!0&&(n?.blockFilter?.add(c.multihash.bytes),await t.put({cid:c,bytes:l}))},n)}).catch(()=>{});try{await i.promise}finally{await t.close()}}async*stream(e,t){let{writer:n,out:i}=_m.create(e);this.export(e,n,t).catch(()=>{});for await(let o of i)yield o}async#e(e,t,n,i){let o=await this.components.getCodec(e.code),s=await this.components.blockstore.get(e,i);await n(e,s);let a=Eg({bytes:s,cid:e,codec:o});for await(let[,c]of a.links())t.add(async()=>{await this.#e(c,t,n,i)})}};function tM(r,e={}){return new VE(r,e)}function Im(r,e={}){let t=Hf(r),n={_cancelled:!1,async start(){this._cancelled=!1},async pull(i){try{let{value:o,done:s}=await t.next();if(this._cancelled)return;if(s===!0){i.close();return}i.enqueue(o)}catch(o){i.error(o)}},cancel(){this._cancelled=!0}};return new globalThis.ReadableStream(n,e)}function zE(r,e,t){Object.defineProperty(r,e,{enumerable:!0,configurable:!1,set:()=>{},get:()=>t})}function Js(r,e){zE(r,"type",e)}function ea(r,e){zE(r,"url",e)}function rM(r){zE(r,"redirected",!0)}function XQ(r,e,t){let n=new Response(e,{...t??{},status:200,statusText:"OK"});return t?.redirected===!0&&rM(n),Js(n,"basic"),ea(n,r),n}function Qd(r,e,t){let n=new Response(e,{...t??{},status:502,statusText:"Bad Gateway"});return Js(n,"basic"),ea(n,r),n}function p5(r,e,t){let n=new Response(e,{...t??{},status:501,statusText:"Not Implemented"});return n.headers.set("X-Content-Type-Options","nosniff"),Js(n,"basic"),ea(n,r),n}function ta(r,e,t){let n=new Response(e,{...t??{},status:406,statusText:"Not Acceptable"});return Js(n,"basic"),ea(n,r),n}function m5(r,e,t){let n=new Response(e,{...t??{},status:404,statusText:"Not Found"});return Js(n,"basic"),ea(n,r),n}function YQ(r){return Array.isArray(r)&&r.every(e=>e instanceof Error)}function Tm(r,e,t){let n,i;YQ(e)?(n=e[e.length-1].stack,i=e.map(a=>({message:a.message,stack:a.stack??""}))):e instanceof Error&&(n=e.stack,i=[{message:e.message,stack:e.stack??""}]);let o=JSON.stringify({stack:n,errors:i}),s=new Response(o,{status:400,statusText:"Bad Request",...t??{},headers:{...t?.headers??{},"Content-Type":"application/json"}});return Js(s,"basic"),ea(s,r),s}function Cm(r,e,t){let n=new Response(null,{...t??{},status:301,statusText:"Moved Permanently",headers:{...t?.headers??{},location:e}});return Js(n,"basic"),ea(n,r),n}function cn(r,e,{byteRangeContext:t,log:n},i){if(!t.isRangeRequest)return XQ(r,e,i);if(!t.isValidRangeRequest)return h5(r,e,i);let o;try{o=new Response(e,{...i??{},status:206,statusText:"Partial Content",headers:{...i?.headers??{},"content-range":t.contentRangeHeaderValue}})}catch(s){return n?.error("failed to create range response",s),h5(r,e,i)}return i?.redirected===!0&&rM(o),Js(o,"basic"),ea(o,r),o}function h5(r,e,t){let n=new Response(e,{...t??{},status:416,statusText:"Requested Range Not Satisfiable"});return Js(n,"basic"),ea(n,r),n}function QQ({cid:r,ipfsPath:e,query:t}){return t.filename!=null?t.filename:`${e.replace(/\/ipfs\//,"").replace(/\/ipns\//,"").replace(/\//g,"_")}.car`}var g5=class extends Mt{canHandle(e){return this.log("checking if we can handle %c with accept %s",e.cid,e.accept),e.byteRangeContext==null?!1:e.accept?.startsWith("application/vnd.ipld.car")===!0||e.query.format==="car"}async handle(e){let{options:t,pathDetails:n,cid:i}=e,{getBlockstore:o,helia:s}=this.pluginOptions;e.reqFormat="car",e.query.download=!0,e.query.filename=QQ(e);let a=o(i,e.resource,t?.session??!0,t),c=tM({blockstore:a,getCodec:s.getCodec}),l=Im(c.stream(n?.terminalElement.cid??i,t));e.byteRangeContext.setBody(l);let u=cn(e.resource,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return u.headers.set("content-type","application/vnd.ipld.car; version=1"),u}};function nM(r){let e=xn(r,{allowIndefinite:!1,coerceUndefinedToNull:!1,allowNaN:!1,allowInfinity:!1,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,allowBigInt:!1});return new TextDecoder().decode(dp(e))}var Io=class extends Error{name;code;constructor(e,t,n){super(e),this.name=t,this.code=n}},gi=class extends Io{constructor(e="not a Unixfs node"){super(e,"NotUnixFSError","ERR_NOT_UNIXFS")}},Gn=class extends Io{constructor(e="invalid PBNode"){super(e,"InvalidPBNodeError","ERR_INVALID_PB_NODE")}},xc=class extends Io{constructor(e="unknown error"){super(e,"InvalidPBNodeError","ERR_UNKNOWN_ERROR")}},km=class extends Io{constructor(e="path already exists"){super(e,"AlreadyExistsError","ERR_ALREADY_EXISTS")}},Zd=class extends Io{constructor(e="path does not exist"){super(e,"DoesNotExistError","ERR_DOES_NOT_EXIST")}},Jd=class extends Io{constructor(e="no content"){super(e,"NoContentError","ERR_NO_CONTENT")}},y5=class extends Io{constructor(e="not a file"){super(e,"NotAFileError","ERR_NOT_A_FILE")}},bc=class extends Io{constructor(e="not a directory"){super(e,"NotADirectoryError","ERR_NOT_A_DIRECTORY")}},br=class extends Io{constructor(e="invalid parameters"){super(e,"InvalidParametersError","ERR_INVALID_PARAMETERS")}};function ZQ(r){return r[Symbol.asyncIterator]!=null}function JQ(r){if(ZQ(r))return(async()=>{let t;for await(let n of r)t=n;return t})();let e;for(let t of r)e=t;return e}var To=JQ;var w5=class r extends Error{static name="BadPathError";static code="ERR_BAD_PATH";name=r.name;code=r.code;constructor(e="Bad path"){super(e)}},Wi=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not found"){super(e)}},x5=class r extends Error{static name="NoResolverError";static code="ERR_NO_RESOLVER";name=r.name;code=r.code;constructor(e="No resolver"){super(e)}},vr=class r extends Error{static name="NotUnixFSError";static code="ERR_NOT_UNIXFS";name=r.name;code=r.code;constructor(e="Not UnixFS"){super(e)}},b5=class r extends Error{static name="OverReadError";static code="ERR_OVER_READ";name=r.name;code=r.code;constructor(e="Over read"){super(e)}},v5=class r extends Error{static name="UnderReadError";static code="ERR_UNDER_READ";name=r.name;code=r.code;constructor(e="Under read"){super(e)}},E5=class r extends Error{static name="NoPropError";static code="ERR_NO_PROP";name=r.name;code=r.code;constructor(e="No Property found"){super(e)}},ku=class r extends Error{static name="InvalidParametersError";static code="ERR_INVALID_PARAMS";name=r.name;code=r.code;constructor(e="Invalid parameters"){super(e)}};function eh(r,e,t,n,i,o,s){let a=r,c=i;for(;o.length>0;){let l=o[0];if(l in a){o.shift(),c=`${c}/${l}`;let u=W.asCID(a[l]);if(u!=null)return{entry:{type:"object",name:n,path:i,cid:t,node:e,depth:s,size:BigInt(e.length),content:async function*(){yield r}},next:{cid:u,name:l,path:c,toResolve:o}};a=a[l]}else throw new E5(`No property named ${l} found in node ${t}`)}return{entry:{type:"object",name:n,path:i,cid:t,node:e,depth:s,size:BigInt(e.length),content:async function*(){yield r}}}}var eZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=Ta(c);return eh(l,c,r,e,t,n,o)},iM=eZ;var tZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=_f(c);return eh(l,c,r,e,t,n,o)},oM=tZ;function rZ(r,e,t,n){let i=BigInt(r.length),o=BigInt(e+i);return t>=o||n<e?new Uint8Array(0):(n>=e&&n<o&&(r=r.subarray(0,Number(n-e))),t>=e&&t<o&&(r=r.subarray(Number(t-e))),r)}var Pu=rZ;var nZ=(r,e=0,t=r)=>{let n=BigInt(r),i=BigInt(e??0),o=BigInt(t);if(o!==n&&(o=i+o),o>n&&(o=n),i<0n)throw new ku("Offset must be greater than or equal to 0");if(i>n)throw new ku("Offset must be less than the file size");if(o<0n)throw new ku("Length must be greater than or equal to 0");if(o>n)throw new ku("Length must be less than the file size");return{start:i,end:o}},th=nZ;var iZ=r=>{async function*e(t={}){let{start:n,end:i}=th(r.length,t.offset,t.length),o=Pu(r,0n,n,i);t.onProgress?.(new G("unixfs:exporter:progress:identity",{bytesRead:BigInt(o.byteLength),totalBytes:i-n,fileSize:BigInt(r.byteLength)})),yield o}return e},oZ=async(r,e,t,n,i,o,s,a)=>{if(n.length>0)throw new Wi(`No link named ${t} found in raw node ${r}`);let c=Ue(r.multihash.bytes);return{entry:{type:"identity",name:e,path:t,cid:r,content:iZ(c.digest),depth:o,size:BigInt(c.digest.length),node:c.digest}}},sM=oZ;var sZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=Y8(c);return eh(l,c,r,e,t,n,o)},aM=sZ;var aZ=r=>{async function*e(t={}){let{start:n,end:i}=th(r.length,t.offset,t.length),o=Pu(r,0n,n,i);t.onProgress?.(new G("unixfs:exporter:progress:raw",{bytesRead:BigInt(o.byteLength),totalBytes:i-n,fileSize:BigInt(r.byteLength)})),yield o}return e},cZ=async(r,e,t,n,i,o,s,a)=>{if(n.length>0)throw new Wi(`No link named ${t} found in raw node ${r}`);let c=await s.get(r,a);return{entry:{type:"raw",name:e,path:t,cid:r,content:aZ(c),depth:o,size:BigInt(c.length),node:c}}},cM=cZ;var Pm=class r extends Error{static name="InvalidTypeError";static code="ERR_INVALID_TYPE";name=r.name;code=r.code;constructor(e="Invalid type"){super(e)}};var Co;(function(r){let e;(function(i){i.Raw="Raw",i.Directory="Directory",i.File="File",i.Metadata="Metadata",i.Symlink="Symlink",i.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(i){i[i.Raw=0]="Raw",i[i.Directory=1]="Directory",i[i.File=2]="File",i[i.Metadata=3]="Metadata",i[i.Symlink=4]="Symlink",i[i.HAMTShard=5]="HAMTShard"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),i.Type!=null&&(o.uint32(8),r.DataType.codec().encode(i.Type,o)),i.Data!=null&&(o.uint32(18),o.bytes(i.Data)),i.filesize!=null&&(o.uint32(24),o.uint64(i.filesize)),i.blocksizes!=null)for(let a of i.blocksizes)o.uint32(32),o.uint64(a);i.hashType!=null&&(o.uint32(40),o.uint64(i.hashType)),i.fanout!=null&&(o.uint32(48),o.uint64(i.fanout)),i.mode!=null&&(o.uint32(56),o.uint32(i.mode)),i.mtime!=null&&(o.uint32(66),S5.codec().encode(i.mtime,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o)=>{let s={blocksizes:[]},a=o==null?i.len:i.pos+o;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:s.Type=r.DataType.codec().decode(i);break;case 2:s.Data=i.bytes();break;case 3:s.filesize=i.uint64();break;case 4:s.blocksizes.push(i.uint64());break;case 5:s.hashType=i.uint64();break;case 6:s.fanout=i.uint64();break;case 7:s.mode=i.uint32();break;case 8:s.mtime=S5.codec().decode(i,i.uint32());break;default:i.skipType(c&7);break}}return s})),n),r.encode=i=>ve(i,r.codec()),r.decode=i=>be(i,r.codec())})(Co||(Co={}));var S5;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Seconds!=null&&(n.uint32(8),n.int64(t.Seconds)),t.FractionalNanoseconds!=null&&(n.uint32(21),n.fixed32(t.FractionalNanoseconds)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let s=t.uint32();switch(s>>>3){case 1:i.Seconds=t.int64();break;case 2:i.FractionalNanoseconds=t.fixed32();break;default:t.skipType(s&7);break}}return i})),e),r.encode=t=>ve(t,r.codec()),r.decode=t=>be(t,r.codec())})(S5||(S5={}));var lM;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.MimeType!=null&&(n.uint32(10),n.string(t.MimeType)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let s=t.uint32();switch(s>>>3){case 1:i.MimeType=t.string();break;default:t.skipType(s&7);break}}return i})),e),r.encode=t=>ve(t,r.codec()),r.decode=t=>be(t,r.codec())})(lM||(lM={}));var uM={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},lZ=["directory","hamt-sharded-directory"],fM=parseInt("0644",8),dM=parseInt("0755",8),Te=class r{static unmarshal(e){let t=Co.decode(e),n=new r({type:uM[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}type;data;blockSizes;hashType;fanout;mtime;_mode;_originalMode;constructor(e={type:"file"}){let{type:t,data:n,blockSizes:i,hashType:o,fanout:s,mtime:a,mode:c}=e;if(t!=null&&!Object.values(uM).includes(t))throw new Pm("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=o,this.fanout=s,this.blockSizes=i??[],this._originalMode=0,this.mode=c,this.mtime=a}set mode(e){e==null?this._mode=this.isDirectory()?dM:fM:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return lZ.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=Co.DataType.Raw;break;case"directory":e=Co.DataType.Directory;break;case"file":e=Co.DataType.File;break;case"metadata":e=Co.DataType.Metadata;break;case"symlink":e=Co.DataType.Symlink;break;case"hamt-sharded-directory":e=Co.DataType.HAMTShard;break;default:throw new Pm(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===fM&&!this.isDirectory()&&(n=void 0),n===dM&&this.isDirectory()&&(n=void 0));let i;return this.mtime!=null&&(i={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),Co.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:i})}};var _5=it(mM(),1);function uZ(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var kQe=Oc({name:"murmur3-32",code:35,encode:r=>uZ(_5.default.x86.hash32(r))}),Ru=Oc({name:"murmur3-128",code:34,encode:r=>Rc.fromHex(_5.default.x64.hash128(r))}),PQe=Oc({name:"murmur3-x64-64",code:34,encode:r=>Rc.fromHex(_5.default.x64.hash128(r)).subarray(0,8)});var wM=it(I5(),1);var yi=class r{_options;_popCount;_parent;_posAtParent;_children;key;constructor(e,t,n=0){this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new wM.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((i,o,s)=>(o!=null&&(o instanceof r?i.push(o.serialize(e,t)):i.push(e(o,s))),i),n))}async asyncTransform(e,t){return xM(this,e,t)}toJSON(){return this.serialize(mZ,gZ)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?O(e):e),n=await t.take(this._options.bits),i=this._children.get(n);return i instanceof r?i._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:i}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let i=await n._findPlace(t.existingChild.hash);return i.bucket._putAt(i,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(pZ);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}};function pZ(r){return!!r}function mZ(r,e){return r.key}function gZ(r){return r}async function xM(r,e,t){let n=[];for(let i of r._children.compactArray())if(i instanceof yi)await xM(i,e,t);else{let o=await e(i);n.push({bitField:r._children.bitField(),children:o})}return t(n)}var yZ=[255,254,252,248,240,224,192,128],wZ=[1,3,7,15,31,63,127,255],T5=class{_value;_currentBytePos;_currentBitPos;constructor(e){this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let i=this._value[this._currentBytePos],o=this._currentBitPos+1,s=Math.min(o,t),a=xZ(i,o-s,s);n=(n<<s)+a,t-=s,this._currentBitPos-=s,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}};function xZ(r,e,t){let n=bZ(e,t);return(r&n)>>>e}function bZ(r,e){return yZ[r]&wZ[Math.min(e+r-1,7)]}function bM(r){function e(t){return t instanceof C5?t:new C5(t,r)}return e}var C5=class{_value;_hashFn;_depth;_availableBits;_currentBufferIndex;_buffers;constructor(e,t){if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let i=this._buffers[this._currentBufferIndex],o=Math.min(i.availableBits(),t),s=i.take(o);n=(n<<o)+s,t-=o,this._availableBits-=o,i.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],i=Math.min(n.totalBits()-n.availableBits(),t);n.untake(i),t-=i,this._availableBits+=i,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Ve([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new T5(t);this._buffers.push(n),this._availableBits+=n.availableBits()}};function rh(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:bM(r.hashFn)};return new yi(e)}var vZ=async function(r){return(await Ru.encode(r)).slice(0,8).reverse()},EZ=async(r,e,t)=>{let n=(e.tableSize()-1).toString(16).length;await Promise.all(r.map(async i=>{if(i.Name==null)throw new Error("Unexpected Link without a Name");if(i.Name.length===n){let o=parseInt(i.Name,16);e._putObjectAt(o,new yi({hash:t._options.hash,bits:t._options.bits},e,o));return}await t.put(i.Name.substring(2),!0)}))},vM=(r,e)=>r.toString(16).toUpperCase().padStart(e,"0").substring(0,e),SZ=r=>{let e=r.bucket,t=[];for(;e._parent!=null;)t.push(e),e=e._parent;return t.push(e),t.reverse()},EM=async(r,e,t,n,i)=>{if(n==null){if(r.Data==null)throw new vr("no data in PBNode");let f;try{f=Te.unmarshal(r.Data)}catch(d){throw new vr(d.message)}if(f.type!=="hamt-sharded-directory")throw new vr("not a HAMT");if(f.fanout==null)throw new vr("missing fanout");let h=rh({hashFn:vZ,bits:Math.log2(Number(f.fanout))});n={rootBucket:h,hamtDepth:1,lastBucket:h}}let o=(n.lastBucket.tableSize()-1).toString(16).length;await EZ(r.Links,n.lastBucket,n.rootBucket);let s=await n.rootBucket._findNewBucketAndPos(e),a=vM(s.pos,o),c=SZ(s);c.length>n.hamtDepth&&(n.lastBucket=c[n.hamtDepth],a=vM(n.lastBucket._posAtParent,o));let l=r.Links.find(f=>{if(f.Name==null)return!1;let h=f.Name.substring(0,o),d=f.Name.substring(o);return!(h!==a||d!==""&&d!==e)});if(l==null)return;if(l.Name!=null&&l.Name.substring(o)===e)return l.Hash;n.hamtDepth++;let u=await t.get(l.Hash,i);return r=rr(u),EM(r,e,t,n,i)},SM=EM;var AZ=(r,e,t,n,i,o,s)=>{async function*a(c={}){let l=c.offset??0,u=c.length??e.Links.length,f=e.Links.slice(l,u);c.onProgress?.(new G("unixfs:exporter:walk:directory",{cid:r})),yield*ot(f,h=>Nt(h,d=>async()=>{let m=d.Name??"",g=`${n}/${m}`;return(await i(d.Hash,m,g,[],o+1,s,c)).entry}),h=>Or(h,{ordered:!0,concurrency:c.blockReadConcurrency}),h=>si(h,d=>d!=null))}return a},AM=AZ;async function _M(r,e,t,n,i,o,s){if(e instanceof Uint8Array){let l=Pu(e,n,i,o);t.push(l);return}if(e.Data==null)throw new vr("no data in PBNode");let a;try{a=Te.unmarshal(e.Data)}catch(l){throw new vr(l.message)}if(a.data!=null){let l=a.data,u=Pu(l,n,i,o);t.push(u),n+=BigInt(u.byteLength)}let c=[];if(e.Links.length!==a.blockSizes.length)throw new vr("Inconsistent block sizes and dag links");for(let l=0;l<e.Links.length;l++){let u=e.Links[l],f=n,h=f+a.blockSizes[l];if((i>=f&&i<h||o>=f&&o<=h||i<f&&o>h)&&c.push({link:u,blockStart:n}),n=h,n>o)break}await ot(c,l=>Nt(l,u=>async()=>{let f=await r.get(u.link.Hash,s);return{...u,block:f}}),l=>Or(l,{ordered:!0,concurrency:s.blockReadConcurrency}),async l=>{for await(let{link:u,block:f,blockStart:h}of l){let d;switch(u.Hash.code){case ct:d=rr(f);break;case vt:d=f;break;default:t.end(new vr(`Unsupported codec: ${u.Hash.code}`));return}let m=new kn({concurrency:1});m.on("error",g=>{t.end(g)}),m.add(async()=>{s.onProgress?.(new G("unixfs:exporter:walk:file",{cid:u.Hash})),await _M(r,d,t,h,i,o,s)}),await m.onIdle()}}),n>=o&&t.end()}var _Z=(r,e,t,n,i,o,s)=>{async function*a(c={}){let l=t.fileSize();if(l===void 0)throw new Error("File was a directory");let{start:u,end:f}=th(l,c.offset,c.length);if(f===0n)return;let h=0n,d=f-u,m=Xr();c.onProgress?.(new G("unixfs:exporter:walk:file",{cid:r})),_M(s,e,m,0n,u,f,c).catch(g=>{m.end(g)});for await(let g of m)if(g!=null){if(h+=BigInt(g.byteLength),h>d)throw m.end(),new b5("Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect");h===d&&m.end(),c.onProgress?.(new G("unixfs:exporter:progress:unixfs:file",{bytesRead:h,totalBytes:d,fileSize:l})),yield g}if(h<d)throw new v5("Traversed entire DAG but did not read enough bytes")}return a},KE=_Z;var IZ=(r,e,t,n,i,o,s)=>{function a(c={}){return c.onProgress?.(new G("unixfs:exporter:walk:hamt-sharded-directory",{cid:r})),IM(e,n,i,o,s,c)}return a};async function*IM(r,e,t,n,i,o){let s=r.Links;if(r.Data==null)throw new vr("no data in PBNode");let a;try{a=Te.unmarshal(r.Data)}catch(u){throw new vr(u.message)}if(a.fanout==null)throw new vr("missing fanout");let c=(a.fanout-1n).toString(16).length,l=ot(s,u=>Nt(u,f=>async()=>{let h=f.Name!=null?f.Name.substring(c):null;if(h!=null&&h!==""){let d=await t(f.Hash,h,`${e}/${h}`,[],n+1,i,o);return{entries:d.entry==null?[]:[d.entry]}}else{let d=await i.get(f.Hash,o);return r=rr(d),o.onProgress?.(new G("unixfs:exporter:walk:hamt-sharded-directory",{cid:f.Hash})),{entries:IM(r,e,t,n,i,o)}}}),u=>Or(u,{ordered:!0,concurrency:o.blockReadConcurrency}));for await(let{entries:u}of l)yield*u}var TM=IZ;var TZ=(r,e)=>r.Links.find(n=>n.Name===e)?.Hash,CZ={raw:KE,file:KE,directory:AM,"hamt-sharded-directory":TM,metadata:(r,e,t,n,i,o,s)=>()=>[],symlink:(r,e,t,n,i,o,s)=>()=>[]},kZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=rr(c),u,f;if(e==null&&(e=r.toString()),l.Data==null)throw new vr("no data in PBNode");try{u=Te.unmarshal(l.Data)}catch(d){throw new vr(d.message)}if(t==null&&(t=e),n.length>0){let d;if(u?.type==="hamt-sharded-directory"?d=await SM(l,n[0],s):d=TZ(l,n[0]),d==null)throw new Wi("file does not exist");let m=n.shift(),g=`${t}/${m}`;f={cid:d,toResolve:n,name:m??"",path:g}}let h=CZ[u.type](r,l,u,t,i,o,s);if(h==null)throw new Wi("could not find content exporter");return u.isDirectory()?{entry:{type:"directory",name:e,path:t,cid:r,content:h,unixfs:u,depth:o,node:l,size:u.fileSize()},next:f}:{entry:{type:"file",name:e,path:t,cid:r,content:h,unixfs:u,depth:o,node:l,size:u.fileSize()},next:f}},CM=kZ;var PZ={[ct]:CM,[vt]:cM,[Pn]:iM,[co]:oM,[cr.code]:sM,[Bo]:aM},kM=async(r,e,t,n,i,o,s)=>{let a=PZ[r.code];if(a==null)throw new x5(`No resolver for code ${r.code}`);return a(r,e,t,n,kM,i,o,s)},PM=kM;var RZ=(r="")=>(r.trim().match(/([^\\^/]|\\\/)+/g)??[]).filter(Boolean),DZ=r=>{if(r instanceof Uint8Array)return{cid:W.decode(r),toResolve:[]};let e=W.asCID(r);if(e!=null)return{cid:e,toResolve:[]};if(typeof r=="string"){r.indexOf("/ipfs/")===0&&(r=r.substring(6));let t=RZ(r);return{cid:W.parse(t[0]),toResolve:t.slice(1)}}throw new w5(`Unknown path type ${r}`)};async function*Dm(r,e,t={}){let{cid:n,toResolve:i}=DZ(r),o=n.toString(),s=o,a=i.length;for(;;){let c=await PM(n,o,s,i,a,e,t);if(c.entry==null&&c.next==null)throw new Wi(`Could not resolve ${r}`);if(c.entry!=null&&(yield c.entry),c.next==null)return;i=c.next.toResolve,n=c.next.cid,o=c.next.name,s=c.next.path}}async function pr(r,e,t={}){let n=await To(Dm(r,e,t));if(n==null)throw new Wi(`Could not resolve ${r}`);return n}async function*nh(r,e,t={}){let n=await pr(r,e,t);if(n==null)return;if(yield n,n.type==="directory")for await(let o of i(n,t))yield o;async function*i(o,s){for await(let a of o.content(s))yield a,!(a instanceof Uint8Array)&&a.type==="directory"&&(yield*i(a,s))}}async function NZ(r,e,t){let n=[],i;for await(let o of Dm(e,r,t))n.push(o.cid),i=o;if(i==null)throw new Zd("No terminal element found");return{ipfsRoots:n,terminalElement:i}}function qE(r){return r.type==="object"}async function RM({cid:r,path:e,resource:t,options:n,blockstore:i,log:o}){try{return await NZ(i,`${r.toString()}/${e}`,n)}catch(s){return n?.signal?.throwIfAborted(),["ERR_NO_PROP","ERR_NO_TERMINAL_ELEMENT","ERR_NOT_FOUND"].includes(s.code)?m5(t):(o.error("error walking path %s",e,s),Qd(t,"Error walking path"))}}var k5=class extends Mt{codes=[Pn];canHandle({cid:e,accept:t,pathDetails:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),n==null||!qE(n.terminalElement)||e.code!==Pn||i==null?!1:qE(n.terminalElement)}async handle(e){let{cid:t,path:n,resource:i,accept:o,pathDetails:s}=e;this.log.trace("fetching %c/%s",t,n);let a=s.ipfsRoots,l=s.terminalElement.node,u;if(o==="application/octet-stream"||o==="application/vnd.ipld.dag-cbor"||o==="application/cbor")u=l;else if(o==="application/vnd.ipld.dag-json")try{let d=Ta(l);u=Dg(d)}catch(d){return this.log.error("could not transform %c to application/vnd.ipld.dag-json",d),ta(i)}else try{u=nM(l)}catch(d){if(o==="application/json")return this.log('could not decode DAG-CBOR as JSON-safe, but the client sent "Accept: application/json"',d),ta(i);this.log("could not decode DAG-CBOR as JSON-safe, falling back to `application/octet-stream`",d),u=l}e.byteRangeContext.setBody(u);let f=cn(i,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log}),h=o??(u instanceof Uint8Array?"application/octet-stream":"application/json");return f.headers.set("content-type",h),a5(f,a),f}};function OZ(r){return r[Symbol.asyncIterator]!=null}function LZ(r,e=1){return e=Number(e),OZ(r)?async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)}():function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)}()}var P5=LZ;async function*Nm(r,e=1){for await(let t of P5(r,e)){let n=t.map(async i=>i().then(o=>({ok:!0,value:o}),o=>({ok:!1,err:o})));for(let i=0;i<n.length;i++){let o=await n[i];if(o.ok)yield o.value;else throw o.err}}}var BZ=262144,Om=(r={})=>{let e=r.chunkSize??BZ;return async function*(n){let i=new oe,o=0,s=!1;for await(let a of n)for(i.append(a),o+=a.length;o>=e;)if(yield i.slice(0,e),s=!0,e===i.length)i=new oe,o=0;else{let c=new oe;c.append(i.sublist(e)),i=c,o-=e}(!s||o>0)&&(yield i.subarray(0,o))}};var ko=async(r,e,t)=>{t.codec==null&&(t.codec=nr);let n=await Fe.digest(r),i=W.create(t.cidVersion,t.codec.code,n);return await e.put(i,r,t),i};function DM(r){return async function*(t,n){let i=0n;for await(let o of t.content)yield async()=>{let s,a={codec:nr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=_n,a.cidVersion=1):(s=new Te({type:r.leafType,data:o}),o=Qe({Data:s.marshal(),Links:[]}));let c=await ko(o,n,a);return i+=BigInt(o.byteLength),r.onProgress?.(new G("unixfs:importer:progress:file:write",{bytesWritten:i,cid:c,path:t.path})),{cid:c,unixfs:s,size:BigInt(o.length),block:o}}}}var R5=class r extends Error{static name="InvalidParametersError";static code="ERR_INVALID_PARAMS";name=r.name;code=r.code;constructor(e="Invalid parameters"){super(e)}};var vc=class r extends Error{static name="InvalidContentError";static code="ERR_INVALID_CONTENT";name=r.name;code=r.code;constructor(e="Invalid content"){super(e)}};var NM=async(r,e,t)=>{let n=new Te({type:"directory",mtime:r.mtime,mode:r.mode}),i=Qe(qt({Data:n.marshal()})),o=await ko(i,e,t),s=r.path;return{cid:o,path:s,unixfs:n,size:BigInt(i.length),originalPath:r.originalPath,block:i}};async function*MZ(r,e,t){let n=-1,i;for await(let o of Nm(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){i={...o,single:!0};continue}else n===1&&i!=null&&(yield{...i,block:void 0,single:void 0},i=void 0);yield{...o,block:void 0}}i!=null&&(yield i)}function OM(r){return r.single===!0}var UZ=(r,e,t)=>async function(i){if(i.length===1&&OM(i[0])&&t.reduceSingleLeafToSelf){let u=i[0],f=u.block;return OM(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new Te({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),f={Data:u.unixfs.marshal(),Links:[]},u.block=Qe(qt(f)),u.cid=await ko(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new G("unixfs:importer:progress:file:layout",{cid:u.cid,path:u.originalPath})),{cid:u.cid,path:r.path,unixfs:u.unixfs,size:u.size,originalPath:u.originalPath}}let o=new Te({type:"file",mtime:r.mtime,mode:r.mode}),s=i.filter(u=>u.cid.code===vt&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===vt?(o.addBlockSize(u.size),{Name:"",Tsize:Number(u.size),Hash:u.cid}):(u.unixfs?.data==null?o.addBlockSize(u.unixfs?.fileSize()??0n):o.addBlockSize(BigInt(u.unixfs.data.length)),{Name:"",Tsize:Number(u.size),Hash:u.cid})),a={Data:o.marshal(),Links:s},c=Qe(qt(a)),l=await ko(c,e,t);return t.onProgress?.(new G("unixfs:importer:progress:file:layout",{cid:l,path:r.originalPath})),{cid:l,path:r.path,unixfs:o,size:BigInt(c.length+a.Links.reduce((u,f)=>u+(f.Tsize??0),0)),originalPath:r.originalPath,block:c}},LM=async(r,e,t)=>t.layout(MZ(r,e,t),UZ(r,e,t));function FZ(r){return Symbol.iterator in r}function $Z(r){return Symbol.asyncIterator in r}function HZ(r){try{if(r instanceof Uint8Array)return async function*(){yield r}();if(FZ(r))return async function*(){yield*r}();if($Z(r))return r}catch{throw new vc("Content was invalid")}throw new vc("Content was invalid")}function BM(r){return async function*(t,n){for await(let i of t){let o;if(i.path!=null&&(o=i.path,i.path=i.path.split("/").filter(s=>s!=null&&s!==".").join("/")),VZ(i)){let s={path:i.path,mtime:i.mtime,mode:i.mode,content:async function*(){let a=0n;for await(let c of r.chunker(r.chunkValidator(HZ(i.content)))){let l=BigInt(c.byteLength);a+=l,r.onProgress?.(new G("unixfs:importer:progress:file:read",{bytesRead:a,chunkSize:l,path:i.path})),yield c}}(),originalPath:o};yield async()=>LM(s,n,r)}else if(i.path!=null){let s={path:i.path,mtime:i.mtime,mode:i.mode,originalPath:o};yield async()=>NM(s,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function VZ(r){return r.content!=null}var MM=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new vc("Content was invalid");if(typeof t=="string"||t instanceof String)yield O(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new vc("Content was invalid")}};var zZ=174;function Lm(r){let e=r?.maxChildrenPerNode??zZ;return async function t(n,i){let o=[];for await(let s of P5(n,e))o.push(await i(s));return o.length>1?t(o,i):o[0]}}var as=class{options;root;dir;path;dirty;flat;parent;parentKey;unixfs;mode;mtime;cid;size;nodeSize;constructor(e,t){this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}},Bm=W.parse("QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"),Mm=W.parse("zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi");var Du=class extends as{_children;constructor(e,t){super(e,t),this._children=new Map}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,this._children.set(e,t)}async get(e){return Promise.resolve(this._children.get(e))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}async*eachChildSeries(){for(let[e,t]of this._children.entries())yield{key:e,child:t}}estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;this.nodeSize=0;for(let[e,t]of this._children.entries())t.size!=null&&t.cid!=null&&(this.nodeSize+=e.length+(this.options.cidVersion===1?Mm.bytes.byteLength:Bm.bytes.byteLength));return this.nodeSize}async*flush(e){let t=[];for(let[c,l]of this._children.entries()){let u=l;if(l instanceof as)for await(let f of l.flush(e))u=f,yield f;u.size!=null&&u.cid!=null&&t.push({Name:c,Tsize:Number(u.size),Hash:u.cid})}let n=new Te({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:n.marshal(),Links:t},o=Qe(qt(i)),s=await ko(o,e,this.options),a=o.length+i.Links.reduce((c,l)=>c+(l.Tsize??0),0);this.cid=s,this.size=a,yield{cid:s,unixfs:n,path:this.path,size:BigInt(a)}}};async function KZ(r){return(await Ru.encode(r)).slice(0,8).reverse()}var UM=BigInt(34),qZ=8,jE=class extends as{_bucket;constructor(e,t){super(e,t),this._bucket=rh({hashFn:KZ,bits:t.shardFanoutBits??qZ})}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this._bucket.put(e,t)}async get(e){return this._bucket.get(e)}childCount(){return this._bucket.leafCount()}directChildrenCount(){return this._bucket.childrenCount()}onlyChild(){return this._bucket.onlyChild()}async*eachChildSeries(){for await(let{key:e,value:t}of this._bucket.eachLeafSeries())yield{key:e,child:t}}estimateNodeSize(){return this.nodeSize!==void 0?this.nodeSize:(this.nodeSize=HM(this._bucket,this,this.options),this.nodeSize)}async*flush(e){for await(let t of $M(this._bucket,e,this,this.options))yield{...t,path:this.path}}},FM=jE;async function*$M(r,e,t,n){let i=r._children,o=(r.tableSize()-1).toString(16).length,s=[],a=0n;for(let m=0;m<i.length;m++){let g=i.get(m);if(g==null)continue;let w=m.toString(16).toUpperCase().padStart(o,"0");if(g instanceof yi){let x;for await(let v of $M(g,e,null,n))x=v;if(x==null)throw new Error("Could not flush sharded directory, no subshard found");s.push({Name:w,Tsize:Number(x.size),Hash:x.cid}),a+=x.size}else if(jZ(g.value)){let x=g.value,v;for await(let S of x.flush(e))v=S,yield v;if(v==null)throw new Error("Did not flush dir");let b=w+g.key;s.push({Name:b,Tsize:Number(v.size),Hash:v.cid}),a+=v.size}else{let x=g.value;if(x.cid==null)continue;let v=w+g.key,b=x.size;s.push({Name:v,Tsize:Number(b),Hash:x.cid}),a+=BigInt(b??0)}}let c=Uint8Array.from(i.bitField().reverse()),l=new Te({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:UM,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:s},f=Qe(qt(u)),h=await ko(f,e,n),d=BigInt(f.byteLength)+a;yield{cid:h,unixfs:l,size:d}}function jZ(r){return typeof r.flush=="function"}function HM(r,e,t){let n=r._children,i=(r.tableSize()-1).toString(16).length,o=[];for(let l=0;l<n.length;l++){let u=n.get(l);if(u==null)continue;let f=l.toString(16).toUpperCase().padStart(i,"0");if(u instanceof yi){let h=HM(u,null,t);o.push({Name:f,Tsize:Number(h),Hash:t.cidVersion===0?Bm:Mm})}else if(typeof u.value.flush=="function"){let d=u.value.nodeSize();o.push({Name:f+u.key,Tsize:Number(d),Hash:t.cidVersion===0?Bm:Mm})}else{let h=u.value;if(h.cid==null)continue;let d=f+u.key,m=h.size;o.push({Name:d,Tsize:Number(m),Hash:h.cid})}}let s=Uint8Array.from(n.bitField().reverse()),a=new Te({type:"hamt-sharded-directory",data:s,fanout:BigInt(r.tableSize()),hashType:UM,mtime:e?.mtime,mode:e?.mode});return Qe(qt({Data:a.marshal(),Links:o})).length}async function WE(r,e,t,n){let i=e;e instanceof Du&&e.estimateNodeSize()>t&&(i=await WZ(e,n));let o=i.parent;if(o!=null){if(i!==e){if(r!=null&&(r.parent=i),i.parentKey==null)throw new Error("No parent key found");await o.put(i.parentKey,i)}return WE(i,o,t,n)}return i}async function WZ(r,e){let t=new FM({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},e);for await(let{key:n,child:i}of r.eachChildSeries())await t.put(n,i);return t}var VM=(r="")=>r.split(/(?<!\\)\//).filter(Boolean);async function GZ(r,e,t){let n=VM(r.path??""),i=n.length-1,o=e,s="";for(let a=0;a<n.length;a++){let c=n[a];s+=`${s!==""?"/":""}${c}`;let l=a===i;if(o.dirty=!0,o.cid=void 0,o.size=void 0,l)await o.put(c,r),e=await WE(null,o,t.shardSplitThresholdBytes,t);else{let u=await o.get(c);(u==null||!(u instanceof as))&&(u=new Du({root:!1,dir:!0,parent:o,parentKey:c,path:s,dirty:!0,flat:!0,mtime:u?.unixfs?.mtime,mode:u?.unixfs?.mode},t)),await o.put(c,u),o=u}}return e}async function*zM(r,e){if(!(r instanceof as)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function KM(r){return async function*(t,n){let i=new Du({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),o,s=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(o==null?(o=c,s=!0):o!==c&&(s=!1)),i=await GZ(a,i,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||s&&i.childCount()>1)yield*zM(i,n);else for await(let a of i.eachChildSeries())a!=null&&(yield*zM(a.child,n))}}async function*Nu(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let i=t.wrapWithDirectory??!1,o=t.shardSplitThresholdBytes??262144,s=t.shardFanoutBits??8,a=t.cidVersion??1,c=t.rawLeaves??!0,l=t.leafType??"file",u=t.fileImportConcurrency??50,f=t.blockWriteConcurrency??10,h=t.reduceSingleLeafToSelf??!0,d=t.chunker??Om(),m=t.chunkValidator??MM(),g=t.dagBuilder??BM({chunker:d,chunkValidator:m,wrapWithDirectory:i,layout:t.layout??Lm(),bufferImporter:t.bufferImporter??DM({cidVersion:a,rawLeaves:c,leafType:l,onProgress:t.onProgress}),blockWriteConcurrency:f,reduceSingleLeafToSelf:h,cidVersion:a,onProgress:t.onProgress}),w=t.treeBuilder??KM({wrapWithDirectory:i,shardSplitThresholdBytes:o,shardFanoutBits:s,cidVersion:a,onProgress:t.onProgress});for await(let x of w(Nm(g(n,e),u),e))yield{cid:x.cid,path:x.path,unixfs:x.unixfs,size:x.size}}async function qM(r,e,t={}){let n=await Lf(Nu([r],e,t));if(n==null)throw new R5("Nothing imported");return n}async function jM(r,e,t={}){return qM({content:r},e,t)}async function WM(r,e,t={}){return qM({content:r},e,t)}var Um={cidVersion:1,rawLeaves:!0,layout:Lm({maxChildrenPerNode:1024}),chunker:Om({chunkSize:1048576})};async function*D5(r,e,t={}){yield*Nu(r,e,{...Um,...t})}async function GM(r,e,t={}){let{cid:n}=await jM(r,e,{...Um,...t});return n}async function XM(r,e,t={}){let{cid:n}=await WM(r,e,{...Um,...t});return n}async function YM(r,e,t={}){if(r.path==null)throw new br("path is required");if(r.content==null)throw new br("content is required");let n=await To(D5([r],e,{...Um,...t,wrapWithDirectory:!0}));if(n==null)throw new br("Nothing imported");return n.cid}async function QM(r,e,t={}){if(r.content!=null)throw new br("Directories cannot have content, use addFile instead");let i=await(r.path==null?Lf:To)(D5([{...r,path:r.path??"-"}],e,{...Um,...t,wrapWithDirectory:r.path!=null}));if(i==null)throw new br("Nothing imported");return i.cid}var QE=it(I5(),1);function O5(r){function e(t){return t instanceof N5?t:new N5(t,r)}return e}var N5=class{_value;_hashFn;_depth;_availableBits;_currentBufferIndex;_buffers;constructor(e,t){if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let i=this._buffers[this._currentBufferIndex],o=Math.min(i.availableBits(),t),s=i.take(o);n=(n<<o)+s,t-=o,this._availableBits-=o,i.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],i=Math.min(n.totalBits()-n.availableBits(),t);n.untake(i),t-=i,this._availableBits+=i,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Ve([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new GE(t);this._buffers.push(n),this._availableBits+=n.availableBits()}},XZ=[255,254,252,248,240,224,192,128],YZ=[1,3,7,15,31,63,127,255],GE=class{_value;_currentBytePos;_currentBitPos;constructor(e){this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let i=this._value[this._currentBytePos],o=this._currentBitPos+1,s=Math.min(o,t),a=QZ(i,o-s,s);n=(n<<s)+a,t-=s,this._currentBitPos-=s,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}};function QZ(r,e,t){let n=ZZ(e,t);return(r&n)>>>e}function ZZ(r,e){return XZ[r]&YZ[Math.min(e+r-1,7)]}var Fm=BigInt(Ru.code),Ou=8;async function ih(r){return(await Ru.encode(r)).subarray(0,8).reverse()}var eU=it(I5(),1);var Po=async(r,e,t)=>{t.codec==null&&(t.codec=nr);let n=await Fe.digest(r),i=W.create(t.cidVersion,t.codec.code,n);return await e.put(i,r,{...t,signal:t.signal}),i};var XE=class{options;root;dir;path;dirty;flat;parent;parentKey;unixfs;mode;mtime;cid;size;nodeSize;constructor(e,t){this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}},L5=class extends XE{_bucket;constructor(e,t){super(e,t),this._bucket=rh({hashFn:ih,bits:8})}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this._bucket.put(e,t)}async get(e){return this._bucket.get(e)}childCount(){return this._bucket.leafCount()}directChildrenCount(){return this._bucket.childrenCount()}onlyChild(){return this._bucket.onlyChild()}async*eachChildSeries(){for await(let{key:e,value:t}of this._bucket.eachLeafSeries())yield{key:e,child:t}}estimateNodeSize(){return this.nodeSize!==void 0?this.nodeSize:(this.nodeSize=JM(this._bucket,this,this.options),this.nodeSize)}async*flush(e){for await(let t of ZM(this._bucket,e,this,this.options))yield{...t,path:this.path}}};async function*ZM(r,e,t,n){let i=r._children,o=[],s=0n;for(let d=0;d<i.length;d++){let m=i.get(d);if(m==null)continue;let g=d.toString(16).toUpperCase().padStart(2,"0");if(m instanceof yi){let w;for await(let x of ZM(m,e,null,n))w=x;if(w==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:g,Tsize:Number(w.size),Hash:w.cid}),s+=w.size}else if(JZ(m.value)){let w=m.value,x;for await(let b of w.flush(e))x=b,yield x;if(x==null)throw new Error("Did not flush dir");let v=g+m.key;o.push({Name:v,Tsize:Number(x.size),Hash:x.cid}),s+=x.size}else{let w=m.value;if(w.cid==null)continue;let x=g+m.key,v=w.size;o.push({Name:x,Tsize:Number(v),Hash:w.cid}),s+=BigInt(v??0)}}let a=Uint8Array.from(i.bitField().reverse()),c=new Te({type:"hamt-sharded-directory",data:a,fanout:BigInt(r.tableSize()),hashType:Fm,mtime:t?.mtime,mode:t?.mode}),l={Data:c.marshal(),Links:o},u=Qe(qt(l)),f=await Po(u,e,n),h=BigInt(u.byteLength)+s;yield{cid:f,unixfs:c,size:h}}function JZ(r){return typeof r.flush=="function"}function JM(r,e,t){let n=r._children,i=[];for(let c=0;c<n.length;c++){let l=n.get(c);if(l==null)continue;let u=c.toString(16).toUpperCase().padStart(2,"0");if(l instanceof yi){let f=JM(l,null,t);i.push({Name:u,Tsize:Number(f),Hash:t.cidVersion===0?B5:M5})}else if(typeof l.value.flush=="function"){let h=l.value.nodeSize();i.push({Name:u+l.key,Tsize:Number(h),Hash:t.cidVersion===0?B5:M5})}else{let f=l.value;if(f.cid==null)continue;let h=u+l.key,d=f.size;i.push({Name:h,Tsize:Number(d),Hash:f.cid})}}let o=Uint8Array.from(n.bitField().reverse()),s=new Te({type:"hamt-sharded-directory",data:o,fanout:BigInt(r.tableSize()),hashType:Fm,mtime:e?.mtime,mode:e?.mode});return Qe(qt({Data:s.marshal(),Links:i})).length}var B5=W.parse("QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"),M5=W.parse("zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi");var YE=ze("helia:unixfs:commands:utils:hamt-utils"),U5=r=>r.toString(16).toUpperCase().padStart(2,"0").substring(0,2),tU=async(r,e,t)=>{let n=new L5({root:!0,dir:!0,parent:void 0,parentKey:void 0,path:"",dirty:!0,flat:!1,mtime:t.mtime,mode:t.mode},t);for(let o=0;o<e.length;o++)await n._bucket.put(e[o].name,{size:e[o].size,cid:e[o].cid});let i=await To(n.flush(r));if(i==null)throw new Error("Flushing shard yielded no result");return i},F5=async(r,e,t)=>{let n=Te.unmarshal(r[0].node.Data??new Uint8Array(0)),i=BigInt(Math.pow(2,Ou));r.reverse();let o,s;for(let a=0;a<r.length;a++){let c=a===r.length-1,l=r[a],u=Uint8Array.from(l.children.bitField().reverse()),f=new Te({type:"hamt-sharded-directory",data:u,fanout:i,hashType:Fm});c&&(f.mtime=n.mtime,f.mode=n.mode),s={Data:f.marshal(),Links:l.node.Links};let h=Qe(qt(s));if(o=await Po(h,e,t),!c){let d=r[a+1];if(d==null)throw new Error("Was not operating on shard root but also had no parent?");YE("updating link in parent sub-shard with prefix %s",d.prefix),d.node.Links=d.node.Links.filter(m=>m.Name!==d.prefix),d.node.Links.push({Name:d.prefix,Hash:o,Tsize:l.node.Links.reduce((m,g)=>m+(g.Tsize??0),h.byteLength)})}}if(o==null||s==null)throw new Error("Noting persisted");return{cid:o,node:s}},$5=async(r,e,t,n)=>{let o=O5(ih)(O(e)),s=[];for(;;){let a=await t.get(r,n),c=rr(a),l=new eU.default,u=await o.take(Ou),f=U5(u);s.push({prefix:f,children:l,node:c});let h;for(let m of c.Links){let g=m.Name??"";if(g.length<2)throw new Error("Invalid HAMT - link name was too short");let w=parseInt(g.substring(0,2),16);l.set(w,!0),g.startsWith(f)&&(h=m)}if(h==null){YE("no link found with prefix %s for %s",f,e);break}let d=h.Name??"";if(d.length<2)throw new Error("Invalid HAMT - link name was too short");if(d.length===2){r=h.Hash,YE("descend into sub-shard with prefix %s",d);continue}break}return{path:s,hash:o}};async function H5(r,e,t,n){if(r.Data==null)throw new Error("DagPB node had no data");let i=Te.unmarshal(r.Data),o;if(i.type==="directory")o=eJ(r);else if(i.type==="hamt-sharded-directory")o=await rU(r,0,t,e,n);else throw new Error("Can only estimate the size of directories or shards");return o>t}function eJ(r){let e=0;for(let t of r.Links)e+=(t.Name??"").length,e+=t.Hash.version===1?M5.bytes.byteLength:B5.bytes.byteLength;return e}async function rU(r,e,t,n,i){if(e>t)return t;if(r.Data==null||!Te.unmarshal(r.Data).isDirectory())return e;for(let s of r.Links){let a=s.Name??"";if(a=a.substring(2),e+=a.length,e+=s.Hash.bytes.byteLength,s.Hash.code===ct){let c=await n.get(s.Hash,i),l=rr(c);e+=await rU(l,e,t,n,i)}}return e}var cs=ze("helia:unixfs:components:utils:add-link");async function oh(r,e,t,n){if(r.node.Data==null)throw new br("Invalid parent passed to addLink");if(Te.unmarshal(r.node.Data).type==="hamt-sharded-directory")return cs("adding link to sharded directory"),nJ(r,e,t,n);cs(`adding ${e.Name} (${e.Hash}) to regular directory`);let o=await rJ(r,e,t,n);if(await H5(o.node,t,n.shardSplitThresholdBytes,n)){cs("converting directory to sharded directory");let s=await tJ(o,t);o.cid=s.cid,o.node=rr(await t.get(s.cid,n))}return o}var tJ=async(r,e)=>{if(r.node.Data==null)throw new br("Invalid parent passed to convertToShardedDirectory");let t=Te.unmarshal(r.node.Data),n=await tU(e,r.node.Links.map(i=>({name:i.Name??"",size:BigInt(i.Tsize??0),cid:i.Hash})),{mode:t.mode,mtime:t.mtime,cidVersion:r.cid.version});return cs(`converted directory to sharded directory ${n.cid}`),n},rJ=async(r,e,t,n)=>{let i=r.node.Links.filter(u=>{let f=u.Name===e.Name;if(f&&!n.allowOverwriting)throw new km;return!f});if(i.push(e),r.node.Data==null)throw new Gn("Parent node with no data passed to addToDirectory");let o=Te.unmarshal(r.node.Data),s;if(o.mtime!=null){let u=Date.now(),f=Math.floor(u/1e3);o.mtime={secs:BigInt(f),nsecs:(u-f*1e3)*1e3},s=o.marshal()}else s=r.node.Data;r.node=qt({Data:s,Links:i});let a=Qe(r.node),c=await Fe.digest(a),l=W.create(r.cid.version,ct,c);return await t.put(l,a),{node:r.node,cid:l}},nJ=async(r,e,t,n)=>{let{path:i,hash:o}=await $5(r.cid,e.Name,t,n),s=i[i.length-1];if(s==null)throw new Error("Invalid HAMT, could not generate path");let a=s.prefix,c=parseInt(a,16);cs("next prefix for %s is %s",e.Name,a);let l=`${a}${e.Name}`,u=s.node.Links.find(f=>(f.Name??"").startsWith(a));if(u!=null)if(cs("link %s was present in shard",l),u.Name===l){if(!n.allowOverwriting)throw new km;cs("overwriting %s in sub-shard",e.Name),s.node.Links=s.node.Links.filter(f=>f.Name!==l),s.node.Links.push({Name:l,Hash:e.Hash,Tsize:e.Tsize})}else{if(u.Name?.length===2)throw new Error("Existing link was sub-shard?!");{cs("prefix %s already exists, creating new sub-shard",a);let f=s.node.Links.findIndex(w=>w.Name?.startsWith(a)),h=s.node.Links.splice(f,1)[0],d=(h.Name??"").substring(2),g=O5(ih)(O(d));for(let w=0;w<i.length;w++)await g.take(Ou);for(;;){let w=await g.take(Ou),x=U5(w);h.Name=`${x}${d}`;let v=await o.take(Ou),b=U5(v);if(x===b){let T=new QE.default;T.set(v,!0),i.push({prefix:b,children:T,node:{Links:[]}});continue}let S=new QE.default;S.set(v,!0),S.set(w,!0),i.push({prefix:a,children:S,node:{Links:[h,{Name:`${b}${e.Name}`,Hash:e.Hash,Tsize:e.Tsize}]}});break}}}else cs("link %s was not present in sub-shard",l),e.Name=l,s.node.Links.push(e),s.children.set(c,!0),cs("adding %s to existing sub-shard",l);return F5(i,t,n)};async function Ec(r,e,t={}){let n=await pr(r,e,t);if(n.type!=="directory")throw new bc(`${r.toString()} was not a UnixFS directory`);return{cid:r,node:n.node}}async function sh(r,e,t,n){let i=await pr(r,t,n);if(i.type!=="directory"&&i.type!=="file"&&i.type!=="raw")throw new gi(`${r.toString()} was not a UnixFS node`);return{Name:e,Tsize:i.node instanceof Uint8Array?i.node.byteLength:iJ(i.node),Hash:r}}function iJ(r){let e=r.Links.reduce((t,n)=>t+(n.Tsize??0),0);return Qe(r).byteLength+e}var oJ=ze("helia:unixfs:components:utils:resolve");async function ls(r,e,t,n){if(e==null||e==="")return{cid:r};let i=`/ipfs/${r}${e==null?"":`/${e}`}`,o=await Ps(Dm(i,t,n));if(o.length===0)throw new Zd("Could not find path in directory");return oJ("resolved %s to %c",e,r),{cid:o[o.length-1].cid,path:e,segments:o}}async function ah(r,e,t,n){if(e.segments==null||e.segments.length===0)return r;let i=e.segments.pop();if(i==null)throw new Error("Insufficient segments");i.cid=r,e.segments.reverse();for(let o of e.segments){let[s,a]=await Promise.all([Ec(o.cid,t,n),sh(i.cid,i.name,t,n)]);r=(await oh(s,a,t,{...n,allowOverwriting:!0,cidVersion:r.version})).cid,o.cid=r,i=o}return r}var sJ=Wt.bind({ignoreUndefined:!0}),aJ={};async function*nU(r,e,t={}){let n=sJ(aJ,t),i=await ls(r,n.path,e,n),o=await pr(i.cid,e,n);if(o.type!=="file"&&o.type!=="raw")throw new y5;if(o.content==null)throw new Jd;yield*o.content(n)}var cJ=Wt.bind({ignoreUndefined:!0}),lJ=ze("helia:unixfs:chmod"),uJ={recursive:!1,shardSplitThresholdBytes:262144};async function iU(r,e,t,n={}){let i=cJ(uJ,n),o=await ls(r,i.path,t,n);if(lJ("chmod %c %d",o.cid,e),i.recursive){let h=await ot(async function*(){for await(let d of nh(o.cid,t,n)){let m,g=[];if(d.type==="raw")m=new Te({type:"file",data:d.node});else if(d.type==="file"||d.type==="directory")m=d.unixfs,g=d.node.Links;else throw new gi;m.mode=e;let w={Data:m.marshal(),Links:g};yield{path:d.path,content:w}}},d=>Nu(d,t,{...i,dagBuilder:async function*(m,g){for await(let w of m)yield async function(){let x=w.content,v=Qe(x),b=await Po(v,g,{...i,cidVersion:r.version});if(x.Data==null)throw new Gn(`${b} had no data`);let S=Te.unmarshal(x.Data);return{cid:b,size:BigInt(v.length),path:w.path,unixfs:S}}}}),async d=>To(d));if(h==null)throw new xc(`Could not chmod ${o.cid.toString()}`);return ah(h.cid,o,t,i)}let s=await t.get(o.cid,n),a,c=[];if(o.cid.code===vt)a=new Te({type:"file",data:s});else{let h=rr(s);if(h.Data==null)throw new Gn(`${o.cid.toString()} had no data`);c=h.Links,a=Te.unmarshal(h.Data)}a.mode=e;let l=Qe({Data:a.marshal(),Links:c}),u=await Fe.digest(l),f=W.create(o.cid.version,ct,u);return await t.put(f,l),ah(f,o,t,i)}var fJ=Wt.bind({ignoreUndefined:!0}),dJ=ze("helia:unixfs:cp"),hJ={force:!1,shardSplitThresholdBytes:262144};async function oU(r,e,t,n,i={}){let o=fJ(hJ,i);if(t.includes("/"))throw new br("Name must not have slashes");let[s,a]=await Promise.all([Ec(e,n,o),sh(r,t,n,o)]);return dJ('Adding %c as "%s" to %c',r,t,e),(await oh(s,a,n,{allowOverwriting:o.force,cidVersion:e.version,...o})).cid}var pJ=Wt.bind({ignoreUndefined:!0}),mJ={};async function*sU(r,e,t={}){let n=pJ(mJ,t),i=await ls(r,n.path,e,n),o=await pr(i.cid,e);if(o.type==="file"||o.type==="raw"){yield o;return}if(o.content==null)throw new Jd;if(o.type!=="directory")throw new bc;yield*o.content({offset:t.offset,length:t.length})}var gJ=Wt.bind({ignoreUndefined:!0}),aU=ze("helia:unixfs:mkdir"),yJ={cidVersion:1,force:!1,shardSplitThresholdBytes:262144};async function cU(r,e,t,n={}){let i=gJ(yJ,n);if(e.includes("/"))throw new br("Path must not have slashes");if((await pr(r,t,n)).type!=="directory")throw new bc(`${r.toString()} was not a UnixFS directory`);aU("creating %s",e);let a={Data:new Te({type:"directory",mode:i.mode,mtime:i.mtime}).marshal(),Links:[]},c=Qe(a),l=await Fe.digest(c),u=W.create(i.cidVersion,ct,l);await t.put(u,c);let[f,h]=await Promise.all([Ec(r,t,i),sh(u,e,t,i)]);return aU("adding empty dir called %s to %c",e,r),(await oh(f,h,t,{...i,allowOverwriting:i.force})).cid}var z5=ze("helia:unixfs:utils:remove-link");async function lU(r,e,t,n){if(r.node.Data==null)throw new Gn("Parent node had no data");if(Te.unmarshal(r.node.Data).type==="hamt-sharded-directory"){z5(`removing ${e} from sharded directory`);let o=await xJ(r,e,t,n);return await H5(o.node,t,n.shardSplitThresholdBytes,n)?o:(z5("converting shard to flat directory %c",r.cid),bJ(o,t,n))}return z5(`removing link ${e} regular directory`),wJ(r,e,t,n)}var wJ=async(r,e,t,n)=>{r.node.Links=r.node.Links.filter(s=>s.Name!==e);let i=Qe(r.node),o=await Po(i,t,{...n,cidVersion:r.cid.version});return z5(`Updated regular directory ${o}`),{node:r.node,cid:o}},xJ=async(r,e,t,n)=>{let{path:i}=await $5(r.cid,e,t,n),o=i[i.length-1];if(o==null)throw new Error("Invalid HAMT, could not generate path");let s=o.node.Links.filter(l=>(l.Name??"").substring(2)===e).map(l=>l.Name).pop();if(s==null)throw new Error("File not found");let a=s.substring(0,2),c=parseInt(a,16);if(o.node.Links=o.node.Links.filter(l=>l.Name!==s),o.children.unset(c),o.node.Links.length===1)for(;i.length!==1;){let l=i[i.length-1];if(l==null||l.node.Links.length>1)break;i.pop();let u=i[i.length-1];if(u==null)break;let f=l.node.Links[0];u.node.Links=u.node.Links.filter(h=>!(h.Name??"").startsWith(u.prefix)),u.node.Links.push({Hash:f.Hash,Name:`${u.prefix}${(f.Name??"").substring(2)}`,Tsize:f.Tsize})}return F5(i,t,n)},bJ=async(r,e,t)=>{if(r.node.Data==null)throw new br("Invalid parent passed to convertToFlatDirectory");let n={Links:[]},i=await pr(r.cid,e);if(i.type!=="directory")throw new Error("Unexpected node type");for await(let c of i.content()){let l=0;c.node instanceof Uint8Array?l=c.node.byteLength:l=Qe(c.node).length,n.Links.push({Hash:c.cid,Name:c.name,Tsize:l})}let o=Te.unmarshal(r.node.Data);n.Data=new Te({type:"directory",mode:o.mode,mtime:o.mtime}).marshal();let s=Qe(qt(n));return{cid:await Po(s,e,{codec:nr,cidVersion:r.cid.version,signal:t.signal}),node:n}};var vJ=Wt.bind({ignoreUndefined:!0}),EJ=ze("helia:unixfs:rm"),SJ={shardSplitThresholdBytes:262144};async function uU(r,e,t,n={}){let i=vJ(SJ,n);if(e.includes("/"))throw new br("Name must not have slashes");let o=await Ec(r,t,i);return EJ("Removing %s from %c",e,r),(await lU(o,e,t,{...i,cidVersion:r.version})).cid}var fU=1877,K5=1604,AJ=Wt.bind({ignoreUndefined:!0}),_J=ze("helia:unixfs:stat"),IJ={};async function dU(r,e,t={}){let n=AJ(IJ,t),i=await ls(r,t.path,e,n);_J("stat %c",i.cid);let o=await pr(i.cid,e,n);if(o.type==="raw")return t.extended===!0?PJ(o):kJ(o);if(o.type==="file"||o.type==="directory")return t.extended===!0?CJ(o,e,t.filter??new mf({filterSize:1024}),t):TJ(o);throw new gi}function TJ(r){return{type:r.type,cid:r.cid,unixfs:r.unixfs,mode:r.unixfs.mode??(r.unixfs.isDirectory()?fU:K5),mtime:r.unixfs.mtime,size:r.unixfs.fileSize()}}async function CJ(r,e,t,n){let i=await hU(r.cid,e,!1,t,n);return{type:r.type,cid:r.cid,unixfs:r.unixfs,size:r.unixfs.isDirectory()?i.dirSize:r.unixfs.fileSize(),mode:r.unixfs.mode??(r.unixfs.isDirectory()?fU:K5),mtime:r.unixfs.mtime,localSize:i.localSize,dagSize:i.dagSize,deduplicatedDagSize:i.deduplicatedDagSize,blocks:i.blocks,uniqueBlocks:i.uniqueBlocks}}function kJ(r){return{type:r.type,cid:r.cid,unixfs:void 0,mode:K5,mtime:void 0,size:BigInt(r.node.byteLength)}}function PJ(r){return{type:r.type,cid:r.cid,unixfs:void 0,mode:K5,mtime:void 0,size:BigInt(r.node.byteLength),localSize:BigInt(r.node.byteLength),dagSize:BigInt(r.node.byteLength),deduplicatedDagSize:BigInt(r.node.byteLength),blocks:1n,uniqueBlocks:1n}}async function hU(r,e,t,n,i){let o={dirSize:0n,localSize:0n,dagSize:0n,deduplicatedDagSize:0n,blocks:0n,uniqueBlocks:0n};try{let s=n.has(r.bytes);n.add(r.bytes);let a=await e.get(r,i);if(o.blocks++,o.dagSize+=BigInt(a.byteLength),s||(o.uniqueBlocks++,o.deduplicatedDagSize+=BigInt(a.byteLength)),r.code===vt)o.localSize+=BigInt(a.byteLength),t&&(o.dirSize+=BigInt(a.byteLength));else if(r.code===ct){let c=rr(a),l;if(c.Data!=null&&(l=Te.unmarshal(c.Data)),c.Links.length>0){for(let u of c.Links){let f=await hU(u.Hash,e,RJ(u,l),n,i);o.localSize+=f.localSize,o.dagSize+=f.dagSize,o.deduplicatedDagSize+=f.deduplicatedDagSize,o.blocks+=f.blocks,o.uniqueBlocks+=f.uniqueBlocks,o.dirSize+=f.dirSize}t&&l!=null&&(o.dirSize+=l.fileSize())}else{if(l==null)throw new Gn(`PBNode ${r.toString()} had no data`);l.data!=null&&(o.localSize+=BigInt(l.data.byteLength??0)),t&&(o.dirSize+=l.fileSize())}}else throw new xc(`${r.toString()} was neither DAG_PB nor RAW`)}catch(s){if(s.name!=="NotFoundError"||i.offline!==!0)throw s}return o}function RJ(r,e){if(e==null)return!1;let t=r.Name;return t==null?!1:e.type==="directory"?!0:e.type==="hamt-sharded-directory"&&t.length>2}var DJ=Wt.bind({ignoreUndefined:!0}),NJ=ze("helia:unixfs:touch"),OJ={recursive:!1,shardSplitThresholdBytes:262144};async function pU(r,e,t={}){let n=DJ(OJ,t),i=await ls(r,n.path,e,n),o=n.mtime??{secs:BigInt(Math.round(Date.now()/1e3)),nsecs:0};if(NJ("touch %c %o",i.cid,o),n.recursive){let h=await ot(async function*(){for await(let d of nh(i.cid,e)){let m,g;if(d.type==="raw")m=new Te({data:d.node}),g=[];else if(d.type==="file"||d.type==="directory")m=d.unixfs,g=d.node.Links;else throw new gi;m.mtime=o;let w={Data:m.marshal(),Links:g};yield{path:d.path,content:w}}},d=>Nu(d,e,{...n,dagBuilder:async function*(m,g){for await(let w of m)yield async function(){let x=w.content,v=Qe(x),b=await Po(v,g,{...n,cidVersion:r.version});if(x.Data==null)throw new Gn(`${b} had no data`);let S=Te.unmarshal(x.Data);return{cid:b,size:BigInt(v.length),path:w.path,unixfs:S}}}}),async d=>To(d));if(h==null)throw new xc(`Could not chmod ${i.cid.toString()}`);return ah(h.cid,i,e,n)}let s=await e.get(i.cid,t),a,c=[];if(i.cid.code===vt)a=new Te({data:s});else{let h=rr(s);if(c=h.Links,h.Data==null)throw new Gn(`${i.cid.toString()} had no data`);a=Te.unmarshal(h.Data)}a.mtime=o;let l=Qe({Data:a.marshal(),Links:c}),u=await Fe.digest(l),f=W.create(i.cid.version,ct,u);return await e.put(f,l),ah(f,i,e,n)}var q5=class{components;constructor(e){this.components=e}async*addAll(e,t={}){yield*D5(e,this.components.blockstore,t)}async addBytes(e,t={}){return GM(e,this.components.blockstore,t)}async addByteStream(e,t={}){return XM(e,this.components.blockstore,t)}async addFile(e,t={}){return YM(e,this.components.blockstore,t)}async addDirectory(e={},t={}){return QM(e,this.components.blockstore,t)}async*cat(e,t={}){yield*nU(e,this.components.blockstore,t)}async chmod(e,t,n={}){return iU(e,t,this.components.blockstore,n)}async cp(e,t,n,i={}){return oU(e,t,n,this.components.blockstore,i)}async*ls(e,t={}){yield*sU(e,this.components.blockstore,t)}async mkdir(e,t,n={}){return cU(e,t,this.components.blockstore,n)}async rm(e,t,n={}){return uU(e,t,this.components.blockstore,n)}async stat(e,t={}){return dU(e,this.components.blockstore,t)}async touch(e,t={}){return pU(e,this.components.blockstore,t)}};function mU(r){return new q5(r)}async function gU(r,e,t,n){let i=t.forComponent("helia:verified-fetch:get-stream-from-async-iterable"),o=r[Symbol.asyncIterator](),{value:s,done:a}=await o.next();if(a===!0)throw i.error("no content found for path",e),new o5;return{stream:new ReadableStream({async start(l){n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(s)},async pull(l){let{value:u,done:f}=await o.next();if(n?.signal?.aborted===!0){l.error(new Tr(n.signal.reason??"signal aborted by user")),l.close();return}if(f===!0){u!=null&&(n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(u)),l.close();return}n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(u)}}),firstChunk:s}}var wU=it(yU(),1);function Xn(r){return new DataView(r.buffer,r.byteOffset)}var xU={len:1,get(r,e){return Xn(r).getUint8(e)},put(r,e,t){return Xn(r).setUint8(e,t),e+1}},Ut={len:2,get(r,e){return Xn(r).getUint16(e,!0)},put(r,e,t){return Xn(r).setUint16(e,t,!0),e+2}},ch={len:2,get(r,e){return Xn(r).getUint16(e)},put(r,e,t){return Xn(r).setUint16(e,t),e+2}};var sr={len:4,get(r,e){return Xn(r).getUint32(e,!0)},put(r,e,t){return Xn(r).setUint32(e,t,!0),e+4}},bU={len:4,get(r,e){return Xn(r).getUint32(e)},put(r,e,t){return Xn(r).setUint32(e,t),e+4}};var vU={len:4,get(r,e){return Xn(r).getInt32(e)},put(r,e,t){return Xn(r).setInt32(e,t),e+4}};var EU={len:8,get(r,e){return Xn(r).getBigUint64(e,!0)},put(r,e,t){return Xn(r).setBigUint64(e,t,!0),e+8}};var Yn=class{constructor(e,t){this.len=e,this.encoding=t,this.textDecoder=new TextDecoder(t)}get(e,t){return this.textDecoder.decode(e.subarray(t,t+this.len))}};var BJ="End-Of-Stream",Vt=class extends Error{constructor(){super(BJ),this.name="EndOfStreamError"}},Lu=class extends Error{constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Bu=class{constructor(){this.endOfStream=!1,this.interrupted=!1,this.peekQueue=[]}async peek(e,t=!1){let n=await this.read(e,t);return this.peekQueue.push(e.subarray(0,n)),n}async read(e,t=!1){if(e.length===0)return 0;let n=this.readFromPeekBuffer(e);if(this.endOfStream||(n+=await this.readRemainderFromStream(e.subarray(n),t)),n===0)throw new Vt;return n}readFromPeekBuffer(e){let t=e.length,n=0;for(;this.peekQueue.length>0&&t>0;){let i=this.peekQueue.pop();if(!i)throw new Error("peekData should be defined");let o=Math.min(i.length,t);e.set(i.subarray(0,o),n),n+=o,t-=o,o<i.length&&this.peekQueue.push(i.subarray(o))}return n}async readRemainderFromStream(e,t){let n=0;for(;n<e.length&&!this.endOfStream;){if(this.interrupted)throw new Lu;let i=await this.readFromStream(e.subarray(n),t);if(i===0)break;n+=i}if(!t&&n<e.length)throw new Vt;return n}};var j5=class extends Bu{constructor(e){super(),this.reader=e}async abort(){return this.close()}async close(){this.reader.releaseLock()}};var $m=class extends j5{async readFromStream(e,t){if(e.length===0)return 0;let n=await this.reader.read(new Uint8Array(e.length),{min:t?void 0:e.length});return n.done&&(this.endOfStream=n.done),n.value?(e.set(n.value),n.value.length):0}};var lh=class extends Bu{constructor(e){super(),this.reader=e,this.buffer=null}writeChunk(e,t){let n=Math.min(t.length,e.length);return e.set(t.subarray(0,n)),n<t.length?this.buffer=t.subarray(n):this.buffer=null,n}async readFromStream(e,t){if(e.length===0)return 0;let n=0;for(this.buffer&&(n+=this.writeChunk(e,this.buffer));n<e.length&&!this.endOfStream;){let i=await this.reader.read();if(i.done){this.endOfStream=!0;break}i.value&&(n+=this.writeChunk(e.subarray(n),i.value))}if(n===0&&this.endOfStream)throw new Vt;return n}abort(){return this.interrupted=!0,this.reader.cancel()}async close(){await this.abort(),this.reader.releaseLock()}};function JE(r){try{let e=r.getReader({mode:"byob"});return e instanceof ReadableStreamDefaultReader?new lh(e):new $m(e)}catch(e){if(e instanceof TypeError)return new lh(r.getReader());throw e}}var Mu=class{constructor(e){this.numBuffer=new Uint8Array(8),this.position=0,this.onClose=e?.onClose,e?.abortSignal&&e.abortSignal.addEventListener("abort",()=>{this.abort()})}async readToken(e,t=this.position){let n=new Uint8Array(e.len);if(await this.readBuffer(n,{position:t})<e.len)throw new Vt;return e.get(n,0)}async peekToken(e,t=this.position){let n=new Uint8Array(e.len);if(await this.peekBuffer(n,{position:t})<e.len)throw new Vt;return e.get(n,0)}async readNumber(e){if(await this.readBuffer(this.numBuffer,{length:e.len})<e.len)throw new Vt;return e.get(this.numBuffer,0)}async peekNumber(e){if(await this.peekBuffer(this.numBuffer,{length:e.len})<e.len)throw new Vt;return e.get(this.numBuffer,0)}async ignore(e){if(this.fileInfo.size!==void 0){let t=this.fileInfo.size-this.position;if(e>t)return this.position+=t,t}return this.position+=e,e}async close(){await this.abort(),await this.onClose?.()}normalizeOptions(e,t){if(!this.supportsRandomAccess()&&t&&t.position!==void 0&&t.position<this.position)throw new Error("`options.position` must be equal or greater than `tokenizer.position`");return{mayBeLess:!1,offset:0,length:e.length,position:this.position,...t}}abort(){return Promise.resolve()}};var UJ=256e3,W5=class extends Mu{constructor(e,t){super(t),this.streamReader=e,this.fileInfo=t?.fileInfo??{}}async readBuffer(e,t){let n=this.normalizeOptions(e,t),i=n.position-this.position;if(i>0)return await this.ignore(i),this.readBuffer(e,t);if(i<0)throw new Error("`options.position` must be equal or greater than `tokenizer.position`");if(n.length===0)return 0;let o=await this.streamReader.read(e.subarray(0,n.length),n.mayBeLess);if(this.position+=o,(!t||!t.mayBeLess)&&o<n.length)throw new Vt;return o}async peekBuffer(e,t){let n=this.normalizeOptions(e,t),i=0;if(n.position){let o=n.position-this.position;if(o>0){let s=new Uint8Array(n.length+o);return i=await this.peekBuffer(s,{mayBeLess:n.mayBeLess}),e.set(s.subarray(o)),i-o}if(o<0)throw new Error("Cannot peek from a negative offset in a stream")}if(n.length>0){try{i=await this.streamReader.peek(e.subarray(0,n.length),n.mayBeLess)}catch(o){if(t?.mayBeLess&&o instanceof Vt)return 0;throw o}if(!n.mayBeLess&&i<n.length)throw new Vt}return i}async ignore(e){let t=Math.min(UJ,e),n=new Uint8Array(t),i=0;for(;i<e;){let o=e-i,s=await this.readBuffer(n,{length:Math.min(t,o)});if(s<0)return s;i+=s}return i}abort(){return this.streamReader.abort()}async close(){return this.streamReader.close()}supportsRandomAccess(){return!1}};var G5=class extends Mu{constructor(e,t){super(t),this.uint8Array=e,this.fileInfo={...t?.fileInfo??{},size:e.length}}async readBuffer(e,t){t?.position&&(this.position=t.position);let n=await this.peekBuffer(e,t);return this.position+=n,n}async peekBuffer(e,t){let n=this.normalizeOptions(e,t),i=Math.min(this.uint8Array.length-n.position,n.length);if(!n.mayBeLess&&i<n.length)throw new Vt;return e.set(this.uint8Array.subarray(n.position,n.position+i)),i}close(){return super.close()}supportsRandomAccess(){return!0}setPosition(e){this.position=e}};function SU(r,e){let t=JE(r),n=e??{},i=n.onClose;return n.onClose=async()=>{if(await t.close(),i)return i()},new W5(t,n)}function AU(r,e){return new G5(r,e)}var xi=Uint8Array,uh=Uint16Array,$J=Int32Array,_U=new xi([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),IU=new xi([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),HJ=new xi([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),TU=function(r,e){for(var t=new uh(31),n=0;n<31;++n)t[n]=e+=1<<r[n-1];for(var i=new $J(t[30]),n=1;n<30;++n)for(var o=t[n];o<t[n+1];++o)i[o]=o-t[n]<<5|n;return{b:t,r:i}},CU=TU(_U,2),kU=CU.b,VJ=CU.r;kU[28]=258,VJ[258]=28;var PU=TU(IU,0),zJ=PU.b,jnt=PU.r,rS=new uh(32768);for(ut=0;ut<32768;++ut)ra=(ut&43690)>>1|(ut&21845)<<1,ra=(ra&52428)>>2|(ra&13107)<<2,ra=(ra&61680)>>4|(ra&3855)<<4,rS[ut]=((ra&65280)>>8|(ra&255)<<8)>>1;var ra,ut,Hm=function(r,e,t){for(var n=r.length,i=0,o=new uh(e);i<n;++i)r[i]&&++o[r[i]-1];var s=new uh(e);for(i=1;i<e;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(t){a=new uh(1<<e);var c=15-e;for(i=0;i<n;++i)if(r[i])for(var l=i<<4|r[i],u=e-r[i],f=s[r[i]-1]++<<u,h=f|(1<<u)-1;f<=h;++f)a[rS[f]>>c]=l}else for(a=new uh(n),i=0;i<n;++i)r[i]&&(a[i]=rS[s[r[i]-1]++]>>15-r[i]);return a},Vm=new xi(288);for(ut=0;ut<144;++ut)Vm[ut]=8;var ut;for(ut=144;ut<256;++ut)Vm[ut]=9;var ut;for(ut=256;ut<280;++ut)Vm[ut]=7;var ut;for(ut=280;ut<288;++ut)Vm[ut]=8;var ut,RU=new xi(32);for(ut=0;ut<32;++ut)RU[ut]=5;var ut;var KJ=Hm(Vm,9,1);var qJ=Hm(RU,5,1),eS=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},Ro=function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},tS=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},jJ=function(r){return(r+7)/8|0},WJ=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new xi(r.subarray(e,t))};var GJ=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],wi=function(r,e,t){var n=new Error(e||GJ[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,wi),!t)throw n;return n},nS=function(r,e,t,n){var i=r.length,o=n?n.length:0;if(!i||e.f&&!e.l)return t||new xi(0);var s=!t,a=s||e.i!=2,c=e.i;s&&(t=new xi(i*3));var l=function(Rt){var Et=t.length;if(Rt>Et){var mr=new xi(Math.max(Et*2,Rt));mr.set(t),t=mr}},u=e.f||0,f=e.p||0,h=e.b||0,d=e.l,m=e.d,g=e.m,w=e.n,x=i*8;do{if(!d){u=Ro(r,f,1);var v=Ro(r,f+1,3);if(f+=3,v)if(v==1)d=KJ,m=qJ,g=9,w=5;else if(v==2){var D=Ro(r,f,31)+257,A=Ro(r,f+10,15)+4,I=D+Ro(r,f+5,31)+1;f+=14;for(var k=new xi(I),Q=new xi(19),K=0;K<A;++K)Q[HJ[K]]=Ro(r,f+K*3,7);f+=A*3;for(var V=eS(Q),X=(1<<V)-1,$=Hm(Q,V,1),K=0;K<I;){var F=$[Ro(r,f,X)];f+=F&15;var b=F>>4;if(b<16)k[K++]=b;else{var z=0,M=0;for(b==16?(M=3+Ro(r,f,3),f+=2,z=k[K-1]):b==17?(M=3+Ro(r,f,7),f+=3):b==18&&(M=11+Ro(r,f,127),f+=7);M--;)k[K++]=z}}var R=k.subarray(0,D),N=k.subarray(D);g=eS(R),w=eS(N),d=Hm(R,g,1),m=Hm(N,w,1)}else wi(1);else{var b=jJ(f)+4,S=r[b-4]|r[b-3]<<8,T=b+S;if(T>i){c&&wi(0);break}a&&l(h+S),t.set(r.subarray(b,T),h),e.b=h+=S,e.p=f=T*8,e.f=u;continue}if(f>x){c&&wi(0);break}}a&&l(h+131072);for(var Z=(1<<g)-1,ne=(1<<w)-1,q=f;;q=f){var z=d[tS(r,f)&Z],ge=z>>4;if(f+=z&15,f>x){c&&wi(0);break}if(z||wi(2),ge<256)t[h++]=ge;else if(ge==256){q=f,d=null;break}else{var ke=ge-254;if(ge>264){var K=ge-257,le=_U[K];ke=Ro(r,f,(1<<le)-1)+kU[K],f+=le}var De=m[tS(r,f)&ne],et=De>>4;De||wi(3),f+=De&15;var N=zJ[et];if(et>3){var le=IU[et];N+=tS(r,f)&(1<<le)-1,f+=le}if(f>x){c&&wi(0);break}a&&l(h+131072);var Ye=h+ke;if(h<N){var pt=o-N,bt=Math.min(N,Ye);for(pt+h<0&&wi(3);h<bt;++h)t[h]=n[pt+h]}for(;h<Ye;++h)t[h]=t[h-N]}}e.l=d,e.p=q,e.b=h,e.f=u,d&&(u=1,e.m=g,e.d=m,e.n=w)}while(!u);return h!=t.length&&s?WJ(t,0,h):t.subarray(0,h)};var XJ=new xi(0);var YJ=function(r){(r[0]!=31||r[1]!=139||r[2]!=8)&&wi(6,"invalid gzip data");var e=r[3],t=10;e&4&&(t+=(r[10]|r[11]<<8)+2);for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!r[t++]);return t+(e&2)},QJ=function(r){var e=r.length;return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0};var ZJ=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&wi(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&wi(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function JJ(r,e){return nS(r,{i:2},e&&e.out,e&&e.dictionary)}function eee(r,e){var t=YJ(r);return t+8>r.length&&wi(6,"invalid gzip data"),nS(r.subarray(t,-8),{i:2},e&&e.out||new xi(QJ(r)),e&&e.dictionary)}function tee(r,e){return nS(r.subarray(ZJ(r,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}function DU(r,e){return r[0]==31&&r[1]==139&&r[2]==8?eee(r,e):(r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31?JJ(r,e):tee(r,e)}var ree=typeof TextDecoder<"u"&&new TextDecoder,nee=0;try{ree.decode(XJ,{stream:!0}),nee=1}catch{}var HU=it(MU(),1);var Fu={LocalFileHeader:67324752,DataDescriptor:134695760,CentralFileHeader:33639248,EndOfCentralDirectory:101010256},iS={get(r){let e=Ut.get(r,6);return{signature:sr.get(r,0),compressedSize:sr.get(r,8),uncompressedSize:sr.get(r,12)}},len:16},UU={get(r){let e=Ut.get(r,6);return{signature:sr.get(r,0),minVersion:Ut.get(r,4),dataDescriptor:!!(e&8),compressedMethod:Ut.get(r,8),compressedSize:sr.get(r,18),uncompressedSize:sr.get(r,22),filenameLength:Ut.get(r,26),extraFieldLength:Ut.get(r,28),filename:null}},len:30},FU={get(r){return{signature:sr.get(r,0),nrOfThisDisk:Ut.get(r,4),nrOfThisDiskWithTheStart:Ut.get(r,6),nrOfEntriesOnThisDisk:Ut.get(r,8),nrOfEntriesOfSize:Ut.get(r,10),sizeOfCd:sr.get(r,12),offsetOfStartOfCd:sr.get(r,16),zipFileCommentLength:Ut.get(r,20)}},len:22},$U={get(r){let e=Ut.get(r,8);return{signature:sr.get(r,0),minVersion:Ut.get(r,6),dataDescriptor:!!(e&8),compressedMethod:Ut.get(r,10),compressedSize:sr.get(r,20),uncompressedSize:sr.get(r,24),filenameLength:Ut.get(r,28),extraFieldLength:Ut.get(r,30),fileCommentLength:Ut.get(r,32),relativeOffsetOfLocalHeader:sr.get(r,42),filename:null}},len:46};function VU(r){let e=new Uint8Array(sr.len);return sr.put(e,0,r),e}var us=(0,HU.default)("tokenizer:inflate"),oS=256*1024,gee=VU(Fu.DataDescriptor),Q5=VU(Fu.EndOfCentralDirectory),Z5=class{constructor(e){this.tokenizer=e,this.syncBuffer=new Uint8Array(oS)}async isZip(){return await this.peekSignature()===Fu.LocalFileHeader}peekSignature(){return this.tokenizer.peekToken(sr)}async findEndOfCentralDirectoryLocator(){let e=this.tokenizer,t=Math.min(16*1024,e.fileInfo.size),n=this.syncBuffer.subarray(0,t);await this.tokenizer.readBuffer(n,{position:e.fileInfo.size-t});for(let i=n.length-4;i>=0;i--)if(n[i]===Q5[0]&&n[i+1]===Q5[1]&&n[i+2]===Q5[2]&&n[i+3]===Q5[3])return e.fileInfo.size-t+i;return-1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess()){us("Cannot reading central-directory without random-read support");return}us("Reading central-directory...");let e=this.tokenizer.position,t=await this.findEndOfCentralDirectoryLocator();if(t>0){us("Central-directory 32-bit signature found");let n=await this.tokenizer.readToken(FU,t),i=[];this.tokenizer.setPosition(n.offsetOfStartOfCd);for(let o=0;o<n.nrOfEntriesOfSize;++o){let s=await this.tokenizer.readToken($U);if(s.signature!==Fu.CentralFileHeader)throw new Error("Expected Central-File-Header signature");s.filename=await this.tokenizer.readToken(new Yn(s.filenameLength,"utf-8")),await this.tokenizer.ignore(s.extraFieldLength),await this.tokenizer.ignore(s.fileCommentLength),i.push(s),us(`Add central-directory file-entry: n=${o+1}/${i.length}: filename=${i[o].filename}`)}return this.tokenizer.setPosition(e),i}this.tokenizer.setPosition(e)}async unzip(e){let t=await this.readCentralDirectory();if(t)return this.iterateOverCentralDirectory(t,e);let n=!1;do{let i=await this.readLocalFileHeader();if(!i)break;let o=e(i);n=!!o.stop;let s;if(await this.tokenizer.ignore(i.extraFieldLength),i.dataDescriptor&&i.compressedSize===0){let a=[],c=oS;us("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let l=-1;for(;l<0&&c===oS;){c=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0}),l=yee(this.syncBuffer.subarray(0,c),gee);let u=l>=0?l:c;if(o.handler){let f=new Uint8Array(u);await this.tokenizer.readBuffer(f),a.push(f)}else await this.tokenizer.ignore(u)}us(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),o.handler&&await this.inflate(i,wee(a),o.handler)}else o.handler?(us(`Reading compressed-file-data: ${i.compressedSize} bytes`),s=new Uint8Array(i.compressedSize),await this.tokenizer.readBuffer(s),await this.inflate(i,s,o.handler)):(us(`Ignoring compressed-file-data: ${i.compressedSize} bytes`),await this.tokenizer.ignore(i.compressedSize));if(us(`Reading data-descriptor at pos=${this.tokenizer.position}`),i.dataDescriptor&&(await this.tokenizer.readToken(iS)).signature!==134695760)throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-iS.len}`)}while(!n)}async iterateOverCentralDirectory(e,t){for(let n of e){let i=t(n);if(i.handler){this.tokenizer.setPosition(n.relativeOffsetOfLocalHeader);let o=await this.readLocalFileHeader();if(o){await this.tokenizer.ignore(o.extraFieldLength);let s=new Uint8Array(n.compressedSize);await this.tokenizer.readBuffer(s),await this.inflate(o,s,i.handler)}}if(i.stop)break}}inflate(e,t,n){if(e.compressedMethod===0)return n(t);us(`Decompress filename=${e.filename}, compressed-size=${t.length}`);let i=DU(t);return n(i)}async readLocalFileHeader(){let e=await this.tokenizer.peekToken(sr);if(e===Fu.LocalFileHeader){let t=await this.tokenizer.readToken(UU);return t.filename=await this.tokenizer.readToken(new Yn(t.filenameLength,"utf-8")),t}if(e===Fu.CentralFileHeader)return!1;throw e===3759263696?new Error("Encrypted ZIP"):new Error("Unexpected signature")}};function yee(r,e){let t=r.length,n=e.length;if(n>t)return-1;for(let i=0;i<=t-n;i++){let o=!0;for(let s=0;s<n;s++)if(r[i+s]!==e[s]){o=!1;break}if(o)return i}return-1}function wee(r){let e=r.reduce((i,o)=>i+o.length,0),t=new Uint8Array(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}var rit={utf8:new globalThis.TextDecoder("utf8")};var nit=new globalThis.TextEncoder;var iit=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function sS(r){let{byteLength:e}=r;if(e===6)return r.getUint16(0)*2**32+r.getUint32(2);if(e===5)return r.getUint8(0)*2**32+r.getUint32(1);if(e===4)return r.getUint32(0);if(e===3)return r.getUint8(0)*2**16+r.getUint16(1);if(e===2)return r.getUint16(0);if(e===1)return r.getUint8(0)}function xee(r,e){let t=r.length,n=e.length;if(n===0||n>t)return-1;let i=t-n;for(let o=0;o<=i;o++){let s=!0;for(let a=0;a<n;a++)if(r[o+a]!==e[a]){s=!1;break}if(s)return o}return-1}function zU(r,e){return xee(r,e)!==-1}function KU(r){return[...r].map(e=>e.charCodeAt(0))}function qU(r,e=0){let t=Number.parseInt(new Yn(6).get(r,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(t))return!1;let n=8*32;for(let i=e;i<e+148;i++)n+=r[i];for(let i=e+156;i<e+512;i++)n+=r[i];return t===n}var jU={get:(r,e)=>r[e+3]&127|r[e+2]<<7|r[e+1]<<14|r[e]<<21,len:4};var WU=["jpg","png","apng","gif","webp","flif","xcf","cr2","cr3","orf","arw","dng","nef","rw2","raf","tif","bmp","icns","jxr","psd","indd","zip","tar","rar","gz","bz2","7z","dmg","mp4","mid","mkv","webm","mov","avi","mpg","mp2","mp3","m4a","oga","ogg","ogv","opus","flac","wav","spx","amr","pdf","epub","elf","macho","exe","swf","rtf","wasm","woff","woff2","eot","ttf","otf","ttc","ico","flv","ps","xz","sqlite","nes","crx","xpi","cab","deb","ar","rpm","Z","lz","cfb","mxf","mts","blend","bpg","docx","pptx","xlsx","3gp","3g2","j2c","jp2","jpm","jpx","mj2","aif","qcp","odt","ods","odp","xml","mobi","heic","cur","ktx","ape","wv","dcm","ics","glb","pcap","dsf","lnk","alias","voc","ac3","m4v","m4p","m4b","f4v","f4p","f4b","f4a","mie","asf","ogm","ogx","mpc","arrow","shp","aac","mp1","it","s3m","xm","ai","skp","avif","eps","lzh","pgp","asar","stl","chm","3mf","zst","jxl","vcf","jls","pst","dwg","parquet","class","arj","cpio","ace","avro","icc","fbx","vsdx","vtt","apk","drc","lz4","potx","xltx","dotx","xltm","ott","ots","otp","odg","otg","xlsm","docm","dotm","potm","pptm","jar","rm","ppsm","ppsx"],GU=["image/jpeg","image/png","image/gif","image/webp","image/flif","image/x-xcf","image/x-canon-cr2","image/x-canon-cr3","image/tiff","image/bmp","image/vnd.ms-photo","image/vnd.adobe.photoshop","application/x-indesign","application/epub+zip","application/x-xpinstall","application/vnd.ms-powerpoint.slideshow.macroenabled.12","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/zip","application/x-tar","application/x-rar-compressed","application/gzip","application/x-bzip2","application/x-7z-compressed","application/x-apple-diskimage","application/x-apache-arrow","video/mp4","audio/midi","video/x-matroska","video/webm","video/quicktime","video/vnd.avi","audio/wav","audio/qcelp","audio/x-ms-asf","video/x-ms-asf","application/vnd.ms-asf","video/mpeg","video/3gpp","audio/mpeg","audio/mp4","video/ogg","audio/ogg","audio/ogg; codecs=opus","application/ogg","audio/x-flac","audio/ape","audio/wavpack","audio/amr","application/pdf","application/x-elf","application/x-mach-binary","application/x-msdownload","application/x-shockwave-flash","application/rtf","application/wasm","font/woff","font/woff2","application/vnd.ms-fontobject","font/ttf","font/otf","font/collection","image/x-icon","video/x-flv","application/postscript","application/eps","application/x-xz","application/x-sqlite3","application/x-nintendo-nes-rom","application/x-google-chrome-extension","application/vnd.ms-cab-compressed","application/x-deb","application/x-unix-archive","application/x-rpm","application/x-compress","application/x-lzip","application/x-cfb","application/x-mie","application/mxf","video/mp2t","application/x-blender","image/bpg","image/j2c","image/jp2","image/jpx","image/jpm","image/mj2","audio/aiff","application/xml","application/x-mobipocket-ebook","image/heif","image/heif-sequence","image/heic","image/heic-sequence","image/icns","image/ktx","application/dicom","audio/x-musepack","text/calendar","text/vcard","text/vtt","model/gltf-binary","application/vnd.tcpdump.pcap","audio/x-dsf","application/x.ms.shortcut","application/x.apple.alias","audio/x-voc","audio/vnd.dolby.dd-raw","audio/x-m4a","image/apng","image/x-olympus-orf","image/x-sony-arw","image/x-adobe-dng","image/x-nikon-nef","image/x-panasonic-rw2","image/x-fujifilm-raf","video/x-m4v","video/3gpp2","application/x-esri-shape","audio/aac","audio/x-it","audio/x-s3m","audio/x-xm","video/MP1S","video/MP2P","application/vnd.sketchup.skp","image/avif","application/x-lzh-compressed","application/pgp-encrypted","application/x-asar","model/stl","application/vnd.ms-htmlhelp","model/3mf","image/jxl","application/zstd","image/jls","application/vnd.ms-outlook","image/vnd.dwg","application/x-parquet","application/java-vm","application/x-arj","application/x-cpio","application/x-ace-compressed","application/avro","application/vnd.iccprofile","application/x.autodesk.fbx","application/vnd.visio","application/vnd.android.package-archive","application/vnd.google.draco","application/x-lz4","application/vnd.openxmlformats-officedocument.presentationml.template","application/vnd.openxmlformats-officedocument.spreadsheetml.template","application/vnd.openxmlformats-officedocument.wordprocessingml.template","application/vnd.ms-excel.template.macroenabled.12","application/vnd.oasis.opendocument.text-template","application/vnd.oasis.opendocument.spreadsheet-template","application/vnd.oasis.opendocument.presentation-template","application/vnd.oasis.opendocument.graphics","application/vnd.oasis.opendocument.graphics-template","application/vnd.ms-excel.sheet.macroenabled.12","application/vnd.ms-word.document.macroenabled.12","application/vnd.ms-word.template.macroenabled.12","application/vnd.ms-powerpoint.template.macroenabled.12","application/vnd.ms-powerpoint.presentation.macroenabled.12","application/java-archive","application/vnd.rn-realmedia"];var aS=4100;async function XU(r){return new lS().fromBuffer(r)}function cS(r){switch(r.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:"application/epub+zip"};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:"application/vnd.oasis.opendocument.text-template"};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:"application/vnd.oasis.opendocument.spreadsheet-template"};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:"application/vnd.oasis.opendocument.presentation-template"};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:"application/vnd.oasis.opendocument.graphics"};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:"application/vnd.oasis.opendocument.graphics-template"};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:"application/vnd.openxmlformats-officedocument.presentationml.slideshow"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.template"};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.template"};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:"application/vnd.openxmlformats-officedocument.presentationml.template"};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"};default:}}function fs(r,e,t){t={offset:0,...t};for(let[n,i]of e.entries())if(t.mask){if(i!==(t.mask[n]&r[n+t.offset]))return!1}else if(i!==r[n+t.offset])return!1;return!0}var lS=class{constructor(e){this.detectors=[...e?.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:e?.signal}}async fromTokenizer(e){let t=e.position;for(let n of this.detectors){let i=await n.detect(e);if(i)return i;if(t!==e.position)return}}async fromBuffer(e){if(!(e instanceof Uint8Array||e instanceof ArrayBuffer))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t?.length>1)return this.fromTokenizer(AU(t,this.tokenizerOptions))}async fromBlob(e){return this.fromStream(e.stream())}async fromStream(e){let t=await SU(e,this.tokenizerOptions);try{return await this.fromTokenizer(t)}finally{await t.close()}}async toDetectionStream(e,t){let{sampleSize:n=aS}=t,i,o,s=e.getReader({mode:"byob"});try{let{value:l,done:u}=await s.read(new Uint8Array(n));if(o=l,!u&&l)try{i=await this.fromBuffer(l.slice(0,n))}catch(f){if(!(f instanceof Vt))throw f;i=void 0}o=l}finally{s.releaseLock()}let a=new TransformStream({async start(l){l.enqueue(o)},transform(l,u){u.enqueue(l)}}),c=e.pipeThrough(a);return c.fileType=i,c}check(e,t){return fs(this.buffer,e,t)}checkString(e,t){return this.check(KU(e),t)}detectConfident=async e=>{if(this.buffer=new Uint8Array(aS),e.fileInfo.size===void 0&&(e.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=e,await e.peekBuffer(this.buffer,{length:12,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return await e.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14})?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191]))return this.tokenizer.ignore(3),this.detectConfident(e);if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await e.ignore(6);let t=await e.readToken(jU);return e.position+t>e.fileInfo.size?{ext:"mp3",mime:"audio/mpeg"}:(await e.ignore(t),this.fromTokenizer(e))}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((this.buffer[0]===67||this.buffer[0]===70)&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let t;return await new Z5(e).unzip(n=>{switch(n.filename){case"META-INF/mozilla.rsa":return t={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return t={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":return{async handler(i){let o=new TextDecoder("utf-8").decode(i).trim();t=cS(o)},stop:!0};case"[Content_Types].xml":return{async handler(i){let o=new TextDecoder("utf-8").decode(i),s=o.indexOf('.main+xml"');if(s===-1){let a="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";o.includes(`ContentType="${a}"`)&&(t=cS(a))}else{o=o.slice(0,Math.max(0,s));let a=o.lastIndexOf('"'),c=o.slice(Math.max(0,a+1));t=cS(c)}},stop:!0};default:return/classes\d*\.dex/.test(n.filename)?(t={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0}):{}}}),t??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await e.ignore(28);let t=new Uint8Array(8);return await e.readBuffer(t),fs(t,[79,112,117,115,72,101,97,100])?{ext:"opus",mime:"audio/ogg; codecs=opus"}:fs(t,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:fs(t,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:fs(t,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:fs(t,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:fs(t,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(this.buffer[2]===3||this.buffer[2]===5||this.buffer[2]===7)&&(this.buffer[3]===4||this.buffer[3]===6||this.buffer[3]===8))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/x-flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF")){try{if(await e.ignore(1350)===1350){let i=new Uint8Array(Math.min(10485760,e.fileInfo.size-1350));if(await e.readBuffer(i,{mayBeLess:!0}),zU(i,new TextEncoder().encode("AIPrivateData")))return{ext:"ai",mime:"application/postscript"}}}catch(t){if(!(t instanceof Vt))throw t}return{ext:"pdf",mime:"application/pdf"}}if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let t=await this.readTiffHeader(!1);if(t)return t}if(this.check([77,77])){let t=await this.readTiffHeader(!0);if(t)return t}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function t(){let a=await e.peekNumber(xU),c=128,l=0;for(;(a&c)===0&&c!==0;)++l,c>>=1;let u=new Uint8Array(l+1);return await e.readBuffer(u),u}async function n(){let a=await t(),c=await t();c[0]^=128>>c.length-1;let l=Math.min(6,c.length),u=new DataView(a.buffer),f=new DataView(c.buffer,c.length-l,l);return{id:sS(u),len:sS(f)}}async function i(a){for(;a>0;){let c=await n();if(c.id===17026)return(await e.readToken(new Yn(c.len))).replaceAll(/\00.*$/g,"");await e.ignore(c.len),--a}}let o=await n();switch(await i(o.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/x-matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1"))return{ext:"parquet",mime:"application/x-parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190]))return{ext:"class",mime:"application/java-vm"};if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(this.buffer[6]===0||this.buffer[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let t=new Yn(4,"latin1").get(this.buffer,2);if(t.match("^d*")&&t>=1e3&&t<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return await e.ignore(8),await e.readToken(new Yn(13,"ascii"))==="debian-binary"?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&[`
83
- `,"\r"," "," ","\0"].some(t=>this.checkString(t,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){await e.ignore(8);async function t(){return{length:await e.readToken(vU),type:await e.readToken(new Yn(4,"latin1"))}}do{let n=await t();if(n.length<0)return;switch(n.type){case"IDAT":return{ext:"png",mime:"image/png"};case"acTL":return{ext:"apng",mime:"image/apng"};default:await e.ignore(n.length+4)}}while(e.position+8<e.fileInfo.size);return{ext:"png",mime:"image/png"}}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/x-apache-arrow"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(this.buffer[8]&96)!==0){let t=new Yn(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(t){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:return t.startsWith("3g")?t.startsWith("3g2")?{ext:"3g2",mime:"video/3gpp2"}:{ext:"3gp",mime:"video/3gpp"}:{ext:"mp4",mime:"video/mp4"}}}if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){async function t(){let n=new Uint8Array(16);return await e.readBuffer(n),{id:n,size:Number(await e.readToken(EU))}}for(await e.ignore(30);e.position+24<e.fileInfo.size;){let n=await t(),i=n.size-24;if(fs(n.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let o=new Uint8Array(16);if(i-=await e.readBuffer(o),fs(o,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(fs(o,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}await e.ignore(i)}return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await e.ignore(20),await e.readToken(new Yn(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.check([0,60,0,63,0,120,0,109,0,108],{offset:2})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await e.peekBuffer(this.buffer,{length:Math.min(256,e.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let t=new DataView(this.buffer.buffer).getUint32(12,!0);if(t>12&&this.buffer.length>=t+16)try{let n=new TextDecoder().decode(this.buffer.slice(16,t+16));if(JSON.parse(n).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188}))return{ext:"mts",mime:"video/mp2t"};if(this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(await e.peekBuffer(this.buffer,{length:Math.min(512,e.fileInfo.size),mayBeLess:!0}),qU(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254]))return this.check([60,0,63,0,120,0,109,0,108,0],{offset:2})?{ext:"xml",mime:"application/xml"}:this.check([255,14,83,0,107,0,101,0,116,0,99,0,104,0,85,0,112,0,32,0,77,0,111,0,100,0,101,0,108,0],{offset:2})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:void 0;if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async e=>{if(this.buffer=new Uint8Array(aS),await e.peekBuffer(this.buffer,{length:Math.min(8,e.fileInfo.size),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(this.buffer.length>=2&&this.check([255,224],{offset:0,mask:[255,224]})){if(this.check([16],{offset:1,mask:[22]}))return this.check([8],{offset:1,mask:[8]})?{ext:"aac",mime:"audio/aac"}:{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}};async readTiffTag(e){let t=await this.tokenizer.readToken(e?ch:Ut);switch(this.tokenizer.ignore(10),t){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"};default:}}async readTiffIFD(e){let t=await this.tokenizer.readToken(e?ch:Ut);for(let n=0;n<t;++n){let i=await this.readTiffTag(e);if(i)return i}}async readTiffHeader(e){let t=(e?ch:Ut).get(this.buffer,2),n=(e?bU:sr).get(this.buffer,4);if(t===42){if(n>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(n>=8){let o=(e?ch:Ut).get(this.buffer,8),s=(e?ch:Ut).get(this.buffer,10);if(o===28&&s===254||o===31&&s===11)return{ext:"nef",mime:"image/x-nikon-nef"}}}return await this.tokenizer.ignore(n),await this.readTiffIFD(e)??{ext:"tif",mime:"image/tiff"}}if(t===43)return{ext:"tif",mime:"image/tiff"}}},hit=new Set(WU),pit=new Set(GU);var Sc=ze("helia:verified-fetch:content-type-parser"),J5="application/octet-stream";function bee(r){return Sc("checking for svg"),/^(<\?xml[^>]+>)?[^<^\w]+<svg/ig.test(r)}async function vee(r){Sc("checking for json");try{return JSON.parse(r),!0}catch(e){return Sc("failed to parse as json",e),!1}}function Eee(r){Sc("checking for text");let e=new TextDecoder("utf-8",{fatal:!0});try{return e.decode(r)}catch{return null}}async function See(r){return Sc("checking for html"),/^\s*<(?:!doctype\s+html|html|head|body)\b/i.test(r)}async function YU(r,e){Sc("contentTypeParser called for fileName: %s, byte size=%s",e,r.length);let t=(await XU(r))?.mime;if(t!=null)return Sc("detectedType: %s",t),t;if(Sc("no detectedType"),e==null){let n=Eee(r);return n!=null?bee(n)?"image/svg+xml":await vee(n)?"application/json":await See(n)?"text/html; charset=utf-8":"text/plain; charset=utf-8":J5}switch(e.split(".").pop()){case"css":return"text/css";case"html":return"text/html; charset=utf-8";case"js":return"application/javascript";case"json":return"application/json";case"txt":return"text/plain";case"woff2":return"font/woff2";case"svg":return"image/svg+xml";case"csv":return"text/csv";case"doc":return"application/msword";case"xls":return"application/vnd.ms-excel";case"ppt":return"application/vnd.ms-powerpoint";case"msi":return"application/x-msdownload";default:return J5}}function QU(r){return r?.then!=null}async function e8({bytes:r,path:e,response:t,contentTypeParser:n,log:i,defaultContentType:o="application/octet-stream"}){let s;if(n!=null)try{let a=e.split("/").pop()?.trim();a=a===""?void 0:a;let c=n(r,a);if(QU(c)){let l=await c;l!=null&&(s=l)}else c!=null&&(s=c);i.trace("contentTypeParser returned %s",s)}catch(a){i.error("error parsing content type",a)}s===J5&&(s=o),i.trace('setting content type to "%s"',s??o),t.headers.set("content-type",s??o)}var t8=class extends Mt{codes=[ct];canHandle({cid:e,accept:t,pathDetails:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),n==null||i==null?!1:e.code===ct}getRedirectUrl(e){let{resource:t,path:n}=e;if(n===""?!t.toString().endsWith("/"):!n.endsWith("/"))try{let o=new URL(t.toString());return o.pathname.endsWith("/")?null:(o.pathname=`${o.pathname}/`,o.toString())}catch{return`${t.toString()}/`}return null}async handle(e){let{cid:t,options:n,withServerTiming:i=!1,pathDetails:o}=e,{handleServerTiming:s,contentTypeParser:a,helia:c,getBlockstore:l}=this.pluginOptions,u=this.log,f=e.resource,h=e.path,d=!1,m=e.byteRangeContext,g=o.ipfsRoots,w=o.terminalElement,x=w.cid;if(w?.type==="directory"){let S=w.cid,T=this.getRedirectUrl(e);if(T!=null){if(u.trace("directory url normalization spec requires redirect..."),n?.redirect==="error")throw u('could not redirect to %s as redirect option was set to "error"',T),new TypeError("Failed to fetch");if(n?.redirect==="manual")return u("returning 301 permanent redirect to %s",T),Cm(f,T);u("following redirect to %s",T),f=T,d=!0}let D="index.html";try{u.trace("found directory at %c/%s, looking for index.html",t,h);let A=await s("exporter-dir","",async()=>pr(`/ipfs/${S}/${D}`,c.blockstore,{signal:n?.signal,onProgress:n?.onProgress}),i);u.trace("found root file at %c/%s with cid %c",S,D,A.cid),h=D,x=A.cid}catch(A){this.log.error("error loading path %c/%s",S,D,A),n?.signal?.throwIfAborted(),e.isDirectory=!0,e.directoryEntries=[],e.modified++,this.log.trace("attempting to get directory entries because index.html was not found");let I=mU({...c,blockstore:l(e.cid,e.resource,n?.session??!0,n)});try{for await(let k of I.ls(S,{signal:n?.signal,onProgress:n?.onProgress}))e.directoryEntries.push(k);return null}catch(k){return u.error("error listing directory %c",S,k),p5("Unable to get directory contents")}}finally{n?.onProgress?.(new G("verified-fetch:request:end",{cid:S,path:D}))}}m.isRangeRequest&&m.isValidRangeRequest&&w.type==="file"&&(m.setFileSize(w.unixfs.fileSize()),u.trace("fileSize for rangeRequest %d",m.getFileSize()));let v=m.offset,b=m.length;u.trace("calling exporter for %c/%s with offset=%o & length=%o",x,h,v,b);try{let T=(await s("exporter-file","",async()=>pr(x,c.blockstore,{signal:n?.signal,onProgress:n?.onProgress}),i)).content({signal:n?.signal,onProgress:n?.onProgress,offset:v,length:b});u("got async iterator for %c/%s",t,h);let{stream:D,firstChunk:A}=await s("stream-and-chunk","",async()=>gU(T,h??"",this.pluginOptions.logger,{onProgress:n?.onProgress,signal:n?.signal}),i);m.setBody(D);let I=cn(f,m.getBody(),{byteRangeContext:m,log:u},{redirected:d});return await s("set-content-type","",async()=>e8({bytes:A,path:h,response:I,contentTypeParser:a,log:u}),i),a5(I,g),I}catch(S){return n?.signal?.throwIfAborted(),u.error("error streaming %c/%s",t,h,S),m.isRangeRequest&&S.code==="ERR_INVALID_PARAMS"?h5(f):Qd(f.toString(),"Unable to stream content")}}};var r8=class extends Mt{canHandle(e){this.log("checking if we can handle %c with accept %s",e.cid,e.accept);let{pathDetails:t,cid:n}=e;return t!=null?!1:n.code===ct||n.code===Pn}async handle(e){let{cid:t,resource:n,options:i,withServerTiming:o=!1}=e,{getBlockstore:s,handleServerTiming:a}=this.pluginOptions,c=s(t,n,i?.session??!0,i),l=await a("path-walking","",async()=>RM({...e,blockstore:c,log:this.log}),o);return e.modified++,l instanceof Response?(this.log.trace("path walking failed"),l.status===404?l:null):(e.pathDetails=l,null)}};var ZU;(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"})(ZU||(ZU={}));function n8(r){return r.charAt(0)==="1"||r.charAt(0)==="Q"?at(r):gn(W.parse(r))}var zm=class extends Error{name="PluginError";code;fatal;details;response;constructor(e,t,n){super(t),this.code=e,this.fatal=n?.fatal??!1,this.details=n?.details,this.response=n?.response}},na=class extends zm{name="PluginFatalError";constructor(e,t,n){super(e,t,{...n,fatal:!0}),this.name="PluginFatalError"}};var i8=class extends Mt{codes=[];canHandle({cid:e,accept:t,query:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),i==null?!1:t==="application/vnd.ipfs.ipns-record"||n.format==="ipns-record"}async handle(e){let{resource:t,path:n,options:i}=e,{helia:o}=this.pluginOptions;if(e.reqFormat="ipns-record",n!==""||!(t.startsWith("ipns://")||t.includes(".ipns.")||t.includes("/ipns/")))throw this.log.error('invalid request for IPNS name "%s" and path "%s"',t,n),new na("ERR_INVALID_IPNS_NAME","Invalid IPNS name",{response:Tm(t,new Error("Invalid IPNS name"))});let s;try{let h;t.startsWith("ipns://")?h=t.replace("ipns://",""):t.includes("/ipns/")?h=t.split("/ipns/")[1].split("/")[0].split("?")[0]:h=t.split(".ipns.")[0].split("://")[1],this.log.trace('trying to parse peer id from "%s"',h),s=n8(h)}catch(h){throw this.log.error("could not parse peer id from IPNS url %s",t,h),new na("ERR_NO_PEER_ID_FOUND","could not parse peer id from url",{response:Tm(t,h)})}let a=Ve([O("/ipns/"),s.toMultihash().bytes]),c=new nt("/dht/record/"+H(a,"base32"),!1),l=await o.datastore.get(c,i),u=kt.deserialize(l);e.byteRangeContext.setBody(u.value);let f=cn(t,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return f.headers.set("content-type","application/vnd.ipfs.ipns-record"),f}};var o8=class extends Mt{codes=[co,Bo];canHandle({cid:e,accept:t,byteRangeContext:n}){return this.log("checking if we can handle %c with accept %s",e,t),n==null?!1:t==="application/vnd.ipld.dag-json"&&e.code!==Pn?!0:co===e.code||Bo===e.code}async handle(e){let{path:t,resource:n,cid:i,accept:o,options:s}=e,{getBlockstore:a}=this.pluginOptions,c=s?.session??!0;this.log.trace("fetching %c/%s",i,t);let l=e.pathDetails?.terminalElement.cid??e.cid,f=await a(l,n,c,s).get(l,s),h;if(o==="application/vnd.ipld.dag-cbor"||o==="application/cbor")try{let g=_f(f);h=Sf(g)}catch(g){return this.log.error("could not transform %c to application/vnd.ipld.dag-cbor",g),ta(n)}else h=f;let d;o==null?co===i.code?d="application/vnd.ipld.dag-json":d="application/json":d=o.split(";")[0],e.byteRangeContext.setBody(h);let m=cn(n,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return this.log.trace("setting content-type to %s",d),m.headers.set("content-type",d),e.byteRangeContext.isValidRangeRequest||m.headers.set("content-length",h.length.toString()),m}};var Aee=["application/vnd.ipld.dag-json","application/vnd.ipld.raw","application/octet-stream"];function _ee({headers:r,accept:e}){let n=(e??new Headers(r).get("accept")??"").split(",").map(i=>i.split(";")[0]).map(i=>i.trim());for(let i of n){if(i==="*/*")return;if(Aee.includes(i??""))return i}}var s8=class extends Mt{codes=[vt,cr.code];canHandle({cid:e,accept:t,query:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),i==null?!1:t==="application/vnd.ipld.raw"||n.format==="raw"}async handle(e){let{path:t,resource:n,cid:i,accept:o,query:s,options:a}=e,{getBlockstore:c,contentTypeParser:l}=this.pluginOptions,u=a?.session??!0,f=this.log;if(o==="application/vnd.ipld.raw"||s.format==="raw"?(e.reqFormat="raw",e.query.download=!0,e.query.filename=e.query.filename??`${i.toString()}.bin`,f.trace("Set content disposition...")):f.trace("Did NOT set content disposition..."),t!==""&&i.code===vt)throw f.trace("404-ing raw codec request for %c/%s",i,t),new na("ERR_RAW_PATHS_NOT_SUPPORTED","Raw codec does not support paths",{response:m5(n,"Raw codec does not support paths")});let h=e.pathDetails?.terminalElement.cid??e.cid,m=await c(h,n,u,a).get(h,a);e.byteRangeContext.setBody(m);let g=cn(n,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:f},{redirected:!1});return await e8({bytes:m,path:t,response:g,defaultContentType:_ee({headers:a?.headers,accept:o}),contentTypeParser:l,log:f}),g}};var Iee=({weak:r,reqFormat:e})=>e==="tar"||e==="car"||e==="ipns-record"||r===!0?"W/":"",Tee=({reqFormat:r})=>r==null?"":r==="tar"?".x-tar":`.${r}`;function ph({cid:r,reqFormat:e,weak:t,rangeStart:n,rangeEnd:i,contentPrefix:o}){let s=Iee({weak:t,reqFormat:e}),a=Tee({reqFormat:e});return(n!=null||i!=null)&&(a+=`.${n??"0"}-${i??"N"}`),`${s}"${o??""}${r.toString()}${a}"`}var got=O("ustar\0","binary"),yot=O("ustar ","binary"),wot=O(" \0","binary");var nF=it(eF(),1);function kee(r){return r[Symbol.asyncIterator]!=null}function Pee(r){if(kee(r))return(async()=>{let n=new Uint8Array(0);for await(let i of r)n=Ve([n,i],n.length+i.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Ve(e,t)}var tF=Pee;var Ree="0000000000000000000",Dee="7777777777777777777",Nee=48,Oee=O("ustar\0","binary"),Lee=O("00","binary"),Bee=parseInt("7777",8),Mee=257,Uee=263,Fee=function(r){switch(r){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72;default:return 0}},$ee=function(r){let e=256;for(let t=0;t<148;t++)e+=r[t];for(let t=156;t<512;t++)e+=r[t];return e},Ac=function(r,e){let t=r.toString(8);return t.length>e?O(Dee.slice(0,e)+" "):O(Ree.slice(0,e-t.length)+t+" ")},uS=function(r){let e=O(r).byteLength,t=Math.floor(Math.log(e)/Math.log(10))+1;return e+t>=Math.pow(10,t)&&t++,`${e+t}${r}`};function rF(r){let e="";r.name!=null&&(e+=uS(" path="+r.name+`
82
+ `),t),t.log('handle: responded with "na" for "%s"',i)}}var xQ=500,CE=class{id;remoteAddr;remotePeer;direction;timeline;multiplexer;encryption;status;limits;log;tags;_newStream;_close;_abort;_getStreams;constructor(e){let{remoteAddr:t,remotePeer:n,newStream:i,close:o,abort:s,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.limits=e.limits,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=i,this._close=o,this._abort=s,this._getStreams=a,this.tags=[]}[Symbol.toStringTag]="Connection";[wS]=!0;get streams(){return this._getStreams()}async newStream(e,t){if(this.status==="closing")throw new n0("the connection is being closed");if(this.status==="closed")throw new $u("the connection is closed");if(Array.isArray(e)||(e=[e]),this.limits!=null&&t?.runOnLimitedConnection!==!0)throw new zu("Cannot open protocol stream on limited 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(xQ);e={...e,signal:t}}try{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.status!=="closed"&&(this.log.error("aborting connection to %a due to error",this.remoteAddr,e),this.status="closing",this._abort(e),this.status="closed",this.timeline.close=Date.now())}};function TB(r){return new CE(r)}function vQ(r,e){try{let{options:t}=e.getHandler(r);return t.maxInboundStreams}catch(t){if(t.name!=="UnhandledProtocolError")throw t}return _E}function EQ(r,e,t={}){try{let{options:n}=e.getHandler(r);if(n.maxOutboundStreams!=null)return n.maxOutboundStreams}catch(n){if(n.name!=="UnhandledProtocolError")throw n}return t.maxOutboundStreams??IE}function CB(r,e,t){let n=0;return t.streams.forEach(i=>{i.direction===e&&i.protocol===r&&n++}),n}var e5=class{components;connectionEncrypters;streamMuxers;inboundUpgradeTimeout;inboundStreamProtocolNegotiationTimeout;outboundStreamProtocolNegotiationTimeout;events;metrics;constructor(e,t){this.components=e,this.connectionEncrypters=new Map,t.connectionEncrypters.forEach(n=>{this.connectionEncrypters.set(n.protocol,n)}),this.streamMuxers=new Map,t.streamMuxers.forEach(n=>{this.streamMuxers.set(n.protocol,n)}),this.inboundUpgradeTimeout=t.inboundUpgradeTimeout??1e4,this.inboundStreamProtocolNegotiationTimeout=t.inboundStreamProtocolNegotiationTimeout??1e4,this.outboundStreamProtocolNegotiationTimeout=t.outboundStreamProtocolNegotiationTimeout??1e4,this.events=e.events,this.metrics={dials:e.metrics?.registerCounterGroup("libp2p_connection_manager_dials_total"),errors:e.metrics?.registerCounterGroup("libp2p_connection_manager_dial_errors_total")}}[Symbol.toStringTag]="@libp2p/upgrader";async shouldBlockConnection(e,...t){let n=this.components.connectionGater[e];if(n==null)return;if(await n.apply(this.components.connectionGater,t)===!0)throw new N6(`The multiaddr connection is blocked by gater.${e}`)}createInboundAbortSignal(e){let t=Ne([AbortSignal.timeout(this.inboundUpgradeTimeout),e]);return t}async upgradeInbound(e,t){let n=!1,i=this.createInboundAbortSignal(t.signal);try{if(this.metrics.dials?.increment({inbound:!0}),n=await this.components.connectionManager.acceptIncomingConnection(e),!n)throw new O6("Connection denied");await this.shouldBlockConnection("denyInboundConnection",e),await this._performUpgrade(e,"inbound",{...t,signal:i})}catch(o){throw this.metrics.errors?.increment({inbound:!0}),o}finally{i.clear(),n&&this.components.connectionManager.afterUpgradeInbound()}}async upgradeOutbound(e,t){try{this.metrics.dials?.increment({outbound:!0});let n=e.remoteAddr.getPeerId(),i;n!=null&&(i=at(n),await this.shouldBlockConnection("denyOutboundConnection",i,e));let o="outbound";return t.initiator===!1&&(o="inbound"),await this._performUpgrade(e,o,t)}catch(n){throw this.metrics.errors?.increment({outbound:!0}),n}}async _performUpgrade(e,t,n){let i,o,s,a,c;this.components.metrics?.trackMultiaddrConnection(e),e.log.trace("starting the %s connection upgrade",t);let l=e;if(n?.skipProtection!==!0){let u=this.components.connectionProtector;u!=null&&(e.log("protecting the %s connection",t),l=await u.protect(e,n))}try{if(i=l,n?.skipEncryption!==!0){n?.onProgress?.(new G(`upgrader:encrypt-${t}-connection`)),{conn:i,remotePeer:o,protocol:c,streamMuxer:a}=await(t==="inbound"?this._encryptInbound(l,n):this._encryptOutbound(l,n));let u={...l,...i};await this.shouldBlockConnection(t==="inbound"?"denyInboundEncryptedConnection":"denyOutboundEncryptedConnection",o,u)}else{let u=e.remoteAddr.getPeerId();if(u==null)throw new sa(`${t} connection that skipped encryption must have a peer id`);let f=at(u);c="native",o=f}if(o.equals(this.components.peerId)){let u=new Vu("Can not dial self");throw e.abort(u),u}if(s=i,n?.muxerFactory!=null)a=n.muxerFactory;else if(a==null&&this.streamMuxers.size>0){n?.onProgress?.(new G(`upgrader:multiplex-${t}-connection`));let u=await(t==="inbound"?this._multiplexInbound({...l,...i},this.streamMuxers,n):this._multiplexOutbound({...l,...i},this.streamMuxers,n));a=u.muxerFactory,s=u.stream}}catch(u){throw e.log.error("failed to upgrade inbound connection %s %a - %e",t==="inbound"?"from":"to",e.remoteAddr,u),u}return await this.shouldBlockConnection(t==="inbound"?"denyInboundUpgradedConnection":"denyOutboundUpgradedConnection",o,e),e.log("successfully upgraded %s connection",t),this._createConnection({cryptoProtocol:c,direction:t,maConn:e,upgradedConn:s,muxerFactory:a,remotePeer:o,limits:n?.limits})}_createConnection(e){let{cryptoProtocol:t,direction:n,maConn:i,upgradedConn:o,remotePeer:s,muxerFactory:a,limits:c}=e,l,u,f;a!=null&&(l=a.createStreamMuxer({direction:n,onIncomingStream:m=>{f!=null&&Promise.resolve().then(async()=>{let g=this.components.registrar.getProtocols(),w=AbortSignal.timeout(this.inboundStreamProtocolNegotiationTimeout);let{stream:x,protocol:v}=await vm(m,g,{signal:w,log:m.log,yieldBytes:!1});if(f==null)return;f.log("incoming stream opened on %s",v);let b=vQ(v,this.components.registrar);if(CB(v,"inbound",f)===b){let T=new a0(`Too many inbound protocol streams for protocol "${v}" - limit ${b}`);throw m.abort(T),T}m.source=x.source,m.sink=x.sink,m.protocol=v,x.closeWrite!=null&&(m.closeWrite=x.closeWrite),x.closeRead!=null&&(m.closeRead=x.closeRead),x.close!=null&&(m.close=x.close),await this.components.peerStore.merge(s,{protocols:[v]}),this.components.metrics?.trackProtocolStream(m,f),this._onStream({connection:f,stream:m,protocol:v})}).catch(async g=>{f.log.error("error handling incoming stream id %s - %e",m.id,g),m.timeline.close==null&&await m.close()})}}),u=async(m,g={})=>{if(l==null)throw new _u("Connection is not multiplexed");f.log.trace("starting new stream for protocols %s",m);let w=await l.newStream();f.log.trace("started new stream %s for protocols %s",w.id,m);try{if(g.signal==null){w.log("no abort signal was passed while trying to negotiate protocols %s falling back to default timeout",m);let T=AbortSignal.timeout(this.outboundStreamProtocolNegotiationTimeout);g={...g,signal:T}}w.log.trace("selecting protocol from protocols %s",m);let{stream:x,protocol:v}=await bm(w,m,{...g,log:w.log,yieldBytes:!0});w.log.trace("selected protocol %s",v);let b=EQ(v,this.components.registrar,g),S=CB(v,"outbound",f);if(S>=b){let T=new ca(`Too many outbound protocol streams for protocol "${v}" - ${S}/${b}`);throw w.abort(T),T}return await this.components.peerStore.merge(s,{protocols:[v]}),w.source=x.source,w.sink=x.sink,w.protocol=v,x.closeWrite!=null&&(w.closeWrite=x.closeWrite),x.closeRead!=null&&(w.closeRead=x.closeRead),x.close!=null&&(w.close=x.close),this.components.metrics?.trackProtocolStream(w,f),w}catch(x){throw f.log.error("could not create new outbound stream on connection %s %a for protocols %s - %e",n==="inbound"?"from":"to",e.maConn.remoteAddr,m,x),w.timeline.close==null&&w.abort(x),x}},Promise.all([l.sink(o.source),o.sink(l.source)]).catch(m=>{f.log.error("error piping data through muxer - %e",m)}));let h=i.timeline;i.timeline=new Proxy(h,{set:(...m)=>(m[1]==="close"&&m[2]!=null&&h.close==null&&(async()=>{try{f.status==="open"&&await f.close()}catch(g){f.log.error("error closing connection after timeline close %e",g)}finally{this.events.safeDispatchEvent("connection:close",{detail:f})}})().catch(g=>{f.log.error("error thrown while dispatching connection:close event %e",g)}),Reflect.set(...m))}),i.timeline.upgraded=Date.now();let d=()=>{throw new _u("Connection is not multiplexed")};return f=TB({remoteAddr:i.remoteAddr,remotePeer:s,status:"open",direction:n,timeline:i.timeline,multiplexer:l?.protocol,encryption:t,limits:c,logger:this.components.logger,newStream:u??d,getStreams:()=>l?.streams??[],close:async m=>{await l?.close(m),await i.close(m)},abort:m=>{i.abort(m),l?.abort(m)}}),this.events.safeDispatchEvent("connection:open",{detail:f}),f.__maConnTimeline=h,f}_onStream(e){let{connection:t,stream:n,protocol:i}=e,{handler:o,options:s}=this.components.registrar.getHandler(i);if(t.limits!=null&&s.runOnLimitedConnection!==!0)throw new zu("Cannot open protocol stream on limited connection");o({connection:t,stream:n})}async _encryptInbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{let{stream:i,protocol:o}=await vm(e,n,{...t,log:e.log}),s=this.connectionEncrypters.get(o);if(s==null)throw new Iu(`no crypto module found for ${o}`);return e.log("encrypting inbound connection to %a using %s",e.remoteAddr,o),{...await s.secureInbound(i,t),protocol:o}}catch(i){throw e.log.error("encrypting inbound connection from %a failed",e.remoteAddr,i),new Iu(i.message)}}async _encryptOutbound(e,t){let n=Array.from(this.connectionEncrypters.keys());try{e.log.trace("selecting encrypter from %s",n);let{stream:i,protocol:o}=await bm(e,n,{...t,log:e.log,yieldBytes:!0}),s=this.connectionEncrypters.get(o);if(s==null)throw new Iu(`no crypto module found for ${o}`);return e.log("encrypting outbound connection to %a using %s",e.remoteAddr,o),{...await s.secureOutbound(i,t),protocol:o}}catch(i){throw e.log.error("encrypting outbound connection to %a failed",e.remoteAddr,i),new Iu(i.message)}}async _multiplexOutbound(e,t,n){let i=Array.from(t.keys());e.log("outbound selecting muxer %s",i);try{e.log.trace("selecting stream muxer from %s",i);let{stream:o,protocol:s}=await bm(e,i,{...n,log:e.log,yieldBytes:!0});e.log("selected %s as muxer protocol",s);let a=t.get(s);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing outbound connection",o),new _u(String(o))}}async _multiplexInbound(e,t,n){let i=Array.from(t.keys());e.log("inbound handling muxers %s",i);try{let{stream:o,protocol:s}=await vm(e,i,{...n,log:e.log}),a=t.get(s);return{stream:o,muxerFactory:a}}catch(o){throw e.log.error("error multiplexing inbound connection",o),new _u(String(o))}}getConnectionEncrypters(){return this.connectionEncrypters}getStreamMuxers(){return this.streamMuxers}};var t5=class extends Me{peerId;peerStore;contentRouting;peerRouting;metrics;services;logger;status;components;log;constructor(e){super(),this.status="stopped";let t=new Me,n=t.dispatchEvent.bind(t);t.dispatchEvent=l=>{let u=n(l),f=this.dispatchEvent(new CustomEvent(l.type,{detail:l.detail}));return u||f},this.peerId=e.peerId,this.logger=e.logger??Ea(),this.log=this.logger.forComponent("libp2p"),this.services={};let i=e.nodeInfo?.name??f6,o=e.nodeInfo?.version??u6,s=this.components=aB({peerId:e.peerId,privateKey:e.privateKey,nodeInfo:{name:i,version:o,userAgent:e.nodeInfo?.userAgent??d6(i,o)},logger:this.logger,events:t,datastore:e.datastore??new xl,connectionGater:lB(e.connectionGater),dns:e.dns});this.peerStore=this.configureComponent("peerStore",eB(s,{addressFilter:this.components.connectionGater.filterMultiaddrForPeer,...e.peerStore})),e.metrics!=null&&(this.metrics=this.configureComponent("metrics",e.metrics(this.components))),s.events.addEventListener("peer:update",l=>{if(l.detail.previous==null){let u={id:l.detail.peer.id,multiaddrs:l.detail.peer.addresses.map(f=>f.multiaddr)};s.events.safeDispatchEvent("peer:discovery",{detail:u})}}),e.connectionProtector!=null&&this.configureComponent("connectionProtector",e.connectionProtector(s)),this.components.upgrader=new e5(this.components,{connectionEncrypters:(e.connectionEncrypters??[]).map((l,u)=>this.configureComponent(`connection-encryption-${u}`,l(this.components))),streamMuxers:(e.streamMuxers??[]).map((l,u)=>this.configureComponent(`stream-muxers-${u}`,l(this.components))),inboundUpgradeTimeout:e.connectionManager?.inboundUpgradeTimeout,inboundStreamProtocolNegotiationTimeout:e.connectionManager?.inboundStreamProtocolNegotiationTimeout??e.connectionManager?.protocolNegotiationTimeout,outboundStreamProtocolNegotiationTimeout:e.connectionManager?.outboundStreamProtocolNegotiationTimeout??e.connectionManager?.protocolNegotiationTimeout}),this.configureComponent("transportManager",new Y6(this.components,e.transportManager)),this.configureComponent("connectionManager",new K6(this.components,e.connectionManager)),e.connectionMonitor?.enabled!==!1&&this.configureComponent("connectionMonitor",new q6(this.components,e.connectionMonitor)),this.configureComponent("registrar",new X6(this.components)),this.configureComponent("addressManager",new A6(this.components,e.addresses));let a=(e.peerRouters??[]).map((l,u)=>this.configureComponent(`peer-router-${u}`,l(this.components)));this.peerRouting=this.components.peerRouting=this.configureComponent("peerRouting",new W6(this.components,{routers:a}));let c=(e.contentRouters??[]).map((l,u)=>this.configureComponent(`content-router-${u}`,l(this.components)));if(this.contentRouting=this.components.contentRouting=this.configureComponent("contentRouting",new j6(this.components,{routers:c})),this.configureComponent("randomWalk",new G6(this.components)),(e.peerDiscovery??[]).forEach((l,u)=>{this.configureComponent(`peer-discovery-${u}`,l(this.components)).addEventListener("peer",h=>{this.#e(h)})}),e.transports?.forEach((l,u)=>{this.components.transportManager.add(this.configureComponent(`transport-${u}`,l(this.components)))}),e.services!=null)for(let l of Object.keys(e.services)){let u=e.services[l],f=u(this.components);if(f==null){this.log.error("service factory %s returned null or undefined instance",l);continue}this.services[l]=f,this.configureComponent(l,f),f[Do]!=null&&(this.log("registering service %s for content routing",l),c.push(f[Do])),f[No]!=null&&(this.log("registering service %s for peer routing",l),a.push(f[No])),f[_c]!=null&&(this.log("registering service %s for peer discovery",l),f[_c].addEventListener?.("peer",h=>{this.#e(h)}))}cB(s)}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 yn;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 U("no protocols were provided to open a stream");if(t=Array.isArray(t)?t:[t],t.length===0)throw new U("no protocols were provided to open a 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={}){ka(e)&&(e=at(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.name!=="NotFoundError")throw s}let n=Ve([O("/pk/"),e.toMultihash().bytes]),i=await this.contentRouting.get(n,t),o=tr(i);return await this.peerStore.patch(e,{publicKey:o}),o}async handle(e,t,n){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async i=>{await this.components.registrar.handle(i,t,n)}))}async unhandle(e){Array.isArray(e)||(e=[e]),await Promise.all(e.map(async t=>{await this.components.registrar.unhandle(t)}))}async register(e,t){return this.components.registrar.register(e,t)}unregister(e){this.components.registrar.unregister(e)}async isDialable(e,t={}){return this.components.connectionManager.isDialable(e,t)}#e(e){let{detail:t}=e;if(t.id.toString()===this.peerId.toString()){this.log.error("peer discovery mechanism discovered self");return}this.components.peerStore.merge(t.id,{multiaddrs:t.multiaddrs}).catch(n=>{this.log.error(n)})}};async function r5(r={}){r.privateKey??=await hf("Ed25519");let e=new t5({...await KL(r),peerId:T_(r.privateKey)});return r.start!==!1&&await e.start(),e}async function kB(r){let e=r.libp2p??{};e.privateKey==null&&r.datastore!=null&&(e.privateKey=await iE(r.datastore,r.keychain));let t=pm(e);return t.datastore=t.datastore??r.datastore,await r5({...t,...e,start:!1})}async function PB(r={}){let e=r.datastore??new xl,t=r.blockstore??new Rp,n;SQ(r.libp2p)?n=r.libp2p:n=await kB({...r,libp2p:{dns:r.dns,...r.libp2p,start:void 0},datastore:e});let i=new F2({...r,libp2p:n,datastore:e,blockstore:t,blockBrokers:r.blockBrokers??[Sp(),pp()],routers:r.routers??[Pp(n),kp()],metrics:n.metrics});return r.start!==!1&&await i.start(),i}function SQ(r){return r==null?!1:["dial","dialProtocol","hangUp","handle","unhandle","getMultiaddrs","getProtocols"].every(t=>typeof r[t]=="function")}function RB(){let r=pm();r.start=!1,r.addresses={listen:[]},r.transports=[s6(),l6()],r.peerDiscovery=[];let e={dcutr:r.services.dcutr,identify:r.services.identify,keychain:r.services.keychain,ping:r.services.ping};return{...r,start:!1,services:e}}var Xd=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,NB=new Set,kE=typeof process=="object"&&process?process:{},OB=(r,e,t,n)=>{typeof kE.emitWarning=="function"?kE.emitWarning(r,e,t,n):console.error(`[${t}] ${e}: ${r}`)},n5=globalThis.AbortController,DB=globalThis.AbortSignal;if(typeof n5>"u"){DB=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(n,i){this._onabort.push(i)}},n5=class{constructor(){e()}signal=new DB;abort(n){if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(let i of this.signal._onabort)i(n);this.signal.onabort?.(n)}}};let r=kE.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{r&&(r=!1,OB("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e))}}var AQ=r=>!NB.has(r),pXe=Symbol("type"),yc=r=>r&&r===Math.floor(r)&&r>0&&isFinite(r),LB=r=>yc(r)?r<=Math.pow(2,8)?Uint8Array:r<=Math.pow(2,16)?Uint16Array:r<=Math.pow(2,32)?Uint32Array:r<=Number.MAX_SAFE_INTEGER?Yd:null:null,Yd=class extends Array{constructor(e){super(e),this.fill(0)}},PE=class r{heap;length;static#e=!1;static create(e){let t=LB(e);if(!t)return[];r.#e=!0;let n=new r(e,t);return r.#e=!1,n}constructor(e,t){if(!r.#e)throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}},i5=class r{#e;#r;#n;#m;#u;#A;#y;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#a;#s;#c;#i;#t;#l;#w;#p;#f;#b;#d;#v;#E;#g;#x;#_;#h;#R;static unsafeExposeInternals(e){return{starts:e.#E,ttls:e.#g,sizes:e.#v,keyMap:e.#c,keyList:e.#i,valList:e.#t,next:e.#l,prev:e.#w,get head(){return e.#p},get tail(){return e.#f},free:e.#b,isBackgroundFetch:t=>e.#o(t),backgroundFetch:(t,n,i,o)=>e.#M(t,n,i,o),moveToTail:t=>e.#O(t),indexes:t=>e.#I(t),rindexes:t=>e.#T(t),isStale:t=>e.#S(t)}}get max(){return this.#e}get maxSize(){return this.#r}get calculatedSize(){return this.#s}get size(){return this.#a}get fetchMethod(){return this.#A}get memoMethod(){return this.#y}get dispose(){return this.#n}get onInsert(){return this.#m}get disposeAfter(){return this.#u}constructor(e){let{max:t=0,ttl:n,ttlResolution:i=1,ttlAutopurge:o,updateAgeOnGet:s,updateAgeOnHas:a,allowStale:c,dispose:l,onInsert:u,disposeAfter:f,noDisposeOnSet:h,noUpdateTTL:d,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:w,fetchMethod:x,memoMethod:v,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:T,allowStaleOnFetchAbort:D,ignoreFetchAbort:A}=e;if(t!==0&&!yc(t))throw new TypeError("max option must be a nonnegative integer");let I=t?LB(t):Array;if(!I)throw new Error("invalid max value: "+t);if(this.#e=t,this.#r=m,this.maxEntrySize=g||this.#r,this.sizeCalculation=w,this.sizeCalculation){if(!this.#r&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(this.#y=v,x!==void 0&&typeof x!="function")throw new TypeError("fetchMethod must be a function if specified");if(this.#A=x,this.#_=!!x,this.#c=new Map,this.#i=new Array(t).fill(void 0),this.#t=new Array(t).fill(void 0),this.#l=new I(t),this.#w=new I(t),this.#p=0,this.#f=0,this.#b=PE.create(t),this.#a=0,this.#s=0,typeof l=="function"&&(this.#n=l),typeof u=="function"&&(this.#m=u),typeof f=="function"?(this.#u=f,this.#d=[]):(this.#u=void 0,this.#d=void 0),this.#x=!!this.#n,this.#R=!!this.#m,this.#h=!!this.#u,this.noDisposeOnSet=!!h,this.noUpdateTTL=!!d,this.noDeleteOnFetchRejection=!!b,this.allowStaleOnFetchRejection=!!T,this.allowStaleOnFetchAbort=!!D,this.ignoreFetchAbort=!!A,this.maxEntrySize!==0){if(this.#r!==0&&!yc(this.#r))throw new TypeError("maxSize must be a positive integer if specified");if(!yc(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.#z()}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!S,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!a,this.ttlResolution=yc(i)||i===0?i:1,this.ttlAutopurge=!!o,this.ttl=n||0,this.ttl){if(!yc(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.#k()}if(this.#e===0&&this.ttl===0&&this.#r===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#e&&!this.#r){let k="LRU_CACHE_UNBOUNDED";AQ(k)&&(NB.add(k),OB("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",k,r))}}getRemainingTTL(e){return this.#c.has(e)?1/0:0}#k(){let e=new Yd(this.#e),t=new Yd(this.#e);this.#g=e,this.#E=t,this.#U=(o,s,a=Xd.now())=>{if(t[o]=s!==0?a:0,e[o]=s,s!==0&&this.ttlAutopurge){let c=setTimeout(()=>{this.#S(o)&&this.#C(this.#i[o],"expire")},s+1);c.unref&&c.unref()}},this.#D=o=>{t[o]=e[o]!==0?Xd.now():0},this.#P=(o,s)=>{if(e[s]){let a=e[s],c=t[s];if(!a||!c)return;o.ttl=a,o.start=c,o.now=n||i();let l=o.now-c;o.remainingTTL=a-l}};let n=0,i=()=>{let o=Xd.now();if(this.ttlResolution>0){n=o;let s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return o};this.getRemainingTTL=o=>{let s=this.#c.get(o);if(s===void 0)return 0;let a=e[s],c=t[s];if(!a||!c)return 1/0;let l=(n||i())-c;return a-l},this.#S=o=>{let s=t[o],a=e[o];return!!a&&!!s&&(n||i())-s>a}}#D=()=>{};#P=()=>{};#U=()=>{};#S=()=>!1;#z(){let e=new Yd(this.#e);this.#s=0,this.#v=e,this.#N=t=>{this.#s-=e[t],e[t]=0},this.#F=(t,n,i,o)=>{if(this.#o(n))return 0;if(!yc(i))if(o){if(typeof o!="function")throw new TypeError("sizeCalculation must be a function");if(i=o(n,t),!yc(i))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return i},this.#L=(t,n,i)=>{if(e[t]=n,this.#r){let o=this.#r-e[t];for(;this.#s>o;)this.#B(!0)}this.#s+=e[t],i&&(i.entrySize=n,i.totalCalculatedSize=this.#s)}}#N=e=>{};#L=(e,t,n)=>{};#F=(e,t,n,i)=>{if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#I({allowStale:e=this.allowStale}={}){if(this.#a)for(let t=this.#f;!(!this.#$(t)||((e||!this.#S(t))&&(yield t),t===this.#p));)t=this.#w[t]}*#T({allowStale:e=this.allowStale}={}){if(this.#a)for(let t=this.#p;!(!this.#$(t)||((e||!this.#S(t))&&(yield t),t===this.#f));)t=this.#l[t]}#$(e){return e!==void 0&&this.#c.get(this.#i[e])===e}*entries(){for(let e of this.#I())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#o(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*rentries(){for(let e of this.#T())this.#t[e]!==void 0&&this.#i[e]!==void 0&&!this.#o(this.#t[e])&&(yield[this.#i[e],this.#t[e]])}*keys(){for(let e of this.#I()){let t=this.#i[e];t!==void 0&&!this.#o(this.#t[e])&&(yield t)}}*rkeys(){for(let e of this.#T()){let t=this.#i[e];t!==void 0&&!this.#o(this.#t[e])&&(yield t)}}*values(){for(let e of this.#I())this.#t[e]!==void 0&&!this.#o(this.#t[e])&&(yield this.#t[e])}*rvalues(){for(let e of this.#T())this.#t[e]!==void 0&&!this.#o(this.#t[e])&&(yield this.#t[e])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(let n of this.#I()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;if(o!==void 0&&e(o,this.#i[n],this))return this.get(this.#i[n],t)}}forEach(e,t=this){for(let n of this.#I()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;o!==void 0&&e.call(t,o,this.#i[n],this)}}rforEach(e,t=this){for(let n of this.#T()){let i=this.#t[n],o=this.#o(i)?i.__staleWhileFetching:i;o!==void 0&&e.call(t,o,this.#i[n],this)}}purgeStale(){let e=!1;for(let t of this.#T({allowStale:!0}))this.#S(t)&&(this.#C(this.#i[t],"expire"),e=!0);return e}info(e){let t=this.#c.get(e);if(t===void 0)return;let n=this.#t[t],i=this.#o(n)?n.__staleWhileFetching:n;if(i===void 0)return;let o={value:i};if(this.#g&&this.#E){let s=this.#g[t],a=this.#E[t];if(s&&a){let c=s-(Xd.now()-a);o.ttl=c,o.start=Date.now()}}return this.#v&&(o.size=this.#v[t]),o}dump(){let e=[];for(let t of this.#I({allowStale:!0})){let n=this.#i[t],i=this.#t[t],o=this.#o(i)?i.__staleWhileFetching:i;if(o===void 0||n===void 0)continue;let s={value:o};if(this.#g&&this.#E){s.ttl=this.#g[t];let a=Xd.now()-this.#E[t];s.start=Math.floor(Date.now()-a)}this.#v&&(s.size=this.#v[t]),e.unshift([n,s])}return e}load(e){this.clear();for(let[t,n]of e){if(n.start){let i=Date.now()-n.start;n.start=Xd.now()-i}this.set(t,n.value,n)}}set(e,t,n={}){if(t===void 0)return this.delete(e),this;let{ttl:i=this.ttl,start:o,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:a=this.sizeCalculation,status:c}=n,{noUpdateTTL:l=this.noUpdateTTL}=n,u=this.#F(e,t,n.size||0,a);if(this.maxEntrySize&&u>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),this.#C(e,"set"),this;let f=this.#a===0?void 0:this.#c.get(e);if(f===void 0)f=this.#a===0?this.#f:this.#b.length!==0?this.#b.pop():this.#a===this.#e?this.#B(!1):this.#a,this.#i[f]=e,this.#t[f]=t,this.#c.set(e,f),this.#l[this.#f]=f,this.#w[f]=this.#f,this.#f=f,this.#a++,this.#L(f,u,c),c&&(c.set="add"),l=!1,this.#R&&this.#m?.(t,e,"add");else{this.#O(f);let h=this.#t[f];if(t!==h){if(this.#_&&this.#o(h)){h.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:d}=h;d!==void 0&&!s&&(this.#x&&this.#n?.(d,e,"set"),this.#h&&this.#d?.push([d,e,"set"]))}else s||(this.#x&&this.#n?.(h,e,"set"),this.#h&&this.#d?.push([h,e,"set"]));if(this.#N(f),this.#L(f,u,c),this.#t[f]=t,c){c.set="replace";let d=h&&this.#o(h)?h.__staleWhileFetching:h;d!==void 0&&(c.oldValue=d)}}else c&&(c.set="update");this.#R&&this.onInsert?.(t,e,t===h?"update":"replace")}if(i!==0&&!this.#g&&this.#k(),this.#g&&(l||this.#U(f,i,o),c&&this.#P(c,f)),!s&&this.#h&&this.#d){let h=this.#d,d;for(;d=h?.shift();)this.#u?.(...d)}return this}pop(){try{for(;this.#a;){let e=this.#t[this.#p];if(this.#B(!0),this.#o(e)){if(e.__staleWhileFetching)return e.__staleWhileFetching}else if(e!==void 0)return e}}finally{if(this.#h&&this.#d){let e=this.#d,t;for(;t=e?.shift();)this.#u?.(...t)}}}#B(e){let t=this.#p,n=this.#i[t],i=this.#t[t];return this.#_&&this.#o(i)?i.__abortController.abort(new Error("evicted")):(this.#x||this.#h)&&(this.#x&&this.#n?.(i,n,"evict"),this.#h&&this.#d?.push([i,n,"evict"])),this.#N(t),e&&(this.#i[t]=void 0,this.#t[t]=void 0,this.#b.push(t)),this.#a===1?(this.#p=this.#f=0,this.#b.length=0):this.#p=this.#l[t],this.#c.delete(n),this.#a--,t}has(e,t={}){let{updateAgeOnHas:n=this.updateAgeOnHas,status:i}=t,o=this.#c.get(e);if(o!==void 0){let s=this.#t[o];if(this.#o(s)&&s.__staleWhileFetching===void 0)return!1;if(this.#S(o))i&&(i.has="stale",this.#P(i,o));else return n&&this.#D(o),i&&(i.has="hit",this.#P(i,o)),!0}else i&&(i.has="miss");return!1}peek(e,t={}){let{allowStale:n=this.allowStale}=t,i=this.#c.get(e);if(i===void 0||!n&&this.#S(i))return;let o=this.#t[i];return this.#o(o)?o.__staleWhileFetching:o}#M(e,t,n,i){let o=t===void 0?void 0:this.#t[t];if(this.#o(o))return o;let s=new n5,{signal:a}=n;a?.addEventListener("abort",()=>s.abort(a.reason),{signal:s.signal});let c={signal:s.signal,options:n,context:i},l=(g,w=!1)=>{let{aborted:x}=s.signal,v=n.ignoreFetchAbort&&g!==void 0;if(n.status&&(x&&!w?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,v&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),x&&!v&&!w)return f(s.signal.reason);let b=d;return this.#t[t]===d&&(g===void 0?b.__staleWhileFetching?this.#t[t]=b.__staleWhileFetching:this.#C(e,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(e,g,c.options))),g},u=g=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=g),f(g)),f=g=>{let{aborted:w}=s.signal,x=w&&n.allowStaleOnFetchAbort,v=x||n.allowStaleOnFetchRejection,b=v||n.noDeleteOnFetchRejection,S=d;if(this.#t[t]===d&&(!b||S.__staleWhileFetching===void 0?this.#C(e,"fetch"):x||(this.#t[t]=S.__staleWhileFetching)),v)return n.status&&S.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),S.__staleWhileFetching;if(S.__returned===S)throw g},h=(g,w)=>{let x=this.#A?.(e,o,c);x&&x instanceof Promise&&x.then(v=>g(v===void 0?void 0:v),w),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(g(void 0),n.allowStaleOnFetchAbort&&(g=v=>l(v,!0)))})};n.status&&(n.status.fetchDispatched=!0);let d=new Promise(h).then(l,u),m=Object.assign(d,{__abortController:s,__staleWhileFetching:o,__returned:void 0});return t===void 0?(this.set(e,m,{...c.options,status:void 0}),t=this.#c.get(e)):this.#t[t]=m,m}#o(e){if(!this.#_)return!1;let t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof n5}async fetch(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:a=this.noDisposeOnSet,size:c=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:f=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:h=this.allowStaleOnFetchRejection,ignoreFetchAbort:d=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:g,forceRefresh:w=!1,status:x,signal:v}=t;if(!this.#_)return x&&(x.fetch="get"),this.get(e,{allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:o,status:x});let b={allowStale:n,updateAgeOnGet:i,noDeleteOnStaleGet:o,ttl:s,noDisposeOnSet:a,size:c,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:f,allowStaleOnFetchRejection:h,allowStaleOnFetchAbort:m,ignoreFetchAbort:d,status:x,signal:v},S=this.#c.get(e);if(S===void 0){x&&(x.fetch="miss");let T=this.#M(e,S,b,g);return T.__returned=T}else{let T=this.#t[S];if(this.#o(T)){let X=n&&T.__staleWhileFetching!==void 0;return x&&(x.fetch="inflight",X&&(x.returnedStale=!0)),X?T.__staleWhileFetching:T.__returned=T}let D=this.#S(S);if(!w&&!D)return x&&(x.fetch="hit"),this.#O(S),i&&this.#D(S),x&&this.#P(x,S),T;let A=this.#M(e,S,b,g),k=A.__staleWhileFetching!==void 0&&n;return x&&(x.fetch=D?"stale":"refresh",k&&D&&(x.returnedStale=!0)),k?A.__staleWhileFetching:A.__returned=A}}async forceFetch(e,t={}){let n=await this.fetch(e,t);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(e,t={}){let n=this.#y;if(!n)throw new Error("no memoMethod provided to constructor");let{context:i,forceRefresh:o,...s}=t,a=this.get(e,s);if(!o&&a!==void 0)return a;let c=n(e,a,{options:s,context:i});return this.set(e,c,s),c}get(e,t={}){let{allowStale:n=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:o=this.noDeleteOnStaleGet,status:s}=t,a=this.#c.get(e);if(a!==void 0){let c=this.#t[a],l=this.#o(c);return s&&this.#P(s,a),this.#S(a)?(s&&(s.get="stale"),l?(s&&n&&c.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?c.__staleWhileFetching:void 0):(o||this.#C(e,"expire"),s&&n&&(s.returnedStale=!0),n?c:void 0)):(s&&(s.get="hit"),l?c.__staleWhileFetching:(this.#O(a),i&&this.#D(a),c))}else s&&(s.get="miss")}#H(e,t){this.#w[t]=e,this.#l[e]=t}#O(e){e!==this.#f&&(e===this.#p?this.#p=this.#l[e]:this.#H(this.#w[e],this.#l[e]),this.#H(this.#f,e),this.#f=e)}delete(e){return this.#C(e,"delete")}#C(e,t){let n=!1;if(this.#a!==0){let i=this.#c.get(e);if(i!==void 0)if(n=!0,this.#a===1)this.#V(t);else{this.#N(i);let o=this.#t[i];if(this.#o(o)?o.__abortController.abort(new Error("deleted")):(this.#x||this.#h)&&(this.#x&&this.#n?.(o,e,t),this.#h&&this.#d?.push([o,e,t])),this.#c.delete(e),this.#i[i]=void 0,this.#t[i]=void 0,i===this.#f)this.#f=this.#w[i];else if(i===this.#p)this.#p=this.#l[i];else{let s=this.#w[i];this.#l[s]=this.#l[i];let a=this.#l[i];this.#w[a]=this.#w[i]}this.#a--,this.#b.push(i)}}if(this.#h&&this.#d?.length){let i=this.#d,o;for(;o=i?.shift();)this.#u?.(...o)}return n}clear(){return this.#V("delete")}#V(e){for(let t of this.#T({allowStale:!0})){let n=this.#t[t];if(this.#o(n))n.__abortController.abort(new Error("deleted"));else{let i=this.#i[t];this.#x&&this.#n?.(n,i,e),this.#h&&this.#d?.push([n,i,e])}}if(this.#c.clear(),this.#t.fill(void 0),this.#i.fill(void 0),this.#g&&this.#E&&(this.#g.fill(0),this.#E.fill(0)),this.#v&&this.#v.fill(0),this.#p=0,this.#f=0,this.#b.length=0,this.#s=0,this.#a=0,this.#h&&this.#d){let t=this.#d,n;for(;n=t?.shift();)this.#u?.(...n)}}};var mi=class extends Error{static name="InvalidRangeError";constructor(e="Invalid range request"){super(e),this.name="InvalidRangeError"}},o5=class extends Error{static name="NoContentError";constructor(e="No content found"){super(e),this.name="NoContentError"}},s5=class extends Error{static name="SubdomainNotSupportedError";constructor(e="Subdomain not supported"){super(e),this.name="SubdomainNotSupportedError"}};function BB(r,e){if(r==null)return;if(r instanceof Headers)return r.get(e)??void 0;if(Array.isArray(r))return r.find(([i])=>i.toLowerCase()===e.toLowerCase())?.[1];let t=Object.keys(r).find(n=>n.toLowerCase()===e.toLowerCase());if(t!=null)return r[t]}function MB(r,e,t){if((r??0)>(e??1/0))throw new mi("Invalid range: Range-start index is greater than range-end index.");if(r!=null&&(e??0)>=(t??1/0))throw new mi("Invalid range: Range-end index is greater than or equal to the size of the file.");if(r==null&&(e??0)>(t??1/0))throw new mi("Invalid range: Range-end index is greater than the size of the file.");if(r!=null&&r<0)throw new mi("Invalid range: Range-start index cannot be negative.");if(r!=null&&e!=null)return{byteSize:e-r+1,start:r,end:e};if(r==null&&e!=null)return t==null?{end:e}:e===t?{byteSize:t,start:0,end:t-1}:{byteSize:e,start:t-e,end:t-1};if(r!=null&&e==null){if(t==null)return{start:r};let n=t-1;return{byteSize:t-r,start:r,end:n}}return{byteSize:t,start:0,end:t!=null?t-1:0}}function UB({ttl:r,protocol:e,response:t}){if(t.headers.has("cache-control"))return;let n;e==="ipfs"?n="public, max-age=29030400, immutable":r==null?n="public, max-age=300":n=`public, max-age=${r}`,t.headers.set("cache-control",n)}function FB({byteStart:r,byteEnd:e,byteSize:t}){let n=t??"*";if((e??0)>=(t??1/0))throw new mi("Invalid range: Range-end index is greater than or equal to the size of the file.");if((r??0)>=(t??1/0))throw new mi("Invalid range: Range-start index is greater than or equal to the size of the file.");if(r!=null&&e==null)return t==null?`bytes */${n}`:`bytes ${r}-${t-1}/${t}`;if(r==null&&e!=null){if(t==null)return`bytes */${n}`;let i=t-1;return`bytes ${i-e+1}-${i}/${t}`}return r==null&&e==null?`bytes */${n}`:`bytes ${r}-${e}/${n}`}function a5(r,e){e!=null&&r.headers.set("X-Ipfs-Roots",RE(e))}function RE(r){return r.map(e=>e.toV1().toString()).join(",")}function _Q(r){return typeof r=="string"?r.length:r instanceof ArrayBuffer||r instanceof Uint8Array?r.byteLength:r instanceof Blob?r.size:(r instanceof ReadableStream,null)}function IQ(r){let e=r.match(/^bytes=(?<start>\d+)?-(?<end>\d+)?$/);if(e?.groups==null)throw new mi("Invalid range request");let{start:t,end:n}=e.groups;return{start:t,end:n}}var c5=class{headers;isRangeRequest;_fileSize;_body=null;rangeRequestHeader;log;requestRangeStart;requestRangeEnd;byteStart;byteEnd;byteSize;constructor(e,t){if(this.headers=t,this.log=e.forComponent("helia:verified-fetch:byte-range-context"),this.rangeRequestHeader=BB(this.headers,"Range"),this.rangeRequestHeader!=null){this.isRangeRequest=!0,this.log.trace("range request detected");try{let{start:n,end:i}=IQ(this.rangeRequestHeader);this.requestRangeStart=n!=null?parseInt(n):null,this.requestRangeEnd=i!=null?parseInt(i):null}catch(n){this.log.error("error parsing range request header: %o",n),this.requestRangeStart=null,this.requestRangeEnd=null}this.setOffsetDetails()}else this.log.trace("no range request detected"),this.isRangeRequest=!1,this.requestRangeStart=null,this.requestRangeEnd=null}setBody(e){this._body=e,this.setFileSize(this._fileSize??_Q(e)),this.log.trace("set request body with fileSize %o",this._fileSize)}getBody(){let e=this._body;if(e==null)return this.log.trace("body is null"),e;if(!this.isRangeRequest||!this.isValidRangeRequest)return this.log.trace("returning body unmodified for non-range, or invalid range, request"),e;let t=this.byteStart,n=this.byteEnd,i=this.byteSize;return t!=null||n!=null?(this.log.trace("returning body with byteStart=%o, byteEnd=%o, byteSize=%o",t,n,i),e instanceof ReadableStream?e:this.getSlicedBody(e)):(this.log.error("returning unmodified body for valid range request"),e)}getSlicedBody(e){let t=this.byteStart??0,n;return this.byteEnd!=null&&this.byteStart!=null?n=this.byteEnd-this.byteStart+1:n=void 0,this.log.trace("slicing body with offset=%o and length=%o",t,n),typeof e=="string"||e instanceof Blob||e instanceof ArrayBuffer||e instanceof Uint8Array?e.slice(t,n!==void 0?t+n:void 0):e}setFileSize(e){this._fileSize=e!=null?Number(e):null,this.log.trace("set _fileSize to %o",this._fileSize),this.setOffsetDetails()}getFileSize(){return this._fileSize}isValidByteStart(){return!(this.byteStart!=null&&(this.byteStart<0||this._fileSize!=null&&this.byteStart>=this._fileSize||this.byteEnd!=null&&this.byteStart>this.byteEnd))}isValidByteEnd(){return!(this.byteEnd!=null&&(this.byteEnd<0||this._fileSize!=null&&this.byteEnd>=this._fileSize||this.byteStart!=null&&this.byteEnd<this.byteStart))}get isValidRangeRequest(){if(!this.isRangeRequest)return!1;if(this.requestRangeStart==null&&this.requestRangeEnd==null)return this.log.trace("invalid range request, range request values not provided"),!1;if(!this.isValidByteStart())return this.log.trace("invalid range request, byteStart is less than 0 or greater than fileSize"),!1;if(!this.isValidByteEnd())return this.log.trace("invalid range request, byteEnd is less than 0 or greater than fileSize"),!1;if(this.requestRangeEnd!=null&&this.requestRangeStart!=null){if(this.requestRangeStart>this.requestRangeEnd)return this.log.trace("invalid range request, start is greater than end"),!1;if(this.requestRangeStart<0)return this.log.trace("invalid range request, start is less than 0"),!1;if(this.requestRangeEnd<0)return this.log.trace("invalid range request, end is less than 0"),!1}return this.byteEnd==null&&this.byteStart==null&&this.byteSize==null?(this.log.trace("invalid range request, could not calculate byteStart, byteEnd, or byteSize"),!1):!0}get offset(){return this.byteStart??0}get length(){return this.byteEnd!=null&&this.byteStart!=null?this.byteEnd-this.byteStart+1:this.byteEnd!=null?this.byteEnd+1:this.byteSize}setOffsetDetails(){if(this.requestRangeStart==null&&this.requestRangeEnd==null){this.log.trace("requestRangeStart and requestRangeEnd are null");return}try{let{start:e,end:t,byteSize:n}=MB(this.requestRangeStart??void 0,this.requestRangeEnd??void 0,this._fileSize??void 0);this.log.trace("set byteStart to %o, byteEnd to %o, byteSize to %o",e,t,n),this.byteStart=e,this.byteEnd=t,this.byteSize=n}catch(e){this.log.error("error setting offset details: %o",e),this.byteStart=void 0,this.byteEnd=void 0,this.byteSize=void 0}}get contentRangeHeaderValue(){if(!this.isValidRangeRequest)throw this.log.error("cannot get contentRangeHeaderValue for invalid range request"),new mi("Invalid range request");return FB({byteStart:this.byteStart,byteEnd:this.byteEnd,byteSize:this._fileSize??void 0})}};var Mt=class{codes=[];log;pluginOptions;constructor(e){let t=this.constructor.name.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();this.log=e.logger.forComponent(t),this.pluginOptions=e}canHandle(e){throw new Error("Not implemented")}async handle(e){throw new Error("Not implemented")}};var l5=class extends Mt{canHandle(e){return e.byteRangeContext==null}async handle(e){return e.byteRangeContext=new c5(this.pluginOptions.logger,e.options?.headers),e.modified++,null}};var OE=it(u5(),1);var LE=40;function BE(r,e){if(!r.length)throw new Error("Unexpected end of data");let t=OE.default.decode(r);return e.seek(OE.default.decode.bytes),t}function ME(r){let e=new DataView(r.buffer,r.byteOffset,r.byteLength),t=0;return{version:2,characteristics:[e.getBigUint64(t,!0),e.getBigUint64(t+=8,!0)],dataOffset:Number(e.getBigUint64(t+=8,!0)),dataSize:Number(e.getBigUint64(t+=8,!0)),indexOffset:Number(e.getBigUint64(t+=8,!0))}}var wc={Null:r=>r===null?r:void 0,Int:r=>Number.isInteger(r)?r:void 0,Float:r=>typeof r=="number"&&Number.isFinite(r)?r:void 0,String:r=>typeof r=="string"?r:void 0,Bool:r=>typeof r=="boolean"?r:void 0,Bytes:r=>r instanceof Uint8Array?r:void 0,Link:r=>r!==null&&typeof r=="object"&&r.asCID===r?r:void 0,List:r=>Array.isArray(r)?r:void 0,Map:r=>r!==null&&typeof r=="object"&&r.asCID!==r&&!Array.isArray(r)&&!(r instanceof Uint8Array)?r:void 0},Em={"CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)":wc.Link,"CarV1HeaderOrV2Pragma > roots (anon)":r=>{if(wc.List(r)!==void 0){for(let e=0;e<r.length;e++){let t=r[e];if(t=Em["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](t),t===void 0)return;if(t!==r[e]){let n=r.slice(0,e);for(let i=e;i<r.length;i++){let o=r[i];if(o=Em["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](o),o===void 0)return;n.push(o)}return n}}return r}},Int:wc.Int,CarV1HeaderOrV2Pragma:r=>{if(wc.Map(r)===void 0)return;let e=Object.entries(r),t=r,n=1;for(let i=0;i<e.length;i++){let[o,s]=e[i];switch(o){case"roots":{let a=Em["CarV1HeaderOrV2Pragma > roots (anon)"](r[o]);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.roots=a}}break;case"version":{n--;let a=Em.Int(r[o]);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.version=a}}break;default:return}}if(!(n>0))return t}},Sm={"CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)":wc.Link,"CarV1HeaderOrV2Pragma > roots (anon)":r=>{if(wc.List(r)!==void 0){for(let e=0;e<r.length;e++){let t=r[e];if(t=Sm["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](t),t===void 0)return;if(t!==r[e]){let n=r.slice(0,e);for(let i=e;i<r.length;i++){let o=r[i];if(o=Sm["CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)"](o),o===void 0)return;n.push(o)}return n}}return r}},Int:wc.Int,CarV1HeaderOrV2Pragma:r=>{if(wc.Map(r)===void 0)return;let e=Object.entries(r),t=r,n=1;for(let i=0;i<e.length;i++){let[o,s]=e[i];switch(o){case"roots":{let a=Sm["CarV1HeaderOrV2Pragma > roots (anon)"](s);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.roots=a}}break;case"version":{n--;let a=Sm.Int(s);if(a===void 0)return;if(a!==s||t!==r){if(t===r){t={};for(let c=0;c<i;c++)t[e[c][0]]=e[c][1]}t.version=a}}break;default:return}}if(!(n>0))return t}},UE={toTyped:Em.CarV1HeaderOrV2Pragma,toRepresentation:Sm.CarV1HeaderOrV2Pragma};var zXe=_7();var zQ=it(u5(),1);var GXe=[new Q(_.map,2),new Q(_.string,"version"),new Q(_.uint,1),new Q(_.string,"roots")],XXe=new Q(_.tag,42);async function FE(r,e){let t=BE(await r.upTo(8),r);if(t===0)throw new Error("Invalid CAR header (zero length)");let n=await r.exactly(t,!0),i=Ta(n);if(UE.toTyped(i)===void 0)throw new Error("Invalid CAR header format");if(i.version!==1&&i.version!==2||e!==void 0&&i.version!==e)throw new Error(`Invalid CAR version: ${i.version}${e!==void 0?` (expected ${e})`:""}`);if(i.version===1){if(!Array.isArray(i.roots))throw new Error("Invalid CAR header format");return i}if(i.roots!==void 0)throw new Error("Invalid CAR header format");let o=ME(await r.exactly(LE,!0));r.seek(o.dataOffset-r.pos);let s=await FE(r,1);return Object.assign(s,o)}function Am(r){let e=0;return{async upTo(t){return r.subarray(e,e+Math.min(t,r.length-e))},async exactly(t,n=!1){if(t>r.length-e)throw new Error("Unexpected end of data");let i=r.subarray(e,e+t);return n&&(e+=t),i},seek(t){e+=t},get pos(){return e}}}var $E=it(u5(),1),QB=1;function HE(r){let e=Sf({version:QB,roots:r}),t=$E.default.encode(e.length),n=new Uint8Array(t.length+e.length);return n.set(t,0),n.set(e,t.length),n}function ZB(r){return{async setRoots(e){let t=HE(e);await r.write(t)},async writeBlock(e){let{cid:t,bytes:n}=e;await r.write(new Uint8Array($E.default.encode(t.bytes.length+n.length))),await r.write(t.bytes),n.length&&await r.write(n)},async close(){await r.end()},version(){return QB}}}function f5(){}function JB(){let r=[],e=null,t=f5,n=!1,i=null,o=f5,s=()=>(e||(e=new Promise(l=>{t=()=>{e=null,t=f5,l()}})),e),a={write(l){r.push(l);let u=s();return o(),u},async end(){n=!0;let l=s();o(),await l}},c={async next(){let l=r.shift();return l?(r.length===0&&t(),{done:!1,value:l}):n?(t(),{done:!0,value:void 0}):(i||(i=new Promise(u=>{o=()=>(i=null,o=f5,u(c.next()))})),i)}};return{writer:a,iterator:c}}var _m=class r{constructor(e,t){this._encoder=t,this._mutex=t.setRoots(e),this._ended=!1}async put(e){if(!(e.bytes instanceof Uint8Array)||!e.cid)throw new TypeError("Can only write {cid, bytes} objects");if(this._ended)throw new Error("Already closed");let t=W.asCID(e.cid);if(!t)throw new TypeError("Can only write {cid, bytes} objects");return this._mutex=this._mutex.then(()=>this._encoder.writeBlock({cid:t,bytes:e.bytes})),this._mutex}async close(){if(this._ended)throw new Error("Already closed");return await this._mutex,this._ended=!0,this._encoder.close()}version(){return this._encoder.version()}static create(e){e=WQ(e);let{encoder:t,iterator:n}=eM(),i=new r(e,t),o=new d5(n);return{writer:i,out:o}}static createAppender(){let{encoder:e,iterator:t}=eM();e.setRoots=()=>Promise.resolve();let n=new r([],e),i=new d5(t);return{writer:n,out:i}}static async updateRootsInBytes(e,t){let n=Am(e);await FE(n);let i=HE(t);if(Number(n.pos)!==i.length)throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${n.pos} bytes, new header is ${i.length} bytes)`);return e.set(i,0),e}},d5=class{constructor(e){this._iterator=e}[Symbol.asyncIterator](){if(this._iterating)throw new Error("Multiple iterator not supported");return this._iterating=!0,this._iterator}};function eM(){let r=JB(),{writer:e,iterator:t}=r;return{encoder:ZB(e),iterator:t}}function WQ(r){if(r===void 0)return[];if(!Array.isArray(r)){let t=W.asCID(r);if(!t)throw new TypeError("roots must be a single CID or an array of CIDs");return[t]}let e=[];for(let t of r){let n=W.asCID(t);if(!n)throw new TypeError("roots must be a single CID or an array of CIDs");e.push(n)}return e}var GQ=1,VE=class{components;constructor(e,t){this.components=e}async import(e,t){await Sr(this.components.blockstore.putMany(Nt(e.blocks(),({cid:n,bytes:i})=>({cid:n,block:i})),t))}async export(e,t,n){let i=ye(),o=Array.isArray(e)?e:[e],s=new kn({concurrency:GQ});s.on("idle",()=>{i.resolve()}),s.on("error",a=>{s.clear(),i.reject(a)});for(let a of o)s.add(async()=>{await this.#e(a,s,async(c,l)=>{n?.blockFilter?.has(c.multihash.bytes)!==!0&&(n?.blockFilter?.add(c.multihash.bytes),await t.put({cid:c,bytes:l}))},n)}).catch(()=>{});try{await i.promise}finally{await t.close()}}async*stream(e,t){let{writer:n,out:i}=_m.create(e);this.export(e,n,t).catch(()=>{});for await(let o of i)yield o}async#e(e,t,n,i){let o=await this.components.getCodec(e.code),s=await this.components.blockstore.get(e,i);await n(e,s);let a=Eg({bytes:s,cid:e,codec:o});for await(let[,c]of a.links())t.add(async()=>{await this.#e(c,t,n,i)})}};function tM(r,e={}){return new VE(r,e)}function Im(r,e={}){let t=Hf(r),n={_cancelled:!1,async start(){this._cancelled=!1},async pull(i){try{let{value:o,done:s}=await t.next();if(this._cancelled)return;if(s===!0){i.close();return}i.enqueue(o)}catch(o){i.error(o)}},cancel(){this._cancelled=!0}};return new globalThis.ReadableStream(n,e)}function zE(r,e,t){Object.defineProperty(r,e,{enumerable:!0,configurable:!1,set:()=>{},get:()=>t})}function Js(r,e){zE(r,"type",e)}function ea(r,e){zE(r,"url",e)}function rM(r){zE(r,"redirected",!0)}function XQ(r,e,t){let n=new Response(e,{...t??{},status:200,statusText:"OK"});return t?.redirected===!0&&rM(n),Js(n,"basic"),ea(n,r),n}function Qd(r,e,t){let n=new Response(e,{...t??{},status:502,statusText:"Bad Gateway"});return Js(n,"basic"),ea(n,r),n}function p5(r,e,t){let n=new Response(e,{...t??{},status:501,statusText:"Not Implemented"});return n.headers.set("X-Content-Type-Options","nosniff"),Js(n,"basic"),ea(n,r),n}function ta(r,e,t){let n=new Response(e,{...t??{},status:406,statusText:"Not Acceptable"});return Js(n,"basic"),ea(n,r),n}function m5(r,e,t){let n=new Response(e,{...t??{},status:404,statusText:"Not Found"});return Js(n,"basic"),ea(n,r),n}function YQ(r){return Array.isArray(r)&&r.every(e=>e instanceof Error)}function Tm(r,e,t){let n,i;YQ(e)?(n=e[e.length-1].stack,i=e.map(a=>({message:a.message,stack:a.stack??""}))):e instanceof Error&&(n=e.stack,i=[{message:e.message,stack:e.stack??""}]);let o=JSON.stringify({stack:n,errors:i}),s=new Response(o,{status:400,statusText:"Bad Request",...t??{},headers:{...t?.headers??{},"Content-Type":"application/json"}});return Js(s,"basic"),ea(s,r),s}function Cm(r,e,t){let n=new Response(null,{...t??{},status:301,statusText:"Moved Permanently",headers:{...t?.headers??{},location:e}});return Js(n,"basic"),ea(n,r),n}function cn(r,e,{byteRangeContext:t,log:n},i){if(!t.isRangeRequest)return XQ(r,e,i);if(!t.isValidRangeRequest)return h5(r,e,i);let o;try{o=new Response(e,{...i??{},status:206,statusText:"Partial Content",headers:{...i?.headers??{},"content-range":t.contentRangeHeaderValue}})}catch(s){return n?.error("failed to create range response",s),h5(r,e,i)}return i?.redirected===!0&&rM(o),Js(o,"basic"),ea(o,r),o}function h5(r,e,t){let n=new Response(e,{...t??{},status:416,statusText:"Requested Range Not Satisfiable"});return Js(n,"basic"),ea(n,r),n}function QQ({cid:r,ipfsPath:e,query:t}){return t.filename!=null?t.filename:`${e.replace(/\/ipfs\//,"").replace(/\/ipns\//,"").replace(/\//g,"_")}.car`}var g5=class extends Mt{canHandle(e){return this.log("checking if we can handle %c with accept %s",e.cid,e.accept),e.byteRangeContext==null?!1:e.accept?.startsWith("application/vnd.ipld.car")===!0||e.query.format==="car"}async handle(e){let{options:t,pathDetails:n,cid:i}=e,{getBlockstore:o,helia:s}=this.pluginOptions;e.reqFormat="car",e.query.download=!0,e.query.filename=QQ(e);let a=o(i,e.resource,t?.session??!0,t),c=tM({blockstore:a,getCodec:s.getCodec}),l=Im(c.stream(n?.terminalElement.cid??i,t));e.byteRangeContext.setBody(l);let u=cn(e.resource,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return u.headers.set("content-type","application/vnd.ipld.car; version=1"),u}};function nM(r){let e=xn(r,{allowIndefinite:!1,coerceUndefinedToNull:!1,allowNaN:!1,allowInfinity:!1,strict:!0,useMaps:!1,rejectDuplicateMapKeys:!0,allowBigInt:!1});return new TextDecoder().decode(dp(e))}var Io=class extends Error{name;code;constructor(e,t,n){super(e),this.name=t,this.code=n}},gi=class extends Io{constructor(e="not a Unixfs node"){super(e,"NotUnixFSError","ERR_NOT_UNIXFS")}},Gn=class extends Io{constructor(e="invalid PBNode"){super(e,"InvalidPBNodeError","ERR_INVALID_PB_NODE")}},xc=class extends Io{constructor(e="unknown error"){super(e,"InvalidPBNodeError","ERR_UNKNOWN_ERROR")}},km=class extends Io{constructor(e="path already exists"){super(e,"AlreadyExistsError","ERR_ALREADY_EXISTS")}},Zd=class extends Io{constructor(e="path does not exist"){super(e,"DoesNotExistError","ERR_DOES_NOT_EXIST")}},Jd=class extends Io{constructor(e="no content"){super(e,"NoContentError","ERR_NO_CONTENT")}},y5=class extends Io{constructor(e="not a file"){super(e,"NotAFileError","ERR_NOT_A_FILE")}},bc=class extends Io{constructor(e="not a directory"){super(e,"NotADirectoryError","ERR_NOT_A_DIRECTORY")}},br=class extends Io{constructor(e="invalid parameters"){super(e,"InvalidParametersError","ERR_INVALID_PARAMETERS")}};function ZQ(r){return r[Symbol.asyncIterator]!=null}function JQ(r){if(ZQ(r))return(async()=>{let t;for await(let n of r)t=n;return t})();let e;for(let t of r)e=t;return e}var To=JQ;var w5=class r extends Error{static name="BadPathError";static code="ERR_BAD_PATH";name=r.name;code=r.code;constructor(e="Bad path"){super(e)}},Wi=class r extends Error{static name="NotFoundError";static code="ERR_NOT_FOUND";name=r.name;code=r.code;constructor(e="Not found"){super(e)}},x5=class r extends Error{static name="NoResolverError";static code="ERR_NO_RESOLVER";name=r.name;code=r.code;constructor(e="No resolver"){super(e)}},vr=class r extends Error{static name="NotUnixFSError";static code="ERR_NOT_UNIXFS";name=r.name;code=r.code;constructor(e="Not UnixFS"){super(e)}},b5=class r extends Error{static name="OverReadError";static code="ERR_OVER_READ";name=r.name;code=r.code;constructor(e="Over read"){super(e)}},v5=class r extends Error{static name="UnderReadError";static code="ERR_UNDER_READ";name=r.name;code=r.code;constructor(e="Under read"){super(e)}},E5=class r extends Error{static name="NoPropError";static code="ERR_NO_PROP";name=r.name;code=r.code;constructor(e="No Property found"){super(e)}},ku=class r extends Error{static name="InvalidParametersError";static code="ERR_INVALID_PARAMS";name=r.name;code=r.code;constructor(e="Invalid parameters"){super(e)}};function eh(r,e,t,n,i,o,s){let a=r,c=i;for(;o.length>0;){let l=o[0];if(l in a){o.shift(),c=`${c}/${l}`;let u=W.asCID(a[l]);if(u!=null)return{entry:{type:"object",name:n,path:i,cid:t,node:e,depth:s,size:BigInt(e.length),content:async function*(){yield r}},next:{cid:u,name:l,path:c,toResolve:o}};a=a[l]}else throw new E5(`No property named ${l} found in node ${t}`)}return{entry:{type:"object",name:n,path:i,cid:t,node:e,depth:s,size:BigInt(e.length),content:async function*(){yield r}}}}var eZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=Ta(c);return eh(l,c,r,e,t,n,o)},iM=eZ;var tZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=_f(c);return eh(l,c,r,e,t,n,o)},oM=tZ;function rZ(r,e,t,n){let i=BigInt(r.length),o=BigInt(e+i);return t>=o||n<e?new Uint8Array(0):(n>=e&&n<o&&(r=r.subarray(0,Number(n-e))),t>=e&&t<o&&(r=r.subarray(Number(t-e))),r)}var Pu=rZ;var nZ=(r,e=0,t=r)=>{let n=BigInt(r),i=BigInt(e??0),o=BigInt(t);if(o!==n&&(o=i+o),o>n&&(o=n),i<0n)throw new ku("Offset must be greater than or equal to 0");if(i>n)throw new ku("Offset must be less than the file size");if(o<0n)throw new ku("Length must be greater than or equal to 0");if(o>n)throw new ku("Length must be less than the file size");return{start:i,end:o}},th=nZ;var iZ=r=>{async function*e(t={}){let{start:n,end:i}=th(r.length,t.offset,t.length),o=Pu(r,0n,n,i);t.onProgress?.(new G("unixfs:exporter:progress:identity",{bytesRead:BigInt(o.byteLength),totalBytes:i-n,fileSize:BigInt(r.byteLength)})),yield o}return e},oZ=async(r,e,t,n,i,o,s,a)=>{if(n.length>0)throw new Wi(`No link named ${t} found in raw node ${r}`);let c=Ue(r.multihash.bytes);return{entry:{type:"identity",name:e,path:t,cid:r,content:iZ(c.digest),depth:o,size:BigInt(c.digest.length),node:c.digest}}},sM=oZ;var sZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=Y8(c);return eh(l,c,r,e,t,n,o)},aM=sZ;var aZ=r=>{async function*e(t={}){let{start:n,end:i}=th(r.length,t.offset,t.length),o=Pu(r,0n,n,i);t.onProgress?.(new G("unixfs:exporter:progress:raw",{bytesRead:BigInt(o.byteLength),totalBytes:i-n,fileSize:BigInt(r.byteLength)})),yield o}return e},cZ=async(r,e,t,n,i,o,s,a)=>{if(n.length>0)throw new Wi(`No link named ${t} found in raw node ${r}`);let c=await s.get(r,a);return{entry:{type:"raw",name:e,path:t,cid:r,content:aZ(c),depth:o,size:BigInt(c.length),node:c}}},cM=cZ;var Pm=class r extends Error{static name="InvalidTypeError";static code="ERR_INVALID_TYPE";name=r.name;code=r.code;constructor(e="Invalid type"){super(e)}};var Co;(function(r){let e;(function(i){i.Raw="Raw",i.Directory="Directory",i.File="File",i.Metadata="Metadata",i.Symlink="Symlink",i.HAMTShard="HAMTShard"})(e=r.DataType||(r.DataType={}));let t;(function(i){i[i.Raw=0]="Raw",i[i.Directory=1]="Directory",i[i.File=2]="File",i[i.Metadata=3]="Metadata",i[i.Symlink=4]="Symlink",i[i.HAMTShard=5]="HAMTShard"})(t||(t={})),function(i){i.codec=()=>St(t)}(e=r.DataType||(r.DataType={}));let n;r.codec=()=>(n==null&&(n=Ee((i,o,s={})=>{if(s.lengthDelimited!==!1&&o.fork(),i.Type!=null&&(o.uint32(8),r.DataType.codec().encode(i.Type,o)),i.Data!=null&&(o.uint32(18),o.bytes(i.Data)),i.filesize!=null&&(o.uint32(24),o.uint64(i.filesize)),i.blocksizes!=null)for(let a of i.blocksizes)o.uint32(32),o.uint64(a);i.hashType!=null&&(o.uint32(40),o.uint64(i.hashType)),i.fanout!=null&&(o.uint32(48),o.uint64(i.fanout)),i.mode!=null&&(o.uint32(56),o.uint32(i.mode)),i.mtime!=null&&(o.uint32(66),S5.codec().encode(i.mtime,o)),s.lengthDelimited!==!1&&o.ldelim()},(i,o)=>{let s={blocksizes:[]},a=o==null?i.len:i.pos+o;for(;i.pos<a;){let c=i.uint32();switch(c>>>3){case 1:s.Type=r.DataType.codec().decode(i);break;case 2:s.Data=i.bytes();break;case 3:s.filesize=i.uint64();break;case 4:s.blocksizes.push(i.uint64());break;case 5:s.hashType=i.uint64();break;case 6:s.fanout=i.uint64();break;case 7:s.mode=i.uint32();break;case 8:s.mtime=S5.codec().decode(i,i.uint32());break;default:i.skipType(c&7);break}}return s})),n),r.encode=i=>ve(i,r.codec()),r.decode=i=>be(i,r.codec())})(Co||(Co={}));var S5;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.Seconds!=null&&(n.uint32(8),n.int64(t.Seconds)),t.FractionalNanoseconds!=null&&(n.uint32(21),n.fixed32(t.FractionalNanoseconds)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let s=t.uint32();switch(s>>>3){case 1:i.Seconds=t.int64();break;case 2:i.FractionalNanoseconds=t.fixed32();break;default:t.skipType(s&7);break}}return i})),e),r.encode=t=>ve(t,r.codec()),r.decode=t=>be(t,r.codec())})(S5||(S5={}));var lM;(function(r){let e;r.codec=()=>(e==null&&(e=Ee((t,n,i={})=>{i.lengthDelimited!==!1&&n.fork(),t.MimeType!=null&&(n.uint32(10),n.string(t.MimeType)),i.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let s=t.uint32();switch(s>>>3){case 1:i.MimeType=t.string();break;default:t.skipType(s&7);break}}return i})),e),r.encode=t=>ve(t,r.codec()),r.decode=t=>be(t,r.codec())})(lM||(lM={}));var uM={Raw:"raw",Directory:"directory",File:"file",Metadata:"metadata",Symlink:"symlink",HAMTShard:"hamt-sharded-directory"},lZ=["directory","hamt-sharded-directory"],fM=parseInt("0644",8),dM=parseInt("0755",8),Te=class r{static unmarshal(e){let t=Co.decode(e),n=new r({type:uM[t.Type!=null?t.Type.toString():"File"],data:t.Data,blockSizes:t.blocksizes,mode:t.mode,mtime:t.mtime!=null?{secs:t.mtime.Seconds??0n,nsecs:t.mtime.FractionalNanoseconds}:void 0,fanout:t.fanout});return n._originalMode=t.mode??0,n}type;data;blockSizes;hashType;fanout;mtime;_mode;_originalMode;constructor(e={type:"file"}){let{type:t,data:n,blockSizes:i,hashType:o,fanout:s,mtime:a,mode:c}=e;if(t!=null&&!Object.values(uM).includes(t))throw new Pm("Type: "+t+" is not valid");this.type=t??"file",this.data=n,this.hashType=o,this.fanout=s,this.blockSizes=i??[],this._originalMode=0,this.mode=c,this.mtime=a}set mode(e){e==null?this._mode=this.isDirectory()?dM:fM:this._mode=e&4095}get mode(){return this._mode}isDirectory(){return lZ.includes(this.type)}addBlockSize(e){this.blockSizes.push(e)}removeBlockSize(e){this.blockSizes.splice(e,1)}fileSize(){if(this.isDirectory())return 0n;let e=0n;return this.blockSizes.forEach(t=>{e+=t}),this.data!=null&&(e+=BigInt(this.data.length)),e}marshal(){let e;switch(this.type){case"raw":e=Co.DataType.Raw;break;case"directory":e=Co.DataType.Directory;break;case"file":e=Co.DataType.File;break;case"metadata":e=Co.DataType.Metadata;break;case"symlink":e=Co.DataType.Symlink;break;case"hamt-sharded-directory":e=Co.DataType.HAMTShard;break;default:throw new Pm(`Type: ${e} is not valid`)}let t=this.data;(this.data==null||this.data.length===0)&&(t=void 0);let n;this.mode!=null&&(n=this._originalMode&4294963200|(this.mode??0),n===fM&&!this.isDirectory()&&(n=void 0),n===dM&&this.isDirectory()&&(n=void 0));let i;return this.mtime!=null&&(i={Seconds:this.mtime.secs,FractionalNanoseconds:this.mtime.nsecs}),Co.encode({Type:e,Data:t,filesize:this.isDirectory()?void 0:this.fileSize(),blocksizes:this.blockSizes,hashType:this.hashType,fanout:this.fanout,mode:n,mtime:i})}};var _5=it(mM(),1);function uZ(r){let e=new Array(4);for(let t=0;t<4;t++)e[t]=r&255,r=r>>8;return new Uint8Array(e)}var kQe=Oc({name:"murmur3-32",code:35,encode:r=>uZ(_5.default.x86.hash32(r))}),Ru=Oc({name:"murmur3-128",code:34,encode:r=>Rc.fromHex(_5.default.x64.hash128(r))}),PQe=Oc({name:"murmur3-x64-64",code:34,encode:r=>Rc.fromHex(_5.default.x64.hash128(r)).subarray(0,8)});var wM=it(I5(),1);var yi=class r{_options;_popCount;_parent;_posAtParent;_children;key;constructor(e,t,n=0){this._options=e,this._popCount=0,this._parent=t,this._posAtParent=n,this._children=new wM.default,this.key=null}async put(e,t){let n=await this._findNewBucketAndPos(e);n.bucket._putAt(n,e,t)}async get(e){let t=await this._findChild(e);if(t!=null)return t.value}async del(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);n!=null&&n.key===e&&t.bucket._delAt(t.pos)}leafCount(){return this._children.compactArray().reduce((t,n)=>n instanceof r?t+n.leafCount():t+1,0)}childrenCount(){return this._children.length}onlyChild(){return this._children.get(0)}*eachLeafSeries(){let e=this._children.compactArray();for(let t of e)t instanceof r?yield*t.eachLeafSeries():yield t}serialize(e,t){let n=[];return t(this._children.reduce((i,o,s)=>(o!=null&&(o instanceof r?i.push(o.serialize(e,t)):i.push(e(o,s))),i),n))}async asyncTransform(e,t){return xM(this,e,t)}toJSON(){return this.serialize(mZ,gZ)}prettyPrint(){return JSON.stringify(this.toJSON(),null," ")}tableSize(){return Math.pow(2,this._options.bits)}async _findChild(e){let t=await this._findPlace(e),n=t.bucket._at(t.pos);if(!(n instanceof r)&&n!=null&&n.key===e)return n}async _findPlace(e){let t=this._options.hash(typeof e=="string"?O(e):e),n=await t.take(this._options.bits),i=this._children.get(n);return i instanceof r?i._findPlace(t):{bucket:this,pos:n,hash:t,existingChild:i}}async _findNewBucketAndPos(e){let t=await this._findPlace(e);if(t.existingChild!=null&&t.existingChild.key!==e){let n=new r(this._options,t.bucket,t.pos);t.bucket._putObjectAt(t.pos,n);let i=await n._findPlace(t.existingChild.hash);return i.bucket._putAt(i,t.existingChild.key,t.existingChild.value),n._findNewBucketAndPos(t.hash)}return t}_putAt(e,t,n){this._putObjectAt(e.pos,{key:t,value:n,hash:e.hash})}_putObjectAt(e,t){this._children.get(e)==null&&this._popCount++,this._children.set(e,t)}_delAt(e){if(e===-1)throw new Error("Invalid position");this._children.get(e)!=null&&this._popCount--,this._children.unset(e),this._level()}_level(){if(this._parent!=null&&this._popCount<=1)if(this._popCount===1){let e=this._children.find(pZ);if(e!=null&&!(e instanceof r)){let t=e.hash;t.untake(this._options.bits);let n={pos:this._posAtParent,hash:t,bucket:this._parent};this._parent._putAt(n,e.key,e.value)}}else this._parent._delAt(this._posAtParent)}_at(e){return this._children.get(e)}};function pZ(r){return!!r}function mZ(r,e){return r.key}function gZ(r){return r}async function xM(r,e,t){let n=[];for(let i of r._children.compactArray())if(i instanceof yi)await xM(i,e,t);else{let o=await e(i);n.push({bitField:r._children.bitField(),children:o})}return t(n)}var yZ=[255,254,252,248,240,224,192,128],wZ=[1,3,7,15,31,63,127,255],T5=class{_value;_currentBytePos;_currentBitPos;constructor(e){this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let i=this._value[this._currentBytePos],o=this._currentBitPos+1,s=Math.min(o,t),a=xZ(i,o-s,s);n=(n<<s)+a,t-=s,this._currentBitPos-=s,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}};function xZ(r,e,t){let n=bZ(e,t);return(r&n)>>>e}function bZ(r,e){return yZ[r]&wZ[Math.min(e+r-1,7)]}function bM(r){function e(t){return t instanceof C5?t:new C5(t,r)}return e}var C5=class{_value;_hashFn;_depth;_availableBits;_currentBufferIndex;_buffers;constructor(e,t){if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let i=this._buffers[this._currentBufferIndex],o=Math.min(i.availableBits(),t),s=i.take(o);n=(n<<o)+s,t-=o,this._availableBits-=o,i.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],i=Math.min(n.totalBits()-n.availableBits(),t);n.untake(i),t-=i,this._availableBits+=i,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Ve([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new T5(t);this._buffers.push(n),this._availableBits+=n.availableBits()}};function rh(r){if(r==null||r.hashFn==null)throw new Error("please define an options.hashFn");let e={bits:r.bits??8,hash:bM(r.hashFn)};return new yi(e)}var vZ=async function(r){return(await Ru.encode(r)).slice(0,8).reverse()},EZ=async(r,e,t)=>{let n=(e.tableSize()-1).toString(16).length;await Promise.all(r.map(async i=>{if(i.Name==null)throw new Error("Unexpected Link without a Name");if(i.Name.length===n){let o=parseInt(i.Name,16);e._putObjectAt(o,new yi({hash:t._options.hash,bits:t._options.bits},e,o));return}await t.put(i.Name.substring(2),!0)}))},vM=(r,e)=>r.toString(16).toUpperCase().padStart(e,"0").substring(0,e),SZ=r=>{let e=r.bucket,t=[];for(;e._parent!=null;)t.push(e),e=e._parent;return t.push(e),t.reverse()},EM=async(r,e,t,n,i)=>{if(n==null){if(r.Data==null)throw new vr("no data in PBNode");let f;try{f=Te.unmarshal(r.Data)}catch(d){throw new vr(d.message)}if(f.type!=="hamt-sharded-directory")throw new vr("not a HAMT");if(f.fanout==null)throw new vr("missing fanout");let h=rh({hashFn:vZ,bits:Math.log2(Number(f.fanout))});n={rootBucket:h,hamtDepth:1,lastBucket:h}}let o=(n.lastBucket.tableSize()-1).toString(16).length;await EZ(r.Links,n.lastBucket,n.rootBucket);let s=await n.rootBucket._findNewBucketAndPos(e),a=vM(s.pos,o),c=SZ(s);c.length>n.hamtDepth&&(n.lastBucket=c[n.hamtDepth],a=vM(n.lastBucket._posAtParent,o));let l=r.Links.find(f=>{if(f.Name==null)return!1;let h=f.Name.substring(0,o),d=f.Name.substring(o);return!(h!==a||d!==""&&d!==e)});if(l==null)return;if(l.Name!=null&&l.Name.substring(o)===e)return l.Hash;n.hamtDepth++;let u=await t.get(l.Hash,i);return r=rr(u),EM(r,e,t,n,i)},SM=EM;var AZ=(r,e,t,n,i,o,s)=>{async function*a(c={}){let l=c.offset??0,u=c.length??e.Links.length,f=e.Links.slice(l,u);c.onProgress?.(new G("unixfs:exporter:walk:directory",{cid:r})),yield*ot(f,h=>Nt(h,d=>async()=>{let m=d.Name??"",g=`${n}/${m}`;return(await i(d.Hash,m,g,[],o+1,s,c)).entry}),h=>Or(h,{ordered:!0,concurrency:c.blockReadConcurrency}),h=>si(h,d=>d!=null))}return a},AM=AZ;async function _M(r,e,t,n,i,o,s){if(e instanceof Uint8Array){let l=Pu(e,n,i,o);t.push(l);return}if(e.Data==null)throw new vr("no data in PBNode");let a;try{a=Te.unmarshal(e.Data)}catch(l){throw new vr(l.message)}if(a.data!=null){let l=a.data,u=Pu(l,n,i,o);t.push(u),n+=BigInt(u.byteLength)}let c=[];if(e.Links.length!==a.blockSizes.length)throw new vr("Inconsistent block sizes and dag links");for(let l=0;l<e.Links.length;l++){let u=e.Links[l],f=n,h=f+a.blockSizes[l];if((i>=f&&i<h||o>=f&&o<=h||i<f&&o>h)&&c.push({link:u,blockStart:n}),n=h,n>o)break}await ot(c,l=>Nt(l,u=>async()=>{let f=await r.get(u.link.Hash,s);return{...u,block:f}}),l=>Or(l,{ordered:!0,concurrency:s.blockReadConcurrency}),async l=>{for await(let{link:u,block:f,blockStart:h}of l){let d;switch(u.Hash.code){case ct:d=rr(f);break;case vt:d=f;break;default:t.end(new vr(`Unsupported codec: ${u.Hash.code}`));return}let m=new kn({concurrency:1});m.on("error",g=>{t.end(g)}),m.add(async()=>{s.onProgress?.(new G("unixfs:exporter:walk:file",{cid:u.Hash})),await _M(r,d,t,h,i,o,s)}),await m.onIdle()}}),n>=o&&t.end()}var _Z=(r,e,t,n,i,o,s)=>{async function*a(c={}){let l=t.fileSize();if(l===void 0)throw new Error("File was a directory");let{start:u,end:f}=th(l,c.offset,c.length);if(f===0n)return;let h=0n,d=f-u,m=Xr();c.onProgress?.(new G("unixfs:exporter:walk:file",{cid:r})),_M(s,e,m,0n,u,f,c).catch(g=>{m.end(g)});for await(let g of m)if(g!=null){if(h+=BigInt(g.byteLength),h>d)throw m.end(),new b5("Read too many bytes - the file size reported by the UnixFS data in the root node may be incorrect");h===d&&m.end(),c.onProgress?.(new G("unixfs:exporter:progress:unixfs:file",{bytesRead:h,totalBytes:d,fileSize:l})),yield g}if(h<d)throw new v5("Traversed entire DAG but did not read enough bytes")}return a},KE=_Z;var IZ=(r,e,t,n,i,o,s)=>{function a(c={}){return c.onProgress?.(new G("unixfs:exporter:walk:hamt-sharded-directory",{cid:r})),IM(e,n,i,o,s,c)}return a};async function*IM(r,e,t,n,i,o){let s=r.Links;if(r.Data==null)throw new vr("no data in PBNode");let a;try{a=Te.unmarshal(r.Data)}catch(u){throw new vr(u.message)}if(a.fanout==null)throw new vr("missing fanout");let c=(a.fanout-1n).toString(16).length,l=ot(s,u=>Nt(u,f=>async()=>{let h=f.Name!=null?f.Name.substring(c):null;if(h!=null&&h!==""){let d=await t(f.Hash,h,`${e}/${h}`,[],n+1,i,o);return{entries:d.entry==null?[]:[d.entry]}}else{let d=await i.get(f.Hash,o);return r=rr(d),o.onProgress?.(new G("unixfs:exporter:walk:hamt-sharded-directory",{cid:f.Hash})),{entries:IM(r,e,t,n,i,o)}}}),u=>Or(u,{ordered:!0,concurrency:o.blockReadConcurrency}));for await(let{entries:u}of l)yield*u}var TM=IZ;var TZ=(r,e)=>r.Links.find(n=>n.Name===e)?.Hash,CZ={raw:KE,file:KE,directory:AM,"hamt-sharded-directory":TM,metadata:(r,e,t,n,i,o,s)=>()=>[],symlink:(r,e,t,n,i,o,s)=>()=>[]},kZ=async(r,e,t,n,i,o,s,a)=>{let c=await s.get(r,a),l=rr(c),u,f;if(e==null&&(e=r.toString()),l.Data==null)throw new vr("no data in PBNode");try{u=Te.unmarshal(l.Data)}catch(d){throw new vr(d.message)}if(t==null&&(t=e),n.length>0){let d;if(u?.type==="hamt-sharded-directory"?d=await SM(l,n[0],s):d=TZ(l,n[0]),d==null)throw new Wi("file does not exist");let m=n.shift(),g=`${t}/${m}`;f={cid:d,toResolve:n,name:m??"",path:g}}let h=CZ[u.type](r,l,u,t,i,o,s);if(h==null)throw new Wi("could not find content exporter");return u.isDirectory()?{entry:{type:"directory",name:e,path:t,cid:r,content:h,unixfs:u,depth:o,node:l,size:u.fileSize()},next:f}:{entry:{type:"file",name:e,path:t,cid:r,content:h,unixfs:u,depth:o,node:l,size:u.fileSize()},next:f}},CM=kZ;var PZ={[ct]:CM,[vt]:cM,[Pn]:iM,[co]:oM,[cr.code]:sM,[Bo]:aM},kM=async(r,e,t,n,i,o,s)=>{let a=PZ[r.code];if(a==null)throw new x5(`No resolver for code ${r.code}`);return a(r,e,t,n,kM,i,o,s)},PM=kM;var RZ=(r="")=>(r.trim().match(/([^\\^/]|\\\/)+/g)??[]).filter(Boolean),DZ=r=>{if(r instanceof Uint8Array)return{cid:W.decode(r),toResolve:[]};let e=W.asCID(r);if(e!=null)return{cid:e,toResolve:[]};if(typeof r=="string"){r.indexOf("/ipfs/")===0&&(r=r.substring(6));let t=RZ(r);return{cid:W.parse(t[0]),toResolve:t.slice(1)}}throw new w5(`Unknown path type ${r}`)};async function*Dm(r,e,t={}){let{cid:n,toResolve:i}=DZ(r),o=n.toString(),s=o,a=i.length;for(;;){let c=await PM(n,o,s,i,a,e,t);if(c.entry==null&&c.next==null)throw new Wi(`Could not resolve ${r}`);if(c.entry!=null&&(yield c.entry),c.next==null)return;i=c.next.toResolve,n=c.next.cid,o=c.next.name,s=c.next.path}}async function pr(r,e,t={}){let n=await To(Dm(r,e,t));if(n==null)throw new Wi(`Could not resolve ${r}`);return n}async function*nh(r,e,t={}){let n=await pr(r,e,t);if(n==null)return;if(yield n,n.type==="directory")for await(let o of i(n,t))yield o;async function*i(o,s){for await(let a of o.content(s))yield a,!(a instanceof Uint8Array)&&a.type==="directory"&&(yield*i(a,s))}}async function NZ(r,e,t){let n=[],i;for await(let o of Dm(e,r,t))n.push(o.cid),i=o;if(i==null)throw new Zd("No terminal element found");return{ipfsRoots:n,terminalElement:i}}function qE(r){return r.type==="object"}async function RM({cid:r,path:e,resource:t,options:n,blockstore:i,log:o}){try{return await NZ(i,`${r.toString()}/${e}`,n)}catch(s){return n?.signal?.throwIfAborted(),["ERR_NO_PROP","ERR_NO_TERMINAL_ELEMENT","ERR_NOT_FOUND"].includes(s.code)?m5(t):(o.error("error walking path %s",e,s),Qd(t,"Error walking path"))}}var k5=class extends Mt{codes=[Pn];canHandle({cid:e,accept:t,pathDetails:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),n==null||!qE(n.terminalElement)||e.code!==Pn||i==null?!1:qE(n.terminalElement)}async handle(e){let{cid:t,path:n,resource:i,accept:o,pathDetails:s}=e;this.log.trace("fetching %c/%s",t,n);let a=s.ipfsRoots,l=s.terminalElement.node,u;if(o==="application/octet-stream"||o==="application/vnd.ipld.dag-cbor"||o==="application/cbor")u=l;else if(o==="application/vnd.ipld.dag-json")try{let d=Ta(l);u=Dg(d)}catch(d){return this.log.error("could not transform %c to application/vnd.ipld.dag-json",d),ta(i)}else try{u=nM(l)}catch(d){if(o==="application/json")return this.log('could not decode DAG-CBOR as JSON-safe, but the client sent "Accept: application/json"',d),ta(i);this.log("could not decode DAG-CBOR as JSON-safe, falling back to `application/octet-stream`",d),u=l}e.byteRangeContext.setBody(u);let f=cn(i,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log}),h=o??(u instanceof Uint8Array?"application/octet-stream":"application/json");return f.headers.set("content-type",h),a5(f,a),f}};function OZ(r){return r[Symbol.asyncIterator]!=null}function LZ(r,e=1){return e=Number(e),OZ(r)?async function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for await(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)}():function*(){let t=[];if(e<1&&(e=1),e!==Math.round(e))throw new Error("Batch size must be an integer");for(let n of r)for(t.push(n);t.length>=e;)yield t.slice(0,e),t=t.slice(e);for(;t.length>0;)yield t.slice(0,e),t=t.slice(e)}()}var P5=LZ;async function*Nm(r,e=1){for await(let t of P5(r,e)){let n=t.map(async i=>i().then(o=>({ok:!0,value:o}),o=>({ok:!1,err:o})));for(let i=0;i<n.length;i++){let o=await n[i];if(o.ok)yield o.value;else throw o.err}}}var BZ=262144,Om=(r={})=>{let e=r.chunkSize??BZ;return async function*(n){let i=new oe,o=0,s=!1;for await(let a of n)for(i.append(a),o+=a.length;o>=e;)if(yield i.slice(0,e),s=!0,e===i.length)i=new oe,o=0;else{let c=new oe;c.append(i.sublist(e)),i=c,o-=e}(!s||o>0)&&(yield i.subarray(0,o))}};var ko=async(r,e,t)=>{t.codec==null&&(t.codec=nr);let n=await Fe.digest(r),i=W.create(t.cidVersion,t.codec.code,n);return await e.put(i,r,t),i};function DM(r){return async function*(t,n){let i=0n;for await(let o of t.content)yield async()=>{let s,a={codec:nr,cidVersion:r.cidVersion,onProgress:r.onProgress};r.rawLeaves?(a.codec=_n,a.cidVersion=1):(s=new Te({type:r.leafType,data:o}),o=Qe({Data:s.marshal(),Links:[]}));let c=await ko(o,n,a);return i+=BigInt(o.byteLength),r.onProgress?.(new G("unixfs:importer:progress:file:write",{bytesWritten:i,cid:c,path:t.path})),{cid:c,unixfs:s,size:BigInt(o.length),block:o}}}}var R5=class r extends Error{static name="InvalidParametersError";static code="ERR_INVALID_PARAMS";name=r.name;code=r.code;constructor(e="Invalid parameters"){super(e)}};var vc=class r extends Error{static name="InvalidContentError";static code="ERR_INVALID_CONTENT";name=r.name;code=r.code;constructor(e="Invalid content"){super(e)}};var NM=async(r,e,t)=>{let n=new Te({type:"directory",mtime:r.mtime,mode:r.mode}),i=Qe(qt({Data:n.marshal()})),o=await ko(i,e,t),s=r.path;return{cid:o,path:s,unixfs:n,size:BigInt(i.length),originalPath:r.originalPath,block:i}};async function*MZ(r,e,t){let n=-1,i;for await(let o of Nm(t.bufferImporter(r,e),t.blockWriteConcurrency)){if(n++,n===0){i={...o,single:!0};continue}else n===1&&i!=null&&(yield{...i,block:void 0,single:void 0},i=void 0);yield{...o,block:void 0}}i!=null&&(yield i)}function OM(r){return r.single===!0}var UZ=(r,e,t)=>async function(i){if(i.length===1&&OM(i[0])&&t.reduceSingleLeafToSelf){let u=i[0],f=u.block;return OM(u)&&(r.mtime!==void 0||r.mode!==void 0)&&(u.unixfs=new Te({type:"file",mtime:r.mtime,mode:r.mode,data:u.block}),f={Data:u.unixfs.marshal(),Links:[]},u.block=Qe(qt(f)),u.cid=await ko(u.block,e,{...t,cidVersion:t.cidVersion}),u.size=BigInt(u.block.length)),t.onProgress?.(new G("unixfs:importer:progress:file:layout",{cid:u.cid,path:u.originalPath})),{cid:u.cid,path:r.path,unixfs:u.unixfs,size:u.size,originalPath:u.originalPath}}let o=new Te({type:"file",mtime:r.mtime,mode:r.mode}),s=i.filter(u=>u.cid.code===vt&&u.size>0||u.unixfs!=null&&u.unixfs.data==null&&u.unixfs.fileSize()>0n?!0:!!u.unixfs?.data?.length).map(u=>u.cid.code===vt?(o.addBlockSize(u.size),{Name:"",Tsize:Number(u.size),Hash:u.cid}):(u.unixfs?.data==null?o.addBlockSize(u.unixfs?.fileSize()??0n):o.addBlockSize(BigInt(u.unixfs.data.length)),{Name:"",Tsize:Number(u.size),Hash:u.cid})),a={Data:o.marshal(),Links:s},c=Qe(qt(a)),l=await ko(c,e,t);return t.onProgress?.(new G("unixfs:importer:progress:file:layout",{cid:l,path:r.originalPath})),{cid:l,path:r.path,unixfs:o,size:BigInt(c.length+a.Links.reduce((u,f)=>u+(f.Tsize??0),0)),originalPath:r.originalPath,block:c}},LM=async(r,e,t)=>t.layout(MZ(r,e,t),UZ(r,e,t));function FZ(r){return Symbol.iterator in r}function $Z(r){return Symbol.asyncIterator in r}function HZ(r){try{if(r instanceof Uint8Array)return async function*(){yield r}();if(FZ(r))return async function*(){yield*r}();if($Z(r))return r}catch{throw new vc("Content was invalid")}throw new vc("Content was invalid")}function BM(r){return async function*(t,n){for await(let i of t){let o;if(i.path!=null&&(o=i.path,i.path=i.path.split("/").filter(s=>s!=null&&s!==".").join("/")),VZ(i)){let s={path:i.path,mtime:i.mtime,mode:i.mode,content:async function*(){let a=0n;for await(let c of r.chunker(r.chunkValidator(HZ(i.content)))){let l=BigInt(c.byteLength);a+=l,r.onProgress?.(new G("unixfs:importer:progress:file:read",{bytesRead:a,chunkSize:l,path:i.path})),yield c}}(),originalPath:o};yield async()=>LM(s,n,r)}else if(i.path!=null){let s={path:i.path,mtime:i.mtime,mode:i.mode,originalPath:o};yield async()=>NM(s,n,r)}else throw new Error("Import candidate must have content or path or both")}}}function VZ(r){return r.content!=null}var MM=()=>async function*(e){for await(let t of e){if(t.length===void 0)throw new vc("Content was invalid");if(typeof t=="string"||t instanceof String)yield O(t.toString());else if(Array.isArray(t))yield Uint8Array.from(t);else if(t instanceof Uint8Array)yield t;else throw new vc("Content was invalid")}};var zZ=174;function Lm(r){let e=r?.maxChildrenPerNode??zZ;return async function t(n,i){let o=[];for await(let s of P5(n,e))o.push(await i(s));return o.length>1?t(o,i):o[0]}}var as=class{options;root;dir;path;dirty;flat;parent;parentKey;unixfs;mode;mtime;cid;size;nodeSize;constructor(e,t){this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}},Bm=W.parse("QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"),Mm=W.parse("zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi");var Du=class extends as{_children;constructor(e,t){super(e,t),this._children=new Map}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,this._children.set(e,t)}async get(e){return Promise.resolve(this._children.get(e))}childCount(){return this._children.size}directChildrenCount(){return this.childCount()}onlyChild(){return this._children.values().next().value}async*eachChildSeries(){for(let[e,t]of this._children.entries())yield{key:e,child:t}}estimateNodeSize(){if(this.nodeSize!==void 0)return this.nodeSize;this.nodeSize=0;for(let[e,t]of this._children.entries())t.size!=null&&t.cid!=null&&(this.nodeSize+=e.length+(this.options.cidVersion===1?Mm.bytes.byteLength:Bm.bytes.byteLength));return this.nodeSize}async*flush(e){let t=[];for(let[c,l]of this._children.entries()){let u=l;if(l instanceof as)for await(let f of l.flush(e))u=f,yield f;u.size!=null&&u.cid!=null&&t.push({Name:c,Tsize:Number(u.size),Hash:u.cid})}let n=new Te({type:"directory",mtime:this.mtime,mode:this.mode}),i={Data:n.marshal(),Links:t},o=Qe(qt(i)),s=await ko(o,e,this.options),a=o.length+i.Links.reduce((c,l)=>c+(l.Tsize??0),0);this.cid=s,this.size=a,yield{cid:s,unixfs:n,path:this.path,size:BigInt(a)}}};async function KZ(r){return(await Ru.encode(r)).slice(0,8).reverse()}var UM=BigInt(34),qZ=8,jE=class extends as{_bucket;constructor(e,t){super(e,t),this._bucket=rh({hashFn:KZ,bits:t.shardFanoutBits??qZ})}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this._bucket.put(e,t)}async get(e){return this._bucket.get(e)}childCount(){return this._bucket.leafCount()}directChildrenCount(){return this._bucket.childrenCount()}onlyChild(){return this._bucket.onlyChild()}async*eachChildSeries(){for await(let{key:e,value:t}of this._bucket.eachLeafSeries())yield{key:e,child:t}}estimateNodeSize(){return this.nodeSize!==void 0?this.nodeSize:(this.nodeSize=HM(this._bucket,this,this.options),this.nodeSize)}async*flush(e){for await(let t of $M(this._bucket,e,this,this.options))yield{...t,path:this.path}}},FM=jE;async function*$M(r,e,t,n){let i=r._children,o=(r.tableSize()-1).toString(16).length,s=[],a=0n;for(let m=0;m<i.length;m++){let g=i.get(m);if(g==null)continue;let w=m.toString(16).toUpperCase().padStart(o,"0");if(g instanceof yi){let x;for await(let v of $M(g,e,null,n))x=v;if(x==null)throw new Error("Could not flush sharded directory, no subshard found");s.push({Name:w,Tsize:Number(x.size),Hash:x.cid}),a+=x.size}else if(jZ(g.value)){let x=g.value,v;for await(let S of x.flush(e))v=S,yield v;if(v==null)throw new Error("Did not flush dir");let b=w+g.key;s.push({Name:b,Tsize:Number(v.size),Hash:v.cid}),a+=v.size}else{let x=g.value;if(x.cid==null)continue;let v=w+g.key,b=x.size;s.push({Name:v,Tsize:Number(b),Hash:x.cid}),a+=BigInt(b??0)}}let c=Uint8Array.from(i.bitField().reverse()),l=new Te({type:"hamt-sharded-directory",data:c,fanout:BigInt(r.tableSize()),hashType:UM,mtime:t?.mtime,mode:t?.mode}),u={Data:l.marshal(),Links:s},f=Qe(qt(u)),h=await ko(f,e,n),d=BigInt(f.byteLength)+a;yield{cid:h,unixfs:l,size:d}}function jZ(r){return typeof r.flush=="function"}function HM(r,e,t){let n=r._children,i=(r.tableSize()-1).toString(16).length,o=[];for(let l=0;l<n.length;l++){let u=n.get(l);if(u==null)continue;let f=l.toString(16).toUpperCase().padStart(i,"0");if(u instanceof yi){let h=HM(u,null,t);o.push({Name:f,Tsize:Number(h),Hash:t.cidVersion===0?Bm:Mm})}else if(typeof u.value.flush=="function"){let d=u.value.nodeSize();o.push({Name:f+u.key,Tsize:Number(d),Hash:t.cidVersion===0?Bm:Mm})}else{let h=u.value;if(h.cid==null)continue;let d=f+u.key,m=h.size;o.push({Name:d,Tsize:Number(m),Hash:h.cid})}}let s=Uint8Array.from(n.bitField().reverse()),a=new Te({type:"hamt-sharded-directory",data:s,fanout:BigInt(r.tableSize()),hashType:UM,mtime:e?.mtime,mode:e?.mode});return Qe(qt({Data:a.marshal(),Links:o})).length}async function WE(r,e,t,n){let i=e;e instanceof Du&&e.estimateNodeSize()>t&&(i=await WZ(e,n));let o=i.parent;if(o!=null){if(i!==e){if(r!=null&&(r.parent=i),i.parentKey==null)throw new Error("No parent key found");await o.put(i.parentKey,i)}return WE(i,o,t,n)}return i}async function WZ(r,e){let t=new FM({root:r.root,dir:!0,parent:r.parent,parentKey:r.parentKey,path:r.path,dirty:r.dirty,flat:!1,mtime:r.mtime,mode:r.mode},e);for await(let{key:n,child:i}of r.eachChildSeries())await t.put(n,i);return t}var VM=(r="")=>r.split(/(?<!\\)\//).filter(Boolean);async function GZ(r,e,t){let n=VM(r.path??""),i=n.length-1,o=e,s="";for(let a=0;a<n.length;a++){let c=n[a];s+=`${s!==""?"/":""}${c}`;let l=a===i;if(o.dirty=!0,o.cid=void 0,o.size=void 0,l)await o.put(c,r),e=await WE(null,o,t.shardSplitThresholdBytes,t);else{let u=await o.get(c);(u==null||!(u instanceof as))&&(u=new Du({root:!1,dir:!0,parent:o,parentKey:c,path:s,dirty:!0,flat:!0,mtime:u?.unixfs?.mtime,mode:u?.unixfs?.mode},t)),await o.put(c,u),o=u}}return e}async function*zM(r,e){if(!(r instanceof as)){r.unixfs?.isDirectory()===!0&&(yield r);return}yield*r.flush(e)}function KM(r){return async function*(t,n){let i=new Du({root:!0,dir:!0,path:"",dirty:!0,flat:!0},r),o,s=!1;for await(let a of t){if(a==null)continue;let c=`${a.originalPath??""}`.split("/")[0];c!=null&&c!==""&&(o==null?(o=c,s=!0):o!==c&&(s=!1)),i=await GZ(a,i,r),a.unixfs?.isDirectory()!==!0&&(yield a)}if(r.wrapWithDirectory||s&&i.childCount()>1)yield*zM(i,n);else for await(let a of i.eachChildSeries())a!=null&&(yield*zM(a.child,n))}}async function*Nu(r,e,t={}){let n;Symbol.asyncIterator in r||Symbol.iterator in r?n=r:n=[r];let i=t.wrapWithDirectory??!1,o=t.shardSplitThresholdBytes??262144,s=t.shardFanoutBits??8,a=t.cidVersion??1,c=t.rawLeaves??!0,l=t.leafType??"file",u=t.fileImportConcurrency??50,f=t.blockWriteConcurrency??10,h=t.reduceSingleLeafToSelf??!0,d=t.chunker??Om(),m=t.chunkValidator??MM(),g=t.dagBuilder??BM({chunker:d,chunkValidator:m,wrapWithDirectory:i,layout:t.layout??Lm(),bufferImporter:t.bufferImporter??DM({cidVersion:a,rawLeaves:c,leafType:l,onProgress:t.onProgress}),blockWriteConcurrency:f,reduceSingleLeafToSelf:h,cidVersion:a,onProgress:t.onProgress}),w=t.treeBuilder??KM({wrapWithDirectory:i,shardSplitThresholdBytes:o,shardFanoutBits:s,cidVersion:a,onProgress:t.onProgress});for await(let x of w(Nm(g(n,e),u),e))yield{cid:x.cid,path:x.path,unixfs:x.unixfs,size:x.size}}async function qM(r,e,t={}){let n=await Lf(Nu([r],e,t));if(n==null)throw new R5("Nothing imported");return n}async function jM(r,e,t={}){return qM({content:r},e,t)}async function WM(r,e,t={}){return qM({content:r},e,t)}var Um={cidVersion:1,rawLeaves:!0,layout:Lm({maxChildrenPerNode:1024}),chunker:Om({chunkSize:1048576})};async function*D5(r,e,t={}){yield*Nu(r,e,{...Um,...t})}async function GM(r,e,t={}){let{cid:n}=await jM(r,e,{...Um,...t});return n}async function XM(r,e,t={}){let{cid:n}=await WM(r,e,{...Um,...t});return n}async function YM(r,e,t={}){if(r.path==null)throw new br("path is required");if(r.content==null)throw new br("content is required");let n=await To(D5([r],e,{...Um,...t,wrapWithDirectory:!0}));if(n==null)throw new br("Nothing imported");return n.cid}async function QM(r,e,t={}){if(r.content!=null)throw new br("Directories cannot have content, use addFile instead");let i=await(r.path==null?Lf:To)(D5([{...r,path:r.path??"-"}],e,{...Um,...t,wrapWithDirectory:r.path!=null}));if(i==null)throw new br("Nothing imported");return i.cid}var QE=it(I5(),1);function O5(r){function e(t){return t instanceof N5?t:new N5(t,r)}return e}var N5=class{_value;_hashFn;_depth;_availableBits;_currentBufferIndex;_buffers;constructor(e,t){if(!(e instanceof Uint8Array))throw new Error("can only hash Uint8Arrays");this._value=e,this._hashFn=t,this._depth=-1,this._availableBits=0,this._currentBufferIndex=0,this._buffers=[]}async take(e){let t=e;for(;this._availableBits<t;)await this._produceMoreBits();let n=0;for(;t>0;){let i=this._buffers[this._currentBufferIndex],o=Math.min(i.availableBits(),t),s=i.take(o);n=(n<<o)+s,t-=o,this._availableBits-=o,i.availableBits()===0&&this._currentBufferIndex++}return n}untake(e){let t=e;for(;t>0;){let n=this._buffers[this._currentBufferIndex],i=Math.min(n.totalBits()-n.availableBits(),t);n.untake(i),t-=i,this._availableBits+=i,this._currentBufferIndex>0&&n.totalBits()===n.availableBits()&&(this._depth--,this._currentBufferIndex--)}}async _produceMoreBits(){this._depth++;let e=this._depth>0?Ve([this._value,Uint8Array.from([this._depth])]):this._value,t=await this._hashFn(e),n=new GE(t);this._buffers.push(n),this._availableBits+=n.availableBits()}},XZ=[255,254,252,248,240,224,192,128],YZ=[1,3,7,15,31,63,127,255],GE=class{_value;_currentBytePos;_currentBitPos;constructor(e){this._value=e,this._currentBytePos=e.length-1,this._currentBitPos=7}availableBits(){return this._currentBitPos+1+this._currentBytePos*8}totalBits(){return this._value.length*8}take(e){let t=e,n=0;for(;t>0&&this._haveBits();){let i=this._value[this._currentBytePos],o=this._currentBitPos+1,s=Math.min(o,t),a=QZ(i,o-s,s);n=(n<<s)+a,t-=s,this._currentBitPos-=s,this._currentBitPos<0&&(this._currentBitPos=7,this._currentBytePos--)}return n}untake(e){for(this._currentBitPos+=e;this._currentBitPos>7;)this._currentBitPos-=8,this._currentBytePos+=1}_haveBits(){return this._currentBytePos>=0}};function QZ(r,e,t){let n=ZZ(e,t);return(r&n)>>>e}function ZZ(r,e){return XZ[r]&YZ[Math.min(e+r-1,7)]}var Fm=BigInt(Ru.code),Ou=8;async function ih(r){return(await Ru.encode(r)).subarray(0,8).reverse()}var eU=it(I5(),1);var Po=async(r,e,t)=>{t.codec==null&&(t.codec=nr);let n=await Fe.digest(r),i=W.create(t.cidVersion,t.codec.code,n);return await e.put(i,r,{...t,signal:t.signal}),i};var XE=class{options;root;dir;path;dirty;flat;parent;parentKey;unixfs;mode;mtime;cid;size;nodeSize;constructor(e,t){this.options=t??{},this.root=e.root,this.dir=e.dir,this.path=e.path,this.dirty=e.dirty,this.flat=e.flat,this.parent=e.parent,this.parentKey=e.parentKey,this.unixfs=e.unixfs,this.mode=e.mode,this.mtime=e.mtime}},L5=class extends XE{_bucket;constructor(e,t){super(e,t),this._bucket=rh({hashFn:ih,bits:8})}async put(e,t){this.cid=void 0,this.size=void 0,this.nodeSize=void 0,await this._bucket.put(e,t)}async get(e){return this._bucket.get(e)}childCount(){return this._bucket.leafCount()}directChildrenCount(){return this._bucket.childrenCount()}onlyChild(){return this._bucket.onlyChild()}async*eachChildSeries(){for await(let{key:e,value:t}of this._bucket.eachLeafSeries())yield{key:e,child:t}}estimateNodeSize(){return this.nodeSize!==void 0?this.nodeSize:(this.nodeSize=JM(this._bucket,this,this.options),this.nodeSize)}async*flush(e){for await(let t of ZM(this._bucket,e,this,this.options))yield{...t,path:this.path}}};async function*ZM(r,e,t,n){let i=r._children,o=[],s=0n;for(let d=0;d<i.length;d++){let m=i.get(d);if(m==null)continue;let g=d.toString(16).toUpperCase().padStart(2,"0");if(m instanceof yi){let w;for await(let x of ZM(m,e,null,n))w=x;if(w==null)throw new Error("Could not flush sharded directory, no sub-shard found");o.push({Name:g,Tsize:Number(w.size),Hash:w.cid}),s+=w.size}else if(JZ(m.value)){let w=m.value,x;for await(let b of w.flush(e))x=b,yield x;if(x==null)throw new Error("Did not flush dir");let v=g+m.key;o.push({Name:v,Tsize:Number(x.size),Hash:x.cid}),s+=x.size}else{let w=m.value;if(w.cid==null)continue;let x=g+m.key,v=w.size;o.push({Name:x,Tsize:Number(v),Hash:w.cid}),s+=BigInt(v??0)}}let a=Uint8Array.from(i.bitField().reverse()),c=new Te({type:"hamt-sharded-directory",data:a,fanout:BigInt(r.tableSize()),hashType:Fm,mtime:t?.mtime,mode:t?.mode}),l={Data:c.marshal(),Links:o},u=Qe(qt(l)),f=await Po(u,e,n),h=BigInt(u.byteLength)+s;yield{cid:f,unixfs:c,size:h}}function JZ(r){return typeof r.flush=="function"}function JM(r,e,t){let n=r._children,i=[];for(let c=0;c<n.length;c++){let l=n.get(c);if(l==null)continue;let u=c.toString(16).toUpperCase().padStart(2,"0");if(l instanceof yi){let f=JM(l,null,t);i.push({Name:u,Tsize:Number(f),Hash:t.cidVersion===0?B5:M5})}else if(typeof l.value.flush=="function"){let h=l.value.nodeSize();i.push({Name:u+l.key,Tsize:Number(h),Hash:t.cidVersion===0?B5:M5})}else{let f=l.value;if(f.cid==null)continue;let h=u+l.key,d=f.size;i.push({Name:h,Tsize:Number(d),Hash:f.cid})}}let o=Uint8Array.from(n.bitField().reverse()),s=new Te({type:"hamt-sharded-directory",data:o,fanout:BigInt(r.tableSize()),hashType:Fm,mtime:e?.mtime,mode:e?.mode});return Qe(qt({Data:s.marshal(),Links:i})).length}var B5=W.parse("QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"),M5=W.parse("zdj7WbTaiJT1fgatdet9Ei9iDB5hdCxkbVyhyh8YTUnXMiwYi");var YE=ze("helia:unixfs:commands:utils:hamt-utils"),U5=r=>r.toString(16).toUpperCase().padStart(2,"0").substring(0,2),tU=async(r,e,t)=>{let n=new L5({root:!0,dir:!0,parent:void 0,parentKey:void 0,path:"",dirty:!0,flat:!1,mtime:t.mtime,mode:t.mode},t);for(let o=0;o<e.length;o++)await n._bucket.put(e[o].name,{size:e[o].size,cid:e[o].cid});let i=await To(n.flush(r));if(i==null)throw new Error("Flushing shard yielded no result");return i},F5=async(r,e,t)=>{let n=Te.unmarshal(r[0].node.Data??new Uint8Array(0)),i=BigInt(Math.pow(2,Ou));r.reverse();let o,s;for(let a=0;a<r.length;a++){let c=a===r.length-1,l=r[a],u=Uint8Array.from(l.children.bitField().reverse()),f=new Te({type:"hamt-sharded-directory",data:u,fanout:i,hashType:Fm});c&&(f.mtime=n.mtime,f.mode=n.mode),s={Data:f.marshal(),Links:l.node.Links};let h=Qe(qt(s));if(o=await Po(h,e,t),!c){let d=r[a+1];if(d==null)throw new Error("Was not operating on shard root but also had no parent?");YE("updating link in parent sub-shard with prefix %s",d.prefix),d.node.Links=d.node.Links.filter(m=>m.Name!==d.prefix),d.node.Links.push({Name:d.prefix,Hash:o,Tsize:l.node.Links.reduce((m,g)=>m+(g.Tsize??0),h.byteLength)})}}if(o==null||s==null)throw new Error("Noting persisted");return{cid:o,node:s}},$5=async(r,e,t,n)=>{let o=O5(ih)(O(e)),s=[];for(;;){let a=await t.get(r,n),c=rr(a),l=new eU.default,u=await o.take(Ou),f=U5(u);s.push({prefix:f,children:l,node:c});let h;for(let m of c.Links){let g=m.Name??"";if(g.length<2)throw new Error("Invalid HAMT - link name was too short");let w=parseInt(g.substring(0,2),16);l.set(w,!0),g.startsWith(f)&&(h=m)}if(h==null){YE("no link found with prefix %s for %s",f,e);break}let d=h.Name??"";if(d.length<2)throw new Error("Invalid HAMT - link name was too short");if(d.length===2){r=h.Hash,YE("descend into sub-shard with prefix %s",d);continue}break}return{path:s,hash:o}};async function H5(r,e,t,n){if(r.Data==null)throw new Error("DagPB node had no data");let i=Te.unmarshal(r.Data),o;if(i.type==="directory")o=eJ(r);else if(i.type==="hamt-sharded-directory")o=await rU(r,0,t,e,n);else throw new Error("Can only estimate the size of directories or shards");return o>t}function eJ(r){let e=0;for(let t of r.Links)e+=(t.Name??"").length,e+=t.Hash.version===1?M5.bytes.byteLength:B5.bytes.byteLength;return e}async function rU(r,e,t,n,i){if(e>t)return t;if(r.Data==null||!Te.unmarshal(r.Data).isDirectory())return e;for(let s of r.Links){let a=s.Name??"";if(a=a.substring(2),e+=a.length,e+=s.Hash.bytes.byteLength,s.Hash.code===ct){let c=await n.get(s.Hash,i),l=rr(c);e+=await rU(l,e,t,n,i)}}return e}var cs=ze("helia:unixfs:components:utils:add-link");async function oh(r,e,t,n){if(r.node.Data==null)throw new br("Invalid parent passed to addLink");if(Te.unmarshal(r.node.Data).type==="hamt-sharded-directory")return cs("adding link to sharded directory"),nJ(r,e,t,n);cs(`adding ${e.Name} (${e.Hash}) to regular directory`);let o=await rJ(r,e,t,n);if(await H5(o.node,t,n.shardSplitThresholdBytes,n)){cs("converting directory to sharded directory");let s=await tJ(o,t);o.cid=s.cid,o.node=rr(await t.get(s.cid,n))}return o}var tJ=async(r,e)=>{if(r.node.Data==null)throw new br("Invalid parent passed to convertToShardedDirectory");let t=Te.unmarshal(r.node.Data),n=await tU(e,r.node.Links.map(i=>({name:i.Name??"",size:BigInt(i.Tsize??0),cid:i.Hash})),{mode:t.mode,mtime:t.mtime,cidVersion:r.cid.version});return cs(`converted directory to sharded directory ${n.cid}`),n},rJ=async(r,e,t,n)=>{let i=r.node.Links.filter(u=>{let f=u.Name===e.Name;if(f&&!n.allowOverwriting)throw new km;return!f});if(i.push(e),r.node.Data==null)throw new Gn("Parent node with no data passed to addToDirectory");let o=Te.unmarshal(r.node.Data),s;if(o.mtime!=null){let u=Date.now(),f=Math.floor(u/1e3);o.mtime={secs:BigInt(f),nsecs:(u-f*1e3)*1e3},s=o.marshal()}else s=r.node.Data;r.node=qt({Data:s,Links:i});let a=Qe(r.node),c=await Fe.digest(a),l=W.create(r.cid.version,ct,c);return await t.put(l,a),{node:r.node,cid:l}},nJ=async(r,e,t,n)=>{let{path:i,hash:o}=await $5(r.cid,e.Name,t,n),s=i[i.length-1];if(s==null)throw new Error("Invalid HAMT, could not generate path");let a=s.prefix,c=parseInt(a,16);cs("next prefix for %s is %s",e.Name,a);let l=`${a}${e.Name}`,u=s.node.Links.find(f=>(f.Name??"").startsWith(a));if(u!=null)if(cs("link %s was present in shard",l),u.Name===l){if(!n.allowOverwriting)throw new km;cs("overwriting %s in sub-shard",e.Name),s.node.Links=s.node.Links.filter(f=>f.Name!==l),s.node.Links.push({Name:l,Hash:e.Hash,Tsize:e.Tsize})}else{if(u.Name?.length===2)throw new Error("Existing link was sub-shard?!");{cs("prefix %s already exists, creating new sub-shard",a);let f=s.node.Links.findIndex(w=>w.Name?.startsWith(a)),h=s.node.Links.splice(f,1)[0],d=(h.Name??"").substring(2),g=O5(ih)(O(d));for(let w=0;w<i.length;w++)await g.take(Ou);for(;;){let w=await g.take(Ou),x=U5(w);h.Name=`${x}${d}`;let v=await o.take(Ou),b=U5(v);if(x===b){let T=new QE.default;T.set(v,!0),i.push({prefix:b,children:T,node:{Links:[]}});continue}let S=new QE.default;S.set(v,!0),S.set(w,!0),i.push({prefix:a,children:S,node:{Links:[h,{Name:`${b}${e.Name}`,Hash:e.Hash,Tsize:e.Tsize}]}});break}}}else cs("link %s was not present in sub-shard",l),e.Name=l,s.node.Links.push(e),s.children.set(c,!0),cs("adding %s to existing sub-shard",l);return F5(i,t,n)};async function Ec(r,e,t={}){let n=await pr(r,e,t);if(n.type!=="directory")throw new bc(`${r.toString()} was not a UnixFS directory`);return{cid:r,node:n.node}}async function sh(r,e,t,n){let i=await pr(r,t,n);if(i.type!=="directory"&&i.type!=="file"&&i.type!=="raw")throw new gi(`${r.toString()} was not a UnixFS node`);return{Name:e,Tsize:i.node instanceof Uint8Array?i.node.byteLength:iJ(i.node),Hash:r}}function iJ(r){let e=r.Links.reduce((t,n)=>t+(n.Tsize??0),0);return Qe(r).byteLength+e}var oJ=ze("helia:unixfs:components:utils:resolve");async function ls(r,e,t,n){if(e==null||e==="")return{cid:r};let i=`/ipfs/${r}${e==null?"":`/${e}`}`,o=await Ps(Dm(i,t,n));if(o.length===0)throw new Zd("Could not find path in directory");return oJ("resolved %s to %c",e,r),{cid:o[o.length-1].cid,path:e,segments:o}}async function ah(r,e,t,n){if(e.segments==null||e.segments.length===0)return r;let i=e.segments.pop();if(i==null)throw new Error("Insufficient segments");i.cid=r,e.segments.reverse();for(let o of e.segments){let[s,a]=await Promise.all([Ec(o.cid,t,n),sh(i.cid,i.name,t,n)]);r=(await oh(s,a,t,{...n,allowOverwriting:!0,cidVersion:r.version})).cid,o.cid=r,i=o}return r}var sJ=Wt.bind({ignoreUndefined:!0}),aJ={};async function*nU(r,e,t={}){let n=sJ(aJ,t),i=await ls(r,n.path,e,n),o=await pr(i.cid,e,n);if(o.type!=="file"&&o.type!=="raw")throw new y5;if(o.content==null)throw new Jd;yield*o.content(n)}var cJ=Wt.bind({ignoreUndefined:!0}),lJ=ze("helia:unixfs:chmod"),uJ={recursive:!1,shardSplitThresholdBytes:262144};async function iU(r,e,t,n={}){let i=cJ(uJ,n),o=await ls(r,i.path,t,n);if(lJ("chmod %c %d",o.cid,e),i.recursive){let h=await ot(async function*(){for await(let d of nh(o.cid,t,n)){let m,g=[];if(d.type==="raw")m=new Te({type:"file",data:d.node});else if(d.type==="file"||d.type==="directory")m=d.unixfs,g=d.node.Links;else throw new gi;m.mode=e;let w={Data:m.marshal(),Links:g};yield{path:d.path,content:w}}},d=>Nu(d,t,{...i,dagBuilder:async function*(m,g){for await(let w of m)yield async function(){let x=w.content,v=Qe(x),b=await Po(v,g,{...i,cidVersion:r.version});if(x.Data==null)throw new Gn(`${b} had no data`);let S=Te.unmarshal(x.Data);return{cid:b,size:BigInt(v.length),path:w.path,unixfs:S}}}}),async d=>To(d));if(h==null)throw new xc(`Could not chmod ${o.cid.toString()}`);return ah(h.cid,o,t,i)}let s=await t.get(o.cid,n),a,c=[];if(o.cid.code===vt)a=new Te({type:"file",data:s});else{let h=rr(s);if(h.Data==null)throw new Gn(`${o.cid.toString()} had no data`);c=h.Links,a=Te.unmarshal(h.Data)}a.mode=e;let l=Qe({Data:a.marshal(),Links:c}),u=await Fe.digest(l),f=W.create(o.cid.version,ct,u);return await t.put(f,l),ah(f,o,t,i)}var fJ=Wt.bind({ignoreUndefined:!0}),dJ=ze("helia:unixfs:cp"),hJ={force:!1,shardSplitThresholdBytes:262144};async function oU(r,e,t,n,i={}){let o=fJ(hJ,i);if(t.includes("/"))throw new br("Name must not have slashes");let[s,a]=await Promise.all([Ec(e,n,o),sh(r,t,n,o)]);return dJ('Adding %c as "%s" to %c',r,t,e),(await oh(s,a,n,{allowOverwriting:o.force,cidVersion:e.version,...o})).cid}var pJ=Wt.bind({ignoreUndefined:!0}),mJ={};async function*sU(r,e,t={}){let n=pJ(mJ,t),i=await ls(r,n.path,e,n),o=await pr(i.cid,e);if(o.type==="file"||o.type==="raw"){yield o;return}if(o.content==null)throw new Jd;if(o.type!=="directory")throw new bc;yield*o.content({offset:t.offset,length:t.length})}var gJ=Wt.bind({ignoreUndefined:!0}),aU=ze("helia:unixfs:mkdir"),yJ={cidVersion:1,force:!1,shardSplitThresholdBytes:262144};async function cU(r,e,t,n={}){let i=gJ(yJ,n);if(e.includes("/"))throw new br("Path must not have slashes");if((await pr(r,t,n)).type!=="directory")throw new bc(`${r.toString()} was not a UnixFS directory`);aU("creating %s",e);let a={Data:new Te({type:"directory",mode:i.mode,mtime:i.mtime}).marshal(),Links:[]},c=Qe(a),l=await Fe.digest(c),u=W.create(i.cidVersion,ct,l);await t.put(u,c);let[f,h]=await Promise.all([Ec(r,t,i),sh(u,e,t,i)]);return aU("adding empty dir called %s to %c",e,r),(await oh(f,h,t,{...i,allowOverwriting:i.force})).cid}var z5=ze("helia:unixfs:utils:remove-link");async function lU(r,e,t,n){if(r.node.Data==null)throw new Gn("Parent node had no data");if(Te.unmarshal(r.node.Data).type==="hamt-sharded-directory"){z5(`removing ${e} from sharded directory`);let o=await xJ(r,e,t,n);return await H5(o.node,t,n.shardSplitThresholdBytes,n)?o:(z5("converting shard to flat directory %c",r.cid),bJ(o,t,n))}return z5(`removing link ${e} regular directory`),wJ(r,e,t,n)}var wJ=async(r,e,t,n)=>{r.node.Links=r.node.Links.filter(s=>s.Name!==e);let i=Qe(r.node),o=await Po(i,t,{...n,cidVersion:r.cid.version});return z5(`Updated regular directory ${o}`),{node:r.node,cid:o}},xJ=async(r,e,t,n)=>{let{path:i}=await $5(r.cid,e,t,n),o=i[i.length-1];if(o==null)throw new Error("Invalid HAMT, could not generate path");let s=o.node.Links.filter(l=>(l.Name??"").substring(2)===e).map(l=>l.Name).pop();if(s==null)throw new Error("File not found");let a=s.substring(0,2),c=parseInt(a,16);if(o.node.Links=o.node.Links.filter(l=>l.Name!==s),o.children.unset(c),o.node.Links.length===1)for(;i.length!==1;){let l=i[i.length-1];if(l==null||l.node.Links.length>1)break;i.pop();let u=i[i.length-1];if(u==null)break;let f=l.node.Links[0];u.node.Links=u.node.Links.filter(h=>!(h.Name??"").startsWith(u.prefix)),u.node.Links.push({Hash:f.Hash,Name:`${u.prefix}${(f.Name??"").substring(2)}`,Tsize:f.Tsize})}return F5(i,t,n)},bJ=async(r,e,t)=>{if(r.node.Data==null)throw new br("Invalid parent passed to convertToFlatDirectory");let n={Links:[]},i=await pr(r.cid,e);if(i.type!=="directory")throw new Error("Unexpected node type");for await(let c of i.content()){let l=0;c.node instanceof Uint8Array?l=c.node.byteLength:l=Qe(c.node).length,n.Links.push({Hash:c.cid,Name:c.name,Tsize:l})}let o=Te.unmarshal(r.node.Data);n.Data=new Te({type:"directory",mode:o.mode,mtime:o.mtime}).marshal();let s=Qe(qt(n));return{cid:await Po(s,e,{codec:nr,cidVersion:r.cid.version,signal:t.signal}),node:n}};var vJ=Wt.bind({ignoreUndefined:!0}),EJ=ze("helia:unixfs:rm"),SJ={shardSplitThresholdBytes:262144};async function uU(r,e,t,n={}){let i=vJ(SJ,n);if(e.includes("/"))throw new br("Name must not have slashes");let o=await Ec(r,t,i);return EJ("Removing %s from %c",e,r),(await lU(o,e,t,{...i,cidVersion:r.version})).cid}var fU=1877,K5=1604,AJ=Wt.bind({ignoreUndefined:!0}),_J=ze("helia:unixfs:stat"),IJ={};async function dU(r,e,t={}){let n=AJ(IJ,t),i=await ls(r,t.path,e,n);_J("stat %c",i.cid);let o=await pr(i.cid,e,n);if(o.type==="raw")return t.extended===!0?PJ(o):kJ(o);if(o.type==="file"||o.type==="directory")return t.extended===!0?CJ(o,e,t.filter??new mf({filterSize:1024}),t):TJ(o);throw new gi}function TJ(r){return{type:r.type,cid:r.cid,unixfs:r.unixfs,mode:r.unixfs.mode??(r.unixfs.isDirectory()?fU:K5),mtime:r.unixfs.mtime,size:r.unixfs.fileSize()}}async function CJ(r,e,t,n){let i=await hU(r.cid,e,!1,t,n);return{type:r.type,cid:r.cid,unixfs:r.unixfs,size:r.unixfs.isDirectory()?i.dirSize:r.unixfs.fileSize(),mode:r.unixfs.mode??(r.unixfs.isDirectory()?fU:K5),mtime:r.unixfs.mtime,localSize:i.localSize,dagSize:i.dagSize,deduplicatedDagSize:i.deduplicatedDagSize,blocks:i.blocks,uniqueBlocks:i.uniqueBlocks}}function kJ(r){return{type:r.type,cid:r.cid,unixfs:void 0,mode:K5,mtime:void 0,size:BigInt(r.node.byteLength)}}function PJ(r){return{type:r.type,cid:r.cid,unixfs:void 0,mode:K5,mtime:void 0,size:BigInt(r.node.byteLength),localSize:BigInt(r.node.byteLength),dagSize:BigInt(r.node.byteLength),deduplicatedDagSize:BigInt(r.node.byteLength),blocks:1n,uniqueBlocks:1n}}async function hU(r,e,t,n,i){let o={dirSize:0n,localSize:0n,dagSize:0n,deduplicatedDagSize:0n,blocks:0n,uniqueBlocks:0n};try{let s=n.has(r.bytes);n.add(r.bytes);let a=await e.get(r,i);if(o.blocks++,o.dagSize+=BigInt(a.byteLength),s||(o.uniqueBlocks++,o.deduplicatedDagSize+=BigInt(a.byteLength)),r.code===vt)o.localSize+=BigInt(a.byteLength),t&&(o.dirSize+=BigInt(a.byteLength));else if(r.code===ct){let c=rr(a),l;if(c.Data!=null&&(l=Te.unmarshal(c.Data)),c.Links.length>0){for(let u of c.Links){let f=await hU(u.Hash,e,RJ(u,l),n,i);o.localSize+=f.localSize,o.dagSize+=f.dagSize,o.deduplicatedDagSize+=f.deduplicatedDagSize,o.blocks+=f.blocks,o.uniqueBlocks+=f.uniqueBlocks,o.dirSize+=f.dirSize}t&&l!=null&&(o.dirSize+=l.fileSize())}else{if(l==null)throw new Gn(`PBNode ${r.toString()} had no data`);l.data!=null&&(o.localSize+=BigInt(l.data.byteLength??0)),t&&(o.dirSize+=l.fileSize())}}else throw new xc(`${r.toString()} was neither DAG_PB nor RAW`)}catch(s){if(s.name!=="NotFoundError"||i.offline!==!0)throw s}return o}function RJ(r,e){if(e==null)return!1;let t=r.Name;return t==null?!1:e.type==="directory"?!0:e.type==="hamt-sharded-directory"&&t.length>2}var DJ=Wt.bind({ignoreUndefined:!0}),NJ=ze("helia:unixfs:touch"),OJ={recursive:!1,shardSplitThresholdBytes:262144};async function pU(r,e,t={}){let n=DJ(OJ,t),i=await ls(r,n.path,e,n),o=n.mtime??{secs:BigInt(Math.round(Date.now()/1e3)),nsecs:0};if(NJ("touch %c %o",i.cid,o),n.recursive){let h=await ot(async function*(){for await(let d of nh(i.cid,e)){let m,g;if(d.type==="raw")m=new Te({data:d.node}),g=[];else if(d.type==="file"||d.type==="directory")m=d.unixfs,g=d.node.Links;else throw new gi;m.mtime=o;let w={Data:m.marshal(),Links:g};yield{path:d.path,content:w}}},d=>Nu(d,e,{...n,dagBuilder:async function*(m,g){for await(let w of m)yield async function(){let x=w.content,v=Qe(x),b=await Po(v,g,{...n,cidVersion:r.version});if(x.Data==null)throw new Gn(`${b} had no data`);let S=Te.unmarshal(x.Data);return{cid:b,size:BigInt(v.length),path:w.path,unixfs:S}}}}),async d=>To(d));if(h==null)throw new xc(`Could not chmod ${i.cid.toString()}`);return ah(h.cid,i,e,n)}let s=await e.get(i.cid,t),a,c=[];if(i.cid.code===vt)a=new Te({data:s});else{let h=rr(s);if(c=h.Links,h.Data==null)throw new Gn(`${i.cid.toString()} had no data`);a=Te.unmarshal(h.Data)}a.mtime=o;let l=Qe({Data:a.marshal(),Links:c}),u=await Fe.digest(l),f=W.create(i.cid.version,ct,u);return await e.put(f,l),ah(f,i,e,n)}var q5=class{components;constructor(e){this.components=e}async*addAll(e,t={}){yield*D5(e,this.components.blockstore,t)}async addBytes(e,t={}){return GM(e,this.components.blockstore,t)}async addByteStream(e,t={}){return XM(e,this.components.blockstore,t)}async addFile(e,t={}){return YM(e,this.components.blockstore,t)}async addDirectory(e={},t={}){return QM(e,this.components.blockstore,t)}async*cat(e,t={}){yield*nU(e,this.components.blockstore,t)}async chmod(e,t,n={}){return iU(e,t,this.components.blockstore,n)}async cp(e,t,n,i={}){return oU(e,t,n,this.components.blockstore,i)}async*ls(e,t={}){yield*sU(e,this.components.blockstore,t)}async mkdir(e,t,n={}){return cU(e,t,this.components.blockstore,n)}async rm(e,t,n={}){return uU(e,t,this.components.blockstore,n)}async stat(e,t={}){return dU(e,this.components.blockstore,t)}async touch(e,t={}){return pU(e,this.components.blockstore,t)}};function mU(r){return new q5(r)}async function gU(r,e,t,n){let i=t.forComponent("helia:verified-fetch:get-stream-from-async-iterable"),o=r[Symbol.asyncIterator](),{value:s,done:a}=await o.next();if(a===!0)throw i.error("no content found for path",e),new o5;return{stream:new ReadableStream({async start(l){n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(s)},async pull(l){let{value:u,done:f}=await o.next();if(n?.signal?.aborted===!0){l.error(new Tr(n.signal.reason??"signal aborted by user")),l.close();return}if(f===!0){u!=null&&(n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(u)),l.close();return}n?.onProgress?.(new G("verified-fetch:request:progress:chunk")),l.enqueue(u)}}),firstChunk:s}}var wU=it(yU(),1);function Xn(r){return new DataView(r.buffer,r.byteOffset)}var xU={len:1,get(r,e){return Xn(r).getUint8(e)},put(r,e,t){return Xn(r).setUint8(e,t),e+1}},Ut={len:2,get(r,e){return Xn(r).getUint16(e,!0)},put(r,e,t){return Xn(r).setUint16(e,t,!0),e+2}},ch={len:2,get(r,e){return Xn(r).getUint16(e)},put(r,e,t){return Xn(r).setUint16(e,t),e+2}};var sr={len:4,get(r,e){return Xn(r).getUint32(e,!0)},put(r,e,t){return Xn(r).setUint32(e,t,!0),e+4}},bU={len:4,get(r,e){return Xn(r).getUint32(e)},put(r,e,t){return Xn(r).setUint32(e,t),e+4}};var vU={len:4,get(r,e){return Xn(r).getInt32(e)},put(r,e,t){return Xn(r).setInt32(e,t),e+4}};var EU={len:8,get(r,e){return Xn(r).getBigUint64(e,!0)},put(r,e,t){return Xn(r).setBigUint64(e,t,!0),e+8}};var Yn=class{constructor(e,t){this.len=e,this.encoding=t,this.textDecoder=new TextDecoder(t)}get(e,t){return this.textDecoder.decode(e.subarray(t,t+this.len))}};var BJ="End-Of-Stream",Vt=class extends Error{constructor(){super(BJ),this.name="EndOfStreamError"}},Lu=class extends Error{constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var Bu=class{constructor(){this.endOfStream=!1,this.interrupted=!1,this.peekQueue=[]}async peek(e,t=!1){let n=await this.read(e,t);return this.peekQueue.push(e.subarray(0,n)),n}async read(e,t=!1){if(e.length===0)return 0;let n=this.readFromPeekBuffer(e);if(this.endOfStream||(n+=await this.readRemainderFromStream(e.subarray(n),t)),n===0)throw new Vt;return n}readFromPeekBuffer(e){let t=e.length,n=0;for(;this.peekQueue.length>0&&t>0;){let i=this.peekQueue.pop();if(!i)throw new Error("peekData should be defined");let o=Math.min(i.length,t);e.set(i.subarray(0,o),n),n+=o,t-=o,o<i.length&&this.peekQueue.push(i.subarray(o))}return n}async readRemainderFromStream(e,t){let n=0;for(;n<e.length&&!this.endOfStream;){if(this.interrupted)throw new Lu;let i=await this.readFromStream(e.subarray(n),t);if(i===0)break;n+=i}if(!t&&n<e.length)throw new Vt;return n}};var j5=class extends Bu{constructor(e){super(),this.reader=e}async abort(){return this.close()}async close(){this.reader.releaseLock()}};var $m=class extends j5{async readFromStream(e,t){if(e.length===0)return 0;let n=await this.reader.read(new Uint8Array(e.length),{min:t?void 0:e.length});return n.done&&(this.endOfStream=n.done),n.value?(e.set(n.value),n.value.length):0}};var lh=class extends Bu{constructor(e){super(),this.reader=e,this.buffer=null}writeChunk(e,t){let n=Math.min(t.length,e.length);return e.set(t.subarray(0,n)),n<t.length?this.buffer=t.subarray(n):this.buffer=null,n}async readFromStream(e,t){if(e.length===0)return 0;let n=0;for(this.buffer&&(n+=this.writeChunk(e,this.buffer));n<e.length&&!this.endOfStream;){let i=await this.reader.read();if(i.done){this.endOfStream=!0;break}i.value&&(n+=this.writeChunk(e.subarray(n),i.value))}if(n===0&&this.endOfStream)throw new Vt;return n}abort(){return this.interrupted=!0,this.reader.cancel()}async close(){await this.abort(),this.reader.releaseLock()}};function JE(r){try{let e=r.getReader({mode:"byob"});return e instanceof ReadableStreamDefaultReader?new lh(e):new $m(e)}catch(e){if(e instanceof TypeError)return new lh(r.getReader());throw e}}var Mu=class{constructor(e){this.numBuffer=new Uint8Array(8),this.position=0,this.onClose=e?.onClose,e?.abortSignal&&e.abortSignal.addEventListener("abort",()=>{this.abort()})}async readToken(e,t=this.position){let n=new Uint8Array(e.len);if(await this.readBuffer(n,{position:t})<e.len)throw new Vt;return e.get(n,0)}async peekToken(e,t=this.position){let n=new Uint8Array(e.len);if(await this.peekBuffer(n,{position:t})<e.len)throw new Vt;return e.get(n,0)}async readNumber(e){if(await this.readBuffer(this.numBuffer,{length:e.len})<e.len)throw new Vt;return e.get(this.numBuffer,0)}async peekNumber(e){if(await this.peekBuffer(this.numBuffer,{length:e.len})<e.len)throw new Vt;return e.get(this.numBuffer,0)}async ignore(e){if(this.fileInfo.size!==void 0){let t=this.fileInfo.size-this.position;if(e>t)return this.position+=t,t}return this.position+=e,e}async close(){await this.abort(),await this.onClose?.()}normalizeOptions(e,t){if(!this.supportsRandomAccess()&&t&&t.position!==void 0&&t.position<this.position)throw new Error("`options.position` must be equal or greater than `tokenizer.position`");return{mayBeLess:!1,offset:0,length:e.length,position:this.position,...t}}abort(){return Promise.resolve()}};var UJ=256e3,W5=class extends Mu{constructor(e,t){super(t),this.streamReader=e,this.fileInfo=t?.fileInfo??{}}async readBuffer(e,t){let n=this.normalizeOptions(e,t),i=n.position-this.position;if(i>0)return await this.ignore(i),this.readBuffer(e,t);if(i<0)throw new Error("`options.position` must be equal or greater than `tokenizer.position`");if(n.length===0)return 0;let o=await this.streamReader.read(e.subarray(0,n.length),n.mayBeLess);if(this.position+=o,(!t||!t.mayBeLess)&&o<n.length)throw new Vt;return o}async peekBuffer(e,t){let n=this.normalizeOptions(e,t),i=0;if(n.position){let o=n.position-this.position;if(o>0){let s=new Uint8Array(n.length+o);return i=await this.peekBuffer(s,{mayBeLess:n.mayBeLess}),e.set(s.subarray(o)),i-o}if(o<0)throw new Error("Cannot peek from a negative offset in a stream")}if(n.length>0){try{i=await this.streamReader.peek(e.subarray(0,n.length),n.mayBeLess)}catch(o){if(t?.mayBeLess&&o instanceof Vt)return 0;throw o}if(!n.mayBeLess&&i<n.length)throw new Vt}return i}async ignore(e){let t=Math.min(UJ,e),n=new Uint8Array(t),i=0;for(;i<e;){let o=e-i,s=await this.readBuffer(n,{length:Math.min(t,o)});if(s<0)return s;i+=s}return i}abort(){return this.streamReader.abort()}async close(){return this.streamReader.close()}supportsRandomAccess(){return!1}};var G5=class extends Mu{constructor(e,t){super(t),this.uint8Array=e,this.fileInfo={...t?.fileInfo??{},size:e.length}}async readBuffer(e,t){t?.position&&(this.position=t.position);let n=await this.peekBuffer(e,t);return this.position+=n,n}async peekBuffer(e,t){let n=this.normalizeOptions(e,t),i=Math.min(this.uint8Array.length-n.position,n.length);if(!n.mayBeLess&&i<n.length)throw new Vt;return e.set(this.uint8Array.subarray(n.position,n.position+i)),i}close(){return super.close()}supportsRandomAccess(){return!0}setPosition(e){this.position=e}};function SU(r,e){let t=JE(r),n=e??{},i=n.onClose;return n.onClose=async()=>{if(await t.close(),i)return i()},new W5(t,n)}function AU(r,e){return new G5(r,e)}var xi=Uint8Array,uh=Uint16Array,$J=Int32Array,_U=new xi([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),IU=new xi([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),HJ=new xi([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),TU=function(r,e){for(var t=new uh(31),n=0;n<31;++n)t[n]=e+=1<<r[n-1];for(var i=new $J(t[30]),n=1;n<30;++n)for(var o=t[n];o<t[n+1];++o)i[o]=o-t[n]<<5|n;return{b:t,r:i}},CU=TU(_U,2),kU=CU.b,VJ=CU.r;kU[28]=258,VJ[258]=28;var PU=TU(IU,0),zJ=PU.b,jnt=PU.r,rS=new uh(32768);for(ut=0;ut<32768;++ut)ra=(ut&43690)>>1|(ut&21845)<<1,ra=(ra&52428)>>2|(ra&13107)<<2,ra=(ra&61680)>>4|(ra&3855)<<4,rS[ut]=((ra&65280)>>8|(ra&255)<<8)>>1;var ra,ut,Hm=function(r,e,t){for(var n=r.length,i=0,o=new uh(e);i<n;++i)r[i]&&++o[r[i]-1];var s=new uh(e);for(i=1;i<e;++i)s[i]=s[i-1]+o[i-1]<<1;var a;if(t){a=new uh(1<<e);var c=15-e;for(i=0;i<n;++i)if(r[i])for(var l=i<<4|r[i],u=e-r[i],f=s[r[i]-1]++<<u,h=f|(1<<u)-1;f<=h;++f)a[rS[f]>>c]=l}else for(a=new uh(n),i=0;i<n;++i)r[i]&&(a[i]=rS[s[r[i]-1]++]>>15-r[i]);return a},Vm=new xi(288);for(ut=0;ut<144;++ut)Vm[ut]=8;var ut;for(ut=144;ut<256;++ut)Vm[ut]=9;var ut;for(ut=256;ut<280;++ut)Vm[ut]=7;var ut;for(ut=280;ut<288;++ut)Vm[ut]=8;var ut,RU=new xi(32);for(ut=0;ut<32;++ut)RU[ut]=5;var ut;var KJ=Hm(Vm,9,1);var qJ=Hm(RU,5,1),eS=function(r){for(var e=r[0],t=1;t<r.length;++t)r[t]>e&&(e=r[t]);return e},Ro=function(r,e,t){var n=e/8|0;return(r[n]|r[n+1]<<8)>>(e&7)&t},tS=function(r,e){var t=e/8|0;return(r[t]|r[t+1]<<8|r[t+2]<<16)>>(e&7)},jJ=function(r){return(r+7)/8|0},WJ=function(r,e,t){return(e==null||e<0)&&(e=0),(t==null||t>r.length)&&(t=r.length),new xi(r.subarray(e,t))};var GJ=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],wi=function(r,e,t){var n=new Error(e||GJ[r]);if(n.code=r,Error.captureStackTrace&&Error.captureStackTrace(n,wi),!t)throw n;return n},nS=function(r,e,t,n){var i=r.length,o=n?n.length:0;if(!i||e.f&&!e.l)return t||new xi(0);var s=!t,a=s||e.i!=2,c=e.i;s&&(t=new xi(i*3));var l=function(Rt){var Et=t.length;if(Rt>Et){var mr=new xi(Math.max(Et*2,Rt));mr.set(t),t=mr}},u=e.f||0,f=e.p||0,h=e.b||0,d=e.l,m=e.d,g=e.m,w=e.n,x=i*8;do{if(!d){u=Ro(r,f,1);var v=Ro(r,f+1,3);if(f+=3,v)if(v==1)d=KJ,m=qJ,g=9,w=5;else if(v==2){var D=Ro(r,f,31)+257,A=Ro(r,f+10,15)+4,I=D+Ro(r,f+5,31)+1;f+=14;for(var k=new xi(I),X=new xi(19),K=0;K<A;++K)X[HJ[K]]=Ro(r,f+K*3,7);f+=A*3;for(var V=eS(X),Y=(1<<V)-1,$=Hm(X,V,1),K=0;K<I;){var F=$[Ro(r,f,Y)];f+=F&15;var b=F>>4;if(b<16)k[K++]=b;else{var z=0,M=0;for(b==16?(M=3+Ro(r,f,3),f+=2,z=k[K-1]):b==17?(M=3+Ro(r,f,7),f+=3):b==18&&(M=11+Ro(r,f,127),f+=7);M--;)k[K++]=z}}var R=k.subarray(0,D),N=k.subarray(D);g=eS(R),w=eS(N),d=Hm(R,g,1),m=Hm(N,w,1)}else wi(1);else{var b=jJ(f)+4,S=r[b-4]|r[b-3]<<8,T=b+S;if(T>i){c&&wi(0);break}a&&l(h+S),t.set(r.subarray(b,T),h),e.b=h+=S,e.p=f=T*8,e.f=u;continue}if(f>x){c&&wi(0);break}}a&&l(h+131072);for(var Z=(1<<g)-1,ne=(1<<w)-1,q=f;;q=f){var z=d[tS(r,f)&Z],ge=z>>4;if(f+=z&15,f>x){c&&wi(0);break}if(z||wi(2),ge<256)t[h++]=ge;else if(ge==256){q=f,d=null;break}else{var ke=ge-254;if(ge>264){var K=ge-257,le=_U[K];ke=Ro(r,f,(1<<le)-1)+kU[K],f+=le}var De=m[tS(r,f)&ne],et=De>>4;De||wi(3),f+=De&15;var N=zJ[et];if(et>3){var le=IU[et];N+=tS(r,f)&(1<<le)-1,f+=le}if(f>x){c&&wi(0);break}a&&l(h+131072);var Ye=h+ke;if(h<N){var pt=o-N,bt=Math.min(N,Ye);for(pt+h<0&&wi(3);h<bt;++h)t[h]=n[pt+h]}for(;h<Ye;++h)t[h]=t[h-N]}}e.l=d,e.p=q,e.b=h,e.f=u,d&&(u=1,e.m=g,e.d=m,e.n=w)}while(!u);return h!=t.length&&s?WJ(t,0,h):t.subarray(0,h)};var XJ=new xi(0);var YJ=function(r){(r[0]!=31||r[1]!=139||r[2]!=8)&&wi(6,"invalid gzip data");var e=r[3],t=10;e&4&&(t+=(r[10]|r[11]<<8)+2);for(var n=(e>>3&1)+(e>>4&1);n>0;n-=!r[t++]);return t+(e&2)},QJ=function(r){var e=r.length;return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0};var ZJ=function(r,e){return((r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31)&&wi(6,"invalid zlib data"),(r[1]>>5&1)==+!e&&wi(6,"invalid zlib data: "+(r[1]&32?"need":"unexpected")+" dictionary"),(r[1]>>3&4)+2};function JJ(r,e){return nS(r,{i:2},e&&e.out,e&&e.dictionary)}function eee(r,e){var t=YJ(r);return t+8>r.length&&wi(6,"invalid gzip data"),nS(r.subarray(t,-8),{i:2},e&&e.out||new xi(QJ(r)),e&&e.dictionary)}function tee(r,e){return nS(r.subarray(ZJ(r,e&&e.dictionary),-4),{i:2},e&&e.out,e&&e.dictionary)}function DU(r,e){return r[0]==31&&r[1]==139&&r[2]==8?eee(r,e):(r[0]&15)!=8||r[0]>>4>7||(r[0]<<8|r[1])%31?JJ(r,e):tee(r,e)}var ree=typeof TextDecoder<"u"&&new TextDecoder,nee=0;try{ree.decode(XJ,{stream:!0}),nee=1}catch{}var HU=it(MU(),1);var Fu={LocalFileHeader:67324752,DataDescriptor:134695760,CentralFileHeader:33639248,EndOfCentralDirectory:101010256},iS={get(r){let e=Ut.get(r,6);return{signature:sr.get(r,0),compressedSize:sr.get(r,8),uncompressedSize:sr.get(r,12)}},len:16},UU={get(r){let e=Ut.get(r,6);return{signature:sr.get(r,0),minVersion:Ut.get(r,4),dataDescriptor:!!(e&8),compressedMethod:Ut.get(r,8),compressedSize:sr.get(r,18),uncompressedSize:sr.get(r,22),filenameLength:Ut.get(r,26),extraFieldLength:Ut.get(r,28),filename:null}},len:30},FU={get(r){return{signature:sr.get(r,0),nrOfThisDisk:Ut.get(r,4),nrOfThisDiskWithTheStart:Ut.get(r,6),nrOfEntriesOnThisDisk:Ut.get(r,8),nrOfEntriesOfSize:Ut.get(r,10),sizeOfCd:sr.get(r,12),offsetOfStartOfCd:sr.get(r,16),zipFileCommentLength:Ut.get(r,20)}},len:22},$U={get(r){let e=Ut.get(r,8);return{signature:sr.get(r,0),minVersion:Ut.get(r,6),dataDescriptor:!!(e&8),compressedMethod:Ut.get(r,10),compressedSize:sr.get(r,20),uncompressedSize:sr.get(r,24),filenameLength:Ut.get(r,28),extraFieldLength:Ut.get(r,30),fileCommentLength:Ut.get(r,32),relativeOffsetOfLocalHeader:sr.get(r,42),filename:null}},len:46};function VU(r){let e=new Uint8Array(sr.len);return sr.put(e,0,r),e}var us=(0,HU.default)("tokenizer:inflate"),oS=256*1024,gee=VU(Fu.DataDescriptor),Q5=VU(Fu.EndOfCentralDirectory),Z5=class{constructor(e){this.tokenizer=e,this.syncBuffer=new Uint8Array(oS)}async isZip(){return await this.peekSignature()===Fu.LocalFileHeader}peekSignature(){return this.tokenizer.peekToken(sr)}async findEndOfCentralDirectoryLocator(){let e=this.tokenizer,t=Math.min(16*1024,e.fileInfo.size),n=this.syncBuffer.subarray(0,t);await this.tokenizer.readBuffer(n,{position:e.fileInfo.size-t});for(let i=n.length-4;i>=0;i--)if(n[i]===Q5[0]&&n[i+1]===Q5[1]&&n[i+2]===Q5[2]&&n[i+3]===Q5[3])return e.fileInfo.size-t+i;return-1}async readCentralDirectory(){if(!this.tokenizer.supportsRandomAccess()){us("Cannot reading central-directory without random-read support");return}us("Reading central-directory...");let e=this.tokenizer.position,t=await this.findEndOfCentralDirectoryLocator();if(t>0){us("Central-directory 32-bit signature found");let n=await this.tokenizer.readToken(FU,t),i=[];this.tokenizer.setPosition(n.offsetOfStartOfCd);for(let o=0;o<n.nrOfEntriesOfSize;++o){let s=await this.tokenizer.readToken($U);if(s.signature!==Fu.CentralFileHeader)throw new Error("Expected Central-File-Header signature");s.filename=await this.tokenizer.readToken(new Yn(s.filenameLength,"utf-8")),await this.tokenizer.ignore(s.extraFieldLength),await this.tokenizer.ignore(s.fileCommentLength),i.push(s),us(`Add central-directory file-entry: n=${o+1}/${i.length}: filename=${i[o].filename}`)}return this.tokenizer.setPosition(e),i}this.tokenizer.setPosition(e)}async unzip(e){let t=await this.readCentralDirectory();if(t)return this.iterateOverCentralDirectory(t,e);let n=!1;do{let i=await this.readLocalFileHeader();if(!i)break;let o=e(i);n=!!o.stop;let s;if(await this.tokenizer.ignore(i.extraFieldLength),i.dataDescriptor&&i.compressedSize===0){let a=[],c=oS;us("Compressed-file-size unknown, scanning for next data-descriptor-signature....");let l=-1;for(;l<0&&c===oS;){c=await this.tokenizer.peekBuffer(this.syncBuffer,{mayBeLess:!0}),l=yee(this.syncBuffer.subarray(0,c),gee);let u=l>=0?l:c;if(o.handler){let f=new Uint8Array(u);await this.tokenizer.readBuffer(f),a.push(f)}else await this.tokenizer.ignore(u)}us(`Found data-descriptor-signature at pos=${this.tokenizer.position}`),o.handler&&await this.inflate(i,wee(a),o.handler)}else o.handler?(us(`Reading compressed-file-data: ${i.compressedSize} bytes`),s=new Uint8Array(i.compressedSize),await this.tokenizer.readBuffer(s),await this.inflate(i,s,o.handler)):(us(`Ignoring compressed-file-data: ${i.compressedSize} bytes`),await this.tokenizer.ignore(i.compressedSize));if(us(`Reading data-descriptor at pos=${this.tokenizer.position}`),i.dataDescriptor&&(await this.tokenizer.readToken(iS)).signature!==134695760)throw new Error(`Expected data-descriptor-signature at position ${this.tokenizer.position-iS.len}`)}while(!n)}async iterateOverCentralDirectory(e,t){for(let n of e){let i=t(n);if(i.handler){this.tokenizer.setPosition(n.relativeOffsetOfLocalHeader);let o=await this.readLocalFileHeader();if(o){await this.tokenizer.ignore(o.extraFieldLength);let s=new Uint8Array(n.compressedSize);await this.tokenizer.readBuffer(s),await this.inflate(o,s,i.handler)}}if(i.stop)break}}inflate(e,t,n){if(e.compressedMethod===0)return n(t);us(`Decompress filename=${e.filename}, compressed-size=${t.length}`);let i=DU(t);return n(i)}async readLocalFileHeader(){let e=await this.tokenizer.peekToken(sr);if(e===Fu.LocalFileHeader){let t=await this.tokenizer.readToken(UU);return t.filename=await this.tokenizer.readToken(new Yn(t.filenameLength,"utf-8")),t}if(e===Fu.CentralFileHeader)return!1;throw e===3759263696?new Error("Encrypted ZIP"):new Error("Unexpected signature")}};function yee(r,e){let t=r.length,n=e.length;if(n>t)return-1;for(let i=0;i<=t-n;i++){let o=!0;for(let s=0;s<n;s++)if(r[i+s]!==e[s]){o=!1;break}if(o)return i}return-1}function wee(r){let e=r.reduce((i,o)=>i+o.length,0),t=new Uint8Array(e),n=0;for(let i of r)t.set(i,n),n+=i.length;return t}var rit={utf8:new globalThis.TextDecoder("utf8")};var nit=new globalThis.TextEncoder;var iit=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function sS(r){let{byteLength:e}=r;if(e===6)return r.getUint16(0)*2**32+r.getUint32(2);if(e===5)return r.getUint8(0)*2**32+r.getUint32(1);if(e===4)return r.getUint32(0);if(e===3)return r.getUint8(0)*2**16+r.getUint16(1);if(e===2)return r.getUint16(0);if(e===1)return r.getUint8(0)}function xee(r,e){let t=r.length,n=e.length;if(n===0||n>t)return-1;let i=t-n;for(let o=0;o<=i;o++){let s=!0;for(let a=0;a<n;a++)if(r[o+a]!==e[a]){s=!1;break}if(s)return o}return-1}function zU(r,e){return xee(r,e)!==-1}function KU(r){return[...r].map(e=>e.charCodeAt(0))}function qU(r,e=0){let t=Number.parseInt(new Yn(6).get(r,148).replace(/\0.*$/,"").trim(),8);if(Number.isNaN(t))return!1;let n=8*32;for(let i=e;i<e+148;i++)n+=r[i];for(let i=e+156;i<e+512;i++)n+=r[i];return t===n}var jU={get:(r,e)=>r[e+3]&127|r[e+2]<<7|r[e+1]<<14|r[e]<<21,len:4};var WU=["jpg","png","apng","gif","webp","flif","xcf","cr2","cr3","orf","arw","dng","nef","rw2","raf","tif","bmp","icns","jxr","psd","indd","zip","tar","rar","gz","bz2","7z","dmg","mp4","mid","mkv","webm","mov","avi","mpg","mp2","mp3","m4a","oga","ogg","ogv","opus","flac","wav","spx","amr","pdf","epub","elf","macho","exe","swf","rtf","wasm","woff","woff2","eot","ttf","otf","ttc","ico","flv","ps","xz","sqlite","nes","crx","xpi","cab","deb","ar","rpm","Z","lz","cfb","mxf","mts","blend","bpg","docx","pptx","xlsx","3gp","3g2","j2c","jp2","jpm","jpx","mj2","aif","qcp","odt","ods","odp","xml","mobi","heic","cur","ktx","ape","wv","dcm","ics","glb","pcap","dsf","lnk","alias","voc","ac3","m4v","m4p","m4b","f4v","f4p","f4b","f4a","mie","asf","ogm","ogx","mpc","arrow","shp","aac","mp1","it","s3m","xm","ai","skp","avif","eps","lzh","pgp","asar","stl","chm","3mf","zst","jxl","vcf","jls","pst","dwg","parquet","class","arj","cpio","ace","avro","icc","fbx","vsdx","vtt","apk","drc","lz4","potx","xltx","dotx","xltm","ott","ots","otp","odg","otg","xlsm","docm","dotm","potm","pptm","jar","rm","ppsm","ppsx"],GU=["image/jpeg","image/png","image/gif","image/webp","image/flif","image/x-xcf","image/x-canon-cr2","image/x-canon-cr3","image/tiff","image/bmp","image/vnd.ms-photo","image/vnd.adobe.photoshop","application/x-indesign","application/epub+zip","application/x-xpinstall","application/vnd.ms-powerpoint.slideshow.macroenabled.12","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.slideshow","application/zip","application/x-tar","application/x-rar-compressed","application/gzip","application/x-bzip2","application/x-7z-compressed","application/x-apple-diskimage","application/x-apache-arrow","video/mp4","audio/midi","video/x-matroska","video/webm","video/quicktime","video/vnd.avi","audio/wav","audio/qcelp","audio/x-ms-asf","video/x-ms-asf","application/vnd.ms-asf","video/mpeg","video/3gpp","audio/mpeg","audio/mp4","video/ogg","audio/ogg","audio/ogg; codecs=opus","application/ogg","audio/x-flac","audio/ape","audio/wavpack","audio/amr","application/pdf","application/x-elf","application/x-mach-binary","application/x-msdownload","application/x-shockwave-flash","application/rtf","application/wasm","font/woff","font/woff2","application/vnd.ms-fontobject","font/ttf","font/otf","font/collection","image/x-icon","video/x-flv","application/postscript","application/eps","application/x-xz","application/x-sqlite3","application/x-nintendo-nes-rom","application/x-google-chrome-extension","application/vnd.ms-cab-compressed","application/x-deb","application/x-unix-archive","application/x-rpm","application/x-compress","application/x-lzip","application/x-cfb","application/x-mie","application/mxf","video/mp2t","application/x-blender","image/bpg","image/j2c","image/jp2","image/jpx","image/jpm","image/mj2","audio/aiff","application/xml","application/x-mobipocket-ebook","image/heif","image/heif-sequence","image/heic","image/heic-sequence","image/icns","image/ktx","application/dicom","audio/x-musepack","text/calendar","text/vcard","text/vtt","model/gltf-binary","application/vnd.tcpdump.pcap","audio/x-dsf","application/x.ms.shortcut","application/x.apple.alias","audio/x-voc","audio/vnd.dolby.dd-raw","audio/x-m4a","image/apng","image/x-olympus-orf","image/x-sony-arw","image/x-adobe-dng","image/x-nikon-nef","image/x-panasonic-rw2","image/x-fujifilm-raf","video/x-m4v","video/3gpp2","application/x-esri-shape","audio/aac","audio/x-it","audio/x-s3m","audio/x-xm","video/MP1S","video/MP2P","application/vnd.sketchup.skp","image/avif","application/x-lzh-compressed","application/pgp-encrypted","application/x-asar","model/stl","application/vnd.ms-htmlhelp","model/3mf","image/jxl","application/zstd","image/jls","application/vnd.ms-outlook","image/vnd.dwg","application/x-parquet","application/java-vm","application/x-arj","application/x-cpio","application/x-ace-compressed","application/avro","application/vnd.iccprofile","application/x.autodesk.fbx","application/vnd.visio","application/vnd.android.package-archive","application/vnd.google.draco","application/x-lz4","application/vnd.openxmlformats-officedocument.presentationml.template","application/vnd.openxmlformats-officedocument.spreadsheetml.template","application/vnd.openxmlformats-officedocument.wordprocessingml.template","application/vnd.ms-excel.template.macroenabled.12","application/vnd.oasis.opendocument.text-template","application/vnd.oasis.opendocument.spreadsheet-template","application/vnd.oasis.opendocument.presentation-template","application/vnd.oasis.opendocument.graphics","application/vnd.oasis.opendocument.graphics-template","application/vnd.ms-excel.sheet.macroenabled.12","application/vnd.ms-word.document.macroenabled.12","application/vnd.ms-word.template.macroenabled.12","application/vnd.ms-powerpoint.template.macroenabled.12","application/vnd.ms-powerpoint.presentation.macroenabled.12","application/java-archive","application/vnd.rn-realmedia"];var aS=4100;async function XU(r){return new lS().fromBuffer(r)}function cS(r){switch(r.toLowerCase()){case"application/epub+zip":return{ext:"epub",mime:"application/epub+zip"};case"application/vnd.oasis.opendocument.text":return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};case"application/vnd.oasis.opendocument.text-template":return{ext:"ott",mime:"application/vnd.oasis.opendocument.text-template"};case"application/vnd.oasis.opendocument.spreadsheet":return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};case"application/vnd.oasis.opendocument.spreadsheet-template":return{ext:"ots",mime:"application/vnd.oasis.opendocument.spreadsheet-template"};case"application/vnd.oasis.opendocument.presentation":return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};case"application/vnd.oasis.opendocument.presentation-template":return{ext:"otp",mime:"application/vnd.oasis.opendocument.presentation-template"};case"application/vnd.oasis.opendocument.graphics":return{ext:"odg",mime:"application/vnd.oasis.opendocument.graphics"};case"application/vnd.oasis.opendocument.graphics-template":return{ext:"otg",mime:"application/vnd.oasis.opendocument.graphics-template"};case"application/vnd.openxmlformats-officedocument.presentationml.slideshow":return{ext:"ppsx",mime:"application/vnd.openxmlformats-officedocument.presentationml.slideshow"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"};case"application/vnd.ms-excel.sheet.macroenabled":return{ext:"xlsm",mime:"application/vnd.ms-excel.sheet.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.spreadsheetml.template":return{ext:"xltx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.template"};case"application/vnd.ms-excel.template.macroenabled":return{ext:"xltm",mime:"application/vnd.ms-excel.template.macroenabled.12"};case"application/vnd.ms-powerpoint.slideshow.macroenabled":return{ext:"ppsm",mime:"application/vnd.ms-powerpoint.slideshow.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.document":return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};case"application/vnd.ms-word.document.macroenabled":return{ext:"docm",mime:"application/vnd.ms-word.document.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.wordprocessingml.template":return{ext:"dotx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.template"};case"application/vnd.ms-word.template.macroenabledtemplate":return{ext:"dotm",mime:"application/vnd.ms-word.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.template":return{ext:"potx",mime:"application/vnd.openxmlformats-officedocument.presentationml.template"};case"application/vnd.ms-powerpoint.template.macroenabled":return{ext:"potm",mime:"application/vnd.ms-powerpoint.template.macroenabled.12"};case"application/vnd.openxmlformats-officedocument.presentationml.presentation":return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};case"application/vnd.ms-powerpoint.presentation.macroenabled":return{ext:"pptm",mime:"application/vnd.ms-powerpoint.presentation.macroenabled.12"};case"application/vnd.ms-visio.drawing":return{ext:"vsdx",mime:"application/vnd.visio"};case"application/vnd.ms-package.3dmanufacturing-3dmodel+xml":return{ext:"3mf",mime:"model/3mf"};default:}}function fs(r,e,t){t={offset:0,...t};for(let[n,i]of e.entries())if(t.mask){if(i!==(t.mask[n]&r[n+t.offset]))return!1}else if(i!==r[n+t.offset])return!1;return!0}var lS=class{constructor(e){this.detectors=[...e?.customDetectors??[],{id:"core",detect:this.detectConfident},{id:"core.imprecise",detect:this.detectImprecise}],this.tokenizerOptions={abortSignal:e?.signal}}async fromTokenizer(e){let t=e.position;for(let n of this.detectors){let i=await n.detect(e);if(i)return i;if(t!==e.position)return}}async fromBuffer(e){if(!(e instanceof Uint8Array||e instanceof ArrayBuffer))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t?.length>1)return this.fromTokenizer(AU(t,this.tokenizerOptions))}async fromBlob(e){return this.fromStream(e.stream())}async fromStream(e){let t=await SU(e,this.tokenizerOptions);try{return await this.fromTokenizer(t)}finally{await t.close()}}async toDetectionStream(e,t){let{sampleSize:n=aS}=t,i,o,s=e.getReader({mode:"byob"});try{let{value:l,done:u}=await s.read(new Uint8Array(n));if(o=l,!u&&l)try{i=await this.fromBuffer(l.slice(0,n))}catch(f){if(!(f instanceof Vt))throw f;i=void 0}o=l}finally{s.releaseLock()}let a=new TransformStream({async start(l){l.enqueue(o)},transform(l,u){u.enqueue(l)}}),c=e.pipeThrough(a);return c.fileType=i,c}check(e,t){return fs(this.buffer,e,t)}checkString(e,t){return this.check(KU(e),t)}detectConfident=async e=>{if(this.buffer=new Uint8Array(aS),e.fileInfo.size===void 0&&(e.fileInfo.size=Number.MAX_SAFE_INTEGER),this.tokenizer=e,await e.peekBuffer(this.buffer,{length:12,mayBeLess:!0}),this.check([66,77]))return{ext:"bmp",mime:"image/bmp"};if(this.check([11,119]))return{ext:"ac3",mime:"audio/vnd.dolby.dd-raw"};if(this.check([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(this.check([77,90]))return{ext:"exe",mime:"application/x-msdownload"};if(this.check([37,33]))return await e.peekBuffer(this.buffer,{length:24,mayBeLess:!0}),this.checkString("PS-Adobe-",{offset:2})&&this.checkString(" EPSF-",{offset:14})?{ext:"eps",mime:"application/eps"}:{ext:"ps",mime:"application/postscript"};if(this.check([31,160])||this.check([31,157]))return{ext:"Z",mime:"application/x-compress"};if(this.check([199,113]))return{ext:"cpio",mime:"application/x-cpio"};if(this.check([96,234]))return{ext:"arj",mime:"application/x-arj"};if(this.check([239,187,191]))return this.tokenizer.ignore(3),this.detectConfident(e);if(this.check([71,73,70]))return{ext:"gif",mime:"image/gif"};if(this.check([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(this.check([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(this.check([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(this.checkString("ID3")){await e.ignore(6);let t=await e.readToken(jU);return e.position+t>e.fileInfo.size?{ext:"mp3",mime:"audio/mpeg"}:(await e.ignore(t),this.fromTokenizer(e))}if(this.checkString("MP+"))return{ext:"mpc",mime:"audio/x-musepack"};if((this.buffer[0]===67||this.buffer[0]===70)&&this.check([87,83],{offset:1}))return{ext:"swf",mime:"application/x-shockwave-flash"};if(this.check([255,216,255]))return this.check([247],{offset:3})?{ext:"jls",mime:"image/jls"}:{ext:"jpg",mime:"image/jpeg"};if(this.check([79,98,106,1]))return{ext:"avro",mime:"application/avro"};if(this.checkString("FLIF"))return{ext:"flif",mime:"image/flif"};if(this.checkString("8BPS"))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(this.checkString("MPCK"))return{ext:"mpc",mime:"audio/x-musepack"};if(this.checkString("FORM"))return{ext:"aif",mime:"audio/aiff"};if(this.checkString("icns",{offset:0}))return{ext:"icns",mime:"image/icns"};if(this.check([80,75,3,4])){let t;return await new Z5(e).unzip(n=>{switch(n.filename){case"META-INF/mozilla.rsa":return t={ext:"xpi",mime:"application/x-xpinstall"},{stop:!0};case"META-INF/MANIFEST.MF":return t={ext:"jar",mime:"application/java-archive"},{stop:!0};case"mimetype":return{async handler(i){let o=new TextDecoder("utf-8").decode(i).trim();t=cS(o)},stop:!0};case"[Content_Types].xml":return{async handler(i){let o=new TextDecoder("utf-8").decode(i),s=o.indexOf('.main+xml"');if(s===-1){let a="application/vnd.ms-package.3dmanufacturing-3dmodel+xml";o.includes(`ContentType="${a}"`)&&(t=cS(a))}else{o=o.slice(0,Math.max(0,s));let a=o.lastIndexOf('"'),c=o.slice(Math.max(0,a+1));t=cS(c)}},stop:!0};default:return/classes\d*\.dex/.test(n.filename)?(t={ext:"apk",mime:"application/vnd.android.package-archive"},{stop:!0}):{}}}),t??{ext:"zip",mime:"application/zip"}}if(this.checkString("OggS")){await e.ignore(28);let t=new Uint8Array(8);return await e.readBuffer(t),fs(t,[79,112,117,115,72,101,97,100])?{ext:"opus",mime:"audio/ogg; codecs=opus"}:fs(t,[128,116,104,101,111,114,97])?{ext:"ogv",mime:"video/ogg"}:fs(t,[1,118,105,100,101,111,0])?{ext:"ogm",mime:"video/ogg"}:fs(t,[127,70,76,65,67])?{ext:"oga",mime:"audio/ogg"}:fs(t,[83,112,101,101,120,32,32])?{ext:"spx",mime:"audio/ogg"}:fs(t,[1,118,111,114,98,105,115])?{ext:"ogg",mime:"audio/ogg"}:{ext:"ogx",mime:"application/ogg"}}if(this.check([80,75])&&(this.buffer[2]===3||this.buffer[2]===5||this.buffer[2]===7)&&(this.buffer[3]===4||this.buffer[3]===6||this.buffer[3]===8))return{ext:"zip",mime:"application/zip"};if(this.checkString("MThd"))return{ext:"mid",mime:"audio/midi"};if(this.checkString("wOFF")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff",mime:"font/woff"};if(this.checkString("wOF2")&&(this.check([0,1,0,0],{offset:4})||this.checkString("OTTO",{offset:4})))return{ext:"woff2",mime:"font/woff2"};if(this.check([212,195,178,161])||this.check([161,178,195,212]))return{ext:"pcap",mime:"application/vnd.tcpdump.pcap"};if(this.checkString("DSD "))return{ext:"dsf",mime:"audio/x-dsf"};if(this.checkString("LZIP"))return{ext:"lz",mime:"application/x-lzip"};if(this.checkString("fLaC"))return{ext:"flac",mime:"audio/x-flac"};if(this.check([66,80,71,251]))return{ext:"bpg",mime:"image/bpg"};if(this.checkString("wvpk"))return{ext:"wv",mime:"audio/wavpack"};if(this.checkString("%PDF")){try{if(await e.ignore(1350)===1350){let i=new Uint8Array(Math.min(10485760,e.fileInfo.size-1350));if(await e.readBuffer(i,{mayBeLess:!0}),zU(i,new TextEncoder().encode("AIPrivateData")))return{ext:"ai",mime:"application/postscript"}}}catch(t){if(!(t instanceof Vt))throw t}return{ext:"pdf",mime:"application/pdf"}}if(this.check([0,97,115,109]))return{ext:"wasm",mime:"application/wasm"};if(this.check([73,73])){let t=await this.readTiffHeader(!1);if(t)return t}if(this.check([77,77])){let t=await this.readTiffHeader(!0);if(t)return t}if(this.checkString("MAC "))return{ext:"ape",mime:"audio/ape"};if(this.check([26,69,223,163])){async function t(){let a=await e.peekNumber(xU),c=128,l=0;for(;(a&c)===0&&c!==0;)++l,c>>=1;let u=new Uint8Array(l+1);return await e.readBuffer(u),u}async function n(){let a=await t(),c=await t();c[0]^=128>>c.length-1;let l=Math.min(6,c.length),u=new DataView(a.buffer),f=new DataView(c.buffer,c.length-l,l);return{id:sS(u),len:sS(f)}}async function i(a){for(;a>0;){let c=await n();if(c.id===17026)return(await e.readToken(new Yn(c.len))).replaceAll(/\00.*$/g,"");await e.ignore(c.len),--a}}let o=await n();switch(await i(o.len)){case"webm":return{ext:"webm",mime:"video/webm"};case"matroska":return{ext:"mkv",mime:"video/x-matroska"};default:return}}if(this.checkString("SQLi"))return{ext:"sqlite",mime:"application/x-sqlite3"};if(this.check([78,69,83,26]))return{ext:"nes",mime:"application/x-nintendo-nes-rom"};if(this.checkString("Cr24"))return{ext:"crx",mime:"application/x-google-chrome-extension"};if(this.checkString("MSCF")||this.checkString("ISc("))return{ext:"cab",mime:"application/vnd.ms-cab-compressed"};if(this.check([237,171,238,219]))return{ext:"rpm",mime:"application/x-rpm"};if(this.check([197,208,211,198]))return{ext:"eps",mime:"application/eps"};if(this.check([40,181,47,253]))return{ext:"zst",mime:"application/zstd"};if(this.check([127,69,76,70]))return{ext:"elf",mime:"application/x-elf"};if(this.check([33,66,68,78]))return{ext:"pst",mime:"application/vnd.ms-outlook"};if(this.checkString("PAR1"))return{ext:"parquet",mime:"application/x-parquet"};if(this.checkString("ttcf"))return{ext:"ttc",mime:"font/collection"};if(this.check([207,250,237,254]))return{ext:"macho",mime:"application/x-mach-binary"};if(this.check([4,34,77,24]))return{ext:"lz4",mime:"application/x-lz4"};if(this.check([79,84,84,79,0]))return{ext:"otf",mime:"font/otf"};if(this.checkString("#!AMR"))return{ext:"amr",mime:"audio/amr"};if(this.checkString("{\\rtf"))return{ext:"rtf",mime:"application/rtf"};if(this.check([70,76,86,1]))return{ext:"flv",mime:"video/x-flv"};if(this.checkString("IMPM"))return{ext:"it",mime:"audio/x-it"};if(this.checkString("-lh0-",{offset:2})||this.checkString("-lh1-",{offset:2})||this.checkString("-lh2-",{offset:2})||this.checkString("-lh3-",{offset:2})||this.checkString("-lh4-",{offset:2})||this.checkString("-lh5-",{offset:2})||this.checkString("-lh6-",{offset:2})||this.checkString("-lh7-",{offset:2})||this.checkString("-lzs-",{offset:2})||this.checkString("-lz4-",{offset:2})||this.checkString("-lz5-",{offset:2})||this.checkString("-lhd-",{offset:2}))return{ext:"lzh",mime:"application/x-lzh-compressed"};if(this.check([0,0,1,186])){if(this.check([33],{offset:4,mask:[241]}))return{ext:"mpg",mime:"video/MP1S"};if(this.check([68],{offset:4,mask:[196]}))return{ext:"mpg",mime:"video/MP2P"}}if(this.checkString("ITSF"))return{ext:"chm",mime:"application/vnd.ms-htmlhelp"};if(this.check([202,254,186,190]))return{ext:"class",mime:"application/java-vm"};if(this.checkString(".RMF"))return{ext:"rm",mime:"application/vnd.rn-realmedia"};if(this.checkString("DRACO"))return{ext:"drc",mime:"application/vnd.google.draco"};if(this.check([253,55,122,88,90,0]))return{ext:"xz",mime:"application/x-xz"};if(this.checkString("<?xml "))return{ext:"xml",mime:"application/xml"};if(this.check([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(this.check([82,97,114,33,26,7])&&(this.buffer[6]===0||this.buffer[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(this.checkString("solid "))return{ext:"stl",mime:"model/stl"};if(this.checkString("AC")){let t=new Yn(4,"latin1").get(this.buffer,2);if(t.match("^d*")&&t>=1e3&&t<=1050)return{ext:"dwg",mime:"image/vnd.dwg"}}if(this.checkString("070707"))return{ext:"cpio",mime:"application/x-cpio"};if(this.checkString("BLENDER"))return{ext:"blend",mime:"application/x-blender"};if(this.checkString("!<arch>"))return await e.ignore(8),await e.readToken(new Yn(13,"ascii"))==="debian-binary"?{ext:"deb",mime:"application/x-deb"}:{ext:"ar",mime:"application/x-unix-archive"};if(this.checkString("WEBVTT")&&[`
83
+ `,"\r"," "," ","\0"].some(t=>this.checkString(t,{offset:6})))return{ext:"vtt",mime:"text/vtt"};if(this.check([137,80,78,71,13,10,26,10])){await e.ignore(8);async function t(){return{length:await e.readToken(vU),type:await e.readToken(new Yn(4,"latin1"))}}do{let n=await t();if(n.length<0)return;switch(n.type){case"IDAT":return{ext:"png",mime:"image/png"};case"acTL":return{ext:"apng",mime:"image/apng"};default:await e.ignore(n.length+4)}}while(e.position+8<e.fileInfo.size);return{ext:"png",mime:"image/png"}}if(this.check([65,82,82,79,87,49,0,0]))return{ext:"arrow",mime:"application/x-apache-arrow"};if(this.check([103,108,84,70,2,0,0,0]))return{ext:"glb",mime:"model/gltf-binary"};if(this.check([102,114,101,101],{offset:4})||this.check([109,100,97,116],{offset:4})||this.check([109,111,111,118],{offset:4})||this.check([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(this.check([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(this.checkString("gimp xcf "))return{ext:"xcf",mime:"image/x-xcf"};if(this.checkString("ftyp",{offset:4})&&(this.buffer[8]&96)!==0){let t=new Yn(4,"latin1").get(this.buffer,8).replace("\0"," ").trim();switch(t){case"avif":case"avis":return{ext:"avif",mime:"image/avif"};case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt":return{ext:"mov",mime:"video/quicktime"};case"M4V":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P":return{ext:"m4p",mime:"video/mp4"};case"M4B":return{ext:"m4b",mime:"audio/mp4"};case"M4A":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V":return{ext:"f4v",mime:"video/mp4"};case"F4P":return{ext:"f4p",mime:"video/mp4"};case"F4A":return{ext:"f4a",mime:"audio/mp4"};case"F4B":return{ext:"f4b",mime:"audio/mp4"};case"crx":return{ext:"cr3",mime:"image/x-canon-cr3"};default:return t.startsWith("3g")?t.startsWith("3g2")?{ext:"3g2",mime:"video/3gpp2"}:{ext:"3gp",mime:"video/3gpp"}:{ext:"mp4",mime:"video/mp4"}}}if(this.check([82,73,70,70])){if(this.checkString("WEBP",{offset:8}))return{ext:"webp",mime:"image/webp"};if(this.check([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(this.check([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/wav"};if(this.check([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(this.check([73,73,85,0,24,0,0,0,136,231,116,216]))return{ext:"rw2",mime:"image/x-panasonic-rw2"};if(this.check([48,38,178,117,142,102,207,17,166,217])){async function t(){let n=new Uint8Array(16);return await e.readBuffer(n),{id:n,size:Number(await e.readToken(EU))}}for(await e.ignore(30);e.position+24<e.fileInfo.size;){let n=await t(),i=n.size-24;if(fs(n.id,[145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101])){let o=new Uint8Array(16);if(i-=await e.readBuffer(o),fs(o,[64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"audio/x-ms-asf"};if(fs(o,[192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]))return{ext:"asf",mime:"video/x-ms-asf"};break}await e.ignore(i)}return{ext:"asf",mime:"application/vnd.ms-asf"}}if(this.check([171,75,84,88,32,49,49,187,13,10,26,10]))return{ext:"ktx",mime:"image/ktx"};if((this.check([126,16,4])||this.check([126,24,4]))&&this.check([48,77,73,69],{offset:4}))return{ext:"mie",mime:"application/x-mie"};if(this.check([39,10,0,0,0,0,0,0,0,0,0,0],{offset:2}))return{ext:"shp",mime:"application/x-esri-shape"};if(this.check([255,79,255,81]))return{ext:"j2c",mime:"image/j2c"};if(this.check([0,0,0,12,106,80,32,32,13,10,135,10]))switch(await e.ignore(20),await e.readToken(new Yn(4,"ascii"))){case"jp2 ":return{ext:"jp2",mime:"image/jp2"};case"jpx ":return{ext:"jpx",mime:"image/jpx"};case"jpm ":return{ext:"jpm",mime:"image/jpm"};case"mjp2":return{ext:"mj2",mime:"image/mj2"};default:return}if(this.check([255,10])||this.check([0,0,0,12,74,88,76,32,13,10,135,10]))return{ext:"jxl",mime:"image/jxl"};if(this.check([254,255]))return this.check([0,60,0,63,0,120,0,109,0,108],{offset:2})?{ext:"xml",mime:"application/xml"}:void 0;if(this.check([208,207,17,224,161,177,26,225]))return{ext:"cfb",mime:"application/x-cfb"};if(await e.peekBuffer(this.buffer,{length:Math.min(256,e.fileInfo.size),mayBeLess:!0}),this.check([97,99,115,112],{offset:36}))return{ext:"icc",mime:"application/vnd.iccprofile"};if(this.checkString("**ACE",{offset:7})&&this.checkString("**",{offset:12}))return{ext:"ace",mime:"application/x-ace-compressed"};if(this.checkString("BEGIN:")){if(this.checkString("VCARD",{offset:6}))return{ext:"vcf",mime:"text/vcard"};if(this.checkString("VCALENDAR",{offset:6}))return{ext:"ics",mime:"text/calendar"}}if(this.checkString("FUJIFILMCCD-RAW"))return{ext:"raf",mime:"image/x-fujifilm-raf"};if(this.checkString("Extended Module:"))return{ext:"xm",mime:"audio/x-xm"};if(this.checkString("Creative Voice File"))return{ext:"voc",mime:"audio/x-voc"};if(this.check([4,0,0,0])&&this.buffer.length>=16){let t=new DataView(this.buffer.buffer).getUint32(12,!0);if(t>12&&this.buffer.length>=t+16)try{let n=new TextDecoder().decode(this.buffer.slice(16,t+16));if(JSON.parse(n).files)return{ext:"asar",mime:"application/x-asar"}}catch{}}if(this.check([6,14,43,52,2,5,1,1,13,1,2,1,1,2]))return{ext:"mxf",mime:"application/mxf"};if(this.checkString("SCRM",{offset:44}))return{ext:"s3m",mime:"audio/x-s3m"};if(this.check([71])&&this.check([71],{offset:188}))return{ext:"mts",mime:"video/mp2t"};if(this.check([71],{offset:4})&&this.check([71],{offset:196}))return{ext:"mts",mime:"video/mp2t"};if(this.check([66,79,79,75,77,79,66,73],{offset:60}))return{ext:"mobi",mime:"application/x-mobipocket-ebook"};if(this.check([68,73,67,77],{offset:128}))return{ext:"dcm",mime:"application/dicom"};if(this.check([76,0,0,0,1,20,2,0,0,0,0,0,192,0,0,0,0,0,0,70]))return{ext:"lnk",mime:"application/x.ms.shortcut"};if(this.check([98,111,111,107,0,0,0,0,109,97,114,107,0,0,0,0]))return{ext:"alias",mime:"application/x.apple.alias"};if(this.checkString("Kaydara FBX Binary \0"))return{ext:"fbx",mime:"application/x.autodesk.fbx"};if(this.check([76,80],{offset:34})&&(this.check([0,0,1],{offset:8})||this.check([1,0,2],{offset:8})||this.check([2,0,2],{offset:8})))return{ext:"eot",mime:"application/vnd.ms-fontobject"};if(this.check([6,6,237,245,216,29,70,229,189,49,239,231,254,116,183,29]))return{ext:"indd",mime:"application/x-indesign"};if(await e.peekBuffer(this.buffer,{length:Math.min(512,e.fileInfo.size),mayBeLess:!0}),qU(this.buffer))return{ext:"tar",mime:"application/x-tar"};if(this.check([255,254]))return this.check([60,0,63,0,120,0,109,0,108,0],{offset:2})?{ext:"xml",mime:"application/xml"}:this.check([255,14,83,0,107,0,101,0,116,0,99,0,104,0,85,0,112,0,32,0,77,0,111,0,100,0,101,0,108,0],{offset:2})?{ext:"skp",mime:"application/vnd.sketchup.skp"}:void 0;if(this.checkString("-----BEGIN PGP MESSAGE-----"))return{ext:"pgp",mime:"application/pgp-encrypted"}};detectImprecise=async e=>{if(this.buffer=new Uint8Array(aS),await e.peekBuffer(this.buffer,{length:Math.min(8,e.fileInfo.size),mayBeLess:!0}),this.check([0,0,1,186])||this.check([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};if(this.check([0,1,0,0,0]))return{ext:"ttf",mime:"font/ttf"};if(this.check([0,0,1,0]))return{ext:"ico",mime:"image/x-icon"};if(this.check([0,0,2,0]))return{ext:"cur",mime:"image/x-icon"};if(this.buffer.length>=2&&this.check([255,224],{offset:0,mask:[255,224]})){if(this.check([16],{offset:1,mask:[22]}))return this.check([8],{offset:1,mask:[8]})?{ext:"aac",mime:"audio/aac"}:{ext:"aac",mime:"audio/aac"};if(this.check([2],{offset:1,mask:[6]}))return{ext:"mp3",mime:"audio/mpeg"};if(this.check([4],{offset:1,mask:[6]}))return{ext:"mp2",mime:"audio/mpeg"};if(this.check([6],{offset:1,mask:[6]}))return{ext:"mp1",mime:"audio/mpeg"}}};async readTiffTag(e){let t=await this.tokenizer.readToken(e?ch:Ut);switch(this.tokenizer.ignore(10),t){case 50341:return{ext:"arw",mime:"image/x-sony-arw"};case 50706:return{ext:"dng",mime:"image/x-adobe-dng"};default:}}async readTiffIFD(e){let t=await this.tokenizer.readToken(e?ch:Ut);for(let n=0;n<t;++n){let i=await this.readTiffTag(e);if(i)return i}}async readTiffHeader(e){let t=(e?ch:Ut).get(this.buffer,2),n=(e?bU:sr).get(this.buffer,4);if(t===42){if(n>=6){if(this.checkString("CR",{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(n>=8){let o=(e?ch:Ut).get(this.buffer,8),s=(e?ch:Ut).get(this.buffer,10);if(o===28&&s===254||o===31&&s===11)return{ext:"nef",mime:"image/x-nikon-nef"}}}return await this.tokenizer.ignore(n),await this.readTiffIFD(e)??{ext:"tif",mime:"image/tiff"}}if(t===43)return{ext:"tif",mime:"image/tiff"}}},hit=new Set(WU),pit=new Set(GU);var Sc=ze("helia:verified-fetch:content-type-parser"),J5="application/octet-stream";function bee(r){return Sc("checking for svg"),/^(<\?xml[^>]+>)?[^<^\w]+<svg/ig.test(r)}async function vee(r){Sc("checking for json");try{return JSON.parse(r),!0}catch(e){return Sc("failed to parse as json",e),!1}}function Eee(r){Sc("checking for text");let e=new TextDecoder("utf-8",{fatal:!0});try{return e.decode(r)}catch{return null}}async function See(r){return Sc("checking for html"),/^\s*<(?:!doctype\s+html|html|head|body)\b/i.test(r)}async function YU(r,e){Sc("contentTypeParser called for fileName: %s, byte size=%s",e,r.length);let t=(await XU(r))?.mime;if(t!=null)return Sc("detectedType: %s",t),t;if(Sc("no detectedType"),e==null){let n=Eee(r);return n!=null?bee(n)?"image/svg+xml":await vee(n)?"application/json":await See(n)?"text/html; charset=utf-8":"text/plain; charset=utf-8":J5}switch(e.split(".").pop()){case"css":return"text/css";case"html":return"text/html; charset=utf-8";case"js":return"application/javascript";case"json":return"application/json";case"txt":return"text/plain";case"woff2":return"font/woff2";case"svg":return"image/svg+xml";case"csv":return"text/csv";case"doc":return"application/msword";case"xls":return"application/vnd.ms-excel";case"ppt":return"application/vnd.ms-powerpoint";case"msi":return"application/x-msdownload";default:return J5}}function QU(r){return r?.then!=null}async function e8({bytes:r,path:e,response:t,contentTypeParser:n,log:i,defaultContentType:o="application/octet-stream",filename:s}){let a;if(n!=null)try{let c;s==null?(c=e.split("/").pop()?.trim(),c=c===""||c?.split(".").length===1?void 0:c):c=s;let l=n(r,c);if(QU(l)){let u=await l;u!=null&&(a=u)}else l!=null&&(a=l);i.trace("contentTypeParser returned %s",a)}catch(c){i.error("error parsing content type",c)}a===J5&&(a=o),i.trace('setting content type to "%s"',a??o),t.headers.set("content-type",a??o)}var t8=class extends Mt{codes=[ct];canHandle({cid:e,accept:t,pathDetails:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),n==null||i==null?!1:e.code===ct}getRedirectUrl(e){let{resource:t,path:n}=e;if(n===""?!t.toString().endsWith("/"):!n.endsWith("/"))try{let o=new URL(t.toString());return o.pathname.endsWith("/")?null:(o.pathname=`${o.pathname}/`,o.toString())}catch{return`${t.toString()}/`}return null}async handle(e){let{cid:t,options:n,withServerTiming:i=!1,pathDetails:o,query:s}=e,{handleServerTiming:a,contentTypeParser:c,helia:l,getBlockstore:u}=this.pluginOptions,f=this.log,h=e.resource,d=e.path,m=!1,g=e.byteRangeContext,w=o.ipfsRoots,x=o.terminalElement,v=x.cid;if(x?.type==="directory"){let T=x.cid,D=this.getRedirectUrl(e);if(D!=null){if(f.trace("directory url normalization spec requires redirect..."),n?.redirect==="error")throw f('could not redirect to %s as redirect option was set to "error"',D),new TypeError("Failed to fetch");if(n?.redirect==="manual")return f("returning 301 permanent redirect to %s",D),Cm(h,D);f("following redirect to %s",D),h=D,m=!0}let A="index.html";try{f.trace("found directory at %c/%s, looking for index.html",t,d);let I=await a("exporter-dir","",async()=>pr(`/ipfs/${T}/${A}`,l.blockstore,{signal:n?.signal,onProgress:n?.onProgress}),i);f.trace("found root file at %c/%s with cid %c",T,A,I.cid),d=A,v=I.cid}catch(I){this.log.error("error loading path %c/%s",T,A,I),n?.signal?.throwIfAborted(),e.isDirectory=!0,e.directoryEntries=[],e.modified++,this.log.trace("attempting to get directory entries because index.html was not found");let k=mU({...l,blockstore:u(e.cid,e.resource,n?.session??!0,n)});try{for await(let X of k.ls(T,{signal:n?.signal,onProgress:n?.onProgress}))e.directoryEntries.push(X);return null}catch(X){return f.error("error listing directory %c",T,X),p5("Unable to get directory contents")}}finally{n?.onProgress?.(new G("verified-fetch:request:end",{cid:T,path:A}))}}g.isRangeRequest&&g.isValidRangeRequest&&x.type==="file"&&(g.setFileSize(x.unixfs.fileSize()),f.trace("fileSize for rangeRequest %d",g.getFileSize()));let b=g.offset,S=g.length;f.trace("calling exporter for %c/%s with offset=%o & length=%o",v,d,b,S);try{let D=(await a("exporter-file","",async()=>pr(v,l.blockstore,{signal:n?.signal,onProgress:n?.onProgress}),i)).content({signal:n?.signal,onProgress:n?.onProgress,offset:b,length:S});f("got async iterator for %c/%s",t,d);let{stream:A,firstChunk:I}=await a("stream-and-chunk","",async()=>gU(D,d??"",this.pluginOptions.logger,{onProgress:n?.onProgress,signal:n?.signal}),i);g.setBody(A);let k=cn(h,g.getBody(),{byteRangeContext:g,log:f},{redirected:m});return await a("set-content-type","",async()=>e8({filename:s.filename,bytes:I,path:d,response:k,contentTypeParser:c,log:f}),i),a5(k,w),k}catch(T){return n?.signal?.throwIfAborted(),f.error("error streaming %c/%s",t,d,T),g.isRangeRequest&&T.code==="ERR_INVALID_PARAMS"?h5(h):Qd(h.toString(),"Unable to stream content")}}};var r8=class extends Mt{canHandle(e){this.log("checking if we can handle %c with accept %s",e.cid,e.accept);let{pathDetails:t,cid:n}=e;return t!=null?!1:n.code===ct||n.code===Pn}async handle(e){let{cid:t,resource:n,options:i,withServerTiming:o=!1}=e,{getBlockstore:s,handleServerTiming:a}=this.pluginOptions,c=s(t,n,i?.session??!0,i),l=await a("path-walking","",async()=>RM({...e,blockstore:c,log:this.log}),o);return e.modified++,l instanceof Response?(this.log.trace("path walking failed"),l.status===404?l:null):(e.pathDetails=l,null)}};var ZU;(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"})(ZU||(ZU={}));function n8(r){return r.charAt(0)==="1"||r.charAt(0)==="Q"?at(r):gn(W.parse(r))}var zm=class extends Error{name="PluginError";code;fatal;details;response;constructor(e,t,n){super(t),this.code=e,this.fatal=n?.fatal??!1,this.details=n?.details,this.response=n?.response}},na=class extends zm{name="PluginFatalError";constructor(e,t,n){super(e,t,{...n,fatal:!0}),this.name="PluginFatalError"}};var i8=class extends Mt{codes=[];canHandle({cid:e,accept:t,query:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),i==null?!1:t==="application/vnd.ipfs.ipns-record"||n.format==="ipns-record"}async handle(e){let{resource:t,path:n,options:i}=e,{helia:o}=this.pluginOptions;if(e.reqFormat="ipns-record",n!==""||!(t.startsWith("ipns://")||t.includes(".ipns.")||t.includes("/ipns/")))throw this.log.error('invalid request for IPNS name "%s" and path "%s"',t,n),new na("ERR_INVALID_IPNS_NAME","Invalid IPNS name",{response:Tm(t,new Error("Invalid IPNS name"))});let s;try{let h;t.startsWith("ipns://")?h=t.replace("ipns://",""):t.includes("/ipns/")?h=t.split("/ipns/")[1].split("/")[0].split("?")[0]:h=t.split(".ipns.")[0].split("://")[1],this.log.trace('trying to parse peer id from "%s"',h),s=n8(h)}catch(h){throw this.log.error("could not parse peer id from IPNS url %s",t,h),new na("ERR_NO_PEER_ID_FOUND","could not parse peer id from url",{response:Tm(t,h)})}let a=Ve([O("/ipns/"),s.toMultihash().bytes]),c=new nt("/dht/record/"+H(a,"base32"),!1),l=await o.datastore.get(c,i),u=kt.deserialize(l);e.byteRangeContext.setBody(u.value);let f=cn(t,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return f.headers.set("content-type","application/vnd.ipfs.ipns-record"),f}};var o8=class extends Mt{codes=[co,Bo];canHandle({cid:e,accept:t,byteRangeContext:n}){return this.log("checking if we can handle %c with accept %s",e,t),n==null?!1:t==="application/vnd.ipld.dag-json"&&e.code!==Pn?!0:co===e.code||Bo===e.code}async handle(e){let{path:t,resource:n,cid:i,accept:o,options:s}=e,{getBlockstore:a}=this.pluginOptions,c=s?.session??!0;this.log.trace("fetching %c/%s",i,t);let l=e.pathDetails?.terminalElement.cid??e.cid,f=await a(l,n,c,s).get(l,s),h;if(o==="application/vnd.ipld.dag-cbor"||o==="application/cbor")try{let g=_f(f);h=Sf(g)}catch(g){return this.log.error("could not transform %c to application/vnd.ipld.dag-cbor",g),ta(n)}else h=f;let d;o==null?co===i.code?d="application/vnd.ipld.dag-json":d="application/json":d=o.split(";")[0],e.byteRangeContext.setBody(h);let m=cn(n,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return this.log.trace("setting content-type to %s",d),m.headers.set("content-type",d),e.byteRangeContext.isValidRangeRequest||m.headers.set("content-length",h.length.toString()),m}};var Aee=["application/vnd.ipld.dag-json","application/vnd.ipld.raw","application/octet-stream"];function _ee({headers:r,accept:e}){let n=(e??new Headers(r).get("accept")??"").split(",").map(i=>i.split(";")[0]).map(i=>i.trim());for(let i of n){if(i==="*/*")return;if(Aee.includes(i??""))return i}}var s8=class extends Mt{codes=[vt,cr.code];canHandle({cid:e,accept:t,query:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),i==null?!1:t==="application/vnd.ipld.raw"||n.format==="raw"}async handle(e){let{path:t,resource:n,cid:i,accept:o,query:s,options:a}=e,{getBlockstore:c,contentTypeParser:l}=this.pluginOptions,u=a?.session??!0,f=this.log;if(o==="application/vnd.ipld.raw"||s.format==="raw"?(e.reqFormat="raw",e.query.download=!0,e.query.filename=e.query.filename??`${i.toString()}.bin`,f.trace("Set content disposition...")):f.trace("Did NOT set content disposition..."),t!==""&&i.code===vt)throw f.trace("404-ing raw codec request for %c/%s",i,t),new na("ERR_RAW_PATHS_NOT_SUPPORTED","Raw codec does not support paths",{response:m5(n,"Raw codec does not support paths")});let h=e.pathDetails?.terminalElement.cid??e.cid,m=await c(h,n,u,a).get(h,a);e.byteRangeContext.setBody(m);let g=cn(n,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:f},{redirected:!1});return await e8({filename:s.filename,bytes:m,path:t,response:g,defaultContentType:_ee({headers:a?.headers,accept:o}),contentTypeParser:l,log:f}),g}};var Iee=({weak:r,reqFormat:e})=>e==="tar"||e==="car"||e==="ipns-record"||r===!0?"W/":"",Tee=({reqFormat:r})=>r==null?"":r==="tar"?".x-tar":`.${r}`;function ph({cid:r,reqFormat:e,weak:t,rangeStart:n,rangeEnd:i,contentPrefix:o}){let s=Iee({weak:t,reqFormat:e}),a=Tee({reqFormat:e});return(n!=null||i!=null)&&(a+=`.${n??"0"}-${i??"N"}`),`${s}"${o??""}${r.toString()}${a}"`}var got=O("ustar\0","binary"),yot=O("ustar ","binary"),wot=O(" \0","binary");var nF=it(eF(),1);function kee(r){return r[Symbol.asyncIterator]!=null}function Pee(r){if(kee(r))return(async()=>{let n=new Uint8Array(0);for await(let i of r)n=Ve([n,i],n.length+i.length);return n})();let e=[],t=0;for(let n of r)e.push(n),t+=n.byteLength;return Ve(e,t)}var tF=Pee;var Ree="0000000000000000000",Dee="7777777777777777777",Nee=48,Oee=O("ustar\0","binary"),Lee=O("00","binary"),Bee=parseInt("7777",8),Mee=257,Uee=263,Fee=function(r){switch(r){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72;default:return 0}},$ee=function(r){let e=256;for(let t=0;t<148;t++)e+=r[t];for(let t=156;t<512;t++)e+=r[t];return e},Ac=function(r,e){let t=r.toString(8);return t.length>e?O(Dee.slice(0,e)+" "):O(Ree.slice(0,e-t.length)+t+" ")},uS=function(r){let e=O(r).byteLength,t=Math.floor(Math.log(e)/Math.log(10))+1;return e+t>=Math.pow(10,t)&&t++,`${e+t}${r}`};function rF(r){let e="";r.name!=null&&(e+=uS(" path="+r.name+`
84
84
  `)),r.linkname!=null&&(e+=uS(" linkpath="+r.linkname+`
85
85
  `));let t=r.pax;if(t!=null)for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e+=uS(" "+n+"="+t[n]+`
86
86
  `));return O(e)}function a8(r){let e=new Uint8Array(512),t=r.name,n="";if(r.typeflag===5&&t[t.length-1]!=="/"&&(t+="/"),O(t).byteLength!==t.length)return null;for(;O(t).byteLength>100;){let i=t.indexOf("/");if(i===-1)return null;n+=n!==""?"/"+t.slice(0,i):t.slice(0,i),t=t.slice(i+1)}return O(t).byteLength>100||O(n).byteLength>155||r.linkname!=null&&O(r.linkname).byteLength>100?null:(e.set(O(t),0),e.set(Ac(r.mode&Bee,6),100),e.set(Ac(r.uid,6),108),e.set(Ac(r.gid,6),116),e.set(Ac(r.size,11),124),e.set(Ac(r.mtime.getTime()/1e3|0,11),136),e[156]=Nee+Fee(r.type),r.linkname!=null&&e.set(O(r.linkname),157),e.set(Oee,Mee),e.set(Lee,Uee),r.uname!=null&&e.set(O(r.uname),265),r.gname!=null&&e.set(O(r.gname),297),e.set(Ac(r.devmajor??0,6),329),e.set(Ac(r.devminor??0,6),337),n!=null&&e.set(O(n),345),e.set(Ac($ee(e),6),148),e)}var{S_IFMT:Vee,S_IFBLK:zee,S_IFCHR:Kee,S_IFDIR:qee,S_IFIFO:jee,S_IFLNK:Wee}=nF.default,Gee=parseInt("755",8),Xee=parseInt("644",8),iF=new Uint8Array(1024);function Yee(r=0){switch(r&Vee){case zee:return"block-device";case Kee:return"character-device";case qee:return"directory";case jee:return"fifo";case Wee:return"symlink";default:return"file"}}function dS(r){return r&=511,r!==0?iF.subarray(0,512-r):new Uint8Array(0)}function fS(r){if(r.pax==null){let e=a8(r);if(e!=null)return e}return Qee(r)}function Qee(r){let e=rF(r),t={name:"PaxHeader",mode:r.mode,uid:r.uid,gid:r.gid,size:e.length,mtime:r.mtime,type:"pax-header",linkname:r.linkname,uname:r.uname,gname:r.gname,devmajor:r.devmajor,devminor:r.devminor};return new oe(a8(t)??new Uint8Array(0),e,dS(e.length),a8({...t,size:r.size,type:r.type})??new Uint8Array(0)).subarray()}function c8(){return async function*(r){for await(let{header:e,body:t}of r){let n={...e,size:e.type==="symlink"?0:e.size??0,type:e.type??Yee(e.mode),mode:e.mode??(e.type==="directory"?Gee:Xee),uid:e.uid??0,gid:e.gid??0,mtime:e.mtime??new Date};if(typeof t=="string"&&(t=O(t)),t instanceof Uint8Array||vi(t)){n.size=t.length,yield fS(n),yield vi(t)?t.subarray():t,yield dS(n.size);continue}if(n.type==="symlink"&&n.linkname==null){if(t==null)throw new Error("type was symlink but no linkname or body specified");n.linkname=H(await tF(t)),yield fS(n);continue}if(yield fS(n),n.type!=="file"&&n.type!=="contiguous-file")continue;let i=0;for await(let o of t??[])i+=o.length,yield vi(o)?o.subarray():o;if(i!==n.size)throw new Error(`size mismatch, wrote ${i} of ${n.size} bytes`);yield dS(n.size)}yield iF}}var Zee=["file","raw","directory"];function Jee(r){let e,t;return(r.type==="file"||r.type==="directory")&&(e=r.unixfs.mode,t=r.unixfs.mtime!=null?new Date(Number(r.unixfs.mtime.secs*1000n)):void 0),{name:r.path,mode:e,mtime:t,size:Number(r.size),type:r.type==="directory"?"directory":"file"}}function oF(r){if(!Zee.includes(r.type))throw new gi(`${r.type} is not a UnixFS node`);let e={header:Jee(r)};return(r.type==="file"||r.type==="raw")&&(e.body=r.content()),e}async function*sF(r,e,t){let n=await pr(r,e,t);if(n.type==="file"||n.type==="raw"){yield*ot([oF(n)],c8());return}if(n.type==="directory"){yield*ot(nh(r,e,t),i=>Nt(i,o=>oF(o)),c8());return}throw new gi("Not a UnixFS node")}var l8=class extends Mt{codes=[];canHandle({cid:e,accept:t,query:n,byteRangeContext:i}){return this.log("checking if we can handle %c with accept %s",e,t),i==null?!1:t==="application/x-tar"||n.format==="tar"}async handle(e){let{cid:t,path:n,resource:i,options:o,pathDetails:s}=e,{getBlockstore:a}=this.pluginOptions,c=s?.terminalElement.cid??t;if(c.code!==ct&&c.code!==vt)return ta("only UnixFS data can be returned in a TAR file");e.reqFormat="tar",e.query.download=!0,e.query.filename=e.query.filename??`${c.toString()}.tar`;let l=a(c,i,o?.session,o),u=Im(sF(`/ipfs/${t}/${n}`,l,o));e.byteRangeContext.setBody(u);let f=cn(i,e.byteRangeContext.getBody(),{byteRangeContext:e.byteRangeContext,log:this.log});return f.headers.set("content-type","application/x-tar"),f.headers.set("etag",ph({cid:c,reqFormat:e.reqFormat,weak:!0})),f}};function aF(r){let e=ete(r);return e===r?`filename="${r}"`:`filename="${e}"; filename*=UTF-8''${encodeURIComponent(r)}`}function ete(r){return r.replace(/[^\x00-\x7F]/g,"_")}var tte={[Pn]:["application/json","application/vnd.ipld.dag-cbor","application/cbor","application/vnd.ipld.dag-json","application/octet-stream","application/vnd.ipld.raw","application/vnd.ipfs.ipns-record","application/vnd.ipld.car"],[co]:["application/json","application/vnd.ipld.dag-cbor","application/cbor","application/vnd.ipld.dag-json","application/octet-stream","application/vnd.ipld.raw","application/vnd.ipfs.ipns-record","application/vnd.ipld.car"],[Bo]:["application/json","application/vnd.ipld.dag-cbor","application/cbor","application/vnd.ipld.dag-json","application/octet-stream","application/vnd.ipld.raw","application/vnd.ipfs.ipns-record","application/vnd.ipld.car"],[ct]:["application/octet-stream","application/json","application/vnd.ipld.dag-cbor","application/cbor","application/vnd.ipld.dag-json","application/vnd.ipld.raw","application/vnd.ipfs.ipns-record","application/vnd.ipld.car","application/x-tar"],[vt]:["application/octet-stream","application/vnd.ipld.raw","application/vnd.ipfs.ipns-record","application/vnd.ipld.dag-json","application/vnd.ipld.car","application/x-tar"]};function cF(r,e){let t=tte[r.code];if(e!=null)return rte(e,t)}function rte(r,e){let t=r.split(",").map(n=>{let i=n.trim().split(";");return{mimeType:`${i[0]}`.trim(),weight:nte(i[1])}}).sort((n,i)=>n.weight===i.weight?0:n.weight>i.weight?-1:1).map(n=>n.mimeType);for(let n of t)for(let i of e)if(n.includes(i)||n==="*/*"||n.startsWith("*/")&&i.split("/")[1]===n.split("/")[1]||n.endsWith("/*")&&i.split("/")[0]===n.split("/")[0])return i}function nte(r){if(r!=null&&(r=r.trim()),r?.startsWith("q=")!==!0)return 1;let e=parseFloat(r.replace("q=",""));return isNaN(e)?0:e}var u8={raw:"application/vnd.ipld.raw",car:"application/vnd.ipld.car","dag-json":"application/vnd.ipld.dag-json","dag-cbor":"application/vnd.ipld.dag-cbor",json:"application/json",cbor:"application/cbor","ipns-record":"application/vnd.ipfs.ipns-record",tar:"application/x-tar"};function lF(r){if(r!=null)return u8[r]}function hS(r){let e=r.get("accept");return!!(e!=null&&Object.values(u8).includes(e))}function pS(r){let e=r?.format;return!!(e!=null&&Object.keys(u8).includes(e))}function uF({query:r,headers:e}){return hS(e)||pS(r)}function fF({query:r,headers:e,logger:t}){let n=t.forComponent("helia:verified-fetch:get-resolved-accept-header"),i=new Headers(e),o=i.get("accept")??void 0;if(o!=null&&n('incoming accept header "%s"',o),!uF({query:r,headers:i}))return n("no explicit IPLD content-type requested, returning incoming accept header %s",o),o;let s=lF(r?.format);r?.format!=null&&n('incoming query format "%s", mapped to %s',r.format,s);let a=o;return!hS(i)&&pS(r)&&(n("accept header not recognized, but query format provided, setting accept header to %s",s),a=s),n('resolved accept header to "%s"',a),a}async function Km(r,e,t){let n=performance.now();try{let i=await t(),s=(performance.now()-n).toFixed(1),a=`${r};dur=${s};desc="${e}"`;return{result:i,header:a,error:null}}catch(i){let s=(performance.now()-n).toFixed(1),a=`${r};dur=${s};desc="${e}"`;return{result:null,error:i,header:a}}}var dF=it(g7(),1),f8=class{lru;constructor(e){this.lru=(0,dF.default)(e)}get(e){let t=this.lru.get(e);if(t!=null){if(t.expire!=null&&t.expire<Date.now()){this.lru.remove(e);return}return t.value}}set(e,t,n){this.lru.set(e,{value:t,expire:Date.now()+n})}has(e){return this.get(e)!=null}remove(e){this.lru.remove(e)}clear(){this.lru.clear()}};var hF=new f8(1e3),ite=/^(?<protocol>ip[fn]s):\/\/(?<cidOrPeerIdOrDnsLink>[^/?]+)\/?(?<path>[^?]*)\??(?<queryString>.*)$/,ote=/^\/(?<protocol>ip[fn]s)\/(?<cidOrPeerIdOrDnsLink>[^/?]+)\/?(?<path>[^?]*)\??(?<queryString>.*)$/,ste=/^https?:\/\/(.*[^/])\/(?<protocol>ip[fn]s)\/(?<cidOrPeerIdOrDnsLink>[^/?]+)\/?(?<path>[^?]*)\??(?<queryString>.*)$/,ate=/^https?:\/\/(?<cidOrPeerIdOrDnsLink>[^/?]+)\.(?<protocol>ip[fn]s)\.([^/?]+)\/?(?<path>[^?]*)\??(?<queryString>.*)$/;function cte(r){let e=r?.protocol;if(e==null)return!1;let t=r?.cidOrPeerIdOrDnsLink;if(t==null)return!1;let n=r?.path,i=r?.queryString;return["ipns","ipfs"].includes(e)&&typeof t=="string"&&(n==null||typeof n=="string")&&(i==null||typeof i=="string")}function qm(r){for(let e of[ate,ite,ste,ote]){let t=r.match(e);if(cte(t?.groups))return t.groups}throw new TypeError(`Invalid URL: ${r}, please use ipfs://, ipns://, or gateway URLs only`)}function lte(r){if(r==null)return;let e=r.answer?.TTL,t=r.record?.ttl,n=t!=null?Number(t/BigInt(1e9)):void 0;return e??n}var ute=/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/;function fte(r){return ute.test(r)&&r.includes("-")&&!r.includes(".")}function dte(r){return r.replace(/--/g,"%").replace(/-/g,".").replace(/%/g,"-")}async function pF({urlString:r,ipns:e,logger:t,withServerTiming:n=!1},i){let o=t.forComponent("helia:verified-fetch:parse-url-string"),{protocol:s,cidOrPeerIdOrDnsLink:a,path:c,queryString:l}=qm(r),u,f,h=[],d,m=[];if(s==="ipfs")try{u=W.parse(a)}catch(x){o.error(x),h.push(new TypeError("Invalid CID for ipfs://<cid> URL"))}else if(d=hF.get(a),d!=null)u=d.cid,f=d.path,o.trace("resolved %s to %c from cache",a,u);else{o.trace("Attempting to resolve PeerId for %s",a);let x;try{x=n8(a);let v=x?.publicKey;if(v==null)throw new TypeError("cidOrPeerIdOrDnsLink contains no public key");if(n){let b=async()=>e.resolve(v,i),S=await Km("ipns.resolve",`Resolve IPNS name ${a}`,b);if(m.push(S),S.error!=null)throw S.error;d=S.result}else d=await e.resolve(v,i);u=d?.cid,f=d?.path,o.trace("resolved %s to %c",a,u)}catch(v){i?.signal?.throwIfAborted(),x==null?(o.error('could not parse PeerId string "%s"',a,v),h.push(new TypeError(`Could not parse PeerId in ipns url "${a}", ${v.message}`))):(o.error("could not resolve PeerId %c",x,v),h.push(new TypeError(`Could not resolve PeerId "${a}": ${v.message}`)))}if(u==null){let v=a;fte(a)&&(v=dte(a),o.trace('decoded dnslink from "%s" to "%s"',a,v)),o.trace("Attempting to resolve DNSLink for %s",v);try{if(n){let b=await Km("ipns.resolveDNSLink",`Resolve DNSLink ${v}`,e.resolveDNSLink.bind(e,v,i));if(m.push(b),b.error!=null)throw b.error;d=b.result}else d=await e.resolveDNSLink(v,i);u=d?.cid,f=d?.path,o.trace("resolved %s to %c",v,u)}catch(b){i?.signal?.throwIfAborted(),o.error('could not resolve DnsLink for "%s"',a,b),h.push(b)}}}if(u==null)throw h.length===1?h[0]:(h.push(new Error(`Invalid resource. Cannot determine CID from URL "${r}".`)),h);let g=lte(d);d!=null&&(g=g??60*2,o.trace("caching %s resolved to %s with TTL: %s",a,u,g),hF.set(a,d,g*1e3));let w={};if(l!=null&&l.length>0){let x=l.split("&");for(let v of x){let[b,S]=v.split("=");w[b]=decodeURIComponent(S)}w.download!=null&&(w.download=w.download==="true"),w.filename!=null&&(w.filename=w.filename.toString())}return{protocol:s,cid:u,path:hte(f,c??""),query:w,ttl:g,ipfsPath:`/${s}/${a}${c!=null&&c!==""?`/${c}`:""}`,serverTimings:m}}function hte(r,e){let t="";return r!=null&&(t+=r),e.length>0&&(t=`${t.length>0?`${t}/`:t}${e}`),t=t.replace(/\/(\/)+/g,"/"),t.startsWith("/")&&(t=t.substring(1)),t.split("/").map(decodeURIComponent).join("/")}function mF(r){return r.match(/\.[a-zA-Z0-9]{1,4}$/)!=null||r.endsWith("/")?r:`${r}/`}async function gF({resource:r,options:e,logger:t,cid:n,fetch:i=globalThis.fetch}){let o=t.forComponent("helia:verified-fetch:get-redirect-response");if(typeof r!="string"||e==null||["ipfs://","ipns://"].some(u=>r.startsWith(u)))return null;let s=new Headers(e?.headers),a=s.get("x-forwarded-host"),c=s.get("host");if(s.get("x-forwarded-for")==null&&a==null&&c==null)return o.trace("no redirect info found in headers"),null;o.trace("checking for redirect info");try{let u=qm(r),f=new URL(r),h=a??f.host,d=new URL(f);if(u.protocol==="ipfs"&&n.version===0?d.host=`${n.toV1()}.ipfs.${h}`:d.host=`${u.cidOrPeerIdOrDnsLink}.${u.protocol}.${h}`,c?.includes(u.protocol)===!0&&d.host.includes(c))return o.trace("request was for a subdomain already, not setting location header"),null;if(c!=null&&!d.host.includes(c))return o.trace("host header is not the same as the subdomain url host, not setting location header"),null;if(f.host===d.host)return o.trace("req url is the same as the subdomain url, not setting location header"),null;d.pathname=mF(f.pathname.replace(`/${u.cidOrPeerIdOrDnsLink}`,"").replace(`/${u.protocol}`,"")),o.trace("subdomain url %s",d.href);let m=new URL(f,`${f.protocol}//${h}`);m.pathname=mF(f.pathname),o.trace("path url %s",m.href);try{let g=await i(d,{method:"HEAD"});if(g.ok)return o("subdomain supported, redirecting to subdomain"),Cm(r.toString(),d.href);throw o("subdomain not supported, subdomain failed with status %s %s",g.status,g.statusText),new s5("subdomain not supported")}catch(g){return o("subdomain not supported",g),m.href===f.href?(o("path url is the same as the request url, not setting location header"),null):Cm(r.toString(),m.href)}}catch(u){o.error("error setting location header for x-forwarded-host",u)}return null}async function yF(r,{ipns:e,logger:t},{withServerTiming:n=!1,...i}={withServerTiming:!1}){if(typeof r=="string")return pF({urlString:r,ipns:e,logger:t,withServerTiming:n},i);let o=W.asCID(r);if(o!=null)return{cid:o,protocol:"ipfs",path:"",query:{},ipfsPath:`/ipfs/${o.toString()}`,ttl:29030400,serverTimings:[]};throw new TypeError(`Invalid resource. Cannot determine CID from resource: ${r}`)}function wF(r){let e=W.asCID(r);if(e!=null)return`ipfs://${e}`;try{return`ipfs://${W.parse(r.toString())}`}catch{}let{protocol:t,cidOrPeerIdOrDnsLink:n}=qm(r.toString());return`${t}://${n}`}var pte=100,mte=60*1e3;function gte(r){if(r==null)return;let e;return r?.signal===null?e=void 0:e=r?.signal,{...r,signal:e}}var d8=class{helia;ipns;log;contentTypeParser;blockstoreSessions;serverTimingHeaders=[];withServerTiming;plugins=[];constructor({helia:e,ipns:t},n){this.helia=e,this.log=e.logger.forComponent("helia:verified-fetch"),this.ipns=t??OC(e),this.contentTypeParser=n?.contentTypeParser??YU,this.blockstoreSessions=new i5({max:n?.sessionCacheSize??pte,ttl:n?.sessionTTLms??mte,dispose:a=>{a.close()}}),this.withServerTiming=n?.withServerTiming??!1;let i={...n,logger:$_("helia:verified-fetch"),getBlockstore:(a,c,l,u)=>this.getBlockstore(a,c,l,u),handleServerTiming:async(a,c,l)=>this.handleServerTiming(a,c,l,this.withServerTiming),helia:e,contentTypeParser:this.contentTypeParser},o=[new r8(i),new l5(i),new i8(i),new g5(i),new s8(i),new l8(i),new o8(i),new k5(i),new t8(i)],s=n?.plugins?.map(a=>a(i))??[];if(s.length>0){let a=new Map(o.map(l=>[l.constructor.name,l])),c=new Map(s.map(l=>[l.constructor.name,l]));this.plugins=o.map(l=>c.get(l.constructor.name)??l),this.plugins.push(...s.filter(l=>!a.has(l.constructor.name)))}else this.plugins=o;this.log.trace("created VerifiedFetch instance")}getBlockstore(e,t,n=!0,i={}){let o=wF(t);if(!n)return this.helia.blockstore;let s=this.blockstoreSessions.get(o);return s==null&&(s=this.helia.blockstore.createSession(e,i),this.blockstoreSessions.set(o,s)),s}async handleServerTiming(e,t,n,i){if(!i)return n();let{error:o,result:s,header:a}=await Km(e,t,n);if(this.serverTimingHeaders.push(a),o!=null)throw o;return s}handleFinalResponse(e,{query:t,cid:n,reqFormat:i,ttl:o,protocol:s,ipfsPath:a,pathDetails:c,byteRangeContext:l,options:u}={}){if(this.serverTimingHeaders.length>0){let h=this.serverTimingHeaders.join(", ");e.headers.set("Server-Timing",h),this.serverTimingHeaders=[]}if(e.headers.get("Transfer-Encoding")!=="chunked"&&l!=null){let h=l.length;h!=null&&(this.log.trace("Setting Content-Length from byteRangeContext: %d",h),e.headers.set("Content-Length",h.toString()))}let f;if(this.log.trace("checking for content disposition"),t?.download===!0?f="attachment":this.log.trace("download not requested"),t?.filename!=null?(f==null&&(f="inline"),f=`${f}; ${aF(t.filename)}`):this.log.trace("no filename specified in query"),f!=null?e.headers.set("Content-Disposition",f):this.log.trace("no content disposition specified"),n!=null&&e.headers.get("etag")==null&&e.headers.set("etag",ph({cid:c?.terminalElement.cid??n,reqFormat:i,weak:!1})),s!=null&&UB({response:e,ttl:o,protocol:s}),a!=null&&e.headers.set("X-Ipfs-Path",a),e.headers.set("Access-Control-Allow-Origin","*"),e.headers.set("Access-Control-Allow-Methods","GET, HEAD, OPTIONS"),e.headers.set("Access-Control-Allow-Headers","Range, X-Requested-With"),e.headers.set("Access-Control-Expose-Headers","Content-Range, Content-Length, X-Ipfs-Path, X-Stream-Output"),i!=="car"?e.headers.set("Accept-Ranges","bytes"):e.headers.set("Accept-Ranges","none"),u?.method==="HEAD"){let h=e?.headers;return new Response(null,{status:200,headers:h})}return e}async runPluginPipeline(e,t=3){let n,i=0,o=new Set,s=e.modified;for(;i<t;){this.log(`Starting pipeline pass #${i+1}`),i++;let a=this.plugins.filter(u=>!o.has(u.constructor.name)).filter(u=>u.canHandle(e));if(a.length===0){this.log.trace("No plugins can handle the current context.. checking by CID code");let u=this.plugins.filter(f=>f.codes.includes(e.cid.code));if(u.length>0)a.push(...u);else{this.log.trace("No plugins found that can handle request by CID code; exiting pipeline.");break}}this.log.trace("Plugins ready to handle request: ",a.map(u=>u.constructor.name).join(", "));let c=!1,l=!1;for(let u of a){try{this.log.trace("Invoking plugin:",u.constructor.name),o.add(u.constructor.name);let f=await u.handle(e);if(f!=null){n=f,l=!0;break}}catch(f){if(e.options?.signal?.throwIfAborted(),this.log.error("Error in plugin:",u.constructor.name,f),f.name==="PluginFatalError")return f.response??Qd(e.resource,"Failed to fetch")}finally{let f=e.modified;c=f!==s,c&&(s=f)}if(n!=null){this.log.trace("Plugin produced final response:",u.constructor.name);break}}if(l&&n!=null)break;if(!c){this.log.trace("No context changes and no final response; exiting pipeline.");break}}return n}async fetch(e,t){if(this.log("fetch %s",e),t?.method==="OPTIONS")return this.handleFinalResponse(new Response(null,{status:200}));let n=gte(t),i=n?.withServerTiming??this.withServerTiming;n?.onProgress?.(new G("verified-fetch:request:start",{resource:e}));let o;try{o=await this.handleServerTiming("parse-resource","",async()=>yF(e,{ipns:this.ipns,logger:this.helia.logger},{withServerTiming:i,...n}),i),this.serverTimingHeaders.push(...o.serverTimings.map(({header:h})=>h))}catch(h){return n?.signal?.throwIfAborted(),this.log.error("error parsing resource %s",e,h),this.handleFinalResponse(Tm(e.toString(),h))}n?.onProgress?.(new G("verified-fetch:request:resolve",{cid:o.cid,path:o.path}));let s=fF({query:o.query,headers:n?.headers,logger:this.helia.logger}),a=cF(o.cid,s);if(this.log("output type %s",a),s!=null&&a==null)return this.handleFinalResponse(ta(e.toString()));let c=a?.split(";")[0]??"application/octet-stream",l=await gF({resource:e,options:n,logger:this.helia.logger,cid:o.cid});if(l!=null)return this.handleFinalResponse(l);let u={...o,resource:e.toString(),accept:a,options:n,withServerTiming:i,onProgress:n?.onProgress,modified:0};this.log.trace('finding handler for cid code "%s" and response content type "%s"',o.cid.code,c);let f=await this.runPluginPipeline(u);return n?.onProgress?.(new G("verified-fetch:request:end",{cid:o.cid,path:o.path})),this.handleFinalResponse(f??p5(e.toString()),u)}async start(){await this.helia.start()}async stop(){await this.helia.stop()}};var jm,h8=async function(e,t){return jm==null&&(jm=await mS()),jm(e,t)};h8.start=async function(){await jm?.start()};h8.stop=async function(){await jm?.stop()};function yte(r){return"ipfs-_blank"}function wte(r,e){let t=e.globalData.gatewayURLWithoutSubdomain.host;return`<a class="ipfs-hash" translate="no" href="${e.globalData.gatewayURLWithoutSubdomain.protocol}//${t}/ipfs/${r.hash}?filename=${r.name}">${r.shortHash}</a>`}function xte(r){let e=r.split("."),t=[];for(let n=e.length-1;n>=0;n--){let i=e[n];if(i==="ipfs"||i==="ipns")break;t.push(i)}return t.reverse(),t.join(".")}function bte(r){let e;try{e=new URL(r)}catch{e=new URL("https://inbrowser.link")}return e.host=xte(e.host),e}function vte(r){return r.path!=null?`Index of <a href="${`${r.globalData.gatewayURL}/${r.path}`}">${r.name}</a>`:`Index of ${r.name} ${r.path}`}function Ete(r){return r.listing.map(e=>`<div class="type-icon">