@oracle-agent/oracle 0.26.0 → 0.27.0
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/README.md +1 -1
- package/dist/assets/skills/oracle-desk-product/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +35 -79
- package/dist/bin/oracle-data-mcp.mjs +13 -57
- package/dist/bin/oracle-public-server.mjs +4 -48
- package/dist/bin/oracle-route.mjs +22 -66
- package/dist/bin/oracle-scan.mjs +15 -59
- package/dist/cli/commands/chat.mjs +100 -144
- package/dist/cli/commands/doctor.mjs +4 -4
- package/dist/cli/commands/eval.mjs +147 -190
- package/dist/cli/commands/farm.mjs +34 -78
- package/dist/cli/commands/follow.mjs +17 -61
- package/dist/cli/commands/model.mjs +105 -149
- package/dist/cli/commands/receipt.mjs +3 -3
- package/dist/cli/commands/resolve.mjs +13 -57
- package/dist/cli/commands/sign.mjs +14 -14
- package/dist/cli/commands/signer.mjs +14 -14
- package/dist/cli/commands/strategy.mjs +5 -49
- package/dist/cli/commands/swap.mjs +27 -71
- package/dist/cli/commands/venues.mjs +3 -3
- package/dist/data/desk-data.mjs +33 -77
- package/dist/data/names.mjs +2 -46
- package/dist/data/providers/farming.mjs +2 -46
- package/dist/index.mjs +37 -81
- package/dist/local-signer/anvil-attestation-worker.mjs +2 -0
- package/dist/local-signer/index.mjs +3 -3
- package/dist/local-signer/runtime.mjs +13 -0
- package/dist/nft/universal-mint-router.mjs +3 -47
- package/dist/router/index.mjs +2 -46
- package/dist/router/prepare-bridge.mjs +2 -46
- package/dist/scanner/index.mjs +4 -48
- package/dist/strategy/index.mjs +3 -47
- package/package.json +2 -1
- package/public/oracle-splash/_variants/ice.html +1 -1
- package/public/oracle-splash/_variants/ivory.html +1 -1
- package/public/oracle-splash/index.html +1 -1
|
@@ -1,67 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Ep=Object.create;var Fi=Object.defineProperty;var Qp=Object.getOwnPropertyDescriptor;var Bp=Object.getOwnPropertyNames;var Ip=Object.getPrototypeOf,hp=Object.prototype.hasOwnProperty;var d=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(A,t)=>(typeof require<"u"?require:A)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var se=(e,A,t)=>()=>{if(t)throw t[0];try{return e&&(A=e(e=0)),A}catch(r){throw t=[r],r}};var f=(e,A)=>()=>{try{return A||e((A={exports:{}}).exports,A),A.exports}catch(t){throw A=0,t}},ut=(e,A)=>{for(var t in A)Fi(e,t,{get:A[t],enumerable:!0})},Cp=(e,A,t,r)=>{if(A&&typeof A=="object"||typeof A=="function")for(let n of Bp(A))!hp.call(e,n)&&n!==t&&Fi(e,n,{get:()=>A[n],enumerable:!(r=Qp(A,n))||r.enumerable});return e};var dp=(e,A,t)=>(t=e!=null?Ep(Ip(e)):{},Cp(A||!e||!e.__esModule?Fi(t,"default",{value:e,enumerable:!0}):t,e));var Ae=f((f2,ql)=>{ql.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}});var q=f((p2,Qg)=>{"use strict";var Ol=Symbol.for("undici.error.UND_ERR"),te=class extends Error{constructor(A){super(A),this.name="UndiciError",this.code="UND_ERR"}static[Symbol.hasInstance](A){return A&&A[Ol]===!0}[Ol]=!0},Pl=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT"),Mi=class extends te{constructor(A){super(A),this.name="ConnectTimeoutError",this.message=A||"Connect Timeout Error",this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Pl]===!0}[Pl]=!0},Wl=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT"),Li=class extends te{constructor(A){super(A),this.name="HeadersTimeoutError",this.message=A||"Headers Timeout Error",this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Wl]===!0}[Wl]=!0},_l=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW"),Ti=class extends te{constructor(A){super(A),this.name="HeadersOverflowError",this.message=A||"Headers Overflow Error",this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](A){return A&&A[_l]===!0}[_l]=!0},Kl=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT"),xi=class extends te{constructor(A){super(A),this.name="BodyTimeoutError",this.message=A||"Body Timeout Error",this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](A){return A&&A[Kl]===!0}[Kl]=!0},Zl=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE"),vi=class extends te{constructor(A,t,r,n){super(A),this.name="ResponseStatusCodeError",this.message=A||"Response Status Code Error",this.code="UND_ERR_RESPONSE_STATUS_CODE",this.body=n,this.status=t,this.statusCode=t,this.headers=r}static[Symbol.hasInstance](A){return A&&A[Zl]===!0}[Zl]=!0},zl=Symbol.for("undici.error.UND_ERR_INVALID_ARG"),Yi=class extends te{constructor(A){super(A),this.name="InvalidArgumentError",this.message=A||"Invalid Argument Error",this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](A){return A&&A[zl]===!0}[zl]=!0},Xl=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE"),Gi=class extends te{constructor(A){super(A),this.name="InvalidReturnValueError",this.message=A||"Invalid Return Value Error",this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](A){return A&&A[Xl]===!0}[Xl]=!0},$l=Symbol.for("undici.error.UND_ERR_ABORT"),ns=class extends te{constructor(A){super(A),this.name="AbortError",this.message=A||"The operation was aborted",this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](A){return A&&A[$l]===!0}[$l]=!0},jl=Symbol.for("undici.error.UND_ERR_ABORTED"),Ji=class extends ns{constructor(A){super(A),this.name="AbortError",this.message=A||"Request aborted",this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](A){return A&&A[jl]===!0}[jl]=!0},eg=Symbol.for("undici.error.UND_ERR_INFO"),Hi=class extends te{constructor(A){super(A),this.name="InformationalError",this.message=A||"Request information",this.code="UND_ERR_INFO"}static[Symbol.hasInstance](A){return A&&A[eg]===!0}[eg]=!0},Ag=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"),Vi=class extends te{constructor(A){super(A),this.name="RequestContentLengthMismatchError",this.message=A||"Request body length does not match content-length header",this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[Ag]===!0}[Ag]=!0},tg=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH"),qi=class extends te{constructor(A){super(A),this.name="ResponseContentLengthMismatchError",this.message=A||"Response body length does not match content-length header",this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](A){return A&&A[tg]===!0}[tg]=!0},rg=Symbol.for("undici.error.UND_ERR_DESTROYED"),Oi=class extends te{constructor(A){super(A),this.name="ClientDestroyedError",this.message=A||"The client is destroyed",this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](A){return A&&A[rg]===!0}[rg]=!0},ng=Symbol.for("undici.error.UND_ERR_CLOSED"),Pi=class extends te{constructor(A){super(A),this.name="ClientClosedError",this.message=A||"The client is closed",this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](A){return A&&A[ng]===!0}[ng]=!0},sg=Symbol.for("undici.error.UND_ERR_SOCKET"),Wi=class extends te{constructor(A,t){super(A),this.name="SocketError",this.message=A||"Socket error",this.code="UND_ERR_SOCKET",this.socket=t}static[Symbol.hasInstance](A){return A&&A[sg]===!0}[sg]=!0},og=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED"),_i=class extends te{constructor(A){super(A),this.name="NotSupportedError",this.message=A||"Not supported error",this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](A){return A&&A[og]===!0}[og]=!0},ig=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM"),Ki=class extends te{constructor(A){super(A),this.name="MissingUpstreamError",this.message=A||"No upstream has been added to the BalancedPool",this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](A){return A&&A[ig]===!0}[ig]=!0},ag=Symbol.for("undici.error.UND_ERR_HTTP_PARSER"),Zi=class extends Error{constructor(A,t,r){super(A),this.name="HTTPParserError",this.code=t?`HPE_${t}`:void 0,this.data=r?r.toString():void 0}static[Symbol.hasInstance](A){return A&&A[ag]===!0}[ag]=!0},cg=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE"),zi=class extends te{constructor(A){super(A),this.name="ResponseExceededMaxSizeError",this.message=A||"Response content exceeded max size",this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](A){return A&&A[cg]===!0}[cg]=!0},ug=Symbol.for("undici.error.UND_ERR_REQ_RETRY"),Xi=class extends te{constructor(A,t,{headers:r,data:n}){super(A),this.name="RequestRetryError",this.message=A||"Request retry error",this.code="UND_ERR_REQ_RETRY",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[ug]===!0}[ug]=!0},lg=Symbol.for("undici.error.UND_ERR_RESPONSE"),$i=class extends te{constructor(A,t,{headers:r,data:n}){super(A),this.name="ResponseError",this.message=A||"Response error",this.code="UND_ERR_RESPONSE",this.statusCode=t,this.data=n,this.headers=r}static[Symbol.hasInstance](A){return A&&A[lg]===!0}[lg]=!0},gg=Symbol.for("undici.error.UND_ERR_PRX_TLS"),ji=class extends te{constructor(A,t,r){super(t,{cause:A,...r??{}}),this.name="SecureProxyConnectionError",this.message=t||"Secure Proxy Connection failed",this.code="UND_ERR_PRX_TLS",this.cause=A}static[Symbol.hasInstance](A){return A&&A[gg]===!0}[gg]=!0},Eg=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"),ea=class extends te{constructor(A){super(A),this.name="MessageSizeExceededError",this.message=A||"Max decompressed message size exceeded",this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](A){return A&&A[Eg]===!0}get[Eg](){return!0}};Qg.exports={AbortError:ns,HTTPParserError:Zi,UndiciError:te,HeadersTimeoutError:Li,HeadersOverflowError:Ti,BodyTimeoutError:xi,RequestContentLengthMismatchError:Vi,ConnectTimeoutError:Mi,ResponseStatusCodeError:vi,InvalidArgumentError:Yi,InvalidReturnValueError:Gi,RequestAbortedError:Ji,ClientDestroyedError:Oi,ClientClosedError:Pi,InformationalError:Hi,SocketError:Wi,NotSupportedError:_i,ResponseContentLengthMismatchError:qi,BalancedPoolMissingUpstreamError:Ki,ResponseExceededMaxSizeError:zi,RequestRetryError:Xi,ResponseError:$i,SecureProxyConnectionError:ji,MessageSizeExceededError:ea}});var os=f((w2,Bg)=>{"use strict";var ss={},Aa=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e<Aa.length;++e){let A=Aa[e],t=A.toLowerCase();ss[A]=ss[t]=t}Object.setPrototypeOf(ss,null);Bg.exports={wellknownHeaderNames:Aa,headerNameLowerCasedRecord:ss}});var dg=f((m2,Cg)=>{"use strict";var{wellknownHeaderNames:Ig,headerNameLowerCasedRecord:mp}=os(),ta=class e{value=null;left=null;middle=null;right=null;code;constructor(A,t,r){if(r===void 0||r>=A.length)throw new TypeError("Unreachable");if((this.code=A.charCodeAt(r))>127)throw new TypeError("key must be ascii string");A.length!==++r?this.middle=new e(A,t,r):this.value=t}add(A,t){let r=A.length;if(r===0)throw new TypeError("Unreachable");let n=0,s=this;for(;;){let o=A.charCodeAt(n);if(o>127)throw new TypeError("key must be ascii string");if(s.code===o)if(r===++n){s.value=t;break}else if(s.middle!==null)s=s.middle;else{s.middle=new e(A,t,n);break}else if(s.code<o)if(s.left!==null)s=s.left;else{s.left=new e(A,t,n);break}else if(s.right!==null)s=s.right;else{s.right=new e(A,t,n);break}}}search(A){let t=A.length,r=0,n=this;for(;n!==null&&r<t;){let s=A[r];for(s<=90&&s>=65&&(s|=32);n!==null;){if(s===n.code){if(t===++r)return n;n=n.middle;break}n=n.code<s?n.left:n.right}}return null}},is=class{node=null;insert(A,t){this.node===null?this.node=new ta(A,t,0):this.node.add(A,t)}lookup(A){return this.node?.search(A)?.value??null}},hg=new is;for(let e=0;e<Ig.length;++e){let A=mp[Ig[e]];hg.insert(A,A)}Cg.exports={TernarySearchTree:is,tree:hg}});var Y=f((y2,Tg)=>{"use strict";var qr=d("node:assert"),{kDestroyed:pg,kBodyUsed:Vt,kListeners:ra,kBody:fg}=Ae(),{IncomingMessage:yp}=d("node:http"),us=d("node:stream"),bp=d("node:net"),{Blob:Dp}=d("node:buffer"),kp=d("node:util"),{stringify:Rp}=d("node:querystring"),{EventEmitter:Sp}=d("node:events"),{InvalidArgumentError:Qe}=q(),{headerNameLowerCasedRecord:Fp}=os(),{tree:wg}=dg(),[Np,Up]=process.versions.node.split(".").map(e=>Number(e)),cs=class{constructor(A){this[fg]=A,this[Vt]=!1}async*[Symbol.asyncIterator](){qr(!this[Vt],"disturbed"),this[Vt]=!0,yield*this[fg]}};function Mp(e){return ls(e)?(kg(e)===0&&e.on("data",function(){qr(!1)}),typeof e.readableDidRead!="boolean"&&(e[Vt]=!1,Sp.prototype.on.call(e,"data",function(){this[Vt]=!0})),e):e&&typeof e.pipeTo=="function"?new cs(e):e&&typeof e!="string"&&!ArrayBuffer.isView(e)&&Dg(e)?new cs(e):e}function Lp(){}function ls(e){return e&&typeof e=="object"&&typeof e.pipe=="function"&&typeof e.on=="function"}function mg(e){if(e===null)return!1;if(e instanceof Dp)return!0;if(typeof e!="object")return!1;{let A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream=="function"||"arrayBuffer"in e&&typeof e.arrayBuffer=="function")}}function Tp(e,A){if(e.includes("?")||e.includes("#"))throw new Error('Query params cannot be passed when url already contains "?" or "#".');let t=Rp(A);return t&&(e+="?"+t),e}function yg(e){let A=parseInt(e,10);return A===Number(e)&&A>=0&&A<=65535}function as(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function bg(e){if(typeof e=="string"){if(e=new URL(e),!as(e.origin||e.protocol))throw new Qe("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}if(!e||typeof e!="object")throw new Qe("Invalid URL: The URL argument must be a non-null object.");if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&yg(e.port)===!1)throw new Qe("Invalid URL: port must be a valid integer or a string representation of an integer.");if(e.path!=null&&typeof e.path!="string")throw new Qe("Invalid URL path: the path must be a string or null/undefined.");if(e.pathname!=null&&typeof e.pathname!="string")throw new Qe("Invalid URL pathname: the pathname must be a string or null/undefined.");if(e.hostname!=null&&typeof e.hostname!="string")throw new Qe("Invalid URL hostname: the hostname must be a string or null/undefined.");if(e.origin!=null&&typeof e.origin!="string")throw new Qe("Invalid URL origin: the origin must be a string or null/undefined.");if(!as(e.origin||e.protocol))throw new Qe("Invalid URL protocol: the URL must start with `http:` or `https:`.");let A=e.port!=null?e.port:e.protocol==="https:"?443:80,t=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${A}`,r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;return t[t.length-1]==="/"&&(t=t.slice(0,t.length-1)),r&&r[0]!=="/"&&(r=`/${r}`),new URL(`${t}${r}`)}if(!as(e.origin||e.protocol))throw new Qe("Invalid URL protocol: the URL must start with `http:` or `https:`.");return e}function xp(e){if(e=bg(e),e.pathname!=="/"||e.search||e.hash)throw new Qe("invalid url");return e}function vp(e){if(e[0]==="["){let t=e.indexOf("]");return qr(t!==-1),e.substring(1,t)}let A=e.indexOf(":");return A===-1?e:e.substring(0,A)}function Yp(e){if(!e)return null;qr(typeof e=="string");let A=vp(e);return bp.isIP(A)?"":A}function Gp(e){return JSON.parse(JSON.stringify(e))}function Jp(e){return e!=null&&typeof e[Symbol.asyncIterator]=="function"}function Dg(e){return e!=null&&(typeof e[Symbol.iterator]=="function"||typeof e[Symbol.asyncIterator]=="function")}function kg(e){if(e==null)return 0;if(ls(e)){let A=e._readableState;return A&&A.objectMode===!1&&A.ended===!0&&Number.isFinite(A.length)?A.length:null}else{if(mg(e))return e.size!=null?e.size:null;if(Fg(e))return e.byteLength}return null}function Rg(e){return e&&!!(e.destroyed||e[pg]||us.isDestroyed?.(e))}function Hp(e,A){e==null||!ls(e)||Rg(e)||(typeof e.destroy=="function"?(Object.getPrototypeOf(e).constructor===yp&&(e.socket=null),e.destroy(A)):A&&queueMicrotask(()=>{e.emit("error",A)}),e.destroyed!==!0&&(e[pg]=!0))}var Vp=/timeout=(\d+)/;function qp(e){let A=e.toString().match(Vp);return A?parseInt(A[1],10)*1e3:null}function Sg(e){return typeof e=="string"?Fp[e]??e.toLowerCase():wg.lookup(e)??e.toString("latin1").toLowerCase()}function Op(e){return wg.lookup(e)??e.toString("latin1").toLowerCase()}function Pp(e,A){A===void 0&&(A={});for(let t=0;t<e.length;t+=2){let r=Sg(e[t]),n=A[r];if(n)typeof n=="string"&&(n=[n],A[r]=n),n.push(e[t+1].toString("utf8"));else{let s=e[t+1];typeof s=="string"?A[r]=s:A[r]=Array.isArray(s)?s.map(o=>o.toString("utf8")):s.toString("utf8")}}return"content-length"in A&&"content-disposition"in A&&(A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")),A}function Wp(e){let A=e.length,t=new Array(A),r=!1,n=-1,s,o,i=0;for(let a=0;a<e.length;a+=2)s=e[a],o=e[a+1],typeof s!="string"&&(s=s.toString()),typeof o!="string"&&(o=o.toString("utf8")),i=s.length,i===14&&s[7]==="-"&&(s==="content-length"||s.toLowerCase()==="content-length")?r=!0:i===19&&s[7]==="-"&&(s==="content-disposition"||s.toLowerCase()==="content-disposition")&&(n=a+1),t[a]=s,t[a+1]=o;return r&&n!==-1&&(t[n]=Buffer.from(t[n]).toString("latin1")),t}function Fg(e){return e instanceof Uint8Array||Buffer.isBuffer(e)}function _p(e,A,t){if(!e||typeof e!="object")throw new Qe("handler must be an object");if(typeof e.onConnect!="function")throw new Qe("invalid onConnect method");if(typeof e.onError!="function")throw new Qe("invalid onError method");if(typeof e.onBodySent!="function"&&e.onBodySent!==void 0)throw new Qe("invalid onBodySent method");if(t||A==="CONNECT"){if(typeof e.onUpgrade!="function")throw new Qe("invalid onUpgrade method")}else{if(typeof e.onHeaders!="function")throw new Qe("invalid onHeaders method");if(typeof e.onData!="function")throw new Qe("invalid onData method");if(typeof e.onComplete!="function")throw new Qe("invalid onComplete method")}}function Kp(e){return!!(e&&(us.isDisturbed(e)||e[Vt]))}function Zp(e){return!!(e&&us.isErrored(e))}function zp(e){return!!(e&&us.isReadable(e))}function Xp(e){return{localAddress:e.localAddress,localPort:e.localPort,remoteAddress:e.remoteAddress,remotePort:e.remotePort,remoteFamily:e.remoteFamily,timeout:e.timeout,bytesWritten:e.bytesWritten,bytesRead:e.bytesRead}}function $p(e){let A;return new ReadableStream({async start(){A=e[Symbol.asyncIterator]()},async pull(t){let{done:r,value:n}=await A.next();if(r)queueMicrotask(()=>{t.close(),t.byobRequest?.respond(0)});else{let s=Buffer.isBuffer(n)?n:Buffer.from(n);s.byteLength&&t.enqueue(new Uint8Array(s))}return t.desiredSize>0},async cancel(t){await A.return()},type:"bytes"})}function jp(e){return e&&typeof e=="object"&&typeof e.append=="function"&&typeof e.delete=="function"&&typeof e.get=="function"&&typeof e.getAll=="function"&&typeof e.has=="function"&&typeof e.set=="function"&&e[Symbol.toStringTag]==="FormData"}function ew(e,A){return"addEventListener"in e?(e.addEventListener("abort",A,{once:!0}),()=>e.removeEventListener("abort",A)):(e.addListener("abort",A),()=>e.removeListener("abort",A))}var Aw=typeof String.prototype.toWellFormed=="function",tw=typeof String.prototype.isWellFormed=="function";function Ng(e){return Aw?`${e}`.toWellFormed():kp.toUSVString(e)}function rw(e){return tw?`${e}`.isWellFormed():Ng(e)===`${e}`}function Ug(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return!1;default:return e>=33&&e<=126}}function nw(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A)if(!Ug(e.charCodeAt(A)))return!1;return!0}var sw=/[^\t\x20-\x7e\x80-\xff]/;function ow(e){return!sw.test(e)}function iw(e){if(e==null||e==="")return{start:0,end:null,size:null};let A=e?e.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return A?{start:parseInt(A[1]),end:A[2]?parseInt(A[2]):null,size:A[3]?parseInt(A[3]):null}:null}function aw(e,A,t){return(e[ra]??=[]).push([A,t]),e.on(A,t),e}function cw(e){for(let[A,t]of e[ra]??[])e.removeListener(A,t);e[ra]=null}function uw(e,A,t){try{A.onError(t),qr(A.aborted)}catch(r){e.emit("error",r)}}var Mg=Object.create(null);Mg.enumerable=!0;var na={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},Lg={...na,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(na,null);Object.setPrototypeOf(Lg,null);Tg.exports={kEnumerableProperty:Mg,nop:Lp,isDisturbed:Kp,isErrored:Zp,isReadable:zp,toUSVString:Ng,isUSVString:rw,isBlobLike:mg,parseOrigin:xp,parseURL:bg,getServerName:Yp,isStream:ls,isIterable:Dg,isAsyncIterable:Jp,isDestroyed:Rg,headerNameToString:Sg,bufferToLowerCasedHeaderName:Op,addListener:aw,removeAllListeners:cw,errorRequest:uw,parseRawHeaders:Wp,parseHeaders:Pp,parseKeepAliveTimeout:qp,destroy:Hp,bodyLength:kg,deepClone:Gp,ReadableStreamFrom:$p,isBuffer:Fg,validateHandler:_p,getSocketInfo:Xp,isFormDataLike:jp,buildURL:Tp,addAbortListener:ew,isValidHTTPToken:nw,isValidHeaderValue:ow,isTokenCharCode:Ug,parseRangeHeader:iw,normalizedMethodRecordsBase:na,normalizedMethodRecords:Lg,isValidPort:yg,isHttpOrHttpsPrefixed:as,nodeMajor:Np,nodeMinor:Up,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"],wrapRequestBody:Mp}});var qt=f((b2,vg)=>{"use strict";var _=d("node:diagnostics_channel"),oa=d("node:util"),gs=oa.debuglog("undici"),sa=oa.debuglog("fetch"),lt=oa.debuglog("websocket"),xg=!1,lw={beforeConnect:_.channel("undici:client:beforeConnect"),connected:_.channel("undici:client:connected"),connectError:_.channel("undici:client:connectError"),sendHeaders:_.channel("undici:client:sendHeaders"),create:_.channel("undici:request:create"),bodySent:_.channel("undici:request:bodySent"),headers:_.channel("undici:request:headers"),trailers:_.channel("undici:request:trailers"),error:_.channel("undici:request:error"),open:_.channel("undici:websocket:open"),close:_.channel("undici:websocket:close"),socketError:_.channel("undici:websocket:socket_error"),ping:_.channel("undici:websocket:ping"),pong:_.channel("undici:websocket:pong")};if(gs.enabled||sa.enabled){let e=sa.enabled?sa:gs;_.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),_.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s using %s%s",`${s}${n?`:${n}`:""}`,r,t)}),_.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:o}=A;e("connection to %s using %s%s errored - %s",`${s}${n?`:${n}`:""}`,r,t,o.message)}),_.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)}),_.channel("undici:request:headers").subscribe(A=>{let{request:{method:t,path:r,origin:n},response:{statusCode:s}}=A;e("received response to %s %s/%s - HTTP %d",t,n,r,s)}),_.channel("undici:request:trailers").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("trailers received from %s %s/%s",t,n,r)}),_.channel("undici:request:error").subscribe(A=>{let{request:{method:t,path:r,origin:n},error:s}=A;e("request to %s %s/%s errored - %s",t,n,r,s.message)}),xg=!0}if(lt.enabled){if(!xg){let e=gs.enabled?gs:lt;_.channel("undici:client:beforeConnect").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connecting to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),_.channel("undici:client:connected").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s}}=A;e("connected to %s%s using %s%s",s,n?`:${n}`:"",r,t)}),_.channel("undici:client:connectError").subscribe(A=>{let{connectParams:{version:t,protocol:r,port:n,host:s},error:o}=A;e("connection to %s%s using %s%s errored - %s",s,n?`:${n}`:"",r,t,o.message)}),_.channel("undici:client:sendHeaders").subscribe(A=>{let{request:{method:t,path:r,origin:n}}=A;e("sending request to %s %s/%s",t,n,r)})}_.channel("undici:websocket:open").subscribe(e=>{let{address:{address:A,port:t}}=e;lt("connection opened %s%s",A,t?`:${t}`:"")}),_.channel("undici:websocket:close").subscribe(e=>{let{websocket:A,code:t,reason:r}=e;lt("closed connection to %s - %s %s",A.url,t,r)}),_.channel("undici:websocket:socket_error").subscribe(e=>{lt("connection errored - %s",e.message)}),_.channel("undici:websocket:ping").subscribe(e=>{lt("ping received")}),_.channel("undici:websocket:pong").subscribe(e=>{lt("pong received")})}vg.exports={channels:lw}});var Hg=f((D2,Jg)=>{"use strict";var{InvalidArgumentError:z,NotSupportedError:gw}=q(),bA=d("node:assert"),{isValidHTTPToken:Gg,isValidHeaderValue:Or,isStream:Ew,destroy:Qw,isBuffer:Bw,isFormDataLike:Iw,isIterable:hw,isBlobLike:Cw,buildURL:dw,validateHandler:fw,getServerName:pw,normalizedMethodRecords:ww}=Y(),{channels:gA}=qt(),{headerNameLowerCasedRecord:Yg}=os(),mw=/[^\u0021-\u00ff]/,Oe=Symbol("handler"),ia=class{constructor(A,{path:t,method:r,body:n,headers:s,query:o,idempotent:i,blocking:a,upgrade:c,headersTimeout:g,bodyTimeout:u,reset:l,throwOnError:E,expectContinue:Q,servername:h},B){if(typeof t!="string")throw new z("path must be a string");if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&r!=="CONNECT")throw new z("path must be an absolute URL or start with a slash");if(mw.test(t))throw new z("invalid request path");if(typeof r!="string")throw new z("method must be a string");if(ww[r]===void 0&&!Gg(r))throw new z("invalid request method");if(c&&typeof c!="string")throw new z("upgrade must be a string");if(c&&!Or(c))throw new z("invalid upgrade header");if(g!=null&&(!Number.isFinite(g)||g<0))throw new z("invalid headersTimeout");if(u!=null&&(!Number.isFinite(u)||u<0))throw new z("invalid bodyTimeout");if(l!=null&&typeof l!="boolean")throw new z("invalid reset");if(Q!=null&&typeof Q!="boolean")throw new z("invalid expectContinue");if(this.headersTimeout=g,this.bodyTimeout=u,this.throwOnError=E===!0,this.method=r,this.abort=null,n==null)this.body=null;else if(Ew(n)){this.body=n;let I=this.body._readableState;(!I||!I.autoDestroy)&&(this.endHandler=function(){Qw(this)},this.body.on("end",this.endHandler)),this.errorHandler=C=>{this.abort?this.abort(C):this.error=C},this.body.on("error",this.errorHandler)}else if(Bw(n))this.body=n.byteLength?n:null;else if(ArrayBuffer.isView(n))this.body=n.buffer.byteLength?Buffer.from(n.buffer,n.byteOffset,n.byteLength):null;else if(n instanceof ArrayBuffer)this.body=n.byteLength?Buffer.from(n):null;else if(typeof n=="string")this.body=n.length?Buffer.from(n):null;else if(Iw(n)||hw(n)||Cw(n))this.body=n;else throw new z("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=c||null,this.path=o?dw(t,o):t,this.origin=A,this.idempotent=i??(r==="HEAD"||r==="GET"),this.blocking=a??!1,this.reset=l??null,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=Q??!1,Array.isArray(s)){if(s.length%2!==0)throw new z("headers array must be even");for(let I=0;I<s.length;I+=2)Es(this,s[I],s[I+1])}else if(s&&typeof s=="object")if(s[Symbol.iterator])for(let I of s){if(!Array.isArray(I)||I.length!==2)throw new z("headers must be in key-value pair format");Es(this,I[0],I[1])}else{let I=Object.keys(s);for(let C=0;C<I.length;++C)Es(this,I[C],s[I[C]])}else if(s!=null)throw new z("headers must be an object or an array");fw(B,r,c),this.servername=h||pw(this.host),this[Oe]=B,gA.create.hasSubscribers&&gA.create.publish({request:this})}onBodySent(A){if(this[Oe].onBodySent)try{return this[Oe].onBodySent(A)}catch(t){this.abort(t)}}onRequestSent(){if(gA.bodySent.hasSubscribers&&gA.bodySent.publish({request:this}),this[Oe].onRequestSent)try{return this[Oe].onRequestSent()}catch(A){this.abort(A)}}onConnect(A){if(bA(!this.aborted),bA(!this.completed),this.error)A(this.error);else return this.abort=A,this[Oe].onConnect(A)}onResponseStarted(){return this[Oe].onResponseStarted?.()}onHeaders(A,t,r,n){bA(!this.aborted),bA(!this.completed),gA.headers.hasSubscribers&&gA.headers.publish({request:this,response:{statusCode:A,headers:t,statusText:n}});try{return this[Oe].onHeaders(A,t,r,n)}catch(s){this.abort(s)}}onData(A){bA(!this.aborted),bA(!this.completed);try{return this[Oe].onData(A)}catch(t){return this.abort(t),!1}}onUpgrade(A,t,r){return bA(!this.aborted),bA(!this.completed),this[Oe].onUpgrade(A,t,r)}onComplete(A){this.onFinally(),bA(!this.aborted),this.completed=!0,gA.trailers.hasSubscribers&&gA.trailers.publish({request:this,trailers:A});try{return this[Oe].onComplete(A)}catch(t){this.onError(t)}}onError(A){if(this.onFinally(),gA.error.hasSubscribers&&gA.error.publish({request:this,error:A}),!this.aborted)return this.aborted=!0,this[Oe].onError(A)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(A,t){return Es(this,A,t),this}};function Es(e,A,t){if(t&&typeof t=="object"&&!Array.isArray(t))throw new z(`invalid ${A} header`);if(t===void 0)return;let r=Yg[A];if(r===void 0&&(r=A.toLowerCase(),Yg[r]===void 0&&!Gg(r)))throw new z("invalid header key");if(Array.isArray(t)){let n=[];for(let s=0;s<t.length;s++)if(typeof t[s]=="string"){if(!Or(t[s]))throw new z(`invalid ${A} header`);n.push(t[s])}else if(t[s]===null)n.push("");else{if(typeof t[s]=="object")throw new z(`invalid ${A} header`);{let o=`${t[s]}`;if(!Or(o))throw new z(`invalid ${A} header`);n.push(o)}}t=n}else if(typeof t=="string"){if(!Or(t))throw new z(`invalid ${A} header`)}else if(t===null)t="";else if(t=`${t}`,!Or(t))throw new z(`invalid ${A} header`);if(r==="host"){if(e.host!==null)throw new z("duplicate host header");if(typeof t!="string")throw new z("invalid host header");e.host=t}else if(r==="content-length"){if(e.contentLength!==null)throw new z("duplicate content-length header");if(e.contentLength=parseInt(t,10),!Number.isFinite(e.contentLength))throw new z("invalid content-length header")}else if(e.contentType===null&&r==="content-type")e.contentType=t,e.headers.push(A,t);else{if(r==="transfer-encoding"||r==="keep-alive"||r==="upgrade")throw new z(`invalid ${r} header`);if(r==="connection"){let n=typeof t=="string"?t.toLowerCase():null;if(n!=="close"&&n!=="keep-alive")throw new z("invalid connection header");n==="close"&&(e.reset=!0)}else{if(r==="expect")throw new gw("expect header not supported");e.headers.push(A,t)}}}Jg.exports=ia});var Pr=f((k2,Vg)=>{"use strict";var yw=d("node:events"),Qs=class extends yw{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...A){let t=Array.isArray(A[0])?A[0]:A,r=this.dispatch.bind(this);for(let n of t)if(n!=null){if(typeof n!="function")throw new TypeError(`invalid interceptor, expected function received ${typeof n}`);if(r=n(r),r==null||typeof r!="function"||r.length!==2)throw new TypeError("invalid interceptor")}return new aa(this,r)}},aa=class extends Qs{#e=null;#A=null;constructor(A,t){super(),this.#e=A,this.#A=t}dispatch(...A){this.#A(...A)}close(...A){return this.#e.close(...A)}destroy(...A){return this.#e.destroy(...A)}};Vg.exports=Qs});var _t=f((R2,qg)=>{"use strict";var bw=Pr(),{ClientDestroyedError:ca,ClientClosedError:Dw,InvalidArgumentError:Ot}=q(),{kDestroy:kw,kClose:Rw,kClosed:Wr,kDestroyed:Pt,kDispatch:ua,kInterceptors:gt}=Ae(),DA=Symbol("onDestroyed"),Wt=Symbol("onClosed"),Bs=Symbol("Intercepted Dispatch"),la=Symbol("webSocketOptions"),ga=class extends bw{constructor(A){super(),this[Pt]=!1,this[DA]=null,this[Wr]=!1,this[Wt]=[],this[la]=A?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[la].maxFragments??131072,maxPayloadSize:this[la].maxPayloadSize??128*1024*1024}}get destroyed(){return this[Pt]}get closed(){return this[Wr]}get interceptors(){return this[gt]}set interceptors(A){if(A){for(let t=A.length-1;t>=0;t--)if(typeof this[gt][t]!="function")throw new Ot("interceptor must be an function")}this[gt]=A}close(A){if(A===void 0)return new Promise((r,n)=>{this.close((s,o)=>s?n(s):r(o))});if(typeof A!="function")throw new Ot("invalid callback");if(this[Pt]){queueMicrotask(()=>A(new ca,null));return}if(this[Wr]){this[Wt]?this[Wt].push(A):queueMicrotask(()=>A(null,null));return}this[Wr]=!0,this[Wt].push(A);let t=()=>{let r=this[Wt];this[Wt]=null;for(let n=0;n<r.length;n++)r[n](null,null)};this[Rw]().then(()=>this.destroy()).then(()=>{queueMicrotask(t)})}destroy(A,t){if(typeof A=="function"&&(t=A,A=null),t===void 0)return new Promise((n,s)=>{this.destroy(A,(o,i)=>o?s(o):n(i))});if(typeof t!="function")throw new Ot("invalid callback");if(this[Pt]){this[DA]?this[DA].push(t):queueMicrotask(()=>t(null,null));return}A||(A=new ca),this[Pt]=!0,this[DA]=this[DA]||[],this[DA].push(t);let r=()=>{let n=this[DA];this[DA]=null;for(let s=0;s<n.length;s++)n[s](null,null)};this[kw](A).then(()=>{queueMicrotask(r)})}[Bs](A,t){if(!this[gt]||this[gt].length===0)return this[Bs]=this[ua],this[ua](A,t);let r=this[ua].bind(this);for(let n=this[gt].length-1;n>=0;n--)r=this[gt][n](r);return this[Bs]=r,r(A,t)}dispatch(A,t){if(!t||typeof t!="object")throw new Ot("handler must be an object");try{if(!A||typeof A!="object")throw new Ot("opts must be an object.");if(this[Pt]||this[DA])throw new ca;if(this[Wr])throw new Dw;return this[Bs](A,t)}catch(r){if(typeof t.onError!="function")throw new Ot("invalid onError method");return t.onError(r),!1}}};qg.exports=ga});var da=f((S2,_g)=>{"use strict";var Kt=0,Ea=1e3,Qa=(Ea>>1)-1,kA,Ba=Symbol("kFastTimer"),RA=[],Ia=-2,ha=-1,Pg=0,Og=1;function Ca(){Kt+=Qa;let e=0,A=RA.length;for(;e<A;){let t=RA[e];t._state===Pg?(t._idleStart=Kt-Qa,t._state=Og):t._state===Og&&Kt>=t._idleStart+t._idleTimeout&&(t._state=ha,t._idleStart=-1,t._onTimeout(t._timerArg)),t._state===ha?(t._state=Ia,--A!==0&&(RA[e]=RA[A])):++e}RA.length=A,RA.length!==0&&Wg()}function Wg(){kA?kA.refresh():(clearTimeout(kA),kA=setTimeout(Ca,Qa),kA.unref&&kA.unref())}var Is=class{[Ba]=!0;_state=Ia;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(A,t,r){this._onTimeout=A,this._idleTimeout=t,this._timerArg=r,this.refresh()}refresh(){this._state===Ia&&RA.push(this),(!kA||RA.length===1)&&Wg(),this._state=Pg}clear(){this._state=ha,this._idleStart=-1}};_g.exports={setTimeout(e,A,t){return A<=Ea?setTimeout(e,A,t):new Is(e,A,t)},clearTimeout(e){e[Ba]?e.clear():clearTimeout(e)},setFastTimeout(e,A,t){return new Is(e,A,t)},clearFastTimeout(e){e.clear()},now(){return Kt},tick(e=0){Kt+=e-Ea+1,Ca(),Ca()},reset(){Kt=0,RA.length=0,clearTimeout(kA),kA=null},kFastTimer:Ba}});var _r=f((U2,$g)=>{"use strict";var Sw=d("node:net"),Kg=d("node:assert"),Xg=Y(),{InvalidArgumentError:Fw,ConnectTimeoutError:Nw}=q(),hs=da();function Zg(){}var fa,pa;global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)?pa=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map,this._sessionRegistry=new global.FinalizationRegistry(t=>{if(this._sessionCache.size<this._maxCachedSessions)return;let r=this._sessionCache.get(t);r!==void 0&&r.deref()===void 0&&this._sessionCache.delete(t)})}get(A){let t=this._sessionCache.get(A);return t?t.deref():null}set(A,t){this._maxCachedSessions!==0&&(this._sessionCache.set(A,new WeakRef(t)),this._sessionRegistry.register(t,A))}}:pa=class{constructor(A){this._maxCachedSessions=A,this._sessionCache=new Map}get(A){return this._sessionCache.get(A)}set(A,t){if(this._maxCachedSessions!==0){if(this._sessionCache.size>=this._maxCachedSessions){let{value:r}=this._sessionCache.keys().next();this._sessionCache.delete(r)}this._sessionCache.set(A,t)}}};function Uw({allowH2:e,maxCachedSessions:A,socketPath:t,timeout:r,session:n,...s}){if(A!=null&&(!Number.isInteger(A)||A<0))throw new Fw("maxCachedSessions must be a positive integer or zero");let o={path:t,...s},i=new pa(A??100);return r=r??1e4,e=e??!1,function({hostname:c,host:g,protocol:u,port:l,servername:E,localAddress:Q,httpSocket:h},B){let I;if(u==="https:"){fa||(fa=d("node:tls")),E=E||o.servername||Xg.getServerName(g)||null;let p=E||c;Kg(p);let w=n||i.get(p)||null;l=l||443,I=fa.connect({highWaterMark:16384,...o,servername:E,session:w,localAddress:Q,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:h,port:l,host:c}),I.on("session",function(R){i.set(p,R)})}else Kg(!h,"httpSocket can only be sent on TLS update"),l=l||80,I=Sw.connect({highWaterMark:64*1024,...o,localAddress:Q,port:l,host:c});if(o.keepAlive==null||o.keepAlive){let p=o.keepAliveInitialDelay===void 0?6e4:o.keepAliveInitialDelay;I.setKeepAlive(!0,p)}let C=Mw(new WeakRef(I),{timeout:r,hostname:c,port:l});return I.setNoDelay(!0).once(u==="https:"?"secureConnect":"connect",function(){if(queueMicrotask(C),B){let p=B;B=null,p(null,this)}}).on("error",function(p){if(queueMicrotask(C),B){let w=B;B=null,w(p)}}),I}}var Mw=process.platform==="win32"?(e,A)=>{if(!A.timeout)return Zg;let t=null,r=null,n=hs.setFastTimeout(()=>{t=setImmediate(()=>{r=setImmediate(()=>zg(e.deref(),A))})},A.timeout);return()=>{hs.clearFastTimeout(n),clearImmediate(t),clearImmediate(r)}}:(e,A)=>{if(!A.timeout)return Zg;let t=null,r=hs.setFastTimeout(()=>{t=setImmediate(()=>{zg(e.deref(),A)})},A.timeout);return()=>{hs.clearFastTimeout(r),clearImmediate(t)}};function zg(e,A){if(e==null)return;let t="Connect Timeout Error";Array.isArray(e.autoSelectFamilyAttemptedAddresses)?t+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`:t+=` (attempted address: ${A.hostname}:${A.port},`,t+=` timeout: ${A.timeout}ms)`,Xg.destroy(e,new Nw(t))}$g.exports=Uw});var jg=f(Cs=>{"use strict";Object.defineProperty(Cs,"__esModule",{value:!0});Cs.enumToMap=void 0;function Lw(e){let A={};return Object.keys(e).forEach(t=>{let r=e[t];typeof r=="number"&&(A[t]=r)}),A}Cs.enumToMap=Lw});var eE=f(y=>{"use strict";Object.defineProperty(y,"__esModule",{value:!0});y.SPECIAL_HEADERS=y.HEADER_STATE=y.MINOR=y.MAJOR=y.CONNECTION_TOKEN_CHARS=y.HEADER_CHARS=y.TOKEN=y.STRICT_TOKEN=y.HEX=y.URL_CHAR=y.STRICT_URL_CHAR=y.USERINFO_CHARS=y.MARK=y.ALPHANUM=y.NUM=y.HEX_MAP=y.NUM_MAP=y.ALPHA=y.FINISH=y.H_METHOD_MAP=y.METHOD_MAP=y.METHODS_RTSP=y.METHODS_ICE=y.METHODS_HTTP=y.METHODS=y.LENIENT_FLAGS=y.FLAGS=y.TYPE=y.ERROR=void 0;var Tw=jg(),xw;(function(e){e[e.OK=0]="OK",e[e.INTERNAL=1]="INTERNAL",e[e.STRICT=2]="STRICT",e[e.LF_EXPECTED=3]="LF_EXPECTED",e[e.UNEXPECTED_CONTENT_LENGTH=4]="UNEXPECTED_CONTENT_LENGTH",e[e.CLOSED_CONNECTION=5]="CLOSED_CONNECTION",e[e.INVALID_METHOD=6]="INVALID_METHOD",e[e.INVALID_URL=7]="INVALID_URL",e[e.INVALID_CONSTANT=8]="INVALID_CONSTANT",e[e.INVALID_VERSION=9]="INVALID_VERSION",e[e.INVALID_HEADER_TOKEN=10]="INVALID_HEADER_TOKEN",e[e.INVALID_CONTENT_LENGTH=11]="INVALID_CONTENT_LENGTH",e[e.INVALID_CHUNK_SIZE=12]="INVALID_CHUNK_SIZE",e[e.INVALID_STATUS=13]="INVALID_STATUS",e[e.INVALID_EOF_STATE=14]="INVALID_EOF_STATE",e[e.INVALID_TRANSFER_ENCODING=15]="INVALID_TRANSFER_ENCODING",e[e.CB_MESSAGE_BEGIN=16]="CB_MESSAGE_BEGIN",e[e.CB_HEADERS_COMPLETE=17]="CB_HEADERS_COMPLETE",e[e.CB_MESSAGE_COMPLETE=18]="CB_MESSAGE_COMPLETE",e[e.CB_CHUNK_HEADER=19]="CB_CHUNK_HEADER",e[e.CB_CHUNK_COMPLETE=20]="CB_CHUNK_COMPLETE",e[e.PAUSED=21]="PAUSED",e[e.PAUSED_UPGRADE=22]="PAUSED_UPGRADE",e[e.PAUSED_H2_UPGRADE=23]="PAUSED_H2_UPGRADE",e[e.USER=24]="USER"})(xw=y.ERROR||(y.ERROR={}));var vw;(function(e){e[e.BOTH=0]="BOTH",e[e.REQUEST=1]="REQUEST",e[e.RESPONSE=2]="RESPONSE"})(vw=y.TYPE||(y.TYPE={}));var Yw;(function(e){e[e.CONNECTION_KEEP_ALIVE=1]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=2]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=4]="CONNECTION_UPGRADE",e[e.CHUNKED=8]="CHUNKED",e[e.UPGRADE=16]="UPGRADE",e[e.CONTENT_LENGTH=32]="CONTENT_LENGTH",e[e.SKIPBODY=64]="SKIPBODY",e[e.TRAILING=128]="TRAILING",e[e.TRANSFER_ENCODING=512]="TRANSFER_ENCODING"})(Yw=y.FLAGS||(y.FLAGS={}));var Gw;(function(e){e[e.HEADERS=1]="HEADERS",e[e.CHUNKED_LENGTH=2]="CHUNKED_LENGTH",e[e.KEEP_ALIVE=4]="KEEP_ALIVE"})(Gw=y.LENIENT_FLAGS||(y.LENIENT_FLAGS={}));var S;(function(e){e[e.DELETE=0]="DELETE",e[e.GET=1]="GET",e[e.HEAD=2]="HEAD",e[e.POST=3]="POST",e[e.PUT=4]="PUT",e[e.CONNECT=5]="CONNECT",e[e.OPTIONS=6]="OPTIONS",e[e.TRACE=7]="TRACE",e[e.COPY=8]="COPY",e[e.LOCK=9]="LOCK",e[e.MKCOL=10]="MKCOL",e[e.MOVE=11]="MOVE",e[e.PROPFIND=12]="PROPFIND",e[e.PROPPATCH=13]="PROPPATCH",e[e.SEARCH=14]="SEARCH",e[e.UNLOCK=15]="UNLOCK",e[e.BIND=16]="BIND",e[e.REBIND=17]="REBIND",e[e.UNBIND=18]="UNBIND",e[e.ACL=19]="ACL",e[e.REPORT=20]="REPORT",e[e.MKACTIVITY=21]="MKACTIVITY",e[e.CHECKOUT=22]="CHECKOUT",e[e.MERGE=23]="MERGE",e[e["M-SEARCH"]=24]="M-SEARCH",e[e.NOTIFY=25]="NOTIFY",e[e.SUBSCRIBE=26]="SUBSCRIBE",e[e.UNSUBSCRIBE=27]="UNSUBSCRIBE",e[e.PATCH=28]="PATCH",e[e.PURGE=29]="PURGE",e[e.MKCALENDAR=30]="MKCALENDAR",e[e.LINK=31]="LINK",e[e.UNLINK=32]="UNLINK",e[e.SOURCE=33]="SOURCE",e[e.PRI=34]="PRI",e[e.DESCRIBE=35]="DESCRIBE",e[e.ANNOUNCE=36]="ANNOUNCE",e[e.SETUP=37]="SETUP",e[e.PLAY=38]="PLAY",e[e.PAUSE=39]="PAUSE",e[e.TEARDOWN=40]="TEARDOWN",e[e.GET_PARAMETER=41]="GET_PARAMETER",e[e.SET_PARAMETER=42]="SET_PARAMETER",e[e.REDIRECT=43]="REDIRECT",e[e.RECORD=44]="RECORD",e[e.FLUSH=45]="FLUSH"})(S=y.METHODS||(y.METHODS={}));y.METHODS_HTTP=[S.DELETE,S.GET,S.HEAD,S.POST,S.PUT,S.CONNECT,S.OPTIONS,S.TRACE,S.COPY,S.LOCK,S.MKCOL,S.MOVE,S.PROPFIND,S.PROPPATCH,S.SEARCH,S.UNLOCK,S.BIND,S.REBIND,S.UNBIND,S.ACL,S.REPORT,S.MKACTIVITY,S.CHECKOUT,S.MERGE,S["M-SEARCH"],S.NOTIFY,S.SUBSCRIBE,S.UNSUBSCRIBE,S.PATCH,S.PURGE,S.MKCALENDAR,S.LINK,S.UNLINK,S.PRI,S.SOURCE];y.METHODS_ICE=[S.SOURCE];y.METHODS_RTSP=[S.OPTIONS,S.DESCRIBE,S.ANNOUNCE,S.SETUP,S.PLAY,S.PAUSE,S.TEARDOWN,S.GET_PARAMETER,S.SET_PARAMETER,S.REDIRECT,S.RECORD,S.FLUSH,S.GET,S.POST];y.METHOD_MAP=Tw.enumToMap(S);y.H_METHOD_MAP={};Object.keys(y.METHOD_MAP).forEach(e=>{/^H/.test(e)&&(y.H_METHOD_MAP[e]=y.METHOD_MAP[e])});var Jw;(function(e){e[e.SAFE=0]="SAFE",e[e.SAFE_WITH_CB=1]="SAFE_WITH_CB",e[e.UNSAFE=2]="UNSAFE"})(Jw=y.FINISH||(y.FINISH={}));y.ALPHA=[];for(let e=65;e<=90;e++)y.ALPHA.push(String.fromCharCode(e)),y.ALPHA.push(String.fromCharCode(e+32));y.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};y.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};y.NUM=["0","1","2","3","4","5","6","7","8","9"];y.ALPHANUM=y.ALPHA.concat(y.NUM);y.MARK=["-","_",".","!","~","*","'","(",")"];y.USERINFO_CHARS=y.ALPHANUM.concat(y.MARK).concat(["%",";",":","&","=","+","$",","]);y.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(y.ALPHANUM);y.URL_CHAR=y.STRICT_URL_CHAR.concat([" ","\f"]);for(let e=128;e<=255;e++)y.URL_CHAR.push(e);y.HEX=y.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);y.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(y.ALPHANUM);y.TOKEN=y.STRICT_TOKEN.concat([" "]);y.HEADER_CHARS=[" "];for(let e=32;e<=255;e++)e!==127&&y.HEADER_CHARS.push(e);y.CONNECTION_TOKEN_CHARS=y.HEADER_CHARS.filter(e=>e!==44);y.MAJOR=y.NUM_MAP;y.MINOR=y.MAJOR;var Zt;(function(e){e[e.GENERAL=0]="GENERAL",e[e.CONNECTION=1]="CONNECTION",e[e.CONTENT_LENGTH=2]="CONTENT_LENGTH",e[e.TRANSFER_ENCODING=3]="TRANSFER_ENCODING",e[e.UPGRADE=4]="UPGRADE",e[e.CONNECTION_KEEP_ALIVE=5]="CONNECTION_KEEP_ALIVE",e[e.CONNECTION_CLOSE=6]="CONNECTION_CLOSE",e[e.CONNECTION_UPGRADE=7]="CONNECTION_UPGRADE",e[e.TRANSFER_ENCODING_CHUNKED=8]="TRANSFER_ENCODING_CHUNKED"})(Zt=y.HEADER_STATE||(y.HEADER_STATE={}));y.SPECIAL_HEADERS={connection:Zt.CONNECTION,"content-length":Zt.CONTENT_LENGTH,"proxy-connection":Zt.CONNECTION,"transfer-encoding":Zt.TRANSFER_ENCODING,upgrade:Zt.UPGRADE}});var wa=f((T2,AE)=>{"use strict";var{Buffer:Hw}=d("node:buffer");AE.exports=Hw.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")});var rE=f((x2,tE)=>{"use strict";var{Buffer:Vw}=d("node:buffer");tE.exports=Vw.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxBACEDDKIBCyACQeQANgIcIAIgATYCFCACQeMXNgIQIAJBFTYCDEEAIQMMoQELIAJBADYCACAGQQFqIQEgAi0AKSIAQSNrQQtJDQQCQCAAQQZLDQBBASAAdEHKAHFFDQAMBQtBACEDIAJBADYCHCACIAE2AhQgAkH3CTYCECACQQg2AgwMoAELIAJBADYCACAGQQFqIQEgAi0AKUEhRg0DIAJBADYCHCACIAE2AhQgAkGbCjYCECACQQg2AgxBACEDDJ8BCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJBkDM2AhAgAkEINgIMDJ0BCyACQQA2AgAgBkEBaiEBIAItAClBI0kNACACQQA2AhwgAiABNgIUIAJB0wk2AhAgAkEINgIMQQAhAwycAQtB0QAhAwyCAQsgAS0AAEEwayIAQf8BcUEKSQRAIAIgADoAKiABQQFqIQFBzwAhAwyCAQsgAigCBCEAIAJBADYCBCACIAAgARAoIgBFDYYBIAJB3gA2AhwgAiABNgIUIAIgADYCDEEAIQMMmgELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ2GASACQdwANgIcIAIgATYCFCACIAA2AgxBACEDDJkBCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMhwELIAJB2gA2AhwgAiAFNgIUIAIgADYCDAyYAQtBACEBQQEhAwsgAiADOgArIAVBAWohAwJAAkACQCACLQAtQRBxDQACQAJAAkAgAi0AKg4DAQACBAsgBkUNAwwCCyAADQEMAgsgAUUNAQsgAigCBCEAIAJBADYCBCACIAAgAxAoIgBFBEAgAyEBDAILIAJB2AA2AhwgAiADNgIUIAIgADYCDEEAIQMMmAELIAIoAgQhACACQQA2AgQgAiAAIAMQKCIARQRAIAMhAQyHAQsgAkHZADYCHCACIAM2AhQgAiAANgIMQQAhAwyXAQtBzAAhAwx9CyAAQRVHBEAgAkEANgIcIAIgATYCFCACQZQNNgIQIAJBITYCDEEAIQMMlgELIAJB1wA2AhwgAiABNgIUIAJByRc2AhAgAkEVNgIMQQAhAwyVAQtBACEDIAJBADYCHCACIAE2AhQgAkGAETYCECACQQk2AgwMlAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0AIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMkwELQckAIQMMeQsgAkEANgIcIAIgATYCFCACQcEoNgIQIAJBBzYCDCACQQA2AgBBACEDDJEBCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAlIgBFDQAgAkHSADYCHCACIAE2AhQgAiAANgIMDJABC0HIACEDDHYLIAJBADYCACAFIQELIAJBgBI7ASogAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANAQtBxwAhAwxzCyAAQRVGBEAgAkHRADYCHCACIAE2AhQgAkHjFzYCECACQRU2AgxBACEDDIwBC0EAIQMgAkEANgIcIAIgATYCFCACQbkNNgIQIAJBGjYCDAyLAQtBACEDIAJBADYCHCACIAE2AhQgAkGgGTYCECACQR42AgwMigELIAEtAABBOkYEQCACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgBFDQEgAkHDADYCHCACIAA2AgwgAiABQQFqNgIUDIoBC0EAIQMgAkEANgIcIAIgATYCFCACQbERNgIQIAJBCjYCDAyJAQsgAUEBaiEBQTshAwxvCyACQcMANgIcIAIgADYCDCACIAFBAWo2AhQMhwELQQAhAyACQQA2AhwgAiABNgIUIAJB8A42AhAgAkEcNgIMDIYBCyACIAIvATBBEHI7ATAMZgsCQCACLwEwIgBBCHFFDQAgAi0AKEEBRw0AIAItAC1BCHFFDQMLIAIgAEH3+wNxQYAEcjsBMAwECyABIARHBEACQANAIAEtAABBMGsiAEH/AXFBCk8EQEE1IQMMbgsgAikDICIKQpmz5syZs+bMGVYNASACIApCCn4iCjcDICAKIACtQv8BgyILQn+FVg0BIAIgCiALfDcDICAEIAFBAWoiAUcNAAtBOSEDDIUBCyACKAIEIQBBACEDIAJBADYCBCACIAAgAUEBaiIBECoiAA0MDHcLQTkhAwyDAQsgAi0AMEEgcQ0GQcUBIQMMaQtBACEDIAJBADYCBCACIAEgARAqIgBFDQQgAkE6NgIcIAIgADYCDCACIAFBAWo2AhQMgQELIAItAChBAUcNACACLQAtQQhxRQ0BC0E3IQMMZgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIABEAgAkE7NgIcIAIgADYCDCACIAFBAWo2AhQMfwsgAUEBaiEBDG4LIAJBCDoALAwECyABQQFqIQEMbQtBACEDIAJBADYCHCACIAE2AhQgAkHkEjYCECACQQQ2AgwMewsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ1sIAJBNzYCHCACIAE2AhQgAiAANgIMDHoLIAIgAi8BMEEgcjsBMAtBMCEDDF8LIAJBNjYCHCACIAE2AhQgAiAANgIMDHcLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCACLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIAJBAToALCACIAIvATAgAXI7ATAgACEBDAELIAIgAi8BMEEIcjsBMCAAIQELQTkhAwxcCyACQQA6ACwLQTQhAwxaCyABIARGBEBBLSEDDHMLAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0EtIQMMdAsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIARQ0CIAJBLDYCHCACIAE2AhQgAiAANgIMDHMLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAS0AAEENRgRAIAIoAgQhAEEAIQMgAkEANgIEIAIgACABECoiAEUEQCABQQFqIQEMAgsgAkEsNgIcIAIgADYCDCACIAFBAWo2AhQMcgsgAi0ALUEBcQRAQcQBIQMMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKiIADQEMZQtBLyEDDFcLIAJBLjYCHCACIAE2AhQgAiAANgIMDG8LQQAhAyACQQA2AhwgAiABNgIUIAJB8BQ2AhAgAkEDNgIMDG4LQQEhAwJAAkACQAJAIAItACxBBWsOBAMBAgAECyACIAIvATBBCHI7ATAMAwtBAiEDDAELQQQhAwsgAkEBOgAsIAIgAi8BMCADcjsBMAtBKiEDDFMLQQAhAyACQQA2AhwgAiABNgIUIAJB4Q82AhAgAkEKNgIMDGsLQQEhAwJAAkACQAJAAkACQCACLQAsQQJrDgcFBAQDAQIABAsgAiACLwEwQQhyOwEwDAMLQQIhAwwBC0EEIQMLIAJBAToALCACIAIvATAgA3I7ATALQSshAwxSC0EAIQMgAkEANgIcIAIgATYCFCACQasSNgIQIAJBCzYCDAxqC0EAIQMgAkEANgIcIAIgATYCFCACQf0NNgIQIAJBHTYCDAxpCyABIARHBEADQCABLQAAQSBHDUggBCABQQFqIgFHDQALQSUhAwxpC0ElIQMMaAsgAi0ALUEBcQRAQcMBIQMMTwsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQKSIABEAgAkEmNgIcIAIgADYCDCACIAFBAWo2AhQMaAsgAUEBaiEBDFwLIAFBAWohASACLwEwIgBBgAFxBEBBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAEUNBiAAQRVHDR8gAkEFNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMZwsCQCAAQaAEcUGgBEcNACACLQAtQQJxDQBBACEDIAJBADYCHCACIAE2AhQgAkGWEzYCECACQQQ2AgwMZwsgAgJ/IAIvATBBFHFBFEYEQEEBIAItAChBAUYNARogAi8BMkHlAEYMAQsgAi0AKUEFRgs6AC5BACEAAkAgAigCOCIDRQ0AIAMoAiQiA0UNACACIAMRAAAhAAsCQAJAAkACQAJAIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyACQQE6AC4LIAIgAi8BMEHAAHI7ATALQSchAwxPCyACQSM2AhwgAiABNgIUIAJBpRY2AhAgAkEVNgIMQQAhAwxnC0EAIQMgAkEANgIcIAIgATYCFCACQdULNgIQIAJBETYCDAxmC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAADQELQQ4hAwxLCyAAQRVGBEAgAkECNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMZAtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMYwtBACEDIAJBADYCHCACIAE2AhQgAkGqHDYCECACQQ82AgwMYgsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEgCqdqIgEQKyIARQ0AIAJBBTYCHCACIAE2AhQgAiAANgIMDGELQQ8hAwxHC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxfC0IBIQoLIAFBAWohAQJAIAIpAyAiC0L//////////w9YBEAgAiALQgSGIAqENwMgDAELQQAhAyACQQA2AhwgAiABNgIUIAJBrQk2AhAgAkEMNgIMDF4LQSQhAwxEC0EAIQMgAkEANgIcIAIgATYCFCACQc0TNgIQIAJBDDYCDAxcCyACKAIEIQBBACEDIAJBADYCBCACIAAgARAsIgBFBEAgAUEBaiEBDFILIAJBFzYCHCACIAA2AgwgAiABQQFqNgIUDFsLIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQRY2AhwgAiAANgIMIAIgAUEBajYCFAxbC0EfIQMMQQtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMWQsgAigCBCEAQQAhAyACQQA2AgQgAiAAIAEQLSIARQRAIAFBAWohAQxQCyACQRQ2AhwgAiAANgIMIAIgAUEBajYCFAxYCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABEC0iAEUEQCABQQFqIQEMAQsgAkETNgIcIAIgADYCDCACIAFBAWo2AhQMWAtBHiEDDD4LQQAhAyACQQA2AhwgAiABNgIUIAJBxgw2AhAgAkEjNgIMDFYLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABEC0iAEUEQCABQQFqIQEMTgsgAkERNgIcIAIgADYCDCACIAFBAWo2AhQMVQsgAkEQNgIcIAIgATYCFCACIAA2AgwMVAtBACEDIAJBADYCHCACIAE2AhQgAkHGDDYCECACQSM2AgwMUwtBACEDIAJBADYCHCACIAE2AhQgAkHAFTYCECACQQI2AgwMUgsgAigCBCEAQQAhAyACQQA2AgQCQCACIAAgARAtIgBFBEAgAUEBaiEBDAELIAJBDjYCHCACIAA2AgwgAiABQQFqNgIUDFILQRshAww4C0EAIQMgAkEANgIcIAIgATYCFCACQcYMNgIQIAJBIzYCDAxQCyACKAIEIQBBACEDIAJBADYCBAJAIAIgACABECwiAEUEQCABQQFqIQEMAQsgAkENNgIcIAIgADYCDCACIAFBAWo2AhQMUAtBGiEDDDYLQQAhAyACQQA2AhwgAiABNgIUIAJBmg82AhAgAkEiNgIMDE4LIAIoAgQhAEEAIQMgAkEANgIEAkAgAiAAIAEQLCIARQRAIAFBAWohAQwBCyACQQw2AhwgAiAANgIMIAIgAUEBajYCFAxOC0EZIQMMNAtBACEDIAJBADYCHCACIAE2AhQgAkGaDzYCECACQSI2AgwMTAsgAEEVRwRAQQAhAyACQQA2AhwgAiABNgIUIAJBgww2AhAgAkETNgIMDEwLIAJBCjYCHCACIAE2AhQgAkHkFjYCECACQRU2AgxBACEDDEsLIAIoAgQhAEEAIQMgAkEANgIEIAIgACABIAqnaiIBECsiAARAIAJBBzYCHCACIAE2AhQgAiAANgIMDEsLQRMhAwwxCyAAQRVHBEBBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMSgsgAkEeNgIcIAIgATYCFCACQfkXNgIQIAJBFTYCDEEAIQMMSQtBACEAAkAgAigCOCIDRQ0AIAMoAiwiA0UNACACIAMRAAAhAAsgAEUNQSAAQRVGBEAgAkEDNgIcIAIgATYCFCACQbAYNgIQIAJBFTYCDEEAIQMMSQtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMSAtBACEDIAJBADYCHCACIAE2AhQgAkHaDTYCECACQRQ2AgwMRwtBACEDIAJBADYCHCACIAE2AhQgAkGnDjYCECACQRI2AgwMRgsgAkEAOgAvIAItAC1BBHFFDT8LIAJBADoALyACQQE6ADRBACEDDCsLQQAhAyACQQA2AhwgAkHkETYCECACQQc2AgwgAiABQQFqNgIUDEMLAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB3QEhAwxDCwJAAkAgAi0ANEEBRw0AQQAhAAJAIAIoAjgiA0UNACADKAJYIgNFDQAgAiADEQAAIQALIABFDQAgAEEVRw0BIAJB3AE2AhwgAiABNgIUIAJB1RY2AhAgAkEVNgIMQQAhAwxEC0HBASEDDCoLIAJBADYCHCACIAE2AhQgAkHpCzYCECACQR82AgxBACEDDEILAkACQCACLQAoQQFrDgIEAQALQcABIQMMKQtBuQEhAwwoCyACQQI6AC9BACEAAkAgAigCOCIDRQ0AIAMoAgAiA0UNACACIAMRAAAhAAsgAEUEQEHCASEDDCgLIABBFUcEQCACQQA2AhwgAiABNgIUIAJBpAw2AhAgAkEQNgIMQQAhAwxBCyACQdsBNgIcIAIgATYCFCACQfoWNgIQIAJBFTYCDEEAIQMMQAsgASAERgRAQdoBIQMMQAsgAS0AAEHIAEYNASACQQE6ACgLQawBIQMMJQtBvwEhAwwkCyABIARHBEAgAkEQNgIIIAIgATYCBEG+ASEDDCQLQdkBIQMMPAsgASAERgRAQdgBIQMMPAsgAS0AAEHIAEcNBCABQQFqIQFBvQEhAwwiCyABIARGBEBB1wEhAww7CwJAAkAgAS0AAEHFAGsOEAAFBQUFBQUFBQUFBQUFBQEFCyABQQFqIQFBuwEhAwwiCyABQQFqIQFBvAEhAwwhC0HWASEDIAEgBEYNOSACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGD0ABqLQAARw0DIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw6CyACKAIEIQAgAkIANwMAIAIgACAGQQFqIgEQJyIARQRAQcYBIQMMIQsgAkHVATYCHCACIAE2AhQgAiAANgIMQQAhAww5C0HUASEDIAEgBEYNOCACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGB0ABqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAw5CyACQYEEOwEoIAIoAgQhACACQgA3AwAgAiAAIAZBAWoiARAnIgANAwwCCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB2Bs2AhAgAkEINgIMDDYLQboBIQMMHAsgAkHTATYCHCACIAE2AhQgAiAANgIMQQAhAww0C0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAARQ0AIABBFUYNASACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwwzC0HkACEDDBkLIAJB+AA2AhwgAiABNgIUIAJByhg2AhAgAkEVNgIMQQAhAwwxC0HSASEDIAQgASIARg0wIAQgAWsgAigCACIBaiEFIAAgAWtBBGohBgJAA0AgAC0AACABQfzPAGotAABHDQEgAUEERg0DIAFBAWohASAEIABBAWoiAEcNAAsgAiAFNgIADDELIAJBADYCHCACIAA2AhQgAkGQMzYCECACQQg2AgwgAkEANgIAQQAhAwwwCyABIARHBEAgAkEONgIIIAIgATYCBEG3ASEDDBcLQdEBIQMMLwsgAkEANgIAIAZBAWohAQtBuAEhAwwUCyABIARGBEBB0AEhAwwtCyABLQAAQTBrIgBB/wFxQQpJBEAgAiAAOgAqIAFBAWohAUG2ASEDDBQLIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0UIAJBzwE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAsgASAERgRAQc4BIQMMLAsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAIoAgQhACACQQA2AgQgAiAAIAEQKCIARQ0VIAJBzQE2AhwgAiABNgIUIAIgADYCDEEAIQMMLAtBtQEhAwwSCyAEIAEiBUYEQEHMASEDDCsLQQAhAEEBIQFBASEGQQAhAwJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAUtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyEDQQAhAUEAIQYMAgtBCSEDQQEhAEEAIQFBACEGDAELQQAhAUEBIQMLIAIgAzoAKyAFQQFqIQMCQAJAIAItAC1BEHENAAJAAkACQCACLQAqDgMBAAIECyAGRQ0DDAILIAANAQwCCyABRQ0BCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMAwsgAkHJATYCHCACIAM2AhQgAiAANgIMQQAhAwwtCyACKAIEIQAgAkEANgIEIAIgACADECgiAEUEQCADIQEMGAsgAkHKATYCHCACIAM2AhQgAiAANgIMQQAhAwwsCyACKAIEIQAgAkEANgIEIAIgACAFECgiAEUEQCAFIQEMFgsgAkHLATYCHCACIAU2AhQgAiAANgIMDCsLQbQBIQMMEQtBACEAAkAgAigCOCIDRQ0AIAMoAjwiA0UNACACIAMRAAAhAAsCQCAABEAgAEEVRg0BIAJBADYCHCACIAE2AhQgAkGUDTYCECACQSE2AgxBACEDDCsLQbIBIQMMEQsgAkHIATYCHCACIAE2AhQgAkHJFzYCECACQRU2AgxBACEDDCkLIAJBADYCACAGQQFqIQFB9QAhAwwPCyACLQApQQVGBEBB4wAhAwwPC0HiACEDDA4LIAAhASACQQA2AgALIAJBADoALEEJIQMMDAsgAkEANgIAIAdBAWohAUHAACEDDAsLQQELOgAsIAJBADYCACAGQQFqIQELQSkhAwwIC0E4IQMMBwsCQCABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRw0DIAFBAWohAQwFCyAEIAFBAWoiAUcNAAtBPiEDDCELQT4hAwwgCwsgAkEAOgAsDAELQQshAwwEC0E6IQMMAwsgAUEBaiEBQS0hAwwCCyACIAE6ACwgAkEANgIAIAZBAWohAUEMIQMMAQsgAkEANgIAIAZBAWohAUEKIQMMAAsAC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwXC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwWC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwVC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwUC0EAIQMgAkEANgIcIAIgATYCFCACQc0QNgIQIAJBCTYCDAwTC0EAIQMgAkEANgIcIAIgATYCFCACQekKNgIQIAJBCTYCDAwSC0EAIQMgAkEANgIcIAIgATYCFCACQbcQNgIQIAJBCTYCDAwRC0EAIQMgAkEANgIcIAIgATYCFCACQZwRNgIQIAJBCTYCDAwQC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwPC0EAIQMgAkEANgIcIAIgATYCFCACQZcVNgIQIAJBDzYCDAwOC0EAIQMgAkEANgIcIAIgATYCFCACQcASNgIQIAJBCzYCDAwNC0EAIQMgAkEANgIcIAIgATYCFCACQZUJNgIQIAJBCzYCDAwMC0EAIQMgAkEANgIcIAIgATYCFCACQeEPNgIQIAJBCjYCDAwLC0EAIQMgAkEANgIcIAIgATYCFCACQfsPNgIQIAJBCjYCDAwKC0EAIQMgAkEANgIcIAIgATYCFCACQfEZNgIQIAJBAjYCDAwJC0EAIQMgAkEANgIcIAIgATYCFCACQcQUNgIQIAJBAjYCDAwIC0EAIQMgAkEANgIcIAIgATYCFCACQfIVNgIQIAJBAjYCDAwHCyACQQI2AhwgAiABNgIUIAJBnBo2AhAgAkEWNgIMQQAhAwwGC0EBIQMMBQtB1AAhAyABIARGDQQgCEEIaiEJIAIoAgAhBQJAAkAgASAERwRAIAVB2MIAaiEHIAQgBWogAWshACAFQX9zQQpqIgUgAWohBgNAIAEtAAAgBy0AAEcEQEECIQcMAwsgBUUEQEEAIQcgBiEBDAMLIAVBAWshBSAHQQFqIQcgBCABQQFqIgFHDQALIAAhBSAEIQELIAlBATYCACACIAU2AgAMAQsgAkEANgIAIAkgBzYCAAsgCSABNgIEIAgoAgwhACAIKAIIDgMBBAIACwALIAJBADYCHCACQbUaNgIQIAJBFzYCDCACIABBAWo2AhRBACEDDAILIAJBADYCHCACIAA2AhQgAkHKGjYCECACQQk2AgxBACEDDAELIAEgBEYEQEEiIQMMAQsgAkEJNgIIIAIgATYCBEEhIQMLIAhBEGokACADRQRAIAIoAgwhAAwBCyACIAM2AhxBACEAIAIoAgQiAUUNACACIAEgBCACKAIIEQEAIgFFDQAgAiAENgIUIAIgATYCDCABIQALIAALvgIBAn8gAEEAOgAAIABB3ABqIgFBAWtBADoAACAAQQA6AAIgAEEAOgABIAFBA2tBADoAACABQQJrQQA6AAAgAEEAOgADIAFBBGtBADoAAEEAIABrQQNxIgEgAGoiAEEANgIAQdwAIAFrQXxxIgIgAGoiAUEEa0EANgIAAkAgAkEJSQ0AIABBADYCCCAAQQA2AgQgAUEIa0EANgIAIAFBDGtBADYCACACQRlJDQAgAEEANgIYIABBADYCFCAAQQA2AhAgAEEANgIMIAFBEGtBADYCACABQRRrQQA2AgAgAUEYa0EANgIAIAFBHGtBADYCACACIABBBHFBGHIiAmsiAUEgSQ0AIAAgAmohAANAIABCADcDGCAAQgA3AxAgAEIANwMIIABCADcDACAAQSBqIQAgAUEgayIBQR9LDQALCwtWAQF/AkAgACgCDA0AAkACQAJAAkAgAC0ALw4DAQADAgsgACgCOCIBRQ0AIAEoAiwiAUUNACAAIAERAAAiAQ0DC0EADwsACyAAQcMWNgIQQQ4hAQsgAQsaACAAKAIMRQRAIABB0Rs2AhAgAEEVNgIMCwsUACAAKAIMQRVGBEAgAEEANgIMCwsUACAAKAIMQRZGBEAgAEEANgIMCwsHACAAKAIMCwcAIAAoAhALCQAgACABNgIQCwcAIAAoAhQLFwAgAEEkTwRAAAsgAEECdEGgM2ooAgALFwAgAEEuTwRAAAsgAEECdEGwNGooAgALvwkBAX9B6yghAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")});var Kr=f((v2,lE)=>{"use strict";var nE=["GET","HEAD","POST"],qw=new Set(nE),Ow=[101,204,205,304],sE=[301,302,303,307,308],Pw=new Set(sE),oE=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"],Ww=new Set(oE),iE=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"],_w=new Set(iE),Kw=["follow","manual","error"],aE=["GET","HEAD","OPTIONS","TRACE"],Zw=new Set(aE),zw=["navigate","same-origin","no-cors","cors"],Xw=["omit","same-origin","include"],$w=["default","no-store","reload","no-cache","force-cache","only-if-cached"],jw=["content-encoding","content-language","content-location","content-type","content-length"],em=["half"],cE=["CONNECT","TRACE","TRACK"],Am=new Set(cE),uE=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""],tm=new Set(uE);lE.exports={subresource:uE,forbiddenMethods:cE,requestBodyHeader:jw,referrerPolicy:iE,requestRedirect:Kw,requestMode:zw,requestCredentials:Xw,requestCache:$w,redirectStatus:sE,corsSafeListedMethods:nE,nullBodyStatus:Ow,safeMethods:aE,badPorts:oE,requestDuplex:em,subresourceSet:tm,badPortsSet:Ww,redirectStatusSet:Pw,corsSafeListedMethodsSet:qw,safeMethodsSet:Zw,forbiddenMethodsSet:Am,referrerPolicySet:_w}});var ya=f((Y2,gE)=>{"use strict";var ma=Symbol.for("undici.globalOrigin.1");function rm(){return globalThis[ma]}function nm(e){if(e===void 0){Object.defineProperty(globalThis,ma,{value:void 0,writable:!0,enumerable:!1,configurable:!1});return}let A=new URL(e);if(A.protocol!=="http:"&&A.protocol!=="https:")throw new TypeError(`Only http & https urls are allowed, received ${A.protocol}`);Object.defineProperty(globalThis,ma,{value:A,writable:!0,enumerable:!1,configurable:!1})}gE.exports={getGlobalOrigin:rm,setGlobalOrigin:nm}});var be=f((G2,dE)=>{"use strict";var fs=d("node:assert"),sm=new TextEncoder,Zr=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/,om=/[\u000A\u000D\u0009\u0020]/,im=/[\u0009\u000A\u000C\u000D\u0020]/g,am=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function cm(e){fs(e.protocol==="data:");let A=BE(e,!0);A=A.slice(5);let t={position:0},r=zt(",",A,t),n=r.length;if(r=Bm(r,!0,!0),t.position>=A.length)return"failure";t.position++;let s=A.slice(n+1),o=IE(s);if(/;(\u0020){0,}base64$/i.test(r)){let a=CE(o);if(o=lm(a),o==="failure")return"failure";r=r.slice(0,-6),r=r.replace(/(\u0020)+$/,""),r=r.slice(0,-1)}r.startsWith(";")&&(r="text/plain"+r);let i=ba(r);return i==="failure"&&(i=ba("text/plain;charset=US-ASCII")),{mimeType:i,body:o}}function BE(e,A=!1){if(!A)return e.href;let t=e.href,r=e.hash.length,n=r===0?t:t.substring(0,t.length-r);return!r&&t.endsWith("#")?n.slice(0,-1):n}function ps(e,A,t){let r="";for(;t.position<A.length&&e(A[t.position]);)r+=A[t.position],t.position++;return r}function zt(e,A,t){let r=A.indexOf(e,t.position),n=t.position;return r===-1?(t.position=A.length,A.slice(n)):(t.position=r,A.slice(n,t.position))}function IE(e){let A=sm.encode(e);return um(A)}function EE(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function QE(e){return e>=48&&e<=57?e-48:(e&223)-55}function um(e){let A=e.length,t=new Uint8Array(A),r=0;for(let n=0;n<A;++n){let s=e[n];s!==37?t[r++]=s:s===37&&!(EE(e[n+1])&&EE(e[n+2]))?t[r++]=37:(t[r++]=QE(e[n+1])<<4|QE(e[n+2]),n+=2)}return A===r?t:t.subarray(0,r)}function ba(e){e=ds(e,!0,!0);let A={position:0},t=zt("/",e,A);if(t.length===0||!Zr.test(t)||A.position>e.length)return"failure";A.position++;let r=zt(";",e,A);if(r=ds(r,!1,!0),r.length===0||!Zr.test(r))return"failure";let n=t.toLowerCase(),s=r.toLowerCase(),o={type:n,subtype:s,parameters:new Map,essence:`${n}/${s}`};for(;A.position<e.length;){A.position++,ps(c=>om.test(c),e,A);let i=ps(c=>c!==";"&&c!=="=",e,A);if(i=i.toLowerCase(),A.position<e.length){if(e[A.position]===";")continue;A.position++}if(A.position>e.length)break;let a=null;if(e[A.position]==='"')a=hE(e,A,!0),zt(";",e,A);else if(a=zt(";",e,A),a=ds(a,!1,!0),a.length===0)continue;i.length!==0&&Zr.test(i)&&(a.length===0||am.test(a))&&!o.parameters.has(i)&&o.parameters.set(i,a)}return o}function lm(e){e=e.replace(im,"");let A=e.length;if(A%4===0&&e.charCodeAt(A-1)===61&&(--A,e.charCodeAt(A-1)===61&&--A),A%4===1||/[^+/0-9A-Za-z]/.test(e.length===A?e:e.substring(0,A)))return"failure";let t=Buffer.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function hE(e,A,t){let r=A.position,n="";for(fs(e[A.position]==='"'),A.position++;n+=ps(o=>o!=='"'&&o!=="\\",e,A),!(A.position>=e.length);){let s=e[A.position];if(A.position++,s==="\\"){if(A.position>=e.length){n+="\\";break}n+=e[A.position],A.position++}else{fs(s==='"');break}}return t?n:e.slice(r,A.position)}function gm(e){fs(e!=="failure");let{parameters:A,essence:t}=e,r=t;for(let[n,s]of A.entries())r+=";",r+=n,r+="=",Zr.test(s)||(s=s.replace(/(\\|")/g,"\\$1"),s='"'+s,s+='"'),r+=s;return r}function Em(e){return e===13||e===10||e===9||e===32}function ds(e,A=!0,t=!0){return Da(e,A,t,Em)}function Qm(e){return e===13||e===10||e===9||e===12||e===32}function Bm(e,A=!0,t=!0){return Da(e,A,t,Qm)}function Da(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e.charCodeAt(n));)n++;if(t)for(;s>0&&r(e.charCodeAt(s));)s--;return n===0&&s===e.length-1?e:e.slice(n,s+1)}function CE(e){let A=e.length;if(65535>A)return String.fromCharCode.apply(null,e);let t="",r=0,n=65535;for(;r<A;)r+n>A&&(n=A-r),t+=String.fromCharCode.apply(null,e.subarray(r,r+=n));return t}function Im(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}return e.subtype.endsWith("+json")?"application/json":e.subtype.endsWith("+xml")?"application/xml":""}dE.exports={dataURLProcessor:cm,URLSerializer:BE,collectASequenceOfCodePoints:ps,collectASequenceOfCodePointsFast:zt,stringPercentDecode:IE,parseMIMEType:ba,collectAnHTTPQuotedString:hE,serializeAMimeType:gm,removeChars:Da,removeHTTPWhitespace:ds,minimizeSupportedMimeType:Im,HTTP_TOKEN_CODEPOINTS:Zr,isomorphicDecode:CE}});var he=f((J2,fE)=>{"use strict";var{types:EA,inspect:hm}=d("node:util"),{markAsUncloneable:Cm}=d("node:worker_threads"),{toUSVString:dm}=Y(),m={};m.converters={};m.util={};m.errors={};m.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};m.errors.conversionFailed=function(e){let A=e.types.length===1?"":" one of",t=`${e.argument} could not be converted to${A}: ${e.types.join(", ")}.`;return m.errors.exception({header:e.prefix,message:t})};m.errors.invalidArgument=function(e){return m.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};m.brandCheck=function(e,A,t){if(t?.strict!==!1){if(!(e instanceof A)){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}}else if(e?.[Symbol.toStringTag]!==A.prototype[Symbol.toStringTag]){let r=new TypeError("Illegal invocation");throw r.code="ERR_INVALID_THIS",r}};m.argumentLengthCheck=function({length:e},A,t){if(e<A)throw m.errors.exception({message:`${A} argument${A!==1?"s":""} required, but${e?" only":""} ${e} found.`,header:t})};m.illegalConstructor=function(){throw m.errors.exception({header:"TypeError",message:"Illegal constructor"})};m.util.Type=function(e){switch(typeof e){case"undefined":return"Undefined";case"boolean":return"Boolean";case"string":return"String";case"symbol":return"Symbol";case"number":return"Number";case"bigint":return"BigInt";case"function":case"object":return e===null?"Null":"Object"}};m.util.markAsUncloneable=Cm||(()=>{});m.util.ConvertToInt=function(e,A,t,r){let n,s;A===64?(n=Math.pow(2,53)-1,t==="unsigned"?s=0:s=Math.pow(-2,53)+1):t==="unsigned"?(s=0,n=Math.pow(2,A)-1):(s=Math.pow(-2,A)-1,n=Math.pow(2,A-1)-1);let o=Number(e);if(o===0&&(o=0),r?.enforceRange===!0){if(Number.isNaN(o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY)throw m.errors.exception({header:"Integer conversion",message:`Could not convert ${m.util.Stringify(e)} to an integer.`});if(o=m.util.IntegerPart(o),o<s||o>n)throw m.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${o}.`});return o}return!Number.isNaN(o)&&r?.clamp===!0?(o=Math.min(Math.max(o,s),n),Math.floor(o)%2===0?o=Math.floor(o):o=Math.ceil(o),o):Number.isNaN(o)||o===0&&Object.is(0,o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY?0:(o=m.util.IntegerPart(o),o=o%Math.pow(2,A),t==="signed"&&o>=Math.pow(2,A)-1?o-Math.pow(2,A):o)};m.util.IntegerPart=function(e){let A=Math.floor(Math.abs(e));return e<0?-1*A:A};m.util.Stringify=function(e){switch(m.util.Type(e)){case"Symbol":return`Symbol(${e.description})`;case"Object":return hm(e);case"String":return`"${e}"`;default:return`${e}`}};m.sequenceConverter=function(e){return(A,t,r,n)=>{if(m.util.Type(A)!=="Object")throw m.errors.exception({header:t,message:`${r} (${m.util.Stringify(A)}) is not iterable.`});let s=typeof n=="function"?n():A?.[Symbol.iterator]?.(),o=[],i=0;if(s===void 0||typeof s.next!="function")throw m.errors.exception({header:t,message:`${r} is not iterable.`});for(;;){let{done:a,value:c}=s.next();if(a)break;o.push(e(c,t,`${r}[${i++}]`))}return o}};m.recordConverter=function(e,A){return(t,r,n)=>{if(m.util.Type(t)!=="Object")throw m.errors.exception({header:r,message:`${n} ("${m.util.Type(t)}") is not an Object.`});let s={};if(!EA.isProxy(t)){let i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(let a of i){let c=e(a,r,n),g=A(t[a],r,n);s[c]=g}return s}let o=Reflect.ownKeys(t);for(let i of o)if(Reflect.getOwnPropertyDescriptor(t,i)?.enumerable){let c=e(i,r,n),g=A(t[i],r,n);s[c]=g}return s}};m.interfaceConverter=function(e){return(A,t,r,n)=>{if(n?.strict!==!1&&!(A instanceof e))throw m.errors.exception({header:t,message:`Expected ${r} ("${m.util.Stringify(A)}") to be an instance of ${e.name}.`});return A}};m.dictionaryConverter=function(e){return(A,t,r)=>{let n=m.util.Type(A),s={};if(n==="Null"||n==="Undefined")return s;if(n!=="Object")throw m.errors.exception({header:t,message:`Expected ${A} to be one of: Null, Undefined, Object.`});for(let o of e){let{key:i,defaultValue:a,required:c,converter:g}=o;if(c===!0&&!Object.hasOwn(A,i))throw m.errors.exception({header:t,message:`Missing required key "${i}".`});let u=A[i],l=Object.hasOwn(o,"defaultValue");if(l&&u!==null&&(u??=a()),c||l||u!==void 0){if(u=g(u,t,`${r}.${i}`),o.allowedValues&&!o.allowedValues.includes(u))throw m.errors.exception({header:t,message:`${u} is not an accepted type. Expected one of ${o.allowedValues.join(", ")}.`});s[i]=u}}return s}};m.nullableConverter=function(e){return(A,t,r)=>A===null?A:e(A,t,r)};m.converters.DOMString=function(e,A,t,r){if(e===null&&r?.legacyNullToEmptyString)return"";if(typeof e=="symbol")throw m.errors.exception({header:A,message:`${t} is a symbol, which cannot be converted to a DOMString.`});return String(e)};m.converters.ByteString=function(e,A,t){let r=m.converters.DOMString(e,A,t);for(let n=0;n<r.length;n++)if(r.charCodeAt(n)>255)throw new TypeError(`Cannot convert argument to a ByteString because the character at index ${n} has a value of ${r.charCodeAt(n)} which is greater than 255.`);return r};m.converters.USVString=dm;m.converters.boolean=function(e){return!!e};m.converters.any=function(e){return e};m.converters["long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"signed",void 0,A,t)};m.converters["unsigned long long"]=function(e,A,t){return m.util.ConvertToInt(e,64,"unsigned",void 0,A,t)};m.converters["unsigned long"]=function(e,A,t){return m.util.ConvertToInt(e,32,"unsigned",void 0,A,t)};m.converters["unsigned short"]=function(e,A,t,r){return m.util.ConvertToInt(e,16,"unsigned",r,A,t)};m.converters.ArrayBuffer=function(e,A,t,r){if(m.util.Type(e)!=="Object"||!EA.isAnyArrayBuffer(e))throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${m.util.Stringify(e)}")`,types:["ArrayBuffer"]});if(r?.allowShared===!1&&EA.isSharedArrayBuffer(e))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.resizable||e.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.TypedArray=function(e,A,t,r,n){if(m.util.Type(e)!=="Object"||!EA.isTypedArray(e)||e.constructor.name!==A.name)throw m.errors.conversionFailed({prefix:t,argument:`${r} ("${m.util.Stringify(e)}")`,types:[A.name]});if(n?.allowShared===!1&&EA.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.DataView=function(e,A,t,r){if(m.util.Type(e)!=="Object"||!EA.isDataView(e))throw m.errors.exception({header:A,message:`${t} is not a DataView.`});if(r?.allowShared===!1&&EA.isSharedArrayBuffer(e.buffer))throw m.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."});if(e.buffer.resizable||e.buffer.growable)throw m.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."});return e};m.converters.BufferSource=function(e,A,t,r){if(EA.isAnyArrayBuffer(e))return m.converters.ArrayBuffer(e,A,t,{...r,allowShared:!1});if(EA.isTypedArray(e))return m.converters.TypedArray(e,e.constructor,A,t,{...r,allowShared:!1});if(EA.isDataView(e))return m.converters.DataView(e,A,t,{...r,allowShared:!1});throw m.errors.conversionFailed({prefix:A,argument:`${t} ("${m.util.Stringify(e)}")`,types:["BufferSource"]})};m.converters["sequence<ByteString>"]=m.sequenceConverter(m.converters.ByteString);m.converters["sequence<sequence<ByteString>>"]=m.sequenceConverter(m.converters["sequence<ByteString>"]);m.converters["record<ByteString, ByteString>"]=m.recordConverter(m.converters.ByteString,m.converters.ByteString);fE.exports={webidl:m}});var Me=f((H2,LE)=>{"use strict";var{Transform:fm}=d("node:stream"),pE=d("node:zlib"),{redirectStatusSet:pm,referrerPolicySet:wm,badPortsSet:mm}=Kr(),{getGlobalOrigin:wE}=ya(),{collectASequenceOfCodePoints:Et,collectAnHTTPQuotedString:ym,removeChars:bm,parseMIMEType:Dm}=be(),{performance:km}=d("node:perf_hooks"),{isBlobLike:Rm,ReadableStreamFrom:Sm,isValidHTTPToken:mE,normalizedMethodRecordsBase:Fm}=Y(),Qt=d("node:assert"),{isUint8Array:Nm}=d("node:util/types"),{webidl:zr}=he(),yE=[],ms;try{ms=d("node:crypto");let e=["sha256","sha384","sha512"];yE=ms.getHashes().filter(A=>e.includes(A))}catch{}function bE(e){let A=e.urlList,t=A.length;return t===0?null:A[t-1].toString()}function Um(e,A){if(!pm.has(e.status))return null;let t=e.headersList.get("location",!0);return t!==null&&kE(t)&&(DE(t)||(t=Mm(t)),t=new URL(t,bE(e))),t&&!t.hash&&(t.hash=A),t}function DE(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>126||t<32)return!1}return!0}function Mm(e){return Buffer.from(e,"binary").toString("utf8")}function $r(e){return e.urlList[e.urlList.length-1]}function Lm(e){let A=$r(e);return UE(A)&&mm.has(A.port)?"blocked":"allowed"}function Tm(e){return e instanceof Error||e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException"}function xm(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(!(t===9||t>=32&&t<=126||t>=128&&t<=255))return!1}return!0}var vm=mE;function kE(e){return(e[0]===" "||e[0]===" "||e[e.length-1]===" "||e[e.length-1]===" "||e.includes(`
|
|
3
|
-
`)||e.includes("\r")||e.includes("\0"))===!1}function Ym(e,A){let{headersList:t}=A,r=(t.get("referrer-policy",!0)??"").split(","),n="";if(r.length>0)for(let s=r.length;s!==0;s--){let o=r[s-1].trim();if(wm.has(o)){n=o;break}}n!==""&&(e.referrerPolicy=n)}function Gm(){return"allowed"}function Jm(){return"success"}function Hm(){return"success"}function Vm(e){let A=null;A=e.mode,e.headersList.set("sec-fetch-mode",A,!0)}function qm(e){let A=e.origin;if(!(A==="client"||A===void 0)){if(e.responseTainting==="cors"||e.mode==="websocket")e.headersList.append("origin",A,!0);else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":A=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":e.origin&&Ra(e.origin)&&!Ra($r(e))&&(A=null);break;case"same-origin":ys(e,$r(e))||(A=null);break;default:}e.headersList.append("origin",A,!0)}}}function Xt(e,A){return e}function Om(e,A,t){return!e?.startTime||e.startTime<A?{domainLookupStartTime:A,domainLookupEndTime:A,connectionStartTime:A,connectionEndTime:A,secureConnectionStartTime:A,ALPNNegotiatedProtocol:e?.ALPNNegotiatedProtocol}:{domainLookupStartTime:Xt(e.domainLookupStartTime,t),domainLookupEndTime:Xt(e.domainLookupEndTime,t),connectionStartTime:Xt(e.connectionStartTime,t),connectionEndTime:Xt(e.connectionEndTime,t),secureConnectionStartTime:Xt(e.secureConnectionStartTime,t),ALPNNegotiatedProtocol:e.ALPNNegotiatedProtocol}}function Pm(e){return Xt(km.now(),e)}function Wm(e){return{startTime:e.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:e.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function RE(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function _m(e){return{referrerPolicy:e.referrerPolicy}}function Km(e){let A=e.referrerPolicy;Qt(A);let t=null;if(e.referrer==="client"){let i=wE();if(!i||i.origin==="null")return"no-referrer";t=new URL(i)}else e.referrer instanceof URL&&(t=e.referrer);let r=ka(t),n=ka(t,!0);r.toString().length>4096&&(r=n);let s=ys(e,r),o=Xr(r)&&!Xr(e.url);switch(A){case"origin":return n??ka(t,!0);case"unsafe-url":return r;case"same-origin":return s?n:"no-referrer";case"origin-when-cross-origin":return s?r:n;case"strict-origin-when-cross-origin":{let i=$r(e);return ys(r,i)?r:Xr(r)&&!Xr(i)?"no-referrer":n}default:return o?"no-referrer":n}}function ka(e,A){return Qt(e instanceof URL),e=new URL(e),e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"?"no-referrer":(e.username="",e.password="",e.hash="",A&&(e.pathname="",e.search=""),e)}function Xr(e){if(!(e instanceof URL))return!1;if(e.href==="about:blank"||e.href==="about:srcdoc"||e.protocol==="data:"||e.protocol==="file:")return!0;return A(e.origin);function A(t){if(t==null||t==="null")return!1;let r=new URL(t);return!!(r.protocol==="https:"||r.protocol==="wss:"||/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(r.hostname)||r.hostname==="localhost"||r.hostname.includes("localhost.")||r.hostname.endsWith(".localhost"))}}function Zm(e,A){if(ms===void 0)return!0;let t=SE(A);if(t==="no metadata"||t.length===0)return!0;let r=Xm(t),n=$m(t,r);for(let s of n){let o=s.algo,i=s.hash,a=ms.createHash(o).update(e).digest("base64");if(a[a.length-1]==="="&&(a[a.length-2]==="="?a=a.slice(0,-2):a=a.slice(0,-1)),jm(a,i))return!0}return!1}var zm=/(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function SE(e){let A=[],t=!0;for(let r of e.split(" ")){t=!1;let n=zm.exec(r);if(n===null||n.groups===void 0||n.groups.algo===void 0)continue;let s=n.groups.algo.toLowerCase();yE.includes(s)&&A.push(n.groups)}return t===!0?"no metadata":A}function Xm(e){let A=e[0].algo;if(A[3]==="5")return A;for(let t=1;t<e.length;++t){let r=e[t];if(r.algo[3]==="5"){A="sha512";break}else{if(A[3]==="3")continue;r.algo[3]==="3"&&(A="sha384")}}return A}function $m(e,A){if(e.length===1)return e;let t=0;for(let r=0;r<e.length;++r)e[r].algo===A&&(e[t++]=e[r]);return e.length=t,e}function jm(e,A){if(e.length!==A.length)return!1;for(let t=0;t<e.length;++t)if(e[t]!==A[t]){if(e[t]==="+"&&A[t]==="-"||e[t]==="/"&&A[t]==="_")continue;return!1}return!0}function ey(e){}function ys(e,A){return e.origin===A.origin&&e.origin==="null"||e.protocol===A.protocol&&e.hostname===A.hostname&&e.port===A.port}function Ay(){let e,A;return{promise:new Promise((r,n)=>{e=r,A=n}),resolve:e,reject:A}}function ty(e){return e.controller.state==="aborted"}function ry(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function ny(e){return Fm[e.toLowerCase()]??e}function sy(e){let A=JSON.stringify(e);if(A===void 0)throw new TypeError("Value is not JSON serializable");return Qt(typeof A=="string"),A}var oy=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function FE(e,A,t=0,r=1){class n{#e;#A;#t;constructor(o,i){this.#e=o,this.#A=i,this.#t=0}next(){if(typeof this!="object"||this===null||!(#e in this))throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`);let o=this.#t,i=this.#e[A],a=i.length;if(o>=a)return{value:void 0,done:!0};let{[t]:c,[r]:g}=i[o];this.#t=o+1;let u;switch(this.#A){case"key":u=c;break;case"value":u=g;break;case"key+value":u=[c,g];break}return{value:u,done:!1}}}return delete n.prototype.constructor,Object.setPrototypeOf(n.prototype,oy),Object.defineProperties(n.prototype,{[Symbol.toStringTag]:{writable:!1,enumerable:!1,configurable:!0,value:`${e} Iterator`},next:{writable:!0,enumerable:!0,configurable:!0}}),function(s,o){return new n(s,o)}}function iy(e,A,t,r=0,n=1){let s=FE(e,t,r,n),o={keys:{writable:!0,enumerable:!0,configurable:!0,value:function(){return zr.brandCheck(this,A),s(this,"key")}},values:{writable:!0,enumerable:!0,configurable:!0,value:function(){return zr.brandCheck(this,A),s(this,"value")}},entries:{writable:!0,enumerable:!0,configurable:!0,value:function(){return zr.brandCheck(this,A),s(this,"key+value")}},forEach:{writable:!0,enumerable:!0,configurable:!0,value:function(a,c=globalThis){if(zr.brandCheck(this,A),zr.argumentLengthCheck(arguments,1,`${e}.forEach`),typeof a!="function")throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`);for(let{0:g,1:u}of s(this,"key+value"))a.call(c,u,g,this)}}};return Object.defineProperties(A.prototype,{...o,[Symbol.iterator]:{writable:!0,enumerable:!1,configurable:!0,value:o.entries.value}})}async function ay(e,A,t){let r=A,n=t,s;try{s=e.stream.getReader()}catch(o){n(o);return}try{r(await NE(s))}catch(o){n(o)}}function cy(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee=="function"}function uy(e){try{e.close(),e.byobRequest?.respond(0)}catch(A){if(!A.message.includes("Controller is already closed")&&!A.message.includes("ReadableStream is already closed"))throw A}}var ly=/[^\x00-\xFF]/;function ws(e){return Qt(!ly.test(e)),e}async function NE(e){let A=[],t=0;for(;;){let{done:r,value:n}=await e.read();if(r)return Buffer.concat(A,t);if(!Nm(n))throw new TypeError("Received non-Uint8Array chunk");A.push(n),t+=n.length}}function gy(e){Qt("protocol"in e);let A=e.protocol;return A==="about:"||A==="blob:"||A==="data:"}function Ra(e){return typeof e=="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function UE(e){Qt("protocol"in e);let A=e.protocol;return A==="http:"||A==="https:"}function Ey(e,A){let t=e;if(!t.startsWith("bytes"))return"failure";let r={position:5};if(A&&Et(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==61)return"failure";r.position++,A&&Et(a=>a===" "||a===" ",t,r);let n=Et(a=>{let c=a.charCodeAt(0);return c>=48&&c<=57},t,r),s=n.length?Number(n):null;if(A&&Et(a=>a===" "||a===" ",t,r),t.charCodeAt(r.position)!==45)return"failure";r.position++,A&&Et(a=>a===" "||a===" ",t,r);let o=Et(a=>{let c=a.charCodeAt(0);return c>=48&&c<=57},t,r),i=o.length?Number(o):null;return r.position<t.length||i===null&&s===null||s>i?"failure":{rangeStartValue:s,rangeEndValue:i}}function Qy(e,A,t){let r="bytes ";return r+=ws(`${e}`),r+="-",r+=ws(`${A}`),r+="/",r+=ws(`${t}`),r}var Sa=class extends fm{#e;constructor(A){super(),this.#e=A}_transform(A,t,r){if(!this._inflateStream){if(A.length===0){r();return}this._inflateStream=(A[0]&15)===8?pE.createInflate(this.#e):pE.createInflateRaw(this.#e),this._inflateStream.on("data",this.push.bind(this)),this._inflateStream.on("end",()=>this.push(null)),this._inflateStream.on("error",n=>this.destroy(n))}this._inflateStream.write(A,t,r)}_final(A){this._inflateStream&&(this._inflateStream.end(),this._inflateStream=null),A()}};function By(e){return new Sa(e)}function Iy(e){let A=null,t=null,r=null,n=ME("content-type",e);if(n===null)return"failure";for(let s of n){let o=Dm(s);o==="failure"||o.essence==="*/*"||(r=o,r.essence!==t?(A=null,r.parameters.has("charset")&&(A=r.parameters.get("charset")),t=r.essence):!r.parameters.has("charset")&&A!==null&&r.parameters.set("charset",A))}return r??"failure"}function hy(e){let A=e,t={position:0},r=[],n="";for(;t.position<A.length;){if(n+=Et(s=>s!=='"'&&s!==",",A,t),t.position<A.length)if(A.charCodeAt(t.position)===34){if(n+=ym(A,t),t.position<A.length)continue}else Qt(A.charCodeAt(t.position)===44),t.position++;n=bm(n,!0,!0,s=>s===9||s===32),r.push(n),n=""}return r}function ME(e,A){let t=A.get(e,!0);return t===null?null:hy(t)}var Cy=new TextDecoder;function dy(e){return e.length===0?"":(e[0]===239&&e[1]===187&&e[2]===191&&(e=e.subarray(3)),Cy.decode(e))}var Fa=class{get baseUrl(){return wE()}get origin(){return this.baseUrl?.origin}policyContainer=RE()},Na=class{settingsObject=new Fa},fy=new Na;LE.exports={isAborted:ty,isCancelled:ry,isValidEncodedURL:DE,createDeferredPromise:Ay,ReadableStreamFrom:Sm,tryUpgradeRequestToAPotentiallyTrustworthyURL:ey,clampAndCoarsenConnectionTimingInfo:Om,coarsenedSharedCurrentTime:Pm,determineRequestsReferrer:Km,makePolicyContainer:RE,clonePolicyContainer:_m,appendFetchMetadata:Vm,appendRequestOriginHeader:qm,TAOCheck:Hm,corsCheck:Jm,crossOriginResourcePolicyCheck:Gm,createOpaqueTimingInfo:Wm,setRequestReferrerPolicyOnRedirect:Ym,isValidHTTPToken:mE,requestBadPort:Lm,requestCurrentURL:$r,responseURL:bE,responseLocationURL:Um,isBlobLike:Rm,isURLPotentiallyTrustworthy:Xr,isValidReasonPhrase:xm,sameOrigin:ys,normalizeMethod:ny,serializeJavascriptValueToJSONString:sy,iteratorMixin:iy,createIterator:FE,isValidHeaderName:vm,isValidHeaderValue:kE,isErrorLike:Tm,fullyReadBody:ay,bytesMatch:Zm,isReadableStreamLike:cy,readableStreamClose:uy,isomorphicEncode:ws,urlIsLocal:gy,urlHasHttpsScheme:Ra,urlIsHttpHttpsScheme:UE,readAllBytes:NE,simpleRangeHeaderValue:Ey,buildContentRange:Qy,parseMetadata:SE,createInflate:By,extractMimeType:Iy,getDecodeSplit:ME,utf8DecodeBytes:dy,environmentSettingsObject:fy}});var VA=f((V2,TE)=>{"use strict";TE.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}});var Ma=f((q2,xE)=>{"use strict";var{Blob:py,File:wy}=d("node:buffer"),{kState:SA}=VA(),{webidl:QA}=he(),Ua=class e{constructor(A,t,r={}){let n=t,s=r.type,o=r.lastModified??Date.now();this[SA]={blobLike:A,name:n,type:s,lastModified:o}}stream(...A){return QA.brandCheck(this,e),this[SA].blobLike.stream(...A)}arrayBuffer(...A){return QA.brandCheck(this,e),this[SA].blobLike.arrayBuffer(...A)}slice(...A){return QA.brandCheck(this,e),this[SA].blobLike.slice(...A)}text(...A){return QA.brandCheck(this,e),this[SA].blobLike.text(...A)}get size(){return QA.brandCheck(this,e),this[SA].blobLike.size}get type(){return QA.brandCheck(this,e),this[SA].blobLike.type}get name(){return QA.brandCheck(this,e),this[SA].name}get lastModified(){return QA.brandCheck(this,e),this[SA].lastModified}get[Symbol.toStringTag](){return"File"}};QA.converters.Blob=QA.interfaceConverter(py);function my(e){return e instanceof wy||e&&(typeof e.stream=="function"||typeof e.arrayBuffer=="function")&&e[Symbol.toStringTag]==="File"}xE.exports={FileLike:Ua,isFileLike:my}});var en=f((O2,HE)=>{"use strict";var{isBlobLike:bs,iteratorMixin:yy}=Me(),{kState:we}=VA(),{kEnumerableProperty:$t}=Y(),{FileLike:vE,isFileLike:by}=Ma(),{webidl:$}=he(),{File:JE}=d("node:buffer"),YE=d("node:util"),GE=globalThis.File??JE,jr=class e{constructor(A){if($.util.markAsUncloneable(this),A!==void 0)throw $.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]});this[we]=[]}append(A,t,r=void 0){$.brandCheck(this,e);let n="FormData.append";if($.argumentLengthCheck(arguments,2,n),arguments.length===3&&!bs(t))throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'");A=$.converters.USVString(A,n,"name"),t=bs(t)?$.converters.Blob(t,n,"value",{strict:!1}):$.converters.USVString(t,n,"value"),r=arguments.length===3?$.converters.USVString(r,n,"filename"):void 0;let s=La(A,t,r);this[we].push(s)}delete(A){$.brandCheck(this,e);let t="FormData.delete";$.argumentLengthCheck(arguments,1,t),A=$.converters.USVString(A,t,"name"),this[we]=this[we].filter(r=>r.name!==A)}get(A){$.brandCheck(this,e);let t="FormData.get";$.argumentLengthCheck(arguments,1,t),A=$.converters.USVString(A,t,"name");let r=this[we].findIndex(n=>n.name===A);return r===-1?null:this[we][r].value}getAll(A){$.brandCheck(this,e);let t="FormData.getAll";return $.argumentLengthCheck(arguments,1,t),A=$.converters.USVString(A,t,"name"),this[we].filter(r=>r.name===A).map(r=>r.value)}has(A){$.brandCheck(this,e);let t="FormData.has";return $.argumentLengthCheck(arguments,1,t),A=$.converters.USVString(A,t,"name"),this[we].findIndex(r=>r.name===A)!==-1}set(A,t,r=void 0){$.brandCheck(this,e);let n="FormData.set";if($.argumentLengthCheck(arguments,2,n),arguments.length===3&&!bs(t))throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'");A=$.converters.USVString(A,n,"name"),t=bs(t)?$.converters.Blob(t,n,"name",{strict:!1}):$.converters.USVString(t,n,"name"),r=arguments.length===3?$.converters.USVString(r,n,"name"):void 0;let s=La(A,t,r),o=this[we].findIndex(i=>i.name===A);o!==-1?this[we]=[...this[we].slice(0,o),s,...this[we].slice(o+1).filter(i=>i.name!==A)]:this[we].push(s)}[YE.inspect.custom](A,t){let r=this[we].reduce((s,o)=>(s[o.name]?Array.isArray(s[o.name])?s[o.name].push(o.value):s[o.name]=[s[o.name],o.value]:s[o.name]=o.value,s),{__proto__:null});t.depth??=A,t.colors??=!0;let n=YE.formatWithOptions(t,r);return`FormData ${n.slice(n.indexOf("]")+2)}`}};yy("FormData",jr,we,"name","value");Object.defineProperties(jr.prototype,{append:$t,delete:$t,get:$t,getAll:$t,has:$t,set:$t,[Symbol.toStringTag]:{value:"FormData",configurable:!0}});function La(e,A,t){if(typeof A!="string"){if(by(A)||(A=A instanceof Blob?new GE([A],"blob",{type:A.type}):new vE(A,"blob",{type:A.type})),t!==void 0){let r={type:A.type,lastModified:A.lastModified};A=A instanceof JE?new GE([A],t,r):new vE(A,t,r)}}return{name:e,value:A}}HE.exports={FormData:jr,makeEntry:La}});var _E=f((P2,WE)=>{"use strict";var{isUSVString:VE,bufferToLowerCasedHeaderName:Dy}=Y(),{utf8DecodeBytes:ky}=Me(),{HTTP_TOKEN_CODEPOINTS:Ry,isomorphicDecode:qE}=be(),{isFileLike:Sy}=Ma(),{makeEntry:Fy}=en(),Ds=d("node:assert"),{File:Ny}=d("node:buffer"),Uy=globalThis.File??Ny,My=Buffer.from('form-data; name="'),OE=Buffer.from("; filename"),Ly=Buffer.from("--"),Ty=Buffer.from(`--\r
|
|
4
|
-
|
|
5
|
-
`).replace(/%0D/ig,"\r").replace(/%22/g,'"'),t)}function jt(e,A,t){let r=t.position;for(;r<A.length&&e(A[r]);)++r;return A.subarray(t.position,t.position=r)}function Ta(e,A,t,r){let n=0,s=e.length-1;if(A)for(;n<e.length&&r(e[n]);)n++;if(t)for(;s>0&&r(e[s]);)s--;return n===0&&s===e.length-1?e:e.subarray(n,s+1)}function ks(e,A,t){if(e.length<A.length)return!1;for(let r=0;r<A.length;r++)if(A[r]!==e[t.position+r])return!1;return!0}WE.exports={multipartFormDataParser:Yy,validateBoundary:vy}});var tr=f((W2,rQ)=>{"use strict";var An=Y(),{ReadableStreamFrom:Jy,isBlobLike:KE,isReadableStreamLike:Hy,readableStreamClose:Vy,createDeferredPromise:qy,fullyReadBody:Oy,extractMimeType:Py,utf8DecodeBytes:XE}=Me(),{FormData:ZE}=en(),{kState:Ar}=VA(),{webidl:Wy}=he(),{Blob:_y}=d("node:buffer"),xa=d("node:assert"),{isErrored:$E,isDisturbed:Ky}=d("node:stream"),{isArrayBuffer:Zy}=d("node:util/types"),{serializeAMimeType:zy}=be(),{multipartFormDataParser:Xy}=_E(),va;try{let e=d("node:crypto");va=A=>e.randomInt(0,A)}catch{va=e=>Math.floor(Math.random(e))}var Rs=new TextEncoder;function $y(){}var jE=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0,eQ;jE&&(eQ=new FinalizationRegistry(e=>{let A=e.deref();A&&!A.locked&&!Ky(A)&&!$E(A)&&A.cancel("Response object has been garbage collected").catch($y)}));function AQ(e,A=!1){let t=null;e instanceof ReadableStream?t=e:KE(e)?t=e.stream():t=new ReadableStream({async pull(a){let c=typeof n=="string"?Rs.encode(n):n;c.byteLength&&a.enqueue(c),queueMicrotask(()=>Vy(a))},start(){},type:"bytes"}),xa(Hy(t));let r=null,n=null,s=null,o=null;if(typeof e=="string")n=e,o="text/plain;charset=UTF-8";else if(e instanceof URLSearchParams)n=e.toString(),o="application/x-www-form-urlencoded;charset=UTF-8";else if(Zy(e))n=new Uint8Array(e.slice());else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength));else if(An.isFormDataLike(e)){let a=`----formdata-undici-0${`${va(1e11)}`.padStart(11,"0")}`,c=`--${a}\r
|
|
6
|
-
|
|
7
|
-
`)
|
|
8
|
-
|
|
9
|
-
${u(
|
|
10
|
-
`)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`);l.push(h),s+=h.byteLength,Q&&(s=null),n=e,r=async function*(){for(let B of l)B.stream?yield*B.stream():yield B},o=`multipart/form-data; boundary=${a}`}else if(KE(e))n=e,s=e.size,e.type&&(o=e.type);else if(typeof e[Symbol.asyncIterator]=="function"){if(A)throw new TypeError("keepalive");if(An.isDisturbed(e)||e.locked)throw new TypeError("Response body object should not be disturbed or locked");t=e instanceof ReadableStream?e:Jy(e)}if((typeof n=="string"||An.isBuffer(n))&&(s=Buffer.byteLength(n)),r!=null){let a;t=new ReadableStream({async start(){a=r(e)[Symbol.asyncIterator]()},async pull(c){let{value:g,done:u}=await a.next();if(u)queueMicrotask(()=>{c.close(),c.byobRequest?.respond(0)});else if(!$E(t)){let l=new Uint8Array(g);l.byteLength&&c.enqueue(l)}return c.desiredSize>0},async cancel(c){await a.return()},type:"bytes"})}return[{stream:t,source:n,length:s},o]}function jy(e,A=!1){return e instanceof ReadableStream&&(xa(!An.isDisturbed(e),"The body has already been consumed."),xa(!e.locked,"The stream is locked.")),AQ(e,A)}function eb(e,A){let[t,r]=A.stream.tee();return A.stream=t,{stream:r,length:A.length,source:A.source}}function Ab(e){if(e.aborted)throw new DOMException("The operation was aborted.","AbortError")}function tb(e){return{blob(){return er(this,t=>{let r=zE(this);return r===null?r="":r&&(r=zy(r)),new _y([t],{type:r})},e)},arrayBuffer(){return er(this,t=>new Uint8Array(t).buffer,e)},text(){return er(this,XE,e)},json(){return er(this,nb,e)},formData(){return er(this,t=>{let r=zE(this);if(r!==null)switch(r.essence){case"multipart/form-data":{let n=Xy(t,r);if(n==="failure")throw new TypeError("Failed to parse body as FormData.");let s=new ZE;return s[Ar]=n,s}case"application/x-www-form-urlencoded":{let n=new URLSearchParams(t.toString()),s=new ZE;for(let[o,i]of n)s.append(o,i);return s}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')},e)},bytes(){return er(this,t=>new Uint8Array(t),e)}}}function rb(e){Object.assign(e.prototype,tb(e))}async function er(e,A,t){if(Wy.brandCheck(e,t),tQ(e))throw new TypeError("Body is unusable: Body has already been read");Ab(e[Ar]);let r=qy(),n=o=>r.reject(o),s=o=>{try{r.resolve(A(o))}catch(i){n(i)}};return e[Ar].body==null?(s(Buffer.allocUnsafe(0)),r.promise):(await Oy(e[Ar].body,s,n),r.promise)}function tQ(e){let A=e[Ar].body;return A!=null&&(A.stream.locked||An.isDisturbed(A.stream))}function nb(e){return JSON.parse(XE(e))}function zE(e){let A=e[Ar].headersList,t=Py(A);return t==="failure"?null:t}rQ.exports={extractBody:AQ,safelyExtractBody:jy,cloneBody:eb,mixinBody:rb,streamRegistry:eQ,hasFinalizationRegistry:jE,bodyUnusable:tQ}});var dQ=f((_2,CQ)=>{"use strict";var k=d("node:assert"),F=Y(),{channels:nQ}=qt(),Ya=da(),{RequestContentLengthMismatchError:Bt,ResponseContentLengthMismatchError:sQ,RequestAbortedError:EQ,InvalidArgumentError:sb,HeadersTimeoutError:ob,HeadersOverflowError:ib,SocketError:rr,InformationalError:nr,BodyTimeoutError:ab,HTTPParserError:cb,ResponseExceededMaxSizeError:ub}=q(),{kUrl:QQ,kReset:De,kClient:Us,kParser:j,kBlocking:nn,kRunning:ce,kPending:BQ,kSize:oQ,kWriting:qA,kQueue:Xe,kNoRef:tn,kKeepAliveDefaultTimeout:lb,kHostHeader:gb,kPendingIdx:Eb,kRunningIdx:Pe,kError:me,kPipelining:Ms,kSocket:ht,kKeepAliveTimeoutValue:Ts,kMaxHeadersSize:Ga,kKeepAliveMaxTimeout:Qb,kKeepAliveTimeoutThreshold:Bb,kHeadersTimeout:Ib,kBodyTimeout:hb,kStrictContentLength:Va,kMaxRequests:iQ,kCounter:Cb,kMaxResponseSize:db,kOnError:aQ,kResume:FA,kHTTPContext:IQ}=Ae(),Le=eE(),cQ=Buffer.alloc(0),Ss=Buffer[Symbol.species],Fs=F.addListener,fb=F.removeAllListeners,Ct=Symbol("kIdleSocketValidation"),It=Symbol("kIdleSocketValidationTimeout"),Wa=Symbol("kSocketUsed"),Ja;async function pb(){let e=process.env.JEST_WORKER_ID?wa():void 0,A;try{A=await WebAssembly.compile(rE())}catch{A=await WebAssembly.compile(e||wa())}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(t,r,n)=>0,wasm_on_status:(t,r,n)=>{k(ne.ptr===t);let s=r-IA+BA.byteOffset;return ne.onStatus(new Ss(BA.buffer,s,n))||0},wasm_on_message_begin:t=>(k(ne.ptr===t),ne.onMessageBegin()||0),wasm_on_header_field:(t,r,n)=>{k(ne.ptr===t);let s=r-IA+BA.byteOffset;return ne.onHeaderField(new Ss(BA.buffer,s,n))||0},wasm_on_header_value:(t,r,n)=>{k(ne.ptr===t);let s=r-IA+BA.byteOffset;return ne.onHeaderValue(new Ss(BA.buffer,s,n))||0},wasm_on_headers_complete:(t,r,n,s)=>(k(ne.ptr===t),ne.onHeadersComplete(r,!!n,!!s)||0),wasm_on_body:(t,r,n)=>{k(ne.ptr===t);let s=r-IA+BA.byteOffset;return ne.onBody(new Ss(BA.buffer,s,n))||0},wasm_on_message_complete:t=>(k(ne.ptr===t),ne.onMessageComplete()||0)}})}var Ha=null,qa=pb();qa.catch();var ne=null,BA=null,Ns=0,IA=null,wb=0,rn=1,sr=2|rn,Ls=4|rn,Oa=8|wb,Pa=class{constructor(A,t,{exports:r}){k(Number.isFinite(A[Ga])&&A[Ga]>0),this.llhttp=r,this.ptr=this.llhttp.llhttp_alloc(Le.TYPE.RESPONSE),this.client=A,this.socket=t,this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.statusCode=null,this.statusText="",this.upgrade=!1,this.headers=[],this.headersSize=0,this.headersMaxSize=A[Ga],this.shouldKeepAlive=!1,this.paused=!1,this.resume=this.resume.bind(this),this.bytesRead=0,this.keepAlive="",this.contentLength="",this.connection="",this.maxResponseSize=A[db]}setTimeout(A,t){A!==this.timeoutValue||t&rn^this.timeoutType&rn?(this.timeout&&(Ya.clearTimeout(this.timeout),this.timeout=null),A&&(t&rn?this.timeout=Ya.setFastTimeout(uQ,A,new WeakRef(this)):(this.timeout=setTimeout(uQ,A,new WeakRef(this)),this.timeout.unref())),this.timeoutValue=A):this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.timeoutType=t}resume(){this.socket.destroyed||!this.paused||(k(this.ptr!=null),k(ne==null),this.llhttp.llhttp_resume(this.ptr),k(this.timeoutType===Ls),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),this.paused=!1,this.execute(this.socket.read()||cQ),this.readMore())}readMore(){for(;!this.paused&&this.ptr;){let A=this.socket.read();if(A===null)break;this.execute(A)}}execute(A){k(this.ptr!=null),k(ne==null),k(!this.paused);let{socket:t,llhttp:r}=this;A.length>Ns&&(IA&&r.free(IA),Ns=Math.ceil(A.length/4096)*4096,IA=r.malloc(Ns)),new Uint8Array(r.memory.buffer,IA,Ns).set(A);try{let n;try{BA=A,ne=this,n=r.llhttp_execute(this.ptr,IA,A.length)}catch(o){throw o}finally{ne=null,BA=null}let s=r.llhttp_get_error_pos(this.ptr)-IA;if(n!==Le.ERROR.OK){let o=A.subarray(s);if(n===Le.ERROR.PAUSED_UPGRADE)this.onUpgrade(o);else if(n===Le.ERROR.PAUSED)this.paused=!0,t.unshift(o);else throw this.createError(n,o)}}catch(n){F.destroy(t,n)}}finish(){k(ne===null),k(this.ptr!=null),k(!this.paused);let{llhttp:A}=this,t;try{ne=this,t=A.llhttp_finish(this.ptr)}finally{ne=null}return t===Le.ERROR.OK?null:t===Le.ERROR.PAUSED||t===Le.ERROR.PAUSED_UPGRADE?(this.paused=!0,null):this.createError(t,cQ)}createError(A,t){let{llhttp:r,contentLength:n,bytesRead:s}=this;if(n&&s!==parseInt(n,10))return new sQ;let o=r.llhttp_get_error_reason(this.ptr),i="";if(o){let a=new Uint8Array(r.memory.buffer,o).indexOf(0);i="Response does not match the HTTP/1.1 protocol ("+Buffer.from(r.memory.buffer,o,a).toString()+")"}return new cb(i,Le.ERROR[A],t)}destroy(){k(this.ptr!=null),k(ne==null),this.llhttp.llhttp_free(this.ptr),this.ptr=null,this.timeout&&Ya.clearTimeout(this.timeout),this.timeout=null,this.timeoutValue=null,this.timeoutType=null,this.paused=!1}onStatus(A){this.statusText=A.toString()}onMessageBegin(){let{socket:A,client:t}=this;if(A.destroyed)return-1;if(t[ce]===0)return F.destroy(A,new rr("bad response",F.getSocketInfo(A))),-1;let r=t[Xe][t[Pe]];if(!r)return-1;r.onResponseStarted()}onHeaderField(A){let t=this.headers.length;(t&1)===0?this.headers.push(A):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]),this.trackHeader(A.length)}onHeaderValue(A){let t=this.headers.length;(t&1)===1?(this.headers.push(A),t+=1):this.headers[t-1]=Buffer.concat([this.headers[t-1],A]);let r=this.headers[t-2];if(r.length===10){let n=F.bufferToLowerCasedHeaderName(r);n==="keep-alive"?this.keepAlive+=A.toString():n==="connection"&&(this.connection+=A.toString())}else r.length===14&&F.bufferToLowerCasedHeaderName(r)==="content-length"&&(this.contentLength+=A.toString());this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A,this.headersSize>=this.headersMaxSize&&F.destroy(this.socket,new ib)}onUpgrade(A){let{upgrade:t,client:r,socket:n,headers:s,statusCode:o}=this;k(t),k(r[ht]===n),k(!n.destroyed),k(!this.paused),k((s.length&1)===0);let i=r[Xe][r[Pe]];k(i),k(i.upgrade||i.method==="CONNECT"),this.statusCode=null,this.statusText="",this.shouldKeepAlive=null,this.headers=[],this.headersSize=0,n.unshift(A),n[j].destroy(),n[j]=null,n[Us]=null,n[me]=null,fb(n),r[ht]=null,r[IQ]=null,r[Xe][r[Pe]++]=null,r.emit("disconnect",r[QQ],[r],new nr("upgrade"));try{i.onUpgrade(o,s,n)}catch(a){F.destroy(n,a)}r[FA]()}onHeadersComplete(A,t,r){let{client:n,socket:s,headers:o,statusText:i}=this;if(s.destroyed)return-1;if(n[ce]===0)return F.destroy(s,new rr("bad response",F.getSocketInfo(s))),-1;let a=n[Xe][n[Pe]];if(!a)return-1;if(k(!this.upgrade),k(this.statusCode<200),A===100)return F.destroy(s,new rr("bad response",F.getSocketInfo(s))),-1;if(t&&!a.upgrade)return F.destroy(s,new rr("bad upgrade",F.getSocketInfo(s))),-1;if(k(this.timeoutType===sr),this.statusCode=A,this.shouldKeepAlive=r||a.method==="HEAD"&&!s[De]&&this.connection.toLowerCase()==="keep-alive",this.statusCode>=200){let g=a.bodyTimeout!=null?a.bodyTimeout:n[hb];this.setTimeout(g,Ls)}else this.timeout&&this.timeout.refresh&&this.timeout.refresh();if(a.method==="CONNECT")return k(n[ce]===1),this.upgrade=!0,2;if(t)return k(n[ce]===1),this.upgrade=!0,2;if(k((this.headers.length&1)===0),this.headers=[],this.headersSize=0,this.shouldKeepAlive&&n[Ms]){let g=this.keepAlive?F.parseKeepAliveTimeout(this.keepAlive):null;if(g!=null){let u=Math.min(g-n[Bb],n[Qb]);u<=0?s[De]=!0:n[Ts]=u}else n[Ts]=n[lb]}else s[De]=!0;let c=a.onHeaders(A,o,this.resume,i)===!1;return a.aborted?-1:a.method==="HEAD"||A<200?1:(s[nn]&&(s[nn]=!1,n[FA]()),c?Le.ERROR.PAUSED:0)}onBody(A){let{client:t,socket:r,statusCode:n,maxResponseSize:s}=this;if(r.destroyed)return-1;let o=t[Xe][t[Pe]];if(k(o),k(this.timeoutType===Ls),this.timeout&&this.timeout.refresh&&this.timeout.refresh(),k(n>=200),s>-1&&this.bytesRead+A.length>s)return F.destroy(r,new ub),-1;if(this.bytesRead+=A.length,o.onData(A)===!1)return Le.ERROR.PAUSED}onMessageComplete(){let{client:A,socket:t,statusCode:r,upgrade:n,headers:s,contentLength:o,bytesRead:i,shouldKeepAlive:a}=this;if(t.destroyed&&(!r||a))return-1;if(n)return;k(r>=100),k((this.headers.length&1)===0);let c=A[Xe][A[Pe]];if(k(c),this.statusCode=null,this.statusText="",this.bytesRead=0,this.contentLength="",this.keepAlive="",this.connection="",this.headers=[],this.headersSize=0,!(r<200)){if(c.method!=="HEAD"&&o&&i!==parseInt(o,10))return F.destroy(t,new sQ),-1;if(c.onComplete(s),A[Xe][A[Pe]++]=null,t[Wa]=!0,t[qA])return k(A[ce]===0),F.destroy(t,new nr("reset")),Le.ERROR.PAUSED;if(a){if(t[De]&&A[ce]===0)return F.destroy(t,new nr("reset")),Le.ERROR.PAUSED;A[Ms]==null||A[Ms]===1?setImmediate(()=>A[FA]()):A[FA]()}else return F.destroy(t,new nr("reset")),Le.ERROR.PAUSED}}};function uQ(e){let{socket:A,timeoutType:t,client:r,paused:n}=e.deref();t===sr?(!A[qA]||A.writableNeedDrain||r[ce]>1)&&(k(!n,"cannot be paused while waiting for headers"),F.destroy(A,new ob)):t===Ls?n||F.destroy(A,new ab):t===Oa&&(k(r[ce]===0&&r[Ts]),F.destroy(A,new nr("socket idle timeout")))}async function mb(e,A){e[ht]=A,Ha||(Ha=await qa,qa=null),A[tn]=!1,A[qA]=!1,A[De]=!1,A[nn]=!1,A[Ct]=0,A[It]=null,A[Wa]=!1,A[j]=new Pa(e,A,Ha),Fs(A,"error",function(r){k(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");let n=this[j];if(r.code==="ECONNRESET"&&n.statusCode&&!n.shouldKeepAlive){let s=n.finish();s&&(this[me]=s,this[Us][aQ](s));return}this[me]=r,this[Us][aQ](r)}),Fs(A,"readable",function(){let r=this[j];r&&r.readMore()}),Fs(A,"end",function(){let r=this[j];if(r.statusCode&&!r.shouldKeepAlive){let n=r.finish();n&&F.destroy(this,n);return}F.destroy(this,new rr("other side closed",F.getSocketInfo(this)))}),Fs(A,"close",function(){let r=this[Us],n=this[j];hQ(this),n&&(!this[me]&&n.statusCode&&!n.shouldKeepAlive&&(this[me]=n.finish()||this[me]),this[j].destroy(),this[j]=null);let s=this[me]||new rr("closed",F.getSocketInfo(this));if(r[ht]=null,r[IQ]=null,r.destroyed){k(r[BQ]===0);let o=r[Xe].splice(r[Pe]);for(let i=0;i<o.length;i++){let a=o[i];F.errorRequest(r,a,s)}}else if(r[ce]>0&&s.code!=="UND_ERR_INFO"){let o=r[Xe][r[Pe]];r[Xe][r[Pe]++]=null,F.errorRequest(r,o,s)}r[Eb]=r[Pe],k(r[ce]===0),r.emit("disconnect",r[QQ],[r],s),r[FA]()});let t=!1;return A.on("close",()=>{t=!0}),{version:"h1",defaultPipelining:1,write(...r){return kb(e,...r)},resume(){bb(e)},destroy(r,n){t?queueMicrotask(n):A.destroy(r).on("close",n)},get destroyed(){return A.destroyed},busy(r){return!!(A[qA]||A[De]||A[nn]||A[Ct]===1||r&&(e[ce]>0&&!r.idempotent||e[ce]>0&&(r.upgrade||r.method==="CONNECT")||e[ce]>0&&F.bodyLength(r.body)!==0&&(F.isStream(r.body)||F.isAsyncIterable(r.body)||F.isFormDataLike(r.body))))}}}function hQ(e){e[It]&&(clearTimeout(e[It]),e[It]=null),e[Ct]=0}function yb(e,A){A[Ct]=1,A[It]=setTimeout(()=>{A[It]=null,A[Ct]=2,e[ht]===A&&!A.destroyed&&e[FA]()},0),A[It].unref?.()}function bb(e){let A=e[ht];if(A&&!A.destroyed){if(e[oQ]===0?!A[tn]&&A.unref&&(A.unref(),A[tn]=!0):A[tn]&&A.ref&&(A.ref(),A[tn]=!1),e[ce]===0&&e[BQ]>0&&A[Wa]){if(A[Ct]===0)return yb(e,A),A[j].readMore(),A.destroyed,void 0;if(A[Ct]===1)return A[j].readMore(),A.destroyed,void 0}if(e[ce]===0&&(A[j].readMore(),A.destroyed))return;if(e[oQ]===0)A[j].timeoutType!==Oa&&A[j].setTimeout(e[Ts],Oa);else if(e[ce]>0&&A[j].statusCode<200&&A[j].timeoutType!==sr){let t=e[Xe][e[Pe]],r=t.headersTimeout!=null?t.headersTimeout:e[Ib];A[j].setTimeout(r,sr)}}}function Db(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function kb(e,A){let{method:t,path:r,host:n,upgrade:s,blocking:o,reset:i}=A,{body:a,headers:c,contentLength:g}=A,u=t==="PUT"||t==="POST"||t==="PATCH"||t==="QUERY"||t==="PROPFIND"||t==="PROPPATCH";if(F.isFormDataLike(a)){Ja||(Ja=tr().extractBody);let[B,I]=Ja(a);A.contentType==null&&c.push("content-type",I),a=B.stream,g=B.length}else if(F.isBlobLike(a)&&A.contentType==null){let B=a.type;if(B){let I=`${B}`;if(!F.isValidHeaderValue(I))return F.errorRequest(e,A,new sb("invalid content-type header")),!1;c.push("content-type",I)}}a&&typeof a.read=="function"&&a.read(0);let l=F.bodyLength(a);if(g=l??g,g===null&&(g=A.contentLength),g===0&&!u&&(g=null),Db(t)&&g>0&&A.contentLength!==null&&A.contentLength!==g){if(e[Va])return F.errorRequest(e,A,new Bt),!1;process.emitWarning(new Bt)}let E=e[ht];hQ(E);let Q=B=>{A.aborted||A.completed||(F.errorRequest(e,A,B||new EQ),F.destroy(a),F.destroy(E,new nr("aborted")))};try{A.onConnect(Q)}catch(B){F.errorRequest(e,A,B)}if(A.aborted)return!1;t==="HEAD"&&(E[De]=!0),(s||t==="CONNECT")&&(E[De]=!0),i!=null&&(E[De]=i),e[iQ]&&E[Cb]++>=e[iQ]&&(E[De]=!0),o&&(E[nn]=!0);let h=`${t} ${r} HTTP/1.1\r
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
`,"latin1"),n.write(A),n.uncork(),r.onBodySent(A),!i&&r.reset!==!1&&(n[De]=!0)):s===0?n.write(`${o}content-length: 0\r
|
|
25
|
-
\r
|
|
26
|
-
`,"latin1"):(k(s===null,"no body must not have content length"),n.write(`${o}\r
|
|
27
|
-
`,"latin1")),r.onRequestSent(),t[FA]()}catch(a){e(a)}}async function Sb(e,A,t,r,n,s,o,i){k(s===A.size,"blob body must have content length");try{if(s!=null&&s!==A.size)throw new Bt;let a=Buffer.from(await A.arrayBuffer());n.cork(),n.write(`${o}content-length: ${s}\r
|
|
28
|
-
\r
|
|
29
|
-
`,"latin1"),n.write(a),n.uncork(),r.onBodySent(a),r.onRequestSent(),!i&&r.reset!==!1&&(n[De]=!0),t[FA]()}catch(a){e(a)}}async function gQ(e,A,t,r,n,s,o,i){k(s!==0||t[ce]===0,"iterator body cannot be pipelined");let a=null;function c(){if(a){let l=a;a=null,l()}}let g=()=>new Promise((l,E)=>{k(a===null),n[me]?E(n[me]):a=l});n.on("close",c).on("drain",c);let u=new xs({abort:e,socket:n,request:r,contentLength:s,client:t,expectsPayload:i,header:o});try{for await(let l of A){if(n[me])throw n[me];u.write(l)||await g()}u.end()}catch(l){u.destroy(l)}finally{n.off("close",c).off("drain",c)}}var xs=class{constructor({abort:A,socket:t,request:r,contentLength:n,client:s,expectsPayload:o,header:i}){this.socket=t,this.request=r,this.contentLength=n,this.client=s,this.bytesWritten=0,this.expectsPayload=o,this.header=i,this.abort=A,t[qA]=!0}write(A){let{socket:t,request:r,contentLength:n,client:s,bytesWritten:o,expectsPayload:i,header:a}=this;if(t[me])throw t[me];if(t.destroyed)return!1;let c=Buffer.byteLength(A);if(!c)return!0;if(n!==null&&o+c>n){if(s[Va])throw new Bt;process.emitWarning(new Bt)}t.cork(),o===0&&(!i&&r.reset!==!1&&(t[De]=!0),n===null?t.write(`${a}transfer-encoding: chunked\r
|
|
30
|
-
`,"latin1"):t.write(`${a}content-length: ${n}\r
|
|
31
|
-
\r
|
|
32
|
-
`,"latin1")),n===null&&t.write(`\r
|
|
33
|
-
${c.toString(16)}\r
|
|
34
|
-
`,"latin1"),this.bytesWritten+=c;let g=t.write(A);return t.uncork(),r.onBodySent(A),g||t[j].timeout&&t[j].timeoutType===sr&&t[j].timeout.refresh&&t[j].timeout.refresh(),g}end(){let{socket:A,contentLength:t,client:r,bytesWritten:n,expectsPayload:s,header:o,request:i}=this;if(i.onRequestSent(),A[qA]=!1,A[me])throw A[me];if(!A.destroyed){if(n===0?s?A.write(`${o}content-length: 0\r
|
|
35
|
-
\r
|
|
36
|
-
`,"latin1"):A.write(`${o}\r
|
|
37
|
-
`,"latin1"):t===null&&A.write(`\r
|
|
38
|
-
0\r
|
|
39
|
-
\r
|
|
40
|
-
`,"latin1"),t!==null&&n!==t){if(r[Va])throw new Bt;process.emitWarning(new Bt)}A[j].timeout&&A[j].timeoutType===sr&&A[j].timeout.refresh&&A[j].timeout.refresh(),r[FA]()}}destroy(A){let{socket:t,client:r,abort:n}=this;t[qA]=!1,A&&(k(r[ce]<=1,"pipeline should only contain this request"),n(A))}};CQ.exports=mb});var kQ=f((K2,DQ)=>{"use strict";var We=d("node:assert"),{pipeline:Fb}=d("node:stream"),G=Y(),{RequestContentLengthMismatchError:_a,RequestAbortedError:fQ,SocketError:sn,InformationalError:Ka}=q(),{kUrl:vs,kReset:Gs,kClient:or,kRunning:Js,kPending:Nb,kQueue:OA,kPendingIdx:Za,kRunningIdx:$e,kError:eA,kSocket:Be,kStrictContentLength:Ub,kOnError:za,kMaxConcurrentStreams:bQ,kHTTP2Session:je,kResume:PA,kSize:Mb,kHTTPContext:Lb}=Ae(),NA=Symbol("open streams"),pQ,wQ=!1,Ys;try{Ys=d("node:http2")}catch{Ys={constants:{}}}var{constants:{HTTP2_HEADER_AUTHORITY:Tb,HTTP2_HEADER_METHOD:xb,HTTP2_HEADER_PATH:vb,HTTP2_HEADER_SCHEME:Yb,HTTP2_HEADER_CONTENT_LENGTH:Gb,HTTP2_HEADER_EXPECT:Jb,HTTP2_HEADER_STATUS:Hb}}=Ys;function Vb(e){let A=[];for(let[t,r]of Object.entries(e))if(Array.isArray(r))for(let n of r)A.push(Buffer.from(t),Buffer.from(n));else A.push(Buffer.from(t),Buffer.from(r));return A}async function qb(e,A){e[Be]=A,wQ||(wQ=!0,process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"}));let t=Ys.connect(e[vs],{createConnection:()=>A,peerMaxConcurrentStreams:e[bQ]});t[NA]=0,t[or]=e,t[Be]=A,G.addListener(t,"error",Pb),G.addListener(t,"frameError",Wb),G.addListener(t,"end",_b),G.addListener(t,"goaway",Kb),G.addListener(t,"close",function(){let{[or]:n}=this,{[Be]:s}=n,o=this[Be][eA]||this[eA]||new sn("closed",G.getSocketInfo(s));if(n[je]=null,n.destroyed){We(n[Nb]===0);let i=n[OA].splice(n[$e]);for(let a=0;a<i.length;a++){let c=i[a];G.errorRequest(n,c,o)}}}),t.unref(),e[je]=t,A[je]=t,G.addListener(A,"error",function(n){We(n.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[eA]=n,this[or][za](n)}),G.addListener(A,"end",function(){G.destroy(this,new sn("other side closed",G.getSocketInfo(this)))}),G.addListener(A,"close",function(){let n=this[eA]||new sn("closed",G.getSocketInfo(this));e[Be]=null,this[je]!=null&&this[je].destroy(n),e[Za]=e[$e],We(e[Js]===0),e.emit("disconnect",e[vs],[e],n),e[PA]()});let r=!1;return A.on("close",()=>{r=!0}),{version:"h2",defaultPipelining:1/0,write(...n){return zb(e,...n)},resume(){Ob(e)},destroy(n,s){r?queueMicrotask(s):A.destroy(n).on("close",s)},get destroyed(){return A.destroyed},busy(){return!1}}}function Ob(e){let A=e[Be];A?.destroyed===!1&&(e[Mb]===0&&e[bQ]===0?(A.unref(),e[je].unref()):(A.ref(),e[je].ref()))}function Pb(e){We(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID"),this[Be][eA]=e,this[or][za](e)}function Wb(e,A,t){if(t===0){let r=new Ka(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[Be][eA]=r,this[or][za](r)}}function _b(){let e=new sn("other side closed",G.getSocketInfo(this[Be]));this.destroy(e),G.destroy(this[Be],e)}function Kb(e){let A=this[eA]||new sn(`HTTP/2: "GOAWAY" frame received with code ${e}`,G.getSocketInfo(this)),t=this[or];if(t[Be]=null,t[Lb]=null,this[je]!=null&&(this[je].destroy(A),this[je]=null),G.destroy(this[Be],A),t[$e]<t[OA].length){let r=t[OA][t[$e]];t[OA][t[$e]++]=null,G.errorRequest(t,r,A),t[Za]=t[$e]}We(t[Js]===0),t.emit("disconnect",t[vs],[t],A),t[PA]()}function Zb(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function zb(e,A){let t=e[je],{method:r,path:n,host:s,upgrade:o,expectContinue:i,signal:a,headers:c}=A,{body:g}=A;if(o)return G.errorRequest(e,A,new Error("Upgrade not supported for H2")),!1;let u={};for(let w=0;w<c.length;w+=2){let R=c[w+0],x=c[w+1];if(Array.isArray(x))for(let O=0;O<x.length;O++)u[R]?u[R]+=`,${x[O]}`:u[R]=x[O];else u[R]=x}let l,{hostname:E,port:Q}=e[vs];u[Tb]=s||`${E}${Q?`:${Q}`:""}`,u[xb]=r;let h=w=>{A.aborted||A.completed||(w=w||new fQ,G.errorRequest(e,A,w),l!=null&&G.destroy(l,w),G.destroy(g,w),e[OA][e[$e]++]=null,e[PA]())};try{A.onConnect(h)}catch(w){G.errorRequest(e,A,w)}if(A.aborted)return!1;if(r==="CONNECT")return t.ref(),l=t.request(u,{endStream:!1,signal:a}),l.id&&!l.pending?(A.onUpgrade(null,null,l),++t[NA],e[OA][e[$e]++]=null):l.once("ready",()=>{A.onUpgrade(null,null,l),++t[NA],e[OA][e[$e]++]=null}),l.once("close",()=>{t[NA]-=1,t[NA]===0&&t.unref()}),!0;u[vb]=n,u[Yb]="https";let B=r==="PUT"||r==="POST"||r==="PATCH";g&&typeof g.read=="function"&&g.read(0);let I=G.bodyLength(g);if(G.isFormDataLike(g)){pQ??=tr().extractBody;let[w,R]=pQ(g);u["content-type"]=R,g=w.stream,I=w.length}if(I==null&&(I=A.contentLength),(I===0||!B)&&(I=null),Zb(r)&&I>0&&A.contentLength!=null&&A.contentLength!==I){if(e[Ub])return G.errorRequest(e,A,new _a),!1;process.emitWarning(new _a)}I!=null&&(We(g,"no body must not have content length"),u[Gb]=`${I}`),t.ref();let C=r==="GET"||r==="HEAD"||g===null;return i?(u[Jb]="100-continue",l=t.request(u,{endStream:C,signal:a}),l.once("continue",p)):(l=t.request(u,{endStream:C,signal:a}),p()),++t[NA],l.once("response",w=>{let{[Hb]:R,...x}=w;if(A.onResponseStarted(),A.aborted){let O=new fQ;G.errorRequest(e,A,O),G.destroy(l,O);return}A.onHeaders(Number(R),Vb(x),l.resume.bind(l),"")===!1&&l.pause(),l.on("data",O=>{A.onData(O)===!1&&l.pause()})}),l.once("end",()=>{(l.state?.state==null||l.state.state<6)&&A.onComplete([]),t[NA]===0&&t.unref(),h(new Ka("HTTP/2: stream half-closed (remote)")),e[OA][e[$e]++]=null,e[Za]=e[$e],e[PA]()}),l.once("close",()=>{t[NA]-=1,t[NA]===0&&t.unref()}),l.once("error",function(w){h(w)}),l.once("frameError",(w,R)=>{h(new Ka(`HTTP/2: "frameError" received - type ${w}, code ${R}`))}),!0;function p(){!g||I===0?mQ(h,l,null,e,A,e[Be],I,B):G.isBuffer(g)?mQ(h,l,g,e,A,e[Be],I,B):G.isBlobLike(g)?typeof g.stream=="function"?yQ(h,l,g.stream(),e,A,e[Be],I,B):$b(h,l,g,e,A,e[Be],I,B):G.isStream(g)?Xb(h,e[Be],B,l,g,e,A,I):G.isIterable(g)?yQ(h,l,g,e,A,e[Be],I,B):We(!1)}}function mQ(e,A,t,r,n,s,o,i){try{t!=null&&G.isBuffer(t)&&(We(o===t.byteLength,"buffer body must have content length"),A.cork(),A.write(t),A.uncork(),A.end(),n.onBodySent(t)),i||(s[Gs]=!0),n.onRequestSent(),r[PA]()}catch(a){e(a)}}function Xb(e,A,t,r,n,s,o,i){We(i!==0||s[Js]===0,"stream body cannot be pipelined");let a=Fb(n,r,g=>{g?(G.destroy(a,g),e(g)):(G.removeAllListeners(a),o.onRequestSent(),t||(A[Gs]=!0),s[PA]())});G.addListener(a,"data",c);function c(g){o.onBodySent(g)}}async function $b(e,A,t,r,n,s,o,i){We(o===t.size,"blob body must have content length");try{if(o!=null&&o!==t.size)throw new _a;let a=Buffer.from(await t.arrayBuffer());A.cork(),A.write(a),A.uncork(),A.end(),n.onBodySent(a),n.onRequestSent(),i||(s[Gs]=!0),r[PA]()}catch(a){e(a)}}async function yQ(e,A,t,r,n,s,o,i){We(o!==0||r[Js]===0,"iterator body cannot be pipelined");let a=null;function c(){if(a){let u=a;a=null,u()}}let g=()=>new Promise((u,l)=>{We(a===null),s[eA]?l(s[eA]):a=u});A.on("close",c).on("drain",c);try{for await(let u of t){if(s[eA])throw s[eA];let l=A.write(u);n.onBodySent(u),l||await g()}A.end(),n.onRequestSent(),i||(s[Gs]=!0),r[PA]()}catch(u){e(u)}finally{A.off("close",c).off("drain",c)}}DQ.exports=qb});var Vs=f((Z2,FQ)=>{"use strict";var hA=Y(),{kBodyUsed:on}=Ae(),$a=d("node:assert"),{InvalidArgumentError:jb}=q(),eD=d("node:events"),AD=[300,301,302,303,307,308],RQ=Symbol("body"),Hs=class{constructor(A){this[RQ]=A,this[on]=!1}async*[Symbol.asyncIterator](){$a(!this[on],"disturbed"),this[on]=!0,yield*this[RQ]}},Xa=class{constructor(A,t,r,n){if(t!=null&&(!Number.isInteger(t)||t<0))throw new jb("maxRedirections must be a positive number");hA.validateHandler(n,r.method,r.upgrade),this.dispatch=A,this.location=null,this.abort=null,this.opts={...r,maxRedirections:0},this.maxRedirections=t,this.handler=n,this.history=[],this.redirectionLimitReached=!1,hA.isStream(this.opts.body)?(hA.bodyLength(this.opts.body)===0&&this.opts.body.on("data",function(){$a(!1)}),typeof this.opts.body.readableDidRead!="boolean"&&(this.opts.body[on]=!1,eD.prototype.on.call(this.opts.body,"data",function(){this[on]=!0}))):this.opts.body&&typeof this.opts.body.pipeTo=="function"?this.opts.body=new Hs(this.opts.body):this.opts.body&&typeof this.opts.body!="string"&&!ArrayBuffer.isView(this.opts.body)&&hA.isIterable(this.opts.body)&&(this.opts.body=new Hs(this.opts.body))}onConnect(A){this.abort=A,this.handler.onConnect(A,{history:this.history})}onUpgrade(A,t,r){this.handler.onUpgrade(A,t,r)}onError(A){this.handler.onError(A)}onHeaders(A,t,r,n){if(this.location=this.history.length>=this.maxRedirections||hA.isDisturbed(this.opts.body)?null:tD(A,t),this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){this.request&&this.request.abort(new Error("max redirects")),this.redirectionLimitReached=!0,this.abort(new Error("max redirects"));return}if(this.opts.origin&&this.history.push(new URL(this.opts.path,this.opts.origin)),!this.location)return this.handler.onHeaders(A,t,r,n);let{origin:s,pathname:o,search:i}=hA.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin))),a=i?`${o}${i}`:o;this.opts.headers=rD(this.opts.headers,A===303,this.opts.origin!==s),this.opts.path=a,this.opts.origin=s,this.opts.maxRedirections=0,this.opts.query=null,A===303&&this.opts.method!=="HEAD"&&(this.opts.method="GET",this.opts.body=null)}onData(A){if(!this.location)return this.handler.onData(A)}onComplete(A){this.location?(this.location=null,this.abort=null,this.dispatch(this.opts,this)):this.handler.onComplete(A)}onBodySent(A){this.handler.onBodySent&&this.handler.onBodySent(A)}};function tD(e,A){if(AD.indexOf(e)===-1)return null;for(let t=0;t<A.length;t+=2)if(A[t].length===8&&hA.headerNameToString(A[t])==="location")return A[t+1]}function SQ(e,A,t){if(e.length===4)return hA.headerNameToString(e)==="host";if(A&&hA.headerNameToString(e).startsWith("content-"))return!0;if(t&&(e.length===13||e.length===6||e.length===19)){let r=hA.headerNameToString(e);return r==="authorization"||r==="cookie"||r==="proxy-authorization"}return!1}function rD(e,A,t){let r=[];if(Array.isArray(e))for(let n=0;n<e.length;n+=2)SQ(e[n],A,t)||r.push(e[n],e[n+1]);else if(e&&typeof e=="object")for(let n of Object.keys(e))SQ(n,A,t)||r.push(n,e[n]);else $a(e==null,"headers must be an object or an array");return r}FQ.exports=Xa});var qs=f((z2,NQ)=>{"use strict";var nD=Vs();function sD({maxRedirections:e}){return A=>function(r,n){let{maxRedirections:s=e}=r;if(!s)return A(r,n);let o=new nD(A,s,r,n);return r={...r,maxRedirections:0},A(r,o)}}NQ.exports=sD});var cr=f((X2,HQ)=>{"use strict";var UA=d("node:assert"),vQ=d("node:net"),oD=d("node:http"),dt=Y(),{channels:ir}=qt(),iD=Hg(),aD=_t(),{InvalidArgumentError:oe,InformationalError:cD,ClientDestroyedError:uD}=q(),lD=_r(),{kUrl:CA,kServerName:WA,kClient:gD,kBusy:ja,kConnect:ED,kResuming:ft,kRunning:gn,kPending:En,kSize:ln,kQueue:AA,kConnected:QD,kConnecting:ar,kNeedDrain:KA,kKeepAliveDefaultTimeout:UQ,kHostHeader:BD,kPendingIdx:tA,kRunningIdx:MA,kError:ID,kPipelining:Os,kKeepAliveTimeoutValue:hD,kMaxHeadersSize:CD,kKeepAliveMaxTimeout:dD,kKeepAliveTimeoutThreshold:fD,kHeadersTimeout:pD,kBodyTimeout:wD,kStrictContentLength:mD,kConnector:an,kMaxRedirections:yD,kMaxRequests:ec,kCounter:bD,kClose:DD,kDestroy:kD,kDispatch:RD,kInterceptors:MQ,kLocalAddress:cn,kMaxResponseSize:SD,kOnError:FD,kHTTPContext:ie,kMaxConcurrentStreams:ND,kResume:un}=Ae(),UD=dQ(),MD=kQ(),LQ=!1,_A=Symbol("kClosedResolve"),TQ=()=>{};function YQ(e){return e[Os]??e[ie]?.defaultPipelining??1}var Ac=class extends aD{constructor(A,{interceptors:t,maxHeaderSize:r,headersTimeout:n,socketTimeout:s,requestTimeout:o,connectTimeout:i,bodyTimeout:a,idleTimeout:c,keepAlive:g,keepAliveTimeout:u,maxKeepAliveTimeout:l,keepAliveMaxTimeout:E,keepAliveTimeoutThreshold:Q,socketPath:h,pipelining:B,tls:I,strictContentLength:C,maxCachedSessions:p,maxRedirections:w,connect:R,maxRequestsPerClient:x,localAddress:O,maxResponseSize:U,autoSelectFamily:W,autoSelectFamilyAttemptTimeout:Ue,maxConcurrentStreams:pe,allowH2:ae,webSocket:qe}={}){if(super({webSocket:qe}),g!==void 0)throw new oe("unsupported keepAlive, use pipelining=0 instead");if(s!==void 0)throw new oe("unsupported socketTimeout, use headersTimeout & bodyTimeout instead");if(o!==void 0)throw new oe("unsupported requestTimeout, use headersTimeout & bodyTimeout instead");if(c!==void 0)throw new oe("unsupported idleTimeout, use keepAliveTimeout instead");if(l!==void 0)throw new oe("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead");if(r!=null&&!Number.isFinite(r))throw new oe("invalid maxHeaderSize");if(h!=null&&typeof h!="string")throw new oe("invalid socketPath");if(i!=null&&(!Number.isFinite(i)||i<0))throw new oe("invalid connectTimeout");if(u!=null&&(!Number.isFinite(u)||u<=0))throw new oe("invalid keepAliveTimeout");if(E!=null&&(!Number.isFinite(E)||E<=0))throw new oe("invalid keepAliveMaxTimeout");if(Q!=null&&!Number.isFinite(Q))throw new oe("invalid keepAliveTimeoutThreshold");if(n!=null&&(!Number.isInteger(n)||n<0))throw new oe("headersTimeout must be a positive integer or zero");if(a!=null&&(!Number.isInteger(a)||a<0))throw new oe("bodyTimeout must be a positive integer or zero");if(R!=null&&typeof R!="function"&&typeof R!="object")throw new oe("connect must be a function or an object");if(w!=null&&(!Number.isInteger(w)||w<0))throw new oe("maxRedirections must be a positive number");if(x!=null&&(!Number.isInteger(x)||x<0))throw new oe("maxRequestsPerClient must be a positive number");if(O!=null&&(typeof O!="string"||vQ.isIP(O)===0))throw new oe("localAddress must be valid string IP address");if(U!=null&&(!Number.isInteger(U)||U<-1))throw new oe("maxResponseSize must be a positive number");if(Ue!=null&&(!Number.isInteger(Ue)||Ue<-1))throw new oe("autoSelectFamilyAttemptTimeout must be a positive number");if(ae!=null&&typeof ae!="boolean")throw new oe("allowH2 must be a valid boolean value");if(pe!=null&&(typeof pe!="number"||pe<1))throw new oe("maxConcurrentStreams must be a positive integer, greater than 0");typeof R!="function"&&(R=lD({...I,maxCachedSessions:p,allowH2:ae,socketPath:h,timeout:i,...W?{autoSelectFamily:W,autoSelectFamilyAttemptTimeout:Ue}:void 0,...R})),t?.Client&&Array.isArray(t.Client)?(this[MQ]=t.Client,LQ||(LQ=!0,process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"}))):this[MQ]=[LD({maxRedirections:w})],this[CA]=dt.parseOrigin(A),this[an]=R,this[Os]=B??1,this[CD]=r||oD.maxHeaderSize,this[UQ]=u??4e3,this[dD]=E??6e5,this[fD]=Q??2e3,this[hD]=this[UQ],this[WA]=null,this[cn]=O??null,this[ft]=0,this[KA]=0,this[BD]=`host: ${this[CA].hostname}${this[CA].port?`:${this[CA].port}`:""}\r
|
|
41
|
-
`,this[wD]=a??3e5,this[pD]=n??3e5,this[mD]=C??!0,this[yD]=w,this[ec]=x,this[_A]=null,this[SD]=U>-1?U:-1,this[ND]=pe??100,this[ie]=null,this[AA]=[],this[MA]=0,this[tA]=0,this[un]=yA=>tc(this,yA),this[FD]=yA=>GQ(this,yA)}get pipelining(){return this[Os]}set pipelining(A){this[Os]=A,this[un](!0)}get[En](){return this[AA].length-this[tA]}get[gn](){return this[tA]-this[MA]}get[ln](){return this[AA].length-this[MA]}get[QD](){return!!this[ie]&&!this[ar]&&!this[ie].destroyed}get[ja](){return!!(this[ie]?.busy(null)||this[ln]>=(YQ(this)||1)||this[En]>0)}[ED](A){JQ(this),this.once("connect",A)}[RD](A,t){let r=A.origin||this[CA].origin,n=new iD(r,A,t);return this[AA].push(n),this[ft]||(dt.bodyLength(n.body)==null&&dt.isIterable(n.body)?(this[ft]=1,queueMicrotask(()=>tc(this))):this[un](!0)),this[ft]&&this[KA]!==2&&this[ja]&&(this[KA]=2),this[KA]<2}async[DD](){return new Promise(A=>{this[ln]?this[_A]=A:A(null)})}async[kD](A){return new Promise(t=>{let r=this[AA].splice(this[tA]);for(let s=0;s<r.length;s++){let o=r[s];dt.errorRequest(this,o,A)}let n=()=>{this[_A]&&(this[_A](),this[_A]=null),t(null)};this[ie]?(this[ie].destroy(A,n),this[ie]=null):queueMicrotask(n),this[un]()})}},LD=qs();function GQ(e,A){if(e[gn]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){UA(e[tA]===e[MA]);let t=e[AA].splice(e[MA]);for(let r=0;r<t.length;r++){let n=t[r];dt.errorRequest(e,n,A)}UA(e[ln]===0)}}async function JQ(e){UA(!e[ar]),UA(!e[ie]);let{host:A,hostname:t,protocol:r,port:n}=e[CA];if(t[0]==="["){let s=t.indexOf("]");UA(s!==-1);let o=t.substring(1,s);UA(vQ.isIP(o)),t=o}e[ar]=!0,ir.beforeConnect.hasSubscribers&&ir.beforeConnect.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[ie]?.version,servername:e[WA],localAddress:e[cn]},connector:e[an]});try{let s=await new Promise((o,i)=>{e[an]({host:A,hostname:t,protocol:r,port:n,servername:e[WA],localAddress:e[cn]},(a,c)=>{a?i(a):o(c)})});if(e.destroyed){dt.destroy(s.on("error",TQ),new uD);return}UA(s);try{e[ie]=s.alpnProtocol==="h2"?await MD(e,s):await UD(e,s)}catch(o){throw s.destroy().on("error",TQ),o}e[ar]=!1,s[bD]=0,s[ec]=e[ec],s[gD]=e,s[ID]=null,ir.connected.hasSubscribers&&ir.connected.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[ie]?.version,servername:e[WA],localAddress:e[cn]},connector:e[an],socket:s}),e.emit("connect",e[CA],[e])}catch(s){if(e.destroyed)return;if(e[ar]=!1,ir.connectError.hasSubscribers&&ir.connectError.publish({connectParams:{host:A,hostname:t,protocol:r,port:n,version:e[ie]?.version,servername:e[WA],localAddress:e[cn]},connector:e[an],error:s}),s.code==="ERR_TLS_CERT_ALTNAME_INVALID")for(UA(e[gn]===0);e[En]>0&&e[AA][e[tA]].servername===e[WA];){let o=e[AA][e[tA]++];dt.errorRequest(e,o,s)}else GQ(e,s);e.emit("connectionError",e[CA],[e],s)}e[un]()}function xQ(e){e[KA]=0,e.emit("drain",e[CA],[e])}function tc(e,A){e[ft]!==2&&(e[ft]=2,TD(e,A),e[ft]=0,e[MA]>256&&(e[AA].splice(0,e[MA]),e[tA]-=e[MA],e[MA]=0))}function TD(e,A){for(;;){if(e.destroyed){UA(e[En]===0);return}if(e[_A]&&!e[ln]){e[_A](),e[_A]=null;return}if(e[ie]&&e[ie].resume(),e[ja])e[KA]=2;else if(e[KA]===2){A?(e[KA]=1,queueMicrotask(()=>xQ(e))):xQ(e);continue}if(e[En]===0||e[gn]>=(YQ(e)||1))return;let t=e[AA][e[tA]];if(e[CA].protocol==="https:"&&e[WA]!==t.servername){if(e[gn]>0)return;e[WA]=t.servername,e[ie]?.destroy(new cD("servername changed"),()=>{e[ie]=null,tc(e)})}if(e[ar])return;if(!e[ie]){JQ(e);return}if(e[ie].destroyed||e[ie].busy(t))return;!t.aborted&&e[ie].write(t)?e[tA]++:e[AA].splice(e[tA],1)}}HQ.exports=Ac});var rc=f((j2,VQ)=>{"use strict";var Ps=class{constructor(){this.bottom=0,this.top=0,this.list=new Array(2048),this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&2047)===this.bottom}push(A){this.list[this.top]=A,this.top=this.top+1&2047}shift(){let A=this.list[this.bottom];return A===void 0?null:(this.list[this.bottom]=void 0,this.bottom=this.bottom+1&2047,A)}};VQ.exports=class{constructor(){this.head=this.tail=new Ps}isEmpty(){return this.head.isEmpty()}push(A){this.head.isFull()&&(this.head=this.head.next=new Ps),this.head.push(A)}shift(){let A=this.tail,t=A.shift();return A.isEmpty()&&A.next!==null&&(this.tail=A.next),t}}});var OQ=f((ev,qQ)=>{var{kFree:xD,kConnected:vD,kPending:YD,kQueued:GD,kRunning:JD,kSize:HD}=Ae(),pt=Symbol("pool"),nc=class{constructor(A){this[pt]=A}get connected(){return this[pt][vD]}get free(){return this[pt][xD]}get pending(){return this[pt][YD]}get queued(){return this[pt][GD]}get running(){return this[pt][JD]}get size(){return this[pt][HD]}};qQ.exports=nc});var uc=f((Av,eB)=>{"use strict";var VD=_t(),qD=rc(),{kConnected:sc,kSize:PQ,kRunning:WQ,kPending:_Q,kQueued:Qn,kBusy:OD,kFree:PD,kUrl:WD,kClose:_D,kDestroy:KD,kDispatch:ZD}=Ae(),zD=OQ(),ke=Symbol("clients"),ye=Symbol("needDrain"),Bn=Symbol("queue"),oc=Symbol("closed resolve"),ic=Symbol("onDrain"),KQ=Symbol("onConnect"),ZQ=Symbol("onDisconnect"),zQ=Symbol("onConnectionError"),ac=Symbol("get dispatcher"),$Q=Symbol("add client"),jQ=Symbol("remove client"),XQ=Symbol("stats"),cc=class extends VD{constructor(A){super(A),this[Bn]=new qD,this[ke]=[],this[Qn]=0;let t=this;this[ic]=function(n,s){let o=t[Bn],i=!1;for(;!i;){let a=o.shift();if(!a)break;t[Qn]--,i=!this.dispatch(a.opts,a.handler)}this[ye]=i,!this[ye]&&t[ye]&&(t[ye]=!1,t.emit("drain",n,[t,...s])),t[oc]&&o.isEmpty()&&Promise.all(t[ke].map(a=>a.close())).then(t[oc])},this[KQ]=(r,n)=>{t.emit("connect",r,[t,...n])},this[ZQ]=(r,n,s)=>{t.emit("disconnect",r,[t,...n],s)},this[zQ]=(r,n,s)=>{t.emit("connectionError",r,[t,...n],s)},this[XQ]=new zD(this)}get[OD](){return this[ye]}get[sc](){return this[ke].filter(A=>A[sc]).length}get[PD](){return this[ke].filter(A=>A[sc]&&!A[ye]).length}get[_Q](){let A=this[Qn];for(let{[_Q]:t}of this[ke])A+=t;return A}get[WQ](){let A=0;for(let{[WQ]:t}of this[ke])A+=t;return A}get[PQ](){let A=this[Qn];for(let{[PQ]:t}of this[ke])A+=t;return A}get stats(){return this[XQ]}async[_D](){this[Bn].isEmpty()?await Promise.all(this[ke].map(A=>A.close())):await new Promise(A=>{this[oc]=A})}async[KD](A){for(;;){let t=this[Bn].shift();if(!t)break;t.handler.onError(A)}await Promise.all(this[ke].map(t=>t.destroy(A)))}[ZD](A,t){let r=this[ac]();return r?r.dispatch(A,t)||(r[ye]=!0,this[ye]=!this[ac]()):(this[ye]=!0,this[Bn].push({opts:A,handler:t}),this[Qn]++),!this[ye]}[$Q](A){return A.on("drain",this[ic]).on("connect",this[KQ]).on("disconnect",this[ZQ]).on("connectionError",this[zQ]),this[ke].push(A),this[ye]&&queueMicrotask(()=>{this[ye]&&this[ic](A[WD],[this,A])}),this}[jQ](A){A.close(()=>{let t=this[ke].indexOf(A);t!==-1&&this[ke].splice(t,1)}),this[ye]=this[ke].some(t=>!t[ye]&&t.closed!==!0&&t.destroyed!==!0)}};eB.exports={PoolBase:cc,kClients:ke,kNeedDrain:ye,kAddClient:$Q,kRemoveClient:jQ,kGetDispatcher:ac}});var ur=f((tv,nB)=>{"use strict";var{PoolBase:XD,kClients:Ws,kNeedDrain:$D,kAddClient:jD,kGetDispatcher:ek}=uc(),Ak=cr(),{InvalidArgumentError:lc}=q(),AB=Y(),{kUrl:tB,kInterceptors:tk}=Ae(),rk=_r(),gc=Symbol("options"),Ec=Symbol("connections"),rB=Symbol("factory");function nk(e,A){return new Ak(e,A)}var Qc=class extends XD{constructor(A,{connections:t,factory:r=nk,connect:n,connectTimeout:s,tls:o,maxCachedSessions:i,socketPath:a,autoSelectFamily:c,autoSelectFamilyAttemptTimeout:g,allowH2:u,...l}={}){if(t!=null&&(!Number.isFinite(t)||t<0))throw new lc("invalid connections");if(typeof r!="function")throw new lc("factory must be a function.");if(n!=null&&typeof n!="function"&&typeof n!="object")throw new lc("connect must be a function or an object");typeof n!="function"&&(n=rk({...o,maxCachedSessions:i,allowH2:u,socketPath:a,timeout:s,...c?{autoSelectFamily:c,autoSelectFamilyAttemptTimeout:g}:void 0,...n})),super(l),this[tk]=l.interceptors?.Pool&&Array.isArray(l.interceptors.Pool)?l.interceptors.Pool:[],this[Ec]=t||null,this[tB]=AB.parseOrigin(A),this[gc]={...AB.deepClone(l),connect:n,allowH2:u},this[gc].interceptors=l.interceptors?{...l.interceptors}:void 0,this[rB]=r,this.on("connectionError",(E,Q,h)=>{for(let B of Q){let I=this[Ws].indexOf(B);I!==-1&&this[Ws].splice(I,1)}})}[ek](){for(let A of this[Ws])if(!A[$D])return A;if(!this[Ec]||this[Ws].length<this[Ec]){let A=this[rB](this[tB],this[gc]);return this[jD](A),A}}};nB.exports=Qc});var cB=f((rv,aB)=>{"use strict";var{BalancedPoolMissingUpstreamError:sk,InvalidArgumentError:ok}=q(),{PoolBase:ik,kClients:de,kNeedDrain:In,kAddClient:ak,kRemoveClient:ck,kGetDispatcher:uk}=uc(),lk=ur(),{kUrl:Bc,kInterceptors:gk}=Ae(),{parseOrigin:sB}=Y(),oB=Symbol("factory"),_s=Symbol("options"),iB=Symbol("kGreatestCommonDivisor"),wt=Symbol("kCurrentWeight"),mt=Symbol("kIndex"),_e=Symbol("kWeight"),Ks=Symbol("kMaxWeightPerServer"),Zs=Symbol("kErrorPenalty");function Ek(e,A){if(e===0)return A;for(;A!==0;){let t=A;A=e%A,e=t}return e}function Qk(e,A){return new lk(e,A)}var Ic=class extends ik{constructor(A=[],{factory:t=Qk,...r}={}){if(super(),this[_s]=r,this[mt]=-1,this[wt]=0,this[Ks]=this[_s].maxWeightPerServer||100,this[Zs]=this[_s].errorPenalty||15,Array.isArray(A)||(A=[A]),typeof t!="function")throw new ok("factory must be a function.");this[gk]=r.interceptors?.BalancedPool&&Array.isArray(r.interceptors.BalancedPool)?r.interceptors.BalancedPool:[],this[oB]=t;for(let n of A)this.addUpstream(n);this._updateBalancedPoolStats()}addUpstream(A){let t=sB(A).origin;if(this[de].find(n=>n[Bc].origin===t&&n.closed!==!0&&n.destroyed!==!0))return this;let r=this[oB](t,Object.assign({},this[_s]));this[ak](r),r.on("connect",()=>{r[_e]=Math.min(this[Ks],r[_e]+this[Zs])}),r.on("connectionError",()=>{r[_e]=Math.max(1,r[_e]-this[Zs]),this._updateBalancedPoolStats()}),r.on("disconnect",(...n)=>{let s=n[2];s&&s.code==="UND_ERR_SOCKET"&&(r[_e]=Math.max(1,r[_e]-this[Zs]),this._updateBalancedPoolStats())});for(let n of this[de])n[_e]=this[Ks];return this._updateBalancedPoolStats(),this}_updateBalancedPoolStats(){let A=0;for(let t=0;t<this[de].length;t++)A=Ek(this[de][t][_e],A);this[iB]=A}removeUpstream(A){let t=sB(A).origin,r=this[de].find(n=>n[Bc].origin===t&&n.closed!==!0&&n.destroyed!==!0);return r&&this[ck](r),this}get upstreams(){return this[de].filter(A=>A.closed!==!0&&A.destroyed!==!0).map(A=>A[Bc].origin)}[uk](){if(this[de].length===0)throw new sk;if(!this[de].find(s=>!s[In]&&s.closed!==!0&&s.destroyed!==!0)||this[de].map(s=>s[In]).reduce((s,o)=>s&&o,!0))return;let r=0,n=this[de].findIndex(s=>!s[In]);for(;r++<this[de].length;){this[mt]=(this[mt]+1)%this[de].length;let s=this[de][this[mt]];if(s[_e]>this[de][n][_e]&&!s[In]&&(n=this[mt]),this[mt]===0&&(this[wt]=this[wt]-this[iB],this[wt]<=0&&(this[wt]=this[Ks])),s[_e]>=this[wt]&&!s[In])return s}return this[wt]=this[de][n][_e],this[mt]=n,this[de][n]}};aB.exports=Ic});var lr=f((nv,IB)=>{"use strict";var{InvalidArgumentError:zs}=q(),{kClients:ZA,kRunning:uB,kClose:Bk,kDestroy:Ik,kDispatch:hk,kInterceptors:Ck}=Ae(),dk=_t(),fk=ur(),pk=cr(),wk=Y(),mk=qs(),lB=Symbol("onConnect"),gB=Symbol("onDisconnect"),EB=Symbol("onConnectionError"),yk=Symbol("maxRedirections"),QB=Symbol("onDrain"),BB=Symbol("factory"),hc=Symbol("options");function bk(e,A){return A&&A.connections===1?new pk(e,A):new fk(e,A)}var Cc=class extends dk{constructor({factory:A=bk,maxRedirections:t=0,connect:r,...n}={}){if(typeof A!="function")throw new zs("factory must be a function.");if(r!=null&&typeof r!="function"&&typeof r!="object")throw new zs("connect must be a function or an object");if(!Number.isInteger(t)||t<0)throw new zs("maxRedirections must be a positive number");super(n),r&&typeof r!="function"&&(r={...r}),this[Ck]=n.interceptors?.Agent&&Array.isArray(n.interceptors.Agent)?n.interceptors.Agent:[mk({maxRedirections:t})],this[hc]={...wk.deepClone(n),connect:r},this[hc].interceptors=n.interceptors?{...n.interceptors}:void 0,this[yk]=t,this[BB]=A,this[ZA]=new Map,this[QB]=(s,o)=>{this.emit("drain",s,[this,...o])},this[lB]=(s,o)=>{this.emit("connect",s,[this,...o])},this[gB]=(s,o,i)=>{this.emit("disconnect",s,[this,...o],i)},this[EB]=(s,o,i)=>{this.emit("connectionError",s,[this,...o],i)}}get[uB](){let A=0;for(let t of this[ZA].values())A+=t[uB];return A}[hk](A,t){let r;if(A.origin&&(typeof A.origin=="string"||A.origin instanceof URL))r=String(A.origin);else throw new zs("opts.origin must be a non-empty string or URL.");let n=this[ZA].get(r);return n||(n=this[BB](A.origin,this[hc]).on("drain",this[QB]).on("connect",this[lB]).on("disconnect",this[gB]).on("connectionError",this[EB]),this[ZA].set(r,n)),n.dispatch(A,t)}async[Bk](){let A=[];for(let t of this[ZA].values())A.push(t.close());this[ZA].clear(),await Promise.all(A)}async[Ik](A){let t=[];for(let r of this[ZA].values())t.push(r.destroy(A));this[ZA].clear(),await Promise.all(t)}};IB.exports=Cc});var mc=f((sv,kB)=>{"use strict";var{kProxy:dc,kClose:wB,kDestroy:mB,kDispatch:hB,kInterceptors:Dk}=Ae(),{URL:yt}=d("node:url"),kk=lr(),yB=ur(),bB=_t(),{InvalidArgumentError:gr,RequestAbortedError:Rk,SecureProxyConnectionError:Sk}=q(),CB=_r(),DB=cr(),Xs=Symbol("proxy agent"),$s=Symbol("proxy client"),zA=Symbol("proxy headers"),fc=Symbol("request tls settings"),dB=Symbol("proxy tls settings"),fB=Symbol("connect endpoint function"),pB=Symbol("tunnel proxy");function Fk(e){return e==="https:"?443:80}function Nk(e,A){return new yB(e,A)}var Uk=()=>{};function Mk(e,A){return A.connections===1?new DB(e,A):new yB(e,A)}var pc=class extends bB{#e;constructor(A,{headers:t={},connect:r,factory:n}){if(super(),!A)throw new gr("Proxy URL is mandatory");this[zA]=t,n?this.#e=n(A,{connect:r}):this.#e=new DB(A,{connect:r})}[hB](A,t){let r=t.onHeaders;t.onHeaders=function(i,a,c){if(i===407){typeof t.onError=="function"&&t.onError(new gr("Proxy Authentication Required (407)"));return}r&&r.call(this,i,a,c)};let{origin:n,path:s="/",headers:o={}}=A;if(A.path=n+s,!("host"in o)&&!("Host"in o)){let{host:i}=new yt(n);o.host=i}return A.headers={...this[zA],...o},this.#e[hB](A,t)}async[wB](){return this.#e.close()}async[mB](A){return this.#e.destroy(A)}},wc=class extends bB{constructor(A){if(super(),!A||typeof A=="object"&&!(A instanceof yt)&&!A.uri)throw new gr("Proxy uri is mandatory");let{clientFactory:t=Nk}=A;if(typeof t!="function")throw new gr("Proxy opts.clientFactory must be a function.");let{proxyTunnel:r=!0}=A,n=this.#e(A),{href:s,origin:o,port:i,protocol:a,username:c,password:g,hostname:u}=n;if(this[dc]={uri:s,protocol:a},this[Dk]=A.interceptors?.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[],this[fc]=A.requestTls,this[dB]=A.proxyTls,this[zA]=A.headers||{},this[pB]=r,A.auth&&A.token)throw new gr("opts.auth cannot be used in combination with opts.token");A.auth?this[zA]["proxy-authorization"]=`Basic ${A.auth}`:A.token?this[zA]["proxy-authorization"]=A.token:c&&g&&(this[zA]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(c)}:${decodeURIComponent(g)}`).toString("base64")}`);let l=CB({...A.proxyTls});this[fB]=CB({...A.requestTls});let E=A.factory||Mk,Q=(h,B)=>{let{protocol:I}=new yt(h);return!this[pB]&&I==="http:"&&this[dc].protocol==="http:"?new pc(this[dc].uri,{headers:this[zA],connect:l,factory:E}):E(h,B)};this[$s]=t(n,{connect:l}),this[Xs]=new kk({...A,factory:Q,connect:async(h,B)=>{let I=h.host;h.port||(I+=`:${Fk(h.protocol)}`);try{let{socket:C,statusCode:p}=await this[$s].connect({origin:o,port:i,path:I,signal:h.signal,headers:{...this[zA],host:h.host},servername:this[dB]?.servername||u});if(p!==200&&(C.on("error",Uk).destroy(),B(new Rk(`Proxy response (${p}) !== 200 when HTTP Tunneling`))),h.protocol!=="https:"){B(null,C);return}let w;this[fc]?w=this[fc].servername:w=h.servername,this[fB]({...h,servername:w,httpSocket:C},B)}catch(C){C.code==="ERR_TLS_CERT_ALTNAME_INVALID"?B(new Sk(C)):B(C)}}})}dispatch(A,t){let r=Lk(A.headers);if(Tk(r),r&&!("host"in r)&&!("Host"in r)){let{host:n}=new yt(A.origin);r.host=n}return this[Xs].dispatch({...A,headers:r},t)}#e(A){return typeof A=="string"?new yt(A):A instanceof yt?A:new yt(A.uri)}async[wB](){await this[Xs].close(),await this[$s].close()}async[mB](){await this[Xs].destroy(),await this[$s].destroy()}};function Lk(e){if(Array.isArray(e)){let A={};for(let t=0;t<e.length;t+=2)A[e[t]]=e[t+1];return A}return e}function Tk(e){if(e&&Object.keys(e).find(t=>t.toLowerCase()==="proxy-authorization"))throw new gr("Proxy-Authorization should be sent in ProxyAgent constructor")}kB.exports=wc});var MB=f((ov,UB)=>{"use strict";var xk=_t(),{kClose:vk,kDestroy:Yk,kClosed:RB,kDestroyed:SB,kDispatch:Gk,kNoProxyAgent:hn,kHttpProxyAgent:XA,kHttpsProxyAgent:bt}=Ae(),FB=mc(),Jk=lr(),Hk={"http:":80,"https:":443},NB=!1,yc=class extends xk{#e=null;#A=null;#t=null;constructor(A={}){super(),this.#t=A,NB||(NB=!0,process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"}));let{httpProxy:t,httpsProxy:r,noProxy:n,...s}=A;this[hn]=new Jk(s);let o=t??process.env.http_proxy??process.env.HTTP_PROXY;o?this[XA]=new FB({...s,uri:o}):this[XA]=this[hn];let i=r??process.env.https_proxy??process.env.HTTPS_PROXY;i?this[bt]=new FB({...s,uri:i}):this[bt]=this[XA],this.#r()}[Gk](A,t){let r=new URL(A.origin);return this.#s(r).dispatch(A,t)}async[vk](){await this[hn].close(),this[XA][RB]||await this[XA].close(),this[bt][RB]||await this[bt].close()}async[Yk](A){await this[hn].destroy(A),this[XA][SB]||await this[XA].destroy(A),this[bt][SB]||await this[bt].destroy(A)}#s(A){let{protocol:t,host:r,port:n}=A;return r=r.replace(/:\d*$/,"").toLowerCase(),n=Number.parseInt(n,10)||Hk[t]||0,this.#n(r,n)?t==="https:"?this[bt]:this[XA]:this[hn]}#n(A,t){if(this.#o&&this.#r(),this.#A.length===0)return!0;if(this.#e==="*")return!1;for(let r=0;r<this.#A.length;r++){let n=this.#A[r];if(!(n.port&&n.port!==t)){if(/^[.*]/.test(n.hostname)){if(A.endsWith(n.hostname.replace(/^\*/,"")))return!1}else if(A===n.hostname)return!1}}return!0}#r(){let A=this.#t.noProxy??this.#i,t=A.split(/[,\s]/),r=[];for(let n=0;n<t.length;n++){let s=t[n];if(!s)continue;let o=s.match(/^(.+):(\d+)$/);r.push({hostname:(o?o[1]:s).toLowerCase(),port:o?Number.parseInt(o[2],10):0})}this.#e=A,this.#A=r}get#o(){return this.#t.noProxy!==void 0?!1:this.#e!==this.#i}get#i(){return process.env.no_proxy??process.env.NO_PROXY??""}};UB.exports=yc});var js=f((iv,YB)=>{"use strict";var Er=d("node:assert"),{kRetryHandlerDefaultRetry:LB}=Ae(),{RequestRetryError:Qr}=q(),{isDisturbed:TB,parseHeaders:Vk,parseRangeHeader:xB,wrapRequestBody:qk}=Y();function Ok(e){let A=Date.now();return new Date(e).getTime()-A}function vB(e,A,t,r){let n=e["content-length"];if(n==null||!Number.isFinite(A.start)||!Number.isFinite(A.end))return null;let s=Number(n),o=A.end-A.start+1;return!Number.isFinite(s)||s!==o?new Qr("Content-Length mismatch",t,{headers:e,data:{count:r}}):null}var bc=class e{constructor(A,t){let{retryOptions:r,...n}=A,{retry:s,maxRetries:o,maxTimeout:i,minTimeout:a,timeoutFactor:c,methods:g,errorCodes:u,retryAfter:l,statusCodes:E}=r??{};this.dispatch=t.dispatch,this.handler=t.handler,this.opts={...n,body:qk(A.body)},this.abort=null,this.aborted=!1,this.retryOpts={retry:s??e[LB],retryAfter:l??!0,maxTimeout:i??30*1e3,minTimeout:a??500,timeoutFactor:c??2,maxRetries:o??5,methods:g??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:E??[500,502,503,504,429],errorCodes:u??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]},this.retryCount=0,this.retryCountCheckpoint=0,this.start=0,this.end=null,this.etag=null,this.resume=null,this.handler.onConnect(Q=>{this.aborted=!0,this.abort?this.abort(Q):this.reason=Q})}onRequestSent(){this.handler.onRequestSent&&this.handler.onRequestSent()}onUpgrade(A,t,r){this.handler.onUpgrade&&this.handler.onUpgrade(A,t,r)}onConnect(A){this.aborted?A(this.reason):this.abort=A}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[LB](A,{state:t,opts:r},n){let{statusCode:s,code:o,headers:i}=A,{method:a,retryOptions:c}=r,{maxRetries:g,minTimeout:u,maxTimeout:l,timeoutFactor:E,statusCodes:Q,errorCodes:h,methods:B}=c,{counter:I}=t;if(o&&o!=="UND_ERR_REQ_RETRY"&&!h.includes(o)){n(A);return}if(Array.isArray(B)&&!B.includes(a)){n(A);return}if(s!=null&&Array.isArray(Q)&&!Q.includes(s)){n(A);return}if(I>g){n(A);return}let C=i?.["retry-after"];C&&(C=Number(C),C=Number.isNaN(C)?Ok(C):C*1e3);let p=C>0?Math.min(C,l):Math.min(u*E**(I-1),l);setTimeout(()=>n(null),p)}onHeaders(A,t,r,n){let s=Vk(t);if(this.retryCount+=1,A>=300)return this.retryOpts.statusCodes.includes(A)===!1?this.handler.onHeaders(A,t,r,n):(this.abort(new Qr("Request failed",A,{headers:s,data:{count:this.retryCount}})),!1);if(this.resume!=null){if(this.resume=null,A!==206&&(this.start>0||A!==200))return this.abort(new Qr("server does not support the range header and the payload was partially consumed",A,{headers:s,data:{count:this.retryCount}})),!1;let i=xB(s["content-range"]);if(!i)return this.abort(new Qr("Content-Range mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;if(this.etag!=null&&this.etag!==s.etag)return this.abort(new Qr("ETag mismatch",A,{headers:s,data:{count:this.retryCount}})),!1;let a=vB(s,i,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:c,size:g,end:u=g-1}=i;return Er(this.start===c,"content-range mismatch"),Er(this.end==null||this.end===u,"content-range mismatch"),this.resume=r,!0}if(this.end==null){if(A===206){let i=xB(s["content-range"]);if(i==null)return this.handler.onHeaders(A,t,r,n);let a=vB(s,i,A,this.retryCount);if(a!=null)return this.abort(a),!1;let{start:c,size:g,end:u=g-1}=i;Er(c!=null&&Number.isFinite(c),"content-range mismatch"),Er(u!=null&&Number.isFinite(u),"invalid content-length"),this.start=c,this.end=u}if(this.end==null){let i=s["content-length"];this.end=i!=null?Number(i)-1:null}return Er(Number.isFinite(this.start)),Er(this.end==null||Number.isFinite(this.end),"invalid content-length"),this.resume=r,this.etag=s.etag!=null?s.etag:null,this.etag!=null&&this.etag.startsWith("W/")&&(this.etag=null),this.handler.onHeaders(A,t,r,n)}let o=new Qr("Request failed",A,{headers:s,data:{count:this.retryCount}});return this.abort(o),!1}onData(A){return this.start+=A.length,this.handler.onData(A)}onComplete(A){return this.retryCount=0,this.handler.onComplete(A)}onError(A){if(this.aborted||TB(this.opts.body))return this.handler.onError(A);this.retryCount-this.retryCountCheckpoint>0?this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint):this.retryCount+=1,this.retryOpts.retry(A,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},t.bind(this));function t(r){if(r!=null||this.aborted||TB(this.opts.body))return this.handler.onError(r);if(this.start!==0){let n={range:`bytes=${this.start}-${this.end??""}`};this.etag!=null&&(n["if-match"]=this.etag),this.opts={...this.opts,headers:{...this.opts.headers,...n}}}try{this.retryCountCheckpoint=this.retryCount,this.dispatch(this.opts,this)}catch(n){this.handler.onError(n)}}}};YB.exports=bc});var JB=f((av,GB)=>{"use strict";var Pk=Pr(),Wk=js(),Dc=class extends Pk{#e=null;#A=null;constructor(A,t={}){super(t),this.#e=A,this.#A=t}dispatch(A,t){let r=new Wk({...A,retryOptions:this.#A},{dispatch:this.#e.dispatch.bind(this.#e),handler:t});return this.#e.dispatch(A,r)}close(){return this.#e.close()}destroy(){return this.#e.destroy()}};GB.exports=Dc});var Uc=f((cv,ZB)=>{"use strict";var PB=d("node:assert"),{Readable:_k}=d("node:stream"),{RequestAbortedError:WB,NotSupportedError:Kk,InvalidArgumentError:Zk,AbortError:kc}=q(),_B=Y(),{ReadableStreamFrom:zk}=Y(),Te=Symbol("kConsume"),Cn=Symbol("kReading"),$A=Symbol("kBody"),HB=Symbol("kAbort"),KB=Symbol("kContentType"),VB=Symbol("kContentLength"),Xk=()=>{},Rc=class extends _k{constructor({resume:A,abort:t,contentType:r="",contentLength:n,highWaterMark:s=64*1024}){super({autoDestroy:!0,read:A,highWaterMark:s}),this._readableState.dataEmitted=!1,this[HB]=t,this[Te]=null,this[$A]=null,this[KB]=r,this[VB]=n,this[Cn]=!1}destroy(A){return!A&&!this._readableState.endEmitted&&(A=new WB),A&&this[HB](),super.destroy(A)}_destroy(A,t){this[Cn]?t(A):setImmediate(()=>{t(A)})}on(A,...t){return(A==="data"||A==="readable")&&(this[Cn]=!0),super.on(A,...t)}addListener(A,...t){return this.on(A,...t)}off(A,...t){let r=super.off(A,...t);return(A==="data"||A==="readable")&&(this[Cn]=this.listenerCount("data")>0||this.listenerCount("readable")>0),r}removeListener(A,...t){return this.off(A,...t)}push(A){return this[Te]&&A!==null?(Fc(this[Te],A),this[Cn]?super.push(A):!0):super.push(A)}async text(){return dn(this,"text")}async json(){return dn(this,"json")}async blob(){return dn(this,"blob")}async bytes(){return dn(this,"bytes")}async arrayBuffer(){return dn(this,"arrayBuffer")}async formData(){throw new Kk}get bodyUsed(){return _B.isDisturbed(this)}get body(){return this[$A]||(this[$A]=zk(this),this[Te]&&(this[$A].getReader(),PB(this[$A].locked))),this[$A]}async dump(A){let t=Number.isFinite(A?.limit)?A.limit:131072,r=A?.signal;if(r!=null&&(typeof r!="object"||!("aborted"in r)))throw new Zk("signal must be an AbortSignal");return r?.throwIfAborted(),this._readableState.closeEmitted?null:await new Promise((n,s)=>{this[VB]>t&&this.destroy(new kc);let o=()=>{this.destroy(r.reason??new kc)};r?.addEventListener("abort",o),this.on("close",function(){r?.removeEventListener("abort",o),r?.aborted?s(r.reason??new kc):n(null)}).on("error",Xk).on("data",function(i){t-=i.length,t<=0&&this.destroy()}).resume()})}};function $k(e){return e[$A]&&e[$A].locked===!0||e[Te]}function jk(e){return _B.isDisturbed(e)||$k(e)}async function dn(e,A){return PB(!e[Te]),new Promise((t,r)=>{if(jk(e)){let n=e._readableState;n.destroyed&&n.closeEmitted===!1?e.on("error",s=>{r(s)}).on("close",()=>{r(new TypeError("unusable"))}):r(n.errored??new TypeError("unusable"))}else queueMicrotask(()=>{e[Te]={type:A,stream:e,resolve:t,reject:r,length:0,body:[]},e.on("error",function(n){Nc(this[Te],n)}).on("close",function(){this[Te].body!==null&&Nc(this[Te],new WB)}),eR(e[Te])})})}function eR(e){if(e.body===null)return;let{_readableState:A}=e.stream;if(A.bufferIndex){let t=A.bufferIndex,r=A.buffer.length;for(let n=t;n<r;n++)Fc(e,A.buffer[n])}else for(let t of A.buffer)Fc(e,t);for(A.endEmitted?OB(this[Te]):e.stream.on("end",function(){OB(this[Te])}),e.stream.resume();e.stream.read()!=null;);}function Sc(e,A){if(e.length===0||A===0)return"";let t=e.length===1?e[0]:Buffer.concat(e,A),r=t.length,n=r>2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(n,r)}function qB(e,A){if(e.length===0||A===0)return new Uint8Array(0);if(e.length===1)return new Uint8Array(e[0]);let t=new Uint8Array(Buffer.allocUnsafeSlow(A).buffer),r=0;for(let n=0;n<e.length;++n){let s=e[n];t.set(s,r),r+=s.length}return t}function OB(e){let{type:A,body:t,resolve:r,stream:n,length:s}=e;try{A==="text"?r(Sc(t,s)):A==="json"?r(JSON.parse(Sc(t,s))):A==="arrayBuffer"?r(qB(t,s).buffer):A==="blob"?r(new Blob(t,{type:n[KB]})):A==="bytes"&&r(qB(t,s)),Nc(e)}catch(o){n.destroy(o)}}function Fc(e,A){e.length+=A.length,e.body.push(A)}function Nc(e,A){e.body!==null&&(A?e.reject(A):e.resolve(),e.type=null,e.stream=null,e.resolve=null,e.reject=null,e.length=0,e.body=null)}ZB.exports={Readable:Rc,chunksDecode:Sc}});var Mc=f((uv,eI)=>{var AR=d("node:assert"),{ResponseStatusCodeError:zB}=q(),{chunksDecode:XB}=Uc(),tR=128*1024;async function rR({callback:e,body:A,contentType:t,statusCode:r,statusMessage:n,headers:s}){AR(A);let o=[],i=0;try{for await(let u of A)if(o.push(u),i+=u.length,i>tR){o=[],i=0;break}}catch{o=[],i=0}let a=`Response status code ${r}${n?`: ${n}`:""}`;if(r===204||!t||!i){queueMicrotask(()=>e(new zB(a,r,s)));return}let c=Error.stackTraceLimit;Error.stackTraceLimit=0;let g;try{$B(t)?g=JSON.parse(XB(o,i)):jB(t)&&(g=XB(o,i))}catch{}finally{Error.stackTraceLimit=c}queueMicrotask(()=>e(new zB(a,r,s,g)))}var $B=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n",jB=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";eI.exports={getResolveErrorBodyCallback:rR,isContentTypeApplicationJson:$B,isContentTypeText:jB}});var rI=f((lv,Lc)=>{"use strict";var nR=d("node:assert"),{Readable:sR}=Uc(),{InvalidArgumentError:Br,RequestAbortedError:AI}=q(),xe=Y(),{getResolveErrorBodyCallback:oR}=Mc(),{AsyncResource:iR}=d("node:async_hooks"),eo=class extends iR{constructor(A,t){if(!A||typeof A!="object")throw new Br("invalid opts");let{signal:r,method:n,opaque:s,body:o,onInfo:i,responseHeaders:a,throwOnError:c,highWaterMark:g}=A;try{if(typeof t!="function")throw new Br("invalid callback");if(g&&(typeof g!="number"||g<0))throw new Br("invalid highWaterMark");if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Br("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new Br("invalid method");if(i&&typeof i!="function")throw new Br("invalid onInfo callback");super("UNDICI_REQUEST")}catch(u){throw xe.isStream(o)&&xe.destroy(o.on("error",xe.nop),u),u}this.method=n,this.responseHeaders=a||null,this.opaque=s||null,this.callback=t,this.res=null,this.abort=null,this.body=o,this.trailers={},this.context=null,this.onInfo=i||null,this.throwOnError=c,this.highWaterMark=g,this.signal=r,this.reason=null,this.removeAbortListener=null,xe.isStream(o)&&o.on("error",u=>{this.onError(u)}),this.signal&&(this.signal.aborted?this.reason=this.signal.reason??new AI:this.removeAbortListener=xe.addAbortListener(this.signal,()=>{this.reason=this.signal.reason??new AI,this.res?xe.destroy(this.res.on("error",xe.nop),this.reason):this.abort&&this.abort(this.reason),this.removeAbortListener&&(this.res?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}))}onConnect(A,t){if(this.reason){A(this.reason);return}nR(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{callback:s,opaque:o,abort:i,context:a,responseHeaders:c,highWaterMark:g}=this,u=c==="raw"?xe.parseRawHeaders(t):xe.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:u});return}let l=c==="raw"?xe.parseHeaders(t):u,E=l["content-type"],Q=l["content-length"],h=new sR({resume:r,abort:i,contentType:E,contentLength:this.method!=="HEAD"&&Q?Number(Q):null,highWaterMark:g});this.removeAbortListener&&h.on("close",this.removeAbortListener),this.callback=null,this.res=h,s!==null&&(this.throwOnError&&A>=400?this.runInAsyncScope(oR,null,{callback:s,body:h,contentType:E,statusCode:A,statusMessage:n,headers:u}):this.runInAsyncScope(s,null,null,{statusCode:A,headers:u,trailers:this.trailers,opaque:o,body:h,context:a}))}onData(A){return this.res.push(A)}onComplete(A){xe.parseHeaders(A,this.trailers),this.res.push(null)}onError(A){let{res:t,callback:r,body:n,opaque:s}=this;r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:s})})),t&&(this.res=null,queueMicrotask(()=>{xe.destroy(t,A)})),n&&(this.body=null,xe.destroy(n,A)),this.removeAbortListener&&(t?.off("close",this.removeAbortListener),this.removeAbortListener(),this.removeAbortListener=null)}};function tI(e,A){if(A===void 0)return new Promise((t,r)=>{tI.call(this,e,(n,s)=>n?r(n):t(s))});try{this.dispatch(e,new eo(e,A))}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}Lc.exports=tI;Lc.exports.RequestHandler=eo});var fn=f((gv,oI)=>{var{addAbortListener:aR}=Y(),{RequestAbortedError:cR}=q(),Ir=Symbol("kListener"),dA=Symbol("kSignal");function nI(e){e.abort?e.abort(e[dA]?.reason):e.reason=e[dA]?.reason??new cR,sI(e)}function uR(e,A){if(e.reason=null,e[dA]=null,e[Ir]=null,!!A){if(A.aborted){nI(e);return}e[dA]=A,e[Ir]=()=>{nI(e)},aR(e[dA],e[Ir])}}function sI(e){e[dA]&&("removeEventListener"in e[dA]?e[dA].removeEventListener("abort",e[Ir]):e[dA].removeListener("abort",e[Ir]),e[dA]=null,e[Ir]=null)}oI.exports={addSignal:uR,removeSignal:sI}});var uI=f((Ev,cI)=>{"use strict";var lR=d("node:assert"),{finished:gR,PassThrough:ER}=d("node:stream"),{InvalidArgumentError:hr,InvalidReturnValueError:QR}=q(),rA=Y(),{getResolveErrorBodyCallback:BR}=Mc(),{AsyncResource:IR}=d("node:async_hooks"),{addSignal:hR,removeSignal:iI}=fn(),Tc=class extends IR{constructor(A,t,r){if(!A||typeof A!="object")throw new hr("invalid opts");let{signal:n,method:s,opaque:o,body:i,onInfo:a,responseHeaders:c,throwOnError:g}=A;try{if(typeof r!="function")throw new hr("invalid callback");if(typeof t!="function")throw new hr("invalid factory");if(n&&typeof n.on!="function"&&typeof n.addEventListener!="function")throw new hr("signal must be an EventEmitter or EventTarget");if(s==="CONNECT")throw new hr("invalid method");if(a&&typeof a!="function")throw new hr("invalid onInfo callback");super("UNDICI_STREAM")}catch(u){throw rA.isStream(i)&&rA.destroy(i.on("error",rA.nop),u),u}this.responseHeaders=c||null,this.opaque=o||null,this.factory=t,this.callback=r,this.res=null,this.abort=null,this.context=null,this.trailers=null,this.body=i,this.onInfo=a||null,this.throwOnError=g||!1,rA.isStream(i)&&i.on("error",u=>{this.onError(u)}),hR(this,n)}onConnect(A,t){if(this.reason){A(this.reason);return}lR(this.callback),this.abort=A,this.context=t}onHeaders(A,t,r,n){let{factory:s,opaque:o,context:i,callback:a,responseHeaders:c}=this,g=c==="raw"?rA.parseRawHeaders(t):rA.parseHeaders(t);if(A<200){this.onInfo&&this.onInfo({statusCode:A,headers:g});return}this.factory=null;let u;if(this.throwOnError&&A>=400){let Q=(c==="raw"?rA.parseHeaders(t):g)["content-type"];u=new ER,this.callback=null,this.runInAsyncScope(BR,null,{callback:a,body:u,contentType:Q,statusCode:A,statusMessage:n,headers:g})}else{if(s===null)return;if(u=this.runInAsyncScope(s,null,{statusCode:A,headers:g,opaque:o,context:i}),!u||typeof u.write!="function"||typeof u.end!="function"||typeof u.on!="function")throw new QR("expected Writable");gR(u,{readable:!1},E=>{let{callback:Q,res:h,opaque:B,trailers:I,abort:C}=this;this.res=null,(E||!h.readable)&&rA.destroy(h,E),this.callback=null,this.runInAsyncScope(Q,null,E||null,{opaque:B,trailers:I}),E&&C()})}return u.on("drain",r),this.res=u,(u.writableNeedDrain!==void 0?u.writableNeedDrain:u._writableState?.needDrain)!==!0}onData(A){let{res:t}=this;return t?t.write(A):!0}onComplete(A){let{res:t}=this;iI(this),t&&(this.trailers=rA.parseHeaders(A),t.end())}onError(A){let{res:t,callback:r,opaque:n,body:s}=this;iI(this),this.factory=null,t?(this.res=null,rA.destroy(t,A)):r&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(r,null,A,{opaque:n})})),s&&(this.body=null,rA.destroy(s,A))}};function aI(e,A,t){if(t===void 0)return new Promise((r,n)=>{aI.call(this,e,A,(s,o)=>s?n(s):r(o))});try{this.dispatch(e,new Tc(e,A,t))}catch(r){if(typeof t!="function")throw r;let n=e?.opaque;queueMicrotask(()=>t(r,{opaque:n}))}}cI.exports=aI});var QI=f((Qv,EI)=>{"use strict";var{Readable:gI,Duplex:CR,PassThrough:dR}=d("node:stream"),{InvalidArgumentError:pn,InvalidReturnValueError:fR,RequestAbortedError:xc}=q(),Ke=Y(),{AsyncResource:pR}=d("node:async_hooks"),{addSignal:wR,removeSignal:mR}=fn(),lI=d("node:assert"),Cr=Symbol("resume"),vc=class extends gI{constructor(){super({autoDestroy:!0}),this[Cr]=null}_read(){let{[Cr]:A}=this;A&&(this[Cr]=null,A())}_destroy(A,t){this._read(),t(A)}},Yc=class extends gI{constructor(A){super({autoDestroy:!0}),this[Cr]=A}_read(){this[Cr]()}_destroy(A,t){!A&&!this._readableState.endEmitted&&(A=new xc),t(A)}},Gc=class extends pR{constructor(A,t){if(!A||typeof A!="object")throw new pn("invalid opts");if(typeof t!="function")throw new pn("invalid handler");let{signal:r,method:n,opaque:s,onInfo:o,responseHeaders:i}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new pn("signal must be an EventEmitter or EventTarget");if(n==="CONNECT")throw new pn("invalid method");if(o&&typeof o!="function")throw new pn("invalid onInfo callback");super("UNDICI_PIPELINE"),this.opaque=s||null,this.responseHeaders=i||null,this.handler=t,this.abort=null,this.context=null,this.onInfo=o||null,this.req=new vc().on("error",Ke.nop),this.ret=new CR({readableObjectMode:A.objectMode,autoDestroy:!0,read:()=>{let{body:a}=this;a?.resume&&a.resume()},write:(a,c,g)=>{let{req:u}=this;u.push(a,c)||u._readableState.destroyed?g():u[Cr]=g},destroy:(a,c)=>{let{body:g,req:u,res:l,ret:E,abort:Q}=this;!a&&!E._readableState.endEmitted&&(a=new xc),Q&&a&&Q(),Ke.destroy(g,a),Ke.destroy(u,a),Ke.destroy(l,a),mR(this),c(a)}}).on("prefinish",()=>{let{req:a}=this;a.push(null)}),this.res=null,wR(this,r)}onConnect(A,t){let{ret:r,res:n}=this;if(this.reason){A(this.reason);return}lI(!n,"pipeline cannot be retried"),lI(!r.destroyed),this.abort=A,this.context=t}onHeaders(A,t,r){let{opaque:n,handler:s,context:o}=this;if(A<200){if(this.onInfo){let a=this.responseHeaders==="raw"?Ke.parseRawHeaders(t):Ke.parseHeaders(t);this.onInfo({statusCode:A,headers:a})}return}this.res=new Yc(r);let i;try{this.handler=null;let a=this.responseHeaders==="raw"?Ke.parseRawHeaders(t):Ke.parseHeaders(t);i=this.runInAsyncScope(s,null,{statusCode:A,headers:a,opaque:n,body:this.res,context:o})}catch(a){throw this.res.on("error",Ke.nop),a}if(!i||typeof i.on!="function")throw new fR("expected Readable");i.on("data",a=>{let{ret:c,body:g}=this;!c.push(a)&&g.pause&&g.pause()}).on("error",a=>{let{ret:c}=this;Ke.destroy(c,a)}).on("end",()=>{let{ret:a}=this;a.push(null)}).on("close",()=>{let{ret:a}=this;a._readableState.ended||Ke.destroy(a,new xc)}),this.body=i}onData(A){let{res:t}=this;return t.push(A)}onComplete(A){let{res:t}=this;t.push(null)}onError(A){let{ret:t}=this;this.handler=null,Ke.destroy(t,A)}};function yR(e,A){try{let t=new Gc(e,A);return this.dispatch({...e,body:t.req},t),t.ret}catch(t){return new dR().destroy(t)}}EI.exports=yR});var fI=f((Bv,dI)=>{"use strict";var{InvalidArgumentError:Jc,SocketError:bR}=q(),{AsyncResource:DR}=d("node:async_hooks"),BI=Y(),{addSignal:kR,removeSignal:II}=fn(),hI=d("node:assert"),Hc=class extends DR{constructor(A,t){if(!A||typeof A!="object")throw new Jc("invalid opts");if(typeof t!="function")throw new Jc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Jc("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=s||null,this.opaque=n||null,this.callback=t,this.abort=null,this.context=null,kR(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}hI(this.callback),this.abort=A,this.context=null}onHeaders(){throw new bR("bad upgrade",null)}onUpgrade(A,t,r){hI(A===101);let{callback:n,opaque:s,context:o}=this;II(this),this.callback=null;let i=this.responseHeaders==="raw"?BI.parseRawHeaders(t):BI.parseHeaders(t);this.runInAsyncScope(n,null,null,{headers:i,socket:r,opaque:s,context:o})}onError(A){let{callback:t,opaque:r}=this;II(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function CI(e,A){if(A===void 0)return new Promise((t,r)=>{CI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new Hc(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}dI.exports=CI});var bI=f((Iv,yI)=>{"use strict";var RR=d("node:assert"),{AsyncResource:SR}=d("node:async_hooks"),{InvalidArgumentError:Vc,SocketError:FR}=q(),pI=Y(),{addSignal:NR,removeSignal:wI}=fn(),qc=class extends SR{constructor(A,t){if(!A||typeof A!="object")throw new Vc("invalid opts");if(typeof t!="function")throw new Vc("invalid callback");let{signal:r,opaque:n,responseHeaders:s}=A;if(r&&typeof r.on!="function"&&typeof r.addEventListener!="function")throw new Vc("signal must be an EventEmitter or EventTarget");super("UNDICI_CONNECT"),this.opaque=n||null,this.responseHeaders=s||null,this.callback=t,this.abort=null,NR(this,r)}onConnect(A,t){if(this.reason){A(this.reason);return}RR(this.callback),this.abort=A,this.context=t}onHeaders(){throw new FR("bad connect",null)}onUpgrade(A,t,r){let{callback:n,opaque:s,context:o}=this;wI(this),this.callback=null;let i=t;i!=null&&(i=this.responseHeaders==="raw"?pI.parseRawHeaders(t):pI.parseHeaders(t)),this.runInAsyncScope(n,null,null,{statusCode:A,headers:i,socket:r,opaque:s,context:o})}onError(A){let{callback:t,opaque:r}=this;wI(this),t&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}};function mI(e,A){if(A===void 0)return new Promise((t,r)=>{mI.call(this,e,(n,s)=>n?r(n):t(s))});try{let t=new qc(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!="function")throw t;let r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}yI.exports=mI});var DI=f((hv,dr)=>{"use strict";dr.exports.request=rI();dr.exports.stream=uI();dr.exports.pipeline=QI();dr.exports.upgrade=fI();dr.exports.connect=bI()});var Pc=f((Cv,RI)=>{"use strict";var{UndiciError:UR}=q(),kI=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED"),Oc=class e extends UR{constructor(A){super(A),Error.captureStackTrace(this,e),this.name="MockNotMatchedError",this.message=A||"The request does not match any registered mock dispatches",this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](A){return A&&A[kI]===!0}[kI]=!0};RI.exports={MockNotMatchedError:Oc}});var fr=f((dv,SI)=>{"use strict";SI.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}});var wn=f((fv,JI)=>{"use strict";var{MockNotMatchedError:Dt}=Pc(),{kDispatches:Ao,kMockAgent:MR,kOriginalDispatch:LR,kOrigin:TR,kGetNetConnect:xR}=fr(),{buildURL:vR}=Y(),{STATUS_CODES:YR}=d("node:http"),{types:{isPromise:GR}}=d("node:util");function LA(e,A){return typeof e=="string"?e===A:e instanceof RegExp?e.test(A):typeof e=="function"?e(A)===!0:!1}function NI(e){return Object.fromEntries(Object.entries(e).map(([A,t])=>[A.toLocaleLowerCase(),t]))}function UI(e,A){if(Array.isArray(e)){for(let t=0;t<e.length;t+=2)if(e[t].toLocaleLowerCase()===A.toLocaleLowerCase())return e[t+1];return}else return typeof e.get=="function"?e.get(A):NI(e)[A.toLocaleLowerCase()]}function Kc(e){let A=e.slice(),t=[];for(let r=0;r<A.length;r+=2)t.push([A[r],A[r+1]]);return Object.fromEntries(t)}function MI(e,A){if(typeof e.headers=="function")return Array.isArray(A)&&(A=Kc(A)),e.headers(A?NI(A):{});if(typeof e.headers>"u")return!0;if(typeof A!="object"||typeof e.headers!="object")return!1;for(let[t,r]of Object.entries(e.headers)){let n=UI(A,t);if(!LA(r,n))return!1}return!0}function FI(e){if(typeof e!="string")return e;let A=e.split("?");if(A.length!==2)return e;let t=new URLSearchParams(A.pop());return t.sort(),[...A,t.toString()].join("?")}function JR(e,{path:A,method:t,body:r,headers:n}){let s=LA(e.path,A),o=LA(e.method,t),i=typeof e.body<"u"?LA(e.body,r):!0,a=MI(e,n);return s&&o&&i&&a}function LI(e){return Buffer.isBuffer(e)||e instanceof Uint8Array||e instanceof ArrayBuffer?e:typeof e=="object"?JSON.stringify(e):e.toString()}function TI(e,A){let t=A.query?vR(A.path,A.query):A.path,r=typeof t=="string"?FI(t):t,n=e.filter(({consumed:s})=>!s).filter(({path:s})=>LA(FI(s),r));if(n.length===0)throw new Dt(`Mock dispatch not matched for path '${r}'`);if(n=n.filter(({method:s})=>LA(s,A.method)),n.length===0)throw new Dt(`Mock dispatch not matched for method '${A.method}' on path '${r}'`);if(n=n.filter(({body:s})=>typeof s<"u"?LA(s,A.body):!0),n.length===0)throw new Dt(`Mock dispatch not matched for body '${A.body}' on path '${r}'`);if(n=n.filter(s=>MI(s,A.headers)),n.length===0){let s=typeof A.headers=="object"?JSON.stringify(A.headers):A.headers;throw new Dt(`Mock dispatch not matched for headers '${s}' on path '${r}'`)}return n[0]}function HR(e,A,t){let r={timesInvoked:0,times:1,persist:!1,consumed:!1},n=typeof t=="function"?{callback:t}:{...t},s={...r,...A,pending:!0,data:{error:null,...n}};return e.push(s),s}function Wc(e,A){let t=e.findIndex(r=>r.consumed?JR(r,A):!1);t!==-1&&e.splice(t,1)}function xI(e){let{path:A,method:t,body:r,headers:n,query:s}=e;return{path:A,method:t,body:r,headers:n,query:s}}function _c(e){let A=Object.keys(e),t=[];for(let r=0;r<A.length;++r){let n=A[r],s=e[n],o=Buffer.from(`${n}`);if(Array.isArray(s))for(let i=0;i<s.length;++i)t.push(o,Buffer.from(`${s[i]}`));else t.push(o,Buffer.from(`${s}`))}return t}function vI(e){return YR[e]||"unknown"}async function VR(e){let A=[];for await(let t of e)A.push(t);return Buffer.concat(A).toString("utf8")}function YI(e,A){let t=xI(e),r=TI(this[Ao],t);r.timesInvoked++,r.data.callback&&(r.data={...r.data,...r.data.callback(e)});let{data:{statusCode:n,data:s,headers:o,trailers:i,error:a},delay:c,persist:g}=r,{timesInvoked:u,times:l}=r;if(r.consumed=!g&&u>=l,r.pending=u<l,a!==null)return Wc(this[Ao],t),A.onError(a),!0;typeof c=="number"&&c>0?setTimeout(()=>{E(this[Ao])},c):E(this[Ao]);function E(h,B=s){let I=Array.isArray(e.headers)?Kc(e.headers):e.headers,C=typeof B=="function"?B({...e,headers:I}):B;if(GR(C)){C.then(x=>E(h,x));return}let p=LI(C),w=_c(o),R=_c(i);A.onConnect?.(x=>A.onError(x),null),A.onHeaders?.(n,w,Q,vI(n)),A.onData?.(Buffer.from(p)),A.onComplete?.(R),Wc(h,t)}function Q(){}return!0}function qR(){let e=this[MR],A=this[TR],t=this[LR];return function(n,s){if(e.isMockActive)try{YI.call(this,n,s)}catch(o){if(o instanceof Dt){let i=e[xR]();if(i===!1)throw new Dt(`${o.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`);if(GI(i,A))t.call(this,n,s);else throw new Dt(`${o.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}else throw o}else t.call(this,n,s)}}function GI(e,A){let t=new URL(A);return e===!0?!0:!!(Array.isArray(e)&&e.some(r=>LA(r,t.host)))}function OR(e){if(e){let{agent:A,...t}=e;return t}}JI.exports={getResponseData:LI,getMockDispatch:TI,addMockDispatch:HR,deleteMockDispatch:Wc,buildKey:xI,generateKeyValues:_c,matchValue:LA,getResponse:VR,getStatusText:vI,mockDispatch:YI,buildMockDispatch:qR,checkNetConnect:GI,buildMockOptions:OR,getHeaderByName:UI,buildHeadersFromArray:Kc}});var Au=f((pv,eu)=>{"use strict";var{getResponseData:PR,buildKey:WR,addMockDispatch:Zc}=wn(),{kDispatches:to,kDispatchKey:ro,kDefaultHeaders:zc,kDefaultTrailers:Xc,kContentLength:$c,kMockDispatch:no}=fr(),{InvalidArgumentError:fA}=q(),{buildURL:_R}=Y(),pr=class{constructor(A){this[no]=A}delay(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new fA("waitInMs must be a valid integer > 0");return this[no].delay=A,this}persist(){return this[no].persist=!0,this}times(A){if(typeof A!="number"||!Number.isInteger(A)||A<=0)throw new fA("repeatTimes must be a valid integer > 0");return this[no].times=A,this}},jc=class{constructor(A,t){if(typeof A!="object")throw new fA("opts must be an object");if(typeof A.path>"u")throw new fA("opts.path must be defined");if(typeof A.method>"u"&&(A.method="GET"),typeof A.path=="string")if(A.query)A.path=_R(A.path,A.query);else{let r=new URL(A.path,"data://");A.path=r.pathname+r.search}typeof A.method=="string"&&(A.method=A.method.toUpperCase()),this[ro]=WR(A),this[to]=t,this[zc]={},this[Xc]={},this[$c]=!1}createMockScopeDispatchData({statusCode:A,data:t,responseOptions:r}){let n=PR(t),s=this[$c]?{"content-length":n.length}:{},o={...this[zc],...s,...r.headers},i={...this[Xc],...r.trailers};return{statusCode:A,data:t,headers:o,trailers:i}}validateReplyParameters(A){if(typeof A.statusCode>"u")throw new fA("statusCode must be defined");if(typeof A.responseOptions!="object"||A.responseOptions===null)throw new fA("responseOptions must be an object")}reply(A){if(typeof A=="function"){let s=i=>{let a=A(i);if(typeof a!="object"||a===null)throw new fA("reply options callback must return an object");let c={data:"",responseOptions:{},...a};return this.validateReplyParameters(c),{...this.createMockScopeDispatchData(c)}},o=Zc(this[to],this[ro],s);return new pr(o)}let t={statusCode:A,data:arguments[1]===void 0?"":arguments[1],responseOptions:arguments[2]===void 0?{}:arguments[2]};this.validateReplyParameters(t);let r=this.createMockScopeDispatchData(t),n=Zc(this[to],this[ro],r);return new pr(n)}replyWithError(A){if(typeof A>"u")throw new fA("error must be defined");let t=Zc(this[to],this[ro],{error:A});return new pr(t)}defaultReplyHeaders(A){if(typeof A>"u")throw new fA("headers must be defined");return this[zc]=A,this}defaultReplyTrailers(A){if(typeof A>"u")throw new fA("trailers must be defined");return this[Xc]=A,this}replyContentLength(){return this[$c]=!0,this}};eu.exports.MockInterceptor=jc;eu.exports.MockScope=pr});var nu=f((wv,_I)=>{"use strict";var{promisify:KR}=d("node:util"),ZR=cr(),{buildMockDispatch:zR}=wn(),{kDispatches:HI,kMockAgent:VI,kClose:qI,kOriginalClose:OI,kOrigin:PI,kOriginalDispatch:XR,kConnected:tu}=fr(),{MockInterceptor:$R}=Au(),WI=Ae(),{InvalidArgumentError:jR}=q(),ru=class extends ZR{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new jR("Argument opts.agent must implement Agent");this[VI]=t.agent,this[PI]=A,this[HI]=[],this[tu]=1,this[XR]=this.dispatch,this[OI]=this.close.bind(this),this.dispatch=zR.call(this),this.close=this[qI]}get[WI.kConnected](){return this[tu]}intercept(A){return new $R(A,this[HI])}async[qI](){await KR(this[OI])(),this[tu]=0,this[VI][WI.kClients].delete(this[PI])}};_I.exports=ru});var iu=f((mv,eh)=>{"use strict";var{promisify:eS}=d("node:util"),AS=ur(),{buildMockDispatch:tS}=wn(),{kDispatches:KI,kMockAgent:ZI,kClose:zI,kOriginalClose:XI,kOrigin:$I,kOriginalDispatch:rS,kConnected:su}=fr(),{MockInterceptor:nS}=Au(),jI=Ae(),{InvalidArgumentError:sS}=q(),ou=class extends AS{constructor(A,t){if(super(A,t),!t||!t.agent||typeof t.agent.dispatch!="function")throw new sS("Argument opts.agent must implement Agent");this[ZI]=t.agent,this[$I]=A,this[KI]=[],this[su]=1,this[rS]=this.dispatch,this[XI]=this.close.bind(this),this.dispatch=tS.call(this),this.close=this[zI]}get[jI.kConnected](){return this[su]}intercept(A){return new nS(A,this[KI])}async[zI](){await eS(this[XI])(),this[su]=0,this[ZI][jI.kClients].delete(this[$I])}};eh.exports=ou});var th=f((bv,Ah)=>{"use strict";var oS={pronoun:"it",is:"is",was:"was",this:"this"},iS={pronoun:"they",is:"are",was:"were",this:"these"};Ah.exports=class{constructor(A,t){this.singular=A,this.plural=t}pluralize(A){let t=A===1,r=t?oS:iS,n=t?this.singular:this.plural;return{...r,count:A,noun:n}}}});var nh=f((kv,rh)=>{"use strict";var{Transform:aS}=d("node:stream"),{Console:cS}=d("node:console"),uS=process.versions.icu?"\u2705":"Y ",lS=process.versions.icu?"\u274C":"N ";rh.exports=class{constructor({disableColors:A}={}){this.transform=new aS({transform(t,r,n){n(null,t)}}),this.logger=new cS({stdout:this.transform,inspectOptions:{colors:!A&&!process.env.CI}})}format(A){let t=A.map(({method:r,path:n,data:{statusCode:s},persist:o,times:i,timesInvoked:a,origin:c})=>({Method:r,Origin:c,Path:n,"Status code":s,Persistent:o?uS:lS,Invocations:a,Remaining:o?1/0:i-a}));return this.logger.table(t),this.transform.read().toString()}}});var ah=f((Rv,ih)=>{"use strict";var{kClients:kt}=Ae(),gS=lr(),{kAgent:au,kMockAgentSet:so,kMockAgentGet:sh,kDispatches:cu,kIsMockActive:oo,kNetConnect:Rt,kGetNetConnect:ES,kOptions:io,kFactory:ao}=fr(),QS=nu(),BS=iu(),{matchValue:IS,buildMockOptions:hS}=wn(),{InvalidArgumentError:oh,UndiciError:CS}=q(),dS=Pr(),fS=th(),pS=nh(),uu=class extends dS{constructor(A){if(super(A),this[Rt]=!0,this[oo]=!0,A?.agent&&typeof A.agent.dispatch!="function")throw new oh("Argument opts.agent must implement Agent");let t=A?.agent?A.agent:new gS(A);this[au]=t,this[kt]=t[kt],this[io]=hS(A)}get(A){let t=this[sh](A);return t||(t=this[ao](A),this[so](A,t)),t}dispatch(A,t){return this.get(A.origin),this[au].dispatch(A,t)}async close(){await this[au].close(),this[kt].clear()}deactivate(){this[oo]=!1}activate(){this[oo]=!0}enableNetConnect(A){if(typeof A=="string"||typeof A=="function"||A instanceof RegExp)Array.isArray(this[Rt])?this[Rt].push(A):this[Rt]=[A];else if(typeof A>"u")this[Rt]=!0;else throw new oh("Unsupported matcher. Must be one of String|Function|RegExp.")}disableNetConnect(){this[Rt]=!1}get isMockActive(){return this[oo]}[so](A,t){this[kt].set(A,t)}[ao](A){let t=Object.assign({agent:this},this[io]);return this[io]&&this[io].connections===1?new QS(A,t):new BS(A,t)}[sh](A){let t=this[kt].get(A);if(t)return t;if(typeof A!="string"){let r=this[ao]("http://localhost:9999");return this[so](A,r),r}for(let[r,n]of Array.from(this[kt]))if(n&&typeof r!="string"&&IS(r,A)){let s=this[ao](A);return this[so](A,s),s[cu]=n[cu],s}}[ES](){return this[Rt]}pendingInterceptors(){let A=this[kt];return Array.from(A.entries()).flatMap(([t,r])=>r[cu].map(n=>({...n,origin:t}))).filter(({pending:t})=>t)}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new pS}={}){let t=this.pendingInterceptors();if(t.length===0)return;let r=new fS("interceptor","interceptors").pluralize(t.length);throw new CS(`
|
|
42
|
-
${r.count} ${r.noun} ${r.is} pending:
|
|
43
|
-
|
|
44
|
-
${A.format(t)}
|
|
45
|
-
`.trim())}};ih.exports=uu});var co=f((Sv,gh)=>{"use strict";var ch=Symbol.for("undici.globalDispatcher.1"),{InvalidArgumentError:wS}=q(),mS=lr();lh()===void 0&&uh(new mS);function uh(e){if(!e||typeof e.dispatch!="function")throw new wS("Argument agent must implement Agent");Object.defineProperty(globalThis,ch,{value:e,writable:!0,enumerable:!1,configurable:!1})}function lh(){return globalThis[ch]}gh.exports={setGlobalDispatcher:uh,getGlobalDispatcher:lh}});var uo=f((Nv,Eh)=>{"use strict";Eh.exports=class{#e;constructor(A){if(typeof A!="object"||A===null)throw new TypeError("handler must be an object");this.#e=A}onConnect(...A){return this.#e.onConnect?.(...A)}onError(...A){return this.#e.onError?.(...A)}onUpgrade(...A){return this.#e.onUpgrade?.(...A)}onResponseStarted(...A){return this.#e.onResponseStarted?.(...A)}onHeaders(...A){return this.#e.onHeaders?.(...A)}onData(...A){return this.#e.onData?.(...A)}onComplete(...A){return this.#e.onComplete?.(...A)}onBodySent(...A){return this.#e.onBodySent?.(...A)}}});var Bh=f((Uv,Qh)=>{"use strict";var yS=Vs();Qh.exports=e=>{let A=e?.maxRedirections;return t=>function(n,s){let{maxRedirections:o=A,...i}=n;if(!o)return t(n,s);let a=new yS(t,o,n,s);return t(i,a)}}});var hh=f((Mv,Ih)=>{"use strict";var bS=js();Ih.exports=e=>A=>function(r,n){return A(r,new bS({...r,retryOptions:{...e,...r.retryOptions}},{handler:n,dispatch:A}))}});var dh=f((Lv,Ch)=>{"use strict";var DS=Y(),{InvalidArgumentError:kS,RequestAbortedError:RS}=q(),SS=uo(),lu=class extends SS{#e=1024*1024;#A=null;#t=!1;#s=!1;#n=0;#r=null;#o=null;constructor({maxSize:A},t){if(super(t),A!=null&&(!Number.isFinite(A)||A<1))throw new kS("maxSize must be a number greater than 0");this.#e=A??this.#e,this.#o=t}onConnect(A){this.#A=A,this.#o.onConnect(this.#i.bind(this))}#i(A){this.#s=!0,this.#r=A}onHeaders(A,t,r,n){let o=DS.parseHeaders(t)["content-length"];if(o!=null&&o>this.#e)throw new RS(`Response size (${o}) larger than maxSize (${this.#e})`);return this.#s?!0:this.#o.onHeaders(A,t,r,n)}onError(A){this.#t||(A=this.#r??A,this.#o.onError(A))}onData(A){return this.#n=this.#n+A.length,this.#n>=this.#e&&(this.#t=!0,this.#s?this.#o.onError(this.#r):this.#o.onComplete([])),!0}onComplete(A){if(!this.#t){if(this.#s){this.#o.onError(this.reason);return}this.#o.onComplete(A)}}};function FS({maxSize:e}={maxSize:1024*1024}){return A=>function(r,n){let{dumpMaxSize:s=e}=r,o=new lu({maxSize:s},n);return A(r,o)}}Ch.exports=FS});var wh=f((Tv,ph)=>{"use strict";var{isIP:NS}=d("node:net"),{lookup:US}=d("node:dns"),MS=uo(),{InvalidArgumentError:wr,InformationalError:LS}=q(),fh=Math.pow(2,31)-1,gu=class{#e=0;#A=0;#t=new Map;dualStack=!0;affinity=null;lookup=null;pick=null;constructor(A){this.#e=A.maxTTL,this.#A=A.maxItems,this.dualStack=A.dualStack,this.affinity=A.affinity,this.lookup=A.lookup??this.#s,this.pick=A.pick??this.#n}get full(){return this.#t.size===this.#A}runLookup(A,t,r){let n=this.#t.get(A.hostname);if(n==null&&this.full){r(null,A.origin);return}let s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#e,maxItems:this.#A};if(n==null)this.lookup(A,s,(o,i)=>{if(o||i==null||i.length===0){r(o??new LS("No DNS entries found"));return}this.setRecords(A,i);let a=this.#t.get(A.hostname),c=this.pick(A,a,s.affinity),g;typeof c.port=="number"?g=`:${c.port}`:A.port!==""?g=`:${A.port}`:g="",r(null,`${A.protocol}//${c.family===6?`[${c.address}]`:c.address}${g}`)});else{let o=this.pick(A,n,s.affinity);if(o==null){this.#t.delete(A.hostname),this.runLookup(A,t,r);return}let i;typeof o.port=="number"?i=`:${o.port}`:A.port!==""?i=`:${A.port}`:i="",r(null,`${A.protocol}//${o.family===6?`[${o.address}]`:o.address}${i}`)}}#s(A,t,r){US(A.hostname,{all:!0,family:this.dualStack===!1?this.affinity:0,order:"ipv4first"},(n,s)=>{if(n)return r(n);let o=new Map;for(let i of s)o.set(`${i.address}:${i.family}`,i);r(null,o.values())})}#n(A,t,r){let n=null,{records:s,offset:o}=t,i;if(this.dualStack?(r==null&&(o==null||o===fh?(t.offset=0,r=4):(t.offset++,r=(t.offset&1)===1?6:4)),s[r]!=null&&s[r].ips.length>0?i=s[r]:i=s[r===4?6:4]):i=s[r],i==null||i.ips.length===0)return n;i.offset==null||i.offset===fh?i.offset=0:i.offset++;let a=i.offset%i.ips.length;return n=i.ips[a]??null,n==null?n:Date.now()-n.timestamp>n.ttl?(i.ips.splice(a,1),this.pick(A,t,r)):n}setRecords(A,t){let r=Date.now(),n={records:{4:null,6:null}};for(let s of t){s.timestamp=r,typeof s.ttl=="number"?s.ttl=Math.min(s.ttl,this.#e):s.ttl=this.#e;let o=n.records[s.family]??{ips:[]};o.ips.push(s),n.records[s.family]=o}this.#t.set(A.hostname,n)}getHandler(A,t){return new Eu(this,A,t)}},Eu=class extends MS{#e=null;#A=null;#t=null;#s=null;#n=null;constructor(A,{origin:t,handler:r,dispatch:n},s){super(r),this.#n=t,this.#s=r,this.#A={...s},this.#e=A,this.#t=n}onError(A){switch(A.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#e.dualStack){this.#e.runLookup(this.#n,this.#A,(t,r)=>{if(t)return this.#s.onError(t);let n={...this.#A,origin:r};this.#t(n,this)});return}this.#s.onError(A);return}case"ENOTFOUND":this.#e.deleteRecord(this.#n);default:this.#s.onError(A);break}}};ph.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!="number"||e?.maxTTL<0))throw new wr("Invalid maxTTL. Must be a positive number");if(e?.maxItems!=null&&(typeof e?.maxItems!="number"||e?.maxItems<1))throw new wr("Invalid maxItems. Must be a positive number and greater than zero");if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6)throw new wr("Invalid affinity. Must be either 4 or 6");if(e?.dualStack!=null&&typeof e?.dualStack!="boolean")throw new wr("Invalid dualStack. Must be a boolean");if(e?.lookup!=null&&typeof e?.lookup!="function")throw new wr("Invalid lookup. Must be a function");if(e?.pick!=null&&typeof e?.pick!="function")throw new wr("Invalid pick. Must be a function");let A=e?.dualStack??!0,t;A?t=e?.affinity??null:t=e?.affinity??4;let r={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:A,affinity:t,maxItems:e?.maxItems??1/0},n=new gu(r);return s=>function(i,a){let c=i.origin.constructor===URL?i.origin:new URL(i.origin);return NS(c.hostname)!==0?s(i,a):(n.runLookup(c,i,(g,u)=>{if(g)return a.onError(g);let l=null;l={...i,servername:c.hostname,origin:u,headers:{host:c.hostname,...i.headers}},s(l,n.getHandler({origin:c,dispatch:s,handler:a},i))}),!0)}}});var St=f((xv,Sh)=>{"use strict";var{kConstruct:TS}=Ae(),{kEnumerableProperty:mr}=Y(),{iteratorMixin:xS,isValidHeaderName:mn,isValidHeaderValue:yh}=Me(),{webidl:V}=he(),Qu=d("node:assert"),lo=d("node:util"),ue=Symbol("headers map"),ve=Symbol("headers map sorted");function mh(e){return e===10||e===13||e===9||e===32}function bh(e){let A=0,t=e.length;for(;t>A&&mh(e.charCodeAt(t-1));)--t;for(;t>A&&mh(e.charCodeAt(A));)++A;return A===0&&t===e.length?e:e.substring(A,t)}function Dh(e,A){if(Array.isArray(A))for(let t=0;t<A.length;++t){let r=A[t];if(r.length!==2)throw V.errors.exception({header:"Headers constructor",message:`expected name/value pair to be length 2, found ${r.length}.`});Bu(e,r[0],r[1])}else if(typeof A=="object"&&A!==null){let t=Object.keys(A);for(let r=0;r<t.length;++r)Bu(e,t[r],A[t[r]])}else throw V.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})}function Bu(e,A,t){if(t=bh(t),mn(A)){if(!yh(t))throw V.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}else throw V.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header name"});if(Rh(e)==="immutable")throw new TypeError("immutable");return Iu(e).append(A,t,!1)}function kh(e,A){return e[0]<A[0]?-1:1}var go=class e{cookies=null;constructor(A){A instanceof e?(this[ue]=new Map(A[ue]),this[ve]=A[ve],this.cookies=A.cookies===null?null:[...A.cookies]):(this[ue]=new Map(A),this[ve]=null)}contains(A,t){return this[ue].has(t?A:A.toLowerCase())}clear(){this[ue].clear(),this[ve]=null,this.cookies=null}append(A,t,r){this[ve]=null;let n=r?A:A.toLowerCase(),s=this[ue].get(n);if(s){let o=n==="cookie"?"; ":", ";this[ue].set(n,{name:s.name,value:`${s.value}${o}${t}`})}else this[ue].set(n,{name:A,value:t});n==="set-cookie"&&(this.cookies??=[]).push(t)}set(A,t,r){this[ve]=null;let n=r?A:A.toLowerCase();n==="set-cookie"&&(this.cookies=[t]),this[ue].set(n,{name:A,value:t})}delete(A,t){this[ve]=null,t||(A=A.toLowerCase()),A==="set-cookie"&&(this.cookies=null),this[ue].delete(A)}get(A,t){return this[ue].get(t?A:A.toLowerCase())?.value??null}*[Symbol.iterator](){for(let{0:A,1:{value:t}}of this[ue])yield[A,t]}get entries(){let A={};if(this[ue].size!==0)for(let{name:t,value:r}of this[ue].values())A[t]=r;return A}rawValues(){return this[ue].values()}get entriesList(){let A=[];if(this[ue].size!==0)for(let{0:t,1:{name:r,value:n}}of this[ue])if(t==="set-cookie")for(let s of this.cookies)A.push([r,s]);else A.push([r,n]);return A}toSortedArray(){let A=this[ue].size,t=new Array(A);if(A<=32){if(A===0)return t;let r=this[ue][Symbol.iterator](),n=r.next().value;t[0]=[n[0],n[1].value],Qu(n[1].value!==null);for(let s=1,o=0,i=0,a=0,c=0,g,u;s<A;++s){for(u=r.next().value,g=t[s]=[u[0],u[1].value],Qu(g[1]!==null),a=0,i=s;a<i;)c=a+(i-a>>1),t[c][0]<=g[0]?a=c+1:i=c;if(s!==c){for(o=s;o>a;)t[o]=t[--o];t[a]=g}}if(!r.next().done)throw new TypeError("Unreachable");return t}else{let r=0;for(let{0:n,1:{value:s}}of this[ue])t[r++]=[n,s],Qu(s!==null);return t.sort(kh)}}},nA=class e{#e;#A;constructor(A=void 0){V.util.markAsUncloneable(this),A!==TS&&(this.#A=new go,this.#e="none",A!==void 0&&(A=V.converters.HeadersInit(A,"Headers contructor","init"),Dh(this,A)))}append(A,t){V.brandCheck(this,e),V.argumentLengthCheck(arguments,2,"Headers.append");let r="Headers.append";return A=V.converters.ByteString(A,r,"name"),t=V.converters.ByteString(t,r,"value"),Bu(this,A,t)}delete(A){if(V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.delete"),A=V.converters.ByteString(A,"Headers.delete","name"),!mn(A))throw V.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.contains(A,!1)&&this.#A.delete(A,!1)}get(A){V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.get");let t="Headers.get";if(A=V.converters.ByteString(A,t,"name"),!mn(A))throw V.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.get(A,!1)}has(A){V.brandCheck(this,e),V.argumentLengthCheck(arguments,1,"Headers.has");let t="Headers.has";if(A=V.converters.ByteString(A,t,"name"),!mn(A))throw V.errors.invalidArgument({prefix:t,value:A,type:"header name"});return this.#A.contains(A,!1)}set(A,t){V.brandCheck(this,e),V.argumentLengthCheck(arguments,2,"Headers.set");let r="Headers.set";if(A=V.converters.ByteString(A,r,"name"),t=V.converters.ByteString(t,r,"value"),t=bh(t),mn(A)){if(!yh(t))throw V.errors.invalidArgument({prefix:r,value:t,type:"header value"})}else throw V.errors.invalidArgument({prefix:r,value:A,type:"header name"});if(this.#e==="immutable")throw new TypeError("immutable");this.#A.set(A,t,!1)}getSetCookie(){V.brandCheck(this,e);let A=this.#A.cookies;return A?[...A]:[]}get[ve](){if(this.#A[ve])return this.#A[ve];let A=[],t=this.#A.toSortedArray(),r=this.#A.cookies;if(r===null||r.length===1)return this.#A[ve]=t;for(let n=0;n<t.length;++n){let{0:s,1:o}=t[n];if(s==="set-cookie")for(let i=0;i<r.length;++i)A.push([s,r[i]]);else A.push([s,o])}return this.#A[ve]=A}[lo.inspect.custom](A,t){return t.depth??=A,`Headers ${lo.formatWithOptions(t,this.#A.entries)}`}static getHeadersGuard(A){return A.#e}static setHeadersGuard(A,t){A.#e=t}static getHeadersList(A){return A.#A}static setHeadersList(A,t){A.#A=t}},{getHeadersGuard:Rh,setHeadersGuard:vS,getHeadersList:Iu,setHeadersList:YS}=nA;Reflect.deleteProperty(nA,"getHeadersGuard");Reflect.deleteProperty(nA,"setHeadersGuard");Reflect.deleteProperty(nA,"getHeadersList");Reflect.deleteProperty(nA,"setHeadersList");xS("Headers",nA,ve,0,1);Object.defineProperties(nA.prototype,{append:mr,delete:mr,get:mr,has:mr,set:mr,getSetCookie:mr,[Symbol.toStringTag]:{value:"Headers",configurable:!0},[lo.inspect.custom]:{enumerable:!1}});V.converters.HeadersInit=function(e,A,t){if(V.util.Type(e)==="Object"){let r=Reflect.get(e,Symbol.iterator);if(!lo.types.isProxy(e)&&r===nA.prototype.entries)try{return Iu(e).entriesList}catch{}return typeof r=="function"?V.converters["sequence<sequence<ByteString>>"](e,A,t,r.bind(e)):V.converters["record<ByteString, ByteString>"](e,A,t)}throw V.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence<sequence<ByteString>>","record<ByteString, ByteString>"]})};Sh.exports={fill:Dh,compareHeaderName:kh,Headers:nA,HeadersList:go,getHeadersGuard:Rh,setHeadersGuard:vS,setHeadersList:YS,getHeadersList:Iu}});var bn=f((vv,Hh)=>{"use strict";var{Headers:Th,HeadersList:Fh,fill:GS,getHeadersGuard:JS,setHeadersGuard:xh,setHeadersList:vh}=St(),{extractBody:Nh,cloneBody:HS,mixinBody:VS,hasFinalizationRegistry:Yh,streamRegistry:Gh,bodyUnusable:qS}=tr(),hu=Y(),Uh=d("node:util"),{kEnumerableProperty:Ye}=hu,{isValidReasonPhrase:OS,isCancelled:PS,isAborted:WS,isBlobLike:_S,serializeJavascriptValueToJSONString:KS,isErrorLike:ZS,isomorphicEncode:zS,environmentSettingsObject:XS}=Me(),{redirectStatusSet:$S,nullBodyStatus:jS}=Kr(),{kState:re,kHeaders:TA}=VA(),{webidl:T}=he(),{FormData:eF}=en(),{URLSerializer:Mh}=be(),{kConstruct:Qo}=Ae(),Cu=d("node:assert"),{types:AF}=d("node:util"),tF=new TextEncoder("utf-8"),Ft=class e{static error(){return yn(Bo(),"immutable")}static json(A,t={}){T.argumentLengthCheck(arguments,1,"Response.json"),t!==null&&(t=T.converters.ResponseInit(t));let r=tF.encode(KS(A)),n=Nh(r),s=yn(yr({}),"response");return Lh(s,t,{body:n[0],type:"application/json"}),s}static redirect(A,t=302){T.argumentLengthCheck(arguments,1,"Response.redirect"),A=T.converters.USVString(A),t=T.converters["unsigned short"](t);let r;try{r=new URL(A,XS.settingsObject.baseUrl)}catch(o){throw new TypeError(`Failed to parse URL from ${A}`,{cause:o})}if(!$S.has(t))throw new RangeError(`Invalid status code ${t}`);let n=yn(yr({}),"immutable");n[re].status=t;let s=zS(Mh(r));return n[re].headersList.append("location",s,!0),n}constructor(A=null,t={}){if(T.util.markAsUncloneable(this),A===Qo)return;A!==null&&(A=T.converters.BodyInit(A)),t=T.converters.ResponseInit(t),this[re]=yr({}),this[TA]=new Th(Qo),xh(this[TA],"response"),vh(this[TA],this[re].headersList);let r=null;if(A!=null){let[n,s]=Nh(A);r={body:n,type:s}}Lh(this,t,r)}get type(){return T.brandCheck(this,e),this[re].type}get url(){T.brandCheck(this,e);let A=this[re].urlList,t=A[A.length-1]??null;return t===null?"":Mh(t,!0)}get redirected(){return T.brandCheck(this,e),this[re].urlList.length>1}get status(){return T.brandCheck(this,e),this[re].status}get ok(){return T.brandCheck(this,e),this[re].status>=200&&this[re].status<=299}get statusText(){return T.brandCheck(this,e),this[re].statusText}get headers(){return T.brandCheck(this,e),this[TA]}get body(){return T.brandCheck(this,e),this[re].body?this[re].body.stream:null}get bodyUsed(){return T.brandCheck(this,e),!!this[re].body&&hu.isDisturbed(this[re].body.stream)}clone(){if(T.brandCheck(this,e),qS(this))throw T.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let A=du(this[re]);return Yh&&this[re].body?.stream&&Gh.register(this,new WeakRef(this[re].body.stream)),yn(A,JS(this[TA]))}[Uh.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.colors??=!0;let r={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${Uh.formatWithOptions(t,r)}`}};VS(Ft);Object.defineProperties(Ft.prototype,{type:Ye,url:Ye,status:Ye,ok:Ye,redirected:Ye,statusText:Ye,headers:Ye,clone:Ye,body:Ye,bodyUsed:Ye,[Symbol.toStringTag]:{value:"Response",configurable:!0}});Object.defineProperties(Ft,{json:Ye,redirect:Ye,error:Ye});function du(e){if(e.internalResponse)return Jh(du(e.internalResponse),e.type);let A=yr({...e,body:null});return e.body!=null&&(A.body=HS(A,e.body)),A}function yr(e){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new Fh(e?.headersList):new Fh,urlList:e?.urlList?[...e.urlList]:[]}}function Bo(e){let A=ZS(e);return yr({type:"error",status:0,error:A?e:new Error(e&&String(e)),aborted:e&&e.name==="AbortError"})}function rF(e){return e.type==="error"&&e.status===0}function Eo(e,A){return A={internalResponse:e,...A},new Proxy(e,{get(t,r){return r in A?A[r]:t[r]},set(t,r,n){return Cu(!(r in A)),t[r]=n,!0}})}function Jh(e,A){if(A==="basic")return Eo(e,{type:"basic",headersList:e.headersList});if(A==="cors")return Eo(e,{type:"cors",headersList:e.headersList});if(A==="opaque")return Eo(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null});if(A==="opaqueredirect")return Eo(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null});Cu(!1)}function nF(e,A=null){return Cu(PS(e)),WS(e)?Bo(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:A})):Bo(Object.assign(new DOMException("Request was cancelled."),{cause:A}))}function Lh(e,A,t){if(A.status!==null&&(A.status<200||A.status>599))throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in A&&A.statusText!=null&&!OS(String(A.statusText)))throw new TypeError("Invalid statusText");if("status"in A&&A.status!=null&&(e[re].status=A.status),"statusText"in A&&A.statusText!=null&&(e[re].statusText=A.statusText),"headers"in A&&A.headers!=null&&GS(e[TA],A.headers),t){if(jS.includes(e.status))throw T.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`});e[re].body=t.body,t.type!=null&&!e[re].headersList.contains("content-type",!0)&&e[re].headersList.append("content-type",t.type,!0)}}function yn(e,A){let t=new Ft(Qo);return t[re]=e,t[TA]=new Th(Qo),vh(t[TA],e.headersList),xh(t[TA],A),Yh&&e.body?.stream&&Gh.register(t,new WeakRef(e.body.stream)),t}T.converters.ReadableStream=T.interfaceConverter(ReadableStream);T.converters.FormData=T.interfaceConverter(eF);T.converters.URLSearchParams=T.interfaceConverter(URLSearchParams);T.converters.XMLHttpRequestBodyInit=function(e,A,t){return typeof e=="string"?T.converters.USVString(e,A,t):_S(e)?T.converters.Blob(e,A,t,{strict:!1}):ArrayBuffer.isView(e)||AF.isArrayBuffer(e)?T.converters.BufferSource(e,A,t):hu.isFormDataLike(e)?T.converters.FormData(e,A,t,{strict:!1}):e instanceof URLSearchParams?T.converters.URLSearchParams(e,A,t):T.converters.DOMString(e,A,t)};T.converters.BodyInit=function(e,A,t){return e instanceof ReadableStream?T.converters.ReadableStream(e,A,t):e?.[Symbol.asyncIterator]?e:T.converters.XMLHttpRequestBodyInit(e,A,t)};T.converters.ResponseInit=T.dictionaryConverter([{key:"status",converter:T.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:T.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:T.converters.HeadersInit}]);Hh.exports={isNetworkError:rF,makeNetworkError:Bo,makeResponse:yr,makeAppropriateNetworkError:nF,filterResponse:Jh,Response:Ft,cloneResponse:du,fromInnerResponse:yn}});var Ph=f((Yv,Oh)=>{"use strict";var{kConnected:Vh,kSize:qh}=Ae(),fu=class{constructor(A){this.value=A}deref(){return this.value[Vh]===0&&this.value[qh]===0?void 0:this.value}},pu=class{constructor(A){this.finalizer=A}register(A,t){A.on&&A.on("disconnect",()=>{A[Vh]===0&&A[qh]===0&&this.finalizer(t)})}unregister(A){}};Oh.exports=function(){return process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")?(process._rawDebug("Using compatibility WeakRef and FinalizationRegistry"),{WeakRef:fu,FinalizationRegistry:pu}):{WeakRef,FinalizationRegistry}}});var br=f((Gv,oC)=>{"use strict";var{extractBody:sF,mixinBody:oF,cloneBody:iF,bodyUnusable:Wh}=tr(),{Headers:AC,fill:aF,HeadersList:fo,setHeadersGuard:mu,getHeadersGuard:cF,setHeadersList:tC,getHeadersList:_h}=St(),{FinalizationRegistry:uF}=Ph()(),ho=Y(),Kh=d("node:util"),{isValidHTTPToken:lF,sameOrigin:Zh,environmentSettingsObject:Io}=Me(),{forbiddenMethodsSet:gF,corsSafeListedMethodsSet:EF,referrerPolicy:QF,requestRedirect:BF,requestMode:IF,requestCredentials:hF,requestCache:CF,requestDuplex:dF}=Kr(),{kEnumerableProperty:le,normalizedMethodRecordsBase:fF,normalizedMethodRecords:pF}=ho,{kHeaders:Ge,kSignal:Co,kState:ee,kDispatcher:wu}=VA(),{webidl:N}=he(),{URLSerializer:wF}=be(),{kConstruct:po}=Ae(),mF=d("node:assert"),{getMaxListeners:zh,setMaxListeners:Xh,getEventListeners:yF,defaultMaxListeners:$h}=d("node:events"),bF=Symbol("abortController"),rC=new uF(({signal:e,abort:A})=>{e.removeEventListener("abort",A)}),wo=new WeakMap;function jh(e){return A;function A(){let t=e.deref();if(t!==void 0){rC.unregister(A),this.removeEventListener("abort",A),t.abort(this.reason);let r=wo.get(t.signal);if(r!==void 0){if(r.size!==0){for(let n of r){let s=n.deref();s!==void 0&&s.abort(this.reason)}r.clear()}wo.delete(t.signal)}}}}var eC=!1,jA=class e{constructor(A,t={}){if(N.util.markAsUncloneable(this),A===po)return;let r="Request constructor";N.argumentLengthCheck(arguments,1,r),A=N.converters.RequestInfo(A,r,"input"),t=N.converters.RequestInit(t,r,"init");let n=null,s=null,o=Io.settingsObject.baseUrl,i=null;if(typeof A=="string"){this[wu]=t.dispatcher;let I;try{I=new URL(A,o)}catch(C){throw new TypeError("Failed to parse URL from "+A,{cause:C})}if(I.username||I.password)throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+A);n=mo({urlList:[I]}),s="cors"}else this[wu]=t.dispatcher||A[wu],mF(A instanceof e),n=A[ee],i=A[Co];let a=Io.settingsObject.origin,c="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&Zh(n.window,a)&&(c=n.window),t.window!=null)throw new TypeError(`'window' option '${c}' must be null`);"window"in t&&(c="no-window"),n=mo({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:Io.settingsObject,window:c,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});let g=Object.keys(t).length!==0;if(g&&(n.mode==="navigate"&&(n.mode="same-origin"),n.reloadNavigation=!1,n.historyNavigation=!1,n.origin="client",n.referrer="client",n.referrerPolicy="",n.url=n.urlList[n.urlList.length-1],n.urlList=[n.url]),t.referrer!==void 0){let I=t.referrer;if(I==="")n.referrer="no-referrer";else{let C;try{C=new URL(I,o)}catch(p){throw new TypeError(`Referrer "${I}" is not a valid URL.`,{cause:p})}C.protocol==="about:"&&C.hostname==="client"||a&&!Zh(C,Io.settingsObject.baseUrl)?n.referrer="client":n.referrer=C}}t.referrerPolicy!==void 0&&(n.referrerPolicy=t.referrerPolicy);let u;if(t.mode!==void 0?u=t.mode:u=s,u==="navigate")throw N.errors.exception({header:"Request constructor",message:"invalid request mode navigate."});if(u!=null&&(n.mode=u),t.credentials!==void 0&&(n.credentials=t.credentials),t.cache!==void 0&&(n.cache=t.cache),n.cache==="only-if-cached"&&n.mode!=="same-origin")throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode");if(t.redirect!==void 0&&(n.redirect=t.redirect),t.integrity!=null&&(n.integrity=String(t.integrity)),t.keepalive!==void 0&&(n.keepalive=!!t.keepalive),t.method!==void 0){let I=t.method,C=pF[I];if(C!==void 0)n.method=C;else{if(!lF(I))throw new TypeError(`'${I}' is not a valid HTTP method.`);let p=I.toUpperCase();if(gF.has(p))throw new TypeError(`'${I}' HTTP method is unsupported.`);I=fF[p]??I,n.method=I}!eC&&n.method==="patch"&&(process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"}),eC=!0)}t.signal!==void 0&&(i=t.signal),this[ee]=n;let l=new AbortController;if(this[Co]=l.signal,i!=null){if(!i||typeof i.aborted!="boolean"||typeof i.addEventListener!="function")throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.");if(i.aborted)l.abort(i.reason);else{this[bF]=l;let I=new WeakRef(l),C=jh(I);try{(typeof zh=="function"&&zh(i)===$h||yF(i,"abort").length>=$h)&&Xh(1500,i)}catch{}ho.addAbortListener(i,C),rC.register(l,{signal:i,abort:C},C)}}if(this[Ge]=new AC(po),tC(this[Ge],n.headersList),mu(this[Ge],"request"),u==="no-cors"){if(!EF.has(n.method))throw new TypeError(`'${n.method} is unsupported in no-cors mode.`);mu(this[Ge],"request-no-cors")}if(g){let I=_h(this[Ge]),C=t.headers!==void 0?t.headers:new fo(I);if(I.clear(),C instanceof fo){for(let{name:p,value:w}of C.rawValues())I.append(p,w,!1);I.cookies=C.cookies}else aF(this[Ge],C)}let E=A instanceof e?A[ee].body:null;if((t.body!=null||E!=null)&&(n.method==="GET"||n.method==="HEAD"))throw new TypeError("Request with GET/HEAD method cannot have body.");let Q=null;if(t.body!=null){let[I,C]=sF(t.body,n.keepalive);Q=I,C&&!_h(this[Ge]).contains("content-type",!0)&&this[Ge].append("content-type",C)}let h=Q??E;if(h!=null&&h.source==null){if(Q!=null&&t.duplex==null)throw new TypeError("RequestInit: duplex option is required when sending a body.");if(n.mode!=="same-origin"&&n.mode!=="cors")throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"');n.useCORSPreflightFlag=!0}let B=h;if(Q==null&&E!=null){if(Wh(A))throw new TypeError("Cannot construct a Request with a Request object that has already been used.");let I=new TransformStream;E.stream.pipeThrough(I),B={source:E.source,length:E.length,stream:I.readable}}this[ee].body=B}get method(){return N.brandCheck(this,e),this[ee].method}get url(){return N.brandCheck(this,e),wF(this[ee].url)}get headers(){return N.brandCheck(this,e),this[Ge]}get destination(){return N.brandCheck(this,e),this[ee].destination}get referrer(){return N.brandCheck(this,e),this[ee].referrer==="no-referrer"?"":this[ee].referrer==="client"?"about:client":this[ee].referrer.toString()}get referrerPolicy(){return N.brandCheck(this,e),this[ee].referrerPolicy}get mode(){return N.brandCheck(this,e),this[ee].mode}get credentials(){return this[ee].credentials}get cache(){return N.brandCheck(this,e),this[ee].cache}get redirect(){return N.brandCheck(this,e),this[ee].redirect}get integrity(){return N.brandCheck(this,e),this[ee].integrity}get keepalive(){return N.brandCheck(this,e),this[ee].keepalive}get isReloadNavigation(){return N.brandCheck(this,e),this[ee].reloadNavigation}get isHistoryNavigation(){return N.brandCheck(this,e),this[ee].historyNavigation}get signal(){return N.brandCheck(this,e),this[Co]}get body(){return N.brandCheck(this,e),this[ee].body?this[ee].body.stream:null}get bodyUsed(){return N.brandCheck(this,e),!!this[ee].body&&ho.isDisturbed(this[ee].body.stream)}get duplex(){return N.brandCheck(this,e),"half"}clone(){if(N.brandCheck(this,e),Wh(this))throw new TypeError("unusable");let A=nC(this[ee]),t=new AbortController;if(this.signal.aborted)t.abort(this.signal.reason);else{let r=wo.get(this.signal);r===void 0&&(r=new Set,wo.set(this.signal,r));let n=new WeakRef(t);r.add(n),ho.addAbortListener(t.signal,jh(n))}return sC(A,t.signal,cF(this[Ge]))}[Kh.inspect.custom](A,t){t.depth===null&&(t.depth=2),t.colors??=!0;let r={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${Kh.formatWithOptions(t,r)}`}};oF(jA);function mo(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??!1,unsafeRequest:e.unsafeRequest??!1,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??!1,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??!1,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??!1,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??!1,historyNavigation:e.historyNavigation??!1,userActivation:e.userActivation??!1,taintedOrigin:e.taintedOrigin??!1,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??!1,done:e.done??!1,timingAllowFailed:e.timingAllowFailed??!1,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new fo(e.headersList):new fo}}function nC(e){let A=mo({...e,body:null});return e.body!=null&&(A.body=iF(A,e.body)),A}function sC(e,A,t){let r=new jA(po);return r[ee]=e,r[Co]=A,r[Ge]=new AC(po),tC(r[Ge],e.headersList),mu(r[Ge],t),r}Object.defineProperties(jA.prototype,{method:le,url:le,headers:le,redirect:le,clone:le,signal:le,duplex:le,destination:le,body:le,bodyUsed:le,isHistoryNavigation:le,isReloadNavigation:le,keepalive:le,integrity:le,cache:le,credentials:le,attribute:le,referrerPolicy:le,referrer:le,mode:le,[Symbol.toStringTag]:{value:"Request",configurable:!0}});N.converters.Request=N.interfaceConverter(jA);N.converters.RequestInfo=function(e,A,t){return typeof e=="string"?N.converters.USVString(e,A,t):e instanceof jA?N.converters.Request(e,A,t):N.converters.USVString(e,A,t)};N.converters.AbortSignal=N.interfaceConverter(AbortSignal);N.converters.RequestInit=N.dictionaryConverter([{key:"method",converter:N.converters.ByteString},{key:"headers",converter:N.converters.HeadersInit},{key:"body",converter:N.nullableConverter(N.converters.BodyInit)},{key:"referrer",converter:N.converters.USVString},{key:"referrerPolicy",converter:N.converters.DOMString,allowedValues:QF},{key:"mode",converter:N.converters.DOMString,allowedValues:IF},{key:"credentials",converter:N.converters.DOMString,allowedValues:hF},{key:"cache",converter:N.converters.DOMString,allowedValues:CF},{key:"redirect",converter:N.converters.DOMString,allowedValues:BF},{key:"integrity",converter:N.converters.DOMString},{key:"keepalive",converter:N.converters.boolean},{key:"signal",converter:N.nullableConverter(e=>N.converters.AbortSignal(e,"RequestInit","signal",{strict:!1}))},{key:"window",converter:N.converters.any},{key:"duplex",converter:N.converters.DOMString,allowedValues:dF},{key:"dispatcher",converter:N.converters.any}]);oC.exports={Request:jA,makeRequest:mo,fromInnerRequest:sC,cloneRequest:nC}});var kn=f((Jv,pC)=>{"use strict";var{makeNetworkError:K,makeAppropriateNetworkError:yo,filterResponse:yu,makeResponse:bo,fromInnerResponse:DF}=bn(),{HeadersList:iC}=St(),{Request:kF,cloneRequest:RF}=br(),et=d("node:zlib"),{bytesMatch:SF,makePolicyContainer:FF,clonePolicyContainer:NF,requestBadPort:UF,TAOCheck:MF,appendRequestOriginHeader:LF,responseLocationURL:TF,requestCurrentURL:pA,setRequestReferrerPolicyOnRedirect:xF,tryUpgradeRequestToAPotentiallyTrustworthyURL:vF,createOpaqueTimingInfo:Su,appendFetchMetadata:YF,corsCheck:GF,crossOriginResourcePolicyCheck:JF,determineRequestsReferrer:HF,coarsenedSharedCurrentTime:Dn,createDeferredPromise:VF,isBlobLike:qF,sameOrigin:Ru,isCancelled:Nt,isAborted:aC,isErrorLike:OF,fullyReadBody:PF,readableStreamClose:WF,isomorphicEncode:Do,urlIsLocal:_F,urlIsHttpHttpsScheme:Fu,urlHasHttpsScheme:KF,clampAndCoarsenConnectionTimingInfo:ZF,simpleRangeHeaderValue:zF,buildContentRange:XF,createInflate:$F,extractMimeType:jF}=Me(),{kState:gC,kDispatcher:eN}=VA(),Ut=d("node:assert"),{safelyExtractBody:Nu,extractBody:cC}=tr(),{redirectStatusSet:EC,nullBodyStatus:QC,safeMethodsSet:AN,requestBodyHeader:tN,subresourceSet:rN}=Kr(),nN=d("node:events"),{Readable:sN,pipeline:oN,finished:iN}=d("node:stream"),{addAbortListener:aN,isErrored:cN,isReadable:ko,bufferToLowerCasedHeaderName:uC}=Y(),{dataURLProcessor:uN,serializeAMimeType:lN,minimizeSupportedMimeType:gN}=be(),{getGlobalDispatcher:EN}=co(),{webidl:QN}=he(),{STATUS_CODES:BN}=d("node:http"),IN=["GET","HEAD"],hN=typeof __UNDICI_IS_NODE__<"u"||typeof esbuildDetection<"u"?"node":"undici",bu,Ro=class extends nN{constructor(A){super(),this.dispatcher=A,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(A){this.state==="ongoing"&&(this.state="terminated",this.connection?.destroy(A),this.emit("terminated",A))}abort(A){this.state==="ongoing"&&(this.state="aborted",A||(A=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=A,this.connection?.destroy(A),this.emit("terminated",A))}};function CN(e){BC(e,"fetch")}function dN(e,A=void 0){QN.argumentLengthCheck(arguments,1,"globalThis.fetch");let t=VF(),r;try{r=new kF(e,A)}catch(g){return t.reject(g),t.promise}let n=r[gC];if(r.signal.aborted)return Du(t,n,null,r.signal.reason),t.promise;n.client.globalObject?.constructor?.name==="ServiceWorkerGlobalScope"&&(n.serviceWorkers="none");let o=null,i=!1,a=null;return aN(r.signal,()=>{i=!0,Ut(a!=null),a.abort(r.signal.reason);let g=o?.deref();Du(t,n,g,r.signal.reason)}),a=hC({request:n,processResponseEndOfBody:CN,processResponse:g=>{if(!i){if(g.aborted){Du(t,n,o,a.serializedAbortReason);return}if(g.type==="error"){t.reject(new TypeError("fetch failed",{cause:g.error}));return}o=new WeakRef(DF(g,"immutable")),t.resolve(o.deref()),t=null}},dispatcher:r[eN]}),t.promise}function BC(e,A="other"){if(e.type==="error"&&e.aborted||!e.urlList?.length)return;let t=e.urlList[0],r=e.timingInfo,n=e.cacheState;Fu(t)&&r!==null&&(e.timingAllowPassed||(r=Su({startTime:r.startTime}),n=""),r.endTime=Dn(),e.timingInfo=r,IC(r,t.href,A,globalThis,n))}var IC=performance.markResourceTiming;function Du(e,A,t,r){if(e&&e.reject(r),A.body!=null&&ko(A.body?.stream)&&A.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s}),t==null)return;let n=t[gC];n.body!=null&&ko(n.body?.stream)&&n.body.stream.cancel(r).catch(s=>{if(s.code!=="ERR_INVALID_STATE")throw s})}function hC({request:e,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:o=!1,dispatcher:i=EN()}){Ut(i);let a=null,c=!1;e.client!=null&&(a=e.client.globalObject,c=e.client.crossOriginIsolatedCapability);let g=Dn(c),u=Su({startTime:g}),l={controller:new Ro(i),request:e,timingInfo:u,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:c};return Ut(!e.body||e.body.stream),e.window==="client"&&(e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"),e.origin==="client"&&(e.origin=e.client.origin),e.policyContainer==="client"&&(e.client!=null?e.policyContainer=NF(e.client.policyContainer):e.policyContainer=FF()),e.headersList.contains("accept",!0)||e.headersList.append("accept","*/*",!0),e.headersList.contains("accept-language",!0)||e.headersList.append("accept-language","*",!0),e.priority,rN.has(e.destination),CC(l).catch(E=>{l.controller.terminate(E)}),l.controller}async function CC(e,A=!1){let t=e.request,r=null;if(t.localURLsOnly&&!_F(pA(t))&&(r=K("local URLs only")),vF(t),UF(t)==="blocked"&&(r=K("bad port")),t.referrerPolicy===""&&(t.referrerPolicy=t.policyContainer.referrerPolicy),t.referrer!=="no-referrer"&&(t.referrer=HF(t)),r===null&&(r=await(async()=>{let s=pA(t);return Ru(s,t.url)&&t.responseTainting==="basic"||s.protocol==="data:"||t.mode==="navigate"||t.mode==="websocket"?(t.responseTainting="basic",await lC(e)):t.mode==="same-origin"?K('request mode cannot be "same-origin"'):t.mode==="no-cors"?t.redirect!=="follow"?K('redirect mode cannot be "follow" for "no-cors" request'):(t.responseTainting="opaque",await lC(e)):Fu(pA(t))?(t.responseTainting="cors",await dC(e)):K("URL scheme must be a HTTP(S) scheme")})()),A)return r;r.status!==0&&!r.internalResponse&&(t.responseTainting,t.responseTainting==="basic"?r=yu(r,"basic"):t.responseTainting==="cors"?r=yu(r,"cors"):t.responseTainting==="opaque"?r=yu(r,"opaque"):Ut(!1));let n=r.status===0?r:r.internalResponse;if(n.urlList.length===0&&n.urlList.push(...t.urlList),t.timingAllowFailed||(r.timingAllowPassed=!0),r.type==="opaque"&&n.status===206&&n.rangeRequested&&!t.headers.contains("range",!0)&&(r=n=K()),r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||QC.includes(n.status))&&(n.body=null,e.controller.dump=!0),t.integrity){let s=i=>ku(e,K(i));if(t.responseTainting==="opaque"||r.body==null){s(r.error);return}let o=i=>{if(!SF(i,t.integrity)){s("integrity mismatch");return}r.body=Nu(i)[0],ku(e,r)};await PF(r.body,o,s)}else ku(e,r)}function lC(e){if(Nt(e)&&e.request.redirectCount===0)return Promise.resolve(yo(e));let{request:A}=e,{protocol:t}=pA(A);switch(t){case"about:":return Promise.resolve(K("about scheme is not supported"));case"blob:":{bu||(bu=d("node:buffer").resolveObjectURL);let r=pA(A);if(r.search.length!==0)return Promise.resolve(K("NetworkError when attempting to fetch resource."));let n=bu(r.toString());if(A.method!=="GET"||!qF(n))return Promise.resolve(K("invalid method"));let s=bo(),o=n.size,i=Do(`${o}`),a=n.type;if(A.headersList.contains("range",!0)){s.rangeRequested=!0;let c=A.headersList.get("range",!0),g=zF(c,!0);if(g==="failure")return Promise.resolve(K("failed to fetch the data URL"));let{rangeStartValue:u,rangeEndValue:l}=g;if(u===null)u=o-l,l=u+l-1;else{if(u>=o)return Promise.resolve(K("Range start is greater than the blob's size."));(l===null||l>=o)&&(l=o-1)}let E=n.slice(u,l,a),Q=cC(E);s.body=Q[0];let h=Do(`${E.size}`),B=XF(u,l,o);s.status=206,s.statusText="Partial Content",s.headersList.set("content-length",h,!0),s.headersList.set("content-type",a,!0),s.headersList.set("content-range",B,!0)}else{let c=cC(n);s.statusText="OK",s.body=c[0],s.headersList.set("content-length",i,!0),s.headersList.set("content-type",a,!0)}return Promise.resolve(s)}case"data:":{let r=pA(A),n=uN(r);if(n==="failure")return Promise.resolve(K("failed to fetch the data URL"));let s=lN(n.mimeType);return Promise.resolve(bo({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:Nu(n.body)[0]}))}case"file:":return Promise.resolve(K("not implemented... yet..."));case"http:":case"https:":return dC(e).catch(r=>K(r));default:return Promise.resolve(K("unknown scheme"))}}function fN(e,A){e.request.done=!0,e.processResponseDone!=null&&queueMicrotask(()=>e.processResponseDone(A))}function ku(e,A){let t=e.timingInfo,r=()=>{let s=Date.now();e.request.destination==="document"&&(e.controller.fullTimingInfo=t),e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:")return;t.endTime=s;let i=A.cacheState,a=A.bodyInfo;A.timingAllowPassed||(t=Su(t),i="");let c=0;if(e.request.mode!=="navigator"||!A.hasCrossOriginRedirects){c=A.status;let g=jF(A.headersList);g!=="failure"&&(a.contentType=gN(g))}e.request.initiatorType!=null&&IC(t,e.request.url.href,e.request.initiatorType,globalThis,i,a,c)};let o=()=>{e.request.done=!0,e.processResponseEndOfBody!=null&&queueMicrotask(()=>e.processResponseEndOfBody(A)),e.request.initiatorType!=null&&e.controller.reportTimingSteps()};queueMicrotask(()=>o())};e.processResponse!=null&&queueMicrotask(()=>{e.processResponse(A),e.processResponse=null});let n=A.type==="error"?A:A.internalResponse??A;n.body==null?r():iN(n.body.stream,()=>{r()})}async function dC(e){let A=e.request,t=null,r=null,n=e.timingInfo;if(A.serviceWorkers,t===null){if(A.redirect==="follow"&&(A.serviceWorkers="none"),r=t=await fC(e),A.responseTainting==="cors"&&GF(A,t)==="failure")return K("cors failure");MF(A,t)==="failure"&&(A.timingAllowFailed=!0)}return(A.responseTainting==="opaque"||t.type==="opaque")&&JF(A.origin,A.client,A.destination,r)==="blocked"?K("blocked"):(EC.has(r.status)&&(A.redirect!=="manual"&&e.controller.connection.destroy(void 0,!1),A.redirect==="error"?t=K("unexpected redirect"):A.redirect==="manual"?t=r:A.redirect==="follow"?t=await pN(e,t):Ut(!1)),t.timingInfo=n,t)}function pN(e,A){let t=e.request,r=A.internalResponse?A.internalResponse:A,n;try{if(n=TF(r,pA(t).hash),n==null)return A}catch(o){return Promise.resolve(K(o))}if(!Fu(n))return Promise.resolve(K("URL scheme must be a HTTP(S) scheme"));if(t.redirectCount===20)return Promise.resolve(K("redirect count exceeded"));if(t.redirectCount+=1,t.mode==="cors"&&(n.username||n.password)&&!Ru(t,n))return Promise.resolve(K('cross origin not allowed for request mode "cors"'));if(t.responseTainting==="cors"&&(n.username||n.password))return Promise.resolve(K('URL cannot contain credentials for request mode "cors"'));if(r.status!==303&&t.body!=null&&t.body.source==null)return Promise.resolve(K());if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!IN.includes(t.method)){t.method="GET",t.body=null;for(let o of tN)t.headersList.delete(o)}Ru(pA(t),n)||(t.headersList.delete("authorization",!0),t.headersList.delete("proxy-authorization",!0),t.headersList.delete("cookie",!0),t.headersList.delete("host",!0)),t.body!=null&&(Ut(t.body.source!=null),t.body=Nu(t.body.source)[0]);let s=e.timingInfo;return s.redirectEndTime=s.postRedirectStartTime=Dn(e.crossOriginIsolatedCapability),s.redirectStartTime===0&&(s.redirectStartTime=s.startTime),t.urlList.push(n),xF(t,r),CC(e,!0)}async function fC(e,A=!1,t=!1){let r=e.request,n=null,s=null,o=null,i=null,a=!1;r.window==="no-window"&&r.redirect==="error"?(n=e,s=r):(s=RF(r),n={...e},n.request=s);let c=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic",g=s.body?s.body.length:null,u=null;if(s.body==null&&["POST","PUT"].includes(s.method)&&(u="0"),g!=null&&(u=Do(`${g}`)),u!=null&&s.headersList.append("content-length",u,!0),g!=null&&s.keepalive,s.referrer instanceof URL&&s.headersList.append("referer",Do(s.referrer.href),!0),LF(s),YF(s),s.headersList.contains("user-agent",!0)||s.headersList.append("user-agent",hN),s.cache==="default"&&(s.headersList.contains("if-modified-since",!0)||s.headersList.contains("if-none-match",!0)||s.headersList.contains("if-unmodified-since",!0)||s.headersList.contains("if-match",!0)||s.headersList.contains("if-range",!0))&&(s.cache="no-store"),s.cache==="no-cache"&&!s.preventNoCacheCacheControlHeaderModification&&!s.headersList.contains("cache-control",!0)&&s.headersList.append("cache-control","max-age=0",!0),(s.cache==="no-store"||s.cache==="reload")&&(s.headersList.contains("pragma",!0)||s.headersList.append("pragma","no-cache",!0),s.headersList.contains("cache-control",!0)||s.headersList.append("cache-control","no-cache",!0)),s.headersList.contains("range",!0)&&s.headersList.append("accept-encoding","identity",!0),s.headersList.contains("accept-encoding",!0)||(KF(pA(s))?s.headersList.append("accept-encoding","br, gzip, deflate",!0):s.headersList.append("accept-encoding","gzip, deflate",!0)),s.headersList.delete("host",!0),i==null&&(s.cache="no-store"),s.cache!=="no-store"&&s.cache,o==null){if(s.cache==="only-if-cached")return K("only if cached");let l=await wN(n,c,t);!AN.has(s.method)&&l.status>=200&&l.status<=399,a&&l.status,o==null&&(o=l)}if(o.urlList=[...s.urlList],s.headersList.contains("range",!0)&&(o.rangeRequested=!0),o.requestIncludesCredentials=c,o.status===407)return r.window==="no-window"?K():Nt(e)?yo(e):K("proxy authentication required");if(o.status===421&&!t&&(r.body==null||r.body.source!=null)){if(Nt(e))return yo(e);e.controller.connection.destroy(),o=await fC(e,A,!0)}return o}async function wN(e,A=!1,t=!1){Ut(!e.controller.connection||e.controller.connection.destroyed),e.controller.connection={abort:null,destroyed:!1,destroy(Q,h=!0){this.destroyed||(this.destroyed=!0,h&&this.abort?.(Q??new DOMException("The operation was aborted.","AbortError")))}};let r=e.request,n=null,s=e.timingInfo;null==null&&(r.cache="no-store");let i=t?"yes":"no";r.mode;let a=null;if(r.body==null&&e.processRequestEndOfBody)queueMicrotask(()=>e.processRequestEndOfBody());else if(r.body!=null){let Q=async function*(I){Nt(e)||(yield I,e.processRequestBodyChunkLength?.(I.byteLength))},h=()=>{Nt(e)||e.processRequestEndOfBody&&e.processRequestEndOfBody()},B=I=>{Nt(e)||(I.name==="AbortError"?e.controller.abort():e.controller.terminate(I))};a=(async function*(){try{for await(let I of r.body.stream)yield*Q(I);h()}catch(I){B(I)}})()}try{let{body:Q,status:h,statusText:B,headersList:I,socket:C}=await E({body:a});if(C)n=bo({status:h,statusText:B,headersList:I,socket:C});else{let p=Q[Symbol.asyncIterator]();e.controller.next=()=>p.next(),n=bo({status:h,statusText:B,headersList:I})}}catch(Q){return Q.name==="AbortError"?(e.controller.connection.destroy(),yo(e,Q)):K(Q)}let c=async()=>{await e.controller.resume()},g=Q=>{Nt(e)||e.controller.abort(Q)},u=new ReadableStream({async start(Q){e.controller.controller=Q},async pull(Q){await c(Q)},async cancel(Q){await g(Q)},type:"bytes"});n.body={stream:u,source:null,length:null},e.controller.onAborted=l,e.controller.on("terminated",l),e.controller.resume=async()=>{for(;;){let Q,h;try{let{done:I,value:C}=await e.controller.next();if(aC(e))break;Q=I?void 0:C}catch(I){e.controller.ended&&!s.encodedBodySize?Q=void 0:(Q=I,h=!0)}if(Q===void 0){WF(e.controller.controller),fN(e,n);return}if(s.decodedBodySize+=Q?.byteLength??0,h){e.controller.terminate(Q);return}let B=new Uint8Array(Q);if(B.byteLength&&e.controller.controller.enqueue(B),cN(u)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0)return}};function l(Q){aC(e)?(n.aborted=!0,ko(u)&&e.controller.controller.error(e.controller.serializedAbortReason)):ko(u)&&e.controller.controller.error(new TypeError("terminated",{cause:OF(Q)?Q:void 0})),e.controller.connection.destroy()}return n;function E({body:Q}){let h=pA(r),B=e.controller.dispatcher;return new Promise((I,C)=>B.dispatch({path:h.pathname+h.search,origin:h.origin,method:r.method,body:B.isMockActive?r.body&&(r.body.source||r.body.stream):Q,headers:r.headersList.entries,maxRedirections:0,upgrade:r.mode==="websocket"?"websocket":void 0},{body:null,abort:null,onConnect(p){let{connection:w}=e.controller;s.finalConnectionTimingInfo=ZF(void 0,s.postRedirectStartTime,e.crossOriginIsolatedCapability),w.destroyed?p(new DOMException("The operation was aborted.","AbortError")):(e.controller.on("terminated",p),this.abort=w.abort=p),s.finalNetworkRequestStartTime=Dn(e.crossOriginIsolatedCapability)},onResponseStarted(){s.finalNetworkResponseStartTime=Dn(e.crossOriginIsolatedCapability)},onHeaders(p,w,R,x){if(p<200)return;let O="",U=new iC;for(let ae=0;ae<w.length;ae+=2)U.append(uC(w[ae]),w[ae+1].toString("latin1"),!0);O=U.get("location",!0),this.body=new sN({read:R});let W=[],Ue=O&&r.redirect==="follow"&&EC.has(p);if(r.method!=="HEAD"&&r.method!=="CONNECT"&&!QC.includes(p)&&!Ue){let ae=U.get("content-encoding",!0),qe=ae?ae.toLowerCase().split(","):[],yA=5;if(qe.length>yA)return C(new Error(`too many content-encodings in response: ${qe.length}, maximum allowed is ${yA}`)),!0;for(let Jt=qe.length-1;Jt>=0;--Jt){let Ht=qe[Jt].trim();if(Ht==="x-gzip"||Ht==="gzip")W.push(et.createGunzip({flush:et.constants.Z_SYNC_FLUSH,finishFlush:et.constants.Z_SYNC_FLUSH}));else if(Ht==="deflate")W.push($F({flush:et.constants.Z_SYNC_FLUSH,finishFlush:et.constants.Z_SYNC_FLUSH}));else if(Ht==="br")W.push(et.createBrotliDecompress({flush:et.constants.BROTLI_OPERATION_FLUSH,finishFlush:et.constants.BROTLI_OPERATION_FLUSH}));else{W.length=0;break}}}let pe=this.onError.bind(this);return I({status:p,statusText:x,headersList:U,body:W.length?oN(this.body,...W,ae=>{ae&&this.onError(ae)}).on("error",pe):this.body.on("error",pe)}),!0},onData(p){if(e.controller.dump)return;let w=p;return s.encodedBodySize+=w.byteLength,this.body.push(w)},onComplete(){this.abort&&e.controller.off("terminated",this.abort),e.controller.onAborted&&e.controller.off("terminated",e.controller.onAborted),e.controller.ended=!0,this.body.push(null)},onError(p){this.abort&&e.controller.off("terminated",this.abort),this.body?.destroy(p),e.controller.terminate(p),C(p)},onUpgrade(p,w,R){if(p!==101)return;let x=new iC;for(let O=0;O<w.length;O+=2)x.append(uC(w[O]),w[O+1].toString("latin1"),!0);return I({status:p,statusText:BN[p],headersList:x,socket:R}),!0}}))}}pC.exports={fetch:dN,Fetch:Ro,fetching:hC,finalizeAndReportTiming:BC}});var Uu=f((Hv,wC)=>{"use strict";wC.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}});var yC=f((Vv,mC)=>{"use strict";var{webidl:Je}=he(),So=Symbol("ProgressEvent state"),Mu=class e extends Event{constructor(A,t={}){A=Je.converters.DOMString(A,"ProgressEvent constructor","type"),t=Je.converters.ProgressEventInit(t??{}),super(A,t),this[So]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){return Je.brandCheck(this,e),this[So].lengthComputable}get loaded(){return Je.brandCheck(this,e),this[So].loaded}get total(){return Je.brandCheck(this,e),this[So].total}};Je.converters.ProgressEventInit=Je.dictionaryConverter([{key:"lengthComputable",converter:Je.converters.boolean,defaultValue:()=>!1},{key:"loaded",converter:Je.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:Je.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:Je.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:Je.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:Je.converters.boolean,defaultValue:()=>!1}]);mC.exports={ProgressEvent:Mu}});var DC=f((qv,bC)=>{"use strict";function mN(e){if(!e)return"failure";switch(e.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}bC.exports={getEncoding:mN}});var LC=f((Ov,MC)=>{"use strict";var{kState:Dr,kError:Lu,kResult:kC,kAborted:Rn,kLastProgressEventFired:Tu}=Uu(),{ProgressEvent:yN}=yC(),{getEncoding:RC}=DC(),{serializeAMimeType:bN,parseMIMEType:SC}=be(),{types:DN}=d("node:util"),{StringDecoder:FC}=d("string_decoder"),{btoa:NC}=d("node:buffer"),kN={enumerable:!0,writable:!1,configurable:!1};function RN(e,A,t,r){if(e[Dr]==="loading")throw new DOMException("Invalid state","InvalidStateError");e[Dr]="loading",e[kC]=null,e[Lu]=null;let s=A.stream().getReader(),o=[],i=s.read(),a=!0;(async()=>{for(;!e[Rn];)try{let{done:c,value:g}=await i;if(a&&!e[Rn]&&queueMicrotask(()=>{At("loadstart",e)}),a=!1,!c&&DN.isUint8Array(g))o.push(g),(e[Tu]===void 0||Date.now()-e[Tu]>=50)&&!e[Rn]&&(e[Tu]=Date.now(),queueMicrotask(()=>{At("progress",e)})),i=s.read();else if(c){queueMicrotask(()=>{e[Dr]="done";try{let u=SN(o,t,A.type,r);if(e[Rn])return;e[kC]=u,At("load",e)}catch(u){e[Lu]=u,At("error",e)}e[Dr]!=="loading"&&At("loadend",e)});break}}catch(c){if(e[Rn])return;queueMicrotask(()=>{e[Dr]="done",e[Lu]=c,At("error",e),e[Dr]!=="loading"&&At("loadend",e)});break}})()}function At(e,A){let t=new yN(e,{bubbles:!1,cancelable:!1});A.dispatchEvent(t)}function SN(e,A,t,r){switch(A){case"DataURL":{let n="data:",s=SC(t||"application/octet-stream");s!=="failure"&&(n+=bN(s)),n+=";base64,";let o=new FC("latin1");for(let i of e)n+=NC(o.write(i));return n+=NC(o.end()),n}case"Text":{let n="failure";if(r&&(n=RC(r)),n==="failure"&&t){let s=SC(t);s!=="failure"&&(n=RC(s.parameters.get("charset")))}return n==="failure"&&(n="UTF-8"),FN(e,n)}case"ArrayBuffer":return UC(e).buffer;case"BinaryString":{let n="",s=new FC("latin1");for(let o of e)n+=s.write(o);return n+=s.end(),n}}}function FN(e,A){let t=UC(e),r=NN(t),n=0;r!==null&&(A=r,n=r==="UTF-8"?3:2);let s=t.slice(n);return new TextDecoder(A).decode(s)}function NN(e){let[A,t,r]=e;return A===239&&t===187&&r===191?"UTF-8":A===254&&t===255?"UTF-16BE":A===255&&t===254?"UTF-16LE":null}function UC(e){let A=e.reduce((r,n)=>r+n.byteLength,0),t=0;return e.reduce((r,n)=>(r.set(n,t),t+=n.byteLength,r),new Uint8Array(A))}MC.exports={staticPropertyDescriptors:kN,readOperation:RN,fireAProgressEvent:At}});var YC=f((Pv,vC)=>{"use strict";var{staticPropertyDescriptors:kr,readOperation:Fo,fireAProgressEvent:TC}=LC(),{kState:Mt,kError:xC,kResult:No,kEvents:P,kAborted:UN}=Uu(),{webidl:X}=he(),{kEnumerableProperty:Re}=Y(),sA=class e extends EventTarget{constructor(){super(),this[Mt]="empty",this[No]=null,this[xC]=null,this[P]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){X.brandCheck(this,e),X.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer"),A=X.converters.Blob(A,{strict:!1}),Fo(this,A,"ArrayBuffer")}readAsBinaryString(A){X.brandCheck(this,e),X.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString"),A=X.converters.Blob(A,{strict:!1}),Fo(this,A,"BinaryString")}readAsText(A,t=void 0){X.brandCheck(this,e),X.argumentLengthCheck(arguments,1,"FileReader.readAsText"),A=X.converters.Blob(A,{strict:!1}),t!==void 0&&(t=X.converters.DOMString(t,"FileReader.readAsText","encoding")),Fo(this,A,"Text",t)}readAsDataURL(A){X.brandCheck(this,e),X.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL"),A=X.converters.Blob(A,{strict:!1}),Fo(this,A,"DataURL")}abort(){if(this[Mt]==="empty"||this[Mt]==="done"){this[No]=null;return}this[Mt]==="loading"&&(this[Mt]="done",this[No]=null),this[UN]=!0,TC("abort",this),this[Mt]!=="loading"&&TC("loadend",this)}get readyState(){switch(X.brandCheck(this,e),this[Mt]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){return X.brandCheck(this,e),this[No]}get error(){return X.brandCheck(this,e),this[xC]}get onloadend(){return X.brandCheck(this,e),this[P].loadend}set onloadend(A){X.brandCheck(this,e),this[P].loadend&&this.removeEventListener("loadend",this[P].loadend),typeof A=="function"?(this[P].loadend=A,this.addEventListener("loadend",A)):this[P].loadend=null}get onerror(){return X.brandCheck(this,e),this[P].error}set onerror(A){X.brandCheck(this,e),this[P].error&&this.removeEventListener("error",this[P].error),typeof A=="function"?(this[P].error=A,this.addEventListener("error",A)):this[P].error=null}get onloadstart(){return X.brandCheck(this,e),this[P].loadstart}set onloadstart(A){X.brandCheck(this,e),this[P].loadstart&&this.removeEventListener("loadstart",this[P].loadstart),typeof A=="function"?(this[P].loadstart=A,this.addEventListener("loadstart",A)):this[P].loadstart=null}get onprogress(){return X.brandCheck(this,e),this[P].progress}set onprogress(A){X.brandCheck(this,e),this[P].progress&&this.removeEventListener("progress",this[P].progress),typeof A=="function"?(this[P].progress=A,this.addEventListener("progress",A)):this[P].progress=null}get onload(){return X.brandCheck(this,e),this[P].load}set onload(A){X.brandCheck(this,e),this[P].load&&this.removeEventListener("load",this[P].load),typeof A=="function"?(this[P].load=A,this.addEventListener("load",A)):this[P].load=null}get onabort(){return X.brandCheck(this,e),this[P].abort}set onabort(A){X.brandCheck(this,e),this[P].abort&&this.removeEventListener("abort",this[P].abort),typeof A=="function"?(this[P].abort=A,this.addEventListener("abort",A)):this[P].abort=null}};sA.EMPTY=sA.prototype.EMPTY=0;sA.LOADING=sA.prototype.LOADING=1;sA.DONE=sA.prototype.DONE=2;Object.defineProperties(sA.prototype,{EMPTY:kr,LOADING:kr,DONE:kr,readAsArrayBuffer:Re,readAsBinaryString:Re,readAsText:Re,readAsDataURL:Re,abort:Re,readyState:Re,result:Re,error:Re,onloadstart:Re,onprogress:Re,onload:Re,onabort:Re,onerror:Re,onloadend:Re,[Symbol.toStringTag]:{value:"FileReader",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(sA,{EMPTY:kr,LOADING:kr,DONE:kr});vC.exports={FileReader:sA}});var Uo=f((Wv,GC)=>{"use strict";GC.exports={kConstruct:Ae().kConstruct}});var VC=f((_v,HC)=>{"use strict";var MN=d("node:assert"),{URLSerializer:JC}=be(),{isValidHeaderName:LN}=Me();function TN(e,A,t=!1){let r=JC(e,t),n=JC(A,t);return r===n}function xN(e){MN(e!==null);let A=[];for(let t of e.split(","))t=t.trim(),LN(t)&&A.push(t);return A}HC.exports={urlEquals:TN,getFieldValues:xN}});var PC=f((Kv,OC)=>{"use strict";var{kConstruct:vN}=Uo(),{urlEquals:YN,getFieldValues:xu}=VC(),{kEnumerableProperty:Lt,isDisturbed:GN}=Y(),{webidl:D}=he(),{Response:JN,cloneResponse:HN,fromInnerResponse:VN}=bn(),{Request:xA,fromInnerRequest:qN}=br(),{kState:oA}=VA(),{fetching:ON}=kn(),{urlIsHttpHttpsScheme:Mo,createDeferredPromise:Rr,readAllBytes:PN}=Me(),vu=d("node:assert"),Lo=class e{#e;constructor(){arguments[0]!==vN&&D.illegalConstructor(),D.util.markAsUncloneable(this),this.#e=arguments[1]}async match(A,t={}){D.brandCheck(this,e);let r="Cache.match";D.argumentLengthCheck(arguments,1,r),A=D.converters.RequestInfo(A,r,"request"),t=D.converters.CacheQueryOptions(t,r,"options");let n=this.#n(A,t,1);if(n.length!==0)return n[0]}async matchAll(A=void 0,t={}){D.brandCheck(this,e);let r="Cache.matchAll";return A!==void 0&&(A=D.converters.RequestInfo(A,r,"request")),t=D.converters.CacheQueryOptions(t,r,"options"),this.#n(A,t)}async add(A){D.brandCheck(this,e);let t="Cache.add";D.argumentLengthCheck(arguments,1,t),A=D.converters.RequestInfo(A,t,"request");let r=[A];return await this.addAll(r)}async addAll(A){D.brandCheck(this,e);let t="Cache.addAll";D.argumentLengthCheck(arguments,1,t);let r=[],n=[];for(let l of A){if(l===void 0)throw D.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]});if(l=D.converters.RequestInfo(l),typeof l=="string")continue;let E=l[oA];if(!Mo(E.url)||E.method!=="GET")throw D.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}let s=[];for(let l of A){let E=new xA(l)[oA];if(!Mo(E.url))throw D.errors.exception({header:t,message:"Expected http/s scheme."});E.initiator="fetch",E.destination="subresource",n.push(E);let Q=Rr();s.push(ON({request:E,processResponse(h){if(h.type==="error"||h.status===206||h.status<200||h.status>299)Q.reject(D.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}));else if(h.headersList.contains("vary")){let B=xu(h.headersList.get("vary"));for(let I of B)if(I==="*"){Q.reject(D.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(let C of s)C.abort();return}}},processResponseEndOfBody(h){if(h.aborted){Q.reject(new DOMException("aborted","AbortError"));return}Q.resolve(h)}})),r.push(Q.promise)}let i=await Promise.all(r),a=[],c=0;for(let l of i){let E={type:"put",request:n[c],response:l};a.push(E),c++}let g=Rr(),u=null;try{this.#A(a)}catch(l){u=l}return queueMicrotask(()=>{u===null?g.resolve(void 0):g.reject(u)}),g.promise}async put(A,t){D.brandCheck(this,e);let r="Cache.put";D.argumentLengthCheck(arguments,2,r),A=D.converters.RequestInfo(A,r,"request"),t=D.converters.Response(t,r,"response");let n=null;if(A instanceof xA?n=A[oA]:n=new xA(A)[oA],!Mo(n.url)||n.method!=="GET")throw D.errors.exception({header:r,message:"Expected an http/s scheme when method is not GET"});let s=t[oA];if(s.status===206)throw D.errors.exception({header:r,message:"Got 206 status"});if(s.headersList.contains("vary")){let E=xu(s.headersList.get("vary"));for(let Q of E)if(Q==="*")throw D.errors.exception({header:r,message:"Got * vary field value"})}if(s.body&&(GN(s.body.stream)||s.body.stream.locked))throw D.errors.exception({header:r,message:"Response body is locked or disturbed"});let o=HN(s),i=Rr();if(s.body!=null){let Q=s.body.stream.getReader();PN(Q).then(i.resolve,i.reject)}else i.resolve(void 0);let a=[],c={type:"put",request:n,response:o};a.push(c);let g=await i.promise;o.body!=null&&(o.body.source=g);let u=Rr(),l=null;try{this.#A(a)}catch(E){l=E}return queueMicrotask(()=>{l===null?u.resolve():u.reject(l)}),u.promise}async delete(A,t={}){D.brandCheck(this,e);let r="Cache.delete";D.argumentLengthCheck(arguments,1,r),A=D.converters.RequestInfo(A,r,"request"),t=D.converters.CacheQueryOptions(t,r,"options");let n=null;if(A instanceof xA){if(n=A[oA],n.method!=="GET"&&!t.ignoreMethod)return!1}else vu(typeof A=="string"),n=new xA(A)[oA];let s=[],o={type:"delete",request:n,options:t};s.push(o);let i=Rr(),a=null,c;try{c=this.#A(s)}catch(g){a=g}return queueMicrotask(()=>{a===null?i.resolve(!!c?.length):i.reject(a)}),i.promise}async keys(A=void 0,t={}){D.brandCheck(this,e);let r="Cache.keys";A!==void 0&&(A=D.converters.RequestInfo(A,r,"request")),t=D.converters.CacheQueryOptions(t,r,"options");let n=null;if(A!==void 0)if(A instanceof xA){if(n=A[oA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new xA(A)[oA]);let s=Rr(),o=[];if(A===void 0)for(let i of this.#e)o.push(i[0]);else{let i=this.#t(n,t);for(let a of i)o.push(a[0])}return queueMicrotask(()=>{let i=[];for(let a of o){let c=qN(a,new AbortController().signal,"immutable");i.push(c)}s.resolve(Object.freeze(i))}),s.promise}#A(A){let t=this.#e,r=[...t],n=[],s=[];try{for(let o of A){if(o.type!=="delete"&&o.type!=="put")throw D.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'});if(o.type==="delete"&&o.response!=null)throw D.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"});if(this.#t(o.request,o.options,n).length)throw new DOMException("???","InvalidStateError");let i;if(o.type==="delete"){if(i=this.#t(o.request,o.options),i.length===0)return[];for(let a of i){let c=t.indexOf(a);vu(c!==-1),t.splice(c,1)}}else if(o.type==="put"){if(o.response==null)throw D.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"});let a=o.request;if(!Mo(a.url))throw D.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"});if(a.method!=="GET")throw D.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"});if(o.options!=null)throw D.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"});i=this.#t(o.request);for(let c of i){let g=t.indexOf(c);vu(g!==-1),t.splice(g,1)}t.push([o.request,o.response]),n.push([o.request,o.response])}s.push([o.request,o.response])}return s}catch(o){throw this.#e.length=0,this.#e=r,o}}#t(A,t,r){let n=[],s=r??this.#e;for(let o of s){let[i,a]=o;this.#s(A,i,a,t)&&n.push(o)}return n}#s(A,t,r=null,n){let s=new URL(A.url),o=new URL(t.url);if(n?.ignoreSearch&&(o.search="",s.search=""),!YN(s,o,!0))return!1;if(r==null||n?.ignoreVary||!r.headersList.contains("vary"))return!0;let i=xu(r.headersList.get("vary"));for(let a of i){if(a==="*")return!1;let c=t.headersList.get(a),g=A.headersList.get(a);if(c!==g)return!1}return!0}#n(A,t,r=1/0){let n=null;if(A!==void 0)if(A instanceof xA){if(n=A[oA],n.method!=="GET"&&!t.ignoreMethod)return[]}else typeof A=="string"&&(n=new xA(A)[oA]);let s=[];if(A===void 0)for(let i of this.#e)s.push(i[1]);else{let i=this.#t(n,t);for(let a of i)s.push(a[1])}let o=[];for(let i of s){let a=VN(i,"immutable");if(o.push(a.clone()),o.length>=r)break}return Object.freeze(o)}};Object.defineProperties(Lo.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:!0},match:Lt,matchAll:Lt,add:Lt,addAll:Lt,put:Lt,delete:Lt,keys:Lt});var qC=[{key:"ignoreSearch",converter:D.converters.boolean,defaultValue:()=>!1},{key:"ignoreMethod",converter:D.converters.boolean,defaultValue:()=>!1},{key:"ignoreVary",converter:D.converters.boolean,defaultValue:()=>!1}];D.converters.CacheQueryOptions=D.dictionaryConverter(qC);D.converters.MultiCacheQueryOptions=D.dictionaryConverter([...qC,{key:"cacheName",converter:D.converters.DOMString}]);D.converters.Response=D.interfaceConverter(JN);D.converters["sequence<RequestInfo>"]=D.sequenceConverter(D.converters.RequestInfo);OC.exports={Cache:Lo}});var _C=f((Zv,WC)=>{"use strict";var{kConstruct:Sn}=Uo(),{Cache:To}=PC(),{webidl:fe}=he(),{kEnumerableProperty:Fn}=Y(),xo=class e{#e=new Map;constructor(){arguments[0]!==Sn&&fe.illegalConstructor(),fe.util.markAsUncloneable(this)}async match(A,t={}){if(fe.brandCheck(this,e),fe.argumentLengthCheck(arguments,1,"CacheStorage.match"),A=fe.converters.RequestInfo(A),t=fe.converters.MultiCacheQueryOptions(t),t.cacheName!=null){if(this.#e.has(t.cacheName)){let r=this.#e.get(t.cacheName);return await new To(Sn,r).match(A,t)}}else for(let r of this.#e.values()){let s=await new To(Sn,r).match(A,t);if(s!==void 0)return s}}async has(A){fe.brandCheck(this,e);let t="CacheStorage.has";return fe.argumentLengthCheck(arguments,1,t),A=fe.converters.DOMString(A,t,"cacheName"),this.#e.has(A)}async open(A){fe.brandCheck(this,e);let t="CacheStorage.open";if(fe.argumentLengthCheck(arguments,1,t),A=fe.converters.DOMString(A,t,"cacheName"),this.#e.has(A)){let n=this.#e.get(A);return new To(Sn,n)}let r=[];return this.#e.set(A,r),new To(Sn,r)}async delete(A){fe.brandCheck(this,e);let t="CacheStorage.delete";return fe.argumentLengthCheck(arguments,1,t),A=fe.converters.DOMString(A,t,"cacheName"),this.#e.delete(A)}async keys(){return fe.brandCheck(this,e),[...this.#e.keys()]}};Object.defineProperties(xo.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:!0},match:Fn,has:Fn,open:Fn,delete:Fn,keys:Fn});WC.exports={CacheStorage:xo}});var ZC=f((zv,KC)=>{"use strict";KC.exports={maxAttributeValueSize:1024,maxNameValuePairSize:4096}});var Ju=f((Xv,jC)=>{"use strict";function WN(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t>=0&&t<=8||t>=10&&t<=31||t===127)return!0}return!1}function Yu(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===60||t===62||t===64||t===44||t===59||t===58||t===92||t===47||t===91||t===93||t===63||t===61||t===123||t===125)throw new Error("Invalid cookie name")}}function Gu(e){let A=e.length,t=0;if(e[0]==='"'){if(A===1||e[A-1]!=='"')throw new Error("Invalid cookie value");--A,++t}for(;t<A;){let r=e.charCodeAt(t++);if(r<33||r>126||r===34||r===44||r===59||r===92)throw new Error("Invalid cookie value")}}function XC(e){for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<32||t>126||t===59)throw new Error("Invalid cookie path")}}function zC(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function _N(e){if(e===" ")return;if(e.length>255)throw new Error("Invalid cookie domain");let A=0;for(let t=0;t<e.length;++t){let r=e.charCodeAt(t);if(r===46){if(A===0)throw new Error("Invalid cookie domain");if(e.charCodeAt(t-1)===45)throw new Error("Invalid cookie domain");A=0;continue}if(A===0&&!zC(r))throw new Error("Invalid cookie domain");if(!zC(r)&&r!==45)throw new Error("Invalid cookie domain");if(++A>63)throw new Error("Invalid cookie domain")}if(A===0||e.charCodeAt(e.length-1)===45)throw new Error("Invalid cookie domain")}var KN=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ZN=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],vo=Array(61).fill(0).map((e,A)=>A.toString().padStart(2,"0"));function $C(e){return typeof e=="number"&&(e=new Date(e)),`${KN[e.getUTCDay()]}, ${vo[e.getUTCDate()]} ${ZN[e.getUTCMonth()]} ${e.getUTCFullYear()} ${vo[e.getUTCHours()]}:${vo[e.getUTCMinutes()]}:${vo[e.getUTCSeconds()]} GMT`}function zN(e){if(e<0)throw new Error("Invalid cookie max-age")}function XN(e){if(e.name.length===0)return null;Yu(e.name),Gu(e.value);let A=[`${e.name}=${e.value}`];e.name.startsWith("__Secure-")&&(e.secure=!0),e.name.startsWith("__Host-")&&(e.secure=!0,e.domain=null,e.path="/"),e.secure&&A.push("Secure"),e.httpOnly&&A.push("HttpOnly"),typeof e.maxAge=="number"&&(zN(e.maxAge),A.push(`Max-Age=${e.maxAge}`)),e.domain&&(_N(e.domain),A.push(`Domain=${e.domain}`)),e.path&&(XC(e.path),A.push(`Path=${e.path}`)),e.expires&&e.expires.toString()!=="Invalid Date"&&A.push(`Expires=${$C(e.expires)}`),e.sameSite&&A.push(`SameSite=${e.sameSite}`);for(let t of e.unparsed){if(!t.includes("="))throw new Error("Invalid unparsed");let[r,...n]=t.split("="),s=r.trim(),o=n.join("=");Yu(s),Gu(o),A.push(`${s}=${o}`)}return A.join("; ")}jC.exports={isCTLExcludingHtab:WN,validateCookieName:Yu,validateCookiePath:XC,validateCookieValue:Gu,toIMFDate:$C,stringify:XN}});var Ad=f(($v,ed)=>{"use strict";var{maxNameValuePairSize:$N,maxAttributeValueSize:jN}=ZC(),{isCTLExcludingHtab:eU}=Ju(),{collectASequenceOfCodePointsFast:Yo}=be(),AU=d("node:assert");function tU(e){if(eU(e))return null;let A="",t="",r="",n="";if(e.includes(";")){let s={position:0};A=Yo(";",e,s),t=e.slice(s.position)}else A=e;if(!A.includes("="))n=A;else{let s={position:0};r=Yo("=",A,s),n=A.slice(s.position+1)}return r=r.trim(),n=n.trim(),r.length+n.length>$N?null:{name:r,value:n,...Sr(t)}}function Sr(e,A={}){if(e.length===0)return A;AU(e[0]===";"),e=e.slice(1);let t="";e.includes(";")?(t=Yo(";",e,{position:0}),e=e.slice(t.length)):(t=e,e="");let r="",n="";if(t.includes("=")){let o={position:0};r=Yo("=",t,o),n=t.slice(o.position+1)}else r=t;if(r=r.trim(),n=n.trim(),n.length>jN)return Sr(e,A);let s=r.toLowerCase();if(s==="expires"){let o=new Date(n);A.expires=o}else if(s==="max-age"){let o=n.charCodeAt(0);if((o<48||o>57)&&n[0]!=="-"||!/^\d+$/.test(n))return Sr(e,A);let i=Number(n);A.maxAge=i}else if(s==="domain"){let o=n;o[0]==="."&&(o=o.slice(1)),o=o.toLowerCase(),A.domain=o}else if(s==="path"){let o="";n.length===0||n[0]!=="/"?o="/":o=n,A.path=o}else if(s==="secure")A.secure=!0;else if(s==="httponly")A.httpOnly=!0;else if(s==="samesite"){let o=n.toLowerCase();o==="none"?A.sameSite="None":o==="strict"?A.sameSite="Strict":o==="lax"&&(A.sameSite="Lax")}else A.unparsed??=[],A.unparsed.push(`${r}=${n}`);return Sr(e,A)}ed.exports={parseSetCookie:tU,parseUnparsedAttributes:Sr}});var nd=f((jv,rd)=>{"use strict";var{parseSetCookie:rU}=Ad(),{stringify:nU}=Ju(),{webidl:J}=he(),{Headers:Go}=St();function sU(e){J.argumentLengthCheck(arguments,1,"getCookies"),J.brandCheck(e,Go,{strict:!1});let A=e.get("cookie"),t={};if(!A)return t;for(let r of A.split(";")){let[n,...s]=r.split("=");t[n.trim()]=s.join("=")}return t}function oU(e,A,t){J.brandCheck(e,Go,{strict:!1});let r="deleteCookie";J.argumentLengthCheck(arguments,2,r),A=J.converters.DOMString(A,r,"name"),t=J.converters.DeleteCookieAttributes(t),td(e,{name:A,value:"",expires:new Date(0),...t})}function iU(e){J.argumentLengthCheck(arguments,1,"getSetCookies"),J.brandCheck(e,Go,{strict:!1});let A=e.getSetCookie();return A?A.map(t=>rU(t)):[]}function td(e,A){J.argumentLengthCheck(arguments,2,"setCookie"),J.brandCheck(e,Go,{strict:!1}),A=J.converters.Cookie(A);let t=nU(A);t&&e.append("Set-Cookie",t)}J.converters.DeleteCookieAttributes=J.dictionaryConverter([{converter:J.nullableConverter(J.converters.DOMString),key:"path",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"domain",defaultValue:()=>null}]);J.converters.Cookie=J.dictionaryConverter([{converter:J.converters.DOMString,key:"name"},{converter:J.converters.DOMString,key:"value"},{converter:J.nullableConverter(e=>typeof e=="number"?J.converters["unsigned long long"](e):new Date(e)),key:"expires",defaultValue:()=>null},{converter:J.nullableConverter(J.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.DOMString),key:"path",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.boolean),key:"secure",defaultValue:()=>null},{converter:J.nullableConverter(J.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:J.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:J.sequenceConverter(J.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);rd.exports={getCookies:sU,deleteCookie:oU,getSetCookies:iU,setCookie:td}});var Nr=f((e1,od)=>{"use strict";var{webidl:b}=he(),{kEnumerableProperty:Se}=Y(),{kConstruct:sd}=Ae(),{MessagePort:aU}=d("node:worker_threads"),Fr=class e extends Event{#e;constructor(A,t={}){if(A===sd){super(arguments[1],arguments[2]),b.util.markAsUncloneable(this);return}let r="MessageEvent constructor";b.argumentLengthCheck(arguments,1,r),A=b.converters.DOMString(A,r,"type"),t=b.converters.MessageEventInit(t,r,"eventInitDict"),super(A,t),this.#e=t,b.util.markAsUncloneable(this)}get data(){return b.brandCheck(this,e),this.#e.data}get origin(){return b.brandCheck(this,e),this.#e.origin}get lastEventId(){return b.brandCheck(this,e),this.#e.lastEventId}get source(){return b.brandCheck(this,e),this.#e.source}get ports(){return b.brandCheck(this,e),Object.isFrozen(this.#e.ports)||Object.freeze(this.#e.ports),this.#e.ports}initMessageEvent(A,t=!1,r=!1,n=null,s="",o="",i=null,a=[]){return b.brandCheck(this,e),b.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent"),new e(A,{bubbles:t,cancelable:r,data:n,origin:s,lastEventId:o,source:i,ports:a})}static createFastMessageEvent(A,t){let r=new e(sd,A,t);return r.#e=t,r.#e.data??=null,r.#e.origin??="",r.#e.lastEventId??="",r.#e.source??=null,r.#e.ports??=[],r}},{createFastMessageEvent:cU}=Fr;delete Fr.createFastMessageEvent;var Jo=class e extends Event{#e;constructor(A,t={}){let r="CloseEvent constructor";b.argumentLengthCheck(arguments,1,r),A=b.converters.DOMString(A,r,"type"),t=b.converters.CloseEventInit(t),super(A,t),this.#e=t,b.util.markAsUncloneable(this)}get wasClean(){return b.brandCheck(this,e),this.#e.wasClean}get code(){return b.brandCheck(this,e),this.#e.code}get reason(){return b.brandCheck(this,e),this.#e.reason}},Ho=class e extends Event{#e;constructor(A,t){let r="ErrorEvent constructor";b.argumentLengthCheck(arguments,1,r),super(A,t),b.util.markAsUncloneable(this),A=b.converters.DOMString(A,r,"type"),t=b.converters.ErrorEventInit(t??{}),this.#e=t}get message(){return b.brandCheck(this,e),this.#e.message}get filename(){return b.brandCheck(this,e),this.#e.filename}get lineno(){return b.brandCheck(this,e),this.#e.lineno}get colno(){return b.brandCheck(this,e),this.#e.colno}get error(){return b.brandCheck(this,e),this.#e.error}};Object.defineProperties(Fr.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:!0},data:Se,origin:Se,lastEventId:Se,source:Se,ports:Se,initMessageEvent:Se});Object.defineProperties(Jo.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:!0},reason:Se,code:Se,wasClean:Se});Object.defineProperties(Ho.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:!0},message:Se,filename:Se,lineno:Se,colno:Se,error:Se});b.converters.MessagePort=b.interfaceConverter(aU);b.converters["sequence<MessagePort>"]=b.sequenceConverter(b.converters.MessagePort);var Hu=[{key:"bubbles",converter:b.converters.boolean,defaultValue:()=>!1},{key:"cancelable",converter:b.converters.boolean,defaultValue:()=>!1},{key:"composed",converter:b.converters.boolean,defaultValue:()=>!1}];b.converters.MessageEventInit=b.dictionaryConverter([...Hu,{key:"data",converter:b.converters.any,defaultValue:()=>null},{key:"origin",converter:b.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:b.converters.DOMString,defaultValue:()=>""},{key:"source",converter:b.nullableConverter(b.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:b.converters["sequence<MessagePort>"],defaultValue:()=>new Array(0)}]);b.converters.CloseEventInit=b.dictionaryConverter([...Hu,{key:"wasClean",converter:b.converters.boolean,defaultValue:()=>!1},{key:"code",converter:b.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:b.converters.USVString,defaultValue:()=>""}]);b.converters.ErrorEventInit=b.dictionaryConverter([...Hu,{key:"message",converter:b.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:b.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:b.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:b.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:b.converters.any}]);od.exports={MessageEvent:Fr,CloseEvent:Jo,ErrorEvent:Ho,createFastMessageEvent:cU}});var Tt=f((A1,id)=>{"use strict";var uU="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",lU={enumerable:!0,writable:!1,configurable:!1},gU={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3},EU={NOT_SENT:0,PROCESSING:1,SENT:2},QU={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10},BU=2**16-1,IU={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4},hU=Buffer.allocUnsafe(0),CU={string:1,typedArray:2,arrayBuffer:3,blob:4};id.exports={uid:uU,sentCloseFrameState:EU,staticPropertyDescriptors:lU,states:gU,opcodes:QU,maxUnsigned16Bit:BU,parserStates:IU,emptyBuffer:hU,sendHints:CU}});var Nn=f((t1,ad)=>{"use strict";ad.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}});var Ln=f((r1,hd)=>{"use strict";var{kReadyState:Un,kController:dU,kResponse:fU,kBinaryType:pU,kWebSocketURL:wU}=Nn(),{states:Mn,opcodes:tt}=Tt(),{ErrorEvent:mU,createFastMessageEvent:yU}=Nr(),{isUtf8:bU}=d("node:buffer"),{collectASequenceOfCodePointsFast:DU,removeHTTPWhitespace:cd}=be();function kU(e){return e[Un]===Mn.CONNECTING}function RU(e){return e[Un]===Mn.OPEN}function SU(e){return e[Un]===Mn.CLOSING}function FU(e){return e[Un]===Mn.CLOSED}function Vu(e,A,t=(n,s)=>new Event(n,s),r={}){let n=t(e,r);A.dispatchEvent(n)}function NU(e,A,t){if(e[Un]!==Mn.OPEN)return;let r;if(A===tt.TEXT)try{r=Id(t)}catch{ld(e,"Received invalid UTF-8 in text frame.");return}else A===tt.BINARY&&(e[pU]==="blob"?r=new Blob([t]):r=UU(t));Vu("message",e,yU,{origin:e[wU].origin,data:r})}function UU(e){return e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function MU(e){if(e.length===0)return!1;for(let A=0;A<e.length;++A){let t=e.charCodeAt(A);if(t<33||t>126||t===34||t===40||t===41||t===44||t===47||t===58||t===59||t===60||t===61||t===62||t===63||t===64||t===91||t===92||t===93||t===123||t===125)return!1}return!0}function LU(e){return e>=1e3&&e<1015?e!==1004&&e!==1005&&e!==1006:e>=3e3&&e<=4999}function ld(e,A){let{[dU]:t,[fU]:r}=e;t.abort(),r?.socket&&!r.socket.destroyed&&r.socket.destroy(),A&&Vu("error",e,(n,s)=>new mU(n,s),{error:new Error(A),message:A})}function gd(e){return e===tt.CLOSE||e===tt.PING||e===tt.PONG}function Ed(e){return e===tt.CONTINUATION}function Qd(e){return e===tt.TEXT||e===tt.BINARY}function TU(e){return Qd(e)||Ed(e)||gd(e)}function xU(e){let A={position:0},t=new Map;for(;A.position<e.length;){let r=DU(";",e,A),[n,s=""]=r.split("=");t.set(cd(n,!0,!1),cd(s,!1,!0)),A.position++}return t}function vU(e){if(e.length===0)return!1;for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r<48||r>57)return!1}let A=Number.parseInt(e,10);return A>=8&&A<=15}var Bd=typeof process.versions.icu=="string",ud=Bd?new TextDecoder("utf-8",{fatal:!0}):void 0,Id=Bd?ud.decode.bind(ud):function(e){if(bU(e))return e.toString("utf-8");throw new TypeError("Invalid utf-8 received.")};hd.exports={isConnecting:kU,isEstablished:RU,isClosing:SU,isClosed:FU,fireEvent:Vu,isValidSubprotocol:MU,isValidStatusCode:LU,failWebsocketConnection:ld,websocketMessageReceived:NU,utf8Decode:Id,isControlFrame:gd,isContinuationFrame:Ed,isTextBinaryFrame:Qd,isValidOpcode:TU,parseExtensions:xU,isValidClientWindowBits:vU}});var qo=f((n1,Cd)=>{"use strict";var{maxUnsigned16Bit:YU}=Tt(),Vo=16386,qu,Tn=null,Ur=Vo;try{qu=d("node:crypto")}catch{qu={randomFillSync:function(A,t,r){for(let n=0;n<A.length;++n)A[n]=Math.random()*255|0;return A}}}function GU(){return Ur===Vo&&(Ur=0,qu.randomFillSync(Tn??=Buffer.allocUnsafe(Vo),0,Vo)),[Tn[Ur++],Tn[Ur++],Tn[Ur++],Tn[Ur++]]}var Ou=class{constructor(A){this.frameData=A}createFrame(A){let t=this.frameData,r=GU(),n=t?.byteLength??0,s=n,o=6;n>YU?(o+=8,s=127):n>125&&(o+=2,s=126);let i=Buffer.allocUnsafe(n+o);i[0]=i[1]=0,i[0]|=128,i[0]=(i[0]&240)+A;i[o-4]=r[0],i[o-3]=r[1],i[o-2]=r[2],i[o-1]=r[3],i[1]=s,s===126?i.writeUInt16BE(n,2):s===127&&(i[2]=i[3]=0,i.writeUIntBE(n,4,6)),i[1]|=128;for(let a=0;a<n;++a)i[o+a]=t[a]^r[a&3];return i}};Cd.exports={WebsocketFrameSend:Ou}});var Wu=f((s1,bd)=>{"use strict";var{uid:JU,states:xn,sentCloseFrameState:Oo,emptyBuffer:HU,opcodes:VU}=Tt(),{kReadyState:vn,kSentClose:Po,kByteParser:fd,kReceivedClose:dd,kResponse:pd}=Nn(),{fireEvent:qU,failWebsocketConnection:rt,isClosing:OU,isClosed:PU,isEstablished:WU,parseExtensions:_U}=Ln(),{channels:Mr}=qt(),{CloseEvent:KU}=Nr(),{makeRequest:ZU}=br(),{fetching:zU}=kn(),{Headers:XU,getHeadersList:$U}=St(),{getDecodeSplit:jU}=Me(),{WebsocketFrameSend:eM}=qo(),Pu;try{Pu=d("node:crypto")}catch{}function AM(e,A,t,r,n,s){let o=e;o.protocol=e.protocol==="ws:"?"http:":"https:";let i=ZU({urlList:[o],client:t,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(s.headers){let u=$U(new XU(s.headers));i.headersList=u}let a=Pu.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",a),i.headersList.append("sec-websocket-version","13");for(let u of A)i.headersList.append("sec-websocket-protocol",u);return i.headersList.append("sec-websocket-extensions","permessage-deflate; client_max_window_bits"),zU({request:i,useParallelQueue:!0,dispatcher:s.dispatcher,processResponse(u){if(u.type==="error"||u.status!==101){rt(r,"Received network error or non-101 status code.");return}if(A.length!==0&&!u.headersList.get("Sec-WebSocket-Protocol")){rt(r,"Server did not respond with sent protocols.");return}if(u.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){rt(r,'Server did not set Upgrade header to "websocket".');return}if(u.headersList.get("Connection")?.toLowerCase()!=="upgrade"){rt(r,'Server did not set Connection header to "upgrade".');return}let l=u.headersList.get("Sec-WebSocket-Accept"),E=Pu.createHash("sha1").update(a+JU).digest("base64");if(l!==E){rt(r,"Incorrect hash received in Sec-WebSocket-Accept header.");return}let Q=u.headersList.get("Sec-WebSocket-Extensions"),h;if(Q!==null&&(h=_U(Q),!h.has("permessage-deflate"))){rt(r,"Sec-WebSocket-Extensions header does not match.");return}let B=u.headersList.get("Sec-WebSocket-Protocol");if(B!==null&&!jU("sec-websocket-protocol",i.headersList).includes(B)){rt(r,"Protocol was not set in the opening handshake.");return}u.socket.on("data",wd),u.socket.on("close",md),u.socket.on("error",yd),Mr.open.hasSubscribers&&Mr.open.publish({address:u.socket.address(),protocol:B,extensions:Q}),n(u,h)}})}function tM(e,A,t,r){if(!(OU(e)||PU(e)))if(!WU(e))rt(e,"Connection was closed before it was established."),e[vn]=xn.CLOSING;else if(e[Po]===Oo.NOT_SENT){e[Po]=Oo.PROCESSING;let n=new eM;A!==void 0&&t===void 0?(n.frameData=Buffer.allocUnsafe(2),n.frameData.writeUInt16BE(A,0)):A!==void 0&&t!==void 0?(n.frameData=Buffer.allocUnsafe(2+r),n.frameData.writeUInt16BE(A,0),n.frameData.write(t,2,"utf-8")):n.frameData=HU,e[pd].socket.write(n.createFrame(VU.CLOSE)),e[Po]=Oo.SENT,e[vn]=xn.CLOSING}else e[vn]=xn.CLOSING}function wd(e){this.ws[fd].write(e)||this.pause()}function md(){let{ws:e}=this,{[pd]:A}=e;A.socket.off("data",wd),A.socket.off("close",md),A.socket.off("error",yd);let t=e[Po]===Oo.SENT&&e[dd],r=1005,n="",s=e[fd].closingInfo;s&&!s.error?(r=s.code??1005,n=s.reason):e[dd]||(r=1006),e[vn]=xn.CLOSED,qU("close",e,(o,i)=>new KU(o,i),{wasClean:t,code:r,reason:n}),Mr.close.hasSubscribers&&Mr.close.publish({websocket:e,code:r,reason:n})}function yd(e){let{ws:A}=this;A[vn]=xn.CLOSING,Mr.socketError.hasSubscribers&&Mr.socketError.publish(e),this.destroy()}bd.exports={establishWebSocketConnection:AM,closeWebSocketConnection:tM}});var kd=f((o1,Dd)=>{"use strict";var{createInflateRaw:rM,Z_DEFAULT_WINDOWBITS:nM}=d("node:zlib"),{isValidClientWindowBits:sM}=Ln(),{MessageSizeExceededError:oM}=q(),iM=Buffer.from([0,0,255,255]),Wo=Symbol("kBuffer"),Yn=Symbol("kLength"),_u=class{#e;#A={};#t=0;constructor(A,t){this.#A.serverNoContextTakeover=A.has("server_no_context_takeover"),this.#A.serverMaxWindowBits=A.get("server_max_window_bits"),this.#t=t.maxPayloadSize}decompress(A,t,r){if(!this.#e){let n=nM;if(this.#A.serverMaxWindowBits){if(!sM(this.#A.serverMaxWindowBits)){r(new Error("Invalid server_max_window_bits"));return}n=Number.parseInt(this.#A.serverMaxWindowBits)}try{this.#e=rM({windowBits:n})}catch(s){r(s);return}this.#e[Wo]=[],this.#e[Yn]=0,this.#e.on("data",s=>{if(this.#e[Yn]+=s.length,this.#t>0&&this.#e[Yn]>this.#t){r(new oM),this.#e.removeAllListeners(),this.#e=null;return}this.#e[Wo].push(s)}),this.#e.on("error",s=>{this.#e=null,r(s)})}this.#e.write(A),t&&this.#e.write(iM),this.#e.flush(()=>{if(!this.#e)return;let n=Buffer.concat(this.#e[Wo],this.#e[Yn]);this.#e[Wo].length=0,this.#e[Yn]=0,r(null,n)})}};Dd.exports={PerMessageDeflate:_u}});var vd=f((i1,xd)=>{"use strict";var{Writable:aM}=d("node:stream"),cM=d("node:assert"),{parserStates:Fe,opcodes:Lr,states:uM,emptyBuffer:Rd,sentCloseFrameState:Sd}=Tt(),{kReadyState:lM,kSentClose:Fd,kResponse:Nd,kReceivedClose:Ud}=Nn(),{channels:_o}=qt(),{isValidStatusCode:gM,isValidOpcode:EM,failWebsocketConnection:He,websocketMessageReceived:Md,utf8Decode:QM,isControlFrame:Ku,isTextBinaryFrame:Zu,isContinuationFrame:BM}=Ln(),{WebsocketFrameSend:Ld}=qo(),{closeWebSocketConnection:Td}=Wu(),{PerMessageDeflate:IM}=kd(),{MessageSizeExceededError:zu}=q();function Gn(e,A,t){Td(e,A,t,Buffer.byteLength(t)),He(e,t)}var Xu=class extends aM{#e=[];#A=0;#t=0;#s=!1;#n=Fe.INFO;#r={};#o=[];#i;#c;#a;constructor(A,t,r={}){super(),this.ws=A,this.#i=t??new Map,this.#c=r.maxFragments??0,this.#a=r.maxPayloadSize??0,this.#i.has("permessage-deflate")&&this.#i.set("permessage-deflate",new IM(t,r))}_write(A,t,r){this.#e.push(A),this.#t+=A.length,this.#s=!0,this.run(r)}#u(){return this.#a>0&&!Ku(this.#r.opcode)&&this.#r.payloadLength+this.#A>this.#a?(Gn(this.ws,1009,"Payload size exceeds maximum allowed size"),!1):!0}run(A){for(;this.#s;)if(this.#n===Fe.INFO){if(this.#t<2)return A();let t=this.consume(2),r=(t[0]&128)!==0,n=t[0]&15,s=(t[1]&128)===128,o=!r&&n!==Lr.CONTINUATION,i=t[1]&127,a=t[0]&64,c=t[0]&32,g=t[0]&16;if(!EM(n))return He(this.ws,"Invalid opcode received"),A();if(s)return He(this.ws,"Frame cannot be masked"),A();if(a!==0&&!this.#i.has("permessage-deflate")){He(this.ws,"Expected RSV1 to be clear.");return}if(c!==0||g!==0){He(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(o&&!Zu(n)){He(this.ws,"Invalid frame type was fragmented.");return}if(Zu(n)&&this.#o.length>0){He(this.ws,"Expected continuation frame");return}if(this.#r.fragmented&&o){He(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((i>125||o)&&Ku(n)){He(this.ws,"Control frame either too large or fragmented");return}if(BM(n)&&this.#o.length===0&&!this.#r.compressed){He(this.ws,"Unexpected continuation frame");return}if(i<=125){if(this.#r.payloadLength=i,this.#n=Fe.READ_DATA,!this.#u())return}else i===126?this.#n=Fe.PAYLOADLENGTH_16:i===127&&(this.#n=Fe.PAYLOADLENGTH_64);Zu(n)&&(this.#r.binaryType=n,this.#r.compressed=a!==0),this.#r.opcode=n,this.#r.masked=s,this.#r.fin=r,this.#r.fragmented=o}else if(this.#n===Fe.PAYLOADLENGTH_16){if(this.#t<2)return A();let t=this.consume(2);if(this.#r.payloadLength=t.readUInt16BE(0),this.#n=Fe.READ_DATA,!this.#u())return}else if(this.#n===Fe.PAYLOADLENGTH_64){if(this.#t<8)return A();let t=this.consume(8),r=t.readUInt32BE(0),n=t.readUInt32BE(4);if(r!==0||n>2**31-1){He(this.ws,"Received payload length > 2^31 bytes.");return}if(this.#r.payloadLength=n,this.#n=Fe.READ_DATA,!this.#u())return}else if(this.#n===Fe.READ_DATA){if(this.#t<this.#r.payloadLength)return A();let t=this.consume(this.#r.payloadLength);if(Ku(this.#r.opcode))this.#s=this.parseControlFrame(t),this.#n=Fe.INFO;else if(this.#r.compressed){this.#i.get("permessage-deflate").decompress(t,this.#r.fin,(r,n)=>{if(r){let s=r instanceof zu?1009:1007;Gn(this.ws,s,r.message);return}if(this.writeFragments(n)){if(this.#a>0&&this.#A>this.#a){Gn(this.ws,1009,new zu().message);return}if(!this.#r.fin){this.#n=Fe.INFO,this.#s=!0,this.run(A);return}Md(this.ws,this.#r.binaryType,this.consumeFragments()),this.#s=!0,this.#n=Fe.INFO,this.run(A)}}),this.#s=!1;break}else{if(!this.writeFragments(t))return;if(this.#a>0&&this.#A>this.#a){Gn(this.ws,1009,new zu().message);return}!this.#r.fragmented&&this.#r.fin&&Md(this.ws,this.#r.binaryType,this.consumeFragments()),this.#n=Fe.INFO}}}consume(A){if(A>this.#t)throw new Error("Called consume() before buffers satiated.");if(A===0)return Rd;if(this.#e[0].length===A)return this.#t-=this.#e[0].length,this.#e.shift();let t=Buffer.allocUnsafe(A),r=0;for(;r!==A;){let n=this.#e[0],{length:s}=n;if(s+r===A){t.set(this.#e.shift(),r);break}else if(s+r>A){t.set(n.subarray(0,A-r),r),this.#e[0]=n.subarray(A-r);break}else t.set(this.#e.shift(),r),r+=n.length}return this.#t-=A,t}writeFragments(A){return this.#c>0&&this.#o.length===this.#c?(Gn(this.ws,1008,"Too many message fragments"),!1):(this.#A+=A.length,this.#o.push(A),!0)}consumeFragments(){let A=this.#o;if(A.length===1)return this.#A=0,A.shift();let t=Buffer.concat(A,this.#A);return this.#o=[],this.#A=0,t}parseCloseBody(A){cM(A.length!==1);let t;if(A.length>=2&&(t=A.readUInt16BE(0)),t!==void 0&&!gM(t))return{code:1002,reason:"Invalid status code",error:!0};let r=A.subarray(2);r[0]===239&&r[1]===187&&r[2]===191&&(r=r.subarray(3));try{r=QM(r)}catch{return{code:1007,reason:"Invalid UTF-8",error:!0}}return{code:t,reason:r,error:!1}}parseControlFrame(A){let{opcode:t,payloadLength:r}=this.#r;if(t===Lr.CLOSE){if(r===1)return He(this.ws,"Received close frame with a 1-byte body."),!1;if(this.#r.closeInfo=this.parseCloseBody(A),this.#r.closeInfo.error){let{code:n,reason:s}=this.#r.closeInfo;return Td(this.ws,n,s,s.length),He(this.ws,s),!1}if(this.ws[Fd]!==Sd.SENT){let n=Rd;this.#r.closeInfo.code&&(n=Buffer.allocUnsafe(2),n.writeUInt16BE(this.#r.closeInfo.code,0));let s=new Ld(n);this.ws[Nd].socket.write(s.createFrame(Lr.CLOSE),o=>{o||(this.ws[Fd]=Sd.SENT)})}return this.ws[lM]=uM.CLOSING,this.ws[Ud]=!0,!1}else if(t===Lr.PING){if(!this.ws[Ud]){let n=new Ld(A);this.ws[Nd].socket.write(n.createFrame(Lr.PONG)),_o.ping.hasSubscribers&&_o.ping.publish({payload:A})}}else t===Lr.PONG&&_o.pong.hasSubscribers&&_o.pong.publish({payload:A});return!0}get closingInfo(){return this.#r.closeInfo}};xd.exports={ByteParser:Xu}});var Vd=f((a1,Hd)=>{"use strict";var{WebsocketFrameSend:hM}=qo(),{opcodes:Yd,sendHints:Tr}=Tt(),CM=rc(),Gd=Buffer[Symbol.species],$u=class{#e=new CM;#A=!1;#t;constructor(A){this.#t=A}add(A,t,r){if(r!==Tr.blob){let s=Jd(A,r);if(!this.#A)this.#t.write(s,t);else{let o={promise:null,callback:t,frame:s};this.#e.push(o)}return}let n={promise:A.arrayBuffer().then(s=>{n.promise=null,n.frame=Jd(s,r)}),callback:t,frame:null};this.#e.push(n),this.#A||this.#s()}async#s(){this.#A=!0;let A=this.#e;for(;!A.isEmpty();){let t=A.shift();t.promise!==null&&await t.promise,this.#t.write(t.frame,t.callback),t.callback=t.frame=null}this.#A=!1}};function Jd(e,A){return new hM(dM(e,A)).createFrame(A===Tr.string?Yd.TEXT:Yd.BINARY)}function dM(e,A){switch(A){case Tr.string:return Buffer.from(e);case Tr.arrayBuffer:case Tr.blob:return new Gd(e);case Tr.typedArray:return new Gd(e.buffer,e.byteOffset,e.byteLength)}}Hd.exports={SendQueue:$u}});var $d=f((c1,Xd)=>{"use strict";var{webidl:L}=he(),{URLSerializer:fM}=be(),{environmentSettingsObject:qd}=Me(),{staticPropertyDescriptors:nt,states:Jn,sentCloseFrameState:pM,sendHints:Ko}=Tt(),{kWebSocketURL:Od,kReadyState:ju,kController:Pd,kBinaryType:Zo,kResponse:Wd,kSentClose:wM,kByteParser:mM}=Nn(),{isConnecting:yM,isEstablished:bM,isClosing:DM,isValidSubprotocol:kM,fireEvent:_d}=Ln(),{establishWebSocketConnection:RM,closeWebSocketConnection:Kd}=Wu(),{ByteParser:SM}=vd(),{kEnumerableProperty:Ze,isBlobLike:Zd}=Y(),{getGlobalDispatcher:FM}=co(),{types:zd}=d("node:util"),{ErrorEvent:NM,CloseEvent:UM}=Nr(),{SendQueue:MM}=Vd(),Ve=class e extends EventTarget{#e={open:null,error:null,close:null,message:null};#A=0;#t="";#s="";#n;constructor(A,t=[]){super(),L.util.markAsUncloneable(this);let r="WebSocket constructor";L.argumentLengthCheck(arguments,1,r);let n=L.converters["DOMString or sequence<DOMString> or WebSocketInit"](t,r,"options");A=L.converters.USVString(A,r,"url"),t=n.protocols;let s=qd.settingsObject.baseUrl,o;try{o=new URL(A,s)}catch(a){throw new DOMException(a,"SyntaxError")}if(o.protocol==="http:"?o.protocol="ws:":o.protocol==="https:"&&(o.protocol="wss:"),o.protocol!=="ws:"&&o.protocol!=="wss:")throw new DOMException(`Expected a ws: or wss: protocol, got ${o.protocol}`,"SyntaxError");if(o.hash||o.href.endsWith("#"))throw new DOMException("Got fragment","SyntaxError");if(typeof t=="string"&&(t=[t]),t.length!==new Set(t.map(a=>a.toLowerCase())).size)throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");if(t.length>0&&!t.every(a=>kM(a)))throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError");this[Od]=new URL(o.href);let i=qd.settingsObject;this[Pd]=RM(o,t,i,this,(a,c)=>this.#r(a,c),n),this[ju]=e.CONNECTING,this[wM]=pM.NOT_SENT,this[Zo]="blob"}close(A=void 0,t=void 0){L.brandCheck(this,e);let r="WebSocket.close";if(A!==void 0&&(A=L.converters["unsigned short"](A,r,"code",{clamp:!0})),t!==void 0&&(t=L.converters.USVString(t,r,"reason")),A!==void 0&&A!==1e3&&(A<3e3||A>4999))throw new DOMException("invalid code","InvalidAccessError");let n=0;if(t!==void 0&&(n=Buffer.byteLength(t),n>123))throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError");Kd(this,A,t,n)}send(A){L.brandCheck(this,e);let t="WebSocket.send";if(L.argumentLengthCheck(arguments,1,t),A=L.converters.WebSocketSendData(A,t,"data"),yM(this))throw new DOMException("Sent before connected.","InvalidStateError");if(!(!bM(this)||DM(this)))if(typeof A=="string"){let r=Buffer.byteLength(A);this.#A+=r,this.#n.add(A,()=>{this.#A-=r},Ko.string)}else zd.isArrayBuffer(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},Ko.arrayBuffer)):ArrayBuffer.isView(A)?(this.#A+=A.byteLength,this.#n.add(A,()=>{this.#A-=A.byteLength},Ko.typedArray)):Zd(A)&&(this.#A+=A.size,this.#n.add(A,()=>{this.#A-=A.size},Ko.blob))}get readyState(){return L.brandCheck(this,e),this[ju]}get bufferedAmount(){return L.brandCheck(this,e),this.#A}get url(){return L.brandCheck(this,e),fM(this[Od])}get extensions(){return L.brandCheck(this,e),this.#s}get protocol(){return L.brandCheck(this,e),this.#t}get onopen(){return L.brandCheck(this,e),this.#e.open}set onopen(A){L.brandCheck(this,e),this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onerror(){return L.brandCheck(this,e),this.#e.error}set onerror(A){L.brandCheck(this,e),this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}get onclose(){return L.brandCheck(this,e),this.#e.close}set onclose(A){L.brandCheck(this,e),this.#e.close&&this.removeEventListener("close",this.#e.close),typeof A=="function"?(this.#e.close=A,this.addEventListener("close",A)):this.#e.close=null}get onmessage(){return L.brandCheck(this,e),this.#e.message}set onmessage(A){L.brandCheck(this,e),this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get binaryType(){return L.brandCheck(this,e),this[Zo]}set binaryType(A){L.brandCheck(this,e),A!=="blob"&&A!=="arraybuffer"?this[Zo]="blob":this[Zo]=A}#r(A,t){this[Wd]=A;let r=this[Pd]?.dispatcher?.webSocketOptions,n=r?.maxFragments,s=r?.maxPayloadSize,o=new SM(this,t,{maxFragments:n,maxPayloadSize:s});o.on("drain",LM),o.on("error",TM.bind(this)),A.socket.ws=this,this[mM]=o,this.#n=new MM(A.socket),this[ju]=Jn.OPEN;let i=A.headersList.get("sec-websocket-extensions");i!==null&&(this.#s=i);let a=A.headersList.get("sec-websocket-protocol");a!==null&&(this.#t=a),_d("open",this)}};Ve.CONNECTING=Ve.prototype.CONNECTING=Jn.CONNECTING;Ve.OPEN=Ve.prototype.OPEN=Jn.OPEN;Ve.CLOSING=Ve.prototype.CLOSING=Jn.CLOSING;Ve.CLOSED=Ve.prototype.CLOSED=Jn.CLOSED;Object.defineProperties(Ve.prototype,{CONNECTING:nt,OPEN:nt,CLOSING:nt,CLOSED:nt,url:Ze,readyState:Ze,bufferedAmount:Ze,onopen:Ze,onerror:Ze,onclose:Ze,close:Ze,onmessage:Ze,binaryType:Ze,send:Ze,extensions:Ze,protocol:Ze,[Symbol.toStringTag]:{value:"WebSocket",writable:!1,enumerable:!1,configurable:!0}});Object.defineProperties(Ve,{CONNECTING:nt,OPEN:nt,CLOSING:nt,CLOSED:nt});L.converters["sequence<DOMString>"]=L.sequenceConverter(L.converters.DOMString);L.converters["DOMString or sequence<DOMString>"]=function(e,A,t){return L.util.Type(e)==="Object"&&Symbol.iterator in e?L.converters["sequence<DOMString>"](e):L.converters.DOMString(e,A,t)};L.converters.WebSocketInit=L.dictionaryConverter([{key:"protocols",converter:L.converters["DOMString or sequence<DOMString>"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:L.converters.any,defaultValue:()=>FM()},{key:"headers",converter:L.nullableConverter(L.converters.HeadersInit)}]);L.converters["DOMString or sequence<DOMString> or WebSocketInit"]=function(e){return L.util.Type(e)==="Object"&&!(Symbol.iterator in e)?L.converters.WebSocketInit(e):{protocols:L.converters["DOMString or sequence<DOMString>"](e)}};L.converters.WebSocketSendData=function(e){if(L.util.Type(e)==="Object"){if(Zd(e))return L.converters.Blob(e,{strict:!1});if(ArrayBuffer.isView(e)||zd.isArrayBuffer(e))return L.converters.BufferSource(e)}return L.converters.USVString(e)};function LM(){this.ws[Wd].socket.resume()}function TM(e){let A,t;e instanceof UM?(A=e.reason,t=e.code):A=e.message,_d("error",this,()=>new NM("error",{error:e,message:A})),Kd(this,t)}Xd.exports={WebSocket:Ve}});var el=f((u1,jd)=>{"use strict";function xM(e){return e.indexOf("\0")===-1}function vM(e){if(e.length===0)return!1;for(let A=0;A<e.length;A++)if(e.charCodeAt(A)<48||e.charCodeAt(A)>57)return!1;return!0}function YM(e){return new Promise(A=>{setTimeout(A,e).unref()})}jd.exports={isValidLastEventId:xM,isASCIINumber:vM,delay:YM}});var rf=f((l1,tf)=>{"use strict";var{Transform:GM}=d("node:stream"),{isASCIINumber:ef,isValidLastEventId:Af}=el(),vA=[239,187,191],Al=10,zo=13,JM=58,HM=32,tl=class extends GM{state=null;checkBOM=!0;crlfCheck=!1;eventEndCheck=!1;buffer=null;pos=0;event={data:void 0,event:void 0,id:void 0,retry:void 0};constructor(A={}){A.readableObjectMode=!0,super(A),this.state=A.eventSourceSettings||{},A.push&&(this.push=A.push)}_transform(A,t,r){if(A.length===0){r();return}if(this.buffer?this.buffer=Buffer.concat([this.buffer,A]):this.buffer=A,this.checkBOM)switch(this.buffer.length){case 1:if(this.buffer[0]===vA[0]){r();return}this.checkBOM=!1,r();return;case 2:if(this.buffer[0]===vA[0]&&this.buffer[1]===vA[1]){r();return}this.checkBOM=!1;break;case 3:if(this.buffer[0]===vA[0]&&this.buffer[1]===vA[1]&&this.buffer[2]===vA[2]){this.buffer=Buffer.alloc(0),this.checkBOM=!1,r();return}this.checkBOM=!1;break;default:this.buffer[0]===vA[0]&&this.buffer[1]===vA[1]&&this.buffer[2]===vA[2]&&(this.buffer=this.buffer.subarray(3)),this.checkBOM=!1;break}for(;this.pos<this.buffer.length;){if(this.eventEndCheck){if(this.crlfCheck){if(this.buffer[this.pos]===Al){this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.crlfCheck=!1;continue}this.crlfCheck=!1}if(this.buffer[this.pos]===Al||this.buffer[this.pos]===zo){this.buffer[this.pos]===zo&&(this.crlfCheck=!0),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,(this.event.data!==void 0||this.event.event||this.event.id||this.event.retry)&&this.processEvent(this.event),this.clearEvent();continue}this.eventEndCheck=!1;continue}if(this.buffer[this.pos]===Al||this.buffer[this.pos]===zo){this.buffer[this.pos]===zo&&(this.crlfCheck=!0),this.parseLine(this.buffer.subarray(0,this.pos),this.event),this.buffer=this.buffer.subarray(this.pos+1),this.pos=0,this.eventEndCheck=!0;continue}this.pos++}r()}parseLine(A,t){if(A.length===0)return;let r=A.indexOf(JM);if(r===0)return;let n="",s="";if(r!==-1){n=A.subarray(0,r).toString("utf8");let o=r+1;A[o]===HM&&++o,s=A.subarray(o).toString("utf8")}else n=A.toString("utf8"),s="";switch(n){case"data":t[n]===void 0?t[n]=s:t[n]+=`
|
|
46
|
-
${s}`;break;case"retry":ef(s)&&(t[n]=s);break;case"id":Af(s)&&(t[n]=s);break;case"event":s.length>0&&(t[n]=s);break}}processEvent(A){A.retry&&ef(A.retry)&&(this.state.reconnectionTime=parseInt(A.retry,10)),A.id&&Af(A.id)&&(this.state.lastEventId=A.id),A.data!==void 0&&this.push({type:A.event||"message",options:{data:A.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}clearEvent(){this.event={data:void 0,event:void 0,id:void 0,retry:void 0}}};tf.exports={EventSourceStream:tl}});var gf=f((g1,lf)=>{"use strict";var{pipeline:VM}=d("node:stream"),{fetching:qM}=kn(),{makeRequest:OM}=br(),{webidl:YA}=he(),{EventSourceStream:PM}=rf(),{parseMIMEType:WM}=be(),{createFastMessageEvent:_M}=Nr(),{isNetworkError:nf}=bn(),{delay:KM}=el(),{kEnumerableProperty:xt}=Y(),{environmentSettingsObject:sf}=Me(),of=!1,af=3e3,Hn=0,cf=1,Vn=2,ZM="anonymous",zM="use-credentials",xr=class e extends EventTarget{#e={open:null,error:null,message:null};#A=null;#t=!1;#s=Hn;#n=null;#r=null;#o;#i;constructor(A,t={}){super(),YA.util.markAsUncloneable(this);let r="EventSource constructor";YA.argumentLengthCheck(arguments,1,r),of||(of=!0,process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})),A=YA.converters.USVString(A,r,"url"),t=YA.converters.EventSourceInitDict(t,r,"eventSourceInitDict"),this.#o=t.dispatcher,this.#i={lastEventId:"",reconnectionTime:af};let n=sf,s;try{s=new URL(A,n.settingsObject.baseUrl),this.#i.origin=s.origin}catch(a){throw new DOMException(a,"SyntaxError")}this.#A=s.href;let o=ZM;t.withCredentials&&(o=zM,this.#t=!0);let i={redirect:"follow",keepalive:!0,mode:"cors",credentials:o==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};i.client=sf.settingsObject,i.headersList=[["accept",{name:"accept",value:"text/event-stream"}]],i.cache="no-store",i.initiator="other",i.urlList=[new URL(this.#A)],this.#n=OM(i),this.#c()}get readyState(){return this.#s}get url(){return this.#A}get withCredentials(){return this.#t}#c(){if(this.#s===Vn)return;this.#s=Hn;let A={request:this.#n,dispatcher:this.#o},t=r=>{nf(r)&&(this.dispatchEvent(new Event("error")),this.close()),this.#a()};A.processResponseEndOfBody=t,A.processResponse=r=>{if(nf(r))if(r.aborted){this.close(),this.dispatchEvent(new Event("error"));return}else{this.#a();return}let n=r.headersList.get("content-type",!0),s=n!==null?WM(n):"failure",o=s!=="failure"&&s.essence==="text/event-stream";if(r.status!==200||o===!1){this.close(),this.dispatchEvent(new Event("error"));return}this.#s=cf,this.dispatchEvent(new Event("open")),this.#i.origin=r.urlList[r.urlList.length-1].origin;let i=new PM({eventSourceSettings:this.#i,push:a=>{this.dispatchEvent(_M(a.type,a.options))}});VM(r.body.stream,i,a=>{a?.aborted===!1&&(this.close(),this.dispatchEvent(new Event("error")))})},this.#r=qM(A)}async#a(){this.#s!==Vn&&(this.#s=Hn,this.dispatchEvent(new Event("error")),await KM(this.#i.reconnectionTime),this.#s===Hn&&(this.#i.lastEventId.length&&this.#n.headersList.set("last-event-id",this.#i.lastEventId,!0),this.#c()))}close(){YA.brandCheck(this,e),this.#s!==Vn&&(this.#s=Vn,this.#r.abort(),this.#n=null)}get onopen(){return this.#e.open}set onopen(A){this.#e.open&&this.removeEventListener("open",this.#e.open),typeof A=="function"?(this.#e.open=A,this.addEventListener("open",A)):this.#e.open=null}get onmessage(){return this.#e.message}set onmessage(A){this.#e.message&&this.removeEventListener("message",this.#e.message),typeof A=="function"?(this.#e.message=A,this.addEventListener("message",A)):this.#e.message=null}get onerror(){return this.#e.error}set onerror(A){this.#e.error&&this.removeEventListener("error",this.#e.error),typeof A=="function"?(this.#e.error=A,this.addEventListener("error",A)):this.#e.error=null}},uf={CONNECTING:{__proto__:null,configurable:!1,enumerable:!0,value:Hn,writable:!1},OPEN:{__proto__:null,configurable:!1,enumerable:!0,value:cf,writable:!1},CLOSED:{__proto__:null,configurable:!1,enumerable:!0,value:Vn,writable:!1}};Object.defineProperties(xr,uf);Object.defineProperties(xr.prototype,uf);Object.defineProperties(xr.prototype,{close:xt,onerror:xt,onmessage:xt,onopen:xt,readyState:xt,url:xt,withCredentials:xt});YA.converters.EventSourceInitDict=YA.dictionaryConverter([{key:"withCredentials",converter:YA.converters.boolean,defaultValue:()=>!1},{key:"dispatcher",converter:YA.converters.any}]);lf.exports={EventSource:xr,defaultReconnectionTime:af}});var If=f((E1,M)=>{"use strict";var XM=cr(),Ef=Pr(),$M=ur(),jM=cB(),eL=lr(),AL=mc(),tL=MB(),rL=JB(),Qf=q(),$o=Y(),{InvalidArgumentError:Xo}=Qf,vr=DI(),nL=_r(),sL=nu(),oL=ah(),iL=iu(),aL=Pc(),cL=js(),{getGlobalDispatcher:Bf,setGlobalDispatcher:uL}=co(),lL=uo(),gL=Vs(),EL=qs();Object.assign(Ef.prototype,vr);M.exports.Dispatcher=Ef;M.exports.Client=XM;M.exports.Pool=$M;M.exports.BalancedPool=jM;M.exports.Agent=eL;M.exports.ProxyAgent=AL;M.exports.EnvHttpProxyAgent=tL;M.exports.RetryAgent=rL;M.exports.RetryHandler=cL;M.exports.DecoratorHandler=lL;M.exports.RedirectHandler=gL;M.exports.createRedirectInterceptor=EL;M.exports.interceptors={redirect:Bh(),retry:hh(),dump:dh(),dns:wh()};M.exports.buildConnector=nL;M.exports.errors=Qf;M.exports.util={parseHeaders:$o.parseHeaders,headerNameToString:$o.headerNameToString};function qn(e){return(A,t,r)=>{if(typeof t=="function"&&(r=t,t=null),!A||typeof A!="string"&&typeof A!="object"&&!(A instanceof URL))throw new Xo("invalid url");if(t!=null&&typeof t!="object")throw new Xo("invalid opts");if(t&&t.path!=null){if(typeof t.path!="string")throw new Xo("invalid opts.path");let o=t.path;t.path.startsWith("/")||(o=`/${o}`),A=new URL($o.parseOrigin(A).origin+o)}else t||(t=typeof A=="object"?A:{}),A=$o.parseURL(A);let{agent:n,dispatcher:s=Bf()}=t;if(n)throw new Xo("unsupported opts.agent. Did you mean opts.client?");return e.call(s,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}M.exports.setGlobalDispatcher=uL;M.exports.getGlobalDispatcher=Bf;var QL=kn().fetch;M.exports.fetch=async function(A,t=void 0){try{return await QL(A,t)}catch(r){throw r&&typeof r=="object"&&Error.captureStackTrace(r),r}};M.exports.Headers=St().Headers;M.exports.Response=bn().Response;M.exports.Request=br().Request;M.exports.FormData=en().FormData;M.exports.File=globalThis.File??d("node:buffer").File;M.exports.FileReader=YC().FileReader;var{setGlobalOrigin:BL,getGlobalOrigin:IL}=ya();M.exports.setGlobalOrigin=BL;M.exports.getGlobalOrigin=IL;var{CacheStorage:hL}=_C(),{kConstruct:CL}=Uo();M.exports.caches=new hL(CL);var{deleteCookie:dL,getCookies:fL,getSetCookies:pL,setCookie:wL}=nd();M.exports.deleteCookie=dL;M.exports.getCookies=fL;M.exports.getSetCookies=pL;M.exports.setCookie=wL;var{parseMIMEType:mL,serializeAMimeType:yL}=be();M.exports.parseMIMEType=mL;M.exports.serializeAMimeType=yL;var{CloseEvent:bL,ErrorEvent:DL,MessageEvent:kL}=Nr();M.exports.WebSocket=$d().WebSocket;M.exports.CloseEvent=bL;M.exports.ErrorEvent=DL;M.exports.MessageEvent=kL;M.exports.request=qn(vr.request);M.exports.stream=qn(vr.stream);M.exports.pipeline=qn(vr.pipeline);M.exports.connect=qn(vr.connect);M.exports.upgrade=qn(vr.upgrade);M.exports.MockClient=sL;M.exports.MockPool=iL;M.exports.MockAgent=oL;M.exports.mockErrors=aL;var{EventSource:RL}=gf();M.exports.EventSource=RL});import Yr from"node:net";import SL from"node:dns";function jo(e){let A=String(e).toLowerCase().split("%")[0];if((A.match(/::/g)||[]).length>1)return null;let t=g=>{if(!g)return[];let u=g.split(":"),l=u.at(-1);if(l?.includes(".")){let E=l.split(".").map(Number);if(E.length!==4||E.some(Q=>!Number.isInteger(Q)||Q<0||Q>255))return null;u.splice(u.length-1,1,(E[0]<<8|E[1]).toString(16),(E[2]<<8|E[3]).toString(16))}return u.some(E=>!/^[0-9a-f]{1,4}$/.test(E))?null:u.map(E=>Number.parseInt(E,16))},[r,n]=A.split("::"),s=t(r),o=t(n);if(!s||!o)return null;let i=A.includes("::"),a=8-s.length-o.length;if(!i&&a!==0||i&&a<1)return null;let c=[...s,...Array(Math.max(0,a)).fill(0),...o];return c.length!==8?null:Uint8Array.from(c.flatMap(g=>[g>>8,g&255]))}function rl(e,A,t){let r=Math.floor(t/8),n=t%8;for(let o=0;o<r;o+=1)if(e[o]!==A[o])return!1;if(!n)return!0;let s=255<<8-n;return(e[r]&s)===(A[r]&s)}function nl(e){if(Yr.isIPv4(e)){let A=e.split(".").map(Number);return!(A[0]===0||A[0]===10||A[0]===127||A[0]>=224||A[0]===100&&A[1]>=64&&A[1]<=127||A[0]===169&&A[1]===254||A[0]===172&&A[1]>=16&&A[1]<=31||A[0]===192&&(A[1]===0||A[1]===2||A[1]===168)||A[0]===192&&A[1]===88&&A[2]===99||A[0]===198&&(A[1]===18||A[1]===19||A[1]===51)||A[0]===203&&A[1]===0&&A[2]===113)}if(Yr.isIPv6(e)){let A=jo(e);if(!A)return!1;let t=jo("::ffff:0:0");return rl(A,t,96)?nl([...A.slice(12)].join(".")):rl(A,jo("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([n,s])=>rl(A,jo(n),s)):!1}return!1}function NL(e){let A;try{A=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(A.protocol!=="http:"&&A.protocol!=="https:")return{ok:!1,error:`refused protocol ${A.protocol} (only http/https)`};let t=A.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(FL.has(t)||t.endsWith(".localhost")||t.endsWith(".internal"))return{ok:!1,error:`refused internal host ${t}`};let r=Yr.isIP(t);return r!==0&&!nl(t)?{ok:!1,error:`refused private address ${t}`}:{ok:!0,url:A,host:t,isLiteralIp:r!==0}}async function hf(e,{lookupFn:A=SL.promises.lookup}={}){let t=NL(e);if(!t.ok)return t;if(t.isLiteralIp)return{ok:!0,url:t.url};let r;try{r=await A(t.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${t.host} did not resolve`}}return!Array.isArray(r)||r.length===0||r.some(n=>!nl(n.address))?{ok:!1,error:`refused: ${t.host} resolves to a non-public address`}:{ok:!0,url:t.url,addresses:r}}async function Cf(){let e,A;try{let i=await Promise.resolve().then(()=>dp(If(),1));e=i.Agent,A=i.fetch}catch{return null}if(typeof e!="function"||typeof A!="function")return null;let t=i=>String(i).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),r=new Map,n=i=>(Array.isArray(i)?i:[i]).map(a=>typeof a=="string"?{address:a}:a).filter(a=>a&&a.address).map(a=>({address:a.address,family:a.family||(Yr.isIPv6(a.address)?6:4)})),s=i=>{let a=t(i);if(Yr.isIP(a))return[{address:a,family:Yr.isIPv6(a)?6:4}];let c=r.get(a);if(!c||!c.length)throw new Error(`refused: unpinned host ${i} during pinned fetch`);return c},o=new e({connect:{lookup(i,a,c){let g;try{g=s(i)}catch(u){return c(u)}return a?.all?c(null,g):c(null,g[0].address,g[0].family)}}});return{dispatcher:o,fetch:(i,a={})=>A(i,{...a,dispatcher:o}),pin(i,a,c){r.set(t(i),n(typeof a=="string"?[{address:a,family:c}]:a))},resolve:s,async close(){try{await o.destroy()}catch{}}}}var FL,df=se(()=>{FL=new Set(["localhost","metadata.google.internal","metadata.goog"])});import{createHash as UL}from"node:crypto";function xL(e){let A=String(e||"").toLowerCase();return mf.includes(A)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(A)}function vL(e){let A={};for(let[t,r]of Object.entries(e||{}))xL(t)||(A[t]=r);return A}function YL(e,A){if(!e)throw new Error(`HTTP redirect from ${A} missing Location`);let t=new URL(String(e),String(A));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error(`HTTP redirect from ${A} used unsupported protocol ${t.protocol}`);return t.toString()}function GL(e,A){return new URL(String(e)).origin===new URL(String(A)).origin}function JL(e,A,t){let r={};for(let[a,c]of Object.entries(t||{}))r[a.toLowerCase()]=c;let n=Object.keys(r).filter(a=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(a)),o=[...new Set([...mf,...n])].sort().map(a=>`${a}=${r[a]??""}`).join(`
|
|
47
|
-
`),i=UL("sha256").update(o).digest("hex").slice(0,32);return`${e} ${A} ${i}`}function HL(e,A){let t=Number(A);return Number.isFinite(t)&&t>0?Math.min(t*1e3,pf):Math.min(250*2**e,pf)+Math.floor(Math.random()*100)}async function qL(e,{fetchImpl:A,method:t,headers:r,body:n,timeoutMs:s,lookupFn:o,realFetch:i}){let a=new AbortController,c=setTimeout(()=>a.abort(),s),g=null,u=A;try{let l=String(e),E={...r||{}};for(let Q=0;Q<=wf;Q+=1){let h=await u(l,{method:t,headers:E,body:n,signal:a.signal,redirect:"manual"}),B=await h.text(),I=null;if(B)try{I=JSON.parse(B)}catch{I=null}if(TL.has(h.status)){if(t!=="GET"&&t!=="HEAD"){let w=new Error(`HTTP ${h.status} ${t} ${l} redirected non-idempotent request`);throw w.status=h.status,w.body=I??B.slice(0,300),w}if(Q===wf)throw new Error(`HTTP redirect loop for ${e}`);let C=YL(h.headers?.get?.("location"),l);if(!GL(C,l)){let w=await hf(C,o?{lookupFn:o}:{});if(!w.ok){let R=new Error(`HTTP redirect from ${l} ${w.error}`);throw R.status=h.status,R}E=vL(E),i&&w.addresses?.length&&(g||(g=await Cf()),g&&(g.pin(new URL(C).hostname,w.addresses[0].address,w.addresses[0].family),u=g.fetch))}l=C;continue}if(!h.ok){let C=new Error(`HTTP ${h.status} ${t} ${l}`);throw C.status=h.status,C.retryAfter=h.headers?.get?.("retry-after")??null,C.body=I??B.slice(0,300),C}return I??B}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(c),g&&await g.close()}}async function Z(e,A={}){let t=A.fetchImpl||globalThis.fetch;if(typeof t!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let r=A.timeoutMs??12e3,n=(A.method||"GET").toUpperCase(),s={Accept:"application/json",...A.headers||{}},o=A.body;o!=null&&typeof o!="string"&&(s["Content-Type"]=s["Content-Type"]||"application/json",o=JSON.stringify(o));let i=Number.isInteger(A.retries)?Math.max(A.retries,0):LL,a=A.lookupFn,c=!A.fetchImpl,g=async()=>{let h;for(let B=0;B<=i;B++)try{return await qL(e,{fetchImpl:t,method:n,headers:s,body:o,timeoutMs:r,lookupFn:a,realFetch:c})}catch(I){h=I;let C=I?.status,p=I?.name==="AbortError",w=new Set([408,425,429]),R=C!=null?w.has(C)||ML.has(C)&&ff.has(n):!p&&ff.has(n);if(B===i||!R)throw I;await VL(HL(B,I?.retryAfter))}throw h};if(!(A.dedupe!==!1&&n==="GET"&&o==null))return g();let l=JL(n,e,s),E=sl.get(l);if(E)return E;let Q=g().finally(()=>sl.delete(l));return sl.set(l,Q),Q}var ML,ff,LL,pf,mf,TL,wf,sl,VL,wA=se(()=>{df();ML=new Set([408,425,429,500,502,503,504]),ff=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),LL=2,pf=4e3,mf=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],TL=new Set([301,302,303,307,308]),wf=3;sl=new Map;VL=e=>new Promise(A=>setTimeout(A,e))});import{readFileSync as OL}from"node:fs";import{homedir as PL}from"node:os";import{join as ei}from"node:path";function WL(){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){let t=(process.env.ORACLE_EXEC_ENV_FILE||"").trim();return t?[t]:[]}let e=(process.env.ORACLE_EXEC_ENV_FILE||process.env.MAD_EXEC_ENV_FILE||"").trim(),A=PL();if(process.env.ORACLE_PUBLIC_DESKTOP==="1"){let t=(process.env.ORACLE_CONFIG_DIR||ei(A,".config","oracle")).trim();return[e,ei(t,"exec.env")].filter(Boolean)}return[e,ei(A,".config","oracle","exec.env"),ei(A,".config","mad-desk","exec.env")].filter(Boolean)}function yf(e,A,t){let r=e??process.env[A]??process.env[t];if(!String(r||"").trim())for(let n of WL())try{let s=OL(n,"utf8"),o=s.match(new RegExp(`^${A}=(.*)$`,"m"))||s.match(new RegExp(`^${t}=(.*)$`,"m"));if(o&&(r=o[1].trim(),r))break}catch{}if(!String(r||"").trim())throw new Error(`${A} required for attestation. Set it in the environment, or place ${A}=<value> in ~/.config/oracle/exec.env`);return r}var bf=se(()=>{});var Df=se(()=>{});import{createHash as _L,createHmac as Rf,timingSafeEqual as KL}from"node:crypto";function ti(e){return Array.isArray(e)?`[${e.map(ti).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(A=>`${JSON.stringify(A)}:${ti(e[A])}`).join(",")}}`:JSON.stringify(e??null)}function Sf(e,{required:A=!1}={}){try{return yf(e,"ORACLE_ROUTE_ATTESTATION_SECRET","MAD_ROUTE_ATTESTATION_SECRET")}catch(t){if(A)throw t;return null}}function il(e){let{signature:A,...t}=e;return t}function Ff(e,{secret:A}={}){let t=Sf(A);return t?{...e,signature:Rf("sha256",t).update(ti(il(e))).digest("hex")}:e}function ZL(e){let A=String(e||"").toLowerCase();if(!/^0x[0-9a-f]+$/.test(A)||A.length<10||A.length%2!==0)throw new Error("auto-slippage calldata must be even-length hex with a selector");return _L("sha256").update(Buffer.from(A.slice(2),"hex")).digest("hex")}function iA(e,{chainId:A,venue:t,data:r,secret:n}={}){if(!e||e.mode!=="auto")throw new Error("bounded auto-slippage guard required");if(Number(e.chainId)!==Number(A))throw new Error("auto-slippage guard chain mismatch");if(String(e.venue).toLowerCase()!==String(t||"").toLowerCase())throw new Error("auto-slippage guard venue mismatch");let s=Sf(n);if(s){let E=Rf("sha256",s).update(ti(il(e))).digest("hex");if(!zL(e.signature,E))throw new Error("auto-slippage guard signature mismatch \u2014 refusing to bind a guard this Oracle did not issue")}let o=Number(e.selectedBps),i=Number(e.capBps);if(!Number.isInteger(o)||o<0||o>Ai||!Number.isInteger(i)||i<0||i>Ai||o>i)throw new Error("auto-slippage guard bounds are invalid");let a=BigInt(e.quoteAmountOut??0),c=BigInt(e.minAmountOut??0);if(a<=0n||c<=0n)throw new Error("auto-slippage guard amounts must be positive");let g=a*BigInt(1e4-o),u=g/10000n;if(g%10000n!==0n&&(u+=1n),c<u)throw new Error("auto-slippage guard is under-protected relative to its quote");let l=jL(r);if(l!=null&&l!==c)throw new Error(`auto-slippage: calldata encodes floor ${l}, not the guard floor ${c} \u2014 refusing to bind`);return Ff({...il(e),calldataHash:ZL(r)},{secret:n})}function zL(e,A){let t=Buffer.from(String(e??""),"utf8"),r=Buffer.from(String(A??""),"utf8");return t.length!==r.length||t.length===0?!1:KL(t,r)}function ol(e,A=0){let t=Number(e);return Number.isFinite(t)?t:A}function XL(e){let A=e==null?Ai:Number(e);if(!Number.isInteger(A)||A<0)throw new Error("auto-slippage cap must be a non-negative integer bps value");return Math.min(A,Ai)}function GA({liquidityUsd:e,priceChange5m:A=0,quoteAgeMs:t=0,crossChain:r=!1,requestedCapBps:n}={}){let s=ol(e,0),o=s>0?s>=25e4?5:s>=1e5?10:s>=5e4?20:s>=1e4?40:70:r?30:10,i=Math.min(60,Math.abs(ol(A,0))*2),a=Math.min(40,Math.floor(Math.max(0,ol(t,0))/5e3)*5),c=Math.max(25,Math.ceil(20+o+i+a)),g=XL(n);return{mode:"auto",requiredBps:c,selectedBps:Math.min(c,g),capBps:g,executable:c<=g}}function $L({chainId:e,venue:A,quoteAmountOut:t,liquidityUsd:r,priceChange5m:n=0,quoteAgeMs:s=0,crossChain:o=!1,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c=kf,secret:g}={}){let u=BigInt(t??0);if(u<=0n)throw new Error("auto-slippage guard requires positive quoteAmountOut");let l=GA({liquidityUsd:r,priceChange5m:n,quoteAgeMs:s,crossChain:o,requestedCapBps:i});if(!l.executable)throw new Error(`auto-slippage requires ${l.requiredBps} bps above hard/requested cap ${l.capBps}; route blocked`);let E=Number(a);if(!Number.isFinite(E))throw new Error("auto-slippage: quotedAtMs must be a finite number");let Q=Math.min(3e4,Math.max(1e3,Number(c)||kf)),h=u*BigInt(1e4-l.selectedBps),B=h/10000n;if(h%10000n!==0n&&(B+=1n),B>u&&(B=u),u>0n&&B<=0n)throw new Error(`auto-slippage: quote ${u} is too small to express a ${l.selectedBps} bps floor without rounding to zero`);let I=Number((u-B)*10000n/(u===0n?1n:u));if(I>l.capBps)throw new Error(`auto-slippage: realised floor implies ${I} bps, above cap ${l.capBps} \u2014 refusing to issue a guard weaker than advertised`);return Ff({mode:"auto",chainId:Number(e),venue:String(A||"unknown"),quoteAmountOut:u.toString(),minAmountOut:B.toString(),requiredBps:l.requiredBps,selectedBps:l.selectedBps,capBps:l.capBps,quotedAtMs:E,expiresAtMs:E+Q},{secret:g})}function jL(e){let A=String(e||"");if(!/^0x[0-9a-fA-F]+$/.test(A)||A.length<10||A.length%2!==0)return null;let t=A.slice(0,10).toLowerCase(),r=[];for(let s=10;s+64<=A.length;s+=64)r.push(A.slice(s,s+64));let n=s=>r[s]==null?null:BigInt("0x"+r[s]);switch(t){case"0x414bf389":return n(6);case"0x04e45aaf":return n(5);case"0xc04b8d59":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+4)}case"0xb858183f":{let s=n(0);if(s==null)return null;let o=Number(s)/32;return!Number.isInteger(o)||o<0?null:n(o+3)}case"0xa026383e":return n(6);case"0x38ed1739":case"0x5c11d795":return n(1);case"0x7ff36ab5":case"0xb6f9de95":return n(0);case"0x18cbafe5":case"0x791ac947":return n(1);default:return null}}function Ie(e,{chainId:A,venue:t,amountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a=Date.now(),ttlMs:c}={}){let g=$L({chainId:A,venue:t,quoteAmountOut:r,liquidityUsd:n,priceChange5m:s,crossChain:o,requestedCapBps:i,quotedAtMs:a,ttlMs:c});return{...e,autoSlippage:g,amountOutMinimum:g.minAmountOut}}var Ai,kf,JA=se(()=>{bf();Df();Ai=100,kf=2e4});function al(e){let A=String(e||"").trim();return/^0x[0-9a-fA-F]{40}$/.test(A)?A:st}var st,ri=se(()=>{st="0x000000000000000000000000000000000000dEaD"});import{createHash as eT,createHmac as AT,timingSafeEqual as U1}from"node:crypto";function cl(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(cl).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${cl(e[t])}`).join(",")}}`}function Nf(e){let A=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return A.length>=16?A:""}function Uf(e=process.env){return Nf(process.env)||Nf(e)}function sT(e){let{prepareHash:A,prepareMac:t,note:r,...n}=e||{};return n}function oT(e){let A=sT(e);return eT("sha256").update(cl(A)).digest("hex")}function iT(e,A=Uf()){return A?AT("sha256",A).update(String(e)).digest("hex"):""}function ge(e,{provider:A,kind:t,env:r=process.env,nowMs:n=Date.now(),expiresAtMs:s}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let o=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(o&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let i={...e,provider:e.provider||A,kind:e.kind||t,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:o?e.oraclePrepared:!0};if(!i.provider)throw new Error("stampPrepared: provider required");if(!i.kind)throw new Error("stampPrepared: kind required");let a=Number(n),c=s==null?a+rT:Number(s),g=c-a;if(!Number.isSafeInteger(a)||!Number.isSafeInteger(c)||g<=0||g>nT)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let l={...i,preparedAt:a,expiresAt:c,prepareVersion:tT},E=oT(l),Q=Uf(r),h=Q?iT(E,Q):void 0,B={...l,prepareHash:E};return h&&(B.prepareMac=h),B}var tT,rT,nT,aA=se(()=>{tT=2,rT=300*1e3,nT=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{Contract as aT,JsonRpcProvider as cT}from"ethers";function BT(e){return QT.test(String(e||""))}async function Mf(e,{contract:A=uT,rpc:t=gT,chainId:r=lT,balanceOf:n}={}){if(!BT(e))throw new Error("invalid-address");if(n)return BigInt(await n(e));let s=new cT(t,r,{staticNetwork:!0}),o=new aT(A,ET,s);return BigInt(await o.balanceOf(e))}var uT,lT,gT,ET,QT,Lf=se(()=>{uT="0x62FCFAf7573AD8B41a0FBF347AfEb85e06599A75",lT=999,gT="https://rpc.hyperliquid.xyz/evm",ET=["function balanceOf(address owner) view returns (uint256)"],QT=/^0x[a-fA-F0-9]{40}$/});import{existsSync as IT,readFileSync as hT,lstatSync as CT}from"node:fs";import{homedir as Tf}from"node:os";import{join as ul}from"node:path";function pT(e){let A=String(e||"swap").toLowerCase();return Object.prototype.hasOwnProperty.call(xf,A)?xf[A]:fT}function DT(e=process.env){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){if(e[vf])return String(e[vf]);let A=e.ORACLE_CONFIG_DIR||ul(Tf(),".config","oracle");return ul(A,"fee-recipient")}return ul(Tf(),".config","oracle","fee-recipient")}function kT(e=process.env){try{let A=DT(e);if(!IT(A)||CT(A).isSymbolicLink())return"";let t=hT(A,"utf8").trim().toLowerCase();return/^0x[a-f0-9]{40}$/.test(t)?t:""}catch{return""}}function RT(e,{fallback:A=0}={}){if(e==null)return A;if(String(e).trim()==="")return 0;let t=Number(e);return!Number.isFinite(t)||t<=0?0:Math.min(Math.floor(t),dT)}function ST({env:e=process.env,action:A="swap",admin:t=!1}={}){let r=String(e[mT]||"").trim(),n=String(e[yT]||bT).trim();if(t===!0)return{bps:0,recipient:"",integrator:n,action:A,applies:!1,reason:"admin-oracle"};let s=pT(A),o=RT(e[wT],{fallback:r?s:0}),i=Math.min(o,s);if(!i)return{bps:0,recipient:"",integrator:n,action:A,applies:!1,reason:"not-configured"};if(!/^0x[a-fA-F0-9]{40}$/.test(r))return{bps:0,recipient:"",integrator:n,action:A,applies:!1,reason:"no-recipient"};let a=kT(e);return!a||a!==r.toLowerCase()?{bps:0,recipient:"",integrator:n,action:A,applies:!1,reason:"recipient-not-pinned"}:{bps:i,recipient:r,integrator:n,action:A,applies:!0,reason:"configured"}}async function ni({wallet:e,env:A=process.env,action:t="swap",holderCheck:r={},admin:n=!1}={}){let s=ST({env:A,action:t,admin:n});if(n===!0)return{...s,holderVerificationStatus:"admin-oracle"};let o=String(e||"").trim().toLowerCase();if(!/^0x[a-f0-9]{40}$/.test(o))return{...s,holderVerificationStatus:"wallet-required"};try{return BigInt(await Mf(o,r))>0n?{...s,bps:0,applies:!1,reason:"locals-only-holder",holderVerificationStatus:"holder"}:{...s,holderVerificationStatus:"non-holder"}}catch{return{...s,holderVerificationStatus:"unavailable"}}}function Yf(e){return e?.applies?`Oracle routing fee ${e.bps} bps (${(e.bps/100).toFixed(2)}%) to ${e.recipient}.`:e?.reason==="admin-oracle"?"No Oracle fee (admin Oracle).":e?.reason==="locals-only-holder"?"No Oracle fee (Locals Only holder).":"No Oracle fee."}function Gf(e){return e?.applies?{integrator:e.integrator,fee:String(e.bps/1e4)}:{}}function Jf(e){return e?.applies?{partner:e.integrator,partnerFeeBps:String(e.bps),partnerAddress:e.recipient}:{}}var dT,fT,xf,wT,mT,yT,vf,bT,si=se(()=>{Lf();dT=100,fT=5,xf=Object.freeze({swap:5,bridge:5,perps:0,nft:0});wT="ORACLE_INTEGRATOR_FEE_BPS",mT="ORACLE_INTEGRATOR_FEE_RECIPIENT",yT="ORACLE_INTEGRATOR_ID",vf="ORACLE_INTEGRATOR_FEE_RECIPIENT_PIN",bT="oracle"});var El={};ut(El,{LIFI_API:()=>Vf,lifiChains:()=>LT,lifiHealth:()=>UT,lifiPrepare:()=>MT,lifiQuote:()=>On});function gl(e={}){return(e.baseUrl||process.env.LIFI_API_URL||Vf).replace(/\/$/,"")}function NT(e){let A=String(e||ll).toLowerCase();return A===ll.toLowerCase()||A===FT}function Hf(e,A){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw new Error(`lifi: ${A} must be a 20-byte address`);return t.toLowerCase()}async function UT(e={}){let A=await Z(`${gl(e)}/chains`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??12e3}),t=Array.isArray(A)?A.length:A?.chains?.length||0;return{ok:t>0,chainCount:t}}async function On(e={},A={}){let{fromChain:t,toChain:r=t,fromToken:n=ll,toToken:s,fromAmount:o,fromAddress:i=st}=e;if(t==null||!s||!o)throw new Error("lifiQuote requires fromChain, toToken, fromAmount");let a=new URLSearchParams({fromChain:String(t),toChain:String(r),fromToken:n,toToken:s,fromAmount:String(o),fromAddress:i}),c=GA({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!c.executable)throw new Error(`lifi: route requires ${c.requiredBps} bps above cap ${c.capBps}`);a.set("slippage",String(c.selectedBps/1e4));let g=await ni({wallet:e.fromAddress,env:A.env,action:e.feeAction||"swap",holderCheck:A.holderCheck});for(let[B,I]of Object.entries(Gf(g)))a.set(B,I);let u=await Z(`${gl(A)}/quote?${a}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??2e4}),l=u?.estimate?.toAmount||u?.toAmount;if(!l)return{...u,autoSlippagePolicy:c,oracleFee:g};let E=u?.transactionRequest?.to||u?.estimate?.approvalAddress||"lifi",Q=Ie(u,{chainId:Number(t),venue:E,amountOut:l,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(r)!==Number(t),requestedCapBps:e.maxSlippageBps??e.slippageBps}),h=u?.estimate?.toAmountMin||u?.toAmountMin;if(h!=null&&BigInt(h)<BigInt(Q.amountOutMinimum))throw new Error("lifi: provider transaction is under-protected versus bounded auto-slippage floor");return{...Q,oracleFee:g}}async function MT(e={},A={}){let t=await On(e,A),r=t?.transactionRequest;if(!r?.to||!r?.data)throw new Error("lifi: quote did not return an executable transactionRequest");let n=Number(e.fromChain);if(r.chainId!=null&&Number(r.chainId)!==n)throw new Error("lifi: transaction chain mismatch");if(e.fromAddress&&r.from&&String(r.from).toLowerCase()!==String(e.fromAddress).toLowerCase())throw new Error("lifi: transaction sender mismatch");let s=null;if(!NT(e.fromToken)){let o=t?.estimate?.approvalAddress||t?.approvalAddress;if(!o)throw new Error("lifi: ERC20 route missing approvalAddress");let i=t?.action?.fromToken?.address||t?.estimate?.fromToken?.address||e.fromToken;s={token:Hf(i,"approval token"),spender:Hf(o,"approval spender"),amount:String(e.fromAmount)}}return ge({provider:"lifi",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:n,quote:t,autoSlippage:t.autoSlippage,requiresApproval:s,transaction:{chainId:n,from:r.from||e.fromAddress,to:r.to,data:r.data,value:r.value??"0x0",...r.gasLimit!=null?{gasLimit:r.gasLimit}:{},slippageGuard:iA(t.autoSlippage,{chainId:n,venue:r.to,data:r.data})}},{provider:"lifi",kind:"lifi-tx"})}async function LT(e={}){return Z(`${gl(e)}/chains`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??12e3})}var Vf,ll,FT,oi=se(()=>{wA();JA();ri();aA();si();Vf="https://li.quest/v1";ll="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",FT="0x0000000000000000000000000000000000000000"});var Pf={};ut(Pf,{PARASWAP_API:()=>qf,paraswapHealth:()=>xT,paraswapPrepare:()=>TT,paraswapPrice:()=>ii,paraswapTokens:()=>Of});function Gr(e,A){let t=String(e||"");if(!/^0x[0-9a-fA-F]{40}$/.test(t))throw new Error(`${A} must be a 20-byte token address`);return t.toLowerCase()}async function Of(e={},A={}){let t=Number(e.chainId||1);return Z(`${Ql(A)}/tokens/${t}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs})}async function ii(e={},A={}){let t=Number(e.chainId||e.network||1);if(e.amount==null)throw new Error("amount required");let r=new URLSearchParams({srcToken:Gr(e.srcToken,"srcToken"),destToken:Gr(e.destToken,"destToken"),amount:String(e.amount),srcDecimals:String(Number(e.srcDecimals)),destDecimals:String(Number(e.destDecimals)),side:String(e.side||"SELL").toUpperCase(),network:String(t),version:String(e.version||"6.2")});e.includeDEXS&&r.set("includeDEXS",String(e.includeDEXS)),e.excludeDEXS&&r.set("excludeDEXS",String(e.excludeDEXS));let n=await ni({wallet:e.userAddress||e.fromAddress,env:A.env,action:e.feeAction||"swap",holderCheck:A.holderCheck});for(let[i,a]of Object.entries(Jf(n)))r.set(i,a);let s=await Z(`${Ql(A)}/prices?${r}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??2e4}),o=s?.priceRoute?.destAmount;return o?{...Ie(s,{chainId:t,venue:s?.priceRoute?.contractAddress||"paraswap-quote",amountOut:o,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,quoteAgeMs:0,requestedCapBps:e.maxSlippageBps??e.slippageBps}),executionReady:!1,executionBlocker:"call prepare to bind the price route to a validated transaction",oracleFee:n}:{...s,executionReady:!1,oracleFee:n}}async function TT(e={},A={}){if(String(e.side||"SELL").toUpperCase()!=="SELL")throw new Error("paraswap: agentic prepare currently supports exact-input SELL only");let t=Number(e.chainId||e.network||1),r=Gr(e.userAddress,"userAddress"),n=await ii(e,A),s=n?.priceRoute,o=String(s?.contractAddress||"").toLowerCase();if(!o)throw new Error("paraswap: price route missing contractAddress");let i={srcToken:Gr(e.srcToken,"srcToken"),destToken:Gr(e.destToken,"destToken"),srcAmount:String(s.srcAmount||e.amount),destAmount:String(n.amountOutMinimum),priceRoute:s,userAddress:r,ignoreChecks:!1,ignoreGasEstimate:!1};e.receiver&&(i.receiver=Gr(e.receiver,"receiver"));let a=await Z(`${Ql(A)}/transactions/${t}`,{method:"POST",body:i,fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??25e3});if(Number(a.chainId??t)!==t)throw new Error("paraswap: transaction chain mismatch");if(String(a.to||"").toLowerCase()!==o)throw new Error("paraswap: transaction target mismatch");if(a.from&&String(a.from).toLowerCase()!==r)throw new Error("paraswap: transaction sender mismatch");return ge({provider:"paraswap",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:t,quote:n,autoSlippage:n.autoSlippage,requiresApproval:i.srcToken!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"?{token:i.srcToken,spender:s.tokenTransferProxy||o,amount:i.srcAmount}:null,transaction:{chainId:t,from:a.from||r,to:a.to,data:a.data,value:a.value??"0x0",...a.gas!=null?{gasLimit:a.gas}:{},slippageGuard:iA(n.autoSlippage,{chainId:t,venue:a.to,data:a.data})}},{provider:"paraswap",kind:"paraswap-tx"})}async function xT(e={}){let A=await Of({chainId:1},e),t=Array.isArray(A?.tokens)?A.tokens.length:Object.keys(A?.tokens||{}).length;return{ok:t>0,tokenSample:t}}var qf,Ql,Bl=se(()=>{wA();JA();aA();si();qf="https://api.paraswap.io",Ql=(e={})=>(e.baseUrl||process.env.PARASWAP_API_URL||qf).replace(/\/$/,"")});function ai({provider:e,defaultUrl:A,hosts:t=[],url:r,strict:n=!1}){let o=(String(r??"").trim()||String(A)).replace(/\/$/,"");if(o===String(A).replace(/\/$/,""))return{baseUrl:o,trusted:!0,host:_f(A)};let i;try{i=new URL(o)}catch{throw new Error(`${e}: baseUrl must be an absolute http(s) URL`)}if(i.protocol!=="http:"&&i.protocol!=="https:")throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);let a=i.host;if(!a)throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);if(new Set([_f(A),...t]).has(a)){let g=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(a);return i.protocol==="http:"&&!g?{baseUrl:o,trusted:!1,host:a,reason:"plaintext http downgrade"}:{baseUrl:o,trusted:!0,host:a}}if(String(process.env[Wf]||"")==="1")return{baseUrl:o,trusted:!1,host:a};if(n)throw new Error(`${e}: refusing to call non-allowlisted host ${a} (set ${Wf}=1 to permit it)`);return{baseUrl:o,trusted:!1,host:a}}function _f(e){let A=new URL(String(e));if(A.protocol!=="http:"&&A.protocol!=="https:")throw new Error("unsupported protocol");return A.host}function ci(e,A,t){let r={...e};if(!t)return r;for(let[n,s]of Object.entries(A||{}))s&&(r[n]=s);return r}var Wf,Il=se(()=>{Wf="ORACLE_ALLOW_CUSTOM_PROVIDER_URL"});var jf={};ut(jf,{ZEROX_API:()=>Kf,zeroxHealth:()=>vT,zeroxPrepare:()=>YT,zeroxPrice:()=>$f,zeroxQuote:()=>li});function Zf(e={}){return ai({provider:"zerox",defaultUrl:Kf,hosts:["api.0x.org"],url:e.baseUrl||process.env.ZEROX_API_URL})}function zf(e={}){return Zf(e).baseUrl}function ui(e={}){return e.apiKey||process.env.ZEROX_API_KEY||process.env.OX_API_KEY||process.env["0X_API_KEY"]||""}function Xf(e={}){return ci({"0x-version":"v2",accept:"application/json"},{"0x-api-key":ui(e)},Zf(e).trusted)}async function vT(e={}){if(!ui(e))return{ok:!1,configured:!1,error:"ZEROX_API_KEY not set"};try{let A=await $f({chainId:8453,sellToken:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",buyToken:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",sellAmount:"1000000000000000"},e);return{ok:!0,configured:!0,buyAmount:A.buyAmount||A.grossBuyAmount}}catch(A){return{ok:!1,configured:!0,error:String(A.message||A).slice(0,160)}}}async function $f(e={},A={}){if(!ui(A))throw new Error("ZEROX_API_KEY required for 0x");let{chainId:t=8453,sellToken:r,buyToken:n,sellAmount:s,taker:o}=e;if(!r||!n||!s)throw new Error("zeroxPrice requires sellToken, buyToken, sellAmount");let i=new URLSearchParams({chainId:String(t),sellToken:r,buyToken:n,sellAmount:String(s)});return o&&i.set("taker",o),Z(`${zf(A)}/swap/allowance-holder/price?${i}`,{headers:Xf(A),fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3})}async function li(e={},A={}){if(!ui(A))throw new Error("ZEROX_API_KEY required for 0x");let{chainId:t=8453,sellToken:r,buyToken:n,sellAmount:s,taker:o}=e;if(!r||!n||!s)throw new Error("zeroxQuote requires sellToken, buyToken, sellAmount");let i=GA({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!i.executable)throw new Error(`0x: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let a=new URLSearchParams({chainId:String(t),sellToken:r,buyToken:n,sellAmount:String(s),slippageBps:String(i.selectedBps)});o&&a.set("taker",o);let c=await Z(`${zf(A)}/swap/allowance-holder/quote?${a}`,{headers:Xf(A),fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3}),g=c?.buyAmount||c?.grossBuyAmount;return g?Ie(c,{chainId:t,venue:c?.transaction?.to||c?.to||"0x",amountOut:g,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):{...c,autoSlippagePolicy:i}}async function YT(e={},A={}){if(!e.taker)throw new Error("0x: taker required for executable prepare");let t=await li(e,A),r=t?.transaction;if(!r?.to||!r?.data)throw new Error("0x: firm quote returned no transaction");let n=Number(e.chainId??8453),s=t?.issues?.allowance?.spender||t?.allowanceTarget;return ge({provider:"zerox",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:n,quote:t,autoSlippage:t.autoSlippage,requiresApproval:t?.issues?.allowance?.actual!=null&&BigInt(t.issues.allowance.actual)<BigInt(e.sellAmount)?{token:e.sellToken,spender:s,amount:String(e.sellAmount)}:null,transaction:{chainId:n,from:e.taker,to:r.to,data:r.data,value:r.value??"0x0",...r.gas!=null?{gasLimit:r.gas}:{},slippageGuard:iA(t.autoSlippage,{chainId:n,venue:r.to,data:r.data})}},{provider:"zerox",kind:"zerox-tx"})}var Kf,hl=se(()=>{wA();JA();Il();aA();Kf="https://api.0x.org"});var iY,r0=se(()=>{iY=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var E0={};ut(E0,{COW_CANCEL_TYPES:()=>a0,COW_HOSTS:()=>dl,COW_ORDER_TYPES:()=>gi,COW_SETTLEMENT:()=>s0,COW_VAULT_RELAYER:()=>o0,cowCancelOrders:()=>jT,cowChains:()=>tx,cowHealth:()=>WT,cowOrder:()=>g0,cowOrderStatus:()=>l0,cowOrderUid:()=>KT,cowPrepareCancel:()=>XT,cowPrepareOrder:()=>_T,cowQuote:()=>Wn,cowSignCancel:()=>$T,cowSignOrder:()=>ZT,cowSubmitSignedOrder:()=>zT,cowVerifyOrderFill:()=>Ax});import{TypedDataEncoder as n0,getAddress as Pn,isAddress as VT}from"ethers";function Ei(e,A={}){if(A.baseUrl)return A.baseUrl.replace(/\/$/,"");let t=dl[Number(e)];if(!t)throw new Error(`cowswap: unsupported chainId ${e}`);return t}function qT(e,A="v1",t={}){let r=Ei(e,t);return A==="v1"?r:r.replace(/\/api\/v1$/,`/api/${A}`)}function ot(e,A){let t=String(e||"").trim();if(!VT(t))throw new Error(`cowswap: ${A} must be an address`);return Pn(t).toLowerCase()}function Jr(e,A){try{let t=BigInt(String(e));if(t<0n)throw new Error("negative");return t.toString()}catch{throw new Error(`cowswap: ${A} must be a non-negative integer string`)}}function c0(e,A){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(t))throw new Error(`cowswap: ${A} must be bytes32 hex`);return t.toLowerCase()}function u0(e,A="uid"){let t=String(e||"").trim();if(!/^0x[0-9a-fA-F]{112}$/.test(t))throw new Error(`cowswap: ${A} must be 56-byte order UID hex`);return t.toLowerCase()}function OT({digest:e,owner:A,validTo:t}={}){let r=c0(e,"order digest").slice(2),n=ot(A,"owner").slice(2).toLowerCase(),s=Number(t);if(!Number.isInteger(s)||s<0||s>4294967295)throw new Error("cowswap: validTo must fit uint32");return`0x${r}${n}${s.toString(16).padStart(8,"0")}`.toLowerCase()}function fl(e){let A=s0[Number(e)];if(!A)throw new Error(`cowswap: settlement contract not registered for chain ${e}`);return{name:"Gnosis Protocol",version:"v2",chainId:Number(e),verifyingContract:Pn(A)}}function PT(e={},A,t){let r=ot(e.sellToken,"sellToken"),n=ot(e.buyToken,"buyToken"),s=ot(e.receiver||t,"receiver"),o=Number(e.validTo);if(!Number.isInteger(o)||o<=0)throw new Error("cowswap: quote.validTo required");let i=c0(e.appData||e.appDataHash||`0x${"0".repeat(64)}`,"appData");return{sellToken:r,buyToken:n,receiver:s,sellAmount:Jr(e.sellAmount,"sellAmount"),buyAmount:Jr(e.buyAmount,"buyAmount"),validTo:o,appData:i,feeAmount:Jr(e.feeAmount??"0","feeAmount"),kind:String(e.kind||"sell"),partiallyFillable:!!e.partiallyFillable,sellTokenBalance:String(e.sellTokenBalance||"erc20"),buyTokenBalance:String(e.buyTokenBalance||"erc20")}}async function WT(e={}){try{let A=await Wn({chainId:1,sellToken:Cl[1],buyToken:i0[1],sellAmountBeforeFee:"1000000000000000",from:st},e);return{ok:!0,buyAmount:A.quote?.buyAmount||A.buyAmount}}catch(A){return{ok:!1,error:String(A.message||A).slice(0,160)}}}async function Wn(e={},A={}){let t=Number(e.chainId??1),r=al(e.from||e.owner),n=e.sellToken||Cl[t],s=e.buyToken||i0[t],o=String(e.sellAmountBeforeFee||e.sellAmount||"0");if(!n||!s||o==="0")throw new Error("cowQuote requires sellToken, buyToken, sellAmountBeforeFee");if(/eeeeeeee|native|^eth$/i.test(n)&&(n=Cl[t],!n))throw new Error("no WETH mapping for chain");let i={sellToken:n,buyToken:s,from:r,receiver:e.receiver||r,sellAmountBeforeFee:o,kind:e.kind||"sell",signingScheme:e.signingScheme||"eip1271"},a=await Z(`${Ei(t,A)}/quote`,{method:"POST",body:i,fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3}),c=a?.quote?.buyAmount||a?.buyAmount;return c?Ie(a,{chainId:t,venue:"cowswap-order",amountOut:c,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):a}async function _T(e={},A={}){let t=Number(e.chainId??1),r=ot(al(e.from||e.owner||e.signer),"owner"),n=await Wn({...e,chainId:t,from:r,signingScheme:e.signingScheme||"eip712"},A),s=PT(n?.quote||n,t,r),o=fl(t),i={domain:o,types:gi,primaryType:"Order",message:s},a=n0.hash(o,gi,s),c=o0[t];if(!c)throw new Error(`cowswap: vault relayer not registered for chain ${t}`);return ge({provider:"cowswap",orderReady:!0,executionReady:!1,chainId:t,owner:r,signingScheme:"eip712",settlement:o.verifyingContract.toLowerCase(),vaultRelayer:Pn(c).toLowerCase(),quote:n,quoteId:n?.id??e.quoteId??null,typedData:i,cowGuard:{mode:"cow-order",version:1,provider:"cowswap",chainId:t,owner:r,settlement:o.verifyingContract.toLowerCase(),vaultRelayer:Pn(c).toLowerCase(),sellToken:s.sellToken,buyToken:s.buyToken,sellAmount:s.sellAmount,buyAmount:s.buyAmount,validTo:s.validTo,quoteId:n?.id??e.quoteId??null,typedDataHash:a,issuedAtMs:Date.now(),expiresAtMs:Math.min(s.validTo*1e3,Date.now()+2e4)},requiresApproval:{token:s.sellToken,spender:Pn(c).toLowerCase(),amount:s.sellAmount}},{provider:"cowswap",kind:"cow-order"})}async function l0(e={},A={}){let t=Number(e.chainId??1),r=String(e.uid||e.orderUid||"").trim();if(!r)throw new Error("cowOrderStatus requires uid");return Z(`${Ei(t,A)}/orders/${encodeURIComponent(r)}/status`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3})}async function g0(e={},A={}){let t=Number(e.chainId??1),r=String(e.uid||e.orderUid||"").trim();if(!r)throw new Error("cowOrder requires uid");return Z(`${Ei(t,A)}/orders/${encodeURIComponent(r)}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3})}function KT(e={}){let A=e.typedData||e,t=Number(e.chainId??A?.domain?.chainId),r=A?.message||e.order||e.message;if(!r)throw new Error("cowswap: typed order message required");let n=e.cowGuard?.typedDataHash||n0.hash(fl(t),gi,r),s=e.owner||e.from||e.signer||r.receiver;return OT({digest:n,owner:s,validTo:r.validTo})}async function ZT(e={},A={}){throw new Error("cowswap.cowSignOrder refused: @oracle-agent/oracle is prepare-only. Sign with the user wallet; do not pass private keys here.")}async function zT(e={},A={}){throw new Error("cowswap.cowSubmitSignedOrder refused: @oracle-agent/oracle is prepare-only. Submit signed orders from the user wallet or local operator.")}function XT(e={}){let A=Number(e.chainId??1),t=ot(e.owner||e.from||e.signer,"owner"),r=(e.orderUids||e.uids||[e.uid]).filter(Boolean).map((o,i)=>u0(o,`orderUids[${i}]`));if(!r.length)throw new Error("cowswap: orderUids required");let n=fl(A);return ge({provider:"cowswap",chainId:A,owner:t,orderUids:r,signingScheme:"eip712",typedData:{domain:n,types:a0,primaryType:"OrderCancellations",message:{orderUids:r}},cancelReady:!0,executableArtifact:!0},{provider:"cowswap",kind:"cow-cancel"})}async function $T(e={},A={}){throw new Error("cowswap.cowSignCancel refused: @oracle-agent/oracle is prepare-only. Cancel-sign with the user wallet.")}async function jT(e={},A={}){throw new Error("cowswap.cowCancelOrders refused: @oracle-agent/oracle is prepare-only. Cancel from the user wallet or local operator.")}function ex(e={}){return Jr(e.buyAmount??e.executedBuyAmount??"0","trade.buyAmount")}async function Ax(e={},A={}){let t=Number(e.chainId??1),r=u0(e.uid||e.orderUid),n=A.order||await g0({chainId:t,uid:r},A),s=A.status||n.status||await l0({chainId:t,uid:r},A).catch(()=>null),o=A.trades||await Z(`${qT(t,"v2",A)}/trades?orderUid=${encodeURIComponent(r)}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3}),i=Array.isArray(o)?o:[],a=e.expectedOwner?ot(e.expectedOwner,"expectedOwner"):null;if(a&&ot(n.owner||i[0]?.owner||a,"owner")!==a)return{ok:!1,provider:"cowswap",chainId:t,uid:r,reason:"owner mismatch",order:n,status:s,trades:i};let c=0n;for(let l of i.filter(E=>String(E.orderUid||"").toLowerCase()===r))c+=BigInt(ex(l));c===0n&&n.executedBuyAmount!=null&&(c=BigInt(Jr(n.executedBuyAmount,"executedBuyAmount")));let g=e.minBuyAmount!=null?BigInt(Jr(e.minBuyAmount,"minBuyAmount")):0n,u=c>=g&&String(n.status||s?.status||"").toLowerCase()!=="expired";return{ok:u,provider:"cowswap",chainId:t,uid:r,status:n.status||s?.status||null,executedBuyAmount:c.toString(),minBuyAmount:e.minBuyAmount??null,trades:i,settlementTxs:[...new Set(i.map(l=>l.txHash).filter(Boolean))],order:n,orderStatus:s,reason:u?null:"insufficient fill or expired order"}}function tx(){return Object.keys(dl).map(Number)}var dl,s0,o0,Cl,i0,gi,a0,pl=se(()=>{wA();JA();r0();ri();aA();dl={1:"https://api.cow.fi/mainnet/api/v1",100:"https://api.cow.fi/xdai/api/v1",42161:"https://api.cow.fi/arbitrum_one/api/v1",8453:"https://api.cow.fi/base/api/v1"},s0=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),o0=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),Cl={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},i0={1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",8453:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",42161:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},gi=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),a0=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});function B0(e){return rx.get(Number(e))||null}function I0(e,A=process.env){let t=B0(e);if(!t)return null;for(let r of t.rpcEnv){let n=(A[r]||"").trim();if(n)return n}return null}var Q0,rx,h0=se(()=>{Q0={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},rx=new Map(Object.values(Q0).map(e=>[e.chainId,e]))});import{Interface as nx,getAddress as sx}from"ethers";function d0(e,A){try{return sx(e).toLowerCase()}catch{throw new Error(`${A} must be a valid EVM address`)}}function ix(e,{rpcUrl:A,env:t=process.env}={}){if(A)return A;let r=I0(e,t);return r||ox[Number(e)]||null}function cx(e){let A=String(e||""),t=A.toLowerCase();if(A!==A.trim()||!/^[a-zA-Z0-9_]+$/.test(A)||!ax.test(t))throw new Error(`evm-rpc: ${A} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return t}async function Ce(e,A,t=[],r={}){let n=String(A||"");cx(n);let s=ix(e,r);if(!s)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);let i=await Z(s,{method:"POST",body:{jsonrpc:"2.0",id:1,method:A,params:t},fetchImpl:r.fetchImpl,timeoutMs:r.timeoutMs??12e3});if(i?.error){let a=new Error(i.error.message||JSON.stringify(i.error));throw a.code=i.error.code,a}return i.result}async function f0(e,A={}){let t=await Ce(e,"eth_blockNumber",[],A);return parseInt(t,16)}async function p0(e,A={}){let t=await Ce(e,"eth_gasPrice",[],A);if(t==null)return null;try{return BigInt(t)}catch{return null}}async function w0(e,A,t={}){if(!A)throw new Error("rpcGetBalance requires address");let r=await Ce(e,"eth_getBalance",[A,"latest"],t);return{chainId:Number(e),address:A,balanceWei:BigInt(r).toString(),balanceHex:r}}async function m0(e={},A={}){let t=Number(e.chainId??A.chainId??1),r=d0(e.token||e.tokenAddress,"token"),n=d0(e.account||e.owner||e.address,"account"),s=C0.encodeFunctionData("balanceOf",[n]),o=await Ce(t,"eth_call",[{to:r,data:s},e.blockTag||"latest"],A),i=C0.decodeFunctionResult("balanceOf",o),a=BigInt(i[0]);return{chainId:t,token:r,account:n,balance:a.toString(),balanceHex:`0x${a.toString(16)}`,blockTag:e.blockTag||"latest"}}var C0,ox,ax,vt=se(()=>{wA();h0();C0=new nx(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);ox={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};ax=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/});function Ex(e,A,t){let r=cA(A),n=cA(t),s=cA(e?.baseToken?.address),o=cA(e?.quoteToken?.address);return s===r&&o===n||s===n&&o===r}function Qx(e){let A=Number(e?.liquidity?.usd);return Number.isFinite(A)&&A>=0?A:null}function Bx(e={}){return(e.baseUrl||process.env.DEXSCREENER_API_URL||ux).replace(/\/$/,"")}async function wl(e,A={}){if(!e)throw new Error("tokenAddress required");return Z(`${Bx(A)}/latest/dex/tokens/${e}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??12e3})}async function Qi({chainId:e,tokenA:A,tokenB:t,dexIds:r=[]}={},n={}){if(e==null||!A||!t)throw new Error("chainId, tokenA, and tokenB required");let s=cA(lx[Number(e)]||e),o=new Set(gx(r).filter(Boolean).map(cA)),i=[...new Set([A,t].map(l=>String(l)).filter(Boolean))],a=await Promise.allSettled(i.map(l=>wl(l,{...n,baseUrl:n.dexscreenerBaseUrl,timeoutMs:n.dexscreenerTimeoutMs??Math.min(Number(n.timeoutMs??4e3),4e3)}))),c=new Set,g=[];for(let l of a)if(l.status==="fulfilled")for(let E of l.value?.pairs||l.value?.data?.pairs||[]){let Q=`${cA(E?.chainId)}:${cA(E?.dexId)}:${cA(E?.pairAddress)}`;c.has(Q)||(c.add(Q),g.push(E))}return g.filter(l=>cA(l?.chainId)===s).filter(l=>Ex(l,A,t)).filter(l=>!o.size||o.has(cA(l?.dexId))).map(l=>({pairAddress:l.pairAddress??null,dexId:l.dexId??null,chainId:l.chainId??null,liquidityUsd:Qx(l),pairCreatedAt:l.pairCreatedAt??null})).filter(l=>l.liquidityUsd!=null).sort((l,E)=>E.liquidityUsd-l.liquidityUsd)[0]??null}var ux,lx,cA,gx,Bi=se(()=>{wA();ux="https://api.dexscreener.com",lx=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"}),cA=e=>String(e??"").toLowerCase(),gx=e=>Array.isArray(e)?e:e==null?[]:[e]});var N0={};ut(N0,{PANCAKE_FEE_TIERS:()=>Ii,UNI_V3_CHAINS:()=>Ne,UNI_V3_FEE_TIERS:()=>D0,UNI_V3_VENUES:()=>S0,uniV3Chains:()=>wx,uniV3EthUsdc:()=>F0,uniV3Health:()=>px,uniV3PrepareExactIn:()=>fx,uniV3QuoteExactIn:()=>Kn,uniV3QuoteExactInPath:()=>dx});import{Interface as b0,getAddress as _n,isAddress as Ix}from"ethers";function yl(e,A){let t=Number(e),r=Ne[t];if(!r)throw new Error(`uniswap-v3: unsupported chainId ${e} (supported: ${Object.keys(Ne).join(", ")})`);let n=S0[t]||{};if(!A){if(!r.quoter||!r.router){let a=Object.keys(n).join(", ")||"none registered";throw new Error(`uniswap-v3: chain ${t} (${r.name}) has no canonical Uniswap v3 deployment -- name a venue explicitly (known: ${a})`)}return{chainId:t,venue:r.name,...r}}let s=String(A).toLowerCase();if(s===r.name&&r.quoter&&r.router)return{chainId:t,venue:r.name,...r};let o=n,i=o[s];if(!i){let a=[...r.quoter&&r.router?[r.name]:[],...Object.keys(o)].join(", ");throw new Error(`uniswap-v3: unknown venue "${A}" on chain ${t} (known: ${a})`)}return{chainId:t,venue:s,...r,quoter:i.quoter,router:i.router,feeTiers:i.feeTiers||null}}function ml(e,A){let t=Ne[Number(A)];if(!e||e===k0||e===R0||/^eth$/i.test(String(e)))return _n(t.weth);let r=String(e);if(/^weth$/i.test(r))return _n(t.weth);if(/^usdc$/i.test(r))return _n(t.usdc);if(!Ix(r))throw new Error(`invalid token address: ${e}`);return _n(r)}function hx(e){let A=String(e||"uniswap").toLowerCase();return A==="uniswap"?["uniswap-v3","uniswap"]:A==="pancakeswap"?["pancakeswap-v3","pancakeswap"]:A==="hyperswap"?["hyperswap-v3","hyperswap"]:[A,`${A}-v3`]}function Cx(e,A){if(e.length!==A.length+1)throw new Error("path: fees.length must be tokens.length - 1");let t="0x";for(let r=0;r<A.length;r++)t+=e[r].slice(2).toLowerCase(),t+=Number(A[r]).toString(16).padStart(6,"0");return t+=e[e.length-1].slice(2).toLowerCase(),t}async function Kn(e={},A={}){let{chainId:t,quoter:r,router:n,feeTiers:s}=yl(e.chainId??8453,e.venue),o=ml(e.tokenIn||"WETH",t),i=ml(e.tokenOut||Ne[t].usdc,t),a=BigInt(e.amountIn??0);if(a<=0n)throw new Error("amountIn required (raw base units)");let c=s&&s.length?s:D0,g=e.fee!=null?[Number(e.fee)]:e.tryFees===!1?[c[Math.min(2,c.length-1)]]:[...c],u=[],l=null;for(let h of g){let B=hi.encodeFunctionData("quoteExactInputSingle",[{tokenIn:o,tokenOut:i,amountIn:a,fee:h,sqrtPriceLimitX96:0n}]);try{let I=await Ce(t,"eth_call",[{to:r,data:B},"latest"],A);if(!I||I==="0x"){u.push({fee:h,ok:!1,error:"empty result"});continue}let C=hi.decodeFunctionResult("quoteExactInputSingle",I),p={fee:h,ok:!0,amountOut:C[0].toString(),sqrtPriceX96After:C[1].toString(),initializedTicksCrossed:Number(C[2]),gasEstimate:C[3].toString()};u.push(p),(!l||BigInt(p.amountOut)>BigInt(l.amountOut))&&(l=p)}catch(I){u.push({fee:h,ok:!1,error:String(I.message||I).slice(0,160)})}}if(!l){let h=u.map(B=>`${B.fee}:${B.error||"fail"}`).join("; ");throw new Error(`uniswap-v3 quote failed chain=${t}: ${h}`)}let E=e.liquidityUsd==null?await Qi({chainId:t,tokenA:o,tokenB:i,dexIds:hx(e.venue)},A).catch(()=>null):null,Q=e.liquidityUsd??E?.liquidityUsd??null;return Ie({venue:"uniswap-v3",chainId:t,chain:Ne[t].name,quoter:r,tokenIn:o,tokenOut:i,amountIn:a.toString(),fee:l.fee,amountOut:l.amountOut,gasEstimate:l.gasEstimate,liquidityUsd:Q,liquiditySource:E,sqrtPriceX96After:l.sqrtPriceX96After,initializedTicksCrossed:l.initializedTicksCrossed,triedFees:u,best:!0},{chainId:t,venue:n,amountOut:l.amountOut,liquidityUsd:Q,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function dx(e={},A={}){let{chainId:t,quoter:r,router:n}=yl(e.chainId??8453),s=(e.tokens||[]).map(l=>ml(l,t)),o=(e.fees||[]).map(Number);if(s.length<2)throw new Error("tokens[] need at least 2 addresses");let i=BigInt(e.amountIn??0);if(i<=0n)throw new Error("amountIn required");let a=Cx(s,o),c=hi.encodeFunctionData("quoteExactInput",[a,i]),g=await Ce(t,"eth_call",[{to:r,data:c},"latest"],A),u=hi.decodeFunctionResult("quoteExactInput",g);return Ie({venue:"uniswap-v3",chainId:t,chain:Ne[t].name,quoter:r,tokens:s,fees:o,path:a,amountIn:i.toString(),amountOut:u[0].toString(),gasEstimate:u[3].toString()},{chainId:t,venue:n,amountOut:u[0].toString(),liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function F0(e={},A={}){let t=Number(e.chainId??8453),r=e.amountIn??"1000000000000000",n=await Kn({chainId:t,tokenIn:Ne[t].weth,tokenOut:Ne[t].usdc,amountIn:r,fee:e.fee},A),s=Number(n.amountOut)/1e6;return{...n,amountOutUsdc:s,pair:"WETH/USDC"}}async function fx(e={},A={}){let t=Number(e.chainId??8453),r=yl(t,e.venue),n=_n(e.recipient),s=String(e.tokenIn||"WETH"),o=!e.tokenIn||s===k0||s===R0||/^eth$/i.test(s),i=await Kn(e,A),a=y0.encodeFunctionData("exactInputSingle",[{tokenIn:i.tokenIn,tokenOut:i.tokenOut,fee:i.fee,recipient:n,amountIn:BigInt(i.amountIn),amountOutMinimum:BigInt(i.amountOutMinimum),sqrtPriceLimitX96:0n}]),c=Math.min(600,Math.max(30,Number(e.deadlineSeconds??300))),u=Number(A.nowSeconds??Math.floor(Date.now()/1e3))+c,l=y0.encodeFunctionData("multicall",[u,[a]]);return ge({provider:"uniswap-v3",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:t,deadline:u,quote:i,autoSlippage:i.autoSlippage,requiresApproval:o?null:{token:i.tokenIn,spender:r.router,amount:i.amountIn},transaction:{chainId:t,from:n,to:r.router,data:l,value:o?i.amountIn:"0",slippageGuard:iA(i.autoSlippage,{chainId:t,venue:r.router,data:l})}},{provider:"uniswap-v3",kind:"univ3-swap-tx"})}async function px(e={}){let A=Number(e.chainId??8453);try{let t=await F0({chainId:A,amountIn:"1000000000000000"},e);return{ok:!0,chainId:A,fee:t.fee,amountOutUsdc:t.amountOutUsdc,midPxHint:t.amountOutUsdc/.001}}catch(t){return{ok:!1,chainId:A,error:String(t.message||t).slice(0,200)}}}async function wx(){return Object.entries(Ne).map(([e,A])=>({chainId:Number(e),name:A.name,quoter:A.quoter,weth:A.weth,usdc:A.usdc}))}var Ne,D0,hi,y0,k0,R0,Ii,S0,Ci=se(()=>{vt();Bi();JA();aA();Ne={1:{name:"ethereum",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",usdc:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},8453:{name:"base",quoter:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",router:"0x2626664c2603336E57B271c5C0b26F421741e481",weth:"0x4200000000000000000000000000000000000006",usdc:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},42161:{name:"arbitrum",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",usdc:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},4663:{name:"robinhood",quoter:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",router:"0xcaf681a66d020601342297493863e78c959e5cb2",weth:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",usdc:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"},999:{name:"hyperevm",weth:"0x5555555555555555555555555555555555555555",usdc:"0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"},10:{name:"optimism",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x4200000000000000000000000000000000000006",usdc:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"},56:{name:"bsc",quoter:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",router:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",usdc:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"},137:{name:"polygon",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",usdc:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"},43114:{name:"avalanche",quoter:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",router:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",usdc:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"}},D0=[100,500,3e3,1e4],hi=new b0(["function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)","function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]),y0=new b0(["function exactInputSingle((address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function multicall(uint256 deadline,bytes[] data) payable returns (bytes[] results)"]),k0="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",R0="0x0000000000000000000000000000000000000000",Ii=[100,500,2500,1e4],S0={56:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:Ii}},8453:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:Ii}},42161:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:Ii}},999:{hyperswap:{name:"hyperswap",quoter:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",router:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D"}}}});var Y0={};ut(Y0,{UNI_V4_CHAINS:()=>HA,UNI_V4_FEE_TIERS:()=>T0,computeV4PoolId:()=>v0,uniV4Chains:()=>Ux,uniV4Health:()=>Mx,uniV4PrepareExactIn:()=>Nx,uniV4QuoteExactIn:()=>fi});import{AbiCoder as mx,Interface as L0,getAddress as uA,isAddress as di,keccak256 as yx}from"ethers";function bl(e){let A=Number(e),t=HA[A];if(!t)throw new Error(`uniswap-v4: unsupported chainId ${e} (supported: ${Object.keys(HA).join(", ")})`);return{chainId:A,...t}}function M0(e,A){let t=HA[Number(A)];if(!e||e===x0||e===Yt||/^eth$/i.test(String(e)))return uA(t.weth);let r=String(e);if(/^weth$/i.test(r))return uA(t.weth);if(/^usdc$/i.test(r)||/^usdg$/i.test(r))return uA(t.usdc);if(!di(r))throw new Error(`invalid token address: ${e}`);return uA(r)}function v0({currency0:e,currency1:A,fee:t,tickSpacing:r,hooks:n=Yt}){let s=uA(e),o=uA(A);if(s.toLowerCase()===o.toLowerCase())throw new Error("poolKey currencies must differ");let[i,a]=s.toLowerCase()<o.toLowerCase()?[s,o]:[o,s],c=n&&di(n)?uA(n):Yt;return yx(Zn.encode(["address","address","uint24","int24","address"],[i,a,Number(t),Number(r),c]))}function Sx({tokenIn:e,tokenOut:A,fee:t,tickSpacing:r,hooks:n=Yt}){let s=uA(e),o=uA(A),[i,a]=s.toLowerCase()<o.toLowerCase()?[s,o]:[o,s],c=s.toLowerCase()===i.toLowerCase();return{poolKey:{currency0:i,currency1:a,fee:Number(t),tickSpacing:Number(r),hooks:n&&di(n)?uA(n):Yt},zeroForOne:c}}async function fi(e={},A={}){let{chainId:t,quoter:r,poolManager:n,universalRouter:s}=bl(e.chainId??8453),o=M0(e.tokenIn||"WETH",t),i=M0(e.tokenOut||HA[t].usdc,t),a=BigInt(e.amountIn??0);if(a<=0n)throw new Error("amountIn required (raw base units)");if(a>0xffffffffffffffffffffffffffffffffn)throw new Error("amountIn exceeds uint128");let c=e.fee!=null&&e.tickSpacing!=null?[{fee:Number(e.fee),tickSpacing:Number(e.tickSpacing)}]:e.tryTiers===!1?[{fee:500,tickSpacing:10}]:[...T0],g=e.hooks||Yt,u=[],l=null;for(let h of c){let{poolKey:B,zeroForOne:I}=Sx({tokenIn:o,tokenOut:i,fee:h.fee,tickSpacing:h.tickSpacing,hooks:g}),C=U0.encodeFunctionData("quoteExactInputSingle",[{poolKey:B,zeroForOne:I,exactAmount:a,hookData:"0x"}]);try{let p=await Ce(t,"eth_call",[{to:r,data:C},"latest"],A);if(!p||p==="0x"){u.push({...h,ok:!1,error:"empty result"});continue}let w=U0.decodeFunctionResult("quoteExactInputSingle",p),R={fee:h.fee,tickSpacing:h.tickSpacing,ok:!0,amountOut:w[0].toString(),gasEstimate:w[1].toString(),poolKey:B,zeroForOne:I,poolId:v0({...B})};u.push(R),(!l||BigInt(R.amountOut)>BigInt(l.amountOut))&&(l=R)}catch(p){u.push({...h,ok:!1,error:String(p.message||p).slice(0,160)})}}if(!l){let h=u.map(B=>`${B.fee}/${B.tickSpacing}:${B.error||"fail"}`).join("; ");throw new Error(`uniswap-v4 quote failed chain=${t}: ${h}`)}let E=e.liquidityUsd==null?await Qi({chainId:t,tokenA:o,tokenB:i,dexIds:Fx},A).catch(()=>null):null,Q=e.liquidityUsd??E?.liquidityUsd??null;return Ie({venue:"uniswap-v4",chainId:t,chain:HA[t].name,poolManager:n,quoter:r,universalRouter:s||null,tokenIn:o,tokenOut:i,amountIn:a.toString(),fee:l.fee,tickSpacing:l.tickSpacing,hooks:l.poolKey.hooks,poolId:l.poolId,zeroForOne:l.zeroForOne,amountOut:l.amountOut,gasEstimate:l.gasEstimate,liquidityUsd:Q,liquiditySource:E,triedTiers:u,best:!0,executionReady:!1,prepareReady:typeof e.recipient=="string"&&di(e.recipient)&&e.slippageBps!=null},{chainId:t,venue:s||r,amountOut:l.amountOut,liquidityUsd:Q,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function Nx(e={},A={}){let t=Number(e.chainId??8453),r=bl(t);if(!e.recipient)throw new Error("uniswap-v4 prepare requires recipient");let n=uA(e.recipient);if(e.slippageBps==null)throw new Error("uniswap-v4 prepare requires explicit slippageBps");let s=Number(e.slippageBps);if(!Number.isInteger(s)||s<0||s>=1e4)throw new Error("slippageBps must be an integer from 0 through 9999");let o=String(e.tokenIn||"");if(!o||o===x0||o===Yt||/^eth$/i.test(o))throw new Error("uniswap-v4 prepare currently requires an ERC-20 tokenIn; native input is not inferred");let i=await fi(e,A);if(!r.universalRouter)throw new Error(`uniswap-v4: no Universal Router on chain ${t}`);let a=BigInt(i.amountOut)*BigInt(1e4-s)/10000n,c={currency0:i.zeroForOne?i.tokenIn:i.tokenOut,currency1:i.zeroForOne?i.tokenOut:i.tokenIn,fee:i.fee,tickSpacing:i.tickSpacing,hooks:i.hooks},u=Zn.encode(["tuple(tuple(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 amountIn,uint128 amountOutMinimum,uint256 minHopPriceX36,bytes hookData)"],[[c,i.zeroForOne,BigInt(i.amountIn),a,0n,"0x"]]),l=Zn.encode(["address","uint256"],[i.tokenIn,BigInt(i.amountIn)]),E=Zn.encode(["address","uint256"],[i.tokenOut,a]),Q=Zn.encode(["bytes","bytes[]"],[kx,[u,l,E]]),h=Math.min(600,Math.max(30,Number(e.deadlineSeconds??300))),I=Number(A.nowSeconds??Math.floor(Date.now()/1e3))+h,C=bx.encodeFunctionData("execute",[Dx,[Q],I]);return ge({provider:"uniswap-v4",prepareReady:!0,calldataReady:!0,executionReady:!1,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:t,deadline:I,quote:{...i,amountOutMinimum:a.toString(),slippageBps:s},requiresApproval:{token:i.tokenIn,spender:Rx,amount:i.amountIn,note:"Universal Router V4 settlement uses Permit2; Permit2 authorization for the Universal Router is also required"},transaction:{chainId:t,from:n,to:r.universalRouter,data:C,value:"0"}},{provider:"uniswap-v4",kind:"univ4-swap-tx"})}async function Ux(){return Object.entries(HA).map(([e,A])=>({chainId:Number(e),name:A.name,poolManager:A.poolManager,quoter:A.quoter,stateView:A.stateView||null,universalRouter:A.universalRouter||null,weth:A.weth,usdc:A.usdc}))}async function Mx(e={}){let A=bl(e.chainId??8453),t=await Ce(A.chainId,"eth_getCode",[A.quoter,"latest"],e),r=typeof t=="string"&&t!=="0x"&&t.length>4;return{ok:r,chainId:A.chainId,quoter:A.quoter,poolManager:A.poolManager,codeBytes:r?(t.length-2)/2:0}}var Zn,Yt,HA,T0,U0,bx,Dx,kx,Rx,x0,Fx,Dl=se(()=>{vt();Bi();JA();aA();Zn=mx.defaultAbiCoder(),Yt="0x0000000000000000000000000000000000000000",HA={1:{name:"ethereum",poolManager:"0x000000000004444c5dc75cB358380D2e3dE08A90",quoter:"0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203",stateView:"0x7ffe42c4a5deea5b0fec41c94c136cf115597227",universalRouter:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",usdc:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},10:{name:"optimism",poolManager:"0x9a13f98cb987694c9f086b1f5eb990eea8264ec3",quoter:"0x1f3131a13296fb91c90870043742c3cdbff1a8d7",stateView:"0xc18a3169788f4f75a170290584eca6395c75ecdb",universalRouter:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",weth:"0x4200000000000000000000000000000000000006",usdc:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"},56:{name:"bsc",poolManager:"0x28e2ea090877bf75740558f6bfb36a5ffee9e9df",quoter:"0x9f75dd27d6664c475b90e105573e550ff69437b0",stateView:"0xd13dd3d6e93f276fafc9db9e6bb47c1180aee0c4",universalRouter:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",usdc:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"},137:{name:"polygon",poolManager:"0x67366782805870060151383f4bbff9dab53e5cd6",quoter:"0xb3d5c3dfc3a7aebff71895a7191796bffc2c81b9",stateView:"0x5ea1bd7974c8a611cbab0bdcafcb1d9cc9b3ba5a",universalRouter:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",usdc:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"},8453:{name:"base",poolManager:"0x498581fF718922c3f8e6A244956aF099B2652b2b",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",stateView:"0xa3c0c9b65bad0b08107aa264b0f3db444b867a71",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",weth:"0x4200000000000000000000000000000000000006",usdc:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},42161:{name:"arbitrum",poolManager:"0x360e68faccca8ca495c1b759fd9eee466db9fb32",quoter:"0x3972c00f7ed4885e145823eb7c655375d275a1c5",stateView:"0x76fd297e2d437cd7f76d50f01afe6160f86e9990",universalRouter:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",usdc:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},43114:{name:"avalanche",poolManager:"0x06380c0e0912312b5150364b9dc4542ba0dbbc85",quoter:"0xbe40675bb704506a3c2ccfb762dcfd1e979845c2",stateView:"0xc3c9e198c735a4b97e3e683f391ccbdd60b69286",universalRouter:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",usdc:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"},4663:{name:"robinhood",poolManager:"0x8366a39cc670b4001a1121b8f6a443a643e40951",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",stateView:"0xf3334192d15450cdd385c8b70e03f9a6bd9e673b",universalRouter:"0x8876789976dEcBfCbBbe364623C63652db8C0904",weth:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",usdc:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"}},T0=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200},{fee:25e3,tickSpacing:8}],U0=new L0(["function quoteExactInputSingle(((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountOut, uint256 gasEstimate)"]),bx=new L0(["function execute(bytes commands,bytes[] inputs,uint256 deadline) payable"]),Dx="0x10",kx="0x060c0f",Rx="0x000000000022D473030F116dDEE9F6B43aC78BA3",x0="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";Fx=["uniswap-v4","uniswapv4"]});var wi={};ut(wi,{ACROSS_API:()=>J0,HOP_API:()=>H0,RELAY_API:()=>V0,acrossHealth:()=>Gx,acrossSuggestedFees:()=>q0,hopHealth:()=>Jx,hopQuote:()=>O0,relayHealth:()=>Hx,relayPrepare:()=>Vx,relayQuote:()=>kl});async function Gx(e={}){try{return{ok:!0,estimatedFillTimeSec:(await q0({token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",destinationToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",originChainId:1,destinationChainId:42161,amount:"1000000000000000"},e)).estimatedFillTimeSec}}catch(A){return{ok:!1,error:String(A.message||A).slice(0,160)}}}async function q0(e={},A={}){let{token:t,destinationToken:r=t,originChainId:n,destinationChainId:s,amount:o}=e;if(!t||n==null||s==null||!o)throw new Error("acrossSuggestedFees requires token, originChainId, destinationChainId, amount");let i=new URLSearchParams({token:t,destinationToken:r,originChainId:String(n),destinationChainId:String(s),amount:String(o)}),a=(A.baseUrl||process.env.ACROSS_API_URL||J0).replace(/\/$/,"");return Z(`${a}/suggested-fees?${i}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3})}async function Jx(e={}){try{let A=await O0({amount:"1000000000000000",token:"ETH",fromChain:"ethereum",toChain:"arbitrum",slippage:.5},e);return{ok:!0,estimatedRecieved:A.estimatedRecieved||A.estimatedReceived}}catch(A){return{ok:!1,error:String(A.message||A).slice(0,160)}}}async function O0(e={},A={}){let{amount:t,token:r="ETH",fromChain:n="ethereum",toChain:s="arbitrum"}=e;if(!t)throw new Error("hopQuote requires amount");let o=e.slippage==null?void 0:Math.round(Number(e.slippage)*100),i=GA({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:n!==s,requestedCapBps:e.maxSlippageBps??e.slippageBps??o});if(!i.executable)throw new Error(`hop: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let a=new URLSearchParams({amount:String(t),token:r,fromChain:n,toChain:s,slippage:String(i.selectedBps/100)}),c=(A.baseUrl||process.env.HOP_API_URL||H0).replace(/\/$/,""),g=await Z(`${c}/quote?${a}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3}),u=g?.estimatedRecieved||g?.estimatedReceived;return u?Ie(g,{chainId:Number(e.originChainId||e.chainId||Yx[n]||0),venue:g?.tx?.to||"hop",amountOut:u,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:n!==s,requestedCapBps:e.maxSlippageBps??e.slippageBps??o}):{...g,autoSlippagePolicy:i}}async function Hx(e={}){try{let A=await kl({user:st,originChainId:1,destinationChainId:8453,originCurrency:"0x0000000000000000000000000000000000000000",destinationCurrency:"0x0000000000000000000000000000000000000000",amount:"1000000000000000",tradeType:"EXACT_INPUT"},e);return{ok:!0,hasSteps:Array.isArray(A.steps),stepCount:A.steps?.length||0}}catch(A){return{ok:!1,error:String(A.message||A).slice(0,160)}}}async function kl(e={},A={}){let{user:t=st,originChainId:r,destinationChainId:n,originCurrency:s="0x0000000000000000000000000000000000000000",destinationCurrency:o="0x0000000000000000000000000000000000000000",amount:i,tradeType:a="EXACT_INPUT"}=e;if(r==null||n==null||!i)throw new Error("relayQuote requires originChainId, destinationChainId, amount");let c=GA({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!c.executable)throw new Error(`relay: route requires ${c.requiredBps} bps above cap ${c.capBps}`);let g=(A.baseUrl||process.env.RELAY_API_URL||V0).replace(/\/$/,""),u=await Z(`${g}/quote`,{method:"POST",body:{user:t,originChainId:Number(r),destinationChainId:Number(n),originCurrency:s,destinationCurrency:o,amount:String(i),tradeType:a,slippageTolerance:String(c.selectedBps)},fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??2e4}),l=u?.details?.currencyOut?.amount;return!l||!/^\d+$/.test(String(l))?{...u,autoSlippagePolicy:c}:Ie(u,{chainId:Number(r),venue:u?.steps?.[0]?.items?.[0]?.data?.to||"relay",amountOut:l,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(r)!==Number(n),requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function Vx(e={},A={}){let t=await kl(e,A),r=Number(e.originChainId),n=(t.steps||[]).flatMap(i=>(i.items||[]).filter(a=>a?.data?.to&&a?.data?.data).map(a=>({stepId:i.id,...a.data})));if(!n.length)throw new Error("relay: quote returned no executable transaction items");let s=String(t?.autoSlippage?.venue||"").toLowerCase();if(n.some(i=>String(i.to).toLowerCase()!==s))throw new Error("relay: route includes a separate approval/transaction that is not yet safely bound");let o=n.map(i=>({chainId:r,from:i.from||e.user,to:i.to,data:i.data,value:i.value??"0x0",...i.gasLimit!=null||i.gas!=null?{gasLimit:i.gasLimit??i.gas}:{},slippageGuard:iA(t.autoSlippage,{chainId:r,venue:i.to,data:i.data})}));return ge({provider:"relay",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,quote:t,autoSlippage:t.autoSlippage,transactions:o},{provider:"relay",kind:"relay-tx"})}var J0,H0,V0,Yx,mi=se(()=>{wA();JA();ri();aA();J0="https://across.to/api",H0="https://api.hop.exchange/v1",V0="https://api.relay.link",Yx={ethereum:1,optimism:10,bsc:56,polygon:137,arbitrum:42161,avalanche:43114,base:8453}});import{realpathSync as sp}from"node:fs";import{fileURLToPath as i2}from"node:url";var As=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),H=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),v=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"}),fp=/^0x[0-9a-fA-F]{40}$/;function pp(e={}){let A=[],t=[];if(!e||typeof e!="object")return{ok:!1,errors:["definition must be an object"],warnings:t};if((!Number.isInteger(e.chainId)||e.chainId<=0)&&A.push("chainId must be a positive integer"),(typeof e.key!="string"||!/^[a-z][a-z0-9-]*$/.test(e.key||""))&&A.push('key must be a lowercase slug (e.g. "base")'),(typeof e.name!="string"||!e.name.trim())&&A.push("name is required"),!Array.isArray(e.rpcEnv)||e.rpcEnv.length===0)A.push("rpcEnv must list at least one environment variable name");else for(let n of e.rpcEnv)(typeof n!="string"||!/^[A-Z][A-Z0-9_]*$/.test(n))&&A.push(`rpcEnv entry "${n}" should be an UPPER_SNAKE env var name`);if(e.nativeCurrency){let n=e.nativeCurrency;(typeof n.symbol!="string"||!n.symbol)&&A.push("nativeCurrency.symbol is required when nativeCurrency is set"),Number.isInteger(n.decimals)||A.push("nativeCurrency.decimals must be an integer")}for(let[n,s]of(e.venues||[]).entries()){let o=`venues[${n}]`;if(!s||typeof s!="object"){A.push(`${o} must be an object`);continue}fp.test(s.address||"")||A.push(`${o}.address is not a valid 20-byte address`),/^0x0{40}$/.test(s.address||"")&&A.push(`${o}.address is the zero address -- placeholder left in place?`),s.kind||A.push(`${o}.kind is required (router|quoter|factory|...)`),s.verified?(s.verified.method||A.push(`${o}.verified.method is required`),s.verified.source||A.push(`${o}.verified.source is required`),s.verified.date||t.push(`${o}.verified.date missing -- add one so staleness is visible`)):A.push(`${o} must record verification: { verified: { method, source, date } }. An unverified venue stays blocked.`)}let r=e.capabilities||{};for(let n of Object.keys(r))As.includes(n)?typeof r[n]!="function"&&A.push(`capability "${n}" must be a function`):A.push(`unknown capability "${n}"`);return Object.keys(r).length===0&&t.push("scanner implements no capabilities -- it can only be registered, not used"),r.prepareUnsignedTx&&!r.quote&&t.push("prepareUnsignedTx without quote: no priced expectation to validate the built tx against"),r.prepareUnsignedTx&&!r.sellSimulation&&t.push("prepareUnsignedTx without sellSimulation: cannot prove an asset is exitable before buying"),{ok:A.length===0,errors:A,warnings:t}}function wp(e){let{ok:A,errors:t,warnings:r}=pp(e);if(!A)throw new Error(`invalid scanner for ${e?.key??"<unknown>"}:
|
|
48
|
-
- ${t.join(`
|
|
49
|
-
- `)}`);let n=e.capabilities||{},s=As.filter(i=>typeof n[i]=="function"),o={key:e.key,chainId:e.chainId,name:e.name,rpcEnv:[...e.rpcEnv],nativeCurrency:e.nativeCurrency?{...e.nativeCurrency}:null,wrappedNative:e.wrappedNative||null,explorer:e.explorer||null,venues:(e.venues||[]).map(i=>({...i})),warnings:r,capabilities(){return{chainId:e.chainId,key:e.key,supported:[...s],unsupported:As.filter(i=>!s.includes(i))}},supports(i){return s.includes(i)}};for(let i of As)s.includes(i)?o[i]=async(...a)=>n[i](...a,{scanner:o}):o[i]=async()=>{throw new Error(`${e.key} (chain ${e.chainId}) does not implement "${i}". Supported: ${s.join(", ")||"none"}. An unimplemented capability is absent, not assumed -- implement it or treat this chain as fail-closed for that operation.`)};return Object.freeze(o)}var Ni=new Map;function Yl(e){let A=wp(e);return Ni.set(A.chainId,A),A}function ts(e){return Ni.get(Number(e))||null}function Hr(){return[...Ni.values()]}var lA=Object.freeze({FULL:"FULL",NO_GAS:"NO_GAS",FAILED:"FAILED"}),Jl={1:"coingecko:ethereum",10:"coingecko:ethereum",56:"coingecko:binancecoin",137:"coingecko:matic-network",8453:"coingecko:ethereum",42161:"coingecko:ethereum",43114:"coingecko:avalanche-2",999:"coingecko:ethereum"},Vr=e=>{try{return e==null||e===""?null:BigInt(String(e).split(".")[0])}catch{return null}};function Gl(e){let{source:A,amountOut:t,minOut:r=null,gasUsd:n=null,feeUsd:s=null,oracleFeeBps:o=0,estimatedGas:i=null,liquidityUsd:a=null,error:c=null,executionReady:g=!1,meta:u={}}=e||{};if(c||t==null)return{source:A,quality:lA.FAILED,amountOut:null,error:c||"no amountOut returned"};let l=Vr(t);if(l==null||l<=0n)return{source:A,quality:lA.FAILED,amountOut:null,error:"non-positive amountOut"};let E=Number(o);return{source:A,quality:n==null?lA.NO_GAS:lA.FULL,amountOut:l.toString(),minOut:Vr(r)?.toString()??null,gasUsd:n,feeUsd:s,oracleFeeBps:Number.isFinite(E)&&E>0?Math.floor(E):0,estimatedGas:i==null?null:String(i),liquidityUsd:a==null?null:Number(a),executionReady:g,meta:u}}async function Hl(e,A,{divisor:t=1000n}={}){let r=Vr(A);if(r==null||r<=0n)return null;let n=r/t>0n?r/t:1n;if(n>=r)return null;let s,o;try{[s,o]=await Promise.all([e(n),e(r)])}catch{return null}let i=Vr(s),a=Vr(o);if(i==null||a==null||i<=0n)return null;let c=Number(i)/Number(n),g=Number(a)/Number(r);return!Number.isFinite(c)||!Number.isFinite(g)||c<=0?null:{impactPct:(1-g/c)*100,probeAmountIn:n.toString(),probeAmountOut:i.toString(),fullAmountOut:a.toString()}}function Vl(e,A,{maxImpactPct:t=25}={}){let r=[],n=[],s=(e.routes??[]).filter(i=>{let a=A?.[i.source];return a?a.impactPct>t?(r.push({source:i.source,impactPct:Number(a.impactPct.toFixed(2)),reason:`price impact ${a.impactPct.toFixed(1)}% exceeds ${t}% ceiling -- the venue cannot absorb this size near the quoted price`}),!1):!0:(n.push(i.source),!0)}),o=[...e.warnings??[]];return r.length&&o.push(`dropped ${r.length} route(s) on price impact: `+r.map(i=>`${i.source} (${i.impactPct}%)`).join(", ")),n.length&&o.push(`price impact NOT measured for: ${n.join(", ")}. These are unproven against thin liquidity, not proven safe.`),{...e,routes:s,best:s[0]??null,impactRejected:r,impactUnmeasured:n,warnings:o}}function Ui(e,{destPriceUsd:A=null,destDecimals:t=null,liquidityFirst:r=!0,liquidityBandBps:n=50,gasPriceWei:s=null,nativePriceUsd:o=null}={}){let i=e.filter(U=>U.quality!==lA.FAILED),a=e.filter(U=>U.quality===lA.FAILED),c=A!=null&&A>0&&t!=null&&t>=0,g=Number(s),u=Number(o),l=Number.isFinite(g)&&g>0&&Number.isFinite(u)&&u>0,E=i.map(U=>{let W=BigInt(U.amountOut),Ue=0n,pe=!1,ae=!1,qe=BigInt(U.oracleFeeBps??0),yA=qe>0n?W*qe/10000n:0n;if(c){let es=U.gasUsd,Si=Number(U.meta?.gasUnits??U.estimatedGas);if(es==null&&l&&Number.isFinite(Si)&&Si>0){let ct=Si*g/1e18*u;Number.isFinite(ct)&&ct>=0&&(es=ct,ae=!0)}let vl=(es??0)+(U.feeUsd??0);if(vl>0){let ct=vl/A*10**t;Number.isFinite(ct)&&ct>=0&&(Ue=BigInt(Math.floor(ct)),pe=!0)}else es===0&&(pe=!0)}let Jt=Ue+yA,Ht=W>Jt?W-Jt:0n;return{...U,grossOut:W.toString(),netOut:Ht.toString(),costInDest:Ue.toString(),oracleFeeInDest:yA.toString(),costAccounted:pe,gasEstimated:ae}}),Q=Number(n)>0?Number(n):0,h=E.reduce((U,W)=>BigInt(W.netOut)>U?BigInt(W.netOut):U,0n),B=U=>h>0n?Number((h-BigInt(U))*10000n/h):0,I=[],C=E.slice().sort((U,W)=>BigInt(W.netOut)>BigInt(U.netOut)?1:-1)[0]??null;E.sort((U,W)=>{let Ue=B(U.netOut)<=Q?0:1,pe=B(W.netOut)<=Q?0:1;if(r&&Q>0&&Ue!==pe)return Ue-pe;if(r&&Q>0){let ae=U.liquidityUsd??-1,qe=W.liquidityUsd??-1;if(ae!==qe)return qe-ae}return BigInt(W.netOut)>BigInt(U.netOut)?1:-1}),r&&Q>0&&C&&E[0]&&E[0].source!==C.source&&I.push(`liquidity-first: chose ${E[0].source} (liquidity $${E[0].liquidityUsd??"unknown"}) over best-price ${C.source} within ${Q} bps`);let p=E.filter(U=>!U.costAccounted).map(U=>U.source);c?p.length&&I.push(`gas not reported by: ${p.join(", ")}. These are ranked on gross output and may be overstated relative to gas-measured routes.`):I.push("destination price/decimals unavailable: ranked on GROSS output. Gas is not included, so a cheap-looking route may cost more to execute.");let w=E[0];if(c&&w&&w.costAccounted===!1){let U=E.find(W=>W.costAccounted&&B(W.netOut)<=Q);U&&I.push(`winner ${w.source} has UNMEASURED gas; gas-measured ${U.source} is within ${Q} bps and may net more once ${w.source}'s real gas is paid \u2014 prefer it if unsure.`)}let R=E.filter(U=>U.gasEstimated).map(U=>U.source);R.length&&I.push(`gas ESTIMATED (from gas units x current gas price, not measured) for: ${R.join(", ")}. Net includes this estimate so the ranking is gas-inclusive, but the on-chain gas may differ.`);let x=null,O=null;if(E.length>=2&&E[0].costAccounted&&E[1].costAccounted){let U=BigInt(E[0].netOut),W=BigInt(E[1].netOut);W>0n&&(x=Number((U-W)*10000n/W),O=`${E[0].source} vs ${E[1].source}`)}return{best:E[0]??null,routes:E,failed:a,improvementBps:x,spreadBasis:O,rankedOn:c?"net-of-cost":"gross",warnings:I}}async function rs(e,{timeoutMs:A=12e3}={}){let t=(n,s)=>Promise.race([n,new Promise((o,i)=>setTimeout(()=>i(new Error(`${s}: timeout`)),A))]);return(await Promise.allSettled(e.map(n=>t(Promise.resolve().then(n.run),n.source)))).map((n,s)=>{let o=e[s].source;return n.status==="rejected"?Gl({source:o,error:String(n.reason?.message||n.reason)}):Gl({source:o,...n.value})})}oi();Bl();hl();wA();JA();Il();aA();var GT="https://api.1inch.dev/swap/v6.0";function e0(e={}){return ai({provider:"oneinch",defaultUrl:GT,hosts:["api.1inch.dev"],url:e.baseUrl||process.env.ONEINCH_API_URL})}function JT(e={}){return e0(e).baseUrl}function A0(e={}){return e.apiKey||process.env.ONEINCH_API_KEY||process.env.ONE_INCH_API_KEY||""}function HT(e={}){let A=A0(e);return ci({accept:"application/json"},{Authorization:A?`Bearer ${A}`:""},e0(e).trusted)}async function t0(e={},A={}){if(!A0(A))throw new Error("ONEINCH_API_KEY required for 1inch");let t=Number(e.chainId??1),{src:r,dst:n,amount:s}=e;if(!r||!n||!s)throw new Error("oneinchQuote requires src, dst, amount");let o=new URLSearchParams({src:r,dst:n,amount:String(s)}),i=await Z(`${JT(A)}/${t}/quote?${o}`,{headers:HT(A),fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs??15e3});return i?.dstAmount?Ie(i,{chainId:t,venue:"1inch-quote",amountOut:i.dstAmount,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):i}pl();Ci();Dl();wA();var Lx="https://coins.llama.fi",Tx="https://api.llama.fi";function xx(e={}){return(e.baseUrl||process.env.DEFILLAMA_COINS_URL||Lx).replace(/\/$/,"")}function vx(e={}){return(e.baseUrl||process.env.DEFILLAMA_API_URL||Tx).replace(/\/$/,"")}async function pi(e,A={}){if(!Array.isArray(e)||!e.length)throw new Error("llamaPrices requires coins[]");let t=e.map(encodeURIComponent).join(",");return Z(`${xx(A)}/prices/current/${t}`,{fetchImpl:A.fetchImpl,timeoutMs:A.timeoutMs})}async function G0(e={}){return Z(`${vx(e)}/protocols`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4})}var mA=e=>{let A=Number(e);return Number.isFinite(A)?A:null};function yi(e){if(!Array.isArray(e))return null;let A=0,t=!1;for(let r of e){let n=mA(r?.amountUSD);n!=null&&(A+=n,t=!0)}return t?A:null}async function W0(e,A={}){let t=Jl[Number(e)];if(!t)return null;try{let r=await pi([t],A);return mA(r?.coins?.[t]?.price)}catch{return null}}var it=e=>String(e??"").toLowerCase().replace(/[^a-z0-9]/g,""),P0=Object.freeze({across:["across"],relay:["relaychain","relay"],lifi:["jumper-(li.fi-powered)","lifi"],stargate:["stargate-v2","stargate-v1","stargate"],hop:["hop-protocol","hop"],debridge:["debridge"],synapse:["synapse"],connext:["connext"],cbridge:["celer-bridge","celer-cbridge","cbridge"],celer:["celer-bridge","celer-cbridge","cbridge"],squid:["squid"],symbiosis:["symbiosis"],wormhole:["wormhole"],mayan:["mayan"],allbridge:["allbridge"],thorchain:["thorchain"]});async function qx(e={}){try{let A=await G0({...e,baseUrl:e.defillamaApiBaseUrl,timeoutMs:e.defillamaTimeoutMs??Math.min(Number(e.timeoutMs??5e3),5e3)});return Array.isArray(A)?A:[]}catch{return[]}}function Ox(e,A={}){let t=it(A.tool||A.provider||A.bridge||A.protocol),r=[];return e==="lifi"&&t&&t!=="lifi"&&r.push(...P0[t]||[t]),r.push(...P0[it(e)]||[e]),r}function Px(e,A,t={}){let r=Array.isArray(e)?e:[],n=Ox(A,t).map(it).filter(Boolean);for(let s of n){let o=r.find(a=>it(a?.slug)===s||it(a?.name)===s),i=mA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}for(let s of n){let o=r.find(a=>{let c=it(a?.category);return!c.includes("bridge")&&!c.includes("crosschain")?!1:it(a?.slug).includes(s)||it(a?.name).includes(s)}),i=mA(o?.tvl);if(i!=null)return{liquidityUsd:i,protocol:o?.name??o?.slug??s}}return null}function Rl({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n,slippageBps:s,decimalsIn:o,decimalsOut:i,nativePriceUsd:a=null,destDecimalsPromise:c=null,opts:g={}}){let u=[];return u.push({source:"lifi",run:async()=>{let l=await On({fromChain:e,toChain:e,fromToken:A,toToken:t,fromAmount:r},g),E=l?.estimate??l?.[0]?.estimate;return{amountOut:E?.toAmount,minOut:E?.toAmountMin,gasUsd:yi(E?.gasCosts),feeUsd:yi(E?.feeCosts),oracleFeeBps:l?.oracleFee?.applies?l.oracleFee.bps:0,meta:{tool:l?.tool??l?.toolDetails?.name,oracleFee:l?.oracleFee??null}}}}),o!=null&&u.push({source:"paraswap",run:async()=>{let l=i??(await Promise.resolve(c))?.decimals;if(l==null)throw new Error("paraswap needs destination decimals; none supplied or resolvable");let E=await ii({chainId:e,srcToken:A,destToken:t,amount:r,srcDecimals:o,destDecimals:l},g),Q=E?.priceRoute;return{amountOut:Q?.destAmount,gasUsd:mA(Q?.gasCostUSD),oracleFeeBps:E?.oracleFee?.applies?E.oracleFee.bps:0,meta:{bestRoute:Q?.bestRoute?.[0]?.swaps?.[0]?.swapExchanges?.[0]?.exchange,oracleFee:E?.oracleFee??null}}}}),process.env.ZEROX_API_KEY&&u.push({source:"0x",run:async()=>{let l=await li({chainId:e,sellToken:A,buyToken:t,sellAmount:r,taker:n},g),E=null,Q=l?.totalNetworkFee,h=await Promise.resolve(a);return Q!=null&&h&&(E=Number(Q)/1e18*h),{amountOut:l?.buyAmount,minOut:l?.minBuyAmount,gasUsd:E,meta:{source:l?.route?.fills?.[0]?.source}}}}),process.env.ONEINCH_API_KEY&&u.push({source:"1inch",run:async()=>{let l=await t0({chainId:e,src:A,dst:t,amount:r},g),E=null;return l?.gas!=null&&a&&(E=null),{amountOut:l?.dstAmount,gasUsd:E,meta:{gasUnits:l?.gas}}}}),u.push({source:"cow",run:async()=>{let l=await Wn({chainId:e,sellToken:A,buyToken:t,sellAmountBeforeFee:String(r),from:n},g),E=l?.quote??l,Q=E?.feeAmount;return{amountOut:E?.buyAmount,gasUsd:0,meta:{intent:!0,feeAmountInSellToken:Q,settlement:"solver-executed"}}}}),Ne[Number(e)]&&u.push({source:"uniswap-v3",run:async()=>{let l=await Kn({chainId:e,tokenIn:A,tokenOut:t,amountIn:r},g);return{amountOut:l?.amountOut,minOut:l?.minOut??l?.amountOutMinimum??null,gasUsd:null,liquidityUsd:l?.liquidityUsd??null,meta:{onchain:!0,fee:l?.fee,gasUnits:l?.gasEstimate,quoter:l?.quoter}}}}),HA[Number(e)]&&u.push({source:"uniswap-v4",run:async()=>{let l=await fi({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,recipient:n,slippageBps:s},g);return{amountOut:l?.amountOut,minOut:l?.minOut??l?.amountOutMinimum??null,gasUsd:null,liquidityUsd:l?.liquidityUsd??null,meta:{onchain:!0,venue:"uniswap-v4",fee:l?.fee,tickSpacing:l?.tickSpacing,poolId:l?.poolId,hooks:l?.hooks,gasUnits:l?.gasEstimate,quoter:l?.quoter,poolManager:l?.poolManager,prepareReady:l?.prepareReady===!0,executionReady:!1}}}}),u}function _0({fromChainId:e,toChainId:A,tokenIn:t,tokenOut:r,amountIn:n,taker:s,opts:o={}}){let i=[],a=null,c=async(g,u={})=>(a||=qx(o),Px(await a,g,u));return i.push({source:"lifi",run:async()=>{let g=await On({fromChain:e,toChain:A,fromToken:t,toToken:r,fromAmount:n},o),u=g?.estimate??g?.[0]?.estimate,l={tool:g?.tool??g?.toolDetails?.name,durationSeconds:mA(u?.executionDuration)},E=await c("lifi",l);return{amountOut:u?.toAmount,minOut:u?.toAmountMin,gasUsd:yi(u?.gasCosts),feeUsd:yi(u?.feeCosts),oracleFeeBps:g?.oracleFee?.applies?g.oracleFee.bps:0,liquidityUsd:E?.liquidityUsd??null,meta:{...l,liquidityProtocol:E?.protocol,oracleFee:g?.oracleFee??null}}}}),i.push({source:"relay",run:async()=>{let{relayQuote:g}=await Promise.resolve().then(()=>(mi(),wi)),l=(await g({user:s,originChainId:e,destinationChainId:A,originCurrency:t,destinationCurrency:r,amount:String(n)},o))?.details,E={durationSeconds:mA(l?.timeEstimate),rate:l?.rate},Q=await c("relay",E);return{amountOut:l?.currencyOut?.amount,minOut:l?.currencyOut?.minimumAmount,gasUsd:mA(l?.totalImpact?.usd)!=null?Math.abs(mA(l.totalImpact.usd)):null,liquidityUsd:Q?.liquidityUsd??null,meta:{...E,liquidityProtocol:Q?.protocol}}}}),i.push({source:"across",run:async()=>{let{acrossSuggestedFees:g}=await Promise.resolve().then(()=>(mi(),wi)),u=await g({token:t,destinationToken:r,originChainId:e,destinationChainId:A,amount:String(n)},o),l=u?.totalRelayFee?.total,E=null;if(l!=null)try{let h=BigInt(String(n))-BigInt(String(l));h>0n&&(E=h.toString())}catch{}let Q=await c("across");return{amountOut:E,gasUsd:null,liquidityUsd:Q?.liquidityUsd??null,meta:{derivedFromFees:!0,durationSeconds:mA(u?.estimatedFillTimeSec),limits:u?.limits?{min:u.limits.minDeposit,max:u.limits.maxDeposit}:void 0,liquidityProtocol:Q?.protocol}}}}),i}si();vt();var Wx={1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax"};async function K0(e,A,t){let r=Wx[Number(e)];if(!r)return{priceUsd:null,decimals:null};let n=`${r}:${A}`;try{let o=(await pi([n],t))?.coins?.[n],i=Number(o?.price),a=Number(o?.decimals);return{priceUsd:Number.isFinite(i)?i:null,decimals:Number.isFinite(a)?a:null}}catch{return{priceUsd:null,decimals:null}}}async function bi(e,A={}){let{chainId:t,tokenIn:r,tokenOut:n,amountIn:s}=e;if(t==null||!r||!n||s==null)throw new Error("bestSwapRoute requires chainId, tokenIn, tokenOut, amountIn");let o=W0(t,A),i=K0(t,n,A),a=p0(t,A).catch(()=>null),c=Rl({...e,nativePriceUsd:o,decimalsOut:e.decimalsOut,destDecimalsPromise:i,opts:A}),[g,u,l]=await Promise.all([rs(c,{timeoutMs:A.timeoutMs??12e3}),i,a]);o.catch(()=>{});let E=await o.then(B=>B,()=>null),Q=Ui(g,{destPriceUsd:u.priceUsd,destDecimals:e.decimalsOut??u.decimals,liquidityBandBps:A.liquidityBandBps??50,gasPriceWei:l,nativePriceUsd:E}),h=A.maxImpactPct===void 0?25:A.maxImpactPct;if(h!=null&&Q.best){let B=Q.best.source,C=await Hl(async p=>{let w=Rl({...e,amountIn:p.toString(),nativePriceUsd:o,decimalsOut:e.decimalsOut,destDecimalsPromise:i,opts:A}).filter(x=>x.source===B);return w.length?(await rs(w,{timeoutMs:A.timeoutMs??12e3}))?.[0]?.amountOut??null:null},s);if(C){let p=Vl(Q,{[B]:C},{maxImpactPct:h});return{kind:"swap",chainId:t,tokenIn:r,tokenOut:n,amountIn:String(s),...p,sourcesTried:c.length,sourcesAnswered:g.filter(w=>w.quality!==lA.FAILED).length,note:Sl(p,c.length),priceImpact:{[B]:Number(C.impactPct.toFixed(2))}}}}return{kind:"swap",chainId:t,tokenIn:r,tokenOut:n,amountIn:String(s),...Q,sourcesTried:c.length,sourcesAnswered:g.filter(B=>B.quality!==lA.FAILED).length,note:Sl(Q,c.length)}}async function Di(e,A={}){let{fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:o}=e;if(t==null||r==null||!n||!s||o==null)throw new Error("bestBridgeRoute requires fromChainId, toChainId, tokenIn, tokenOut, amountIn");if(Number(t)===Number(r))throw new Error("bestBridgeRoute is for cross-chain; use bestSwapRoute for same-chain");let i=K0(r,s,A),a=_0({...e,opts:A}),[c,g]=await Promise.all([rs(a,{timeoutMs:A.timeoutMs??15e3}),i]),u=Ui(c,{destPriceUsd:g.priceUsd,destDecimals:e.decimalsOut??g.decimals,liquidityBandBps:A.liquidityBandBps??50}),l=u.routes.map(E=>({source:E.source,seconds:E.meta?.durationSeconds??null})).filter(E=>E.seconds!=null);return{kind:"bridge",fromChainId:t,toChainId:r,tokenIn:n,tokenOut:s,amountIn:String(o),...u,durations:l,sourcesTried:a.length,sourcesAnswered:c.filter(E=>E.quality!==lA.FAILED).length,note:Sl(u,a.length)}}function _x(e){let A=e?.meta?.oracleFee;return A?.applies?` \xB7 ${Yf(A)}`:""}function Sl(e,A){if(!e.best)return"no source returned a usable route";let t=e.routes.length,r=_x(e.best);if(t===1)return`only 1 of ${A} sources answered, so this is the ONLY route, not a proven best one. Treat it as unbenchmarked.`+r;if(e.improvementBps!=null){let n=e.improvementBps,s=n/100;if(n<.01)return`best of ${t} routes, ranked on ${e.rankedOn}: effectively tied with the runner-up (${e.spreadBasis}), inside quote noise. Re-quote before you size up.`+r;let o=s>=.01?`${s.toFixed(2)}%`:`${n.toFixed(2)}bps`;return`best of ${t} routes, ranked on ${e.rankedOn}: ${o} better than the runner-up (${e.spreadBasis})`+r}return`best of ${t} routes, ranked on ${e.rankedOn}. No spread quoted: the top routes report cost differently, so the margin is not comparable.`+r}aA();var at=Object.freeze({TRANSACTION:"unsigned-transaction",TYPED_DATA_ORDER:"typed-data-order"}),Kx=100,Fl={"uniswap-v3":async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n},s)=>{let{uniV3PrepareExactIn:o}=await Promise.resolve().then(()=>(Ci(),N0)),i=await o({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,recipient:n},s);return{artifactKind:at.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.amountOut??null,minOut:i.quote?.amountOutMinimum??null}},"uniswap-v4":async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n,slippageBps:s,fee:o,tickSpacing:i,hooks:a},c)=>{let{uniV4PrepareExactIn:g}=await Promise.resolve().then(()=>(Dl(),Y0)),u=await g({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,recipient:n,slippageBps:s,fee:o,tickSpacing:i,hooks:a},c);return{artifactKind:at.TRANSACTION,transaction:u.transaction,requiresApproval:u.requiresApproval,amountOut:u.quote?.amountOut??null,minOut:u.quote?.amountOutMinimum??null,prepareReady:!0,executionReady:!1}},lifi:async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n},s)=>{let{lifiPrepare:o}=await Promise.resolve().then(()=>(oi(),El)),i=await o({fromChain:e,toChain:e,fromToken:A,toToken:t,fromAmount:r,fromAddress:n},s);return{artifactKind:at.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.estimate?.toAmount??null,minOut:i.quote?.estimate?.toAmountMin??null}},paraswap:async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n,decimalsIn:s,decimalsOut:o},i)=>{let{paraswapPrepare:a}=await Promise.resolve().then(()=>(Bl(),Pf)),c=await a({chainId:e,srcToken:A,destToken:t,amount:r,srcDecimals:s,destDecimals:o,userAddress:n,side:"SELL"},i);return{artifactKind:at.TRANSACTION,transaction:c.transaction,requiresApproval:c.requiresApproval??null,amountOut:c.quote?.priceRoute?.destAmount??null,minOut:c.quote?.amountOutMinimum??null}},"0x":async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n},s)=>{let{zeroxPrepare:o}=await Promise.resolve().then(()=>(hl(),jf)),i=await o({chainId:e,sellToken:A,buyToken:t,sellAmount:r,taker:n},s);return{artifactKind:at.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.buyAmount??null,minOut:i.quote?.minBuyAmount??null}},cow:async({chainId:e,tokenIn:A,tokenOut:t,amountIn:r,taker:n},s)=>{let{cowPrepareOrder:o}=await Promise.resolve().then(()=>(pl(),E0)),i=await o({chainId:e,sellToken:A,buyToken:t,sellAmountBeforeFee:String(r),from:n},s);return{artifactKind:at.TYPED_DATA_ORDER,typedData:i.typedData,requiresApproval:{token:A,spender:i.vaultRelayer,amount:String(r),note:"CoW pulls funds via the vault relayer, not the settlement contract"},settlement:i.settlement,amountOut:i.quote?.quote?.buyAmount??null,minOut:null,submission:"sign the typed data, then submit the order to the CoW API"}}};var Zx=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(e=>e.toLowerCase())),zx=/^0x[0-9a-fA-F]{40}$/;async function Z0(e,A={}){let{taker:t}=e;if(!t)throw new Error("prepareBestRoute requires taker: a prepared transaction is built FOR an address, and the quote-only placeholder must never end up in one");if(!zx.test(t))throw new Error(`taker must be a valid 20-byte address, got "${t}"`);if(Zx.has(t.toLowerCase()))throw new Error(`taker "${t}" is a placeholder/burn address. It is valid for quoting but not for preparing -- that would build a transaction for an address nobody controls. Pass the real wallet that will sign.`);let r=await bi(e,A);if(!r.best){let B=r.impactRejected??[];return{ok:!1,reason:B.length?B[0].reason:"no source returned a usable route",priceImpactBlocked:B.length>0,impactRejected:B,comparison:r}}let n=e.source||r.best.source,s=r.routes.find(B=>B.source===n);if(!s)return{ok:!1,reason:`source "${n}" did not return a usable route`,comparison:r};let o=Fl[n];if(!o){let B=r.routes.find(I=>Fl[I.source]&&I.source!==n);return{ok:!1,reason:`${n} won the comparison but has no prepare path in this build. `+(B?`Next preparable route is ${B.source}; pass source:"${B.source}" to use it.`:"No route in this comparison can be prepared."),comparison:r,winner:n}}let i;try{i=await o(e,A)}catch(B){let I=typeof B?.body=="string"?B.body:B?.body?JSON.stringify(B.body):"",C=[String(B?.message||B),I].filter(Boolean).join(" :: "),p=/allowance/i.test(C),w=!p&&/not enough|insufficient|balance/i.test(C),R,x;p?(x="approval-required-first",R=`${n} will not build swap calldata until the token approval exists on-chain. Approve the spender first, then prepare again. Underlying: ${C}`):w?(x="taker-not-funded",R=`${n} refused to build the transaction: ${C}. This venue verifies the taker holds the input token. Quoting works for any address; preparing needs the real funded wallet.`):(x="provider-error",R=`${n} prepare failed: ${C}`);let O=r.routes.find(U=>Fl[U.source]&&U.source!==n);return{ok:!1,reason:R,failureKind:x,...O?{alternative:O.source}:{},comparison:r}}let a=e.driftToleranceBps??Kx,c=null,g=null;if(i.amountOut!=null&&s.grossOut!=null)try{let B=BigInt(s.grossOut),I=BigInt(i.amountOut);B>0n&&(c=Number((I-B)*10000n/B),c<-a&&(g=`route moved ${(c/100).toFixed(2)}% against you between the comparison and this prepare (tolerance ${(a/100).toFixed(2)}%). The ranking may no longer hold -- re-run the comparison before signing.`))}catch{}let u=r.routes.filter(B=>B.source!==n).map(B=>({source:B.source,netOut:B.netOut,gasUsd:B.gasUsd})),E=r.routes.map(B=>({source:B.source,liquidityUsd:B.liquidityUsd??null})).reduce((B,I)=>Math.max(B,I.liquidityUsd??0),0)||null,Q=s.liquidityUsd??null,h=Q!=null&&E>0?Math.round(Q/E*100):null;return ge({ok:!0,chosen:{source:n,wasWinner:n===r.best.source,netOut:s.netOut,grossOut:s.grossOut,gasUsd:s.gasUsd,liquidityUsd:s.liquidityUsd??null},liquidity:{chosenUsd:Q,maxUsd:E,sharePct:h},priceImpact:r.priceImpact??null,impactUnmeasured:r.impactUnmeasured??[],...i,unsigned:!0,signedBy:"user-wallet",destination:i.artifactKind===at.TRANSACTION?i.transaction?.to??null:i.settlement??null,driftBps:c,warnings:[...g?[g]:[],...r.warnings||[],...i.artifactKind===at.TYPED_DATA_ORDER?["This is an ORDER to sign, not a transaction to broadcast. Signing it authorizes a solver to settle on your behalf."]:[]],runnersUp:u,comparison:{rankedOn:r.rankedOn,sourcesAnswered:r.sourcesAnswered,sourcesTried:r.sourcesTried,improvementBps:r.improvementBps},note:"UNSIGNED. Verify the destination address and minOut against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."},{provider:"router",kind:"best-route"})}aA();var Xx=/^0x[0-9a-fA-F]{40}$/,$x=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(e=>e.toLowerCase())),jx=100,Nl={relay:async({fromChainId:e,toChainId:A,tokenIn:t,tokenOut:r,amountIn:n,taker:s},o)=>{let{relayPrepare:i}=await Promise.resolve().then(()=>(mi(),wi)),a=await i({user:s,originChainId:e,destinationChainId:A,originCurrency:t,destinationCurrency:r,amount:String(n)},o);return{transactions:a.transactions||[],amountOut:a.quote?.details?.currencyOut?.amount??null,minOut:a.quote?.details?.currencyOut?.minimumAmount??null,durationSeconds:a.quote?.details?.timeEstimate??null}},lifi:async({fromChainId:e,toChainId:A,tokenIn:t,tokenOut:r,amountIn:n,taker:s,isHolder:o},i)=>{let{lifiPrepare:a}=await Promise.resolve().then(()=>(oi(),El)),c=await a({fromChain:e,toChain:A,fromToken:t,toToken:r,fromAmount:n,fromAddress:s,isHolder:o,feeAction:"bridge"},i);return{transactions:c.transaction?[c.transaction]:[],requiresApproval:c.requiresApproval??null,amountOut:c.quote?.estimate?.toAmount??null,minOut:c.quote?.estimate?.toAmountMin??null,durationSeconds:c.quote?.estimate?.executionDuration??null}}};async function z0(e,A={}){let{taker:t,fromChainId:r,toChainId:n}=e;if(!t)throw new Error("prepareBestBridgeRoute requires taker: bridge transactions are built FOR an address, and the quote-only placeholder must never end up in one");if(!Xx.test(t))throw new Error(`taker must be a valid 20-byte address, got "${t}"`);if($x.has(t.toLowerCase()))throw new Error(`taker "${t}" is a placeholder/burn address. Bridging to it would send funds to an address nobody controls, on a chain where you cannot undo it.`);let s=await Di(e,A);if(!s.best)return{ok:!1,reason:"no source returned a usable bridge route",comparison:s};let o=e.source||s.best.source,i=s.routes.find(B=>B.source===o);if(!i)return{ok:!1,reason:`source "${o}" returned no usable route`,comparison:s};let a=Nl[o];if(!a){let B=s.routes.find(I=>Nl[I.source]&&I.source!==o);return{ok:!1,reason:`${o} won the comparison but has no bridge prepare path in this build. `+(B?`Next preparable route is ${B.source}; pass source:"${B.source}".`:"No route in this comparison can be prepared."),failureKind:"no-prepare-path",...B?{alternative:B.source}:{},winner:o,comparison:s}}let c;try{c=await a(e,A)}catch(B){let I=typeof B?.body=="string"?B.body:B?.body?JSON.stringify(B.body):"",C=[String(B?.message||B),I].filter(Boolean).join(" :: "),p=/allowance/i.test(C),w=!p&&/not enough|insufficient|balance/i.test(C),R=s.routes.find(x=>Nl[x.source]&&x.source!==o);return{ok:!1,reason:p?`${o} will not build calldata until the token approval exists on-chain. Approve first, then prepare again. Underlying: ${C}`:w?`${o} refused to build: ${C}. Quoting works for any address; preparing needs the real funded wallet on chain ${r}.`:`${o} bridge prepare failed: ${C}`,failureKind:p?"approval-required-first":w?"taker-not-funded":"provider-error",...R?{alternative:R.source}:{},comparison:s}}let g=c.transactions||[];if(!g.length)return{ok:!1,reason:`${o} returned no executable transaction for this route`,failureKind:"provider-error",comparison:s};let u=g.filter(B=>B.chainId!=null&&Number(B.chainId)!==Number(r));if(u.length)return{ok:!1,reason:`${o} returned a transaction for chain ${u[0].chainId} but the origin chain is ${r}. Refusing to hand over a mismatched artifact.`,failureKind:"chain-mismatch",comparison:s};let l=e.driftToleranceBps??jx,E=null,Q=null;if(c.amountOut!=null&&i.grossOut!=null)try{let B=BigInt(i.grossOut),I=BigInt(c.amountOut);B>0n&&(E=Number((I-B)*10000n/B),E<-l&&(Q=`route moved ${(E/100).toFixed(2)}% against you since the comparison (tolerance ${(l/100).toFixed(2)}%). Re-compare before signing.`))}catch{}let h=[...Q?[Q]:[],...s.warnings||[],`Bridging is NOT atomic: the origin transaction succeeding does not mean funds arrived on chain ${n}. Expect ~${c.durationSeconds!=null?`${c.durationSeconds}s`:"minutes"} before the destination credits, and do not re-send if it is pending.`];return g.length>1&&h.push(`This route needs ${g.length} transactions signed IN ORDER. Signing only the first leaves funds approved but not bridged.`),ge({ok:!0,chosen:{source:o,wasWinner:o===s.best.source,netOut:i.netOut,grossOut:i.grossOut,gasUsd:i.gasUsd},artifactKind:"unsigned-transaction-sequence",fromChainId:Number(r),toChainId:Number(n),transactionCount:g.length,transactions:g,requiresApproval:c.requiresApproval??null,minOut:c.minOut??null,durationSeconds:c.durationSeconds??null,destination:g[0]?.to??null,unsigned:!0,signedBy:"user-wallet",driftBps:E,warnings:h,runnersUp:s.routes.filter(B=>B.source!==o).map(B=>({source:B.source,netOut:B.netOut,gasUsd:B.gasUsd})),comparison:{rankedOn:s.rankedOn,sourcesAnswered:s.sourcesAnswered,sourcesTried:s.sourcesTried,improvementBps:s.improvementBps},note:`UNSIGNED. ${g.length} transaction(s) on chain ${r}, crediting chain ${n}. Verify every destination address before signing.`},{provider:"router",kind:"best-bridge"})}vt();Bi();vt();var Ml={getAmountsOut:"d06ca61f",swapExactTokensForTokens:"38ed1739",swapExactETHForTokens:"7ff36ab5"},ze=e=>BigInt(e).toString(16).padStart(64,"0"),zn=e=>e.slice(2).toLowerCase().padStart(64,"0");function e2(e,A){return`0x${Ml.getAmountsOut}`+ze(e)+ze(64)+ze(A.length)+A.map(zn).join("")}function A2(e){if(!e||e==="0x")return null;let A=e.slice(2);if(A.length<128)return null;let t=Number(BigInt(`0x${A.slice(64,128)}`));if(!Number.isFinite(t)||t<1||t>16)return null;let r=[];for(let n=0;n<t;n++){let s=128+n*64;if(A.length<s+64)return null;r.push(BigInt(`0x${A.slice(s,s+64)}`))}return r}function Ul(e,A="router"){return(e?.venues||[]).find(r=>r.kind===A)?.address??null}var Ll=100;function t2(e,A){let t=Number(A);if(!Number.isFinite(t)||t<0)throw new Error("slippageBps must be a non-negative number");if(t>Ll)throw new Error(`slippageBps ${t} exceeds the ${Ll} bps ceiling. Block and requote or split the order -- do not widen the guard to force a fill.`);return BigInt(e)*BigInt(1e4-Math.floor(t))/10000n}function X0(e){let{chainId:A,wrappedNative:t}=e;async function r(n,s,o,i){let a=await Ce(A,"eth_call",[{to:n,data:e2(s,o)},"latest"],i);return A2(a?.result??a)}return{async quote({tokenIn:n,tokenOut:s,amountIn:o,path:i},a={}){let c=Ul(a.scanner);if(!c)return{chainId:A,evidence:H.UNAVAILABLE,reason:"no verified router configured for this chain; quoting stays fail-closed rather than guessing a venue address"};let g=i||[n,s];if(g.some(l=>!/^0x[0-9a-fA-F]{40}$/.test(l||"")))throw new Error("quote requires valid 20-byte addresses");let u=await r(c,o,g,a);return u?{chainId:A,router:c,path:g,amountIn:String(o),amountOut:u[u.length-1].toString(),hops:g.length-1,evidence:H.LIVE,note:"exact-input quote at current reserves; not a guaranteed fill"}:{chainId:A,router:c,path:g,evidence:H.UNKNOWN,reason:"router returned no amounts -- no pool for this path, or the call reverted"}},async sellSimulation({token:n,amountIn:s,base:o},i={}){let a=Ul(i.scanner),c=o||t;if(c&&String(n).toLowerCase()===String(c).toLowerCase())return{chainId:A,token:n,verdict:v.UNKNOWN,evidence:H.UNAVAILABLE,reason:"token is the base asset for this chain, so there is nothing to round-trip against. Sellability must be judged against a different quote asset."};if(!a||!c)return{chainId:A,token:n,verdict:v.UNKNOWN,evidence:H.UNAVAILABLE,reason:a?"no wrappedNative configured for this chain, so no base asset to round-trip against":"no verified router configured for this chain"};let g=await r(a,s,[c,n],i);if(!g)return{chainId:A,token:n,verdict:v.FAIL,evidence:H.LIVE,leg:"buy",reason:"buy leg returned no amounts -- no route in"};let u=g[g.length-1];if(u===0n)return{chainId:A,token:n,verdict:v.FAIL,evidence:H.LIVE,leg:"buy",reason:"buy leg quotes zero output"};let l=await r(a,u,[n,c],i);if(!l)return{chainId:A,token:n,verdict:v.FAIL,evidence:H.LIVE,leg:"sell",bought:u.toString(),reason:"SELL LEG FAILED while the buy leg quoted fine. This is the honeypot signature: do not trade."};let E=l[l.length-1],Q=Number(E*10000n/BigInt(s)),h=v.PASS,B="round trip completes with expected fee/impact loss";return Q<5e3?(h=v.FAIL,B=`round trip returns only ${(Q/100).toFixed(2)}% -- punitive tax or no real liquidity`):Q<9e3&&(h=v.CAUTION,B=`round trip returns ${(Q/100).toFixed(2)}% -- transfer tax or thin liquidity at this size`),{chainId:A,token:n,base:c,router:a,verdict:h,reason:B,amountIn:String(s),bought:u.toString(),returned:E.toString(),retentionBps:Q,evidence:H.LIVE,note:"Quote-level round trip. It does not prove transfer hooks absent at execution time."}},async prepareUnsignedTx({tokenIn:n,tokenOut:s,amountIn:o,recipient:i,slippageBps:a=50,deadlineSeconds:c=900,path:g},u={}){let l=u.scanner,E=Ul(l);if(!E)throw new Error(`chain ${A} has no verified router; preparing a swap stays fail-closed. Add a venue with recorded provenance first (see docs/adding-a-chain.md).`);if(!/^0x[0-9a-fA-F]{40}$/.test(i||""))throw new Error("prepareUnsignedTx requires a valid recipient address");let Q=g||[n,s],h=await this.quote({tokenIn:n,tokenOut:s,amountIn:o,path:Q},u);if(h.evidence!==H.LIVE)throw new Error(`cannot prepare without a live quote (${h.evidence}: ${h.reason??"no reason given"})`);let B=t2(h.amountOut,a);if(B<=0n)throw new Error("computed minOut is zero -- refusing to prepare");let I=BigInt(Math.floor(Date.now()/1e3)+Number(c)),C=t&&Q[0].toLowerCase()===t.toLowerCase()&&u.useNative,p=C?`0x${Ml.swapExactETHForTokens}`+ze(B)+ze(128)+zn(i)+ze(I)+ze(Q.length)+Q.map(zn).join(""):`0x${Ml.swapExactTokensForTokens}`+ze(o)+ze(B)+ze(160)+zn(i)+ze(I)+ze(Q.length)+Q.map(zn).join("");return{unsigned:!0,signedBy:"user-wallet",chainId:A,tx:{to:E,data:p,value:C?`0x${BigInt(o).toString(16)}`:"0x0"},guard:{quotedOut:h.amountOut,minOut:B.toString(),slippageBps:a,maxSlippageBps:Ll,deadline:I.toString()},requires:C?[]:[{step:"approve",token:Q[0],spender:E,amount:String(o)}],note:"UNSIGNED. Re-verify the guard against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."}}}}vt();var r2=[100,500,3e3,1e4],$0={quoteExactInputSingle:"c6a5026a",exactInputSingle:"04e45aaf"},Gt=e=>BigInt(e).toString(16).padStart(64,"0"),Xn=e=>e.slice(2).toLowerCase().padStart(64,"0"),j0=/^0x[0-9a-fA-F]{40}$/,xl=100;function n2(e,A){let t=Number(A);if(!Number.isFinite(t)||t<0)throw new Error("slippageBps must be a non-negative number");if(t>xl)throw new Error(`slippageBps ${t} exceeds the ${xl} bps ceiling. Block and requote or split the order -- do not widen the guard to force a fill.`);return BigInt(e)*BigInt(1e4-Math.floor(t))/10000n}function Tl(e,A){return(e?.venues||[]).find(t=>t.kind===A)?.address??null}function ep(e){let{chainId:A,wrappedNative:t}=e;async function r({quoter:s,tokenIn:o,tokenOut:i,amountIn:a,fee:c},g){let u=`0x${$0.quoteExactInputSingle}`+Xn(o)+Xn(i)+Gt(a)+Gt(c)+Gt(0),l=await Ce(A,"eth_call",[{to:s,data:u},"latest"],g).catch(()=>null),E=l?.result??l;if(!E||E==="0x"||E.length<66)return null;let Q=BigInt(`0x${E.slice(2,66)}`);return Q>0n?Q:null}async function n({quoter:s,tokenIn:o,tokenOut:i,amountIn:a},c){let g=[],u=null;for(let l of r2){let E=await r({quoter:s,tokenIn:o,tokenOut:i,amountIn:a,fee:l},c);g.push({fee:l,amountOut:E?E.toString():null}),E&&(!u||E>u.amountOut)&&(u={fee:l,amountOut:E})}return{best:u,tried:g}}return{async quote({tokenIn:s,tokenOut:o,amountIn:i},a={}){let c=Tl(a.scanner,"quoter");if(!c)return{chainId:A,evidence:H.UNAVAILABLE,reason:"no verified quoter configured for this chain; quoting stays fail-closed rather than guessing a venue address"};for(let l of[s,o])if(!j0.test(l||""))throw new Error("quote requires valid 20-byte addresses");let{best:g,tried:u}=await n({quoter:c,tokenIn:s,tokenOut:o,amountIn:i},a);return g?{chainId:A,venue:"uniswap-v3",quoter:c,tokenIn:s,tokenOut:o,amountIn:String(i),amountOut:g.amountOut.toString(),fee:g.fee,useNative:!!t&&String(s).toLowerCase()===String(t).toLowerCase(),triedFeeTiers:u,evidence:H.LIVE,note:"exact-input single-hop quote at current tick; not a guaranteed fill"}:{chainId:A,quoter:c,tokenIn:s,tokenOut:o,triedFeeTiers:u,evidence:H.UNKNOWN,reason:"no fee tier returned a quote -- no V3 pool for this pair, or no liquidity"}},async sellSimulation({token:s,amountIn:o,base:i},a={}){let c=Tl(a.scanner,"quoter"),g=i||t;if(g&&String(s).toLowerCase()===String(g).toLowerCase())return{chainId:A,token:s,verdict:v.UNKNOWN,evidence:H.UNAVAILABLE,reason:"token is the base asset for this chain, so there is nothing to round-trip against. Sellability must be judged against a different quote asset."};if(!c||!g)return{chainId:A,token:s,verdict:v.UNKNOWN,evidence:H.UNAVAILABLE,reason:c?"no wrappedNative configured, so there is no base asset to round-trip against":"no verified quoter configured for this chain"};let u=await n({quoter:c,tokenIn:g,tokenOut:s,amountIn:o},a);if(!u.best)return{chainId:A,token:s,verdict:v.FAIL,evidence:H.LIVE,leg:"buy",reason:"no V3 pool priced the buy leg on any fee tier"};let l=await n({quoter:c,tokenIn:s,tokenOut:g,amountIn:u.best.amountOut},a);if(!l.best)return{chainId:A,token:s,verdict:v.FAIL,evidence:H.LIVE,leg:"sell",bought:u.best.amountOut.toString(),reason:"SELL LEG FAILED while the buy leg quoted fine. This is the honeypot signature: do not trade."};let E=l.best.amountOut,Q=Number(E*10000n/BigInt(o)),h=v.PASS,B="round trip completes with expected fee/impact loss";return Q<5e3?(h=v.FAIL,B=`round trip returns only ${(Q/100).toFixed(2)}% -- punitive tax or no real liquidity`):Q<9e3&&(h=v.CAUTION,B=`round trip returns ${(Q/100).toFixed(2)}% -- transfer tax or thin liquidity at this size`),{chainId:A,venue:"uniswap-v3",token:s,base:g,verdict:h,reason:B,amountIn:String(o),bought:u.best.amountOut.toString(),returned:E.toString(),retentionBps:Q,buyFee:u.best.fee,sellFee:l.best.fee,evidence:H.LIVE,note:"Quote-level round trip. It does not prove transfer hooks absent at execution time."}},async prepareUnsignedTx({tokenIn:s,tokenOut:o,amountIn:i,recipient:a,slippageBps:c=50,fee:g},u={}){let l=Tl(u.scanner,"router");if(!l)throw new Error(`chain ${A} has no verified V3 router; preparing a swap stays fail-closed. Add a venue with recorded provenance first (see docs/adding-a-chain.md).`);if(!j0.test(a||""))throw new Error("prepareUnsignedTx requires a valid recipient address");let E=await this.quote({tokenIn:s,tokenOut:o,amountIn:i},u);if(E.evidence!==H.LIVE)throw new Error(`cannot prepare without a live quote (${E.evidence}: ${E.reason??"no reason given"})`);let Q=g??E.fee,h=n2(E.amountOut,c);if(h<=0n)throw new Error("computed minOut is zero -- refusing to prepare");let B=!!(u.useNative||E.useNative)&&t&&String(s).toLowerCase()===String(t).toLowerCase(),I=`0x${$0.exactInputSingle}`+Xn(s)+Xn(o)+Gt(Q)+Xn(a)+Gt(i)+Gt(h)+Gt(0);return{unsigned:!0,signedBy:"user-wallet",chainId:A,venue:"uniswap-v3",tx:{to:l,data:I,value:B?String(i):"0x0"},guard:{quotedOut:E.amountOut,minOut:h.toString(),slippageBps:c,maxSlippageBps:xl,fee:Q},requires:B?[]:[{step:"approve",token:s,spender:l,amount:String(i)}],note:"UNSIGNED. Re-verify the guard against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."}}}}var ki={decimals:"0x313ce567",symbol:"0x95d89b41",name:"0x06fdde03",totalSupply:"0x18160ddd",owner:"0x8da5cb5b"};function Ap(e){if(!e||e==="0x")return null;try{return BigInt(e)}catch{return null}}function tp(e){if(!e||e==="0x")return null;let A=e.slice(2);if(A.length>=128){let r=Number(BigInt(`0x${A.slice(64,128)}`));if(r>0&&r<=256&&A.length>=128+r*2){let n=A.slice(128,128+r*2),s=Buffer.from(n,"hex").toString("utf8").replace(/\0+$/,"");if(s)return s}}return Buffer.from(A.slice(0,64),"hex").toString("utf8").replace(/\0+$/,"")||null}function s2(e){let{chainId:A}=e;async function t(r,n,s){return Ce(A,"eth_call",[{to:r,data:n},"latest"],s)}return{async blockNumber(r={}){let n=await f0(A,r);return{chainId:A,blockNumber:n?.blockNumber??n,evidence:H.LIVE}},async nativeBalance(r,n={}){let s=await w0(A,r,n);return{chainId:A,address:r,wei:s?.wei??s?.balance??null,symbol:e.nativeCurrency?.symbol??null,decimals:e.nativeCurrency?.decimals??18,evidence:H.LIVE}},async tokenBalance({token:r,owner:n},s={}){let o=await m0({chainId:A,token:r,owner:n},s);return{chainId:A,token:r,owner:n,raw:o?.balance??o,evidence:H.LIVE}},async resolveToken(r,n={}){if(!/^0x[0-9a-fA-F]{40}$/.test(r||""))return{chainId:A,token:r,evidence:H.UNKNOWN,error:"resolveToken needs a 20-byte address; symbol lookup is a market-data concern"};let[s,o,i,a]=await Promise.all([t(r,ki.decimals,n).catch(()=>null),t(r,ki.symbol,n).catch(()=>null),t(r,ki.name,n).catch(()=>null),t(r,ki.totalSupply,n).catch(()=>null)]),c=Ap(s?.result??s),g=c!==null||o?.result||i?.result;return{chainId:A,address:r,decimals:c===null?null:Number(c),symbol:tp(o?.result??o),name:tp(i?.result??i),totalSupply:(Ap(a?.result??a)??null)?.toString()??null,evidence:g?H.LIVE:H.UNKNOWN,warning:g?void 0:"no ERC-20 metadata returned -- may not be a token contract"}},async resolvePools(r,n={}){let s=e.dexscreenerSlug;if(!s)return{chainId:A,token:r,pools:[],evidence:H.UNAVAILABLE,reason:"no dexscreenerSlug configured for this chain; pool discovery is unavailable rather than guessed"};let o=await wl(r,n).catch(()=>null),a=(o?.pairs||o?.data?.pairs||[]).filter(c=>String(c.chainId).toLowerCase()===String(s).toLowerCase()).map(c=>({pair:c.pairAddress,dex:c.dexId,base:c.baseToken?.address,quote:c.quoteToken?.address,liquidityUsd:c.liquidity?.usd??null,priceUsd:c.priceUsd??null,volume24hUsd:c.volume?.h24??null,createdAt:c.pairCreatedAt??null})).sort((c,g)=>(g.liquidityUsd??0)-(c.liquidityUsd??0));return{chainId:A,token:r,pools:a,evidence:a.length?H.LIVE:H.UNKNOWN}},async scanBlocks({fromBlock:r,toBlock:n,address:s,topics:o,chunkSize:i=2e3}={},a={}){if(!Number.isInteger(r)||!Number.isInteger(n))throw new Error("scanBlocks requires integer fromBlock and toBlock");if(n<r)throw new Error("toBlock must be >= fromBlock");let c=[],g=[];for(let u=r;u<=n;u+=i){let l=Math.min(u+i-1,n);g.push([u,l])}for(let[u,l]of g){let E={fromBlock:`0x${u.toString(16)}`,toBlock:`0x${l.toString(16)}`};s&&(E.address=s),o&&(E.topics=o);let Q=await Ce(A,"eth_getLogs",[E],a).catch(h=>({error:String(h?.message||h)}));if(Q?.error)return{chainId:A,fromBlock:r,toBlock:n,logs:c,complete:!1,failedAt:[u,l],error:Q.error,evidence:H.UNKNOWN};for(let h of Q?.result??Q??[])c.push(h)}return{chainId:A,fromBlock:r,toBlock:n,logs:c,complete:!0,chunks:g.length,evidence:H.LIVE}},async scoreRisk(r,n={}){let s=[],o=v.PASS,i=g=>{let u={[v.PASS]:0,[v.CAUTION]:1,[v.UNKNOWN]:2,[v.FAIL]:3};u[g]>u[o]&&(o=g)},a=await this.resolveToken(r,n);a.evidence!==H.LIVE?(s.push({check:"erc20-metadata",result:v.UNKNOWN,detail:a.warning}),i(v.UNKNOWN)):s.push({check:"erc20-metadata",result:v.PASS,detail:`${a.symbol} / ${a.decimals}d`});let c=await this.resolvePools(r,n);if(c.evidence===H.UNAVAILABLE)s.push({check:"liquidity",result:v.UNKNOWN,detail:c.reason}),i(v.UNKNOWN);else if(!c.pools.length)s.push({check:"liquidity",result:v.FAIL,detail:"no pool with liquidity found"}),i(v.FAIL);else{let g=c.pools[0],u=g.liquidityUsd??0;u<5e3?(s.push({check:"liquidity",result:v.CAUTION,detail:`top pool only $${u}`}),i(v.CAUTION)):s.push({check:"liquidity",result:v.PASS,detail:`$${u} on ${g.dex}`}),g.createdAt&&Date.now()-g.createdAt<24*3600*1e3&&(s.push({check:"age",result:v.CAUTION,detail:"pool under 24h old"}),i(v.CAUTION))}if(typeof this.sellSimulation=="function"){let g=await this.sellSimulation({token:r,amountIn:(10n**16n).toString()},n).catch(u=>({verdict:v.UNKNOWN,reason:String(u?.message||u)}));s.push({check:"sellability",result:g.verdict,detail:g.retentionBps!=null?`round trip returns ${(g.retentionBps/100).toFixed(2)}% -- ${g.reason}`:g.reason}),i(g.verdict)}else s.push({check:"sellability",result:v.UNKNOWN,detail:"no verified router on this chain, so a round-trip sell simulation cannot run. Treat as unproven -- a buy path is not an exit path."}),i(v.UNKNOWN);return{chainId:A,token:r,verdict:o,checks:s,note:"Structural checks only. UNKNOWN is not PASS. A token is not tradeable until a sell simulation succeeds."}}}}function rp(e){let t={...s2(e)},r=new Set((e.venues||[]).map(s=>s.kind));e.venueKind==="uniswap-v3"&&r.has("quoter")&&r.has("router")?Object.assign(t,ep({chainId:e.chainId,wrappedNative:e.wrappedNative})):e.venueKind==="uniswap-v2"&&r.has("router")&&Object.assign(t,X0({chainId:e.chainId,wrappedNative:e.wrappedNative}));let n={};for(let[s,o]of Object.entries(t))n[s]=o.bind(t);return{key:e.key,chainId:e.chainId,name:e.name,rpcEnv:e.rpcEnv,nativeCurrency:e.nativeCurrency,explorer:e.explorer,venues:e.venues||[],capabilities:n}}var o2=Object.freeze([{key:"ethereum",chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://etherscan.io",dexscreenerSlug:"ethereum",venueKind:"uniswap-v3",wrappedNative:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.71 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}}]},{key:"optimism",chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://optimistic.etherscan.io",dexscreenerSlug:"optimism",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1905.23 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}}]},{key:"bsc",chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],nativeCurrency:{symbol:"BNB",decimals:18},explorer:"https://bscscan.com",dexscreenerSlug:"bsc",venueKind:"uniswap-v3",wrappedNative:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",venues:[{kind:"quoter",address:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WBNB->USDC fee 500 quoted 413.86 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}},{kind:"router",address:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}}]},{key:"polygon",chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],nativeCurrency:{symbol:"POL",decimals:18},explorer:"https://polygonscan.com",dexscreenerSlug:"polygon",venueKind:"uniswap-v3",wrappedNative:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WMATIC->USDC fee 500 quoted 0.0720 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}}]},{key:"stable",chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],nativeCurrency:{symbol:"USDT0",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x5d442b349590a6048Eb2dC0eC346cAA5F47A9ab5",venues:[{kind:"quoter",address:"0xb070179E7032CdA868b53e6C1742F80c9e940d1A",label:"Uniswap V3 QuoterV2 (canonical)",verified:{method:"Stable is on the OFFICIAL Uniswap v3 Deployments List (governance-recognised 2026-05-12, UAC process completed 2026-04, deployed by Protofire), so this is a canonical deployment rather than a fork. eth_getCode returned 8273 bytes, the same size as the canonical quoter on the seven already-verified chains. Functional probe on a live pool (TOAST -> USDT0, fee 10000): 100 in -> 0.000003, 1000 -> 0.000031, 10000 -> 0.000319 USDT0. Output scales monotonically with input, which is a working quoter answering, not a revert. Two of three sampled pools carry non-zero liquidity. NOTE: the pools discovered so far are thin, so real routing size is limited -- the venue is proved, deep liquidity is not.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:988}},{kind:"router",address:"0x32eaf9B5d5F2CD7361c5012890C943D7de84C22a",label:"Uniswap SwapRouter02 (canonical)",verified:{method:"eth_getCode returned 24497 bytes. Cross-checked on-chain rather than trusted from docs: router.factory() returns 0x88f0a512ef09175d456bc9547f914f48c013e4aa, the same v3 core factory that created the pools quoted above, and router.WETH9() returns the wrappedNative recorded on this chain entry. Address published in the Stable docs DEX reference and the Uniswap deployments list.",source:"docs.stable.xyz/en/reference/dexes + on-chain factory()/WETH9() round-trip",date:"2026-08-05",chainId:988}}]},{key:"hyperevm",chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],nativeCurrency:{symbol:"HYPE",decimals:18},dexscreenerSlug:"hyperevm",venueKind:"uniswap-v3",wrappedNative:"0x5555555555555555555555555555555555555555",venues:[{kind:"quoter",address:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",label:"HyperSwap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle(1 WHYPE -> USDT0) returned live output on all four fee tiers (100: 57.3385, 500: 57.4187, 3000: 57.3237, 10000: 56.1963 USDT0). Decimals read on-chain: WHYPE 18, USDT0 6. Best tier checked against an INDEPENDENT control the same minute -- Hyperliquid allMids put HYPE at 57.3205, so the pool is 0.171% from the perp mid, which is the right shape for fee plus impact rather than a wrong contract or a decimals bug.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}},{kind:"router",address:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D",label:"HyperSwap V3 SwapRouter",verified:{method:"eth_getCode returned 12070 bytes, and it is the router paired with the quoter proved above -- the same pair already shipped in UNI_V3_VENUES[999].hyperswap, which is the map the quote/prepare path actually routes through.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}}]},{key:"abstract",chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x3439153EB7AF838Ad19d56E1571FBD09333C2809",venues:[{kind:"quoter",address:"0x728BD3eC25D5EDBafebB84F3d67367Cd9EBC7693",label:"Uniswap V3 QuoterV2 (Abstract deployment)",verified:{method:"Abstract is a ZK-stack chain, so CREATE2 addresses differ and the canonical Uniswap addresses are NOT valid here -- probing them returns codesize 0, which is what previously made this chain look like it had no V3 at all. Found the real deployment from live traffic instead: scanned recent Swap(...) logs, took the busiest pool, read pool.factory() = 0xa1160e73b63f322ae88cc2d8e700833e71d0b2a1, then enumerated that factory's deployer (0xf3d63166F0Ca56C3c1A3508FcE03Ff0Cf3Fb691e) and probed each of its 56 contracts with a real quoteExactInputSingle call. Exactly one answered: 1 WETH -> 1846.475731 USDC.e at fee 500. Independent sanity check: the pool's own slot0() spot price is 1873.11 USDC.e per WETH, so the quoter sits ~1.4% below spot, the right shape for fee plus price impact on this size.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:2741}},{kind:"router",address:"0x7712FA47387542819d4E35A23f8116C90C18767C",label:"Uniswap SwapRouter02 (Abstract deployment)",verified:{method:"eth_getCode returned 167392 bytes and the runtime contains the exactInputSingle selector. router.factory() matches the factory proved above and router.WETH9() matches the wrappedNative on this entry. Chosen over its byte-identical twin (0xfD6257F4...) because this is the address real users actually route through: it appeared as tx.to on live swaps against the WETH/USDC.e pool.",source:"on-chain factory()/WETH9() round-trip + live swap tx.to sampling",date:"2026-08-05",chainId:2741}}]},{key:"robinhood",chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC","ROBINHOOD_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},dexscreenerSlug:"robinhood",venueKind:"uniswap-v3",wrappedNative:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",venues:[{kind:"quoter",address:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDG fee 100 quoted 1866.58 USDG, and USDG->CASHCAT fee 10000 quoted a live amount). A contract that correctly prices known pairs IS a working V3 quoter",source:"live eth_call against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"router",address:"0xcaf681a66d020601342297493863e78c959e5cb2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode (24497 bytes) on this chain and the paired quoter at the same deployment passed a live functional quote",source:"live eth_getCode against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"factory",address:"0x1f7d7550b1b028f7571e69a784071f0205fd2efa",label:"Uniswap V3 Factory",verified:{method:"eth_getCode returned real bytecode (24535 bytes) and a PoolCreated log scan over this factory returned 76 pools in ~9000 recent blocks",source:"live eth_getLogs against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}}]},{key:"base",chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://basescan.org",dexscreenerSlug:"base",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",label:"Uniswap V3 QuoterV2 (Base)",verified:{method:"functional probe: quoteExactInputSingle returned WETH->USDC at fee 500 = 1908.44 USDC, a live sane price. The canonical mainnet quoter address also has bytecode on Base but does NOT price this pair, which is exactly the false positive a codesize-only check accepts",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router",address:"0x2626664c2603336E57B271c5C0b26F421741e481",label:"Uniswap V3 SwapRouter02 (Base)",verified:{method:"eth_getCode returned real bytecode and the paired Base quoter passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router-v2",address:"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",label:"Uniswap V2 Router02 (Base)",verified:{method:"eth_getCode returned 17891 bytes; live getAmountsOut on WETH->USDC round-tripped to 98.75% (2x0.30% fee + impact)",source:"https://docs.uniswap.org/contracts/v2/reference/smart-contracts/v2-deployments",date:"2026-07-30",chainId:8453}}]},{key:"arbitrum",chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://arbiscan.io",dexscreenerSlug:"arbitrum",venueKind:"uniswap-v3",wrappedNative:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.72 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}}]},{key:"avalanche",chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],nativeCurrency:{symbol:"AVAX",decimals:18},explorer:"https://snowtrace.io",dexscreenerSlug:"avalanche",venueKind:"uniswap-v3",wrappedNative:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",venues:[{kind:"quoter",address:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WAVAX->USDC fee 500 quoted 6.48 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}},{kind:"router",address:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}}]}]);function np(){return o2.map(e=>Yl(rp(e)))}Ci();var op="0x0000000000000000000000000000000000000000",ip=/^0x[0-9a-fA-F]{40}$/,ap=!1;function Ri(){ap||(np(),ap=!0)}var Ee=class extends Error{constructor(A){super(A),this.name="SwapArgsError"}};function gp(e){if(Ri(),!e)throw new Ee("missing <chain>");let A=Number(e);if(Number.isFinite(A)&&ts(A))return A;let t=Hr().find(r=>r.key===String(e).toLowerCase());if(t)return t.chainId;throw new Ee(`unknown chain "${e}". Known: ${Hr().map(r=>r.key).join(", ")}`)}function $n(e){try{return gp(e)}catch(A){jn(A.message)}}function a2(e){return Ri(),Hr().find(A=>A.chainId===Number(e))?.key??String(e)}function jn(e){console.error(`error: ${e}`),process.exit(1)}function cp(e,A){return(Number(e)/10**A).toLocaleString(void 0,{maximumFractionDigits:6})}function up(e,A){if(console.log(`sources: ${e.sourcesAnswered}/${e.sourcesTried} answered`),console.log(`ranked on: ${e.rankedOn}
|
|
50
|
-
`),!e.routes.length){console.log("no source returned a usable route.");for(let r of e.failed)console.log(` ${r.source}: ${r.error}`);return}let t=Math.max(...e.routes.map(r=>r.source.length),6);console.log(` ${"source".padEnd(t)} ${"net out".padStart(14)} ${"gross".padStart(14)} cost`);for(let[r,n]of e.routes.entries()){let s=r===0?"*":" ",o=n.gasUsd==null?"gas unknown":n.gasUsd===0?"gasless (solver)":`$${Number(n.gasUsd+(n.feeUsd??0)).toFixed(2)}`,i=n.meta?.durationSeconds!=null?` ~${n.meta.durationSeconds}s`:"";console.log(`${s} ${n.source.padEnd(t)} ${cp(n.netOut,A).padStart(14)} ${cp(n.grossOut,A).padStart(14)} ${o}${i}`)}for(let r of e.failed)console.log(` ${r.source.padEnd(t)} FAILED: ${String(r.error).slice(0,60)}`);console.log(`
|
|
51
|
-
${e.note}`);for(let r of e.warnings)console.log(`
|
|
52
|
-
WARNING: ${r}`)}function lp(e,A,t){let r=String(e).trim();if(!/^\d+(\.\d+)?$/.test(r))throw new Ee(`${t} "${e}" is not a positive decimal number`);if(A==null)throw new Ee(`cannot scale ${t} "${e}": the token's decimals could not be read from chain. Pass exact base units instead (--base-units <integer>).`);let n=Number(A),[s,o=""]=r.split(".");if(o.length>n)throw new Ee(`${t} "${e}" has more precision than the token's ${n} decimals`);let i=(BigInt(s)*10n**BigInt(n)+BigInt(o.padEnd(n,"0")||"0")).toString();if(i==="0")throw new Ee(`${t} "${e}" rounds to zero at ${n} decimals`);return i}function c2(e,A){let t=String(e).trim();if(!/^\d+$/.test(t))throw new Ee(`${A} "${e}" must be a positive integer of base units`);if(BigInt(t)===0n)throw new Ee(`${A} must be greater than zero`);return t}function u2({raw:e,symbol:A,address:t,decimals:r,chainRef:n}){let s=A?`${A} (${t})`:t,o=10n**BigInt(r)*BigInt(e),i=`0.${String(e).padStart(r,"0")}`.replace(/(\.\d*?[1-9])0+$/,"$1");return new Ee([`ambiguous amount "${e}" for ${s}.`,`Bare numbers are BASE UNITS, so "${e}" means ${i} ${A||"token"} -- dust that no source will quote.`,`If you meant ${e} whole tokens, that is ${o} base units. Say which you meant:`,"",` human amount: oracle route swap ${n} <tokenIn> <tokenOut> --amount ${e}`,` explicit base units: oracle route swap ${n} <tokenIn> <tokenOut> ${o}`,` exact, no scaling: oracle route swap ${n} <tokenIn> <tokenOut> --base-units ${e}`,` fully explicit: oracle route swap ${n} ${t} <tokenOutAddress> ${o}`].join(`
|
|
53
|
-
`))}function l2(e){Ri();let A=ts(e),t=Ne[Number(e)],r=Hr().find(n=>n.chainId===Number(e));return async function(s){let o=String(s??"").trim(),i=null;if(ip.test(o))i=o;else{let g=o.toLowerCase();g==="weth"||g==="eth"||g==="wnative"?i=t?.weth||r?.wrappedNative||null:g==="usdc"&&(i=t?.usdc||null)}if(!i)return null;let a=await A?.resolveToken(i).catch(()=>null),c=Number(a?.decimals);return{address:i,decimals:Number.isFinite(c)?c:null,symbol:a?.symbol??(ip.test(o)?null:o.toUpperCase())}}}async function g2(e=[],A={}){let t=Array.isArray(e)?e.map(String):[],r=[],n=null,s=null;for(let p=0;p<t.length;p+=1){let w=t[p];if(!w.startsWith("--")){r.push(w);continue}let R=w.indexOf("="),x=R===-1?w:w.slice(0,R),O=R===-1?null:w.slice(R+1);if(x==="--amount"){n=O??t[++p]??"";continue}if(x==="--base-units"||x==="--raw"){s=O??t[++p]??"";continue}}let o=r[0],i=A.chainId??gp(o),a=r[1],c=r[2],g=r[3],u=r[4]||"0x000000000000000000000000000000000000dEaD";if(!a||!c)throw new Ee("usage: oracle-route swap <chain> <tokenIn> <tokenOut> [amountIn|--amount N] [taker]");if(n!=null&&s!=null)throw new Ee("pass either --amount (human) or --base-units (exact), not both");if(g!=null&&(n!=null||s!=null))throw new Ee(`conflicting amounts: positional "${g}" and ${n!=null?"--amount":"--base-units"}. Pass one.`);let l=A.resolveToken??l2(i),E=A.chainId!=null?String(i):a2(i),[Q,h]=await Promise.all([Promise.resolve(l(a)).catch(()=>null),Promise.resolve(l(c)).catch(()=>null)]);for(let[p,w]of[[a,Q],[c,h]])if(!w?.address)throw new Ee(`could not resolve token "${p}" on chain ${i} (${E}). Symbols are not passed through to routing providers -- pass the 0x address for "${p}" on ${E}.`);let B=Q.decimals??null,I=h.decimals??null,C;if(s!=null)C=c2(s,"--base-units");else if(n!=null)C=lp(n,B,"--amount");else if(g==null)C=(10n**BigInt(B??18)).toString();else if(/^\d+\.\d+$/.test(g))C=lp(g,B,"amountIn");else if(/^\d+$/.test(g)){if(BigInt(g)===0n)throw new Ee("amountIn must be greater than zero");if(B==null)throw new Ee(`cannot interpret amount "${g}": decimals for ${Q.address} could not be read from chain ${i} (${E}). Pass --base-units ${g} to send it through unscaled.`);if(BigInt(g)>=10n**BigInt(B))C=g;else throw u2({raw:g,symbol:Q.symbol,address:Q.address,decimals:B,chainRef:o??E})}else throw new Ee(`amountIn "${g}" is not a number`);return{chainId:i,tokenIn:Q.address,tokenOut:h.address,amountIn:C,taker:u,decimalsIn:B,decimalsOut:I,symbolIn:Q.symbol??null,symbolOut:h.symbol??null}}async function E2(e=process.argv.slice(2)){Ri();let[A,...t]=e,r=t.includes("--json"),n=t.filter(s=>s!=="--json");switch(A){case"swap":{let s;try{s=await g2(t)}catch(i){throw i instanceof Ee&&jn(i.message),i}let o=await bi({chainId:s.chainId,tokenIn:s.tokenIn,tokenOut:s.tokenOut,amountIn:s.amountIn,taker:s.taker,decimalsIn:s.decimalsIn,decimalsOut:s.decimalsOut});r?process.stdout.write(`${JSON.stringify(o,null,2)}
|
|
54
|
-
`):up(o,s.decimalsOut??18),o.routes.length||(r||console.error(`error: no source could route ${s.amountIn} of ${s.tokenIn} -> ${s.tokenOut} on chain ${s.chainId}`),process.exit(2));break}case"bridge":{let s=$n(n[0]),o=$n(n[1]),i=n[2]||op,a=n[3]||(10n**18n).toString(),c=await Di({fromChainId:s,toChainId:o,tokenIn:i,tokenOut:i,amountIn:a,taker:n[4]||"0x000000000000000000000000000000000000dEaD",decimalsOut:18});r?process.stdout.write(`${JSON.stringify(c,null,2)}
|
|
55
|
-
`):up(c,18);break}case"prepare":{let s=$n(n[0]);(!n[1]||!n[2]||!n[3])&&jn("usage: oracle-route prepare <chain> <tokenIn> <tokenOut> <taker> [amountIn] [--source=X]");let o=n[3],i=n[4]||(10n**18n).toString(),a=t.find(E=>E.startsWith("--source=")),c=ts(s),[g,u]=await Promise.all([c.resolveToken(n[1]).then(E=>E.decimals).catch(()=>null),c.resolveToken(n[2]).then(E=>E.decimals).catch(()=>null)]),l=await Z0({chainId:s,tokenIn:n[1],tokenOut:n[2],amountIn:i,taker:o,decimalsIn:g,decimalsOut:u,source:a?a.split("=")[1]:void 0});if(r){process.stdout.write(`${JSON.stringify(l,null,2)}
|
|
56
|
-
`);break}l.ok||(console.log(`could not prepare: ${l.reason}`),l.failureKind&&console.log(`kind: ${l.failureKind}`),l.alternative&&console.log(`try: --source=${l.alternative}`),process.exit(1)),console.log(`source: ${l.chosen.source}${l.chosen.wasWinner?" (winner)":" (override -- NOT the winner)"}`),console.log(`artifact: ${l.artifactKind}`),console.log(`destination: ${l.destination}`),l.minOut&&console.log(`minOut: ${l.minOut}`),l.driftBps!=null&&console.log(`drift: ${(l.driftBps/100).toFixed(3)}% vs comparison`),l.requiresApproval&&(console.log(`
|
|
57
|
-
approval required first:`),console.log(` token ${l.requiresApproval.token}`),console.log(` spender ${l.requiresApproval.spender}`),l.requiresApproval.note&&console.log(` note ${l.requiresApproval.note}`)),l.runnersUp?.length&&console.log(`
|
|
58
|
-
runners-up: ${l.runnersUp.map(E=>E.source).join(", ")}`);for(let E of l.warnings)console.log(`
|
|
59
|
-
WARNING: ${E}`);console.log(`
|
|
60
|
-
${l.note}`);break}case"prepare-bridge":{let s=$n(n[0]),o=$n(n[1]);n[2]||jn("usage: oracle-route prepare-bridge <fromChain> <toChain> <taker> [token] [amountIn] [--source=X]");let i=n[2],a=n[3]||op,c=n[4]||(10n**17n).toString(),g=t.find(l=>l.startsWith("--source=")),u=await z0({fromChainId:s,toChainId:o,tokenIn:a,tokenOut:a,amountIn:c,taker:i,decimalsOut:18,source:g?g.split("=")[1]:void 0});if(r){process.stdout.write(`${JSON.stringify(u,null,2)}
|
|
61
|
-
`);break}u.ok||(console.log(`could not prepare: ${u.reason}`),u.failureKind&&console.log(`kind: ${u.failureKind}`),u.alternative&&console.log(`try: --source=${u.alternative}`),process.exit(1)),console.log(`source: ${u.chosen.source}${u.chosen.wasWinner?" (winner)":" (override -- NOT the winner)"}`),console.log(`artifact: ${u.artifactKind}`),console.log(`route: chain ${u.fromChainId} -> chain ${u.toChainId}`),console.log(`signs: ${u.transactionCount} transaction(s) on chain ${u.fromChainId}`),console.log(`destination: ${u.destination}`),u.minOut&&console.log(`minOut: ${u.minOut}`),u.durationSeconds!=null&&console.log(`eta: ~${u.durationSeconds}s to credit`),u.driftBps!=null&&console.log(`drift: ${(u.driftBps/100).toFixed(3)}% vs comparison`),u.requiresApproval&&(console.log(`
|
|
62
|
-
approval required first:`),console.log(` token ${u.requiresApproval.token}`),console.log(` spender ${u.requiresApproval.spender}`)),u.transactions.forEach((l,E)=>{console.log(`
|
|
63
|
-
tx ${E+1}/${u.transactionCount}: chain ${l.chainId} -> ${l.to}`)}),u.runnersUp?.length&&console.log(`
|
|
64
|
-
runners-up: ${u.runnersUp.map(l=>l.source).join(", ")}`);for(let l of u.warnings)console.log(`
|
|
65
|
-
WARNING: ${l}`);console.log(`
|
|
66
|
-
${u.note}`);break}default:console.log(["oracle-route -- best-execution routing",""," oracle-route swap <chain> <tokenIn> <tokenOut> [amountIn] [taker]"," oracle-route bridge <fromChain> <toChain> [token] [amountIn] [taker]"," oracle-route prepare <chain> <tokenIn> <tokenOut> <taker> [amountIn] [--source=X]"," oracle-route prepare-bridge <fromChain> <toChain> <taker> [token] [amt] [--source=X]",""," Amounts are BASE UNITS. Use --amount N for a human amount scaled by the"," token's on-chain decimals; an ambiguous bare number is refused, not guessed.",""," Ranks by NET output (gross minus gas and fees), not headline quote."," A route quoting more but costing more gas can lose. --json for detail."].join(`
|
|
67
|
-
`)),process.exit(A?1:0)}}function Q2(){if(!process.argv[1])return!1;try{return sp(i2(import.meta.url))===sp(process.argv[1])}catch{return!1}}if(Q2())try{await E2()}catch(e){jn(String(e?.message||e))}export{Ee as SwapArgsError,l2 as defaultTokenResolver,E2 as main,g2 as parseSwapArgs};
|
|
2
|
+
var Zn=Object.defineProperty;var O=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(n){throw r=[n],n}};var te=(e,t)=>{for(var r in t)Zn(e,r,{get:t[r],enumerable:!0})};import re from"node:net";import no from"node:dns";function ke(e){let t=String(e).toLowerCase().split("%")[0];if((t.match(/::/g)||[]).length>1)return null;let r=p=>{if(!p)return[];let l=p.split(":"),u=l.at(-1);if(u?.includes(".")){let f=u.split(".").map(Number);if(f.length!==4||f.some(m=>!Number.isInteger(m)||m<0||m>255))return null;l.splice(l.length-1,1,(f[0]<<8|f[1]).toString(16),(f[2]<<8|f[3]).toString(16))}return l.some(f=>!/^[0-9a-f]{1,4}$/.test(f))?null:l.map(f=>Number.parseInt(f,16))},[n,o]=t.split("::"),a=r(n),s=r(o);if(!a||!s)return null;let i=t.includes("::"),c=8-a.length-s.length;if(!i&&c!==0||i&&c<1)return null;let d=[...a,...Array(Math.max(0,c)).fill(0),...s];return d.length!==8?null:Uint8Array.from(d.flatMap(p=>[p>>8,p&255]))}function ut(e,t,r){let n=Math.floor(r/8),o=r%8;for(let s=0;s<n;s+=1)if(e[s]!==t[s])return!1;if(!o)return!0;let a=255<<8-o;return(e[n]&a)===(t[n]&a)}function ct(e){if(re.isIPv4(e)){let t=e.split(".").map(Number);return!(t[0]===0||t[0]===10||t[0]===127||t[0]>=224||t[0]===100&&t[1]>=64&&t[1]<=127||t[0]===169&&t[1]===254||t[0]===172&&t[1]>=16&&t[1]<=31||t[0]===192&&(t[1]===0||t[1]===2||t[1]===168)||t[0]===192&&t[1]===88&&t[2]===99||t[0]===198&&(t[1]===18||t[1]===19||t[1]===51)||t[0]===203&&t[1]===0&&t[2]===113)}if(re.isIPv6(e)){let t=ke(e);if(!t)return!1;let r=ke("::ffff:0:0");return ut(t,r,96)?ct([...t.slice(12)].join(".")):ut(t,ke("2000::"),3)?![["2001::",23],["2001:db8::",32],["2001:10::",28],["2001:2::",48],["2002::",16],["3fff::",20]].some(([o,a])=>ut(t,ke(o),a)):!1}return!1}function ao(e){let t;try{t=new URL(String(e))}catch{return{ok:!1,error:`not a valid URL: ${String(e).slice(0,120)}`}}if(t.protocol!=="http:"&&t.protocol!=="https:")return{ok:!1,error:`refused protocol ${t.protocol} (only http/https)`};let r=t.hostname.toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,"");if(oo.has(r)||r.endsWith(".localhost")||r.endsWith(".internal"))return{ok:!1,error:`refused internal host ${r}`};let n=re.isIP(r);return n!==0&&!ct(r)?{ok:!1,error:`refused private address ${r}`}:{ok:!0,url:t,host:r,isLiteralIp:n!==0}}async function lt(e,{lookupFn:t=no.promises.lookup}={}){let r=ao(e);if(!r.ok)return r;if(r.isLiteralIp)return{ok:!0,url:r.url,addresses:[{address:r.host,family:re.isIPv6(r.host)?6:4}]};let n;try{n=await t(r.host,{all:!0,verbatim:!0})}catch{return{ok:!1,error:`refused: ${r.host} did not resolve`}}return!Array.isArray(n)||n.length===0||n.some(o=>!ct(o.address))?{ok:!1,error:`refused: ${r.host} resolves to a non-public address`}:{ok:!0,url:r.url,addresses:n}}async function dt({requireUndici:e=!1,importUndici:t=()=>import("undici")}={}){let r,n;try{let l=await t();r=l.Agent,n=l.fetch}catch(l){if(e)throw new Error(`egress-guard: untrustedUrl pinning requires the undici package, which failed to load: ${l?.message||l}`);return null}if(typeof r!="function"||typeof n!="function"){if(e)throw new Error("egress-guard: untrustedUrl pinning requires undici's Agent and fetch exports, which were not found on the imported module");return null}let o=l=>String(l).toLowerCase().replace(/^\[|\]$/g,"").replace(/\.+$/,""),a=new Map,s=l=>(Array.isArray(l)?l:[l]).map(u=>typeof u=="string"?{address:u}:u).filter(u=>u&&u.address).map(u=>({address:u.address,family:u.family||(re.isIPv6(u.address)?6:4)})),i=(l,u,f)=>{a.set(o(l),s(typeof u=="string"?[{address:u,family:f}]:u))},c=l=>{let u=o(l);if(re.isIP(u))return[{address:u,family:re.isIPv6(u)?6:4}];let f=a.get(u);if(!f||!f.length)throw new Error(`refused: unpinned host ${l} during pinned fetch`);return f},d=new r({connect:{lookup(l,u,f){let m;try{m=c(l)}catch(g){return f(g)}return u?.all?f(null,m):f(null,m[0].address,m[0].family)}}}),p=io((l,u={})=>n(l,{...u,dispatcher:d}),i);return{dispatcher:d,fetch:p,pin:i,resolve:c,async close(){try{await d.destroy()}catch{}}}}function io(e,t){if(typeof e!="function")throw new Error("markPinCapableFetch: fetchImpl must be a function");if(typeof t!="function")throw new Error("markPinCapableFetch: pin must be a function");return e[pt]=Object.freeze({pin:t}),e}function ft(e){return typeof e=="function"&&typeof e[pt]?.pin=="function"}function rr(e,t,r){if(!ft(e))throw new Error("pinFetchToAddresses: fetchImpl is not pin-capable");e[pt].pin(t,r)}var oo,pt,nr=O(()=>{oo=new Set(["localhost","metadata.google.internal","metadata.goog"]);pt=Symbol.for("oracle.egressGuard.pinCapableFetch")});import{createHash as so}from"node:crypto";function fo(e){let t=String(e||"").toLowerCase();return cr.includes(t)||/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(t)}function mo(e){let t={};for(let[r,n]of Object.entries(e||{}))fo(r)||(t[r]=n);return t}function ho(e,t){if(!e)throw new Error(`HTTP redirect from ${t} missing Location`);let r=new URL(String(e),String(t));if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`HTTP redirect from ${t} used unsupported protocol ${r.protocol}`);return r.toString()}function go(e,t){return new URL(String(e)).origin===new URL(String(t)).origin}function wo(e,t,r,n={}){let o={};for(let[p,l]of Object.entries(r||{}))o[p.toLowerCase()]=l;let a=Object.keys(o).filter(p=>/(^|-)(api[-_]?key|key|token|secret|auth|authorization|session|cookie|signature|access)(-|$)/.test(p)),i=[...new Set([...cr,...a])].sort().map(p=>`${p}=${o[p]??""}`).join(`
|
|
3
|
+
`),c=so("sha256").update(i).digest("hex").slice(0,32),d=`${n.untrustedUrl?"untrusted":"trusted"}:${n.maxResponseBytes??"unbounded"}`;return`${e} ${t} ${d} ${c}`}function bo(e,t){let r=Number(t);return Number.isFinite(r)&&r>0?Math.min(r*1e3,ar):Math.min(250*2**e,ar)+Math.floor(Math.random()*100)}function le(e,t={}){let r=new Error(e);return r.retryable=!1,Object.assign(r,t),r}function ht(e,t,r){return le(`HTTP response from ${e} exceeded maxResponseBytes ${r} (${t})`,{oversize:!0})}function de(e){try{let t=e?.body?.cancel?.();t&&typeof t.then=="function"&&t.catch(()=>{})}catch{}}function Eo(e){return e?e.byteLength??e.length??0:0}async function sr(e,t,{url:r,truncate:n=!1,onOversize:o}={}){if(t==null)return await e.text();let a=Number(e.headers?.get?.("content-length"));if(Number.isFinite(a)&&a>t&&(de(e),!n))throw ht(r,`content-length ${a}`,t);let s=e.body?.getReader?.();if(!s){let l=await e.text(),u=Buffer.byteLength(l,"utf8");if(u>t){if(!n)throw ht(r,`body ${u} bytes`,t);return Buffer.from(l,"utf8").subarray(0,t).toString("utf8")}return l}let i=[],c=0,d=!1;try{for(;;){let{value:l,done:u}=await s.read();if(u)break;if(l&&(i.push(Buffer.from(l)),c+=Eo(l),c>t)){d=!0;break}}}finally{if(d)try{await s.cancel()}catch{}try{s.releaseLock?.()}catch{}}if(d&&(typeof o=="function"&&o(),!n))throw ht(r,`streamed ${c} bytes`,t);let p=Buffer.concat(i);return(d?p.subarray(0,t):p).toString("utf8")}function ur(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}async function Ao(e,{fetchImpl:t,method:r,headers:n,body:o,timeoutMs:a,lookupFn:s,realFetch:i,untrustedUrl:c=!1,maxResponseBytes:d=null,importUndici:p,validateResponse:l}){let u=new AbortController,f=setTimeout(()=>u.abort(),a),m=null,g=t,h=s?{lookupFn:s}:{};if(c&&!i&&!ft(g))throw le(`HTTP refused ${e}: untrustedUrl requires a pin-capable fetchImpl (see markPinCapableFetch in egress-guard.mjs) or no fetchImpl override so Oracle can pin the connection itself`);let b=async(w,{status:y=null}={})=>{let v=await lt(w,h);if(!v.ok)throw le(y==null?`HTTP refused ${w}: ${v.error}`:`HTTP redirect to ${w} ${v.error}`,y==null?{}:{status:y});let A=new URL(w).hostname;if(i){if(m&&(await m.close(),m=null),!m)try{m=await dt({requireUndici:!0,...p?{importUndici:p}:{}})}catch(I){throw le(y==null?`HTTP refused ${w}: ${I?.message||I}`:`HTTP redirect to ${w} refused: ${I?.message||I}`,y==null?{}:{status:y})}m.pin(A,v.addresses),g=m.fetch}else rr(g,A,v.addresses);return v};try{let w=String(e),y={...n||{}};c&&await b(w);for(let v=0;v<=ir;v+=1){let A=await g(w,{method:r,headers:y,body:o,signal:u.signal,redirect:"manual"});if(lo.has(A.status)){if(r!=="GET"&&r!=="HEAD"){let R=await sr(A,d??po,{url:w,truncate:!0}),P=new Error(`HTTP ${A.status} ${r} ${w} redirected non-idempotent request`);throw P.status=A.status,P.body=ur(R)??R.slice(0,300),P}if(v===ir)throw de(A),new Error(`HTTP redirect loop for ${e}`);let E=A.headers?.get?.("location"),C;try{C=ho(E,w)}catch(R){throw de(A),R}let L=!go(C,w);if(de(A),L&&(y=mo(y)),c)await b(C,{status:A.status});else if(L){let R=await lt(C,h);if(!R.ok){let P=new Error(`HTTP redirect from ${w} ${R.error}`);throw P.status=A.status,P.retryable=!1,P}i&&R.addresses?.length&&(m||(m=await dt(p?{importUndici:p}:{})),m&&(m.pin(new URL(C).hostname,R.addresses),g=m.fetch))}w=C;continue}if(typeof l=="function")try{await l(A,{url:w})}catch(E){throw de(A),le(E?.message||String(E))}let I=await sr(A,d,{url:w,onOversize:()=>u.abort()}),_=ur(I);if(!A.ok){let E=new Error(`HTTP ${A.status} ${r} ${w}`);throw E.status=A.status,E.retryAfter=A.headers?.get?.("retry-after")??null,E.body=_??I.slice(0,300),E}return _??I}throw new Error(`HTTP redirect loop for ${e}`)}finally{clearTimeout(f),m&&await m.close()}}async function k(e,t={}){let r=t.fetchImpl||globalThis.fetch;if(typeof r!="function")throw new Error("fetch unavailable \u2014 pass opts.fetchImpl");let n=t.timeoutMs??12e3,o=(t.method||"GET").toUpperCase(),a={Accept:"application/json",...t.headers||{}},s=t.body;s!=null&&typeof s!="string"&&(a["Content-Type"]=a["Content-Type"]||"application/json",s=JSON.stringify(s));let i=Number.isInteger(t.retries)?Math.max(t.retries,0):co,c=t.lookupFn,d=!t.fetchImpl,p=t.untrustedUrl===!0,l=t.importUndici,u=t.validateResponse,f=Number(t.maxResponseBytes),m=Number.isFinite(f)&&f>0?Math.floor(f):null,g=async()=>{let v;for(let A=0;A<=i;A++)try{return await Ao(e,{fetchImpl:r,method:o,headers:a,body:s,timeoutMs:n,lookupFn:c,realFetch:d,untrustedUrl:p,maxResponseBytes:m,importUndici:l,validateResponse:u})}catch(I){v=I;let _=I?.status,E=I?.name==="AbortError",C=new Set([408,425,429]),L=I?.retryable===!1?!1:_!=null?C.has(_)||uo.has(_)&&or.has(o):!E&&or.has(o);if(A===i||!L)throw I;await yo(bo(A,I?.retryAfter))}throw v};if(!(t.dedupe!==!1&&o==="GET"&&s==null))return g();let b=wo(o,e,a,{untrustedUrl:p,maxResponseBytes:m}),w=mt.get(b);if(w)return w;let y=g().finally(()=>mt.delete(b));return mt.set(b,y),y}var uo,or,co,ar,cr,lo,ir,po,mt,yo,K=O(()=>{nr();uo=new Set([408,425,429,500,502,503,504]),or=new Set(["GET","HEAD","OPTIONS","PUT","DELETE"]),co=2,ar=4e3,cr=["authorization","x-api-key","x-tensor-api-key","0x-api-key","api-key","cookie","proxy-authorization"],lo=new Set([301,302,303,307,308]),ir=3,po=64*1024;mt=new Map;yo=e=>new Promise(t=>setTimeout(t,e))});import{readFileSync as vo}from"node:fs";import{homedir as So}from"node:os";import{join as Oe}from"node:path";function xo(){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){let r=(process.env.ORACLE_EXEC_ENV_FILE||"").trim();return r?[r]:[]}let e=(process.env.ORACLE_EXEC_ENV_FILE||process.env.MAD_EXEC_ENV_FILE||"").trim(),t=So();if(process.env.ORACLE_PUBLIC_DESKTOP==="1"){let r=(process.env.ORACLE_CONFIG_DIR||Oe(t,".config","oracle")).trim();return[e,Oe(r,"exec.env")].filter(Boolean)}return[e,Oe(t,".config","oracle","exec.env"),Oe(t,".config","mad-desk","exec.env")].filter(Boolean)}function lr(e,t,r){let n=e??process.env[t]??process.env[r];if(!String(n||"").trim())for(let o of xo())try{let a=vo(o,"utf8"),s=a.match(new RegExp(`^${t}=(.*)$`,"m"))||a.match(new RegExp(`^${r}=(.*)$`,"m"));if(s&&(n=s[1].trim(),n))break}catch{}if(!String(n||"").trim())throw new Error(`${t} required for attestation. Set it in the environment, or place ${t}=<value> in ~/.config/oracle/exec.env`);return n}var dr=O(()=>{});var pr=O(()=>{});import{createHash as Io,createHmac as mr,timingSafeEqual as Co}from"node:crypto";function $e(e){return Array.isArray(e)?`[${e.map($e).join(",")}]`:e&&typeof e=="object"?`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${$e(e[t])}`).join(",")}}`:JSON.stringify(e??null)}function hr(e,{required:t=!1}={}){try{return lr(e,"ORACLE_ROUTE_ATTESTATION_SECRET","MAD_ROUTE_ATTESTATION_SECRET")}catch(r){if(t)throw r;return null}}function wt(e){let{signature:t,...r}=e;return r}function gr(e,{secret:t}={}){let r=hr(t);return r?{...e,signature:mr("sha256",r).update($e(wt(e))).digest("hex")}:e}function ko(e){let t=String(e||"").toLowerCase();if(!/^0x[0-9a-f]+$/.test(t)||t.length<10||t.length%2!==0)throw new Error("auto-slippage calldata must be even-length hex with a selector");return Io("sha256").update(Buffer.from(t.slice(2),"hex")).digest("hex")}function D(e,{chainId:t,venue:r,data:n,secret:o}={}){if(!e||e.mode!=="auto")throw new Error("bounded auto-slippage guard required");if(Number(e.chainId)!==Number(t))throw new Error("auto-slippage guard chain mismatch");if(String(e.venue).toLowerCase()!==String(r||"").toLowerCase())throw new Error("auto-slippage guard venue mismatch");let a=hr(o);if(a){let f=mr("sha256",a).update($e(wt(e))).digest("hex");if(!Oo(e.signature,f))throw new Error("auto-slippage guard signature mismatch \u2014 refusing to bind a guard this Oracle did not issue")}let s=Number(e.selectedBps),i=Number(e.capBps);if(!Number.isInteger(s)||s<0||s>Ne||!Number.isInteger(i)||i<0||i>Ne||s>i)throw new Error("auto-slippage guard bounds are invalid");let c=BigInt(e.quoteAmountOut??0),d=BigInt(e.minAmountOut??0);if(c<=0n||d<=0n)throw new Error("auto-slippage guard amounts must be positive");let p=c*BigInt(1e4-s),l=p/10000n;if(p%10000n!==0n&&(l+=1n),d<l)throw new Error("auto-slippage guard is under-protected relative to its quote");let u=To(n);if(u!=null&&u!==d)throw new Error(`auto-slippage: calldata encodes floor ${u}, not the guard floor ${d} \u2014 refusing to bind`);return gr({...wt(e),calldataHash:ko(n)},{secret:o})}function Oo(e,t){let r=Buffer.from(String(e??""),"utf8"),n=Buffer.from(String(t??""),"utf8");return r.length!==n.length||r.length===0?!1:Co(r,n)}function gt(e,t=0){let r=Number(e);return Number.isFinite(r)?r:t}function No(e){let t=e==null?Ne:Number(e);if(!Number.isInteger(t)||t<0)throw new Error("auto-slippage cap must be a non-negative integer bps value");return Math.min(t,Ne)}function W({liquidityUsd:e,priceChange5m:t=0,quoteAgeMs:r=0,crossChain:n=!1,requestedCapBps:o}={}){let a=gt(e,0),s=a>0?a>=25e4?5:a>=1e5?10:a>=5e4?20:a>=1e4?40:70:n?30:10,i=Math.min(60,Math.abs(gt(t,0))*2),c=Math.min(40,Math.floor(Math.max(0,gt(r,0))/5e3)*5),d=Math.max(25,Math.ceil(20+s+i+c)),p=No(o);return{mode:"auto",requiredBps:d,selectedBps:Math.min(d,p),capBps:p,executable:d<=p}}function $o({chainId:e,venue:t,quoteAmountOut:r,liquidityUsd:n,priceChange5m:o=0,quoteAgeMs:a=0,crossChain:s=!1,requestedCapBps:i,quotedAtMs:c=Date.now(),ttlMs:d=fr,secret:p}={}){let l=BigInt(r??0);if(l<=0n)throw new Error("auto-slippage guard requires positive quoteAmountOut");let u=W({liquidityUsd:n,priceChange5m:o,quoteAgeMs:a,crossChain:s,requestedCapBps:i});if(!u.executable)throw new Error(`auto-slippage requires ${u.requiredBps} bps above hard/requested cap ${u.capBps}; route blocked`);let f=Number(c);if(!Number.isFinite(f))throw new Error("auto-slippage: quotedAtMs must be a finite number");let m=Math.min(3e4,Math.max(1e3,Number(d)||fr)),g=l*BigInt(1e4-u.selectedBps),h=g/10000n;if(g%10000n!==0n&&(h+=1n),h>l&&(h=l),l>0n&&h<=0n)throw new Error(`auto-slippage: quote ${l} is too small to express a ${u.selectedBps} bps floor without rounding to zero`);let b=Number((l-h)*10000n/(l===0n?1n:l));if(b>u.capBps)throw new Error(`auto-slippage: realised floor implies ${b} bps, above cap ${u.capBps} \u2014 refusing to issue a guard weaker than advertised`);return gr({mode:"auto",chainId:Number(e),venue:String(t||"unknown"),quoteAmountOut:l.toString(),minAmountOut:h.toString(),requiredBps:u.requiredBps,selectedBps:u.selectedBps,capBps:u.capBps,quotedAtMs:f,expiresAtMs:f+m},{secret:p})}function To(e){let t=String(e||"");if(!/^0x[0-9a-fA-F]+$/.test(t)||t.length<10||t.length%2!==0)return null;let r=t.slice(0,10).toLowerCase(),n=[];for(let a=10;a+64<=t.length;a+=64)n.push(t.slice(a,a+64));let o=a=>n[a]==null?null:BigInt("0x"+n[a]);switch(r){case"0x414bf389":return o(6);case"0x04e45aaf":return o(5);case"0xc04b8d59":{let a=o(0);if(a==null)return null;let s=Number(a)/32;return!Number.isInteger(s)||s<0?null:o(s+4)}case"0xb858183f":{let a=o(0);if(a==null)return null;let s=Number(a)/32;return!Number.isInteger(s)||s<0?null:o(s+3)}case"0xa026383e":return o(6);case"0x38ed1739":case"0x5c11d795":return o(1);case"0x7ff36ab5":case"0xb6f9de95":return o(0);case"0x18cbafe5":case"0x791ac947":return o(1);default:return null}}function T(e,{chainId:t,venue:r,amountOut:n,liquidityUsd:o,priceChange5m:a,crossChain:s,requestedCapBps:i,quotedAtMs:c=Date.now(),ttlMs:d}={}){let p=$o({chainId:t,venue:r,quoteAmountOut:n,liquidityUsd:o,priceChange5m:a,crossChain:s,requestedCapBps:i,quotedAtMs:c,ttlMs:d});return{...e,autoSlippage:p,amountOutMinimum:p.minAmountOut}}var Ne,fr,G=O(()=>{dr();pr();Ne=100,fr=2e4});function bt(e){let t=String(e||"").trim();return/^0x[0-9a-fA-F]{40}$/.test(t)?t:X}var X,Te=O(()=>{X="0x000000000000000000000000000000000000dEaD"});import{createHash as Bo,createHmac as Ro,timingSafeEqual as hs}from"node:crypto";function yt(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(yt).join(",")}]`:`{${Object.keys(e).sort().map(r=>`${JSON.stringify(r)}:${yt(e[r])}`).join(",")}}`}function wr(e){let t=String(e?.ORACLE_STAMP_HMAC_SECRET||"").trim();return t.length>=16?t:""}function br(e=process.env){return wr(process.env)||wr(e)}function Fo(e){let{prepareHash:t,prepareMac:r,note:n,...o}=e||{};return o}function Lo(e){let t=Fo(e);return Bo("sha256").update(yt(t)).digest("hex")}function Do(e,t=br()){return t?Ro("sha256",t).update(String(e)).digest("hex"):""}function N(e,{provider:t,kind:r,env:n=process.env,nowMs:o=Date.now(),expiresAtMs:a}={}){if(!e||typeof e!="object")throw new Error("stampPrepared: payload object required");let s=Object.prototype.hasOwnProperty.call(e,"oraclePrepared");if(s&&typeof e.oraclePrepared!="boolean")throw new Error("stampPrepared: oraclePrepared must be boolean");let i={...e,provider:e.provider||t,kind:e.kind||r,requiresUserSignature:e.requiresUserSignature!==!1,signingReady:!1,broadcastReady:!1,executionReady:!1,oraclePrepared:s?e.oraclePrepared:!0};if(!i.provider)throw new Error("stampPrepared: provider required");if(!i.kind)throw new Error("stampPrepared: kind required");let c=Number(o),d=a==null?c+Uo:Number(a),p=d-c;if(!Number.isSafeInteger(c)||!Number.isSafeInteger(d)||p<=0||p>Po)throw new Error("stampPrepared: bounded preparedAt/expiresAt required");let u={...i,preparedAt:c,expiresAt:d,prepareVersion:_o},f=Lo(u),m=br(n),g=m?Do(f,m):void 0,h={...u,prepareHash:f};return g&&(h.prepareMac=g),h}var _o,Uo,Po,q=O(()=>{_o=2,Uo=300*1e3,Po=(()=>{let e=Number(process.env.ORACLE_PREPARE_HARD_MAX_AGE_MS);return Number.isFinite(e)&&e>0?e:1800*1e3})()});import{Contract as qo,JsonRpcProvider as Mo}from"ethers";function Wo(e){return zo.test(String(e||""))}async function yr(e,{contract:t=Vo,rpc:r=jo,chainId:n=Ho,balanceOf:o}={}){if(!Wo(e))throw new Error("invalid-address");if(o)return BigInt(await o(e));let a=new Mo(r,n,{staticNetwork:!0}),s=new qo(t,Ko,a);return BigInt(await s.balanceOf(e))}var Vo,Ho,jo,Ko,zo,Er=O(()=>{Vo="0x62FCFAf7573AD8B41a0FBF347AfEb85e06599A75",Ho=999,jo="https://rpc.hyperliquid.xyz/evm",Ko=["function balanceOf(address owner) view returns (uint256)"],zo=/^0x[a-fA-F0-9]{40}$/});import{existsSync as Go,readFileSync as Xo,lstatSync as Yo}from"node:fs";import{homedir as Ar}from"node:os";import{join as Et}from"node:path";function Zo(e){let t=String(e||"swap").toLowerCase();return Object.prototype.hasOwnProperty.call(vr,t)?vr[t]:Jo}function oa(e=process.env){if(process.env.ORACLE_TEST_ISOLATE_SECRETS==="1"){if(e[Sr])return String(e[Sr]);let t=e.ORACLE_CONFIG_DIR||Et(Ar(),".config","oracle");return Et(t,"fee-recipient")}return Et(Ar(),".config","oracle","fee-recipient")}function aa(e=process.env){try{let t=oa(e);if(!Go(t)||Yo(t).isSymbolicLink())return"";let r=Xo(t,"utf8").trim().toLowerCase();return/^0x[a-f0-9]{40}$/.test(r)?r:""}catch{return""}}function ia(e,{fallback:t=0}={}){if(e==null)return t;if(String(e).trim()==="")return 0;let r=Number(e);return!Number.isFinite(r)||r<=0?0:Math.min(Math.floor(r),Qo)}function sa({env:e=process.env,action:t="swap",admin:r=!1}={}){let n=String(e[ta]||"").trim(),o=String(e[ra]||na).trim();if(r===!0)return{bps:0,recipient:"",integrator:o,action:t,applies:!1,reason:"admin-oracle"};let a=Zo(t),s=ia(e[ea],{fallback:n?a:0}),i=Math.min(s,a);if(!i)return{bps:0,recipient:"",integrator:o,action:t,applies:!1,reason:"not-configured"};if(!/^0x[a-fA-F0-9]{40}$/.test(n))return{bps:0,recipient:"",integrator:o,action:t,applies:!1,reason:"no-recipient"};let c=aa(e);return!c||c!==n.toLowerCase()?{bps:0,recipient:"",integrator:o,action:t,applies:!1,reason:"recipient-not-pinned"}:{bps:i,recipient:n,integrator:o,action:t,applies:!0,reason:"configured"}}async function Be({wallet:e,env:t=process.env,action:r="swap",holderCheck:n={},admin:o=!1}={}){let a=sa({env:t,action:r,admin:o});if(o===!0)return{...a,holderVerificationStatus:"admin-oracle"};let s=String(e||"").trim().toLowerCase();if(!/^0x[a-f0-9]{40}$/.test(s))return{...a,holderVerificationStatus:"wallet-required"};try{return BigInt(await yr(s,n))>0n?{...a,bps:0,applies:!1,reason:"locals-only-holder",holderVerificationStatus:"holder"}:{...a,holderVerificationStatus:"non-holder"}}catch{return{...a,holderVerificationStatus:"unavailable"}}}function xr(e){return e?.applies?`Oracle routing fee ${e.bps} bps (${(e.bps/100).toFixed(2)}%) to ${e.recipient}.`:e?.reason==="admin-oracle"?"No Oracle fee (admin Oracle).":e?.reason==="locals-only-holder"?"No Oracle fee (Locals Only holder).":"No Oracle fee."}function Ir(e){return e?.applies?{integrator:e.integrator,fee:String(e.bps/1e4)}:{}}function Cr(e){return e?.applies?{partner:e.integrator,partnerFeeBps:String(e.bps),partnerAddress:e.recipient}:{}}var Qo,Jo,vr,ea,ta,ra,Sr,na,Re=O(()=>{Er();Qo=100,Jo=5,vr=Object.freeze({swap:5,bridge:5,perps:0,nft:0});ea="ORACLE_INTEGRATOR_FEE_BPS",ta="ORACLE_INTEGRATOR_FEE_RECIPIENT",ra="ORACLE_INTEGRATOR_ID",Sr="ORACLE_INTEGRATOR_FEE_RECIPIENT_PIN",na="oracle"});var St={};te(St,{LIFI_API:()=>Or,lifiChains:()=>pa,lifiHealth:()=>la,lifiPrepare:()=>da,lifiQuote:()=>pe});function vt(e={}){return(e.baseUrl||process.env.LIFI_API_URL||Or).replace(/\/$/,"")}function ca(e){let t=String(e||At).toLowerCase();return t===At.toLowerCase()||t===ua}function kr(e,t){let r=String(e||"").trim();if(!/^0x[0-9a-fA-F]{40}$/.test(r))throw new Error(`lifi: ${t} must be a 20-byte address`);return r.toLowerCase()}async function la(e={}){let t=await k(`${vt(e)}/chains`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??12e3}),r=Array.isArray(t)?t.length:t?.chains?.length||0;return{ok:r>0,chainCount:r}}async function pe(e={},t={}){let{fromChain:r,toChain:n=r,fromToken:o=At,toToken:a,fromAmount:s,fromAddress:i=X}=e;if(r==null||!a||!s)throw new Error("lifiQuote requires fromChain, toToken, fromAmount");let c=new URLSearchParams({fromChain:String(r),toChain:String(n),fromToken:o,toToken:a,fromAmount:String(s),fromAddress:i}),d=W({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(n)!==Number(r),requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!d.executable)throw new Error(`lifi: route requires ${d.requiredBps} bps above cap ${d.capBps}`);c.set("slippage",String(d.selectedBps/1e4));let p=await Be({wallet:e.fromAddress,env:t.env,action:e.feeAction||"swap",holderCheck:t.holderCheck});for(let[h,b]of Object.entries(Ir(p)))c.set(h,b);let l=await k(`${vt(t)}/quote?${c}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4}),u=l?.estimate?.toAmount||l?.toAmount;if(!u)return{...l,autoSlippagePolicy:d,oracleFee:p};let f=l?.transactionRequest?.to||l?.estimate?.approvalAddress||"lifi",m=T(l,{chainId:Number(r),venue:f,amountOut:u,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(n)!==Number(r),requestedCapBps:e.maxSlippageBps??e.slippageBps}),g=l?.estimate?.toAmountMin||l?.toAmountMin;if(g!=null&&BigInt(g)<BigInt(m.amountOutMinimum))throw new Error("lifi: provider transaction is under-protected versus bounded auto-slippage floor");return{...m,oracleFee:p}}async function da(e={},t={}){let r=await pe(e,t),n=r?.transactionRequest;if(!n?.to||!n?.data)throw new Error("lifi: quote did not return an executable transactionRequest");let o=Number(e.fromChain);if(n.chainId!=null&&Number(n.chainId)!==o)throw new Error("lifi: transaction chain mismatch");if(e.fromAddress&&n.from&&String(n.from).toLowerCase()!==String(e.fromAddress).toLowerCase())throw new Error("lifi: transaction sender mismatch");let a=null;if(!ca(e.fromToken)){let s=r?.estimate?.approvalAddress||r?.approvalAddress;if(!s)throw new Error("lifi: ERC20 route missing approvalAddress");let i=r?.action?.fromToken?.address||r?.estimate?.fromToken?.address||e.fromToken;a={token:kr(i,"approval token"),spender:kr(s,"approval spender"),amount:String(e.fromAmount)}}return N({provider:"lifi",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:o,quote:r,autoSlippage:r.autoSlippage,requiresApproval:a,transaction:{chainId:o,from:n.from||e.fromAddress,to:n.to,data:n.data,value:n.value??"0x0",...n.gasLimit!=null?{gasLimit:n.gasLimit}:{},slippageGuard:D(r.autoSlippage,{chainId:o,venue:n.to,data:n.data})}},{provider:"lifi",kind:"lifi-tx"})}async function pa(e={}){return k(`${vt(e)}/chains`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??12e3})}var Or,At,ua,_e=O(()=>{K();G();Te();q();Re();Or="https://li.quest/v1";At="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",ua="0x0000000000000000000000000000000000000000"});var Tr={};te(Tr,{PARASWAP_API:()=>Nr,paraswapHealth:()=>ma,paraswapPrepare:()=>fa,paraswapPrice:()=>Ue,paraswapTokens:()=>$r});function ae(e,t){let r=String(e||"");if(!/^0x[0-9a-fA-F]{40}$/.test(r))throw new Error(`${t} must be a 20-byte token address`);return r.toLowerCase()}async function $r(e={},t={}){let r=Number(e.chainId||1);return k(`${xt(t)}/tokens/${r}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function Ue(e={},t={}){let r=Number(e.chainId||e.network||1);if(e.amount==null)throw new Error("amount required");let n=new URLSearchParams({srcToken:ae(e.srcToken,"srcToken"),destToken:ae(e.destToken,"destToken"),amount:String(e.amount),srcDecimals:String(Number(e.srcDecimals)),destDecimals:String(Number(e.destDecimals)),side:String(e.side||"SELL").toUpperCase(),network:String(r),version:String(e.version||"6.2")});e.includeDEXS&&n.set("includeDEXS",String(e.includeDEXS)),e.excludeDEXS&&n.set("excludeDEXS",String(e.excludeDEXS));let o=await Be({wallet:e.userAddress||e.fromAddress,env:t.env,action:e.feeAction||"swap",holderCheck:t.holderCheck});for(let[i,c]of Object.entries(Cr(o)))n.set(i,c);let a=await k(`${xt(t)}/prices?${n}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4}),s=a?.priceRoute?.destAmount;return s?{...T(a,{chainId:r,venue:a?.priceRoute?.contractAddress||"paraswap-quote",amountOut:s,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,quoteAgeMs:0,requestedCapBps:e.maxSlippageBps??e.slippageBps}),executionReady:!1,executionBlocker:"call prepare to bind the price route to a validated transaction",oracleFee:o}:{...a,executionReady:!1,oracleFee:o}}async function fa(e={},t={}){if(String(e.side||"SELL").toUpperCase()!=="SELL")throw new Error("paraswap: agentic prepare currently supports exact-input SELL only");let r=Number(e.chainId||e.network||1),n=ae(e.userAddress,"userAddress"),o=await Ue(e,t),a=o?.priceRoute,s=String(a?.contractAddress||"").toLowerCase();if(!s)throw new Error("paraswap: price route missing contractAddress");let i={srcToken:ae(e.srcToken,"srcToken"),destToken:ae(e.destToken,"destToken"),srcAmount:String(a.srcAmount||e.amount),destAmount:String(o.amountOutMinimum),priceRoute:a,userAddress:n,ignoreChecks:!1,ignoreGasEstimate:!1};e.receiver&&(i.receiver=ae(e.receiver,"receiver"));let c=await k(`${xt(t)}/transactions/${r}`,{method:"POST",body:i,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??25e3});if(Number(c.chainId??r)!==r)throw new Error("paraswap: transaction chain mismatch");if(String(c.to||"").toLowerCase()!==s)throw new Error("paraswap: transaction target mismatch");if(c.from&&String(c.from).toLowerCase()!==n)throw new Error("paraswap: transaction sender mismatch");return N({provider:"paraswap",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,quote:o,autoSlippage:o.autoSlippage,requiresApproval:i.srcToken!=="0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"?{token:i.srcToken,spender:a.tokenTransferProxy||s,amount:i.srcAmount}:null,transaction:{chainId:r,from:c.from||n,to:c.to,data:c.data,value:c.value??"0x0",...c.gas!=null?{gasLimit:c.gas}:{},slippageGuard:D(o.autoSlippage,{chainId:r,venue:c.to,data:c.data})}},{provider:"paraswap",kind:"paraswap-tx"})}async function ma(e={}){let t=await $r({chainId:1},e),r=Array.isArray(t?.tokens)?t.tokens.length:Object.keys(t?.tokens||{}).length;return{ok:r>0,tokenSample:r}}var Nr,xt,It=O(()=>{K();G();q();Re();Nr="https://api.paraswap.io",xt=(e={})=>(e.baseUrl||process.env.PARASWAP_API_URL||Nr).replace(/\/$/,"")});function Pe({provider:e,defaultUrl:t,hosts:r=[],url:n,strict:o=!1}){let s=(String(n??"").trim()||String(t)).replace(/\/$/,"");if(s===String(t).replace(/\/$/,""))return{baseUrl:s,trusted:!0,host:Rr(t)};let i;try{i=new URL(s)}catch{throw new Error(`${e}: baseUrl must be an absolute http(s) URL`)}if(i.protocol!=="http:"&&i.protocol!=="https:")throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);let c=i.host;if(!c)throw new Error(`${e}: baseUrl must be an absolute http(s) URL`);if(new Set([Rr(t),...r]).has(c)){let p=/^(127\.0\.0\.1|localhost|\[::1\])(:\d+)?$/i.test(c);return i.protocol==="http:"&&!p?{baseUrl:s,trusted:!1,host:c,reason:"plaintext http downgrade"}:{baseUrl:s,trusted:!0,host:c}}if(String(process.env[Br]||"")==="1")return{baseUrl:s,trusted:!1,host:c};if(o)throw new Error(`${e}: refusing to call non-allowlisted host ${c} (set ${Br}=1 to permit it)`);return{baseUrl:s,trusted:!1,host:c}}function Rr(e){let t=new URL(String(e));if(t.protocol!=="http:"&&t.protocol!=="https:")throw new Error("unsupported protocol");return t.host}function Fe(e,t,r){let n={...e};if(!r)return n;for(let[o,a]of Object.entries(t||{}))a&&(n[o]=a);return n}var Br,Ct=O(()=>{Br="ORACLE_ALLOW_CUSTOM_PROVIDER_URL"});var Dr={};te(Dr,{ZEROX_API:()=>_r,zeroxHealth:()=>ha,zeroxPrepare:()=>ga,zeroxPrice:()=>Lr,zeroxQuote:()=>De});function Ur(e={}){return Pe({provider:"zerox",defaultUrl:_r,hosts:["api.0x.org"],url:e.baseUrl||process.env.ZEROX_API_URL})}function Pr(e={}){return Ur(e).baseUrl}function Le(e={}){return e.apiKey||process.env.ZEROX_API_KEY||process.env.OX_API_KEY||process.env["0X_API_KEY"]||""}function Fr(e={}){return Fe({"0x-version":"v2",accept:"application/json"},{"0x-api-key":Le(e)},Ur(e).trusted)}async function ha(e={}){if(!Le(e))return{ok:!1,configured:!1,error:"ZEROX_API_KEY not set"};try{let t=await Lr({chainId:8453,sellToken:"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",buyToken:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",sellAmount:"1000000000000000"},e);return{ok:!0,configured:!0,buyAmount:t.buyAmount||t.grossBuyAmount}}catch(t){return{ok:!1,configured:!0,error:String(t.message||t).slice(0,160)}}}async function Lr(e={},t={}){if(!Le(t))throw new Error("ZEROX_API_KEY required for 0x");let{chainId:r=8453,sellToken:n,buyToken:o,sellAmount:a,taker:s}=e;if(!n||!o||!a)throw new Error("zeroxPrice requires sellToken, buyToken, sellAmount");let i=new URLSearchParams({chainId:String(r),sellToken:n,buyToken:o,sellAmount:String(a)});return s&&i.set("taker",s),k(`${Pr(t)}/swap/allowance-holder/price?${i}`,{headers:Fr(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3})}async function De(e={},t={}){if(!Le(t))throw new Error("ZEROX_API_KEY required for 0x");let{chainId:r=8453,sellToken:n,buyToken:o,sellAmount:a,taker:s}=e;if(!n||!o||!a)throw new Error("zeroxQuote requires sellToken, buyToken, sellAmount");let i=W({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!i.executable)throw new Error(`0x: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let c=new URLSearchParams({chainId:String(r),sellToken:n,buyToken:o,sellAmount:String(a),slippageBps:String(i.selectedBps)});s&&c.set("taker",s);let d=await k(`${Pr(t)}/swap/allowance-holder/quote?${c}`,{headers:Fr(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3}),p=d?.buyAmount||d?.grossBuyAmount;return p?T(d,{chainId:r,venue:d?.transaction?.to||d?.to||"0x",amountOut:p,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):{...d,autoSlippagePolicy:i}}async function ga(e={},t={}){if(!e.taker)throw new Error("0x: taker required for executable prepare");let r=await De(e,t),n=r?.transaction;if(!n?.to||!n?.data)throw new Error("0x: firm quote returned no transaction");let o=Number(e.chainId??8453),a=r?.issues?.allowance?.spender||r?.allowanceTarget;return N({provider:"zerox",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:o,quote:r,autoSlippage:r.autoSlippage,requiresApproval:r?.issues?.allowance?.actual!=null&&BigInt(r.issues.allowance.actual)<BigInt(e.sellAmount)?{token:e.sellToken,spender:a,amount:String(e.sellAmount)}:null,transaction:{chainId:o,from:e.taker,to:n.to,data:n.data,value:n.value??"0x0",...n.gas!=null?{gasLimit:n.gas}:{},slippageGuard:D(r.autoSlippage,{chainId:o,venue:n.to,data:n.data})}},{provider:"zerox",kind:"zerox-tx"})}var _r,kt=O(()=>{K();G();Ct();q();_r="https://api.0x.org"});var js,Hr=O(()=>{js=Object.freeze({READ:"read",PREPARE:"prepare",EXECUTE:"execute",AUTONOMOUS:"autonomous"})});var Zr={};te(Zr,{COW_CANCEL_TYPES:()=>Gr,COW_HOSTS:()=>Nt,COW_ORDER_TYPES:()=>qe,COW_SETTLEMENT:()=>Kr,COW_VAULT_RELAYER:()=>zr,cowCancelOrders:()=>Ta,cowChains:()=>_a,cowHealth:()=>xa,cowOrder:()=>Jr,cowOrderStatus:()=>Qr,cowOrderUid:()=>Ca,cowPrepareCancel:()=>Na,cowPrepareOrder:()=>Ia,cowQuote:()=>me,cowSignCancel:()=>$a,cowSignOrder:()=>ka,cowSubmitSignedOrder:()=>Oa,cowVerifyOrderFill:()=>Ra});import{TypedDataEncoder as jr,getAddress as fe,isAddress as Ea}from"ethers";function Me(e,t={}){if(t.baseUrl)return t.baseUrl.replace(/\/$/,"");let r=Nt[Number(e)];if(!r)throw new Error(`cowswap: unsupported chainId ${e}`);return r}function Aa(e,t="v1",r={}){let n=Me(e,r);return t==="v1"?n:n.replace(/\/api\/v1$/,`/api/${t}`)}function Y(e,t){let r=String(e||"").trim();if(!Ea(r))throw new Error(`cowswap: ${t} must be an address`);return fe(r).toLowerCase()}function ie(e,t){try{let r=BigInt(String(e));if(r<0n)throw new Error("negative");return r.toString()}catch{throw new Error(`cowswap: ${t} must be a non-negative integer string`)}}function Xr(e,t){let r=String(e||"").trim();if(!/^0x[0-9a-fA-F]{64}$/.test(r))throw new Error(`cowswap: ${t} must be bytes32 hex`);return r.toLowerCase()}function Yr(e,t="uid"){let r=String(e||"").trim();if(!/^0x[0-9a-fA-F]{112}$/.test(r))throw new Error(`cowswap: ${t} must be 56-byte order UID hex`);return r.toLowerCase()}function va({digest:e,owner:t,validTo:r}={}){let n=Xr(e,"order digest").slice(2),o=Y(t,"owner").slice(2).toLowerCase(),a=Number(r);if(!Number.isInteger(a)||a<0||a>4294967295)throw new Error("cowswap: validTo must fit uint32");return`0x${n}${o}${a.toString(16).padStart(8,"0")}`.toLowerCase()}function $t(e){let t=Kr[Number(e)];if(!t)throw new Error(`cowswap: settlement contract not registered for chain ${e}`);return{name:"Gnosis Protocol",version:"v2",chainId:Number(e),verifyingContract:fe(t)}}function Sa(e={},t,r){let n=Y(e.sellToken,"sellToken"),o=Y(e.buyToken,"buyToken"),a=Y(e.receiver||r,"receiver"),s=Number(e.validTo);if(!Number.isInteger(s)||s<=0)throw new Error("cowswap: quote.validTo required");let i=Xr(e.appData||e.appDataHash||`0x${"0".repeat(64)}`,"appData");return{sellToken:n,buyToken:o,receiver:a,sellAmount:ie(e.sellAmount,"sellAmount"),buyAmount:ie(e.buyAmount,"buyAmount"),validTo:s,appData:i,feeAmount:ie(e.feeAmount??"0","feeAmount"),kind:String(e.kind||"sell"),partiallyFillable:!!e.partiallyFillable,sellTokenBalance:String(e.sellTokenBalance||"erc20"),buyTokenBalance:String(e.buyTokenBalance||"erc20")}}async function xa(e={}){try{let t=await me({chainId:1,sellToken:Ot[1],buyToken:Wr[1],sellAmountBeforeFee:"1000000000000000",from:X},e);return{ok:!0,buyAmount:t.quote?.buyAmount||t.buyAmount}}catch(t){return{ok:!1,error:String(t.message||t).slice(0,160)}}}async function me(e={},t={}){let r=Number(e.chainId??1),n=bt(e.from||e.owner),o=e.sellToken||Ot[r],a=e.buyToken||Wr[r],s=String(e.sellAmountBeforeFee||e.sellAmount||"0");if(!o||!a||s==="0")throw new Error("cowQuote requires sellToken, buyToken, sellAmountBeforeFee");if(/eeeeeeee|native|^eth$/i.test(o)&&(o=Ot[r],!o))throw new Error("no WETH mapping for chain");let i={sellToken:o,buyToken:a,from:n,receiver:e.receiver||n,sellAmountBeforeFee:s,kind:e.kind||"sell",signingScheme:e.signingScheme||"eip1271"},c=await k(`${Me(r,t)}/quote`,{method:"POST",body:i,fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3}),d=c?.quote?.buyAmount||c?.buyAmount;return d?T(c,{chainId:r,venue:"cowswap-order",amountOut:d,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):c}async function Ia(e={},t={}){let r=Number(e.chainId??1),n=Y(bt(e.from||e.owner||e.signer),"owner"),o=await me({...e,chainId:r,from:n,signingScheme:e.signingScheme||"eip712"},t),a=Sa(o?.quote||o,r,n),s=$t(r),i={domain:s,types:qe,primaryType:"Order",message:a},c=jr.hash(s,qe,a),d=zr[r];if(!d)throw new Error(`cowswap: vault relayer not registered for chain ${r}`);return N({provider:"cowswap",orderReady:!0,executionReady:!1,chainId:r,owner:n,signingScheme:"eip712",settlement:s.verifyingContract.toLowerCase(),vaultRelayer:fe(d).toLowerCase(),quote:o,quoteId:o?.id??e.quoteId??null,typedData:i,cowGuard:{mode:"cow-order",version:1,provider:"cowswap",chainId:r,owner:n,settlement:s.verifyingContract.toLowerCase(),vaultRelayer:fe(d).toLowerCase(),sellToken:a.sellToken,buyToken:a.buyToken,sellAmount:a.sellAmount,buyAmount:a.buyAmount,validTo:a.validTo,quoteId:o?.id??e.quoteId??null,typedDataHash:c,issuedAtMs:Date.now(),expiresAtMs:Math.min(a.validTo*1e3,Date.now()+2e4)},requiresApproval:{token:a.sellToken,spender:fe(d).toLowerCase(),amount:a.sellAmount}},{provider:"cowswap",kind:"cow-order"})}async function Qr(e={},t={}){let r=Number(e.chainId??1),n=String(e.uid||e.orderUid||"").trim();if(!n)throw new Error("cowOrderStatus requires uid");return k(`${Me(r,t)}/orders/${encodeURIComponent(n)}/status`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3})}async function Jr(e={},t={}){let r=Number(e.chainId??1),n=String(e.uid||e.orderUid||"").trim();if(!n)throw new Error("cowOrder requires uid");return k(`${Me(r,t)}/orders/${encodeURIComponent(n)}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3})}function Ca(e={}){let t=e.typedData||e,r=Number(e.chainId??t?.domain?.chainId),n=t?.message||e.order||e.message;if(!n)throw new Error("cowswap: typed order message required");let o=e.cowGuard?.typedDataHash||jr.hash($t(r),qe,n),a=e.owner||e.from||e.signer||n.receiver;return va({digest:o,owner:a,validTo:n.validTo})}async function ka(e={},t={}){throw new Error("cowswap.cowSignOrder refused: @oracle-agent/oracle is prepare-only. Sign with the user wallet; do not pass private keys here.")}async function Oa(e={},t={}){throw new Error("cowswap.cowSubmitSignedOrder refused: @oracle-agent/oracle is prepare-only. Submit signed orders from the user wallet or local operator.")}function Na(e={}){let t=Number(e.chainId??1),r=Y(e.owner||e.from||e.signer,"owner"),n=(e.orderUids||e.uids||[e.uid]).filter(Boolean).map((s,i)=>Yr(s,`orderUids[${i}]`));if(!n.length)throw new Error("cowswap: orderUids required");let o=$t(t);return N({provider:"cowswap",chainId:t,owner:r,orderUids:n,signingScheme:"eip712",typedData:{domain:o,types:Gr,primaryType:"OrderCancellations",message:{orderUids:n}},cancelReady:!0,executableArtifact:!0},{provider:"cowswap",kind:"cow-cancel"})}async function $a(e={},t={}){throw new Error("cowswap.cowSignCancel refused: @oracle-agent/oracle is prepare-only. Cancel-sign with the user wallet.")}async function Ta(e={},t={}){throw new Error("cowswap.cowCancelOrders refused: @oracle-agent/oracle is prepare-only. Cancel from the user wallet or local operator.")}function Ba(e={}){return ie(e.buyAmount??e.executedBuyAmount??"0","trade.buyAmount")}async function Ra(e={},t={}){let r=Number(e.chainId??1),n=Yr(e.uid||e.orderUid),o=t.order||await Jr({chainId:r,uid:n},t),a=t.status||o.status||await Qr({chainId:r,uid:n},t).catch(()=>null),s=t.trades||await k(`${Aa(r,"v2",t)}/trades?orderUid=${encodeURIComponent(n)}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3}),i=Array.isArray(s)?s:[],c=e.expectedOwner?Y(e.expectedOwner,"expectedOwner"):null;if(c&&Y(o.owner||i[0]?.owner||c,"owner")!==c)return{ok:!1,provider:"cowswap",chainId:r,uid:n,reason:"owner mismatch",order:o,status:a,trades:i};let d=0n;for(let u of i.filter(f=>String(f.orderUid||"").toLowerCase()===n))d+=BigInt(Ba(u));d===0n&&o.executedBuyAmount!=null&&(d=BigInt(ie(o.executedBuyAmount,"executedBuyAmount")));let p=e.minBuyAmount!=null?BigInt(ie(e.minBuyAmount,"minBuyAmount")):0n,l=d>=p&&String(o.status||a?.status||"").toLowerCase()!=="expired";return{ok:l,provider:"cowswap",chainId:r,uid:n,status:o.status||a?.status||null,executedBuyAmount:d.toString(),minBuyAmount:e.minBuyAmount??null,trades:i,settlementTxs:[...new Set(i.map(u=>u.txHash).filter(Boolean))],order:o,orderStatus:a,reason:l?null:"insufficient fill or expired order"}}function _a(){return Object.keys(Nt).map(Number)}var Nt,Kr,zr,Ot,Wr,qe,Gr,Tt=O(()=>{K();G();Hr();Te();q();Nt={1:"https://api.cow.fi/mainnet/api/v1",100:"https://api.cow.fi/xdai/api/v1",42161:"https://api.cow.fi/arbitrum_one/api/v1",8453:"https://api.cow.fi/base/api/v1"},Kr=Object.freeze({1:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",100:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",42161:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41",8453:"0x9008D19f58AAbD9eD0D60971565AA8510560ab41"}),zr=Object.freeze({1:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",100:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",42161:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110",8453:"0xC92E8bdf79f0507f65a392b0ab4667716BFE0110"}),Ot={1:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",8453:"0x4200000000000000000000000000000000000006",42161:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"},Wr={1:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",8453:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",42161:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},qe=Object.freeze({Order:[{name:"sellToken",type:"address"},{name:"buyToken",type:"address"},{name:"receiver",type:"address"},{name:"sellAmount",type:"uint256"},{name:"buyAmount",type:"uint256"},{name:"validTo",type:"uint32"},{name:"appData",type:"bytes32"},{name:"feeAmount",type:"uint256"},{name:"kind",type:"string"},{name:"partiallyFillable",type:"bool"},{name:"sellTokenBalance",type:"string"},{name:"buyTokenBalance",type:"string"}]}),Gr=Object.freeze({OrderCancellations:[{name:"orderUids",type:"bytes[]"}]})});function tn(e){return Ua.get(Number(e))||null}function rn(e,t=process.env){let r=tn(e);if(!r)return null;for(let n of r.rpcEnv){let o=(t[n]||"").trim();if(o)return o}return null}var en,Ua,nn=O(()=>{en={robinhood:{chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC"],evm:!0},ethereum:{chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],evm:!0},polygon:{chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],evm:!0},arbitrum:{chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],evm:!0},base:{chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],evm:!0},hyperevm:{chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],evm:!0},bsc:{chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],evm:!0},avalanche:{chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],evm:!0},optimism:{chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],evm:!0},abstract:{chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],evm:!0},stable:{chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],evm:!0}},Ua=new Map(Object.values(en).map(e=>[e.chainId,e]))});import{Interface as Pa,getAddress as Fa}from"ethers";function an(e,t){try{return Fa(e).toLowerCase()}catch{throw new Error(`${t} must be a valid EVM address`)}}function Da(e,{rpcUrl:t,env:r=process.env}={}){if(t)return t;let n=rn(e,r);return n||La[Number(e)]||null}function Ma(e){let t=String(e||""),r=t.toLowerCase();if(t!==t.trim()||!/^[a-zA-Z0-9_]+$/.test(t)||!qa.test(r))throw new Error(`evm-rpc: ${t} refused \u2014 @oracle-agent/oracle is prepare-only (read RPC only; no broadcast/sign)`);return r}async function B(e,t,r=[],n={}){let o=String(t||"");Ma(o);let a=Da(e,n);if(!a)throw new Error(`No RPC URL for chainId ${e} (set env from chain registry rpcEnv or pass rpcUrl)`);let i=await k(a,{method:"POST",body:{jsonrpc:"2.0",id:1,method:t,params:r},fetchImpl:n.fetchImpl,timeoutMs:n.timeoutMs??12e3});if(i?.error){let c=new Error(i.error.message||JSON.stringify(i.error));throw c.code=i.error.code,c}return i.result}async function sn(e,t={}){let r=await B(e,"eth_blockNumber",[],t);return parseInt(r,16)}async function un(e,t={}){let r=await B(e,"eth_gasPrice",[],t);if(r==null)return null;try{return BigInt(r)}catch{return null}}async function cn(e,t,r={}){if(!t)throw new Error("rpcGetBalance requires address");let n=await B(e,"eth_getBalance",[t,"latest"],r);return{chainId:Number(e),address:t,balanceWei:BigInt(n).toString(),balanceHex:n}}async function ln(e={},t={}){let r=Number(e.chainId??t.chainId??1),n=an(e.token||e.tokenAddress,"token"),o=an(e.account||e.owner||e.address,"account"),a=on.encodeFunctionData("balanceOf",[o]),s=await B(r,"eth_call",[{to:n,data:a},e.blockTag||"latest"],t),i=on.decodeFunctionResult("balanceOf",s),c=BigInt(i[0]);return{chainId:r,token:n,account:o,balance:c.toString(),balanceHex:`0x${c.toString(16)}`,blockTag:e.blockTag||"latest"}}var on,La,qa,ne=O(()=>{K();nn();on=new Pa(["function allowance(address owner,address spender) view returns (uint256)","function balanceOf(address account) view returns (uint256)"]);La={1:"https://ethereum.publicnode.com",137:"https://polygon-bor-rpc.publicnode.com",42161:"https://arbitrum-one-rpc.publicnode.com",8453:"https://base-rpc.publicnode.com",10:"https://optimism-rpc.publicnode.com",988:"https://rpc.stable.xyz",56:"https://bsc-rpc.publicnode.com",43114:"https://avalanche-c-chain-rpc.publicnode.com",999:"https://rpc.hyperliquid.xyz/evm",2741:"https://api.mainnet.abs.xyz",4663:"https://rpc.mainnet.chain.robinhood.com"};qa=/^(?:eth_(?:call|blocknumber|chainid|get[a-z0-9]+|feehistory|gasprice|maxpriorityfeepergas|syncing|protocolversion|estimategas|createaccesslist)|net_(?:version|listening|peercount)|web3_(?:clientversion|sha3))$/});function Ka(e,t,r){let n=M(t),o=M(r),a=M(e?.baseToken?.address),s=M(e?.quoteToken?.address);return a===n&&s===o||a===o&&s===n}function za(e){let t=Number(e?.liquidity?.usd);return Number.isFinite(t)&&t>=0?t:null}function Wa(e={}){return(e.baseUrl||process.env.DEXSCREENER_API_URL||Va).replace(/\/$/,"")}async function Bt(e,t={}){if(!e)throw new Error("tokenAddress required");return k(`${Wa(t)}/latest/dex/tokens/${e}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??12e3})}async function he({chainId:e,tokenA:t,tokenB:r,dexIds:n=[]}={},o={}){if(e==null||!t||!r)throw new Error("chainId, tokenA, and tokenB required");let a=M(Ha[Number(e)]||e),s=new Set(ja(n).filter(Boolean).map(M)),i=[...new Set([t,r].map(u=>String(u)).filter(Boolean))],c=await Promise.allSettled(i.map(u=>Bt(u,{...o,baseUrl:o.dexscreenerBaseUrl,timeoutMs:o.dexscreenerTimeoutMs??Math.min(Number(o.timeoutMs??4e3),4e3)}))),d=new Set,p=[];for(let u of c)if(u.status==="fulfilled")for(let f of u.value?.pairs||u.value?.data?.pairs||[]){let m=`${M(f?.chainId)}:${M(f?.dexId)}:${M(f?.pairAddress)}`;d.has(m)||(d.add(m),p.push(f))}return p.filter(u=>M(u?.chainId)===a).filter(u=>Ka(u,t,r)).filter(u=>!s.size||s.has(M(u?.dexId))).map(u=>({pairAddress:u.pairAddress??null,dexId:u.dexId??null,chainId:u.chainId??null,liquidityUsd:za(u),pairCreatedAt:u.pairCreatedAt??null})).filter(u=>u.liquidityUsd!=null).sort((u,f)=>f.liquidityUsd-u.liquidityUsd)[0]??null}var Va,Ha,M,ja,Ve=O(()=>{K();Va="https://api.dexscreener.com",Ha=Object.freeze({1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avalanche",999:"hyperevm",4663:"robinhood"}),M=e=>String(e??"").toLowerCase(),ja=e=>Array.isArray(e)?e:e==null?[]:[e]});var bn={};te(bn,{PANCAKE_FEE_TIERS:()=>He,UNI_V3_CHAINS:()=>U,UNI_V3_FEE_TIERS:()=>fn,UNI_V3_VENUES:()=>gn,uniV3Chains:()=>ei,uniV3EthUsdc:()=>wn,uniV3Health:()=>Za,uniV3PrepareExactIn:()=>Ja,uniV3QuoteExactIn:()=>we,uniV3QuoteExactInPath:()=>Qa});import{Interface as pn,getAddress as ge,isAddress as Ga}from"ethers";function _t(e,t){let r=Number(e),n=U[r];if(!n)throw new Error(`uniswap-v3: unsupported chainId ${e} (supported: ${Object.keys(U).join(", ")})`);let o=gn[r]||{};if(!t){if(!n.quoter||!n.router){let c=Object.keys(o).join(", ")||"none registered";throw new Error(`uniswap-v3: chain ${r} (${n.name}) has no canonical Uniswap v3 deployment -- name a venue explicitly (known: ${c})`)}return{chainId:r,venue:n.name,...n}}let a=String(t).toLowerCase();if(a===n.name&&n.quoter&&n.router)return{chainId:r,venue:n.name,...n};let s=o,i=s[a];if(!i){let c=[...n.quoter&&n.router?[n.name]:[],...Object.keys(s)].join(", ");throw new Error(`uniswap-v3: unknown venue "${t}" on chain ${r} (known: ${c})`)}return{chainId:r,venue:a,...n,quoter:i.quoter,router:i.router,feeTiers:i.feeTiers||null}}function Rt(e,t){let r=U[Number(t)];if(!e||e===mn||e===hn||/^eth$/i.test(String(e)))return ge(r.weth);let n=String(e);if(/^weth$/i.test(n))return ge(r.weth);if(/^usdc$/i.test(n))return ge(r.usdc);if(!Ga(n))throw new Error(`invalid token address: ${e}`);return ge(n)}function Xa(e){let t=String(e||"uniswap").toLowerCase();return t==="uniswap"?["uniswap-v3","uniswap"]:t==="pancakeswap"?["pancakeswap-v3","pancakeswap"]:t==="hyperswap"?["hyperswap-v3","hyperswap"]:[t,`${t}-v3`]}function Ya(e,t){if(e.length!==t.length+1)throw new Error("path: fees.length must be tokens.length - 1");let r="0x";for(let n=0;n<t.length;n++)r+=e[n].slice(2).toLowerCase(),r+=Number(t[n]).toString(16).padStart(6,"0");return r+=e[e.length-1].slice(2).toLowerCase(),r}async function we(e={},t={}){let{chainId:r,quoter:n,router:o,feeTiers:a}=_t(e.chainId??8453,e.venue),s=Rt(e.tokenIn||"WETH",r),i=Rt(e.tokenOut||U[r].usdc,r),c=BigInt(e.amountIn??0);if(c<=0n)throw new Error("amountIn required (raw base units)");let d=a&&a.length?a:fn,p=e.fee!=null?[Number(e.fee)]:e.tryFees===!1?[d[Math.min(2,d.length-1)]]:[...d],l=[],u=null;for(let g of p){let h=je.encodeFunctionData("quoteExactInputSingle",[{tokenIn:s,tokenOut:i,amountIn:c,fee:g,sqrtPriceLimitX96:0n}]);try{let b=await B(r,"eth_call",[{to:n,data:h},"latest"],t);if(!b||b==="0x"){l.push({fee:g,ok:!1,error:"empty result"});continue}let w=je.decodeFunctionResult("quoteExactInputSingle",b),y={fee:g,ok:!0,amountOut:w[0].toString(),sqrtPriceX96After:w[1].toString(),initializedTicksCrossed:Number(w[2]),gasEstimate:w[3].toString()};l.push(y),(!u||BigInt(y.amountOut)>BigInt(u.amountOut))&&(u=y)}catch(b){l.push({fee:g,ok:!1,error:String(b.message||b).slice(0,160)})}}if(!u){let g=l.map(h=>`${h.fee}:${h.error||"fail"}`).join("; ");throw new Error(`uniswap-v3 quote failed chain=${r}: ${g}`)}let f=e.liquidityUsd==null?await he({chainId:r,tokenA:s,tokenB:i,dexIds:Xa(e.venue)},t).catch(()=>null):null,m=e.liquidityUsd??f?.liquidityUsd??null;return T({venue:"uniswap-v3",chainId:r,chain:U[r].name,quoter:n,tokenIn:s,tokenOut:i,amountIn:c.toString(),fee:u.fee,amountOut:u.amountOut,gasEstimate:u.gasEstimate,liquidityUsd:m,liquiditySource:f,sqrtPriceX96After:u.sqrtPriceX96After,initializedTicksCrossed:u.initializedTicksCrossed,triedFees:l,best:!0},{chainId:r,venue:o,amountOut:u.amountOut,liquidityUsd:m,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function Qa(e={},t={}){let{chainId:r,quoter:n,router:o}=_t(e.chainId??8453),a=(e.tokens||[]).map(u=>Rt(u,r)),s=(e.fees||[]).map(Number);if(a.length<2)throw new Error("tokens[] need at least 2 addresses");let i=BigInt(e.amountIn??0);if(i<=0n)throw new Error("amountIn required");let c=Ya(a,s),d=je.encodeFunctionData("quoteExactInput",[c,i]),p=await B(r,"eth_call",[{to:n,data:d},"latest"],t),l=je.decodeFunctionResult("quoteExactInput",p);return T({venue:"uniswap-v3",chainId:r,chain:U[r].name,quoter:n,tokens:a,fees:s,path:c,amountIn:i.toString(),amountOut:l[0].toString(),gasEstimate:l[3].toString()},{chainId:r,venue:o,amountOut:l[0].toString(),liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function wn(e={},t={}){let r=Number(e.chainId??8453),n=e.amountIn??"1000000000000000",o=await we({chainId:r,tokenIn:U[r].weth,tokenOut:U[r].usdc,amountIn:n,fee:e.fee},t),a=Number(o.amountOut)/1e6;return{...o,amountOutUsdc:a,pair:"WETH/USDC"}}async function Ja(e={},t={}){let r=Number(e.chainId??8453),n=_t(r,e.venue),o=ge(e.recipient),a=String(e.tokenIn||"WETH"),s=!e.tokenIn||a===mn||a===hn||/^eth$/i.test(a),i=await we(e,t),c=dn.encodeFunctionData("exactInputSingle",[{tokenIn:i.tokenIn,tokenOut:i.tokenOut,fee:i.fee,recipient:o,amountIn:BigInt(i.amountIn),amountOutMinimum:BigInt(i.amountOutMinimum),sqrtPriceLimitX96:0n}]),d=Math.min(600,Math.max(30,Number(e.deadlineSeconds??300))),l=Number(t.nowSeconds??Math.floor(Date.now()/1e3))+d,u=dn.encodeFunctionData("multicall",[l,[c]]);return N({provider:"uniswap-v3",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,deadline:l,quote:i,autoSlippage:i.autoSlippage,requiresApproval:s?null:{token:i.tokenIn,spender:n.router,amount:i.amountIn},transaction:{chainId:r,from:o,to:n.router,data:u,value:s?i.amountIn:"0",slippageGuard:D(i.autoSlippage,{chainId:r,venue:n.router,data:u})}},{provider:"uniswap-v3",kind:"univ3-swap-tx"})}async function Za(e={}){let t=Number(e.chainId??8453);try{let r=await wn({chainId:t,amountIn:"1000000000000000"},e);return{ok:!0,chainId:t,fee:r.fee,amountOutUsdc:r.amountOutUsdc,midPxHint:r.amountOutUsdc/.001}}catch(r){return{ok:!1,chainId:t,error:String(r.message||r).slice(0,200)}}}async function ei(){return Object.entries(U).map(([e,t])=>({chainId:Number(e),name:t.name,quoter:t.quoter,weth:t.weth,usdc:t.usdc}))}var U,fn,je,dn,mn,hn,He,gn,Ke=O(()=>{ne();Ve();G();q();U={1:{name:"ethereum",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",usdc:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},8453:{name:"base",quoter:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",router:"0x2626664c2603336E57B271c5C0b26F421741e481",weth:"0x4200000000000000000000000000000000000006",usdc:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},42161:{name:"arbitrum",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",usdc:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},4663:{name:"robinhood",quoter:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",router:"0xcaf681a66d020601342297493863e78c959e5cb2",weth:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",usdc:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"},999:{name:"hyperevm",weth:"0x5555555555555555555555555555555555555555",usdc:"0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb"},10:{name:"optimism",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x4200000000000000000000000000000000000006",usdc:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"},56:{name:"bsc",quoter:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",router:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",usdc:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"},137:{name:"polygon",quoter:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",router:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",usdc:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"},43114:{name:"avalanche",quoter:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",router:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",usdc:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"}},fn=[100,500,3e3,1e4],je=new pn(["function quoteExactInputSingle((address tokenIn, address tokenOut, uint256 amountIn, uint24 fee, uint160 sqrtPriceLimitX96) params) returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)","function quoteExactInput(bytes path, uint256 amountIn) returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)"]),dn=new pn(["function exactInputSingle((address tokenIn,address tokenOut,uint24 fee,address recipient,uint256 amountIn,uint256 amountOutMinimum,uint160 sqrtPriceLimitX96) params) payable returns (uint256 amountOut)","function multicall(uint256 deadline,bytes[] data) payable returns (bytes[] results)"]),mn="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",hn="0x0000000000000000000000000000000000000000",He=[100,500,2500,1e4],gn={56:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:He}},8453:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:He}},42161:{pancakeswap:{name:"pancakeswap",quoter:"0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997",router:"0x13f4EA83D0bd40E75C8222255bc855a974568Dd4",feeTiers:He}},999:{hyperswap:{name:"hyperswap",quoter:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",router:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D"}}}});var Sn={};te(Sn,{UNI_V4_CHAINS:()=>H,UNI_V4_FEE_TIERS:()=>Ut,computeV4PoolId:()=>Pt,uniV4Chains:()=>ci,uniV4Health:()=>li,uniV4PrepareExactIn:()=>ui,uniV4QuoteExactIn:()=>Ye,uniV4QuoteExactOut:()=>si});import{AbiCoder as ti,Interface as yn,getAddress as V,isAddress as Ge,keccak256 as ri}from"ethers";function Xe(e){let t=Number(e),r=H[t];if(!r)throw new Error(`uniswap-v4: unsupported chainId ${e} (supported: ${Object.keys(H).join(", ")})`);return{chainId:t,...r}}function We(e,t){let r=H[Number(t)];if(!e||e===En||e===Q||/^eth$/i.test(String(e)))return V(r.weth);let n=String(e);if(/^weth$/i.test(n))return V(r.weth);if(/^usdc$/i.test(n)||/^usdg$/i.test(n))return V(r.usdc);if(!Ge(n))throw new Error(`invalid token address: ${e}`);return V(n)}function Pt({currency0:e,currency1:t,fee:r,tickSpacing:n,hooks:o=Q}){let a=V(e),s=V(t);if(a.toLowerCase()===s.toLowerCase())throw new Error("poolKey currencies must differ");let[i,c]=a.toLowerCase()<s.toLowerCase()?[a,s]:[s,a],d=o&&Ge(o)?V(o):Q;return ri(be.encode(["address","address","uint24","int24","address"],[i,c,Number(r),Number(n),d]))}function An({tokenIn:e,tokenOut:t,fee:r,tickSpacing:n,hooks:o=Q}){let a=V(e),s=V(t),[i,c]=a.toLowerCase()<s.toLowerCase()?[a,s]:[s,a],d=a.toLowerCase()===i.toLowerCase();return{poolKey:{currency0:i,currency1:c,fee:Number(r),tickSpacing:Number(n),hooks:o&&Ge(o)?V(o):Q},zeroForOne:d}}async function Ye(e={},t={}){let{chainId:r,quoter:n,poolManager:o,universalRouter:a}=Xe(e.chainId??8453),s=We(e.tokenIn||"WETH",r),i=We(e.tokenOut||H[r].usdc,r),c=BigInt(e.amountIn??0);if(c<=0n)throw new Error("amountIn required (raw base units)");if(c>0xffffffffffffffffffffffffffffffffn)throw new Error("amountIn exceeds uint128");let d=e.fee!=null&&e.tickSpacing!=null?[{fee:Number(e.fee),tickSpacing:Number(e.tickSpacing)}]:e.tryTiers===!1?[{fee:500,tickSpacing:10}]:[...Ut],p=e.hooks||Q,l=[],u=null;for(let g of d){let{poolKey:h,zeroForOne:b}=An({tokenIn:s,tokenOut:i,fee:g.fee,tickSpacing:g.tickSpacing,hooks:p}),w=ze.encodeFunctionData("quoteExactInputSingle",[{poolKey:h,zeroForOne:b,exactAmount:c,hookData:"0x"}]);try{let y=await(t.rpcCall||B)(r,"eth_call",[{to:n,data:w},"latest"],t);if(!y||y==="0x"){l.push({...g,ok:!1,error:"empty result"});continue}let v=ze.decodeFunctionResult("quoteExactInputSingle",y),A={fee:g.fee,tickSpacing:g.tickSpacing,ok:!0,amountOut:v[0].toString(),gasEstimate:v[1].toString(),poolKey:h,zeroForOne:b,poolId:Pt({...h})};l.push(A),(!u||BigInt(A.amountOut)>BigInt(u.amountOut))&&(u=A)}catch(y){l.push({...g,ok:!1,error:String(y.message||y).slice(0,160)})}}if(!u){let g=l.map(h=>`${h.fee}/${h.tickSpacing}:${h.error||"fail"}`).join("; ");throw new Error(`uniswap-v4 quote failed chain=${r}: ${g}`)}let f=e.liquidityUsd==null?await he({chainId:r,tokenA:s,tokenB:i,dexIds:vn},t).catch(()=>null):null,m=e.liquidityUsd??f?.liquidityUsd??null;return T({venue:"uniswap-v4",chainId:r,chain:H[r].name,poolManager:o,quoter:n,universalRouter:a||null,tokenIn:s,tokenOut:i,amountIn:c.toString(),fee:u.fee,tickSpacing:u.tickSpacing,hooks:u.poolKey.hooks,poolId:u.poolId,zeroForOne:u.zeroForOne,amountOut:u.amountOut,gasEstimate:u.gasEstimate,liquidityUsd:m,liquiditySource:f,triedTiers:l,best:!0,executionReady:!1,prepareReady:typeof e.recipient=="string"&&Ge(e.recipient)&&e.slippageBps!=null},{chainId:r,venue:a||n,amountOut:u.amountOut,liquidityUsd:m,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function si(e={},t={}){let{chainId:r,quoter:n,poolManager:o,universalRouter:a}=Xe(e.chainId??8453),s=We(e.tokenIn||"WETH",r),i=We(e.tokenOut||H[r].usdc,r),c=BigInt(e.amountOut??0);if(c<=0n)throw new Error("amountOut required (raw base units)");if(c>0xffffffffffffffffffffffffffffffffn)throw new Error("amountOut exceeds uint128");let d=e.fee!=null&&e.tickSpacing!=null?[{fee:Number(e.fee),tickSpacing:Number(e.tickSpacing)}]:e.tryTiers===!1?[{fee:500,tickSpacing:10}]:[...Ut],p=e.hooks||Q,l=[],u=null;for(let m of d){let{poolKey:g,zeroForOne:h}=An({tokenIn:s,tokenOut:i,fee:m.fee,tickSpacing:m.tickSpacing,hooks:p}),b=ze.encodeFunctionData("quoteExactOutputSingle",[{poolKey:g,zeroForOne:h,exactAmount:c,hookData:"0x"}]);try{let w=await(t.rpcCall||B)(r,"eth_call",[{to:n,data:b},"latest"],t);if(!w||w==="0x"){l.push({...m,ok:!1,error:"empty result"});continue}let y=ze.decodeFunctionResult("quoteExactOutputSingle",w),v={fee:m.fee,tickSpacing:m.tickSpacing,ok:!0,amountIn:y[0].toString(),gasEstimate:y[1].toString(),poolKey:g,zeroForOne:h,poolId:Pt({...g})};l.push(v),(!u||BigInt(v.amountIn)<BigInt(u.amountIn))&&(u=v)}catch(w){l.push({...m,ok:!1,error:String(w.message||w).slice(0,160)})}}if(!u){let m=l.map(g=>`${g.fee}/${g.tickSpacing}:${g.error||"fail"}`).join("; ");throw new Error(`uniswap-v4 exact-output quote failed chain=${r}: ${m}`)}let f=e.liquidityUsd==null?await he({chainId:r,tokenA:s,tokenB:i,dexIds:vn},t).catch(()=>null):null;return{venue:"uniswap-v4",chainId:r,chain:H[r].name,poolManager:o,quoter:n,universalRouter:a||null,tokenIn:s,tokenOut:i,amountIn:u.amountIn,amountOut:c.toString(),gasEstimate:u.gasEstimate,fee:u.fee,tickSpacing:u.tickSpacing,hooks:u.poolKey.hooks,poolId:u.poolId,zeroForOne:u.zeroForOne,liquidityUsd:e.liquidityUsd??f?.liquidityUsd??null,liquiditySource:f,triedTiers:l,best:!0,executionReady:!1,prepareReady:!1}}async function ui(e={},t={}){let r=Number(e.chainId??8453),n=Xe(r);if(!e.recipient)throw new Error("uniswap-v4 prepare requires recipient");let o=V(e.recipient);if(e.slippageBps==null)throw new Error("uniswap-v4 prepare requires explicit slippageBps");let a=Number(e.slippageBps);if(!Number.isInteger(a)||a<0||a>=1e4)throw new Error("slippageBps must be an integer from 0 through 9999");let s=String(e.tokenIn||"");if(!s||s===En||s===Q||/^eth$/i.test(s))throw new Error("uniswap-v4 prepare currently requires an ERC-20 tokenIn; native input is not inferred");let i=await Ye(e,t);if(!n.universalRouter)throw new Error(`uniswap-v4: no Universal Router on chain ${r}`);let c=BigInt(i.amountOut)*BigInt(1e4-a)/10000n,d={currency0:i.zeroForOne?i.tokenIn:i.tokenOut,currency1:i.zeroForOne?i.tokenOut:i.tokenIn,fee:i.fee,tickSpacing:i.tickSpacing,hooks:i.hooks},l=be.encode(["tuple(tuple(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 amountIn,uint128 amountOutMinimum,uint256 minHopPriceX36,bytes hookData)"],[[d,i.zeroForOne,BigInt(i.amountIn),c,0n,"0x"]]),u=be.encode(["address","uint256"],[i.tokenIn,BigInt(i.amountIn)]),f=be.encode(["address","uint256"],[i.tokenOut,c]),m=be.encode(["bytes","bytes[]"],[ai,[l,u,f]]),g=Math.min(600,Math.max(30,Number(e.deadlineSeconds??300))),b=Number(t.nowSeconds??Math.floor(Date.now()/1e3))+g,w=ni.encodeFunctionData("execute",[oi,[m],b]);return N({provider:"uniswap-v4",prepareReady:!0,calldataReady:!0,executionReady:!1,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:r,deadline:b,quote:{...i,amountOutMinimum:c.toString(),slippageBps:a},requiresApproval:{token:i.tokenIn,spender:ii,amount:i.amountIn,note:"Universal Router V4 settlement uses Permit2; Permit2 authorization for the Universal Router is also required"},transaction:{chainId:r,from:o,to:n.universalRouter,data:w,value:"0"}},{provider:"uniswap-v4",kind:"univ4-swap-tx"})}async function ci(){return Object.entries(H).map(([e,t])=>({chainId:Number(e),name:t.name,poolManager:t.poolManager,quoter:t.quoter,stateView:t.stateView||null,universalRouter:t.universalRouter||null,weth:t.weth,usdc:t.usdc}))}async function li(e={}){let t=Xe(e.chainId??8453),r=await B(t.chainId,"eth_getCode",[t.quoter,"latest"],e),n=typeof r=="string"&&r!=="0x"&&r.length>4;return{ok:n,chainId:t.chainId,quoter:t.quoter,poolManager:t.poolManager,codeBytes:n?(r.length-2)/2:0}}var be,Q,H,Ut,ze,ni,oi,ai,ii,En,vn,Ft=O(()=>{ne();Ve();G();q();be=ti.defaultAbiCoder(),Q="0x0000000000000000000000000000000000000000",H={1:{name:"ethereum",poolManager:"0x000000000004444c5dc75cB358380D2e3dE08A90",quoter:"0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203",stateView:"0x7ffe42c4a5deea5b0fec41c94c136cf115597227",universalRouter:"0x66a9893cc07d91d95644aedd05d03f95e1dba8af",weth:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",usdc:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},10:{name:"optimism",poolManager:"0x9a13f98cb987694c9f086b1f5eb990eea8264ec3",quoter:"0x1f3131a13296fb91c90870043742c3cdbff1a8d7",stateView:"0xc18a3169788f4f75a170290584eca6395c75ecdb",universalRouter:"0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",weth:"0x4200000000000000000000000000000000000006",usdc:"0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"},56:{name:"bsc",poolManager:"0x28e2ea090877bf75740558f6bfb36a5ffee9e9df",quoter:"0x9f75dd27d6664c475b90e105573e550ff69437b0",stateView:"0xd13dd3d6e93f276fafc9db9e6bb47c1180aee0c4",universalRouter:"0x1906c1d672b88cd1b9ac7593301ca990f94eae07",weth:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",usdc:"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d"},137:{name:"polygon",poolManager:"0x67366782805870060151383f4bbff9dab53e5cd6",quoter:"0xb3d5c3dfc3a7aebff71895a7191796bffc2c81b9",stateView:"0x5ea1bd7974c8a611cbab0bdcafcb1d9cc9b3ba5a",universalRouter:"0x1095692a6237d83c6a72f3f5efedb9a670c49223",weth:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",usdc:"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"},8453:{name:"base",poolManager:"0x498581fF718922c3f8e6A244956aF099B2652b2b",quoter:"0x0d5e0f971ed27fbff6c2837bf31316121532048d",stateView:"0xa3c0c9b65bad0b08107aa264b0f3db444b867a71",universalRouter:"0x6ff5693b99212da76ad316178a184ab56d299b43",weth:"0x4200000000000000000000000000000000000006",usdc:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},42161:{name:"arbitrum",poolManager:"0x360e68faccca8ca495c1b759fd9eee466db9fb32",quoter:"0x3972c00f7ed4885e145823eb7c655375d275a1c5",stateView:"0x76fd297e2d437cd7f76d50f01afe6160f86e9990",universalRouter:"0xa51afafe0263b40edaef0df8781ea9aa03e381a3",weth:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",usdc:"0xaf88d065e77c8cC2239327C5EDb3A432268e5831"},43114:{name:"avalanche",poolManager:"0x06380c0e0912312b5150364b9dc4542ba0dbbc85",quoter:"0xbe40675bb704506a3c2ccfb762dcfd1e979845c2",stateView:"0xc3c9e198c735a4b97e3e683f391ccbdd60b69286",universalRouter:"0x94b75331ae8d42c1b61065089b7d48fe14aa73b7",weth:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",usdc:"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"},4663:{name:"robinhood",poolManager:"0x8366a39cc670b4001a1121b8f6a443a643e40951",quoter:"0x8dc178efb8111bb0973dd9d722ebeff267c98f94",stateView:"0xf3334192d15450cdd385c8b70e03f9a6bd9e673b",universalRouter:"0x8876789976dEcBfCbBbe364623C63652db8C0904",weth:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",usdc:"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"}},Ut=[{fee:100,tickSpacing:1},{fee:500,tickSpacing:10},{fee:3e3,tickSpacing:60},{fee:1e4,tickSpacing:200},{fee:25e3,tickSpacing:8}],ze=new yn(["function quoteExactInputSingle(((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountOut, uint256 gasEstimate)","function quoteExactOutputSingle(((address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks) poolKey,bool zeroForOne,uint128 exactAmount,bytes hookData) params) returns (uint256 amountIn, uint256 gasEstimate)"]),ni=new yn(["function execute(bytes commands,bytes[] inputs,uint256 deadline) payable"]),oi="0x10",ai="0x060c0f",ii="0x000000000022D473030F116dDEE9F6B43aC78BA3",En="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";vn=["uniswap-v4","uniswapv4"]});var Je={};te(Je,{ACROSS_API:()=>In,HOP_API:()=>Cn,RELAY_API:()=>kn,acrossHealth:()=>gi,acrossSuggestedFees:()=>On,hopHealth:()=>wi,hopQuote:()=>Nn,relayHealth:()=>bi,relayPrepare:()=>yi,relayQuote:()=>Lt});async function gi(e={}){try{return{ok:!0,estimatedFillTimeSec:(await On({token:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",destinationToken:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",originChainId:1,destinationChainId:42161,amount:"1000000000000000"},e)).estimatedFillTimeSec}}catch(t){return{ok:!1,error:String(t.message||t).slice(0,160)}}}async function On(e={},t={}){let{token:r,destinationToken:n=r,originChainId:o,destinationChainId:a,amount:s}=e;if(!r||o==null||a==null||!s)throw new Error("acrossSuggestedFees requires token, originChainId, destinationChainId, amount");let i=new URLSearchParams({token:r,destinationToken:n,originChainId:String(o),destinationChainId:String(a),amount:String(s)}),c=(t.baseUrl||process.env.ACROSS_API_URL||In).replace(/\/$/,"");return k(`${c}/suggested-fees?${i}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3})}async function wi(e={}){try{let t=await Nn({amount:"1000000000000000",token:"ETH",fromChain:"ethereum",toChain:"arbitrum",slippage:.5},e);return{ok:!0,estimatedRecieved:t.estimatedRecieved||t.estimatedReceived}}catch(t){return{ok:!1,error:String(t.message||t).slice(0,160)}}}async function Nn(e={},t={}){let{amount:r,token:n="ETH",fromChain:o="ethereum",toChain:a="arbitrum"}=e;if(!r)throw new Error("hopQuote requires amount");let s=e.slippage==null?void 0:Math.round(Number(e.slippage)*100),i=W({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:o!==a,requestedCapBps:e.maxSlippageBps??e.slippageBps??s});if(!i.executable)throw new Error(`hop: route requires ${i.requiredBps} bps above cap ${i.capBps}`);let c=new URLSearchParams({amount:String(r),token:n,fromChain:o,toChain:a,slippage:String(i.selectedBps/100)}),d=(t.baseUrl||process.env.HOP_API_URL||Cn).replace(/\/$/,""),p=await k(`${d}/quote?${c}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3}),l=p?.estimatedRecieved||p?.estimatedReceived;return l?T(p,{chainId:Number(e.originChainId||e.chainId||hi[o]||0),venue:p?.tx?.to||"hop",amountOut:l,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:o!==a,requestedCapBps:e.maxSlippageBps??e.slippageBps??s}):{...p,autoSlippagePolicy:i}}async function bi(e={}){try{let t=await Lt({user:X,originChainId:1,destinationChainId:8453,originCurrency:"0x0000000000000000000000000000000000000000",destinationCurrency:"0x0000000000000000000000000000000000000000",amount:"1000000000000000",tradeType:"EXACT_INPUT"},e);return{ok:!0,hasSteps:Array.isArray(t.steps),stepCount:t.steps?.length||0}}catch(t){return{ok:!1,error:String(t.message||t).slice(0,160)}}}async function Lt(e={},t={}){let{user:r=X,originChainId:n,destinationChainId:o,originCurrency:a="0x0000000000000000000000000000000000000000",destinationCurrency:s="0x0000000000000000000000000000000000000000",amount:i,tradeType:c="EXACT_INPUT"}=e;if(n==null||o==null||!i)throw new Error("relayQuote requires originChainId, destinationChainId, amount");let d=W({liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(n)!==Number(o),requestedCapBps:e.maxSlippageBps??e.slippageBps});if(!d.executable)throw new Error(`relay: route requires ${d.requiredBps} bps above cap ${d.capBps}`);let p=(t.baseUrl||process.env.RELAY_API_URL||kn).replace(/\/$/,""),l=await k(`${p}/quote`,{method:"POST",body:{user:r,originChainId:Number(n),destinationChainId:Number(o),originCurrency:a,destinationCurrency:s,amount:String(i),tradeType:c,slippageTolerance:String(d.selectedBps)},fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??2e4}),u=l?.details?.currencyOut?.amount;return!u||!/^\d+$/.test(String(u))?{...l,autoSlippagePolicy:d}:T(l,{chainId:Number(n),venue:l?.steps?.[0]?.items?.[0]?.data?.to||"relay",amountOut:u,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,crossChain:Number(n)!==Number(o),requestedCapBps:e.maxSlippageBps??e.slippageBps})}async function yi(e={},t={}){let r=await Lt(e,t),n=Number(e.originChainId),o=(r.steps||[]).flatMap(i=>(i.items||[]).filter(c=>c?.data?.to&&c?.data?.data).map(c=>({stepId:i.id,...c.data})));if(!o.length)throw new Error("relay: quote returned no executable transaction items");let a=String(r?.autoSlippage?.venue||"").toLowerCase();if(o.some(i=>String(i.to).toLowerCase()!==a))throw new Error("relay: route includes a separate approval/transaction that is not yet safely bound");let s=o.map(i=>({chainId:n,from:i.from||e.user,to:i.to,data:i.data,value:i.value??"0x0",...i.gasLimit!=null||i.gas!=null?{gasLimit:i.gasLimit??i.gas}:{},slippageGuard:D(r.autoSlippage,{chainId:n,venue:i.to,data:i.data})}));return N({provider:"relay",calldataReady:!0,requiresUserSignature:!0,signingReady:!1,broadcastReady:!1,chainId:n,quote:r,autoSlippage:r.autoSlippage,transactions:s},{provider:"relay",kind:"relay-tx"})}var In,Cn,kn,hi,Ze=O(()=>{K();G();Te();q();In="https://across.to/api",Cn="https://api.hop.exchange/v1",kn="https://api.relay.link",hi={ethereum:1,optimism:10,bsc:56,polygon:137,arbitrum:42161,avalanche:43114,base:8453}});import{realpathSync as jn}from"node:fs";import{fileURLToPath as Li}from"node:url";var xe=Object.freeze(["blockNumber","nativeBalance","tokenBalance","resolveToken","resolvePools","scanBlocks","scoreRisk","quote","sellSimulation","prepareUnsignedTx"]),x=Object.freeze({LIVE:"LIVE",CACHED:"CACHED",STALE:"STALE",UNKNOWN:"UNKNOWN",UNAVAILABLE:"UNAVAILABLE"}),S=Object.freeze({PASS:"PASS",CAUTION:"CAUTION",FAIL:"FAIL",UNKNOWN:"UNKNOWN"}),eo=/^0x[0-9a-fA-F]{40}$/;function to(e={}){let t=[],r=[];if(!e||typeof e!="object")return{ok:!1,errors:["definition must be an object"],warnings:r};if((!Number.isInteger(e.chainId)||e.chainId<=0)&&t.push("chainId must be a positive integer"),(typeof e.key!="string"||!/^[a-z][a-z0-9-]*$/.test(e.key||""))&&t.push('key must be a lowercase slug (e.g. "base")'),(typeof e.name!="string"||!e.name.trim())&&t.push("name is required"),!Array.isArray(e.rpcEnv)||e.rpcEnv.length===0)t.push("rpcEnv must list at least one environment variable name");else for(let o of e.rpcEnv)(typeof o!="string"||!/^[A-Z][A-Z0-9_]*$/.test(o))&&t.push(`rpcEnv entry "${o}" should be an UPPER_SNAKE env var name`);if(e.nativeCurrency){let o=e.nativeCurrency;(typeof o.symbol!="string"||!o.symbol)&&t.push("nativeCurrency.symbol is required when nativeCurrency is set"),Number.isInteger(o.decimals)||t.push("nativeCurrency.decimals must be an integer")}for(let[o,a]of(e.venues||[]).entries()){let s=`venues[${o}]`;if(!a||typeof a!="object"){t.push(`${s} must be an object`);continue}eo.test(a.address||"")||t.push(`${s}.address is not a valid 20-byte address`),/^0x0{40}$/.test(a.address||"")&&t.push(`${s}.address is the zero address -- placeholder left in place?`),a.kind||t.push(`${s}.kind is required (router|quoter|factory|...)`),a.verified?(a.verified.method||t.push(`${s}.verified.method is required`),a.verified.source||t.push(`${s}.verified.source is required`),a.verified.date||r.push(`${s}.verified.date missing -- add one so staleness is visible`)):t.push(`${s} must record verification: { verified: { method, source, date } }. An unverified venue stays blocked.`)}let n=e.capabilities||{};for(let o of Object.keys(n))xe.includes(o)?typeof n[o]!="function"&&t.push(`capability "${o}" must be a function`):t.push(`unknown capability "${o}"`);return Object.keys(n).length===0&&r.push("scanner implements no capabilities -- it can only be registered, not used"),n.prepareUnsignedTx&&!n.quote&&r.push("prepareUnsignedTx without quote: no priced expectation to validate the built tx against"),n.prepareUnsignedTx&&!n.sellSimulation&&r.push("prepareUnsignedTx without sellSimulation: cannot prove an asset is exitable before buying"),{ok:t.length===0,errors:t,warnings:r}}function ro(e){let{ok:t,errors:r,warnings:n}=to(e);if(!t)throw new Error(`invalid scanner for ${e?.key??"<unknown>"}:
|
|
4
|
+
- ${r.join(`
|
|
5
|
+
- `)}`);let o=e.capabilities||{},a=xe.filter(i=>typeof o[i]=="function"),s={key:e.key,chainId:e.chainId,name:e.name,rpcEnv:[...e.rpcEnv],nativeCurrency:e.nativeCurrency?{...e.nativeCurrency}:null,wrappedNative:e.wrappedNative||null,explorer:e.explorer||null,venues:(e.venues||[]).map(i=>({...i})),warnings:n,capabilities(){return{chainId:e.chainId,key:e.key,supported:[...a],unsupported:xe.filter(i=>!a.includes(i))}},supports(i){return a.includes(i)}};for(let i of xe)a.includes(i)?s[i]=async(...c)=>o[i](...c,{scanner:s}):s[i]=async()=>{throw new Error(`${e.key} (chain ${e.chainId}) does not implement "${i}". Supported: ${a.join(", ")||"none"}. An unimplemented capability is absent, not assumed -- implement it or treat this chain as fail-closed for that operation.`)};return Object.freeze(s)}var it=new Map;function Qt(e){let t=ro(e);return it.set(t.chainId,t),t}function Ie(e){return it.get(Number(e))||null}function ue(){return[...it.values()]}var j=Object.freeze({FULL:"FULL",NO_GAS:"NO_GAS",FAILED:"FAILED"}),Zt={1:"coingecko:ethereum",10:"coingecko:ethereum",56:"coingecko:binancecoin",137:"coingecko:matic-network",8453:"coingecko:ethereum",42161:"coingecko:ethereum",43114:"coingecko:avalanche-2",999:"coingecko:ethereum"},ce=e=>{try{return e==null||e===""?null:BigInt(String(e).split(".")[0])}catch{return null}};function Jt(e){let{source:t,amountOut:r,minOut:n=null,gasUsd:o=null,feeUsd:a=null,oracleFeeBps:s=0,estimatedGas:i=null,liquidityUsd:c=null,error:d=null,executionReady:p=!1,meta:l={}}=e||{};if(d||r==null)return{source:t,quality:j.FAILED,amountOut:null,error:d||"no amountOut returned"};let u=ce(r);if(u==null||u<=0n)return{source:t,quality:j.FAILED,amountOut:null,error:"non-positive amountOut"};let f=Number(s);return{source:t,quality:o==null?j.NO_GAS:j.FULL,amountOut:u.toString(),minOut:ce(n)?.toString()??null,gasUsd:o,feeUsd:a,oracleFeeBps:Number.isFinite(f)&&f>0?Math.floor(f):0,estimatedGas:i==null?null:String(i),liquidityUsd:c==null?null:Number(c),executionReady:p,meta:l}}async function er(e,t,{divisor:r=1000n}={}){let n=ce(t);if(n==null||n<=0n)return null;let o=n/r>0n?n/r:1n;if(o>=n)return null;let a,s;try{[a,s]=await Promise.all([e(o),e(n)])}catch{return null}let i=ce(a),c=ce(s);if(i==null||c==null||i<=0n)return null;let d=Number(i)/Number(o),p=Number(c)/Number(n);return!Number.isFinite(d)||!Number.isFinite(p)||d<=0?null:{impactPct:(1-p/d)*100,probeAmountIn:o.toString(),probeAmountOut:i.toString(),fullAmountOut:c.toString()}}function tr(e,t,{maxImpactPct:r=25}={}){let n=[],o=[],a=(e.routes??[]).filter(i=>{let c=t?.[i.source];return c?c.impactPct>r?(n.push({source:i.source,impactPct:Number(c.impactPct.toFixed(2)),reason:`price impact ${c.impactPct.toFixed(1)}% exceeds ${r}% ceiling -- the venue cannot absorb this size near the quoted price`}),!1):!0:(o.push(i.source),!0)}),s=[...e.warnings??[]];return n.length&&s.push(`dropped ${n.length} route(s) on price impact: `+n.map(i=>`${i.source} (${i.impactPct}%)`).join(", ")),o.length&&s.push(`price impact NOT measured for: ${o.join(", ")}. These are unproven against thin liquidity, not proven safe.`),{...e,routes:a,best:a[0]??null,impactRejected:n,impactUnmeasured:o,warnings:s}}function st(e,{destPriceUsd:t=null,destDecimals:r=null,liquidityFirst:n=!0,liquidityBandBps:o=50,gasPriceWei:a=null,nativePriceUsd:s=null}={}){let i=e.filter(E=>E.quality!==j.FAILED),c=e.filter(E=>E.quality===j.FAILED),d=t!=null&&t>0&&r!=null&&r>=0,p=Number(a),l=Number(s),u=Number.isFinite(p)&&p>0&&Number.isFinite(l)&&l>0,f=i.map(E=>{let C=BigInt(E.amountOut),L=0n,R=!1,P=!1,se=BigInt(E.oracleFeeBps??0),Gt=se>0n?C*se/10000n:0n;if(d){let Se=E.gasUsd,at=Number(E.meta?.gasUnits??E.estimatedGas);if(Se==null&&u&&Number.isFinite(at)&&at>0){let ee=at*p/1e18*l;Number.isFinite(ee)&&ee>=0&&(Se=ee,P=!0)}let Yt=(Se??0)+(E.feeUsd??0);if(Yt>0){let ee=Yt/t*10**r;Number.isFinite(ee)&&ee>=0&&(L=BigInt(Math.floor(ee)),R=!0)}else Se===0&&(R=!0)}let Xt=L+Gt,Jn=C>Xt?C-Xt:0n;return{...E,grossOut:C.toString(),netOut:Jn.toString(),costInDest:L.toString(),oracleFeeInDest:Gt.toString(),costAccounted:R,gasEstimated:P}}),m=Number(o)>0?Number(o):0,g=f.reduce((E,C)=>BigInt(C.netOut)>E?BigInt(C.netOut):E,0n),h=E=>g>0n?Number((g-BigInt(E))*10000n/g):0,b=[],w=f.slice().sort((E,C)=>BigInt(C.netOut)>BigInt(E.netOut)?1:-1)[0]??null;f.sort((E,C)=>{let L=h(E.netOut)<=m?0:1,R=h(C.netOut)<=m?0:1;if(n&&m>0&&L!==R)return L-R;if(n&&m>0){let P=E.liquidityUsd??-1,se=C.liquidityUsd??-1;if(P!==se)return se-P}return BigInt(C.netOut)>BigInt(E.netOut)?1:-1}),n&&m>0&&w&&f[0]&&f[0].source!==w.source&&b.push(`liquidity-first: chose ${f[0].source} (liquidity $${f[0].liquidityUsd??"unknown"}) over best-price ${w.source} within ${m} bps`);let y=f.filter(E=>!E.costAccounted).map(E=>E.source);d?y.length&&b.push(`gas not reported by: ${y.join(", ")}. These are ranked on gross output and may be overstated relative to gas-measured routes.`):b.push("destination price/decimals unavailable: ranked on GROSS output. Gas is not included, so a cheap-looking route may cost more to execute.");let v=f[0];if(d&&v&&v.costAccounted===!1){let E=f.find(C=>C.costAccounted&&h(C.netOut)<=m);E&&b.push(`winner ${v.source} has UNMEASURED gas; gas-measured ${E.source} is within ${m} bps and may net more once ${v.source}'s real gas is paid \u2014 prefer it if unsure.`)}let A=f.filter(E=>E.gasEstimated).map(E=>E.source);A.length&&b.push(`gas ESTIMATED (from gas units x current gas price, not measured) for: ${A.join(", ")}. Net includes this estimate so the ranking is gas-inclusive, but the on-chain gas may differ.`);let I=null,_=null;if(f.length>=2&&f[0].costAccounted&&f[1].costAccounted){let E=BigInt(f[0].netOut),C=BigInt(f[1].netOut);C>0n&&(I=Number((E-C)*10000n/C),_=`${f[0].source} vs ${f[1].source}`)}return{best:f[0]??null,routes:f,failed:c,improvementBps:I,spreadBasis:_,rankedOn:d?"net-of-cost":"gross",warnings:b}}async function Ce(e,{timeoutMs:t=12e3}={}){let r=(o,a)=>Promise.race([o,new Promise((s,i)=>setTimeout(()=>i(new Error(`${a}: timeout`)),t))]);return(await Promise.allSettled(e.map(o=>r(Promise.resolve().then(o.run),o.source)))).map((o,a)=>{let s=e[a].source;return o.status==="rejected"?Jt({source:s,error:String(o.reason?.message||o.reason)}):Jt({source:s,...o.value})})}_e();It();kt();K();G();Ct();q();var wa="https://api.1inch.dev/swap/v6.0";function qr(e={}){return Pe({provider:"oneinch",defaultUrl:wa,hosts:["api.1inch.dev"],url:e.baseUrl||process.env.ONEINCH_API_URL})}function ba(e={}){return qr(e).baseUrl}function Mr(e={}){return e.apiKey||process.env.ONEINCH_API_KEY||process.env.ONE_INCH_API_KEY||""}function ya(e={}){let t=Mr(e);return Fe({accept:"application/json"},{Authorization:t?`Bearer ${t}`:""},qr(e).trusted)}async function Vr(e={},t={}){if(!Mr(t))throw new Error("ONEINCH_API_KEY required for 1inch");let r=Number(e.chainId??1),{src:n,dst:o,amount:a}=e;if(!n||!o||!a)throw new Error("oneinchQuote requires src, dst, amount");let s=new URLSearchParams({src:n,dst:o,amount:String(a)}),i=await k(`${ba(t)}/${r}/quote?${s}`,{headers:ya(t),fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs??15e3});return i?.dstAmount?T(i,{chainId:r,venue:"1inch-quote",amountOut:i.dstAmount,liquidityUsd:e.liquidityUsd,priceChange5m:e.priceChange5m,requestedCapBps:e.maxSlippageBps??e.slippageBps}):i}Tt();Ke();Ft();K();var di="https://coins.llama.fi",pi="https://api.llama.fi";function fi(e={}){return(e.baseUrl||process.env.DEFILLAMA_COINS_URL||di).replace(/\/$/,"")}function mi(e={}){return(e.baseUrl||process.env.DEFILLAMA_API_URL||pi).replace(/\/$/,"")}async function Qe(e,t={}){if(!Array.isArray(e)||!e.length)throw new Error("llamaPrices requires coins[]");let r=e.map(encodeURIComponent).join(",");return k(`${fi(t)}/prices/current/${r}`,{fetchImpl:t.fetchImpl,timeoutMs:t.timeoutMs})}async function xn(e={}){return k(`${mi(e)}/protocols`,{fetchImpl:e.fetchImpl,timeoutMs:e.timeoutMs??2e4})}var z=e=>{let t=Number(e);return Number.isFinite(t)?t:null};function et(e){if(!Array.isArray(e))return null;let t=0,r=!1;for(let n of e){let o=z(n?.amountUSD);o!=null&&(t+=o,r=!0)}return r?t:null}async function Tn(e,t={}){let r=Zt[Number(e)];if(!r)return null;try{let n=await Qe([r],t);return z(n?.coins?.[r]?.price)}catch{return null}}var J=e=>String(e??"").toLowerCase().replace(/[^a-z0-9]/g,""),$n=Object.freeze({across:["across"],relay:["relaychain","relay"],lifi:["jumper-(li.fi-powered)","lifi"],stargate:["stargate-v2","stargate-v1","stargate"],hop:["hop-protocol","hop"],debridge:["debridge"],synapse:["synapse"],connext:["connext"],cbridge:["celer-bridge","celer-cbridge","cbridge"],celer:["celer-bridge","celer-cbridge","cbridge"],squid:["squid"],symbiosis:["symbiosis"],wormhole:["wormhole"],mayan:["mayan"],allbridge:["allbridge"],thorchain:["thorchain"]});async function Ei(e={}){try{let t=await xn({...e,baseUrl:e.defillamaApiBaseUrl,timeoutMs:e.defillamaTimeoutMs??Math.min(Number(e.timeoutMs??5e3),5e3)});return Array.isArray(t)?t:[]}catch{return[]}}function Ai(e,t={}){let r=J(t.tool||t.provider||t.bridge||t.protocol),n=[];return e==="lifi"&&r&&r!=="lifi"&&n.push(...$n[r]||[r]),n.push(...$n[J(e)]||[e]),n}function vi(e,t,r={}){let n=Array.isArray(e)?e:[],o=Ai(t,r).map(J).filter(Boolean);for(let a of o){let s=n.find(c=>J(c?.slug)===a||J(c?.name)===a),i=z(s?.tvl);if(i!=null)return{liquidityUsd:i,protocol:s?.name??s?.slug??a}}for(let a of o){let s=n.find(c=>{let d=J(c?.category);return!d.includes("bridge")&&!d.includes("crosschain")?!1:J(c?.slug).includes(a)||J(c?.name).includes(a)}),i=z(s?.tvl);if(i!=null)return{liquidityUsd:i,protocol:s?.name??s?.slug??a}}return null}function Dt({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o,slippageBps:a,decimalsIn:s,decimalsOut:i,nativePriceUsd:c=null,destDecimalsPromise:d=null,opts:p={}}){let l=[];return l.push({source:"lifi",run:async()=>{let u=await pe({fromChain:e,toChain:e,fromToken:t,toToken:r,fromAmount:n},p),f=u?.estimate??u?.[0]?.estimate;return{amountOut:f?.toAmount,minOut:f?.toAmountMin,gasUsd:et(f?.gasCosts),feeUsd:et(f?.feeCosts),oracleFeeBps:u?.oracleFee?.applies?u.oracleFee.bps:0,meta:{tool:u?.tool??u?.toolDetails?.name,oracleFee:u?.oracleFee??null}}}}),s!=null&&l.push({source:"paraswap",run:async()=>{let u=i??(await Promise.resolve(d))?.decimals;if(u==null)throw new Error("paraswap needs destination decimals; none supplied or resolvable");let f=await Ue({chainId:e,srcToken:t,destToken:r,amount:n,srcDecimals:s,destDecimals:u},p),m=f?.priceRoute;return{amountOut:m?.destAmount,gasUsd:z(m?.gasCostUSD),oracleFeeBps:f?.oracleFee?.applies?f.oracleFee.bps:0,meta:{bestRoute:m?.bestRoute?.[0]?.swaps?.[0]?.swapExchanges?.[0]?.exchange,oracleFee:f?.oracleFee??null}}}}),process.env.ZEROX_API_KEY&&l.push({source:"0x",run:async()=>{let u=await De({chainId:e,sellToken:t,buyToken:r,sellAmount:n,taker:o},p),f=null,m=u?.totalNetworkFee,g=await Promise.resolve(c);return m!=null&&g&&(f=Number(m)/1e18*g),{amountOut:u?.buyAmount,minOut:u?.minBuyAmount,gasUsd:f,meta:{source:u?.route?.fills?.[0]?.source}}}}),process.env.ONEINCH_API_KEY&&l.push({source:"1inch",run:async()=>{let u=await Vr({chainId:e,src:t,dst:r,amount:n},p),f=null;return u?.gas!=null&&c&&(f=null),{amountOut:u?.dstAmount,gasUsd:f,meta:{gasUnits:u?.gas}}}}),l.push({source:"cow",run:async()=>{let u=await me({chainId:e,sellToken:t,buyToken:r,sellAmountBeforeFee:String(n),from:o},p),f=u?.quote??u,m=f?.feeAmount;return{amountOut:f?.buyAmount,gasUsd:0,meta:{intent:!0,feeAmountInSellToken:m,settlement:"solver-executed"}}}}),U[Number(e)]&&l.push({source:"uniswap-v3",run:async()=>{let u=await we({chainId:e,tokenIn:t,tokenOut:r,amountIn:n},p);return{amountOut:u?.amountOut,minOut:u?.minOut??u?.amountOutMinimum??null,gasUsd:null,liquidityUsd:u?.liquidityUsd??null,meta:{onchain:!0,fee:u?.fee,gasUnits:u?.gasEstimate,quoter:u?.quoter}}}}),H[Number(e)]&&l.push({source:"uniswap-v4",run:async()=>{let u=await Ye({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,recipient:o,slippageBps:a},p);return{amountOut:u?.amountOut,minOut:u?.minOut??u?.amountOutMinimum??null,gasUsd:null,liquidityUsd:u?.liquidityUsd??null,meta:{onchain:!0,venue:"uniswap-v4",fee:u?.fee,tickSpacing:u?.tickSpacing,poolId:u?.poolId,hooks:u?.hooks,gasUnits:u?.gasEstimate,quoter:u?.quoter,poolManager:u?.poolManager,prepareReady:u?.prepareReady===!0,executionReady:!1}}}}),l}function Bn({fromChainId:e,toChainId:t,tokenIn:r,tokenOut:n,amountIn:o,taker:a,opts:s={}}){let i=[],c=null,d=async(p,l={})=>(c||=Ei(s),vi(await c,p,l));return i.push({source:"lifi",run:async()=>{let p=await pe({fromChain:e,toChain:t,fromToken:r,toToken:n,fromAmount:o},s),l=p?.estimate??p?.[0]?.estimate,u={tool:p?.tool??p?.toolDetails?.name,durationSeconds:z(l?.executionDuration)},f=await d("lifi",u);return{amountOut:l?.toAmount,minOut:l?.toAmountMin,gasUsd:et(l?.gasCosts),feeUsd:et(l?.feeCosts),oracleFeeBps:p?.oracleFee?.applies?p.oracleFee.bps:0,liquidityUsd:f?.liquidityUsd??null,meta:{...u,liquidityProtocol:f?.protocol,oracleFee:p?.oracleFee??null}}}}),i.push({source:"relay",run:async()=>{let{relayQuote:p}=await Promise.resolve().then(()=>(Ze(),Je)),u=(await p({user:a,originChainId:e,destinationChainId:t,originCurrency:r,destinationCurrency:n,amount:String(o)},s))?.details,f={durationSeconds:z(u?.timeEstimate),rate:u?.rate},m=await d("relay",f);return{amountOut:u?.currencyOut?.amount,minOut:u?.currencyOut?.minimumAmount,gasUsd:z(u?.totalImpact?.usd)!=null?Math.abs(z(u.totalImpact.usd)):null,liquidityUsd:m?.liquidityUsd??null,meta:{...f,liquidityProtocol:m?.protocol}}}}),i.push({source:"across",run:async()=>{let{acrossSuggestedFees:p}=await Promise.resolve().then(()=>(Ze(),Je)),l=await p({token:r,destinationToken:n,originChainId:e,destinationChainId:t,amount:String(o)},s),u=l?.totalRelayFee?.total,f=null;if(u!=null)try{let g=BigInt(String(o))-BigInt(String(u));g>0n&&(f=g.toString())}catch{}let m=await d("across");return{amountOut:f,gasUsd:null,liquidityUsd:m?.liquidityUsd??null,meta:{derivedFromFees:!0,durationSeconds:z(l?.estimatedFillTimeSec),limits:l?.limits?{min:l.limits.minDeposit,max:l.limits.maxDeposit}:void 0,liquidityProtocol:m?.protocol}}}}),i}Re();ne();var Si={1:"ethereum",10:"optimism",56:"bsc",137:"polygon",8453:"base",42161:"arbitrum",43114:"avax"};async function Rn(e,t,r){let n=Si[Number(e)];if(!n)return{priceUsd:null,decimals:null};let o=`${n}:${t}`;try{let s=(await Qe([o],r))?.coins?.[o],i=Number(s?.price),c=Number(s?.decimals);return{priceUsd:Number.isFinite(i)?i:null,decimals:Number.isFinite(c)?c:null}}catch{return{priceUsd:null,decimals:null}}}async function tt(e,t={}){let{chainId:r,tokenIn:n,tokenOut:o,amountIn:a}=e;if(r==null||!n||!o||a==null)throw new Error("bestSwapRoute requires chainId, tokenIn, tokenOut, amountIn");let s=Tn(r,t),i=Rn(r,o,t),c=un(r,t).catch(()=>null),d=Dt({...e,nativePriceUsd:s,decimalsOut:e.decimalsOut,destDecimalsPromise:i,opts:t}),[p,l,u]=await Promise.all([Ce(d,{timeoutMs:t.timeoutMs??12e3}),i,c]);s.catch(()=>{});let f=await s.then(h=>h,()=>null),m=st(p,{destPriceUsd:l.priceUsd,destDecimals:e.decimalsOut??l.decimals,liquidityBandBps:t.liquidityBandBps??50,gasPriceWei:u,nativePriceUsd:f}),g=t.maxImpactPct===void 0?25:t.maxImpactPct;if(g!=null&&m.best){let h=m.best.source,w=await er(async y=>{let v=Dt({...e,amountIn:y.toString(),nativePriceUsd:s,decimalsOut:e.decimalsOut,destDecimalsPromise:i,opts:t}).filter(I=>I.source===h);return v.length?(await Ce(v,{timeoutMs:t.timeoutMs??12e3}))?.[0]?.amountOut??null:null},a);if(w){let y=tr(m,{[h]:w},{maxImpactPct:g});return{kind:"swap",chainId:r,tokenIn:n,tokenOut:o,amountIn:String(a),...y,sourcesTried:d.length,sourcesAnswered:p.filter(v=>v.quality!==j.FAILED).length,note:qt(y,d.length),priceImpact:{[h]:Number(w.impactPct.toFixed(2))}}}}return{kind:"swap",chainId:r,tokenIn:n,tokenOut:o,amountIn:String(a),...m,sourcesTried:d.length,sourcesAnswered:p.filter(h=>h.quality!==j.FAILED).length,note:qt(m,d.length)}}async function rt(e,t={}){let{fromChainId:r,toChainId:n,tokenIn:o,tokenOut:a,amountIn:s}=e;if(r==null||n==null||!o||!a||s==null)throw new Error("bestBridgeRoute requires fromChainId, toChainId, tokenIn, tokenOut, amountIn");if(Number(r)===Number(n))throw new Error("bestBridgeRoute is for cross-chain; use bestSwapRoute for same-chain");let i=Rn(n,a,t),c=Bn({...e,opts:t}),[d,p]=await Promise.all([Ce(c,{timeoutMs:t.timeoutMs??15e3}),i]),l=st(d,{destPriceUsd:p.priceUsd,destDecimals:e.decimalsOut??p.decimals,liquidityBandBps:t.liquidityBandBps??50}),u=l.routes.map(f=>({source:f.source,seconds:f.meta?.durationSeconds??null})).filter(f=>f.seconds!=null);return{kind:"bridge",fromChainId:r,toChainId:n,tokenIn:o,tokenOut:a,amountIn:String(s),...l,durations:u,sourcesTried:c.length,sourcesAnswered:d.filter(f=>f.quality!==j.FAILED).length,note:qt(l,c.length)}}function xi(e){let t=e?.meta?.oracleFee;return t?.applies?` \xB7 ${xr(t)}`:""}function qt(e,t){if(!e.best)return"no source returned a usable route";let r=e.routes.length,n=xi(e.best);if(r===1)return`only 1 of ${t} sources answered, so this is the ONLY route, not a proven best one. Treat it as unbenchmarked.`+n;if(e.improvementBps!=null){let o=e.improvementBps,a=o/100;if(o<.01)return`best of ${r} routes, ranked on ${e.rankedOn}: effectively tied with the runner-up (${e.spreadBasis}), inside quote noise. Re-quote before you size up.`+n;let s=a>=.01?`${a.toFixed(2)}%`:`${o.toFixed(2)}bps`;return`best of ${r} routes, ranked on ${e.rankedOn}: ${s} better than the runner-up (${e.spreadBasis})`+n}return`best of ${r} routes, ranked on ${e.rankedOn}. No spread quoted: the top routes report cost differently, so the margin is not comparable.`+n}q();var Z=Object.freeze({TRANSACTION:"unsigned-transaction",TYPED_DATA_ORDER:"typed-data-order"}),Ii=100,Mt={"uniswap-v3":async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o},a)=>{let{uniV3PrepareExactIn:s}=await Promise.resolve().then(()=>(Ke(),bn)),i=await s({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,recipient:o},a);return{artifactKind:Z.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.amountOut??null,minOut:i.quote?.amountOutMinimum??null}},"uniswap-v4":async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o,slippageBps:a,fee:s,tickSpacing:i,hooks:c},d)=>{let{uniV4PrepareExactIn:p}=await Promise.resolve().then(()=>(Ft(),Sn)),l=await p({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,recipient:o,slippageBps:a,fee:s,tickSpacing:i,hooks:c},d);return{artifactKind:Z.TRANSACTION,transaction:l.transaction,requiresApproval:l.requiresApproval,amountOut:l.quote?.amountOut??null,minOut:l.quote?.amountOutMinimum??null,prepareReady:!0,executionReady:!1}},lifi:async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o},a)=>{let{lifiPrepare:s}=await Promise.resolve().then(()=>(_e(),St)),i=await s({fromChain:e,toChain:e,fromToken:t,toToken:r,fromAmount:n,fromAddress:o},a);return{artifactKind:Z.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.estimate?.toAmount??null,minOut:i.quote?.estimate?.toAmountMin??null}},paraswap:async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o,decimalsIn:a,decimalsOut:s},i)=>{let{paraswapPrepare:c}=await Promise.resolve().then(()=>(It(),Tr)),d=await c({chainId:e,srcToken:t,destToken:r,amount:n,srcDecimals:a,destDecimals:s,userAddress:o,side:"SELL"},i);return{artifactKind:Z.TRANSACTION,transaction:d.transaction,requiresApproval:d.requiresApproval??null,amountOut:d.quote?.priceRoute?.destAmount??null,minOut:d.quote?.amountOutMinimum??null}},"0x":async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o},a)=>{let{zeroxPrepare:s}=await Promise.resolve().then(()=>(kt(),Dr)),i=await s({chainId:e,sellToken:t,buyToken:r,sellAmount:n,taker:o},a);return{artifactKind:Z.TRANSACTION,transaction:i.transaction,requiresApproval:i.requiresApproval??null,amountOut:i.quote?.buyAmount??null,minOut:i.quote?.minBuyAmount??null}},cow:async({chainId:e,tokenIn:t,tokenOut:r,amountIn:n,taker:o},a)=>{let{cowPrepareOrder:s}=await Promise.resolve().then(()=>(Tt(),Zr)),i=await s({chainId:e,sellToken:t,buyToken:r,sellAmountBeforeFee:String(n),from:o},a);return{artifactKind:Z.TYPED_DATA_ORDER,typedData:i.typedData,requiresApproval:{token:t,spender:i.vaultRelayer,amount:String(n),note:"CoW pulls funds via the vault relayer, not the settlement contract"},settlement:i.settlement,amountOut:i.quote?.quote?.buyAmount??null,minOut:null,submission:"sign the typed data, then submit the order to the CoW API"}}};var Ci=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(e=>e.toLowerCase())),ki=/^0x[0-9a-fA-F]{40}$/;async function _n(e,t={}){let{taker:r}=e;if(!r)throw new Error("prepareBestRoute requires taker: a prepared transaction is built FOR an address, and the quote-only placeholder must never end up in one");if(!ki.test(r))throw new Error(`taker must be a valid 20-byte address, got "${r}"`);if(Ci.has(r.toLowerCase()))throw new Error(`taker "${r}" is a placeholder/burn address. It is valid for quoting but not for preparing -- that would build a transaction for an address nobody controls. Pass the real wallet that will sign.`);let n=await tt(e,t);if(!n.best){let h=n.impactRejected??[];return{ok:!1,reason:h.length?h[0].reason:"no source returned a usable route",priceImpactBlocked:h.length>0,impactRejected:h,comparison:n}}let o=e.source||n.best.source,a=n.routes.find(h=>h.source===o);if(!a)return{ok:!1,reason:`source "${o}" did not return a usable route`,comparison:n};let s=Mt[o];if(!s){let h=n.routes.find(b=>Mt[b.source]&&b.source!==o);return{ok:!1,reason:`${o} won the comparison but has no prepare path in this build. `+(h?`Next preparable route is ${h.source}; pass source:"${h.source}" to use it.`:"No route in this comparison can be prepared."),comparison:n,winner:o}}let i;try{i=await s(e,t)}catch(h){let b=typeof h?.body=="string"?h.body:h?.body?JSON.stringify(h.body):"",w=[String(h?.message||h),b].filter(Boolean).join(" :: "),y=/allowance/i.test(w),v=!y&&/not enough|insufficient|balance/i.test(w),A,I;y?(I="approval-required-first",A=`${o} will not build swap calldata until the token approval exists on-chain. Approve the spender first, then prepare again. Underlying: ${w}`):v?(I="taker-not-funded",A=`${o} refused to build the transaction: ${w}. This venue verifies the taker holds the input token. Quoting works for any address; preparing needs the real funded wallet.`):(I="provider-error",A=`${o} prepare failed: ${w}`);let _=n.routes.find(E=>Mt[E.source]&&E.source!==o);return{ok:!1,reason:A,failureKind:I,..._?{alternative:_.source}:{},comparison:n}}let c=e.driftToleranceBps??Ii,d=null,p=null;if(i.amountOut!=null&&a.grossOut!=null)try{let h=BigInt(a.grossOut),b=BigInt(i.amountOut);h>0n&&(d=Number((b-h)*10000n/h),d<-c&&(p=`route moved ${(d/100).toFixed(2)}% against you between the comparison and this prepare (tolerance ${(c/100).toFixed(2)}%). The ranking may no longer hold -- re-run the comparison before signing.`))}catch{}let l=n.routes.filter(h=>h.source!==o).map(h=>({source:h.source,netOut:h.netOut,gasUsd:h.gasUsd})),f=n.routes.map(h=>({source:h.source,liquidityUsd:h.liquidityUsd??null})).reduce((h,b)=>Math.max(h,b.liquidityUsd??0),0)||null,m=a.liquidityUsd??null,g=m!=null&&f>0?Math.round(m/f*100):null;return N({ok:!0,chosen:{source:o,wasWinner:o===n.best.source,netOut:a.netOut,grossOut:a.grossOut,gasUsd:a.gasUsd,liquidityUsd:a.liquidityUsd??null},liquidity:{chosenUsd:m,maxUsd:f,sharePct:g},priceImpact:n.priceImpact??null,impactUnmeasured:n.impactUnmeasured??[],...i,unsigned:!0,signedBy:"user-wallet",destination:i.artifactKind===Z.TRANSACTION?i.transaction?.to??null:i.settlement??null,driftBps:d,warnings:[...p?[p]:[],...n.warnings||[],...i.artifactKind===Z.TYPED_DATA_ORDER?["This is an ORDER to sign, not a transaction to broadcast. Signing it authorizes a solver to settle on your behalf."]:[]],runnersUp:l,comparison:{rankedOn:n.rankedOn,sourcesAnswered:n.sourcesAnswered,sourcesTried:n.sourcesTried,improvementBps:n.improvementBps},note:"UNSIGNED. Verify the destination address and minOut against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."},{provider:"router",kind:"best-route"})}q();var Oi=/^0x[0-9a-fA-F]{40}$/,Ni=new Set(["0x0000000000000000000000000000000000000000","0x000000000000000000000000000000000000dead","0x0000000000000000000000000000000000000001","0x00000000000000000000000000000000000a1ce5"].map(e=>e.toLowerCase())),$i=100,Vt={relay:async({fromChainId:e,toChainId:t,tokenIn:r,tokenOut:n,amountIn:o,taker:a},s)=>{let{relayPrepare:i}=await Promise.resolve().then(()=>(Ze(),Je)),c=await i({user:a,originChainId:e,destinationChainId:t,originCurrency:r,destinationCurrency:n,amount:String(o)},s);return{transactions:c.transactions||[],amountOut:c.quote?.details?.currencyOut?.amount??null,minOut:c.quote?.details?.currencyOut?.minimumAmount??null,durationSeconds:c.quote?.details?.timeEstimate??null}},lifi:async({fromChainId:e,toChainId:t,tokenIn:r,tokenOut:n,amountIn:o,taker:a,isHolder:s},i)=>{let{lifiPrepare:c}=await Promise.resolve().then(()=>(_e(),St)),d=await c({fromChain:e,toChain:t,fromToken:r,toToken:n,fromAmount:o,fromAddress:a,isHolder:s,feeAction:"bridge"},i);return{transactions:d.transaction?[d.transaction]:[],requiresApproval:d.requiresApproval??null,amountOut:d.quote?.estimate?.toAmount??null,minOut:d.quote?.estimate?.toAmountMin??null,durationSeconds:d.quote?.estimate?.executionDuration??null}}};async function Un(e,t={}){let{taker:r,fromChainId:n,toChainId:o}=e;if(!r)throw new Error("prepareBestBridgeRoute requires taker: bridge transactions are built FOR an address, and the quote-only placeholder must never end up in one");if(!Oi.test(r))throw new Error(`taker must be a valid 20-byte address, got "${r}"`);if(Ni.has(r.toLowerCase()))throw new Error(`taker "${r}" is a placeholder/burn address. Bridging to it would send funds to an address nobody controls, on a chain where you cannot undo it.`);let a=await rt(e,t);if(!a.best)return{ok:!1,reason:"no source returned a usable bridge route",comparison:a};let s=e.source||a.best.source,i=a.routes.find(h=>h.source===s);if(!i)return{ok:!1,reason:`source "${s}" returned no usable route`,comparison:a};let c=Vt[s];if(!c){let h=a.routes.find(b=>Vt[b.source]&&b.source!==s);return{ok:!1,reason:`${s} won the comparison but has no bridge prepare path in this build. `+(h?`Next preparable route is ${h.source}; pass source:"${h.source}".`:"No route in this comparison can be prepared."),failureKind:"no-prepare-path",...h?{alternative:h.source}:{},winner:s,comparison:a}}let d;try{d=await c(e,t)}catch(h){let b=typeof h?.body=="string"?h.body:h?.body?JSON.stringify(h.body):"",w=[String(h?.message||h),b].filter(Boolean).join(" :: "),y=/allowance/i.test(w),v=!y&&/not enough|insufficient|balance/i.test(w),A=a.routes.find(I=>Vt[I.source]&&I.source!==s);return{ok:!1,reason:y?`${s} will not build calldata until the token approval exists on-chain. Approve first, then prepare again. Underlying: ${w}`:v?`${s} refused to build: ${w}. Quoting works for any address; preparing needs the real funded wallet on chain ${n}.`:`${s} bridge prepare failed: ${w}`,failureKind:y?"approval-required-first":v?"taker-not-funded":"provider-error",...A?{alternative:A.source}:{},comparison:a}}let p=d.transactions||[];if(!p.length)return{ok:!1,reason:`${s} returned no executable transaction for this route`,failureKind:"provider-error",comparison:a};let l=p.filter(h=>h.chainId!=null&&Number(h.chainId)!==Number(n));if(l.length)return{ok:!1,reason:`${s} returned a transaction for chain ${l[0].chainId} but the origin chain is ${n}. Refusing to hand over a mismatched artifact.`,failureKind:"chain-mismatch",comparison:a};let u=e.driftToleranceBps??$i,f=null,m=null;if(d.amountOut!=null&&i.grossOut!=null)try{let h=BigInt(i.grossOut),b=BigInt(d.amountOut);h>0n&&(f=Number((b-h)*10000n/h),f<-u&&(m=`route moved ${(f/100).toFixed(2)}% against you since the comparison (tolerance ${(u/100).toFixed(2)}%). Re-compare before signing.`))}catch{}let g=[...m?[m]:[],...a.warnings||[],`Bridging is NOT atomic: the origin transaction succeeding does not mean funds arrived on chain ${o}. Expect ~${d.durationSeconds!=null?`${d.durationSeconds}s`:"minutes"} before the destination credits, and do not re-send if it is pending.`];return p.length>1&&g.push(`This route needs ${p.length} transactions signed IN ORDER. Signing only the first leaves funds approved but not bridged.`),N({ok:!0,chosen:{source:s,wasWinner:s===a.best.source,netOut:i.netOut,grossOut:i.grossOut,gasUsd:i.gasUsd},artifactKind:"unsigned-transaction-sequence",fromChainId:Number(n),toChainId:Number(o),transactionCount:p.length,transactions:p,requiresApproval:d.requiresApproval??null,minOut:d.minOut??null,durationSeconds:d.durationSeconds??null,destination:p[0]?.to??null,unsigned:!0,signedBy:"user-wallet",driftBps:f,warnings:g,runnersUp:a.routes.filter(h=>h.source!==s).map(h=>({source:h.source,netOut:h.netOut,gasUsd:h.gasUsd})),comparison:{rankedOn:a.rankedOn,sourcesAnswered:a.sourcesAnswered,sourcesTried:a.sourcesTried,improvementBps:a.improvementBps},note:`UNSIGNED. ${p.length} transaction(s) on chain ${n}, crediting chain ${o}. Verify every destination address before signing.`},{provider:"router",kind:"best-bridge"})}ne();Ve();ne();var jt={getAmountsOut:"d06ca61f",swapExactTokensForTokens:"38ed1739",swapExactETHForTokens:"7ff36ab5"},F=e=>BigInt(e).toString(16).padStart(64,"0"),ye=e=>e.slice(2).toLowerCase().padStart(64,"0");function Ti(e,t){return`0x${jt.getAmountsOut}`+F(e)+F(64)+F(t.length)+t.map(ye).join("")}function Bi(e){if(!e||e==="0x")return null;let t=e.slice(2);if(t.length<128)return null;let r=Number(BigInt(`0x${t.slice(64,128)}`));if(!Number.isFinite(r)||r<1||r>16)return null;let n=[];for(let o=0;o<r;o++){let a=128+o*64;if(t.length<a+64)return null;n.push(BigInt(`0x${t.slice(a,a+64)}`))}return n}function Ht(e,t="router"){return(e?.venues||[]).find(n=>n.kind===t)?.address??null}var Kt=100;function Ri(e,t){let r=Number(t);if(!Number.isFinite(r)||r<0)throw new Error("slippageBps must be a non-negative number");if(r>Kt)throw new Error(`slippageBps ${r} exceeds the ${Kt} bps ceiling. Block and requote or split the order -- do not widen the guard to force a fill.`);return BigInt(e)*BigInt(1e4-Math.floor(r))/10000n}function Pn(e){let{chainId:t,wrappedNative:r}=e;async function n(o,a,s,i){let c=await B(t,"eth_call",[{to:o,data:Ti(a,s)},"latest"],i);return Bi(c?.result??c)}return{async quote({tokenIn:o,tokenOut:a,amountIn:s,path:i},c={}){let d=Ht(c.scanner);if(!d)return{chainId:t,evidence:x.UNAVAILABLE,reason:"no verified router configured for this chain; quoting stays fail-closed rather than guessing a venue address"};let p=i||[o,a];if(p.some(u=>!/^0x[0-9a-fA-F]{40}$/.test(u||"")))throw new Error("quote requires valid 20-byte addresses");let l=await n(d,s,p,c);return l?{chainId:t,router:d,path:p,amountIn:String(s),amountOut:l[l.length-1].toString(),hops:p.length-1,evidence:x.LIVE,note:"exact-input quote at current reserves; not a guaranteed fill"}:{chainId:t,router:d,path:p,evidence:x.UNKNOWN,reason:"router returned no amounts -- no pool for this path, or the call reverted"}},async sellSimulation({token:o,amountIn:a,base:s},i={}){let c=Ht(i.scanner),d=s||r;if(d&&String(o).toLowerCase()===String(d).toLowerCase())return{chainId:t,token:o,verdict:S.UNKNOWN,evidence:x.UNAVAILABLE,reason:"token is the base asset for this chain, so there is nothing to round-trip against. Sellability must be judged against a different quote asset."};if(!c||!d)return{chainId:t,token:o,verdict:S.UNKNOWN,evidence:x.UNAVAILABLE,reason:c?"no wrappedNative configured for this chain, so no base asset to round-trip against":"no verified router configured for this chain"};let p=await n(c,a,[d,o],i);if(!p)return{chainId:t,token:o,verdict:S.FAIL,evidence:x.LIVE,leg:"buy",reason:"buy leg returned no amounts -- no route in"};let l=p[p.length-1];if(l===0n)return{chainId:t,token:o,verdict:S.FAIL,evidence:x.LIVE,leg:"buy",reason:"buy leg quotes zero output"};let u=await n(c,l,[o,d],i);if(!u)return{chainId:t,token:o,verdict:S.FAIL,evidence:x.LIVE,leg:"sell",bought:l.toString(),reason:"SELL LEG FAILED while the buy leg quoted fine. This is the honeypot signature: do not trade."};let f=u[u.length-1],m=Number(f*10000n/BigInt(a)),g=S.PASS,h="round trip completes with expected fee/impact loss";return m<5e3?(g=S.FAIL,h=`round trip returns only ${(m/100).toFixed(2)}% -- punitive tax or no real liquidity`):m<9e3&&(g=S.CAUTION,h=`round trip returns ${(m/100).toFixed(2)}% -- transfer tax or thin liquidity at this size`),{chainId:t,token:o,base:d,router:c,verdict:g,reason:h,amountIn:String(a),bought:l.toString(),returned:f.toString(),retentionBps:m,evidence:x.LIVE,note:"Quote-level round trip. It does not prove transfer hooks absent at execution time."}},async prepareUnsignedTx({tokenIn:o,tokenOut:a,amountIn:s,recipient:i,slippageBps:c=50,deadlineSeconds:d=900,path:p},l={}){let u=l.scanner,f=Ht(u);if(!f)throw new Error(`chain ${t} has no verified router; preparing a swap stays fail-closed. Add a venue with recorded provenance first (see docs/adding-a-chain.md).`);if(!/^0x[0-9a-fA-F]{40}$/.test(i||""))throw new Error("prepareUnsignedTx requires a valid recipient address");let m=p||[o,a],g=await this.quote({tokenIn:o,tokenOut:a,amountIn:s,path:m},l);if(g.evidence!==x.LIVE)throw new Error(`cannot prepare without a live quote (${g.evidence}: ${g.reason??"no reason given"})`);let h=Ri(g.amountOut,c);if(h<=0n)throw new Error("computed minOut is zero -- refusing to prepare");let b=BigInt(Math.floor(Date.now()/1e3)+Number(d)),w=r&&m[0].toLowerCase()===r.toLowerCase()&&l.useNative,y=w?`0x${jt.swapExactETHForTokens}`+F(h)+F(128)+ye(i)+F(b)+F(m.length)+m.map(ye).join(""):`0x${jt.swapExactTokensForTokens}`+F(s)+F(h)+F(160)+ye(i)+F(b)+F(m.length)+m.map(ye).join("");return{unsigned:!0,signedBy:"user-wallet",chainId:t,tx:{to:f,data:y,value:w?`0x${BigInt(s).toString(16)}`:"0x0"},guard:{quotedOut:g.amountOut,minOut:h.toString(),slippageBps:c,maxSlippageBps:Kt,deadline:b.toString()},requires:w?[]:[{step:"approve",token:m[0],spender:f,amount:String(s)}],note:"UNSIGNED. Re-verify the guard against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."}}}}ne();var _i=[100,500,3e3,1e4],Fn={quoteExactInputSingle:"c6a5026a",exactInputSingle:"04e45aaf"},oe=e=>BigInt(e).toString(16).padStart(64,"0"),Ee=e=>e.slice(2).toLowerCase().padStart(64,"0"),Ln=/^0x[0-9a-fA-F]{40}$/,Wt=100;function Ui(e,t){let r=Number(t);if(!Number.isFinite(r)||r<0)throw new Error("slippageBps must be a non-negative number");if(r>Wt)throw new Error(`slippageBps ${r} exceeds the ${Wt} bps ceiling. Block and requote or split the order -- do not widen the guard to force a fill.`);return BigInt(e)*BigInt(1e4-Math.floor(r))/10000n}function zt(e,t){return(e?.venues||[]).find(r=>r.kind===t)?.address??null}function Dn(e){let{chainId:t,wrappedNative:r}=e;async function n({quoter:a,tokenIn:s,tokenOut:i,amountIn:c,fee:d},p){let l=`0x${Fn.quoteExactInputSingle}`+Ee(s)+Ee(i)+oe(c)+oe(d)+oe(0),u=await B(t,"eth_call",[{to:a,data:l},"latest"],p).catch(()=>null),f=u?.result??u;if(!f||f==="0x"||f.length<66)return null;let m=BigInt(`0x${f.slice(2,66)}`);return m>0n?m:null}async function o({quoter:a,tokenIn:s,tokenOut:i,amountIn:c},d){let p=[],l=null;for(let u of _i){let f=await n({quoter:a,tokenIn:s,tokenOut:i,amountIn:c,fee:u},d);p.push({fee:u,amountOut:f?f.toString():null}),f&&(!l||f>l.amountOut)&&(l={fee:u,amountOut:f})}return{best:l,tried:p}}return{async quote({tokenIn:a,tokenOut:s,amountIn:i},c={}){let d=zt(c.scanner,"quoter");if(!d)return{chainId:t,evidence:x.UNAVAILABLE,reason:"no verified quoter configured for this chain; quoting stays fail-closed rather than guessing a venue address"};for(let u of[a,s])if(!Ln.test(u||""))throw new Error("quote requires valid 20-byte addresses");let{best:p,tried:l}=await o({quoter:d,tokenIn:a,tokenOut:s,amountIn:i},c);return p?{chainId:t,venue:"uniswap-v3",quoter:d,tokenIn:a,tokenOut:s,amountIn:String(i),amountOut:p.amountOut.toString(),fee:p.fee,useNative:!!r&&String(a).toLowerCase()===String(r).toLowerCase(),triedFeeTiers:l,evidence:x.LIVE,note:"exact-input single-hop quote at current tick; not a guaranteed fill"}:{chainId:t,quoter:d,tokenIn:a,tokenOut:s,triedFeeTiers:l,evidence:x.UNKNOWN,reason:"no fee tier returned a quote -- no V3 pool for this pair, or no liquidity"}},async sellSimulation({token:a,amountIn:s,base:i},c={}){let d=zt(c.scanner,"quoter"),p=i||r;if(p&&String(a).toLowerCase()===String(p).toLowerCase())return{chainId:t,token:a,verdict:S.UNKNOWN,evidence:x.UNAVAILABLE,reason:"token is the base asset for this chain, so there is nothing to round-trip against. Sellability must be judged against a different quote asset."};if(!d||!p)return{chainId:t,token:a,verdict:S.UNKNOWN,evidence:x.UNAVAILABLE,reason:d?"no wrappedNative configured, so there is no base asset to round-trip against":"no verified quoter configured for this chain"};let l=await o({quoter:d,tokenIn:p,tokenOut:a,amountIn:s},c);if(!l.best)return{chainId:t,token:a,verdict:S.FAIL,evidence:x.LIVE,leg:"buy",reason:"no V3 pool priced the buy leg on any fee tier"};let u=await o({quoter:d,tokenIn:a,tokenOut:p,amountIn:l.best.amountOut},c);if(!u.best)return{chainId:t,token:a,verdict:S.FAIL,evidence:x.LIVE,leg:"sell",bought:l.best.amountOut.toString(),reason:"SELL LEG FAILED while the buy leg quoted fine. This is the honeypot signature: do not trade."};let f=u.best.amountOut,m=Number(f*10000n/BigInt(s)),g=S.PASS,h="round trip completes with expected fee/impact loss";return m<5e3?(g=S.FAIL,h=`round trip returns only ${(m/100).toFixed(2)}% -- punitive tax or no real liquidity`):m<9e3&&(g=S.CAUTION,h=`round trip returns ${(m/100).toFixed(2)}% -- transfer tax or thin liquidity at this size`),{chainId:t,venue:"uniswap-v3",token:a,base:p,verdict:g,reason:h,amountIn:String(s),bought:l.best.amountOut.toString(),returned:f.toString(),retentionBps:m,buyFee:l.best.fee,sellFee:u.best.fee,evidence:x.LIVE,note:"Quote-level round trip. It does not prove transfer hooks absent at execution time."}},async prepareUnsignedTx({tokenIn:a,tokenOut:s,amountIn:i,recipient:c,slippageBps:d=50,fee:p},l={}){let u=zt(l.scanner,"router");if(!u)throw new Error(`chain ${t} has no verified V3 router; preparing a swap stays fail-closed. Add a venue with recorded provenance first (see docs/adding-a-chain.md).`);if(!Ln.test(c||""))throw new Error("prepareUnsignedTx requires a valid recipient address");let f=await this.quote({tokenIn:a,tokenOut:s,amountIn:i},l);if(f.evidence!==x.LIVE)throw new Error(`cannot prepare without a live quote (${f.evidence}: ${f.reason??"no reason given"})`);let m=p??f.fee,g=Ui(f.amountOut,d);if(g<=0n)throw new Error("computed minOut is zero -- refusing to prepare");let h=!!(l.useNative||f.useNative)&&r&&String(a).toLowerCase()===String(r).toLowerCase(),b=`0x${Fn.exactInputSingle}`+Ee(a)+Ee(s)+oe(m)+Ee(c)+oe(i)+oe(g)+oe(0);return{unsigned:!0,signedBy:"user-wallet",chainId:t,venue:"uniswap-v3",tx:{to:u,data:b,value:h?String(i):"0x0"},guard:{quotedOut:f.amountOut,minOut:g.toString(),slippageBps:d,maxSlippageBps:Wt,fee:m},requires:h?[]:[{step:"approve",token:a,spender:u,amount:String(i)}],note:"UNSIGNED. Re-verify the guard against a fresh quote immediately before signing -- a quote-time minimum is not a minimum at broadcast time."}}}}var nt={decimals:"0x313ce567",symbol:"0x95d89b41",name:"0x06fdde03",totalSupply:"0x18160ddd",owner:"0x8da5cb5b"};function qn(e){if(!e||e==="0x")return null;try{return BigInt(e)}catch{return null}}function Mn(e){if(!e||e==="0x")return null;let t=e.slice(2);if(t.length>=128){let n=Number(BigInt(`0x${t.slice(64,128)}`));if(n>0&&n<=256&&t.length>=128+n*2){let o=t.slice(128,128+n*2),a=Buffer.from(o,"hex").toString("utf8").replace(/\0+$/,"");if(a)return a}}return Buffer.from(t.slice(0,64),"hex").toString("utf8").replace(/\0+$/,"")||null}function Pi(e){let{chainId:t}=e;async function r(n,o,a){return B(t,"eth_call",[{to:n,data:o},"latest"],a)}return{async blockNumber(n={}){let o=await sn(t,n);return{chainId:t,blockNumber:o?.blockNumber??o,evidence:x.LIVE}},async nativeBalance(n,o={}){let a=await cn(t,n,o);return{chainId:t,address:n,wei:a?.wei??a?.balance??null,symbol:e.nativeCurrency?.symbol??null,decimals:e.nativeCurrency?.decimals??18,evidence:x.LIVE}},async tokenBalance({token:n,owner:o},a={}){let s=await ln({chainId:t,token:n,owner:o},a);return{chainId:t,token:n,owner:o,raw:s?.balance??s,evidence:x.LIVE}},async resolveToken(n,o={}){if(!/^0x[0-9a-fA-F]{40}$/.test(n||""))return{chainId:t,token:n,evidence:x.UNKNOWN,error:"resolveToken needs a 20-byte address; symbol lookup is a market-data concern"};let[a,s,i,c]=await Promise.all([r(n,nt.decimals,o).catch(()=>null),r(n,nt.symbol,o).catch(()=>null),r(n,nt.name,o).catch(()=>null),r(n,nt.totalSupply,o).catch(()=>null)]),d=qn(a?.result??a),p=d!==null||s?.result||i?.result;return{chainId:t,address:n,decimals:d===null?null:Number(d),symbol:Mn(s?.result??s),name:Mn(i?.result??i),totalSupply:(qn(c?.result??c)??null)?.toString()??null,evidence:p?x.LIVE:x.UNKNOWN,warning:p?void 0:"no ERC-20 metadata returned -- may not be a token contract"}},async resolvePools(n,o={}){let a=e.dexscreenerSlug;if(!a)return{chainId:t,token:n,pools:[],evidence:x.UNAVAILABLE,reason:"no dexscreenerSlug configured for this chain; pool discovery is unavailable rather than guessed"};let s=await Bt(n,o).catch(()=>null),c=(s?.pairs||s?.data?.pairs||[]).filter(d=>String(d.chainId).toLowerCase()===String(a).toLowerCase()).map(d=>({pair:d.pairAddress,dex:d.dexId,base:d.baseToken?.address,quote:d.quoteToken?.address,liquidityUsd:d.liquidity?.usd??null,priceUsd:d.priceUsd??null,volume24hUsd:d.volume?.h24??null,createdAt:d.pairCreatedAt??null})).sort((d,p)=>(p.liquidityUsd??0)-(d.liquidityUsd??0));return{chainId:t,token:n,pools:c,evidence:c.length?x.LIVE:x.UNKNOWN}},async scanBlocks({fromBlock:n,toBlock:o,address:a,topics:s,chunkSize:i=2e3}={},c={}){if(!Number.isInteger(n)||!Number.isInteger(o))throw new Error("scanBlocks requires integer fromBlock and toBlock");if(o<n)throw new Error("toBlock must be >= fromBlock");let d=[],p=[];for(let l=n;l<=o;l+=i){let u=Math.min(l+i-1,o);p.push([l,u])}for(let[l,u]of p){let f={fromBlock:`0x${l.toString(16)}`,toBlock:`0x${u.toString(16)}`};a&&(f.address=a),s&&(f.topics=s);let m=await B(t,"eth_getLogs",[f],c).catch(g=>({error:String(g?.message||g)}));if(m?.error)return{chainId:t,fromBlock:n,toBlock:o,logs:d,complete:!1,failedAt:[l,u],error:m.error,evidence:x.UNKNOWN};for(let g of m?.result??m??[])d.push(g)}return{chainId:t,fromBlock:n,toBlock:o,logs:d,complete:!0,chunks:p.length,evidence:x.LIVE}},async scoreRisk(n,o={}){let a=[],s=S.PASS,i=p=>{let l={[S.PASS]:0,[S.CAUTION]:1,[S.UNKNOWN]:2,[S.FAIL]:3};l[p]>l[s]&&(s=p)},c=await this.resolveToken(n,o);c.evidence!==x.LIVE?(a.push({check:"erc20-metadata",result:S.UNKNOWN,detail:c.warning}),i(S.UNKNOWN)):a.push({check:"erc20-metadata",result:S.PASS,detail:`${c.symbol} / ${c.decimals}d`});let d=await this.resolvePools(n,o);if(d.evidence===x.UNAVAILABLE)a.push({check:"liquidity",result:S.UNKNOWN,detail:d.reason}),i(S.UNKNOWN);else if(!d.pools.length)a.push({check:"liquidity",result:S.FAIL,detail:"no pool with liquidity found"}),i(S.FAIL);else{let p=d.pools[0],l=p.liquidityUsd??0;l<5e3?(a.push({check:"liquidity",result:S.CAUTION,detail:`top pool only $${l}`}),i(S.CAUTION)):a.push({check:"liquidity",result:S.PASS,detail:`$${l} on ${p.dex}`}),p.createdAt&&Date.now()-p.createdAt<24*3600*1e3&&(a.push({check:"age",result:S.CAUTION,detail:"pool under 24h old"}),i(S.CAUTION))}if(typeof this.sellSimulation=="function"){let p=await this.sellSimulation({token:n,amountIn:(10n**16n).toString()},o).catch(l=>({verdict:S.UNKNOWN,reason:String(l?.message||l)}));a.push({check:"sellability",result:p.verdict,detail:p.retentionBps!=null?`round trip returns ${(p.retentionBps/100).toFixed(2)}% -- ${p.reason}`:p.reason}),i(p.verdict)}else a.push({check:"sellability",result:S.UNKNOWN,detail:"no verified router on this chain, so a round-trip sell simulation cannot run. Treat as unproven -- a buy path is not an exit path."}),i(S.UNKNOWN);return{chainId:t,token:n,verdict:s,checks:a,note:"Structural checks only. UNKNOWN is not PASS. A token is not tradeable until a sell simulation succeeds."}}}}function Vn(e){let r={...Pi(e)},n=new Set((e.venues||[]).map(a=>a.kind));e.venueKind==="uniswap-v3"&&n.has("quoter")&&n.has("router")?Object.assign(r,Dn({chainId:e.chainId,wrappedNative:e.wrappedNative})):e.venueKind==="uniswap-v2"&&n.has("router")&&Object.assign(r,Pn({chainId:e.chainId,wrappedNative:e.wrappedNative}));let o={};for(let[a,s]of Object.entries(r))o[a]=s.bind(r);return{key:e.key,chainId:e.chainId,name:e.name,rpcEnv:e.rpcEnv,nativeCurrency:e.nativeCurrency,explorer:e.explorer,venues:e.venues||[],capabilities:o}}var Fi=Object.freeze([{key:"ethereum",chainId:1,name:"Ethereum",rpcEnv:["ETH_RPC_URL","ETHEREUM_RPC_URL","MAINNET_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://etherscan.io",dexscreenerSlug:"ethereum",venueKind:"uniswap-v3",wrappedNative:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.71 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:1}}]},{key:"optimism",chainId:10,name:"OP Mainnet",rpcEnv:["OPTIMISM_RPC_URL","OP_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://optimistic.etherscan.io",dexscreenerSlug:"optimism",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1905.23 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:10}}]},{key:"bsc",chainId:56,name:"BNB Smart Chain",rpcEnv:["BSC_RPC_URL","BNB_RPC_URL"],nativeCurrency:{symbol:"BNB",decimals:18},explorer:"https://bscscan.com",dexscreenerSlug:"bsc",venueKind:"uniswap-v3",wrappedNative:"0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",venues:[{kind:"quoter",address:"0x78D78E420Da98ad378D7799bE8f4AF69033EB077",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WBNB->USDC fee 500 quoted 413.86 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}},{kind:"router",address:"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:56}}]},{key:"polygon",chainId:137,name:"Polygon",rpcEnv:["POLYGON_RPC_URL","POLYGON_RPC"],nativeCurrency:{symbol:"POL",decimals:18},explorer:"https://polygonscan.com",dexscreenerSlug:"polygon",venueKind:"uniswap-v3",wrappedNative:"0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WMATIC->USDC fee 500 quoted 0.0720 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:137}}]},{key:"stable",chainId:988,name:"Stable Mainnet",rpcEnv:["STABLE_RPC_URL","STABLE_RPC"],nativeCurrency:{symbol:"USDT0",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x5d442b349590a6048Eb2dC0eC346cAA5F47A9ab5",venues:[{kind:"quoter",address:"0xb070179E7032CdA868b53e6C1742F80c9e940d1A",label:"Uniswap V3 QuoterV2 (canonical)",verified:{method:"Stable is on the OFFICIAL Uniswap v3 Deployments List (governance-recognised 2026-05-12, UAC process completed 2026-04, deployed by Protofire), so this is a canonical deployment rather than a fork. eth_getCode returned 8273 bytes, the same size as the canonical quoter on the seven already-verified chains. Functional probe on a live pool (TOAST -> USDT0, fee 10000): 100 in -> 0.000003, 1000 -> 0.000031, 10000 -> 0.000319 USDT0. Output scales monotonically with input, which is a working quoter answering, not a revert. Two of three sampled pools carry non-zero liquidity. NOTE: the pools discovered so far are thin, so real routing size is limited -- the venue is proved, deep liquidity is not.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:988}},{kind:"router",address:"0x32eaf9B5d5F2CD7361c5012890C943D7de84C22a",label:"Uniswap SwapRouter02 (canonical)",verified:{method:"eth_getCode returned 24497 bytes. Cross-checked on-chain rather than trusted from docs: router.factory() returns 0x88f0a512ef09175d456bc9547f914f48c013e4aa, the same v3 core factory that created the pools quoted above, and router.WETH9() returns the wrappedNative recorded on this chain entry. Address published in the Stable docs DEX reference and the Uniswap deployments list.",source:"docs.stable.xyz/en/reference/dexes + on-chain factory()/WETH9() round-trip",date:"2026-08-05",chainId:988}}]},{key:"hyperevm",chainId:999,name:"HyperEVM",rpcEnv:["HYPEREVM_RPC_URL","HYPER_EVM_RPC"],nativeCurrency:{symbol:"HYPE",decimals:18},dexscreenerSlug:"hyperevm",venueKind:"uniswap-v3",wrappedNative:"0x5555555555555555555555555555555555555555",venues:[{kind:"quoter",address:"0x03A918028f22D9E1473B7959C927AD7425A45C7C",label:"HyperSwap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle(1 WHYPE -> USDT0) returned live output on all four fee tiers (100: 57.3385, 500: 57.4187, 3000: 57.3237, 10000: 56.1963 USDT0). Decimals read on-chain: WHYPE 18, USDT0 6. Best tier checked against an INDEPENDENT control the same minute -- Hyperliquid allMids put HYPE at 57.3205, so the pool is 0.171% from the perp mid, which is the right shape for fee plus impact rather than a wrong contract or a decimals bug.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}},{kind:"router",address:"0x4E2960a8cd19B467b82d26D83fAcb0fAE26b094D",label:"HyperSwap V3 SwapRouter",verified:{method:"eth_getCode returned 12070 bytes, and it is the router paired with the quoter proved above -- the same pair already shipped in UNI_V3_VENUES[999].hyperswap, which is the map the quote/prepare path actually routes through.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:999}}]},{key:"abstract",chainId:2741,name:"Abstract",rpcEnv:["ABSTRACT_RPC_URL","ABS_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},venueKind:"uniswap-v3",wrappedNative:"0x3439153EB7AF838Ad19d56E1571FBD09333C2809",venues:[{kind:"quoter",address:"0x728BD3eC25D5EDBafebB84F3d67367Cd9EBC7693",label:"Uniswap V3 QuoterV2 (Abstract deployment)",verified:{method:"Abstract is a ZK-stack chain, so CREATE2 addresses differ and the canonical Uniswap addresses are NOT valid here -- probing them returns codesize 0, which is what previously made this chain look like it had no V3 at all. Found the real deployment from live traffic instead: scanned recent Swap(...) logs, took the busiest pool, read pool.factory() = 0xa1160e73b63f322ae88cc2d8e700833e71d0b2a1, then enumerated that factory's deployer (0xf3d63166F0Ca56C3c1A3508FcE03Ff0Cf3Fb691e) and probed each of its 56 contracts with a real quoteExactInputSingle call. Exactly one answered: 1 WETH -> 1846.475731 USDC.e at fee 500. Independent sanity check: the pool's own slot0() spot price is 1873.11 USDC.e per WETH, so the quoter sits ~1.4% below spot, the right shape for fee plus price impact on this size.",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-08-05",chainId:2741}},{kind:"router",address:"0x7712FA47387542819d4E35A23f8116C90C18767C",label:"Uniswap SwapRouter02 (Abstract deployment)",verified:{method:"eth_getCode returned 167392 bytes and the runtime contains the exactInputSingle selector. router.factory() matches the factory proved above and router.WETH9() matches the wrappedNative on this entry. Chosen over its byte-identical twin (0xfD6257F4...) because this is the address real users actually route through: it appeared as tx.to on live swaps against the WETH/USDC.e pool.",source:"on-chain factory()/WETH9() round-trip + live swap tx.to sampling",date:"2026-08-05",chainId:2741}}]},{key:"robinhood",chainId:4663,name:"Robinhood Chain",rpcEnv:["RH_CHAIN_RPC","ROBINHOOD_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},dexscreenerSlug:"robinhood",venueKind:"uniswap-v3",wrappedNative:"0x0bd7d308f8e1639fab988df18a8011f41eacad73",venues:[{kind:"quoter",address:"0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDG fee 100 quoted 1866.58 USDG, and USDG->CASHCAT fee 10000 quoted a live amount). A contract that correctly prices known pairs IS a working V3 quoter",source:"live eth_call against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"router",address:"0xcaf681a66d020601342297493863e78c959e5cb2",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode (24497 bytes) on this chain and the paired quoter at the same deployment passed a live functional quote",source:"live eth_getCode against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}},{kind:"factory",address:"0x1f7d7550b1b028f7571e69a784071f0205fd2efa",label:"Uniswap V3 Factory",verified:{method:"eth_getCode returned real bytecode (24535 bytes) and a PoolCreated log scan over this factory returned 76 pools in ~9000 recent blocks",source:"live eth_getLogs against rpc.mainnet.chain.robinhood.com",date:"2026-07-31",chainId:4663}}]},{key:"base",chainId:8453,name:"Base",rpcEnv:["BASE_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://basescan.org",dexscreenerSlug:"base",venueKind:"uniswap-v3",wrappedNative:"0x4200000000000000000000000000000000000006",venues:[{kind:"quoter",address:"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",label:"Uniswap V3 QuoterV2 (Base)",verified:{method:"functional probe: quoteExactInputSingle returned WETH->USDC at fee 500 = 1908.44 USDC, a live sane price. The canonical mainnet quoter address also has bytecode on Base but does NOT price this pair, which is exactly the false positive a codesize-only check accepts",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router",address:"0x2626664c2603336E57B271c5C0b26F421741e481",label:"Uniswap V3 SwapRouter02 (Base)",verified:{method:"eth_getCode returned real bytecode and the paired Base quoter passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:8453}},{kind:"router-v2",address:"0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24",label:"Uniswap V2 Router02 (Base)",verified:{method:"eth_getCode returned 17891 bytes; live getAmountsOut on WETH->USDC round-tripped to 98.75% (2x0.30% fee + impact)",source:"https://docs.uniswap.org/contracts/v2/reference/smart-contracts/v2-deployments",date:"2026-07-30",chainId:8453}}]},{key:"arbitrum",chainId:42161,name:"Arbitrum One",rpcEnv:["ARBITRUM_RPC_URL","ARB_RPC_URL"],nativeCurrency:{symbol:"ETH",decimals:18},explorer:"https://arbiscan.io",dexscreenerSlug:"arbitrum",venueKind:"uniswap-v3",wrappedNative:"0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",venues:[{kind:"quoter",address:"0x61fFE014bA17989E743c5F6cB21bF9697530B21e",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WETH->USDC fee 500 quoted 1908.72 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}},{kind:"router",address:"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:42161}}]},{key:"avalanche",chainId:43114,name:"Avalanche C-Chain",rpcEnv:["AVALANCHE_RPC_URL","AVAX_RPC_URL"],nativeCurrency:{symbol:"AVAX",decimals:18},explorer:"https://snowtrace.io",dexscreenerSlug:"avalanche",venueKind:"uniswap-v3",wrappedNative:"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7",venues:[{kind:"quoter",address:"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F",label:"Uniswap V3 QuoterV2",verified:{method:"functional probe, not a codesize check: quoteExactInputSingle returned a live sane price (WAVAX->USDC fee 500 quoted 6.48 USDC). A contract that correctly prices a known pair IS a working V3 quoter",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}},{kind:"router",address:"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE",label:"Uniswap V3 SwapRouter02",verified:{method:"eth_getCode returned real bytecode on this chain and the paired quoter at the same deployment passed a live functional quote",source:"scripts/verify-v3-venues.mjs (re-runnable)",date:"2026-07-30",chainId:43114}}]}]);function Hn(){return Fi.map(e=>Qt(Vn(e)))}Ke();var Kn="0x0000000000000000000000000000000000000000",zn=/^0x[0-9a-fA-F]{40}$/,Wn=!1;function ot(){Wn||(Hn(),Wn=!0)}var $=class extends Error{constructor(t){super(t),this.name="SwapArgsError"}};function Qn(e){if(ot(),!e)throw new $("missing <chain>");let t=Number(e);if(Number.isFinite(t)&&Ie(t))return t;let r=ue().find(n=>n.key===String(e).toLowerCase());if(r)return r.chainId;throw new $(`unknown chain "${e}". Known: ${ue().map(n=>n.key).join(", ")}`)}function Ae(e){try{return Qn(e)}catch(t){ve(t.message)}}function Di(e){return ot(),ue().find(t=>t.chainId===Number(e))?.key??String(e)}function ve(e){console.error(`error: ${e}`),process.exit(1)}function Gn(e,t){return(Number(e)/10**t).toLocaleString(void 0,{maximumFractionDigits:6})}function Xn(e,t){if(console.log(`sources: ${e.sourcesAnswered}/${e.sourcesTried} answered`),console.log(`ranked on: ${e.rankedOn}
|
|
6
|
+
`),!e.routes.length){console.log("no source returned a usable route.");for(let n of e.failed)console.log(` ${n.source}: ${n.error}`);return}let r=Math.max(...e.routes.map(n=>n.source.length),6);console.log(` ${"source".padEnd(r)} ${"net out".padStart(14)} ${"gross".padStart(14)} cost`);for(let[n,o]of e.routes.entries()){let a=n===0?"*":" ",s=o.gasUsd==null?"gas unknown":o.gasUsd===0?"gasless (solver)":`$${Number(o.gasUsd+(o.feeUsd??0)).toFixed(2)}`,i=o.meta?.durationSeconds!=null?` ~${o.meta.durationSeconds}s`:"";console.log(`${a} ${o.source.padEnd(r)} ${Gn(o.netOut,t).padStart(14)} ${Gn(o.grossOut,t).padStart(14)} ${s}${i}`)}for(let n of e.failed)console.log(` ${n.source.padEnd(r)} FAILED: ${String(n.error).slice(0,60)}`);console.log(`
|
|
7
|
+
${e.note}`);for(let n of e.warnings)console.log(`
|
|
8
|
+
WARNING: ${n}`)}function Yn(e,t,r){let n=String(e).trim();if(!/^\d+(\.\d+)?$/.test(n))throw new $(`${r} "${e}" is not a positive decimal number`);if(t==null)throw new $(`cannot scale ${r} "${e}": the token's decimals could not be read from chain. Pass exact base units instead (--base-units <integer>).`);let o=Number(t),[a,s=""]=n.split(".");if(s.length>o)throw new $(`${r} "${e}" has more precision than the token's ${o} decimals`);let i=(BigInt(a)*10n**BigInt(o)+BigInt(s.padEnd(o,"0")||"0")).toString();if(i==="0")throw new $(`${r} "${e}" rounds to zero at ${o} decimals`);return i}function qi(e,t){let r=String(e).trim();if(!/^\d+$/.test(r))throw new $(`${t} "${e}" must be a positive integer of base units`);if(BigInt(r)===0n)throw new $(`${t} must be greater than zero`);return r}function Mi({raw:e,symbol:t,address:r,decimals:n,chainRef:o}){let a=t?`${t} (${r})`:r,s=10n**BigInt(n)*BigInt(e),i=`0.${String(e).padStart(n,"0")}`.replace(/(\.\d*?[1-9])0+$/,"$1");return new $([`ambiguous amount "${e}" for ${a}.`,`Bare numbers are BASE UNITS, so "${e}" means ${i} ${t||"token"} -- dust that no source will quote.`,`If you meant ${e} whole tokens, that is ${s} base units. Say which you meant:`,"",` human amount: oracle route swap ${o} <tokenIn> <tokenOut> --amount ${e}`,` explicit base units: oracle route swap ${o} <tokenIn> <tokenOut> ${s}`,` exact, no scaling: oracle route swap ${o} <tokenIn> <tokenOut> --base-units ${e}`,` fully explicit: oracle route swap ${o} ${r} <tokenOutAddress> ${s}`].join(`
|
|
9
|
+
`))}function Vi(e){ot();let t=Ie(e),r=U[Number(e)],n=ue().find(o=>o.chainId===Number(e));return async function(a){let s=String(a??"").trim(),i=null;if(zn.test(s))i=s;else{let p=s.toLowerCase();p==="weth"||p==="eth"||p==="wnative"?i=r?.weth||n?.wrappedNative||null:p==="usdc"&&(i=r?.usdc||null)}if(!i)return null;let c=await t?.resolveToken(i).catch(()=>null),d=Number(c?.decimals);return{address:i,decimals:Number.isFinite(d)?d:null,symbol:c?.symbol??(zn.test(s)?null:s.toUpperCase())}}}async function Hi(e=[],t={}){let r=Array.isArray(e)?e.map(String):[],n=[],o=null,a=null;for(let y=0;y<r.length;y+=1){let v=r[y];if(!v.startsWith("--")){n.push(v);continue}let A=v.indexOf("="),I=A===-1?v:v.slice(0,A),_=A===-1?null:v.slice(A+1);if(I==="--amount"){o=_??r[++y]??"";continue}if(I==="--base-units"||I==="--raw"){a=_??r[++y]??"";continue}}let s=n[0],i=t.chainId??Qn(s),c=n[1],d=n[2],p=n[3],l=n[4]||"0x000000000000000000000000000000000000dEaD";if(!c||!d)throw new $("usage: oracle-route swap <chain> <tokenIn> <tokenOut> [amountIn|--amount N] [taker]");if(o!=null&&a!=null)throw new $("pass either --amount (human) or --base-units (exact), not both");if(p!=null&&(o!=null||a!=null))throw new $(`conflicting amounts: positional "${p}" and ${o!=null?"--amount":"--base-units"}. Pass one.`);let u=t.resolveToken??Vi(i),f=t.chainId!=null?String(i):Di(i),[m,g]=await Promise.all([Promise.resolve(u(c)).catch(()=>null),Promise.resolve(u(d)).catch(()=>null)]);for(let[y,v]of[[c,m],[d,g]])if(!v?.address)throw new $(`could not resolve token "${y}" on chain ${i} (${f}). Symbols are not passed through to routing providers -- pass the 0x address for "${y}" on ${f}.`);let h=m.decimals??null,b=g.decimals??null,w;if(a!=null)w=qi(a,"--base-units");else if(o!=null)w=Yn(o,h,"--amount");else if(p==null)w=(10n**BigInt(h??18)).toString();else if(/^\d+\.\d+$/.test(p))w=Yn(p,h,"amountIn");else if(/^\d+$/.test(p)){if(BigInt(p)===0n)throw new $("amountIn must be greater than zero");if(h==null)throw new $(`cannot interpret amount "${p}": decimals for ${m.address} could not be read from chain ${i} (${f}). Pass --base-units ${p} to send it through unscaled.`);if(BigInt(p)>=10n**BigInt(h))w=p;else throw Mi({raw:p,symbol:m.symbol,address:m.address,decimals:h,chainRef:s??f})}else throw new $(`amountIn "${p}" is not a number`);return{chainId:i,tokenIn:m.address,tokenOut:g.address,amountIn:w,taker:l,decimalsIn:h,decimalsOut:b,symbolIn:m.symbol??null,symbolOut:g.symbol??null}}async function ji(e=process.argv.slice(2)){ot();let[t,...r]=e,n=r.includes("--json"),o=r.filter(a=>a!=="--json");switch(t){case"swap":{let a;try{a=await Hi(r)}catch(i){throw i instanceof $&&ve(i.message),i}let s=await tt({chainId:a.chainId,tokenIn:a.tokenIn,tokenOut:a.tokenOut,amountIn:a.amountIn,taker:a.taker,decimalsIn:a.decimalsIn,decimalsOut:a.decimalsOut});n?process.stdout.write(`${JSON.stringify(s,null,2)}
|
|
10
|
+
`):Xn(s,a.decimalsOut??18),s.routes.length||(n||console.error(`error: no source could route ${a.amountIn} of ${a.tokenIn} -> ${a.tokenOut} on chain ${a.chainId}`),process.exit(2));break}case"bridge":{let a=Ae(o[0]),s=Ae(o[1]),i=o[2]||Kn,c=o[3]||(10n**18n).toString(),d=await rt({fromChainId:a,toChainId:s,tokenIn:i,tokenOut:i,amountIn:c,taker:o[4]||"0x000000000000000000000000000000000000dEaD",decimalsOut:18});n?process.stdout.write(`${JSON.stringify(d,null,2)}
|
|
11
|
+
`):Xn(d,18);break}case"prepare":{let a=Ae(o[0]);(!o[1]||!o[2]||!o[3])&&ve("usage: oracle-route prepare <chain> <tokenIn> <tokenOut> <taker> [amountIn] [--source=X]");let s=o[3],i=o[4]||(10n**18n).toString(),c=r.find(f=>f.startsWith("--source=")),d=Ie(a),[p,l]=await Promise.all([d.resolveToken(o[1]).then(f=>f.decimals).catch(()=>null),d.resolveToken(o[2]).then(f=>f.decimals).catch(()=>null)]),u=await _n({chainId:a,tokenIn:o[1],tokenOut:o[2],amountIn:i,taker:s,decimalsIn:p,decimalsOut:l,source:c?c.split("=")[1]:void 0});if(n){process.stdout.write(`${JSON.stringify(u,null,2)}
|
|
12
|
+
`);break}u.ok||(console.log(`could not prepare: ${u.reason}`),u.failureKind&&console.log(`kind: ${u.failureKind}`),u.alternative&&console.log(`try: --source=${u.alternative}`),process.exit(1)),console.log(`source: ${u.chosen.source}${u.chosen.wasWinner?" (winner)":" (override -- NOT the winner)"}`),console.log(`artifact: ${u.artifactKind}`),console.log(`destination: ${u.destination}`),u.minOut&&console.log(`minOut: ${u.minOut}`),u.driftBps!=null&&console.log(`drift: ${(u.driftBps/100).toFixed(3)}% vs comparison`),u.requiresApproval&&(console.log(`
|
|
13
|
+
approval required first:`),console.log(` token ${u.requiresApproval.token}`),console.log(` spender ${u.requiresApproval.spender}`),u.requiresApproval.note&&console.log(` note ${u.requiresApproval.note}`)),u.runnersUp?.length&&console.log(`
|
|
14
|
+
runners-up: ${u.runnersUp.map(f=>f.source).join(", ")}`);for(let f of u.warnings)console.log(`
|
|
15
|
+
WARNING: ${f}`);console.log(`
|
|
16
|
+
${u.note}`);break}case"prepare-bridge":{let a=Ae(o[0]),s=Ae(o[1]);o[2]||ve("usage: oracle-route prepare-bridge <fromChain> <toChain> <taker> [token] [amountIn] [--source=X]");let i=o[2],c=o[3]||Kn,d=o[4]||(10n**17n).toString(),p=r.find(u=>u.startsWith("--source=")),l=await Un({fromChainId:a,toChainId:s,tokenIn:c,tokenOut:c,amountIn:d,taker:i,decimalsOut:18,source:p?p.split("=")[1]:void 0});if(n){process.stdout.write(`${JSON.stringify(l,null,2)}
|
|
17
|
+
`);break}l.ok||(console.log(`could not prepare: ${l.reason}`),l.failureKind&&console.log(`kind: ${l.failureKind}`),l.alternative&&console.log(`try: --source=${l.alternative}`),process.exit(1)),console.log(`source: ${l.chosen.source}${l.chosen.wasWinner?" (winner)":" (override -- NOT the winner)"}`),console.log(`artifact: ${l.artifactKind}`),console.log(`route: chain ${l.fromChainId} -> chain ${l.toChainId}`),console.log(`signs: ${l.transactionCount} transaction(s) on chain ${l.fromChainId}`),console.log(`destination: ${l.destination}`),l.minOut&&console.log(`minOut: ${l.minOut}`),l.durationSeconds!=null&&console.log(`eta: ~${l.durationSeconds}s to credit`),l.driftBps!=null&&console.log(`drift: ${(l.driftBps/100).toFixed(3)}% vs comparison`),l.requiresApproval&&(console.log(`
|
|
18
|
+
approval required first:`),console.log(` token ${l.requiresApproval.token}`),console.log(` spender ${l.requiresApproval.spender}`)),l.transactions.forEach((u,f)=>{console.log(`
|
|
19
|
+
tx ${f+1}/${l.transactionCount}: chain ${u.chainId} -> ${u.to}`)}),l.runnersUp?.length&&console.log(`
|
|
20
|
+
runners-up: ${l.runnersUp.map(u=>u.source).join(", ")}`);for(let u of l.warnings)console.log(`
|
|
21
|
+
WARNING: ${u}`);console.log(`
|
|
22
|
+
${l.note}`);break}default:console.log(["oracle-route -- best-execution routing",""," oracle-route swap <chain> <tokenIn> <tokenOut> [amountIn] [taker]"," oracle-route bridge <fromChain> <toChain> [token] [amountIn] [taker]"," oracle-route prepare <chain> <tokenIn> <tokenOut> <taker> [amountIn] [--source=X]"," oracle-route prepare-bridge <fromChain> <toChain> <taker> [token] [amt] [--source=X]",""," Amounts are BASE UNITS. Use --amount N for a human amount scaled by the"," token's on-chain decimals; an ambiguous bare number is refused, not guessed.",""," Ranks by NET output (gross minus gas and fees), not headline quote."," A route quoting more but costing more gas can lose. --json for detail."].join(`
|
|
23
|
+
`)),process.exit(t?1:0)}}function Ki(){if(!process.argv[1])return!1;try{return jn(Li(import.meta.url))===jn(process.argv[1])}catch{return!1}}if(Ki())try{await ji()}catch(e){ve(String(e?.message||e))}export{$ as SwapArgsError,Vi as defaultTokenResolver,ji as main,Hi as parseSwapArgs};
|