diff --git a/.github/actions/next-repo-actions/dist/wrong-issue-template/index.js b/.github/actions/next-repo-actions/dist/wrong-issue-template/index.js deleted file mode 100644 index 8b59c188cb87..000000000000 --- a/.github/actions/next-repo-actions/dist/wrong-issue-template/index.js +++ /dev/null @@ -1,5 +0,0 @@ -(()=>{var A={7995:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};Object.defineProperty(e,"__esModule",{value:true});e.issue=e.issueCommand=void 0;const n=o(t(857));const i=t(239);function issueCommand(A,e,t){const r=new Command(A,e,t);process.stdout.write(r.toString()+n.EOL)}e.issueCommand=issueCommand;function issue(A,e=""){issueCommand(A,{},e)}e.issue=issue;const a="::";class Command{constructor(A,e,t){if(!A){A="missing.command"}this.command=A;this.properties=e;this.message=t}toString(){let A=a+this.command;if(this.properties&&Object.keys(this.properties).length>0){A+=" ";let e=true;for(const t in this.properties){if(this.properties.hasOwnProperty(t)){const r=this.properties[t];if(r){if(e){e=false}else{A+=","}A+=`${t}=${escapeProperty(r)}`}}}}A+=`${a}${escapeData(this.message)}`;return A}}function escapeData(A){return(0,i.toCommandValue)(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(A){return(0,i.toCommandValue)(A).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},99:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.platform=e.toPlatformPath=e.toWin32Path=e.toPosixPath=e.markdownSummary=e.summary=e.getIDToken=e.getState=e.saveState=e.group=e.endGroup=e.startGroup=e.info=e.notice=e.warning=e.error=e.debug=e.isDebug=e.setFailed=e.setCommandEcho=e.setOutput=e.getBooleanInput=e.getMultilineInput=e.getInput=e.addPath=e.setSecret=e.exportVariable=e.ExitCode=void 0;const i=t(7995);const a=t(3742);const g=t(239);const c=o(t(857));const E=o(t(6928));const Q=t(1185);var C;(function(A){A[A["Success"]=0]="Success";A[A["Failure"]=1]="Failure"})(C||(e.ExitCode=C={}));function exportVariable(A,e){const t=(0,g.toCommandValue)(e);process.env[A]=t;const r=process.env["GITHUB_ENV"]||"";if(r){return(0,a.issueFileCommand)("ENV",(0,a.prepareKeyValueMessage)(A,e))}(0,i.issueCommand)("set-env",{name:A},t)}e.exportVariable=exportVariable;function setSecret(A){(0,i.issueCommand)("add-mask",{},A)}e.setSecret=setSecret;function addPath(A){const e=process.env["GITHUB_PATH"]||"";if(e){(0,a.issueFileCommand)("PATH",A)}else{(0,i.issueCommand)("add-path",{},A)}process.env["PATH"]=`${A}${E.delimiter}${process.env["PATH"]}`}e.addPath=addPath;function getInput(A,e){const t=process.env[`INPUT_${A.replace(/ /g,"_").toUpperCase()}`]||"";if(e&&e.required&&!t){throw new Error(`Input required and not supplied: ${A}`)}if(e&&e.trimWhitespace===false){return t}return t.trim()}e.getInput=getInput;function getMultilineInput(A,e){const t=getInput(A,e).split("\n").filter((A=>A!==""));if(e&&e.trimWhitespace===false){return t}return t.map((A=>A.trim()))}e.getMultilineInput=getMultilineInput;function getBooleanInput(A,e){const t=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(A,e);if(t.includes(s))return true;if(r.includes(s))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${A}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}e.getBooleanInput=getBooleanInput;function setOutput(A,e){const t=process.env["GITHUB_OUTPUT"]||"";if(t){return(0,a.issueFileCommand)("OUTPUT",(0,a.prepareKeyValueMessage)(A,e))}process.stdout.write(c.EOL);(0,i.issueCommand)("set-output",{name:A},(0,g.toCommandValue)(e))}e.setOutput=setOutput;function setCommandEcho(A){(0,i.issue)("echo",A?"on":"off")}e.setCommandEcho=setCommandEcho;function setFailed(A){process.exitCode=C.Failure;error(A)}e.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}e.isDebug=isDebug;function debug(A){(0,i.issueCommand)("debug",{},A)}e.debug=debug;function error(A,e={}){(0,i.issueCommand)("error",(0,g.toCommandProperties)(e),A instanceof Error?A.toString():A)}e.error=error;function warning(A,e={}){(0,i.issueCommand)("warning",(0,g.toCommandProperties)(e),A instanceof Error?A.toString():A)}e.warning=warning;function notice(A,e={}){(0,i.issueCommand)("notice",(0,g.toCommandProperties)(e),A instanceof Error?A.toString():A)}e.notice=notice;function info(A){process.stdout.write(A+c.EOL)}e.info=info;function startGroup(A){(0,i.issue)("group",A)}e.startGroup=startGroup;function endGroup(){(0,i.issue)("endgroup")}e.endGroup=endGroup;function group(A,e){return n(this,void 0,void 0,(function*(){startGroup(A);let t;try{t=yield e()}finally{endGroup()}return t}))}e.group=group;function saveState(A,e){const t=process.env["GITHUB_STATE"]||"";if(t){return(0,a.issueFileCommand)("STATE",(0,a.prepareKeyValueMessage)(A,e))}(0,i.issueCommand)("save-state",{name:A},(0,g.toCommandValue)(e))}e.saveState=saveState;function getState(A){return process.env[`STATE_${A}`]||""}e.getState=getState;function getIDToken(A){return n(this,void 0,void 0,(function*(){return yield Q.OidcClient.getIDToken(A)}))}e.getIDToken=getIDToken;var B=t(5114);Object.defineProperty(e,"summary",{enumerable:true,get:function(){return B.summary}});var l=t(5114);Object.defineProperty(e,"markdownSummary",{enumerable:true,get:function(){return l.markdownSummary}});var I=t(327);Object.defineProperty(e,"toPosixPath",{enumerable:true,get:function(){return I.toPosixPath}});Object.defineProperty(e,"toWin32Path",{enumerable:true,get:function(){return I.toWin32Path}});Object.defineProperty(e,"toPlatformPath",{enumerable:true,get:function(){return I.toPlatformPath}});e.platform=o(t(8543))},3742:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};Object.defineProperty(e,"__esModule",{value:true});e.prepareKeyValueMessage=e.issueFileCommand=void 0;const n=o(t(6982));const i=o(t(9896));const a=o(t(857));const g=t(239);function issueFileCommand(A,e){const t=process.env[`GITHUB_${A}`];if(!t){throw new Error(`Unable to find environment variable for file command ${A}`)}if(!i.existsSync(t)){throw new Error(`Missing file at path: ${t}`)}i.appendFileSync(t,`${(0,g.toCommandValue)(e)}${a.EOL}`,{encoding:"utf8"})}e.issueFileCommand=issueFileCommand;function prepareKeyValueMessage(A,e){const t=`ghadelimiter_${n.randomUUID()}`;const r=(0,g.toCommandValue)(e);if(A.includes(t)){throw new Error(`Unexpected input: name should not contain the delimiter "${t}"`)}if(r.includes(t)){throw new Error(`Unexpected input: value should not contain the delimiter "${t}"`)}return`${A}<<${t}${a.EOL}${r}${a.EOL}${t}`}e.prepareKeyValueMessage=prepareKeyValueMessage},1185:function(A,e,t){"use strict";var r=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.OidcClient=void 0;const s=t(4639);const o=t(6709);const n=t(99);class OidcClient{static createHttpClient(A=true,e=10){const t={allowRetries:A,maxRetries:e};return new s.HttpClient("actions/oidc-client",[new o.BearerCredentialHandler(OidcClient.getRequestToken())],t)}static getRequestToken(){const A=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!A){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return A}static getIDTokenUrl(){const A=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!A){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return A}static getCall(A){var e;return r(this,void 0,void 0,(function*(){const t=OidcClient.createHttpClient();const r=yield t.getJson(A).catch((A=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${A.statusCode}\n \n Error Message: ${A.message}`)}));const s=(e=r.result)===null||e===void 0?void 0:e.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s}))}static getIDToken(A){return r(this,void 0,void 0,(function*(){try{let e=OidcClient.getIDTokenUrl();if(A){const t=encodeURIComponent(A);e=`${e}&audience=${t}`}(0,n.debug)(`ID token url is ${e}`);const t=yield OidcClient.getCall(e);(0,n.setSecret)(t);return t}catch(A){throw new Error(`Error message: ${A.message}`)}}))}}e.OidcClient=OidcClient},327:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};Object.defineProperty(e,"__esModule",{value:true});e.toPlatformPath=e.toWin32Path=e.toPosixPath=void 0;const n=o(t(6928));function toPosixPath(A){return A.replace(/[\\]/g,"/")}e.toPosixPath=toPosixPath;function toWin32Path(A){return A.replace(/[/]/g,"\\")}e.toWin32Path=toWin32Path;function toPlatformPath(A){return A.replace(/[/\\]/g,n.sep)}e.toPlatformPath=toPlatformPath},8543:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};var i=this&&this.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(e,"__esModule",{value:true});e.getDetails=e.isLinux=e.isMacOS=e.isWindows=e.arch=e.platform=void 0;const a=i(t(857));const g=o(t(8260));const getWindowsInfo=()=>n(void 0,void 0,void 0,(function*(){const{stdout:A}=yield g.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:e}=yield g.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:e.trim(),version:A.trim()}}));const getMacOsInfo=()=>n(void 0,void 0,void 0,(function*(){var A,e,t,r;const{stdout:s}=yield g.getExecOutput("sw_vers",undefined,{silent:true});const o=(e=(A=s.match(/ProductVersion:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&e!==void 0?e:"";const n=(r=(t=s.match(/ProductName:\s*(.+)/))===null||t===void 0?void 0:t[1])!==null&&r!==void 0?r:"";return{name:n,version:o}}));const getLinuxInfo=()=>n(void 0,void 0,void 0,(function*(){const{stdout:A}=yield g.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[e,t]=A.trim().split("\n");return{name:e,version:t}}));e.platform=a.default.platform();e.arch=a.default.arch();e.isWindows=e.platform==="win32";e.isMacOS=e.platform==="darwin";e.isLinux=e.platform==="linux";function getDetails(){return n(this,void 0,void 0,(function*(){return Object.assign(Object.assign({},yield e.isWindows?getWindowsInfo():e.isMacOS?getMacOsInfo():getLinuxInfo()),{platform:e.platform,arch:e.arch,isWindows:e.isWindows,isMacOS:e.isMacOS,isLinux:e.isLinux})}))}e.getDetails=getDetails},5114:function(A,e,t){"use strict";var r=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.summary=e.markdownSummary=e.SUMMARY_DOCS_URL=e.SUMMARY_ENV_VAR=void 0;const s=t(857);const o=t(9896);const{access:n,appendFile:i,writeFile:a}=o.promises;e.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";e.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return r(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const A=process.env[e.SUMMARY_ENV_VAR];if(!A){throw new Error(`Unable to find environment variable for $${e.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield n(A,o.constants.R_OK|o.constants.W_OK)}catch(e){throw new Error(`Unable to access summary file: '${A}'. Check if the file has correct read/write permissions.`)}this._filePath=A;return this._filePath}))}wrap(A,e,t={}){const r=Object.entries(t).map((([A,e])=>` ${A}="${e}"`)).join("");if(!e){return`<${A}${r}>`}return`<${A}${r}>${e}`}write(A){return r(this,void 0,void 0,(function*(){const e=!!(A===null||A===void 0?void 0:A.overwrite);const t=yield this.filePath();const r=e?a:i;yield r(t,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return r(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(A,e=false){this._buffer+=A;return e?this.addEOL():this}addEOL(){return this.addRaw(s.EOL)}addCodeBlock(A,e){const t=Object.assign({},e&&{lang:e});const r=this.wrap("pre",this.wrap("code",A),t);return this.addRaw(r).addEOL()}addList(A,e=false){const t=e?"ol":"ul";const r=A.map((A=>this.wrap("li",A))).join("");const s=this.wrap(t,r);return this.addRaw(s).addEOL()}addTable(A){const e=A.map((A=>{const e=A.map((A=>{if(typeof A==="string"){return this.wrap("td",A)}const{header:e,data:t,colspan:r,rowspan:s}=A;const o=e?"th":"td";const n=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(o,t,n)})).join("");return this.wrap("tr",e)})).join("");const t=this.wrap("table",e);return this.addRaw(t).addEOL()}addDetails(A,e){const t=this.wrap("details",this.wrap("summary",A)+e);return this.addRaw(t).addEOL()}addImage(A,e,t){const{width:r,height:s}=t||{};const o=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const n=this.wrap("img",null,Object.assign({src:A,alt:e},o));return this.addRaw(n).addEOL()}addHeading(A,e){const t=`h${e}`;const r=["h1","h2","h3","h4","h5","h6"].includes(t)?t:"h1";const s=this.wrap(r,A);return this.addRaw(s).addEOL()}addSeparator(){const A=this.wrap("hr",null);return this.addRaw(A).addEOL()}addBreak(){const A=this.wrap("br",null);return this.addRaw(A).addEOL()}addQuote(A,e){const t=Object.assign({},e&&{cite:e});const r=this.wrap("blockquote",A,t);return this.addRaw(r).addEOL()}addLink(A,e){const t=this.wrap("a",A,{href:e});return this.addRaw(t).addEOL()}}const g=new Summary;e.markdownSummary=g;e.summary=g},239:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.toCommandProperties=e.toCommandValue=void 0;function toCommandValue(A){if(A===null||A===undefined){return""}else if(typeof A==="string"||A instanceof String){return A}return JSON.stringify(A)}e.toCommandValue=toCommandValue;function toCommandProperties(A){if(!Object.keys(A).length){return{}}return{title:A.title,file:A.file,line:A.startLine,endLine:A.endLine,col:A.startColumn,endColumn:A.endColumn}}e.toCommandProperties=toCommandProperties},8260:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;Object.defineProperty(A,r,{enumerable:true,get:function(){return e[t]}})}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.getExecOutput=e.exec=void 0;const i=t(3193);const a=o(t(841));function exec(A,e,t){return n(this,void 0,void 0,(function*(){const r=a.argStringToArray(A);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];e=r.slice(1).concat(e||[]);const o=new a.ToolRunner(s,e,t);return o.exec()}))}e.exec=exec;function getExecOutput(A,e,t){var r,s;return n(this,void 0,void 0,(function*(){let o="";let n="";const a=new i.StringDecoder("utf8");const g=new i.StringDecoder("utf8");const c=(r=t===null||t===void 0?void 0:t.listeners)===null||r===void 0?void 0:r.stdout;const E=(s=t===null||t===void 0?void 0:t.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=A=>{n+=g.write(A);if(E){E(A)}};const stdOutListener=A=>{o+=a.write(A);if(c){c(A)}};const Q=Object.assign(Object.assign({},t===null||t===void 0?void 0:t.listeners),{stdout:stdOutListener,stderr:stdErrListener});const C=yield exec(A,e,Object.assign(Object.assign({},t),{listeners:Q}));o+=a.end();n+=g.end();return{exitCode:C,stdout:o,stderr:n}}))}e.getExecOutput=getExecOutput},841:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;Object.defineProperty(A,r,{enumerable:true,get:function(){return e[t]}})}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.argStringToArray=e.ToolRunner=void 0;const i=o(t(857));const a=o(t(4434));const g=o(t(5317));const c=o(t(6928));const E=o(t(9009));const Q=o(t(8278));const C=t(3557);const B=process.platform==="win32";class ToolRunner extends a.EventEmitter{constructor(A,e,t){super();if(!A){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=A;this.args=e||[];this.options=t||{}}_debug(A){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(A)}}_getCommandString(A,e){const t=this._getSpawnFileName();const r=this._getSpawnArgs(A);let s=e?"":"[command]";if(B){if(this._isCmdFile()){s+=t;for(const A of r){s+=` ${A}`}}else if(A.windowsVerbatimArguments){s+=`"${t}"`;for(const A of r){s+=` ${A}`}}else{s+=this._windowsQuoteCmdArg(t);for(const A of r){s+=` ${this._windowsQuoteCmdArg(A)}`}}}else{s+=t;for(const A of r){s+=` ${A}`}}return s}_processLineBuffer(A,e,t){try{let r=e+A.toString();let s=r.indexOf(i.EOL);while(s>-1){const A=r.substring(0,s);t(A);r=r.substring(s+i.EOL.length);s=r.indexOf(i.EOL)}return r}catch(A){this._debug(`error processing line. Failed with error ${A}`);return""}}_getSpawnFileName(){if(B){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(A){if(B){if(this._isCmdFile()){let e=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const t of this.args){e+=" ";e+=A.windowsVerbatimArguments?t:this._windowsQuoteCmdArg(t)}e+='"';return[e]}}return this.args}_endsWith(A,e){return A.endsWith(e)}_isCmdFile(){const A=this.toolPath.toUpperCase();return this._endsWith(A,".CMD")||this._endsWith(A,".BAT")}_windowsQuoteCmdArg(A){if(!this._isCmdFile()){return this._uvQuoteCmdArg(A)}if(!A){return'""'}const e=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let t=false;for(const r of A){if(e.some((A=>A===r))){t=true;break}}if(!t){return A}let r='"';let s=true;for(let e=A.length;e>0;e--){r+=A[e-1];if(s&&A[e-1]==="\\"){r+="\\"}else if(A[e-1]==='"'){s=true;r+='"'}else{s=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(A){if(!A){return'""'}if(!A.includes(" ")&&!A.includes("\t")&&!A.includes('"')){return A}if(!A.includes('"')&&!A.includes("\\")){return`"${A}"`}let e='"';let t=true;for(let r=A.length;r>0;r--){e+=A[r-1];if(t&&A[r-1]==="\\"){e+="\\"}else if(A[r-1]==='"'){t=true;e+="\\"}else{t=false}}e+='"';return e.split("").reverse().join("")}_cloneExecOptions(A){A=A||{};const e={cwd:A.cwd||process.cwd(),env:A.env||process.env,silent:A.silent||false,windowsVerbatimArguments:A.windowsVerbatimArguments||false,failOnStdErr:A.failOnStdErr||false,ignoreReturnCode:A.ignoreReturnCode||false,delay:A.delay||1e4};e.outStream=A.outStream||process.stdout;e.errStream=A.errStream||process.stderr;return e}_getSpawnOptions(A,e){A=A||{};const t={};t.cwd=A.cwd;t.env=A.env;t["windowsVerbatimArguments"]=A.windowsVerbatimArguments||this._isCmdFile();if(A.windowsVerbatimArguments){t.argv0=`"${e}"`}return t}exec(){return n(this,void 0,void 0,(function*(){if(!Q.isRooted(this.toolPath)&&(this.toolPath.includes("/")||B&&this.toolPath.includes("\\"))){this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield E.which(this.toolPath,true);return new Promise(((A,e)=>n(this,void 0,void 0,(function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const A of this.args){this._debug(` ${A}`)}const t=this._cloneExecOptions(this.options);if(!t.silent&&t.outStream){t.outStream.write(this._getCommandString(t)+i.EOL)}const r=new ExecState(t,this.toolPath);r.on("debug",(A=>{this._debug(A)}));if(this.options.cwd&&!(yield Q.exists(this.options.cwd))){return e(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const s=this._getSpawnFileName();const o=g.spawn(s,this._getSpawnArgs(t),this._getSpawnOptions(this.options,s));let n="";if(o.stdout){o.stdout.on("data",(A=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(A)}if(!t.silent&&t.outStream){t.outStream.write(A)}n=this._processLineBuffer(A,n,(A=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(A)}}))}))}let a="";if(o.stderr){o.stderr.on("data",(A=>{r.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(A)}if(!t.silent&&t.errStream&&t.outStream){const e=t.failOnStdErr?t.errStream:t.outStream;e.write(A)}a=this._processLineBuffer(A,a,(A=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(A)}}))}))}o.on("error",(A=>{r.processError=A.message;r.processExited=true;r.processClosed=true;r.CheckComplete()}));o.on("exit",(A=>{r.processExitCode=A;r.processExited=true;this._debug(`Exit code ${A} received from tool '${this.toolPath}'`);r.CheckComplete()}));o.on("close",(A=>{r.processExitCode=A;r.processExited=true;r.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);r.CheckComplete()}));r.on("done",((t,r)=>{if(n.length>0){this.emit("stdline",n)}if(a.length>0){this.emit("errline",a)}o.removeAllListeners();if(t){e(t)}else{A(r)}}));if(this.options.input){if(!o.stdin){throw new Error("child process missing stdin")}o.stdin.end(this.options.input)}}))))}))}}e.ToolRunner=ToolRunner;function argStringToArray(A){const e=[];let t=false;let r=false;let s="";function append(A){if(r&&A!=='"'){s+="\\"}s+=A;r=false}for(let o=0;o0){e.push(s);s=""}continue}append(n)}if(s.length>0){e.push(s.trim())}return e}e.argStringToArray=argStringToArray;class ExecState extends a.EventEmitter{constructor(A,e){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!e){throw new Error("toolPath must not be empty")}this.options=A;this.toolPath=e;if(A.delay){this.delay=A.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=C.setTimeout(ExecState.HandleTimeout,this.delay,this)}}_debug(A){this.emit("debug",A)}_setResult(){let A;if(this.processExited){if(this.processError){A=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){A=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){A=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",A,this.processExitCode)}static HandleTimeout(A){if(A.done){return}if(!A.processClosed&&A.processExited){const e=`The STDIO streams did not close within ${A.delay/1e3} seconds of the exit event from process '${A.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;A._debug(e)}A._setResult()}}},5037:(A,e,t)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.Context=void 0;const r=t(9896);const s=t(857);class Context{constructor(){var A,e,t;this.payload={};if(process.env.GITHUB_EVENT_PATH){if((0,r.existsSync)(process.env.GITHUB_EVENT_PATH)){this.payload=JSON.parse((0,r.readFileSync)(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}))}else{const A=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${A} does not exist${s.EOL}`)}}this.eventName=process.env.GITHUB_EVENT_NAME;this.sha=process.env.GITHUB_SHA;this.ref=process.env.GITHUB_REF;this.workflow=process.env.GITHUB_WORKFLOW;this.action=process.env.GITHUB_ACTION;this.actor=process.env.GITHUB_ACTOR;this.job=process.env.GITHUB_JOB;this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10);this.runId=parseInt(process.env.GITHUB_RUN_ID,10);this.apiUrl=(A=process.env.GITHUB_API_URL)!==null&&A!==void 0?A:`https://api.github.com`;this.serverUrl=(e=process.env.GITHUB_SERVER_URL)!==null&&e!==void 0?e:`https://github.com`;this.graphqlUrl=(t=process.env.GITHUB_GRAPHQL_URL)!==null&&t!==void 0?t:`https://api.github.com/graphql`}get issue(){const A=this.payload;return Object.assign(Object.assign({},this.repo),{number:(A.issue||A.pull_request||A).number})}get repo(){if(process.env.GITHUB_REPOSITORY){const[A,e]=process.env.GITHUB_REPOSITORY.split("/");return{owner:A,repo:e}}if(this.payload.repository){return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name}}throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}}e.Context=Context},6495:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};Object.defineProperty(e,"__esModule",{value:true});e.getOctokit=e.context=void 0;const n=o(t(5037));const i=t(7139);e.context=new n.Context;function getOctokit(A,e,...t){const r=i.GitHub.plugin(...t);return new r((0,i.getOctokitOptions)(A,e))}e.getOctokit=getOctokit},8615:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.getApiBaseUrl=e.getProxyFetch=e.getProxyAgentDispatcher=e.getProxyAgent=e.getAuthString=void 0;const i=o(t(8398));const a=t(767);function getAuthString(A,e){if(!A&&!e.auth){throw new Error("Parameter token or opts.auth is required")}else if(A&&e.auth){throw new Error("Parameters token and opts.auth may not both be specified")}return typeof e.auth==="string"?e.auth:`token ${A}`}e.getAuthString=getAuthString;function getProxyAgent(A){const e=new i.HttpClient;return e.getAgent(A)}e.getProxyAgent=getProxyAgent;function getProxyAgentDispatcher(A){const e=new i.HttpClient;return e.getAgentDispatcher(A)}e.getProxyAgentDispatcher=getProxyAgentDispatcher;function getProxyFetch(A){const e=getProxyAgentDispatcher(A);const proxyFetch=(A,t)=>n(this,void 0,void 0,(function*(){return(0,a.fetch)(A,Object.assign(Object.assign({},t),{dispatcher:e}))}));return proxyFetch}e.getProxyFetch=getProxyFetch;function getApiBaseUrl(){return process.env["GITHUB_API_URL"]||"https://api.github.com"}e.getApiBaseUrl=getApiBaseUrl},7139:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};Object.defineProperty(e,"__esModule",{value:true});e.getOctokitOptions=e.GitHub=e.defaults=e.context=void 0;const n=o(t(5037));const i=o(t(8615));const a=t(7515);const g=t(18);const c=t(5002);e.context=new n.Context;const E=i.getApiBaseUrl();e.defaults={baseUrl:E,request:{agent:i.getProxyAgent(E),fetch:i.getProxyFetch(E)}};e.GitHub=a.Octokit.plugin(g.restEndpointMethods,c.paginateRest).defaults(e.defaults);function getOctokitOptions(A,e){const t=Object.assign({},e||{});const r=i.getAuthString(A,t);if(r){t.auth=r}return t}e.getOctokitOptions=getOctokitOptions},8398:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.HttpClient=e.isHttps=e.HttpClientResponse=e.HttpClientError=e.getProxyUrl=e.MediaTypes=e.Headers=e.HttpCodes=void 0;const i=o(t(8611));const a=o(t(5692));const g=o(t(8490));const c=o(t(376));const E=t(767);var Q;(function(A){A[A["OK"]=200]="OK";A[A["MultipleChoices"]=300]="MultipleChoices";A[A["MovedPermanently"]=301]="MovedPermanently";A[A["ResourceMoved"]=302]="ResourceMoved";A[A["SeeOther"]=303]="SeeOther";A[A["NotModified"]=304]="NotModified";A[A["UseProxy"]=305]="UseProxy";A[A["SwitchProxy"]=306]="SwitchProxy";A[A["TemporaryRedirect"]=307]="TemporaryRedirect";A[A["PermanentRedirect"]=308]="PermanentRedirect";A[A["BadRequest"]=400]="BadRequest";A[A["Unauthorized"]=401]="Unauthorized";A[A["PaymentRequired"]=402]="PaymentRequired";A[A["Forbidden"]=403]="Forbidden";A[A["NotFound"]=404]="NotFound";A[A["MethodNotAllowed"]=405]="MethodNotAllowed";A[A["NotAcceptable"]=406]="NotAcceptable";A[A["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";A[A["RequestTimeout"]=408]="RequestTimeout";A[A["Conflict"]=409]="Conflict";A[A["Gone"]=410]="Gone";A[A["TooManyRequests"]=429]="TooManyRequests";A[A["InternalServerError"]=500]="InternalServerError";A[A["NotImplemented"]=501]="NotImplemented";A[A["BadGateway"]=502]="BadGateway";A[A["ServiceUnavailable"]=503]="ServiceUnavailable";A[A["GatewayTimeout"]=504]="GatewayTimeout"})(Q||(e.HttpCodes=Q={}));var C;(function(A){A["Accept"]="accept";A["ContentType"]="content-type"})(C||(e.Headers=C={}));var B;(function(A){A["ApplicationJson"]="application/json"})(B||(e.MediaTypes=B={}));function getProxyUrl(A){const e=g.getProxyUrl(new URL(A));return e?e.href:""}e.getProxyUrl=getProxyUrl;const l=[Q.MovedPermanently,Q.ResourceMoved,Q.SeeOther,Q.TemporaryRedirect,Q.PermanentRedirect];const I=[Q.BadGateway,Q.ServiceUnavailable,Q.GatewayTimeout];const h=["OPTIONS","GET","DELETE","HEAD"];const u=10;const d=5;class HttpClientError extends Error{constructor(A,e){super(A);this.name="HttpClientError";this.statusCode=e;Object.setPrototypeOf(this,HttpClientError.prototype)}}e.HttpClientError=HttpClientError;class HttpClientResponse{constructor(A){this.message=A}readBody(){return n(this,void 0,void 0,(function*(){return new Promise((A=>n(this,void 0,void 0,(function*(){let e=Buffer.alloc(0);this.message.on("data",(A=>{e=Buffer.concat([e,A])}));this.message.on("end",(()=>{A(e.toString())}))}))))}))}readBodyBuffer(){return n(this,void 0,void 0,(function*(){return new Promise((A=>n(this,void 0,void 0,(function*(){const e=[];this.message.on("data",(A=>{e.push(A)}));this.message.on("end",(()=>{A(Buffer.concat(e))}))}))))}))}}e.HttpClientResponse=HttpClientResponse;function isHttps(A){const e=new URL(A);return e.protocol==="https:"}e.isHttps=isHttps;class HttpClient{constructor(A,e,t){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=A;this.handlers=e||[];this.requestOptions=t;if(t){if(t.ignoreSslError!=null){this._ignoreSslError=t.ignoreSslError}this._socketTimeout=t.socketTimeout;if(t.allowRedirects!=null){this._allowRedirects=t.allowRedirects}if(t.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=t.allowRedirectDowngrade}if(t.maxRedirects!=null){this._maxRedirects=Math.max(t.maxRedirects,0)}if(t.keepAlive!=null){this._keepAlive=t.keepAlive}if(t.allowRetries!=null){this._allowRetries=t.allowRetries}if(t.maxRetries!=null){this._maxRetries=t.maxRetries}}}options(A,e){return n(this,void 0,void 0,(function*(){return this.request("OPTIONS",A,null,e||{})}))}get(A,e){return n(this,void 0,void 0,(function*(){return this.request("GET",A,null,e||{})}))}del(A,e){return n(this,void 0,void 0,(function*(){return this.request("DELETE",A,null,e||{})}))}post(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("POST",A,e,t||{})}))}patch(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("PATCH",A,e,t||{})}))}put(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("PUT",A,e,t||{})}))}head(A,e){return n(this,void 0,void 0,(function*(){return this.request("HEAD",A,null,e||{})}))}sendStream(A,e,t,r){return n(this,void 0,void 0,(function*(){return this.request(A,e,t,r)}))}getJson(A,e={}){return n(this,void 0,void 0,(function*(){e[C.Accept]=this._getExistingOrDefaultHeader(e,C.Accept,B.ApplicationJson);const t=yield this.get(A,e);return this._processResponse(t,this.requestOptions)}))}postJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.post(A,r,t);return this._processResponse(s,this.requestOptions)}))}putJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.put(A,r,t);return this._processResponse(s,this.requestOptions)}))}patchJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.patch(A,r,t);return this._processResponse(s,this.requestOptions)}))}request(A,e,t,r){return n(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(e);let o=this._prepareRequest(A,s,r);const n=this._allowRetries&&h.includes(A)?this._maxRetries+1:1;let i=0;let a;do{a=yield this.requestRaw(o,t);if(a&&a.message&&a.message.statusCode===Q.Unauthorized){let A;for(const e of this.handlers){if(e.canHandleAuthentication(a)){A=e;break}}if(A){return A.handleAuthentication(this,o,t)}else{return a}}let e=this._maxRedirects;while(a.message.statusCode&&l.includes(a.message.statusCode)&&this._allowRedirects&&e>0){const n=a.message.headers["location"];if(!n){break}const i=new URL(n);if(s.protocol==="https:"&&s.protocol!==i.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield a.readBody();if(i.hostname!==s.hostname){for(const A in r){if(A.toLowerCase()==="authorization"){delete r[A]}}}o=this._prepareRequest(A,i,r);a=yield this.requestRaw(o,t);e--}if(!a.message.statusCode||!I.includes(a.message.statusCode)){return a}i+=1;if(i{function callbackForResult(A,e){if(A){r(A)}else if(!e){r(new Error("Unknown error"))}else{t(e)}}this.requestRawWithCallback(A,e,callbackForResult)}))}))}requestRawWithCallback(A,e,t){if(typeof e==="string"){if(!A.options.headers){A.options.headers={}}A.options.headers["Content-Length"]=Buffer.byteLength(e,"utf8")}let r=false;function handleResult(A,e){if(!r){r=true;t(A,e)}}const s=A.httpModule.request(A.options,(A=>{const e=new HttpClientResponse(A);handleResult(undefined,e)}));let o;s.on("socket",(A=>{o=A}));s.setTimeout(this._socketTimeout||3*6e4,(()=>{if(o){o.end()}handleResult(new Error(`Request timeout: ${A.options.path}`))}));s.on("error",(function(A){handleResult(A)}));if(e&&typeof e==="string"){s.write(e,"utf8")}if(e&&typeof e!=="string"){e.on("close",(function(){s.end()}));e.pipe(s)}else{s.end()}}getAgent(A){const e=new URL(A);return this._getAgent(e)}getAgentDispatcher(A){const e=new URL(A);const t=g.getProxyUrl(e);const r=t&&t.hostname;if(!r){return}return this._getProxyAgentDispatcher(e,t)}_prepareRequest(A,e,t){const r={};r.parsedUrl=e;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?a:i;const o=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):o;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=A;r.options.headers=this._mergeHeaders(t);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const A of this.handlers){A.prepareRequest(r.options)}}return r}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(A||{}))}return lowercaseKeys(A||{})}_getExistingOrDefaultHeader(A,e,t){let r;if(this.requestOptions&&this.requestOptions.headers){r=lowercaseKeys(this.requestOptions.headers)[e]}return A[e]||r||t}_getAgent(A){let e;const t=g.getProxyUrl(A);const r=t&&t.hostname;if(this._keepAlive&&r){e=this._proxyAgent}if(this._keepAlive&&!r){e=this._agent}if(e){return e}const s=A.protocol==="https:";let o=100;if(this.requestOptions){o=this.requestOptions.maxSockets||i.globalAgent.maxSockets}if(t&&t.hostname){const A={maxSockets:o,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(t.username||t.password)&&{proxyAuth:`${t.username}:${t.password}`}),{host:t.hostname,port:t.port})};let r;const n=t.protocol==="https:";if(s){r=n?c.httpsOverHttps:c.httpsOverHttp}else{r=n?c.httpOverHttps:c.httpOverHttp}e=r(A);this._proxyAgent=e}if(this._keepAlive&&!e){const A={keepAlive:this._keepAlive,maxSockets:o};e=s?new a.Agent(A):new i.Agent(A);this._agent=e}if(!e){e=s?a.globalAgent:i.globalAgent}if(s&&this._ignoreSslError){e.options=Object.assign(e.options||{},{rejectUnauthorized:false})}return e}_getProxyAgentDispatcher(A,e){let t;if(this._keepAlive){t=this._proxyAgentDispatcher}if(t){return t}const r=A.protocol==="https:";t=new E.ProxyAgent(Object.assign({uri:e.href,pipelining:!this._keepAlive?0:1},(e.username||e.password)&&{token:`${e.username}:${e.password}`}));this._proxyAgentDispatcher=t;if(r&&this._ignoreSslError){t.options=Object.assign(t.options.requestTls||{},{rejectUnauthorized:false})}return t}_performExponentialBackoff(A){return n(this,void 0,void 0,(function*(){A=Math.min(u,A);const e=d*Math.pow(2,A);return new Promise((A=>setTimeout((()=>A()),e)))}))}_processResponse(A,e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>n(this,void 0,void 0,(function*(){const s=A.message.statusCode||0;const o={statusCode:s,result:null,headers:{}};if(s===Q.NotFound){t(o)}function dateTimeDeserializer(A,e){if(typeof e==="string"){const A=new Date(e);if(!isNaN(A.valueOf())){return A}}return e}let n;let i;try{i=yield A.readBody();if(i&&i.length>0){if(e&&e.deserializeDates){n=JSON.parse(i,dateTimeDeserializer)}else{n=JSON.parse(i)}o.result=n}o.headers=A.message.headers}catch(A){}if(s>299){let A;if(n&&n.message){A=n.message}else if(i&&i.length>0){A=i}else{A=`Failed request: (${s})`}const e=new HttpClientError(A,s);e.result=o.result;r(e)}else{t(o)}}))))}))}}e.HttpClient=HttpClient;const lowercaseKeys=A=>Object.keys(A).reduce(((e,t)=>(e[t.toLowerCase()]=A[t],e)),{})},8490:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.checkBypass=e.getProxyUrl=void 0;function getProxyUrl(A){const e=A.protocol==="https:";if(checkBypass(A)){return undefined}const t=(()=>{if(e){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(t){try{return new URL(t)}catch(A){if(!t.startsWith("http://")&&!t.startsWith("https://"))return new URL(`http://${t}`)}}else{return undefined}}e.getProxyUrl=getProxyUrl;function checkBypass(A){if(!A.hostname){return false}const e=A.hostname;if(isLoopbackAddress(e)){return true}const t=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!t){return false}let r;if(A.port){r=Number(A.port)}else if(A.protocol==="http:"){r=80}else if(A.protocol==="https:"){r=443}const s=[A.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const A of t.split(",").map((A=>A.trim().toUpperCase())).filter((A=>A))){if(A==="*"||s.some((e=>e===A||e.endsWith(`.${A}`)||A.startsWith(".")&&e.endsWith(`${A}`)))){return true}}return false}e.checkBypass=checkBypass;function isLoopbackAddress(A){const e=A.toLowerCase();return e==="localhost"||e.startsWith("127.")||e.startsWith("[::1]")||e.startsWith("[0:0:0:0:0:0:0:1]")}},6709:function(A,e){"use strict";var t=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.PersonalAccessTokenCredentialHandler=e.BearerCredentialHandler=e.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(A,e){this.username=A;this.password=e}prepareRequest(A){if(!A.headers){throw Error("The request has no headers")}A.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return t(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}e.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(A){this.token=A}prepareRequest(A){if(!A.headers){throw Error("The request has no headers")}A.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return t(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}e.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(A){this.token=A}prepareRequest(A){if(!A.headers){throw Error("The request has no headers")}A.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return t(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}e.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},4639:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;var s=Object.getOwnPropertyDescriptor(e,t);if(!s||("get"in s?!e.__esModule:s.writable||s.configurable)){s={enumerable:true,get:function(){return e[t]}}}Object.defineProperty(A,r,s)}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.prototype.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.HttpClient=e.isHttps=e.HttpClientResponse=e.HttpClientError=e.getProxyUrl=e.MediaTypes=e.Headers=e.HttpCodes=void 0;const i=o(t(8611));const a=o(t(5692));const g=o(t(9739));const c=o(t(376));const E=t(3601);var Q;(function(A){A[A["OK"]=200]="OK";A[A["MultipleChoices"]=300]="MultipleChoices";A[A["MovedPermanently"]=301]="MovedPermanently";A[A["ResourceMoved"]=302]="ResourceMoved";A[A["SeeOther"]=303]="SeeOther";A[A["NotModified"]=304]="NotModified";A[A["UseProxy"]=305]="UseProxy";A[A["SwitchProxy"]=306]="SwitchProxy";A[A["TemporaryRedirect"]=307]="TemporaryRedirect";A[A["PermanentRedirect"]=308]="PermanentRedirect";A[A["BadRequest"]=400]="BadRequest";A[A["Unauthorized"]=401]="Unauthorized";A[A["PaymentRequired"]=402]="PaymentRequired";A[A["Forbidden"]=403]="Forbidden";A[A["NotFound"]=404]="NotFound";A[A["MethodNotAllowed"]=405]="MethodNotAllowed";A[A["NotAcceptable"]=406]="NotAcceptable";A[A["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";A[A["RequestTimeout"]=408]="RequestTimeout";A[A["Conflict"]=409]="Conflict";A[A["Gone"]=410]="Gone";A[A["TooManyRequests"]=429]="TooManyRequests";A[A["InternalServerError"]=500]="InternalServerError";A[A["NotImplemented"]=501]="NotImplemented";A[A["BadGateway"]=502]="BadGateway";A[A["ServiceUnavailable"]=503]="ServiceUnavailable";A[A["GatewayTimeout"]=504]="GatewayTimeout"})(Q||(e.HttpCodes=Q={}));var C;(function(A){A["Accept"]="accept";A["ContentType"]="content-type"})(C||(e.Headers=C={}));var B;(function(A){A["ApplicationJson"]="application/json"})(B||(e.MediaTypes=B={}));function getProxyUrl(A){const e=g.getProxyUrl(new URL(A));return e?e.href:""}e.getProxyUrl=getProxyUrl;const l=[Q.MovedPermanently,Q.ResourceMoved,Q.SeeOther,Q.TemporaryRedirect,Q.PermanentRedirect];const I=[Q.BadGateway,Q.ServiceUnavailable,Q.GatewayTimeout];const h=["OPTIONS","GET","DELETE","HEAD"];const u=10;const d=5;class HttpClientError extends Error{constructor(A,e){super(A);this.name="HttpClientError";this.statusCode=e;Object.setPrototypeOf(this,HttpClientError.prototype)}}e.HttpClientError=HttpClientError;class HttpClientResponse{constructor(A){this.message=A}readBody(){return n(this,void 0,void 0,(function*(){return new Promise((A=>n(this,void 0,void 0,(function*(){let e=Buffer.alloc(0);this.message.on("data",(A=>{e=Buffer.concat([e,A])}));this.message.on("end",(()=>{A(e.toString())}))}))))}))}readBodyBuffer(){return n(this,void 0,void 0,(function*(){return new Promise((A=>n(this,void 0,void 0,(function*(){const e=[];this.message.on("data",(A=>{e.push(A)}));this.message.on("end",(()=>{A(Buffer.concat(e))}))}))))}))}}e.HttpClientResponse=HttpClientResponse;function isHttps(A){const e=new URL(A);return e.protocol==="https:"}e.isHttps=isHttps;class HttpClient{constructor(A,e,t){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=A;this.handlers=e||[];this.requestOptions=t;if(t){if(t.ignoreSslError!=null){this._ignoreSslError=t.ignoreSslError}this._socketTimeout=t.socketTimeout;if(t.allowRedirects!=null){this._allowRedirects=t.allowRedirects}if(t.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=t.allowRedirectDowngrade}if(t.maxRedirects!=null){this._maxRedirects=Math.max(t.maxRedirects,0)}if(t.keepAlive!=null){this._keepAlive=t.keepAlive}if(t.allowRetries!=null){this._allowRetries=t.allowRetries}if(t.maxRetries!=null){this._maxRetries=t.maxRetries}}}options(A,e){return n(this,void 0,void 0,(function*(){return this.request("OPTIONS",A,null,e||{})}))}get(A,e){return n(this,void 0,void 0,(function*(){return this.request("GET",A,null,e||{})}))}del(A,e){return n(this,void 0,void 0,(function*(){return this.request("DELETE",A,null,e||{})}))}post(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("POST",A,e,t||{})}))}patch(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("PATCH",A,e,t||{})}))}put(A,e,t){return n(this,void 0,void 0,(function*(){return this.request("PUT",A,e,t||{})}))}head(A,e){return n(this,void 0,void 0,(function*(){return this.request("HEAD",A,null,e||{})}))}sendStream(A,e,t,r){return n(this,void 0,void 0,(function*(){return this.request(A,e,t,r)}))}getJson(A,e={}){return n(this,void 0,void 0,(function*(){e[C.Accept]=this._getExistingOrDefaultHeader(e,C.Accept,B.ApplicationJson);const t=yield this.get(A,e);return this._processResponse(t,this.requestOptions)}))}postJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.post(A,r,t);return this._processResponse(s,this.requestOptions)}))}putJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.put(A,r,t);return this._processResponse(s,this.requestOptions)}))}patchJson(A,e,t={}){return n(this,void 0,void 0,(function*(){const r=JSON.stringify(e,null,2);t[C.Accept]=this._getExistingOrDefaultHeader(t,C.Accept,B.ApplicationJson);t[C.ContentType]=this._getExistingOrDefaultHeader(t,C.ContentType,B.ApplicationJson);const s=yield this.patch(A,r,t);return this._processResponse(s,this.requestOptions)}))}request(A,e,t,r){return n(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(e);let o=this._prepareRequest(A,s,r);const n=this._allowRetries&&h.includes(A)?this._maxRetries+1:1;let i=0;let a;do{a=yield this.requestRaw(o,t);if(a&&a.message&&a.message.statusCode===Q.Unauthorized){let A;for(const e of this.handlers){if(e.canHandleAuthentication(a)){A=e;break}}if(A){return A.handleAuthentication(this,o,t)}else{return a}}let e=this._maxRedirects;while(a.message.statusCode&&l.includes(a.message.statusCode)&&this._allowRedirects&&e>0){const n=a.message.headers["location"];if(!n){break}const i=new URL(n);if(s.protocol==="https:"&&s.protocol!==i.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield a.readBody();if(i.hostname!==s.hostname){for(const A in r){if(A.toLowerCase()==="authorization"){delete r[A]}}}o=this._prepareRequest(A,i,r);a=yield this.requestRaw(o,t);e--}if(!a.message.statusCode||!I.includes(a.message.statusCode)){return a}i+=1;if(i{function callbackForResult(A,e){if(A){r(A)}else if(!e){r(new Error("Unknown error"))}else{t(e)}}this.requestRawWithCallback(A,e,callbackForResult)}))}))}requestRawWithCallback(A,e,t){if(typeof e==="string"){if(!A.options.headers){A.options.headers={}}A.options.headers["Content-Length"]=Buffer.byteLength(e,"utf8")}let r=false;function handleResult(A,e){if(!r){r=true;t(A,e)}}const s=A.httpModule.request(A.options,(A=>{const e=new HttpClientResponse(A);handleResult(undefined,e)}));let o;s.on("socket",(A=>{o=A}));s.setTimeout(this._socketTimeout||3*6e4,(()=>{if(o){o.end()}handleResult(new Error(`Request timeout: ${A.options.path}`))}));s.on("error",(function(A){handleResult(A)}));if(e&&typeof e==="string"){s.write(e,"utf8")}if(e&&typeof e!=="string"){e.on("close",(function(){s.end()}));e.pipe(s)}else{s.end()}}getAgent(A){const e=new URL(A);return this._getAgent(e)}getAgentDispatcher(A){const e=new URL(A);const t=g.getProxyUrl(e);const r=t&&t.hostname;if(!r){return}return this._getProxyAgentDispatcher(e,t)}_prepareRequest(A,e,t){const r={};r.parsedUrl=e;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?a:i;const o=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):o;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=A;r.options.headers=this._mergeHeaders(t);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const A of this.handlers){A.prepareRequest(r.options)}}return r}_mergeHeaders(A){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(A||{}))}return lowercaseKeys(A||{})}_getExistingOrDefaultHeader(A,e,t){let r;if(this.requestOptions&&this.requestOptions.headers){r=lowercaseKeys(this.requestOptions.headers)[e]}return A[e]||r||t}_getAgent(A){let e;const t=g.getProxyUrl(A);const r=t&&t.hostname;if(this._keepAlive&&r){e=this._proxyAgent}if(!r){e=this._agent}if(e){return e}const s=A.protocol==="https:";let o=100;if(this.requestOptions){o=this.requestOptions.maxSockets||i.globalAgent.maxSockets}if(t&&t.hostname){const A={maxSockets:o,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(t.username||t.password)&&{proxyAuth:`${t.username}:${t.password}`}),{host:t.hostname,port:t.port})};let r;const n=t.protocol==="https:";if(s){r=n?c.httpsOverHttps:c.httpsOverHttp}else{r=n?c.httpOverHttps:c.httpOverHttp}e=r(A);this._proxyAgent=e}if(!e){const A={keepAlive:this._keepAlive,maxSockets:o};e=s?new a.Agent(A):new i.Agent(A);this._agent=e}if(s&&this._ignoreSslError){e.options=Object.assign(e.options||{},{rejectUnauthorized:false})}return e}_getProxyAgentDispatcher(A,e){let t;if(this._keepAlive){t=this._proxyAgentDispatcher}if(t){return t}const r=A.protocol==="https:";t=new E.ProxyAgent(Object.assign({uri:e.href,pipelining:!this._keepAlive?0:1},(e.username||e.password)&&{token:`Basic ${Buffer.from(`${e.username}:${e.password}`).toString("base64")}`}));this._proxyAgentDispatcher=t;if(r&&this._ignoreSslError){t.options=Object.assign(t.options.requestTls||{},{rejectUnauthorized:false})}return t}_performExponentialBackoff(A){return n(this,void 0,void 0,(function*(){A=Math.min(u,A);const e=d*Math.pow(2,A);return new Promise((A=>setTimeout((()=>A()),e)))}))}_processResponse(A,e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>n(this,void 0,void 0,(function*(){const s=A.message.statusCode||0;const o={statusCode:s,result:null,headers:{}};if(s===Q.NotFound){t(o)}function dateTimeDeserializer(A,e){if(typeof e==="string"){const A=new Date(e);if(!isNaN(A.valueOf())){return A}}return e}let n;let i;try{i=yield A.readBody();if(i&&i.length>0){if(e&&e.deserializeDates){n=JSON.parse(i,dateTimeDeserializer)}else{n=JSON.parse(i)}o.result=n}o.headers=A.message.headers}catch(A){}if(s>299){let A;if(n&&n.message){A=n.message}else if(i&&i.length>0){A=i}else{A=`Failed request: (${s})`}const e=new HttpClientError(A,s);e.result=o.result;r(e)}else{t(o)}}))))}))}}e.HttpClient=HttpClient;const lowercaseKeys=A=>Object.keys(A).reduce(((e,t)=>(e[t.toLowerCase()]=A[t],e)),{})},9739:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.checkBypass=e.getProxyUrl=void 0;function getProxyUrl(A){const e=A.protocol==="https:";if(checkBypass(A)){return undefined}const t=(()=>{if(e){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(t){try{return new DecodedURL(t)}catch(A){if(!t.startsWith("http://")&&!t.startsWith("https://"))return new DecodedURL(`http://${t}`)}}else{return undefined}}e.getProxyUrl=getProxyUrl;function checkBypass(A){if(!A.hostname){return false}const e=A.hostname;if(isLoopbackAddress(e)){return true}const t=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!t){return false}let r;if(A.port){r=Number(A.port)}else if(A.protocol==="http:"){r=80}else if(A.protocol==="https:"){r=443}const s=[A.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const A of t.split(",").map((A=>A.trim().toUpperCase())).filter((A=>A))){if(A==="*"||s.some((e=>e===A||e.endsWith(`.${A}`)||A.startsWith(".")&&e.endsWith(`${A}`)))){return true}}return false}e.checkBypass=checkBypass;function isLoopbackAddress(A){const e=A.toLowerCase();return e==="localhost"||e.startsWith("127.")||e.startsWith("[::1]")||e.startsWith("[0:0:0:0:0:0:0:1]")}class DecodedURL extends URL{constructor(A,e){super(A,e);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}},8278:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;Object.defineProperty(A,r,{enumerable:true,get:function(){return e[t]}})}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};var i;Object.defineProperty(e,"__esModule",{value:true});e.getCmdPath=e.tryGetExecutablePath=e.isRooted=e.isDirectory=e.exists=e.READONLY=e.UV_FS_O_EXLOCK=e.IS_WINDOWS=e.unlink=e.symlink=e.stat=e.rmdir=e.rm=e.rename=e.readlink=e.readdir=e.open=e.mkdir=e.lstat=e.copyFile=e.chmod=void 0;const a=o(t(9896));const g=o(t(6928));i=a.promises,e.chmod=i.chmod,e.copyFile=i.copyFile,e.lstat=i.lstat,e.mkdir=i.mkdir,e.open=i.open,e.readdir=i.readdir,e.readlink=i.readlink,e.rename=i.rename,e.rm=i.rm,e.rmdir=i.rmdir,e.stat=i.stat,e.symlink=i.symlink,e.unlink=i.unlink;e.IS_WINDOWS=process.platform==="win32";e.UV_FS_O_EXLOCK=268435456;e.READONLY=a.constants.O_RDONLY;function exists(A){return n(this,void 0,void 0,(function*(){try{yield e.stat(A)}catch(A){if(A.code==="ENOENT"){return false}throw A}return true}))}e.exists=exists;function isDirectory(A,t=false){return n(this,void 0,void 0,(function*(){const r=t?yield e.stat(A):yield e.lstat(A);return r.isDirectory()}))}e.isDirectory=isDirectory;function isRooted(A){A=normalizeSeparators(A);if(!A){throw new Error('isRooted() parameter "p" cannot be empty')}if(e.IS_WINDOWS){return A.startsWith("\\")||/^[A-Z]:/i.test(A)}return A.startsWith("/")}e.isRooted=isRooted;function tryGetExecutablePath(A,t){return n(this,void 0,void 0,(function*(){let r=undefined;try{r=yield e.stat(A)}catch(e){if(e.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${e}`)}}if(r&&r.isFile()){if(e.IS_WINDOWS){const e=g.extname(A).toUpperCase();if(t.some((A=>A.toUpperCase()===e))){return A}}else{if(isUnixExecutable(r)){return A}}}const s=A;for(const o of t){A=s+o;r=undefined;try{r=yield e.stat(A)}catch(e){if(e.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${A}': ${e}`)}}if(r&&r.isFile()){if(e.IS_WINDOWS){try{const t=g.dirname(A);const r=g.basename(A).toUpperCase();for(const s of yield e.readdir(t)){if(r===s.toUpperCase()){A=g.join(t,s);break}}}catch(e){console.log(`Unexpected error attempting to determine the actual case of the file '${A}': ${e}`)}return A}else{if(isUnixExecutable(r)){return A}}}}return""}))}e.tryGetExecutablePath=tryGetExecutablePath;function normalizeSeparators(A){A=A||"";if(e.IS_WINDOWS){A=A.replace(/\//g,"\\");return A.replace(/\\\\+/g,"\\")}return A.replace(/\/\/+/g,"/")}function isUnixExecutable(A){return(A.mode&1)>0||(A.mode&8)>0&&A.gid===process.getgid()||(A.mode&64)>0&&A.uid===process.getuid()}function getCmdPath(){var A;return(A=process.env["COMSPEC"])!==null&&A!==void 0?A:`cmd.exe`}e.getCmdPath=getCmdPath},9009:function(A,e,t){"use strict";var r=this&&this.__createBinding||(Object.create?function(A,e,t,r){if(r===undefined)r=t;Object.defineProperty(A,r,{enumerable:true,get:function(){return e[t]}})}:function(A,e,t,r){if(r===undefined)r=t;A[r]=e[t]});var s=this&&this.__setModuleDefault||(Object.create?function(A,e){Object.defineProperty(A,"default",{enumerable:true,value:e})}:function(A,e){A["default"]=e});var o=this&&this.__importStar||function(A){if(A&&A.__esModule)return A;var e={};if(A!=null)for(var t in A)if(t!=="default"&&Object.hasOwnProperty.call(A,t))r(e,A,t);s(e,A);return e};var n=this&&this.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:true});e.findInPath=e.which=e.mkdirP=e.rmRF=e.mv=e.cp=void 0;const i=t(2613);const a=o(t(6928));const g=o(t(8278));function cp(A,e,t={}){return n(this,void 0,void 0,(function*(){const{force:r,recursive:s,copySourceDirectory:o}=readCopyOptions(t);const n=(yield g.exists(e))?yield g.stat(e):null;if(n&&n.isFile()&&!r){return}const i=n&&n.isDirectory()&&o?a.join(e,a.basename(A)):e;if(!(yield g.exists(A))){throw new Error(`no such file or directory: ${A}`)}const c=yield g.stat(A);if(c.isDirectory()){if(!s){throw new Error(`Failed to copy. ${A} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(A,i,0,r)}}else{if(a.relative(A,i)===""){throw new Error(`'${i}' and '${A}' are the same file`)}yield copyFile(A,i,r)}}))}e.cp=cp;function mv(A,e,t={}){return n(this,void 0,void 0,(function*(){if(yield g.exists(e)){let r=true;if(yield g.isDirectory(e)){e=a.join(e,a.basename(A));r=yield g.exists(e)}if(r){if(t.force==null||t.force){yield rmRF(e)}else{throw new Error("Destination already exists")}}}yield mkdirP(a.dirname(e));yield g.rename(A,e)}))}e.mv=mv;function rmRF(A){return n(this,void 0,void 0,(function*(){if(g.IS_WINDOWS){if(/[*"<>|]/.test(A)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield g.rm(A,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(A){throw new Error(`File was unable to be removed ${A}`)}}))}e.rmRF=rmRF;function mkdirP(A){return n(this,void 0,void 0,(function*(){i.ok(A,"a path argument must be provided");yield g.mkdir(A,{recursive:true})}))}e.mkdirP=mkdirP;function which(A,e){return n(this,void 0,void 0,(function*(){if(!A){throw new Error("parameter 'tool' is required")}if(e){const e=yield which(A,false);if(!e){if(g.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${A}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return e}const t=yield findInPath(A);if(t&&t.length>0){return t[0]}return""}))}e.which=which;function findInPath(A){return n(this,void 0,void 0,(function*(){if(!A){throw new Error("parameter 'tool' is required")}const e=[];if(g.IS_WINDOWS&&process.env["PATHEXT"]){for(const A of process.env["PATHEXT"].split(a.delimiter)){if(A){e.push(A)}}}if(g.isRooted(A)){const t=yield g.tryGetExecutablePath(A,e);if(t){return[t]}return[]}if(A.includes(a.sep)){return[]}const t=[];if(process.env.PATH){for(const A of process.env.PATH.split(a.delimiter)){if(A){t.push(A)}}}const r=[];for(const s of t){const t=yield g.tryGetExecutablePath(a.join(s,A),e);if(t){r.push(t)}}return r}))}e.findInPath=findInPath;function readCopyOptions(A){const e=A.force==null?true:A.force;const t=Boolean(A.recursive);const r=A.copySourceDirectory==null?true:Boolean(A.copySourceDirectory);return{force:e,recursive:t,copySourceDirectory:r}}function cpDirRecursive(A,e,t,r){return n(this,void 0,void 0,(function*(){if(t>=255)return;t++;yield mkdirP(e);const s=yield g.readdir(A);for(const o of s){const s=`${A}/${o}`;const n=`${e}/${o}`;const i=yield g.lstat(s);if(i.isDirectory()){yield cpDirRecursive(s,n,t,r)}else{yield copyFile(s,n,r)}}yield g.chmod(e,(yield g.stat(A)).mode)}))}function copyFile(A,e,t){return n(this,void 0,void 0,(function*(){if((yield g.lstat(A)).isSymbolicLink()){try{yield g.lstat(e);yield g.unlink(e)}catch(A){if(A.code==="EPERM"){yield g.chmod(e,"0666");yield g.unlink(e)}}const t=yield g.readlink(A);yield g.symlink(t,e,g.IS_WINDOWS?"junction":null)}else if(!(yield g.exists(e))||t){yield g.copyFile(A,e)}}))}},8222:A=>{"use strict";var e=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var __export=(A,t)=>{for(var r in t)e(A,r,{get:t[r],enumerable:true})};var __copyProps=(A,o,n,i)=>{if(o&&typeof o==="object"||typeof o==="function"){for(let a of r(o))if(!s.call(A,a)&&a!==n)e(A,a,{get:()=>o[a],enumerable:!(i=t(o,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(e({},"__esModule",{value:true}),A);var o={};__export(o,{createTokenAuth:()=>g});A.exports=__toCommonJS(o);var n=/^v1\./;var i=/^ghs_/;var a=/^ghu_/;async function auth(A){const e=A.split(/\./).length===3;const t=n.test(A)||i.test(A);const r=a.test(A);const s=e?"app":t?"installation":r?"user-to-server":"oauth";return{type:"token",token:A,tokenType:s}}function withAuthorizationPrefix(A){if(A.split(/\./).length===3){return`bearer ${A}`}return`token ${A}`}async function hook(A,e,t,r){const s=e.endpoint.merge(t,r);s.headers.authorization=withAuthorizationPrefix(A);return e(s)}var g=function createTokenAuth2(A){if(!A){throw new Error("[@octokit/auth-token] No token passed to createTokenAuth")}if(typeof A!=="string"){throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string")}A=A.replace(/^(token|bearer) +/i,"");return Object.assign(auth.bind(null,A),{hook:hook.bind(null,A)})};0&&0},7515:(A,e,t)=>{"use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var __export=(A,e)=>{for(var t in e)r(A,t,{get:e[t],enumerable:true})};var __copyProps=(A,e,t,i)=>{if(e&&typeof e==="object"||typeof e==="function"){for(let a of o(e))if(!n.call(A,a)&&a!==t)r(A,a,{get:()=>e[a],enumerable:!(i=s(e,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(r({},"__esModule",{value:true}),A);var i={};__export(i,{Octokit:()=>h});A.exports=__toCommonJS(i);var a=t(5960);var g=t(1821);var c=t(5151);var E=t(4965);var Q=t(8222);var C="5.0.2";var noop=()=>{};var B=console.warn.bind(console);var l=console.error.bind(console);var I=`octokit-core.js/${C} ${(0,a.getUserAgent)()}`;var h=class{static{this.VERSION=C}static defaults(A){const e=class extends(this){constructor(...e){const t=e[0]||{};if(typeof A==="function"){super(A(t));return}super(Object.assign({},A,t,t.userAgent&&A.userAgent?{userAgent:`${t.userAgent} ${A.userAgent}`}:null))}};return e}static{this.plugins=[]}static plugin(...A){const e=this.plugins;const t=class extends(this){static{this.plugins=e.concat(A.filter((A=>!e.includes(A))))}};return t}constructor(A={}){const e=new g.Collection;const t={baseUrl:c.request.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},A.request,{hook:e.bind(null,"request")}),mediaType:{previews:[],format:""}};t.headers["user-agent"]=A.userAgent?`${A.userAgent} ${I}`:I;if(A.baseUrl){t.baseUrl=A.baseUrl}if(A.previews){t.mediaType.previews=A.previews}if(A.timeZone){t.headers["time-zone"]=A.timeZone}this.request=c.request.defaults(t);this.graphql=(0,E.withCustomRequest)(this.request).defaults(t);this.log=Object.assign({debug:noop,info:noop,warn:B,error:l},A.log);this.hook=e;if(!A.authStrategy){if(!A.auth){this.auth=async()=>({type:"unauthenticated"})}else{const t=(0,Q.createTokenAuth)(A.auth);e.wrap("request",t.hook);this.auth=t}}else{const{authStrategy:t,...r}=A;const s=t(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:r},A.auth));e.wrap("request",s.hook);this.auth=s}const r=this.constructor;for(let e=0;e{"use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var __export=(A,e)=>{for(var t in e)r(A,t,{get:e[t],enumerable:true})};var __copyProps=(A,e,t,i)=>{if(e&&typeof e==="object"||typeof e==="function"){for(let a of o(e))if(!n.call(A,a)&&a!==t)r(A,a,{get:()=>e[a],enumerable:!(i=s(e,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(r({},"__esModule",{value:true}),A);var i={};__export(i,{endpoint:()=>C});A.exports=__toCommonJS(i);var a=t(5960);var g="9.0.4";var c=`octokit-endpoint.js/${g} ${(0,a.getUserAgent)()}`;var E={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":c},mediaType:{format:""}};function lowercaseKeys(A){if(!A){return{}}return Object.keys(A).reduce(((e,t)=>{e[t.toLowerCase()]=A[t];return e}),{})}function isPlainObject(A){if(typeof A!=="object"||A===null)return false;if(Object.prototype.toString.call(A)!=="[object Object]")return false;const e=Object.getPrototypeOf(A);if(e===null)return true;const t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t==="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(A)}function mergeDeep(A,e){const t=Object.assign({},A);Object.keys(e).forEach((r=>{if(isPlainObject(e[r])){if(!(r in A))Object.assign(t,{[r]:e[r]});else t[r]=mergeDeep(A[r],e[r])}else{Object.assign(t,{[r]:e[r]})}}));return t}function removeUndefinedProperties(A){for(const e in A){if(A[e]===void 0){delete A[e]}}return A}function merge(A,e,t){if(typeof e==="string"){let[A,r]=e.split(" ");t=Object.assign(r?{method:A,url:r}:{url:A},t)}else{t=Object.assign({},e)}t.headers=lowercaseKeys(t.headers);removeUndefinedProperties(t);removeUndefinedProperties(t.headers);const r=mergeDeep(A||{},t);if(t.url==="/graphql"){if(A&&A.mediaType.previews?.length){r.mediaType.previews=A.mediaType.previews.filter((A=>!r.mediaType.previews.includes(A))).concat(r.mediaType.previews)}r.mediaType.previews=(r.mediaType.previews||[]).map((A=>A.replace(/-preview/,"")))}return r}function addQueryParameters(A,e){const t=/\?/.test(A)?"&":"?";const r=Object.keys(e);if(r.length===0){return A}return A+t+r.map((A=>{if(A==="q"){return"q="+e.q.split("+").map(encodeURIComponent).join("+")}return`${A}=${encodeURIComponent(e[A])}`})).join("&")}var Q=/\{[^}]+\}/g;function removeNonChars(A){return A.replace(/^\W+|\W+$/g,"").split(/,/)}function extractUrlVariableNames(A){const e=A.match(Q);if(!e){return[]}return e.map(removeNonChars).reduce(((A,e)=>A.concat(e)),[])}function omit(A,e){const t={__proto__:null};for(const r of Object.keys(A)){if(e.indexOf(r)===-1){t[r]=A[r]}}return t}function encodeReserved(A){return A.split(/(%[0-9A-Fa-f]{2})/g).map((function(A){if(!/%[0-9A-Fa-f]/.test(A)){A=encodeURI(A).replace(/%5B/g,"[").replace(/%5D/g,"]")}return A})).join("")}function encodeUnreserved(A){return encodeURIComponent(A).replace(/[!'()*]/g,(function(A){return"%"+A.charCodeAt(0).toString(16).toUpperCase()}))}function encodeValue(A,e,t){e=A==="+"||A==="#"?encodeReserved(e):encodeUnreserved(e);if(t){return encodeUnreserved(t)+"="+e}else{return e}}function isDefined(A){return A!==void 0&&A!==null}function isKeyOperator(A){return A===";"||A==="&"||A==="?"}function getValues(A,e,t,r){var s=A[t],o=[];if(isDefined(s)&&s!==""){if(typeof s==="string"||typeof s==="number"||typeof s==="boolean"){s=s.toString();if(r&&r!=="*"){s=s.substring(0,parseInt(r,10))}o.push(encodeValue(e,s,isKeyOperator(e)?t:""))}else{if(r==="*"){if(Array.isArray(s)){s.filter(isDefined).forEach((function(A){o.push(encodeValue(e,A,isKeyOperator(e)?t:""))}))}else{Object.keys(s).forEach((function(A){if(isDefined(s[A])){o.push(encodeValue(e,s[A],A))}}))}}else{const A=[];if(Array.isArray(s)){s.filter(isDefined).forEach((function(t){A.push(encodeValue(e,t))}))}else{Object.keys(s).forEach((function(t){if(isDefined(s[t])){A.push(encodeUnreserved(t));A.push(encodeValue(e,s[t].toString()))}}))}if(isKeyOperator(e)){o.push(encodeUnreserved(t)+"="+A.join(","))}else if(A.length!==0){o.push(A.join(","))}}}}else{if(e===";"){if(isDefined(s)){o.push(encodeUnreserved(t))}}else if(s===""&&(e==="&"||e==="?")){o.push(encodeUnreserved(t)+"=")}else if(s===""){o.push("")}}return o}function parseUrl(A){return{expand:expand.bind(null,A)}}function expand(A,e){var t=["+","#",".","/",";","?","&"];A=A.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,(function(A,r,s){if(r){let A="";const s=[];if(t.indexOf(r.charAt(0))!==-1){A=r.charAt(0);r=r.substr(1)}r.split(/,/g).forEach((function(t){var r=/([^:\*]*)(?::(\d+)|(\*))?/.exec(t);s.push(getValues(e,A,r[1],r[2]||r[3]))}));if(A&&A!=="+"){var o=",";if(A==="?"){o="&"}else if(A!=="#"){o=A}return(s.length!==0?A:"")+s.join(o)}else{return s.join(",")}}else{return encodeReserved(s)}}));if(A==="/"){return A}else{return A.replace(/\/$/,"")}}function parse(A){let e=A.method.toUpperCase();let t=(A.url||"/").replace(/:([a-z]\w+)/g,"{$1}");let r=Object.assign({},A.headers);let s;let o=omit(A,["method","baseUrl","url","headers","request","mediaType"]);const n=extractUrlVariableNames(t);t=parseUrl(t).expand(o);if(!/^http/.test(t)){t=A.baseUrl+t}const i=Object.keys(A).filter((A=>n.includes(A))).concat("baseUrl");const a=omit(o,i);const g=/application\/octet-stream/i.test(r.accept);if(!g){if(A.mediaType.format){r.accept=r.accept.split(/,/).map((e=>e.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${A.mediaType.format}`))).join(",")}if(t.endsWith("/graphql")){if(A.mediaType.previews?.length){const e=r.accept.match(/[\w-]+(?=-preview)/g)||[];r.accept=e.concat(A.mediaType.previews).map((e=>{const t=A.mediaType.format?`.${A.mediaType.format}`:"+json";return`application/vnd.github.${e}-preview${t}`})).join(",")}}}if(["GET","HEAD"].includes(e)){t=addQueryParameters(t,a)}else{if("data"in a){s=a.data}else{if(Object.keys(a).length){s=a}}}if(!r["content-type"]&&typeof s!=="undefined"){r["content-type"]="application/json; charset=utf-8"}if(["PATCH","PUT"].includes(e)&&typeof s==="undefined"){s=""}return Object.assign({method:e,url:t,headers:r},typeof s!=="undefined"?{body:s}:null,A.request?{request:A.request}:null)}function endpointWithDefaults(A,e,t){return parse(merge(A,e,t))}function withDefaults(A,e){const t=merge(A,e);const r=endpointWithDefaults.bind(null,t);return Object.assign(r,{DEFAULTS:t,defaults:withDefaults.bind(null,t),merge:merge.bind(null,t),parse:parse})}var C=withDefaults(null,E);0&&0},4965:(A,e,t)=>{"use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var __export=(A,e)=>{for(var t in e)r(A,t,{get:e[t],enumerable:true})};var __copyProps=(A,e,t,i)=>{if(e&&typeof e==="object"||typeof e==="function"){for(let a of o(e))if(!n.call(A,a)&&a!==t)r(A,a,{get:()=>e[a],enumerable:!(i=s(e,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(r({},"__esModule",{value:true}),A);var i={};__export(i,{GraphqlResponseError:()=>C,graphql:()=>h,withCustomRequest:()=>withCustomRequest});A.exports=__toCommonJS(i);var a=t(5151);var g=t(5960);var c="7.0.2";var E=t(5151);var Q=t(5151);function _buildMessageForResponseErrors(A){return`Request failed due to following response errors:\n`+A.errors.map((A=>` - ${A.message}`)).join("\n")}var C=class extends Error{constructor(A,e,t){super(_buildMessageForResponseErrors(t));this.request=A;this.headers=e;this.response=t;this.name="GraphqlResponseError";this.errors=t.errors;this.data=t.data;if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}};var B=["method","baseUrl","url","headers","request","query","mediaType"];var l=["query","method","url"];var I=/\/api\/v3\/?$/;function graphql(A,e,t){if(t){if(typeof e==="string"&&"query"in t){return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`))}for(const A in t){if(!l.includes(A))continue;return Promise.reject(new Error(`[@octokit/graphql] "${A}" cannot be used as variable name`))}}const r=typeof e==="string"?Object.assign({query:e},t):e;const s=Object.keys(r).reduce(((A,e)=>{if(B.includes(e)){A[e]=r[e];return A}if(!A.variables){A.variables={}}A.variables[e]=r[e];return A}),{});const o=r.baseUrl||A.endpoint.DEFAULTS.baseUrl;if(I.test(o)){s.url=o.replace(I,"/api/graphql")}return A(s).then((A=>{if(A.data.errors){const e={};for(const t of Object.keys(A.headers)){e[t]=A.headers[t]}throw new C(s,e,A.data)}return A.data.data}))}function withDefaults(A,e){const t=A.defaults(e);const newApi=(A,e)=>graphql(t,A,e);return Object.assign(newApi,{defaults:withDefaults.bind(null,t),endpoint:t.endpoint})}var h=withDefaults(a.request,{headers:{"user-agent":`octokit-graphql.js/${c} ${(0,g.getUserAgent)()}`},method:"POST",url:"/graphql"});function withCustomRequest(A){return withDefaults(A,{method:"POST",url:"/graphql"})}0&&0},5002:A=>{"use strict";var e=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var __export=(A,t)=>{for(var r in t)e(A,r,{get:t[r],enumerable:true})};var __copyProps=(A,o,n,i)=>{if(o&&typeof o==="object"||typeof o==="function"){for(let a of r(o))if(!s.call(A,a)&&a!==n)e(A,a,{get:()=>o[a],enumerable:!(i=t(o,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(e({},"__esModule",{value:true}),A);var o={};__export(o,{composePaginateRest:()=>i,isPaginatingEndpoint:()=>isPaginatingEndpoint,paginateRest:()=>paginateRest,paginatingEndpoints:()=>a});A.exports=__toCommonJS(o);var n="9.1.5";function normalizePaginatedListResponse(A){if(!A.data){return{...A,data:[]}}const e="total_count"in A.data&&!("url"in A.data);if(!e)return A;const t=A.data.incomplete_results;const r=A.data.repository_selection;const s=A.data.total_count;delete A.data.incomplete_results;delete A.data.repository_selection;delete A.data.total_count;const o=Object.keys(A.data)[0];const n=A.data[o];A.data=n;if(typeof t!=="undefined"){A.data.incomplete_results=t}if(typeof r!=="undefined"){A.data.repository_selection=r}A.data.total_count=s;return A}function iterator(A,e,t){const r=typeof e==="function"?e.endpoint(t):A.request.endpoint(e,t);const s=typeof e==="function"?e:A.request;const o=r.method;const n=r.headers;let i=r.url;return{[Symbol.asyncIterator]:()=>({async next(){if(!i)return{done:true};try{const A=await s({method:o,url:i,headers:n});const e=normalizePaginatedListResponse(A);i=((e.headers.link||"").match(/<([^>]+)>;\s*rel="next"/)||[])[1];return{value:e}}catch(A){if(A.status!==409)throw A;i="";return{value:{status:200,headers:{},data:[]}}}}})}}function paginate(A,e,t,r){if(typeof t==="function"){r=t;t=void 0}return gather(A,[],iterator(A,e,t)[Symbol.asyncIterator](),r)}function gather(A,e,t,r){return t.next().then((s=>{if(s.done){return e}let o=false;function done(){o=true}e=e.concat(r?r(s.value,done):s.value.data);if(o){return e}return gather(A,e,t,r)}))}var i=Object.assign(paginate,{iterator:iterator});var a=["GET /advisories","GET /app/hook/deliveries","GET /app/installation-requests","GET /app/installations","GET /assignments/{assignment_id}/accepted_assignments","GET /classrooms","GET /classrooms/{classroom_id}/assignments","GET /enterprises/{enterprise}/dependabot/alerts","GET /enterprises/{enterprise}/secret-scanning/alerts","GET /events","GET /gists","GET /gists/public","GET /gists/starred","GET /gists/{gist_id}/comments","GET /gists/{gist_id}/commits","GET /gists/{gist_id}/forks","GET /installation/repositories","GET /issues","GET /licenses","GET /marketplace_listing/plans","GET /marketplace_listing/plans/{plan_id}/accounts","GET /marketplace_listing/stubbed/plans","GET /marketplace_listing/stubbed/plans/{plan_id}/accounts","GET /networks/{owner}/{repo}/events","GET /notifications","GET /organizations","GET /orgs/{org}/actions/cache/usage-by-repository","GET /orgs/{org}/actions/permissions/repositories","GET /orgs/{org}/actions/runners","GET /orgs/{org}/actions/secrets","GET /orgs/{org}/actions/secrets/{secret_name}/repositories","GET /orgs/{org}/actions/variables","GET /orgs/{org}/actions/variables/{name}/repositories","GET /orgs/{org}/blocks","GET /orgs/{org}/code-scanning/alerts","GET /orgs/{org}/codespaces","GET /orgs/{org}/codespaces/secrets","GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories","GET /orgs/{org}/copilot/billing/seats","GET /orgs/{org}/dependabot/alerts","GET /orgs/{org}/dependabot/secrets","GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories","GET /orgs/{org}/events","GET /orgs/{org}/failed_invitations","GET /orgs/{org}/hooks","GET /orgs/{org}/hooks/{hook_id}/deliveries","GET /orgs/{org}/installations","GET /orgs/{org}/invitations","GET /orgs/{org}/invitations/{invitation_id}/teams","GET /orgs/{org}/issues","GET /orgs/{org}/members","GET /orgs/{org}/members/{username}/codespaces","GET /orgs/{org}/migrations","GET /orgs/{org}/migrations/{migration_id}/repositories","GET /orgs/{org}/outside_collaborators","GET /orgs/{org}/packages","GET /orgs/{org}/packages/{package_type}/{package_name}/versions","GET /orgs/{org}/personal-access-token-requests","GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories","GET /orgs/{org}/personal-access-tokens","GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories","GET /orgs/{org}/projects","GET /orgs/{org}/properties/values","GET /orgs/{org}/public_members","GET /orgs/{org}/repos","GET /orgs/{org}/rulesets","GET /orgs/{org}/rulesets/rule-suites","GET /orgs/{org}/secret-scanning/alerts","GET /orgs/{org}/security-advisories","GET /orgs/{org}/teams","GET /orgs/{org}/teams/{team_slug}/discussions","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions","GET /orgs/{org}/teams/{team_slug}/invitations","GET /orgs/{org}/teams/{team_slug}/members","GET /orgs/{org}/teams/{team_slug}/projects","GET /orgs/{org}/teams/{team_slug}/repos","GET /orgs/{org}/teams/{team_slug}/teams","GET /projects/columns/{column_id}/cards","GET /projects/{project_id}/collaborators","GET /projects/{project_id}/columns","GET /repos/{owner}/{repo}/actions/artifacts","GET /repos/{owner}/{repo}/actions/caches","GET /repos/{owner}/{repo}/actions/organization-secrets","GET /repos/{owner}/{repo}/actions/organization-variables","GET /repos/{owner}/{repo}/actions/runners","GET /repos/{owner}/{repo}/actions/runs","GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts","GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs","GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs","GET /repos/{owner}/{repo}/actions/secrets","GET /repos/{owner}/{repo}/actions/variables","GET /repos/{owner}/{repo}/actions/workflows","GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs","GET /repos/{owner}/{repo}/activity","GET /repos/{owner}/{repo}/assignees","GET /repos/{owner}/{repo}/branches","GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations","GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs","GET /repos/{owner}/{repo}/code-scanning/alerts","GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances","GET /repos/{owner}/{repo}/code-scanning/analyses","GET /repos/{owner}/{repo}/codespaces","GET /repos/{owner}/{repo}/codespaces/devcontainers","GET /repos/{owner}/{repo}/codespaces/secrets","GET /repos/{owner}/{repo}/collaborators","GET /repos/{owner}/{repo}/comments","GET /repos/{owner}/{repo}/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/commits","GET /repos/{owner}/{repo}/commits/{commit_sha}/comments","GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls","GET /repos/{owner}/{repo}/commits/{ref}/check-runs","GET /repos/{owner}/{repo}/commits/{ref}/check-suites","GET /repos/{owner}/{repo}/commits/{ref}/status","GET /repos/{owner}/{repo}/commits/{ref}/statuses","GET /repos/{owner}/{repo}/contributors","GET /repos/{owner}/{repo}/dependabot/alerts","GET /repos/{owner}/{repo}/dependabot/secrets","GET /repos/{owner}/{repo}/deployments","GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses","GET /repos/{owner}/{repo}/environments","GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies","GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps","GET /repos/{owner}/{repo}/events","GET /repos/{owner}/{repo}/forks","GET /repos/{owner}/{repo}/hooks","GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries","GET /repos/{owner}/{repo}/invitations","GET /repos/{owner}/{repo}/issues","GET /repos/{owner}/{repo}/issues/comments","GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/issues/events","GET /repos/{owner}/{repo}/issues/{issue_number}/comments","GET /repos/{owner}/{repo}/issues/{issue_number}/events","GET /repos/{owner}/{repo}/issues/{issue_number}/labels","GET /repos/{owner}/{repo}/issues/{issue_number}/reactions","GET /repos/{owner}/{repo}/issues/{issue_number}/timeline","GET /repos/{owner}/{repo}/keys","GET /repos/{owner}/{repo}/labels","GET /repos/{owner}/{repo}/milestones","GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels","GET /repos/{owner}/{repo}/notifications","GET /repos/{owner}/{repo}/pages/builds","GET /repos/{owner}/{repo}/projects","GET /repos/{owner}/{repo}/pulls","GET /repos/{owner}/{repo}/pulls/comments","GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/pulls/{pull_number}/comments","GET /repos/{owner}/{repo}/pulls/{pull_number}/commits","GET /repos/{owner}/{repo}/pulls/{pull_number}/files","GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews","GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments","GET /repos/{owner}/{repo}/releases","GET /repos/{owner}/{repo}/releases/{release_id}/assets","GET /repos/{owner}/{repo}/releases/{release_id}/reactions","GET /repos/{owner}/{repo}/rules/branches/{branch}","GET /repos/{owner}/{repo}/rulesets","GET /repos/{owner}/{repo}/rulesets/rule-suites","GET /repos/{owner}/{repo}/secret-scanning/alerts","GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations","GET /repos/{owner}/{repo}/security-advisories","GET /repos/{owner}/{repo}/stargazers","GET /repos/{owner}/{repo}/subscribers","GET /repos/{owner}/{repo}/tags","GET /repos/{owner}/{repo}/teams","GET /repos/{owner}/{repo}/topics","GET /repositories","GET /repositories/{repository_id}/environments/{environment_name}/secrets","GET /repositories/{repository_id}/environments/{environment_name}/variables","GET /search/code","GET /search/commits","GET /search/issues","GET /search/labels","GET /search/repositories","GET /search/topics","GET /search/users","GET /teams/{team_id}/discussions","GET /teams/{team_id}/discussions/{discussion_number}/comments","GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions","GET /teams/{team_id}/discussions/{discussion_number}/reactions","GET /teams/{team_id}/invitations","GET /teams/{team_id}/members","GET /teams/{team_id}/projects","GET /teams/{team_id}/repos","GET /teams/{team_id}/teams","GET /user/blocks","GET /user/codespaces","GET /user/codespaces/secrets","GET /user/emails","GET /user/followers","GET /user/following","GET /user/gpg_keys","GET /user/installations","GET /user/installations/{installation_id}/repositories","GET /user/issues","GET /user/keys","GET /user/marketplace_purchases","GET /user/marketplace_purchases/stubbed","GET /user/memberships/orgs","GET /user/migrations","GET /user/migrations/{migration_id}/repositories","GET /user/orgs","GET /user/packages","GET /user/packages/{package_type}/{package_name}/versions","GET /user/public_emails","GET /user/repos","GET /user/repository_invitations","GET /user/social_accounts","GET /user/ssh_signing_keys","GET /user/starred","GET /user/subscriptions","GET /user/teams","GET /users","GET /users/{username}/events","GET /users/{username}/events/orgs/{org}","GET /users/{username}/events/public","GET /users/{username}/followers","GET /users/{username}/following","GET /users/{username}/gists","GET /users/{username}/gpg_keys","GET /users/{username}/keys","GET /users/{username}/orgs","GET /users/{username}/packages","GET /users/{username}/projects","GET /users/{username}/received_events","GET /users/{username}/received_events/public","GET /users/{username}/repos","GET /users/{username}/social_accounts","GET /users/{username}/ssh_signing_keys","GET /users/{username}/starred","GET /users/{username}/subscriptions"];function isPaginatingEndpoint(A){if(typeof A==="string"){return a.includes(A)}else{return false}}function paginateRest(A){return{paginate:Object.assign(paginate.bind(null,A),{iterator:iterator.bind(null,A)})}}paginateRest.VERSION=n;0&&0},18:A=>{"use strict";var e=Object.defineProperty;var t=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var __export=(A,t)=>{for(var r in t)e(A,r,{get:t[r],enumerable:true})};var __copyProps=(A,o,n,i)=>{if(o&&typeof o==="object"||typeof o==="function"){for(let a of r(o))if(!s.call(A,a)&&a!==n)e(A,a,{get:()=>o[a],enumerable:!(i=t(o,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(e({},"__esModule",{value:true}),A);var o={};__export(o,{legacyRestEndpointMethods:()=>legacyRestEndpointMethods,restEndpointMethods:()=>restEndpointMethods});A.exports=__toCommonJS(o);var n="10.2.0";var i={actions:{addCustomLabelsToSelfHostedRunnerForOrg:["POST /orgs/{org}/actions/runners/{runner_id}/labels"],addCustomLabelsToSelfHostedRunnerForRepo:["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],approveWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],cancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],createEnvironmentVariable:["POST /repositories/{repository_id}/environments/{environment_name}/variables"],createOrUpdateEnvironmentSecret:["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],createOrgVariable:["POST /orgs/{org}/actions/variables"],createRegistrationTokenForOrg:["POST /orgs/{org}/actions/runners/registration-token"],createRegistrationTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/registration-token"],createRemoveTokenForOrg:["POST /orgs/{org}/actions/runners/remove-token"],createRemoveTokenForRepo:["POST /repos/{owner}/{repo}/actions/runners/remove-token"],createRepoVariable:["POST /repos/{owner}/{repo}/actions/variables"],createWorkflowDispatch:["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],deleteActionsCacheById:["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],deleteActionsCacheByKey:["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],deleteArtifact:["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],deleteEnvironmentSecret:["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],deleteEnvironmentVariable:["DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"],deleteOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}"],deleteOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],deleteRepoVariable:["DELETE /repos/{owner}/{repo}/actions/variables/{name}"],deleteSelfHostedRunnerFromOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}"],deleteSelfHostedRunnerFromRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],deleteWorkflowRun:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],deleteWorkflowRunLogs:["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],disableSelectedRepositoryGithubActionsOrganization:["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],disableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],downloadArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],downloadJobLogsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],downloadWorkflowRunAttemptLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],downloadWorkflowRunLogs:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],enableSelectedRepositoryGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],enableWorkflow:["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],forceCancelWorkflowRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"],generateRunnerJitconfigForOrg:["POST /orgs/{org}/actions/runners/generate-jitconfig"],generateRunnerJitconfigForRepo:["POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"],getActionsCacheList:["GET /repos/{owner}/{repo}/actions/caches"],getActionsCacheUsage:["GET /repos/{owner}/{repo}/actions/cache/usage"],getActionsCacheUsageByRepoForOrg:["GET /orgs/{org}/actions/cache/usage-by-repository"],getActionsCacheUsageForOrg:["GET /orgs/{org}/actions/cache/usage"],getAllowedActionsOrganization:["GET /orgs/{org}/actions/permissions/selected-actions"],getAllowedActionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],getArtifact:["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],getEnvironmentPublicKey:["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],getEnvironmentSecret:["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],getEnvironmentVariable:["GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"],getGithubActionsDefaultWorkflowPermissionsOrganization:["GET /orgs/{org}/actions/permissions/workflow"],getGithubActionsDefaultWorkflowPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions/workflow"],getGithubActionsPermissionsOrganization:["GET /orgs/{org}/actions/permissions"],getGithubActionsPermissionsRepository:["GET /repos/{owner}/{repo}/actions/permissions"],getJobForWorkflowRun:["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],getOrgPublicKey:["GET /orgs/{org}/actions/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}"],getOrgVariable:["GET /orgs/{org}/actions/variables/{name}"],getPendingDeploymentsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],getRepoPermissions:["GET /repos/{owner}/{repo}/actions/permissions",{},{renamed:["actions","getGithubActionsPermissionsRepository"]}],getRepoPublicKey:["GET /repos/{owner}/{repo}/actions/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],getRepoVariable:["GET /repos/{owner}/{repo}/actions/variables/{name}"],getReviewsForRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],getSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}"],getSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],getWorkflow:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],getWorkflowAccessToRepository:["GET /repos/{owner}/{repo}/actions/permissions/access"],getWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],getWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],getWorkflowRunUsage:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],getWorkflowUsage:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],listArtifactsForRepo:["GET /repos/{owner}/{repo}/actions/artifacts"],listEnvironmentSecrets:["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],listEnvironmentVariables:["GET /repositories/{repository_id}/environments/{environment_name}/variables"],listJobsForWorkflowRun:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],listJobsForWorkflowRunAttempt:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],listLabelsForSelfHostedRunnerForOrg:["GET /orgs/{org}/actions/runners/{runner_id}/labels"],listLabelsForSelfHostedRunnerForRepo:["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],listOrgSecrets:["GET /orgs/{org}/actions/secrets"],listOrgVariables:["GET /orgs/{org}/actions/variables"],listRepoOrganizationSecrets:["GET /repos/{owner}/{repo}/actions/organization-secrets"],listRepoOrganizationVariables:["GET /repos/{owner}/{repo}/actions/organization-variables"],listRepoSecrets:["GET /repos/{owner}/{repo}/actions/secrets"],listRepoVariables:["GET /repos/{owner}/{repo}/actions/variables"],listRepoWorkflows:["GET /repos/{owner}/{repo}/actions/workflows"],listRunnerApplicationsForOrg:["GET /orgs/{org}/actions/runners/downloads"],listRunnerApplicationsForRepo:["GET /repos/{owner}/{repo}/actions/runners/downloads"],listSelectedReposForOrgSecret:["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],listSelectedReposForOrgVariable:["GET /orgs/{org}/actions/variables/{name}/repositories"],listSelectedRepositoriesEnabledGithubActionsOrganization:["GET /orgs/{org}/actions/permissions/repositories"],listSelfHostedRunnersForOrg:["GET /orgs/{org}/actions/runners"],listSelfHostedRunnersForRepo:["GET /repos/{owner}/{repo}/actions/runners"],listWorkflowRunArtifacts:["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],listWorkflowRuns:["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],listWorkflowRunsForRepo:["GET /repos/{owner}/{repo}/actions/runs"],reRunJobForWorkflowRun:["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],reRunWorkflow:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],reRunWorkflowFailedJobs:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],removeAllCustomLabelsFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],removeAllCustomLabelsFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],removeCustomLabelFromSelfHostedRunnerForOrg:["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],removeCustomLabelFromSelfHostedRunnerForRepo:["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgVariable:["DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"],reviewCustomGatesForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"],reviewPendingDeploymentsForRun:["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],setAllowedActionsOrganization:["PUT /orgs/{org}/actions/permissions/selected-actions"],setAllowedActionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],setCustomLabelsForSelfHostedRunnerForOrg:["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],setCustomLabelsForSelfHostedRunnerForRepo:["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],setGithubActionsDefaultWorkflowPermissionsOrganization:["PUT /orgs/{org}/actions/permissions/workflow"],setGithubActionsDefaultWorkflowPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],setGithubActionsPermissionsOrganization:["PUT /orgs/{org}/actions/permissions"],setGithubActionsPermissionsRepository:["PUT /repos/{owner}/{repo}/actions/permissions"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],setSelectedReposForOrgVariable:["PUT /orgs/{org}/actions/variables/{name}/repositories"],setSelectedRepositoriesEnabledGithubActionsOrganization:["PUT /orgs/{org}/actions/permissions/repositories"],setWorkflowAccessToRepository:["PUT /repos/{owner}/{repo}/actions/permissions/access"],updateEnvironmentVariable:["PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"],updateOrgVariable:["PATCH /orgs/{org}/actions/variables/{name}"],updateRepoVariable:["PATCH /repos/{owner}/{repo}/actions/variables/{name}"]},activity:{checkRepoIsStarredByAuthenticatedUser:["GET /user/starred/{owner}/{repo}"],deleteRepoSubscription:["DELETE /repos/{owner}/{repo}/subscription"],deleteThreadSubscription:["DELETE /notifications/threads/{thread_id}/subscription"],getFeeds:["GET /feeds"],getRepoSubscription:["GET /repos/{owner}/{repo}/subscription"],getThread:["GET /notifications/threads/{thread_id}"],getThreadSubscriptionForAuthenticatedUser:["GET /notifications/threads/{thread_id}/subscription"],listEventsForAuthenticatedUser:["GET /users/{username}/events"],listNotificationsForAuthenticatedUser:["GET /notifications"],listOrgEventsForAuthenticatedUser:["GET /users/{username}/events/orgs/{org}"],listPublicEvents:["GET /events"],listPublicEventsForRepoNetwork:["GET /networks/{owner}/{repo}/events"],listPublicEventsForUser:["GET /users/{username}/events/public"],listPublicOrgEvents:["GET /orgs/{org}/events"],listReceivedEventsForUser:["GET /users/{username}/received_events"],listReceivedPublicEventsForUser:["GET /users/{username}/received_events/public"],listRepoEvents:["GET /repos/{owner}/{repo}/events"],listRepoNotificationsForAuthenticatedUser:["GET /repos/{owner}/{repo}/notifications"],listReposStarredByAuthenticatedUser:["GET /user/starred"],listReposStarredByUser:["GET /users/{username}/starred"],listReposWatchedByUser:["GET /users/{username}/subscriptions"],listStargazersForRepo:["GET /repos/{owner}/{repo}/stargazers"],listWatchedReposForAuthenticatedUser:["GET /user/subscriptions"],listWatchersForRepo:["GET /repos/{owner}/{repo}/subscribers"],markNotificationsAsRead:["PUT /notifications"],markRepoNotificationsAsRead:["PUT /repos/{owner}/{repo}/notifications"],markThreadAsRead:["PATCH /notifications/threads/{thread_id}"],setRepoSubscription:["PUT /repos/{owner}/{repo}/subscription"],setThreadSubscription:["PUT /notifications/threads/{thread_id}/subscription"],starRepoForAuthenticatedUser:["PUT /user/starred/{owner}/{repo}"],unstarRepoForAuthenticatedUser:["DELETE /user/starred/{owner}/{repo}"]},apps:{addRepoToInstallation:["PUT /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","addRepoToInstallationForAuthenticatedUser"]}],addRepoToInstallationForAuthenticatedUser:["PUT /user/installations/{installation_id}/repositories/{repository_id}"],checkToken:["POST /applications/{client_id}/token"],createFromManifest:["POST /app-manifests/{code}/conversions"],createInstallationAccessToken:["POST /app/installations/{installation_id}/access_tokens"],deleteAuthorization:["DELETE /applications/{client_id}/grant"],deleteInstallation:["DELETE /app/installations/{installation_id}"],deleteToken:["DELETE /applications/{client_id}/token"],getAuthenticated:["GET /app"],getBySlug:["GET /apps/{app_slug}"],getInstallation:["GET /app/installations/{installation_id}"],getOrgInstallation:["GET /orgs/{org}/installation"],getRepoInstallation:["GET /repos/{owner}/{repo}/installation"],getSubscriptionPlanForAccount:["GET /marketplace_listing/accounts/{account_id}"],getSubscriptionPlanForAccountStubbed:["GET /marketplace_listing/stubbed/accounts/{account_id}"],getUserInstallation:["GET /users/{username}/installation"],getWebhookConfigForApp:["GET /app/hook/config"],getWebhookDelivery:["GET /app/hook/deliveries/{delivery_id}"],listAccountsForPlan:["GET /marketplace_listing/plans/{plan_id}/accounts"],listAccountsForPlanStubbed:["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],listInstallationReposForAuthenticatedUser:["GET /user/installations/{installation_id}/repositories"],listInstallationRequestsForAuthenticatedApp:["GET /app/installation-requests"],listInstallations:["GET /app/installations"],listInstallationsForAuthenticatedUser:["GET /user/installations"],listPlans:["GET /marketplace_listing/plans"],listPlansStubbed:["GET /marketplace_listing/stubbed/plans"],listReposAccessibleToInstallation:["GET /installation/repositories"],listSubscriptionsForAuthenticatedUser:["GET /user/marketplace_purchases"],listSubscriptionsForAuthenticatedUserStubbed:["GET /user/marketplace_purchases/stubbed"],listWebhookDeliveries:["GET /app/hook/deliveries"],redeliverWebhookDelivery:["POST /app/hook/deliveries/{delivery_id}/attempts"],removeRepoFromInstallation:["DELETE /user/installations/{installation_id}/repositories/{repository_id}",{},{renamed:["apps","removeRepoFromInstallationForAuthenticatedUser"]}],removeRepoFromInstallationForAuthenticatedUser:["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],resetToken:["PATCH /applications/{client_id}/token"],revokeInstallationAccessToken:["DELETE /installation/token"],scopeToken:["POST /applications/{client_id}/token/scoped"],suspendInstallation:["PUT /app/installations/{installation_id}/suspended"],unsuspendInstallation:["DELETE /app/installations/{installation_id}/suspended"],updateWebhookConfigForApp:["PATCH /app/hook/config"]},billing:{getGithubActionsBillingOrg:["GET /orgs/{org}/settings/billing/actions"],getGithubActionsBillingUser:["GET /users/{username}/settings/billing/actions"],getGithubPackagesBillingOrg:["GET /orgs/{org}/settings/billing/packages"],getGithubPackagesBillingUser:["GET /users/{username}/settings/billing/packages"],getSharedStorageBillingOrg:["GET /orgs/{org}/settings/billing/shared-storage"],getSharedStorageBillingUser:["GET /users/{username}/settings/billing/shared-storage"]},checks:{create:["POST /repos/{owner}/{repo}/check-runs"],createSuite:["POST /repos/{owner}/{repo}/check-suites"],get:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],getSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],listAnnotations:["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],listForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],listForSuite:["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],listSuitesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],rerequestRun:["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],rerequestSuite:["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],setSuitesPreferences:["PATCH /repos/{owner}/{repo}/check-suites/preferences"],update:["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]},codeScanning:{deleteAnalysis:["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],getAlert:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",{},{renamedParameters:{alert_id:"alert_number"}}],getAnalysis:["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],getCodeqlDatabase:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"],getDefaultSetup:["GET /repos/{owner}/{repo}/code-scanning/default-setup"],getSarif:["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],listAlertInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],listAlertsForOrg:["GET /orgs/{org}/code-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/code-scanning/alerts"],listAlertsInstances:["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",{},{renamed:["codeScanning","listAlertInstances"]}],listCodeqlDatabases:["GET /repos/{owner}/{repo}/code-scanning/codeql/databases"],listRecentAnalyses:["GET /repos/{owner}/{repo}/code-scanning/analyses"],updateAlert:["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],updateDefaultSetup:["PATCH /repos/{owner}/{repo}/code-scanning/default-setup"],uploadSarif:["POST /repos/{owner}/{repo}/code-scanning/sarifs"]},codesOfConduct:{getAllCodesOfConduct:["GET /codes_of_conduct"],getConductCode:["GET /codes_of_conduct/{key}"]},codespaces:{addRepositoryForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],addSelectedRepoToOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],checkPermissionsForDevcontainer:["GET /repos/{owner}/{repo}/codespaces/permissions_check"],codespaceMachinesForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/machines"],createForAuthenticatedUser:["POST /user/codespaces"],createOrUpdateOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],createOrUpdateSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}"],createWithPrForAuthenticatedUser:["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],createWithRepoForAuthenticatedUser:["POST /repos/{owner}/{repo}/codespaces"],deleteForAuthenticatedUser:["DELETE /user/codespaces/{codespace_name}"],deleteFromOrganization:["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],deleteOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],deleteSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}"],exportForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/exports"],getCodespacesForUserInOrg:["GET /orgs/{org}/members/{username}/codespaces"],getExportDetailsForAuthenticatedUser:["GET /user/codespaces/{codespace_name}/exports/{export_id}"],getForAuthenticatedUser:["GET /user/codespaces/{codespace_name}"],getOrgPublicKey:["GET /orgs/{org}/codespaces/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}"],getPublicKeyForAuthenticatedUser:["GET /user/codespaces/secrets/public-key"],getRepoPublicKey:["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],getSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}"],listDevcontainersInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/devcontainers"],listForAuthenticatedUser:["GET /user/codespaces"],listInOrganization:["GET /orgs/{org}/codespaces",{},{renamedParameters:{org_id:"org"}}],listInRepositoryForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces"],listOrgSecrets:["GET /orgs/{org}/codespaces/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/codespaces/secrets"],listRepositoriesForSecretForAuthenticatedUser:["GET /user/codespaces/secrets/{secret_name}/repositories"],listSecretsForAuthenticatedUser:["GET /user/codespaces/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],preFlightWithRepoForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/new"],publishForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/publish"],removeRepositoryForSecretForAuthenticatedUser:["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"],repoMachinesForAuthenticatedUser:["GET /repos/{owner}/{repo}/codespaces/machines"],setRepositoriesForSecretForAuthenticatedUser:["PUT /user/codespaces/secrets/{secret_name}/repositories"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"],startForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/start"],stopForAuthenticatedUser:["POST /user/codespaces/{codespace_name}/stop"],stopInOrganization:["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],updateForAuthenticatedUser:["PATCH /user/codespaces/{codespace_name}"]},copilot:{addCopilotForBusinessSeatsForTeams:["POST /orgs/{org}/copilot/billing/selected_teams"],addCopilotForBusinessSeatsForUsers:["POST /orgs/{org}/copilot/billing/selected_users"],cancelCopilotSeatAssignmentForTeams:["DELETE /orgs/{org}/copilot/billing/selected_teams"],cancelCopilotSeatAssignmentForUsers:["DELETE /orgs/{org}/copilot/billing/selected_users"],getCopilotOrganizationDetails:["GET /orgs/{org}/copilot/billing"],getCopilotSeatDetailsForUser:["GET /orgs/{org}/members/{username}/copilot"],listCopilotSeats:["GET /orgs/{org}/copilot/billing/seats"]},dependabot:{addSelectedRepoToOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],createOrUpdateOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],createOrUpdateRepoSecret:["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],deleteOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],deleteRepoSecret:["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],getAlert:["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],getOrgPublicKey:["GET /orgs/{org}/dependabot/secrets/public-key"],getOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}"],getRepoPublicKey:["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],getRepoSecret:["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/dependabot/alerts"],listAlertsForOrg:["GET /orgs/{org}/dependabot/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/dependabot/alerts"],listOrgSecrets:["GET /orgs/{org}/dependabot/secrets"],listRepoSecrets:["GET /repos/{owner}/{repo}/dependabot/secrets"],listSelectedReposForOrgSecret:["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],removeSelectedRepoFromOrgSecret:["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],setSelectedReposForOrgSecret:["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],updateAlert:["PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"]},dependencyGraph:{createRepositorySnapshot:["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],diffRange:["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"],exportSbom:["GET /repos/{owner}/{repo}/dependency-graph/sbom"]},emojis:{get:["GET /emojis"]},gists:{checkIsStarred:["GET /gists/{gist_id}/star"],create:["POST /gists"],createComment:["POST /gists/{gist_id}/comments"],delete:["DELETE /gists/{gist_id}"],deleteComment:["DELETE /gists/{gist_id}/comments/{comment_id}"],fork:["POST /gists/{gist_id}/forks"],get:["GET /gists/{gist_id}"],getComment:["GET /gists/{gist_id}/comments/{comment_id}"],getRevision:["GET /gists/{gist_id}/{sha}"],list:["GET /gists"],listComments:["GET /gists/{gist_id}/comments"],listCommits:["GET /gists/{gist_id}/commits"],listForUser:["GET /users/{username}/gists"],listForks:["GET /gists/{gist_id}/forks"],listPublic:["GET /gists/public"],listStarred:["GET /gists/starred"],star:["PUT /gists/{gist_id}/star"],unstar:["DELETE /gists/{gist_id}/star"],update:["PATCH /gists/{gist_id}"],updateComment:["PATCH /gists/{gist_id}/comments/{comment_id}"]},git:{createBlob:["POST /repos/{owner}/{repo}/git/blobs"],createCommit:["POST /repos/{owner}/{repo}/git/commits"],createRef:["POST /repos/{owner}/{repo}/git/refs"],createTag:["POST /repos/{owner}/{repo}/git/tags"],createTree:["POST /repos/{owner}/{repo}/git/trees"],deleteRef:["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],getBlob:["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],getCommit:["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],getRef:["GET /repos/{owner}/{repo}/git/ref/{ref}"],getTag:["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],getTree:["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],listMatchingRefs:["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],updateRef:["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]},gitignore:{getAllTemplates:["GET /gitignore/templates"],getTemplate:["GET /gitignore/templates/{name}"]},interactions:{getRestrictionsForAuthenticatedUser:["GET /user/interaction-limits"],getRestrictionsForOrg:["GET /orgs/{org}/interaction-limits"],getRestrictionsForRepo:["GET /repos/{owner}/{repo}/interaction-limits"],getRestrictionsForYourPublicRepos:["GET /user/interaction-limits",{},{renamed:["interactions","getRestrictionsForAuthenticatedUser"]}],removeRestrictionsForAuthenticatedUser:["DELETE /user/interaction-limits"],removeRestrictionsForOrg:["DELETE /orgs/{org}/interaction-limits"],removeRestrictionsForRepo:["DELETE /repos/{owner}/{repo}/interaction-limits"],removeRestrictionsForYourPublicRepos:["DELETE /user/interaction-limits",{},{renamed:["interactions","removeRestrictionsForAuthenticatedUser"]}],setRestrictionsForAuthenticatedUser:["PUT /user/interaction-limits"],setRestrictionsForOrg:["PUT /orgs/{org}/interaction-limits"],setRestrictionsForRepo:["PUT /repos/{owner}/{repo}/interaction-limits"],setRestrictionsForYourPublicRepos:["PUT /user/interaction-limits",{},{renamed:["interactions","setRestrictionsForAuthenticatedUser"]}]},issues:{addAssignees:["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],addLabels:["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],checkUserCanBeAssigned:["GET /repos/{owner}/{repo}/assignees/{assignee}"],checkUserCanBeAssignedToIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"],create:["POST /repos/{owner}/{repo}/issues"],createComment:["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],createLabel:["POST /repos/{owner}/{repo}/labels"],createMilestone:["POST /repos/{owner}/{repo}/milestones"],deleteComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],deleteLabel:["DELETE /repos/{owner}/{repo}/labels/{name}"],deleteMilestone:["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],get:["GET /repos/{owner}/{repo}/issues/{issue_number}"],getComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],getEvent:["GET /repos/{owner}/{repo}/issues/events/{event_id}"],getLabel:["GET /repos/{owner}/{repo}/labels/{name}"],getMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],list:["GET /issues"],listAssignees:["GET /repos/{owner}/{repo}/assignees"],listComments:["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],listCommentsForRepo:["GET /repos/{owner}/{repo}/issues/comments"],listEvents:["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],listEventsForRepo:["GET /repos/{owner}/{repo}/issues/events"],listEventsForTimeline:["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],listForAuthenticatedUser:["GET /user/issues"],listForOrg:["GET /orgs/{org}/issues"],listForRepo:["GET /repos/{owner}/{repo}/issues"],listLabelsForMilestone:["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],listLabelsForRepo:["GET /repos/{owner}/{repo}/labels"],listLabelsOnIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],listMilestones:["GET /repos/{owner}/{repo}/milestones"],lock:["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],removeAllLabels:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],removeAssignees:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],removeLabel:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],setLabels:["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],unlock:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],update:["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],updateComment:["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],updateLabel:["PATCH /repos/{owner}/{repo}/labels/{name}"],updateMilestone:["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]},licenses:{get:["GET /licenses/{license}"],getAllCommonlyUsed:["GET /licenses"],getForRepo:["GET /repos/{owner}/{repo}/license"]},markdown:{render:["POST /markdown"],renderRaw:["POST /markdown/raw",{headers:{"content-type":"text/plain; charset=utf-8"}}]},meta:{get:["GET /meta"],getAllVersions:["GET /versions"],getOctocat:["GET /octocat"],getZen:["GET /zen"],root:["GET /"]},migrations:{cancelImport:["DELETE /repos/{owner}/{repo}/import",{},{deprecated:"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import"}],deleteArchiveForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/archive"],deleteArchiveForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/archive"],downloadArchiveForOrg:["GET /orgs/{org}/migrations/{migration_id}/archive"],getArchiveForAuthenticatedUser:["GET /user/migrations/{migration_id}/archive"],getCommitAuthors:["GET /repos/{owner}/{repo}/import/authors",{},{deprecated:"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors"}],getImportStatus:["GET /repos/{owner}/{repo}/import",{},{deprecated:"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status"}],getLargeFiles:["GET /repos/{owner}/{repo}/import/large_files",{},{deprecated:"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files"}],getStatusForAuthenticatedUser:["GET /user/migrations/{migration_id}"],getStatusForOrg:["GET /orgs/{org}/migrations/{migration_id}"],listForAuthenticatedUser:["GET /user/migrations"],listForOrg:["GET /orgs/{org}/migrations"],listReposForAuthenticatedUser:["GET /user/migrations/{migration_id}/repositories"],listReposForOrg:["GET /orgs/{org}/migrations/{migration_id}/repositories"],listReposForUser:["GET /user/migrations/{migration_id}/repositories",{},{renamed:["migrations","listReposForAuthenticatedUser"]}],mapCommitAuthor:["PATCH /repos/{owner}/{repo}/import/authors/{author_id}",{},{deprecated:"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author"}],setLfsPreference:["PATCH /repos/{owner}/{repo}/import/lfs",{},{deprecated:"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference"}],startForAuthenticatedUser:["POST /user/migrations"],startForOrg:["POST /orgs/{org}/migrations"],startImport:["PUT /repos/{owner}/{repo}/import",{},{deprecated:"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import"}],unlockRepoForAuthenticatedUser:["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],unlockRepoForOrg:["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],updateImport:["PATCH /repos/{owner}/{repo}/import",{},{deprecated:"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import"}]},orgs:{addSecurityManagerTeam:["PUT /orgs/{org}/security-managers/teams/{team_slug}"],blockUser:["PUT /orgs/{org}/blocks/{username}"],cancelInvitation:["DELETE /orgs/{org}/invitations/{invitation_id}"],checkBlockedUser:["GET /orgs/{org}/blocks/{username}"],checkMembershipForUser:["GET /orgs/{org}/members/{username}"],checkPublicMembershipForUser:["GET /orgs/{org}/public_members/{username}"],convertMemberToOutsideCollaborator:["PUT /orgs/{org}/outside_collaborators/{username}"],createInvitation:["POST /orgs/{org}/invitations"],createOrUpdateCustomProperties:["PATCH /orgs/{org}/properties/schema"],createOrUpdateCustomPropertiesValuesForRepos:["PATCH /orgs/{org}/properties/values"],createOrUpdateCustomProperty:["PUT /orgs/{org}/properties/schema/{custom_property_name}"],createWebhook:["POST /orgs/{org}/hooks"],delete:["DELETE /orgs/{org}"],deleteWebhook:["DELETE /orgs/{org}/hooks/{hook_id}"],enableOrDisableSecurityProductOnAllOrgRepos:["POST /orgs/{org}/{security_product}/{enablement}"],get:["GET /orgs/{org}"],getAllCustomProperties:["GET /orgs/{org}/properties/schema"],getCustomProperty:["GET /orgs/{org}/properties/schema/{custom_property_name}"],getMembershipForAuthenticatedUser:["GET /user/memberships/orgs/{org}"],getMembershipForUser:["GET /orgs/{org}/memberships/{username}"],getWebhook:["GET /orgs/{org}/hooks/{hook_id}"],getWebhookConfigForOrg:["GET /orgs/{org}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],list:["GET /organizations"],listAppInstallations:["GET /orgs/{org}/installations"],listBlockedUsers:["GET /orgs/{org}/blocks"],listCustomPropertiesValuesForRepos:["GET /orgs/{org}/properties/values"],listFailedInvitations:["GET /orgs/{org}/failed_invitations"],listForAuthenticatedUser:["GET /user/orgs"],listForUser:["GET /users/{username}/orgs"],listInvitationTeams:["GET /orgs/{org}/invitations/{invitation_id}/teams"],listMembers:["GET /orgs/{org}/members"],listMembershipsForAuthenticatedUser:["GET /user/memberships/orgs"],listOutsideCollaborators:["GET /orgs/{org}/outside_collaborators"],listPatGrantRepositories:["GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"],listPatGrantRequestRepositories:["GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"],listPatGrantRequests:["GET /orgs/{org}/personal-access-token-requests"],listPatGrants:["GET /orgs/{org}/personal-access-tokens"],listPendingInvitations:["GET /orgs/{org}/invitations"],listPublicMembers:["GET /orgs/{org}/public_members"],listSecurityManagerTeams:["GET /orgs/{org}/security-managers"],listWebhookDeliveries:["GET /orgs/{org}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /orgs/{org}/hooks"],pingWebhook:["POST /orgs/{org}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeCustomProperty:["DELETE /orgs/{org}/properties/schema/{custom_property_name}"],removeMember:["DELETE /orgs/{org}/members/{username}"],removeMembershipForUser:["DELETE /orgs/{org}/memberships/{username}"],removeOutsideCollaborator:["DELETE /orgs/{org}/outside_collaborators/{username}"],removePublicMembershipForAuthenticatedUser:["DELETE /orgs/{org}/public_members/{username}"],removeSecurityManagerTeam:["DELETE /orgs/{org}/security-managers/teams/{team_slug}"],reviewPatGrantRequest:["POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"],reviewPatGrantRequestsInBulk:["POST /orgs/{org}/personal-access-token-requests"],setMembershipForUser:["PUT /orgs/{org}/memberships/{username}"],setPublicMembershipForAuthenticatedUser:["PUT /orgs/{org}/public_members/{username}"],unblockUser:["DELETE /orgs/{org}/blocks/{username}"],update:["PATCH /orgs/{org}"],updateMembershipForAuthenticatedUser:["PATCH /user/memberships/orgs/{org}"],updatePatAccess:["POST /orgs/{org}/personal-access-tokens/{pat_id}"],updatePatAccesses:["POST /orgs/{org}/personal-access-tokens"],updateWebhook:["PATCH /orgs/{org}/hooks/{hook_id}"],updateWebhookConfigForOrg:["PATCH /orgs/{org}/hooks/{hook_id}/config"]},packages:{deletePackageForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}"],deletePackageForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],deletePackageForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}"],deletePackageVersionForAuthenticatedUser:["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForOrg:["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],deletePackageVersionForUser:["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getAllPackageVersionsForAPackageOwnedByAnOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByOrg"]}],getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions",{},{renamed:["packages","getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]}],getAllPackageVersionsForPackageOwnedByAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByOrg:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],getAllPackageVersionsForPackageOwnedByUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions"],getPackageForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}"],getPackageForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}"],getPackageForUser:["GET /users/{username}/packages/{package_type}/{package_name}"],getPackageVersionForAuthenticatedUser:["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForOrganization:["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],getPackageVersionForUser:["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],listDockerMigrationConflictingPackagesForAuthenticatedUser:["GET /user/docker/conflicts"],listDockerMigrationConflictingPackagesForOrganization:["GET /orgs/{org}/docker/conflicts"],listDockerMigrationConflictingPackagesForUser:["GET /users/{username}/docker/conflicts"],listPackagesForAuthenticatedUser:["GET /user/packages"],listPackagesForOrganization:["GET /orgs/{org}/packages"],listPackagesForUser:["GET /users/{username}/packages"],restorePackageForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageForUser:["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],restorePackageVersionForAuthenticatedUser:["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForOrg:["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],restorePackageVersionForUser:["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]},projects:{addCollaborator:["PUT /projects/{project_id}/collaborators/{username}"],createCard:["POST /projects/columns/{column_id}/cards"],createColumn:["POST /projects/{project_id}/columns"],createForAuthenticatedUser:["POST /user/projects"],createForOrg:["POST /orgs/{org}/projects"],createForRepo:["POST /repos/{owner}/{repo}/projects"],delete:["DELETE /projects/{project_id}"],deleteCard:["DELETE /projects/columns/cards/{card_id}"],deleteColumn:["DELETE /projects/columns/{column_id}"],get:["GET /projects/{project_id}"],getCard:["GET /projects/columns/cards/{card_id}"],getColumn:["GET /projects/columns/{column_id}"],getPermissionForUser:["GET /projects/{project_id}/collaborators/{username}/permission"],listCards:["GET /projects/columns/{column_id}/cards"],listCollaborators:["GET /projects/{project_id}/collaborators"],listColumns:["GET /projects/{project_id}/columns"],listForOrg:["GET /orgs/{org}/projects"],listForRepo:["GET /repos/{owner}/{repo}/projects"],listForUser:["GET /users/{username}/projects"],moveCard:["POST /projects/columns/cards/{card_id}/moves"],moveColumn:["POST /projects/columns/{column_id}/moves"],removeCollaborator:["DELETE /projects/{project_id}/collaborators/{username}"],update:["PATCH /projects/{project_id}"],updateCard:["PATCH /projects/columns/cards/{card_id}"],updateColumn:["PATCH /projects/columns/{column_id}"]},pulls:{checkIfMerged:["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],create:["POST /repos/{owner}/{repo}/pulls"],createReplyForReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],createReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],createReviewComment:["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],deletePendingReview:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],deleteReviewComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],dismissReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],get:["GET /repos/{owner}/{repo}/pulls/{pull_number}"],getReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],getReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],list:["GET /repos/{owner}/{repo}/pulls"],listCommentsForReview:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],listCommits:["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],listFiles:["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],listRequestedReviewers:["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],listReviewComments:["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],listReviewCommentsForRepo:["GET /repos/{owner}/{repo}/pulls/comments"],listReviews:["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],merge:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],removeRequestedReviewers:["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],requestReviewers:["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],submitReview:["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],update:["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],updateBranch:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],updateReview:["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],updateReviewComment:["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]},rateLimit:{get:["GET /rate_limit"]},reactions:{createForCommitComment:["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],createForIssue:["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],createForIssueComment:["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],createForPullRequestReviewComment:["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],createForRelease:["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],createForTeamDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],createForTeamDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],deleteForCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],deleteForIssue:["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],deleteForIssueComment:["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],deleteForPullRequestComment:["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],deleteForRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],deleteForTeamDiscussion:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],deleteForTeamDiscussionComment:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],listForCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],listForIssue:["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],listForIssueComment:["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],listForPullRequestReviewComment:["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],listForRelease:["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],listForTeamDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],listForTeamDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]},repos:{acceptInvitation:["PATCH /user/repository_invitations/{invitation_id}",{},{renamed:["repos","acceptInvitationForAuthenticatedUser"]}],acceptInvitationForAuthenticatedUser:["PATCH /user/repository_invitations/{invitation_id}"],addAppAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],addCollaborator:["PUT /repos/{owner}/{repo}/collaborators/{username}"],addStatusCheckContexts:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],addTeamAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],addUserAccessRestrictions:["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],checkAutomatedSecurityFixes:["GET /repos/{owner}/{repo}/automated-security-fixes"],checkCollaborator:["GET /repos/{owner}/{repo}/collaborators/{username}"],checkVulnerabilityAlerts:["GET /repos/{owner}/{repo}/vulnerability-alerts"],codeownersErrors:["GET /repos/{owner}/{repo}/codeowners/errors"],compareCommits:["GET /repos/{owner}/{repo}/compare/{base}...{head}"],compareCommitsWithBasehead:["GET /repos/{owner}/{repo}/compare/{basehead}"],createAutolink:["POST /repos/{owner}/{repo}/autolinks"],createCommitComment:["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],createCommitSignatureProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],createCommitStatus:["POST /repos/{owner}/{repo}/statuses/{sha}"],createDeployKey:["POST /repos/{owner}/{repo}/keys"],createDeployment:["POST /repos/{owner}/{repo}/deployments"],createDeploymentBranchPolicy:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],createDeploymentProtectionRule:["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],createDeploymentStatus:["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],createDispatchEvent:["POST /repos/{owner}/{repo}/dispatches"],createForAuthenticatedUser:["POST /user/repos"],createFork:["POST /repos/{owner}/{repo}/forks"],createInOrg:["POST /orgs/{org}/repos"],createOrUpdateEnvironment:["PUT /repos/{owner}/{repo}/environments/{environment_name}"],createOrUpdateFileContents:["PUT /repos/{owner}/{repo}/contents/{path}"],createOrgRuleset:["POST /orgs/{org}/rulesets"],createPagesDeployment:["POST /repos/{owner}/{repo}/pages/deployment"],createPagesSite:["POST /repos/{owner}/{repo}/pages"],createRelease:["POST /repos/{owner}/{repo}/releases"],createRepoRuleset:["POST /repos/{owner}/{repo}/rulesets"],createTagProtection:["POST /repos/{owner}/{repo}/tags/protection"],createUsingTemplate:["POST /repos/{template_owner}/{template_repo}/generate"],createWebhook:["POST /repos/{owner}/{repo}/hooks"],declineInvitation:["DELETE /user/repository_invitations/{invitation_id}",{},{renamed:["repos","declineInvitationForAuthenticatedUser"]}],declineInvitationForAuthenticatedUser:["DELETE /user/repository_invitations/{invitation_id}"],delete:["DELETE /repos/{owner}/{repo}"],deleteAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],deleteAdminBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],deleteAnEnvironment:["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],deleteAutolink:["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],deleteBranchProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],deleteCommitComment:["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],deleteCommitSignatureProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],deleteDeployKey:["DELETE /repos/{owner}/{repo}/keys/{key_id}"],deleteDeployment:["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],deleteDeploymentBranchPolicy:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],deleteFile:["DELETE /repos/{owner}/{repo}/contents/{path}"],deleteInvitation:["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],deleteOrgRuleset:["DELETE /orgs/{org}/rulesets/{ruleset_id}"],deletePagesSite:["DELETE /repos/{owner}/{repo}/pages"],deletePullRequestReviewProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],deleteRelease:["DELETE /repos/{owner}/{repo}/releases/{release_id}"],deleteReleaseAsset:["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],deleteRepoRuleset:["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],deleteTagProtection:["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],deleteWebhook:["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],disableAutomatedSecurityFixes:["DELETE /repos/{owner}/{repo}/automated-security-fixes"],disableDeploymentProtectionRule:["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],disablePrivateVulnerabilityReporting:["DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"],disableVulnerabilityAlerts:["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],downloadArchive:["GET /repos/{owner}/{repo}/zipball/{ref}",{},{renamed:["repos","downloadZipballArchive"]}],downloadTarballArchive:["GET /repos/{owner}/{repo}/tarball/{ref}"],downloadZipballArchive:["GET /repos/{owner}/{repo}/zipball/{ref}"],enableAutomatedSecurityFixes:["PUT /repos/{owner}/{repo}/automated-security-fixes"],enablePrivateVulnerabilityReporting:["PUT /repos/{owner}/{repo}/private-vulnerability-reporting"],enableVulnerabilityAlerts:["PUT /repos/{owner}/{repo}/vulnerability-alerts"],generateReleaseNotes:["POST /repos/{owner}/{repo}/releases/generate-notes"],get:["GET /repos/{owner}/{repo}"],getAccessRestrictions:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],getAdminBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],getAllDeploymentProtectionRules:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"],getAllEnvironments:["GET /repos/{owner}/{repo}/environments"],getAllStatusCheckContexts:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],getAllTopics:["GET /repos/{owner}/{repo}/topics"],getAppsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],getAutolink:["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],getBranch:["GET /repos/{owner}/{repo}/branches/{branch}"],getBranchProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection"],getBranchRules:["GET /repos/{owner}/{repo}/rules/branches/{branch}"],getClones:["GET /repos/{owner}/{repo}/traffic/clones"],getCodeFrequencyStats:["GET /repos/{owner}/{repo}/stats/code_frequency"],getCollaboratorPermissionLevel:["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],getCombinedStatusForRef:["GET /repos/{owner}/{repo}/commits/{ref}/status"],getCommit:["GET /repos/{owner}/{repo}/commits/{ref}"],getCommitActivityStats:["GET /repos/{owner}/{repo}/stats/commit_activity"],getCommitComment:["GET /repos/{owner}/{repo}/comments/{comment_id}"],getCommitSignatureProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],getCommunityProfileMetrics:["GET /repos/{owner}/{repo}/community/profile"],getContent:["GET /repos/{owner}/{repo}/contents/{path}"],getContributorsStats:["GET /repos/{owner}/{repo}/stats/contributors"],getCustomDeploymentProtectionRule:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"],getCustomPropertiesValues:["GET /repos/{owner}/{repo}/properties/values"],getDeployKey:["GET /repos/{owner}/{repo}/keys/{key_id}"],getDeployment:["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],getDeploymentBranchPolicy:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],getDeploymentStatus:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],getEnvironment:["GET /repos/{owner}/{repo}/environments/{environment_name}"],getLatestPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/latest"],getLatestRelease:["GET /repos/{owner}/{repo}/releases/latest"],getOrgRuleSuite:["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],getOrgRuleSuites:["GET /orgs/{org}/rulesets/rule-suites"],getOrgRuleset:["GET /orgs/{org}/rulesets/{ruleset_id}"],getOrgRulesets:["GET /orgs/{org}/rulesets"],getPages:["GET /repos/{owner}/{repo}/pages"],getPagesBuild:["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],getPagesHealthCheck:["GET /repos/{owner}/{repo}/pages/health"],getParticipationStats:["GET /repos/{owner}/{repo}/stats/participation"],getPullRequestReviewProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],getPunchCardStats:["GET /repos/{owner}/{repo}/stats/punch_card"],getReadme:["GET /repos/{owner}/{repo}/readme"],getReadmeInDirectory:["GET /repos/{owner}/{repo}/readme/{dir}"],getRelease:["GET /repos/{owner}/{repo}/releases/{release_id}"],getReleaseAsset:["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],getReleaseByTag:["GET /repos/{owner}/{repo}/releases/tags/{tag}"],getRepoRuleSuite:["GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"],getRepoRuleSuites:["GET /repos/{owner}/{repo}/rulesets/rule-suites"],getRepoRuleset:["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],getRepoRulesets:["GET /repos/{owner}/{repo}/rulesets"],getStatusChecksProtection:["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],getTeamsWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],getTopPaths:["GET /repos/{owner}/{repo}/traffic/popular/paths"],getTopReferrers:["GET /repos/{owner}/{repo}/traffic/popular/referrers"],getUsersWithAccessToProtectedBranch:["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],getViews:["GET /repos/{owner}/{repo}/traffic/views"],getWebhook:["GET /repos/{owner}/{repo}/hooks/{hook_id}"],getWebhookConfigForRepo:["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],getWebhookDelivery:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],listActivities:["GET /repos/{owner}/{repo}/activity"],listAutolinks:["GET /repos/{owner}/{repo}/autolinks"],listBranches:["GET /repos/{owner}/{repo}/branches"],listBranchesForHeadCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],listCollaborators:["GET /repos/{owner}/{repo}/collaborators"],listCommentsForCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],listCommitCommentsForRepo:["GET /repos/{owner}/{repo}/comments"],listCommitStatusesForRef:["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],listCommits:["GET /repos/{owner}/{repo}/commits"],listContributors:["GET /repos/{owner}/{repo}/contributors"],listCustomDeploymentRuleIntegrations:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"],listDeployKeys:["GET /repos/{owner}/{repo}/keys"],listDeploymentBranchPolicies:["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"],listDeploymentStatuses:["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],listDeployments:["GET /repos/{owner}/{repo}/deployments"],listForAuthenticatedUser:["GET /user/repos"],listForOrg:["GET /orgs/{org}/repos"],listForUser:["GET /users/{username}/repos"],listForks:["GET /repos/{owner}/{repo}/forks"],listInvitations:["GET /repos/{owner}/{repo}/invitations"],listInvitationsForAuthenticatedUser:["GET /user/repository_invitations"],listLanguages:["GET /repos/{owner}/{repo}/languages"],listPagesBuilds:["GET /repos/{owner}/{repo}/pages/builds"],listPublic:["GET /repositories"],listPullRequestsAssociatedWithCommit:["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],listReleaseAssets:["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],listReleases:["GET /repos/{owner}/{repo}/releases"],listTagProtection:["GET /repos/{owner}/{repo}/tags/protection"],listTags:["GET /repos/{owner}/{repo}/tags"],listTeams:["GET /repos/{owner}/{repo}/teams"],listWebhookDeliveries:["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],listWebhooks:["GET /repos/{owner}/{repo}/hooks"],merge:["POST /repos/{owner}/{repo}/merges"],mergeUpstream:["POST /repos/{owner}/{repo}/merge-upstream"],pingWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],redeliverWebhookDelivery:["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],removeAppAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],removeCollaborator:["DELETE /repos/{owner}/{repo}/collaborators/{username}"],removeStatusCheckContexts:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],removeStatusCheckProtection:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],removeTeamAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],removeUserAccessRestrictions:["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],renameBranch:["POST /repos/{owner}/{repo}/branches/{branch}/rename"],replaceAllTopics:["PUT /repos/{owner}/{repo}/topics"],requestPagesBuild:["POST /repos/{owner}/{repo}/pages/builds"],setAdminBranchProtection:["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],setAppAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",{},{mapToData:"apps"}],setStatusCheckContexts:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",{},{mapToData:"contexts"}],setTeamAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",{},{mapToData:"teams"}],setUserAccessRestrictions:["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",{},{mapToData:"users"}],testPushWebhook:["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],transfer:["POST /repos/{owner}/{repo}/transfer"],update:["PATCH /repos/{owner}/{repo}"],updateBranchProtection:["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],updateCommitComment:["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],updateDeploymentBranchPolicy:["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"],updateInformationAboutPagesSite:["PUT /repos/{owner}/{repo}/pages"],updateInvitation:["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],updateOrgRuleset:["PUT /orgs/{org}/rulesets/{ruleset_id}"],updatePullRequestReviewProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],updateRelease:["PATCH /repos/{owner}/{repo}/releases/{release_id}"],updateReleaseAsset:["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],updateRepoRuleset:["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],updateStatusCheckPotection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",{},{renamed:["repos","updateStatusCheckProtection"]}],updateStatusCheckProtection:["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],updateWebhook:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],updateWebhookConfigForRepo:["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],uploadReleaseAsset:["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",{baseUrl:"https://uploads.github.com"}]},search:{code:["GET /search/code"],commits:["GET /search/commits"],issuesAndPullRequests:["GET /search/issues"],labels:["GET /search/labels"],repos:["GET /search/repositories"],topics:["GET /search/topics"],users:["GET /search/users"]},secretScanning:{getAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],listAlertsForEnterprise:["GET /enterprises/{enterprise}/secret-scanning/alerts"],listAlertsForOrg:["GET /orgs/{org}/secret-scanning/alerts"],listAlertsForRepo:["GET /repos/{owner}/{repo}/secret-scanning/alerts"],listLocationsForAlert:["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],updateAlert:["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]},securityAdvisories:{createPrivateVulnerabilityReport:["POST /repos/{owner}/{repo}/security-advisories/reports"],createRepositoryAdvisory:["POST /repos/{owner}/{repo}/security-advisories"],createRepositoryAdvisoryCveRequest:["POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"],getGlobalAdvisory:["GET /advisories/{ghsa_id}"],getRepositoryAdvisory:["GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"],listGlobalAdvisories:["GET /advisories"],listOrgRepositoryAdvisories:["GET /orgs/{org}/security-advisories"],listRepositoryAdvisories:["GET /repos/{owner}/{repo}/security-advisories"],updateRepositoryAdvisory:["PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"]},teams:{addOrUpdateMembershipForUserInOrg:["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],addOrUpdateProjectPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],addOrUpdateRepoPermissionsInOrg:["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],checkPermissionsForProjectInOrg:["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],checkPermissionsForRepoInOrg:["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],create:["POST /orgs/{org}/teams"],createDiscussionCommentInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],createDiscussionInOrg:["POST /orgs/{org}/teams/{team_slug}/discussions"],deleteDiscussionCommentInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],deleteDiscussionInOrg:["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],deleteInOrg:["DELETE /orgs/{org}/teams/{team_slug}"],getByName:["GET /orgs/{org}/teams/{team_slug}"],getDiscussionCommentInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],getDiscussionInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],getMembershipForUserInOrg:["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],list:["GET /orgs/{org}/teams"],listChildInOrg:["GET /orgs/{org}/teams/{team_slug}/teams"],listDiscussionCommentsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],listDiscussionsInOrg:["GET /orgs/{org}/teams/{team_slug}/discussions"],listForAuthenticatedUser:["GET /user/teams"],listMembersInOrg:["GET /orgs/{org}/teams/{team_slug}/members"],listPendingInvitationsInOrg:["GET /orgs/{org}/teams/{team_slug}/invitations"],listProjectsInOrg:["GET /orgs/{org}/teams/{team_slug}/projects"],listReposInOrg:["GET /orgs/{org}/teams/{team_slug}/repos"],removeMembershipForUserInOrg:["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],removeProjectInOrg:["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],removeRepoInOrg:["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],updateDiscussionCommentInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],updateDiscussionInOrg:["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],updateInOrg:["PATCH /orgs/{org}/teams/{team_slug}"]},users:{addEmailForAuthenticated:["POST /user/emails",{},{renamed:["users","addEmailForAuthenticatedUser"]}],addEmailForAuthenticatedUser:["POST /user/emails"],addSocialAccountForAuthenticatedUser:["POST /user/social_accounts"],block:["PUT /user/blocks/{username}"],checkBlocked:["GET /user/blocks/{username}"],checkFollowingForUser:["GET /users/{username}/following/{target_user}"],checkPersonIsFollowedByAuthenticated:["GET /user/following/{username}"],createGpgKeyForAuthenticated:["POST /user/gpg_keys",{},{renamed:["users","createGpgKeyForAuthenticatedUser"]}],createGpgKeyForAuthenticatedUser:["POST /user/gpg_keys"],createPublicSshKeyForAuthenticated:["POST /user/keys",{},{renamed:["users","createPublicSshKeyForAuthenticatedUser"]}],createPublicSshKeyForAuthenticatedUser:["POST /user/keys"],createSshSigningKeyForAuthenticatedUser:["POST /user/ssh_signing_keys"],deleteEmailForAuthenticated:["DELETE /user/emails",{},{renamed:["users","deleteEmailForAuthenticatedUser"]}],deleteEmailForAuthenticatedUser:["DELETE /user/emails"],deleteGpgKeyForAuthenticated:["DELETE /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","deleteGpgKeyForAuthenticatedUser"]}],deleteGpgKeyForAuthenticatedUser:["DELETE /user/gpg_keys/{gpg_key_id}"],deletePublicSshKeyForAuthenticated:["DELETE /user/keys/{key_id}",{},{renamed:["users","deletePublicSshKeyForAuthenticatedUser"]}],deletePublicSshKeyForAuthenticatedUser:["DELETE /user/keys/{key_id}"],deleteSocialAccountForAuthenticatedUser:["DELETE /user/social_accounts"],deleteSshSigningKeyForAuthenticatedUser:["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"],follow:["PUT /user/following/{username}"],getAuthenticated:["GET /user"],getByUsername:["GET /users/{username}"],getContextForUser:["GET /users/{username}/hovercard"],getGpgKeyForAuthenticated:["GET /user/gpg_keys/{gpg_key_id}",{},{renamed:["users","getGpgKeyForAuthenticatedUser"]}],getGpgKeyForAuthenticatedUser:["GET /user/gpg_keys/{gpg_key_id}"],getPublicSshKeyForAuthenticated:["GET /user/keys/{key_id}",{},{renamed:["users","getPublicSshKeyForAuthenticatedUser"]}],getPublicSshKeyForAuthenticatedUser:["GET /user/keys/{key_id}"],getSshSigningKeyForAuthenticatedUser:["GET /user/ssh_signing_keys/{ssh_signing_key_id}"],list:["GET /users"],listBlockedByAuthenticated:["GET /user/blocks",{},{renamed:["users","listBlockedByAuthenticatedUser"]}],listBlockedByAuthenticatedUser:["GET /user/blocks"],listEmailsForAuthenticated:["GET /user/emails",{},{renamed:["users","listEmailsForAuthenticatedUser"]}],listEmailsForAuthenticatedUser:["GET /user/emails"],listFollowedByAuthenticated:["GET /user/following",{},{renamed:["users","listFollowedByAuthenticatedUser"]}],listFollowedByAuthenticatedUser:["GET /user/following"],listFollowersForAuthenticatedUser:["GET /user/followers"],listFollowersForUser:["GET /users/{username}/followers"],listFollowingForUser:["GET /users/{username}/following"],listGpgKeysForAuthenticated:["GET /user/gpg_keys",{},{renamed:["users","listGpgKeysForAuthenticatedUser"]}],listGpgKeysForAuthenticatedUser:["GET /user/gpg_keys"],listGpgKeysForUser:["GET /users/{username}/gpg_keys"],listPublicEmailsForAuthenticated:["GET /user/public_emails",{},{renamed:["users","listPublicEmailsForAuthenticatedUser"]}],listPublicEmailsForAuthenticatedUser:["GET /user/public_emails"],listPublicKeysForUser:["GET /users/{username}/keys"],listPublicSshKeysForAuthenticated:["GET /user/keys",{},{renamed:["users","listPublicSshKeysForAuthenticatedUser"]}],listPublicSshKeysForAuthenticatedUser:["GET /user/keys"],listSocialAccountsForAuthenticatedUser:["GET /user/social_accounts"],listSocialAccountsForUser:["GET /users/{username}/social_accounts"],listSshSigningKeysForAuthenticatedUser:["GET /user/ssh_signing_keys"],listSshSigningKeysForUser:["GET /users/{username}/ssh_signing_keys"],setPrimaryEmailVisibilityForAuthenticated:["PATCH /user/email/visibility",{},{renamed:["users","setPrimaryEmailVisibilityForAuthenticatedUser"]}],setPrimaryEmailVisibilityForAuthenticatedUser:["PATCH /user/email/visibility"],unblock:["DELETE /user/blocks/{username}"],unfollow:["DELETE /user/following/{username}"],updateAuthenticated:["PATCH /user"]}};var a=i;var g=new Map;for(const[A,e]of Object.entries(a)){for(const[t,r]of Object.entries(e)){const[e,s,o]=r;const[n,i]=e.split(/ /);const a=Object.assign({method:n,url:i},s);if(!g.has(A)){g.set(A,new Map)}g.get(A).set(t,{scope:A,methodName:t,endpointDefaults:a,decorations:o})}}var c={has({scope:A},e){return g.get(A).has(e)},getOwnPropertyDescriptor(A,e){return{value:this.get(A,e),configurable:true,writable:true,enumerable:true}},defineProperty(A,e,t){Object.defineProperty(A.cache,e,t);return true},deleteProperty(A,e){delete A.cache[e];return true},ownKeys({scope:A}){return[...g.get(A).keys()]},set(A,e,t){return A.cache[e]=t},get({octokit:A,scope:e,cache:t},r){if(t[r]){return t[r]}const s=g.get(e).get(r);if(!s){return void 0}const{endpointDefaults:o,decorations:n}=s;if(n){t[r]=decorate(A,e,r,o,n)}else{t[r]=A.request.defaults(o)}return t[r]}};function endpointsToMethods(A){const e={};for(const t of g.keys()){e[t]=new Proxy({octokit:A,scope:t,cache:{}},c)}return e}function decorate(A,e,t,r,s){const o=A.request.defaults(r);function withDecorations(...r){let n=o.endpoint.merge(...r);if(s.mapToData){n=Object.assign({},n,{data:n[s.mapToData],[s.mapToData]:void 0});return o(n)}if(s.renamed){const[r,o]=s.renamed;A.log.warn(`octokit.${e}.${t}() has been renamed to octokit.${r}.${o}()`)}if(s.deprecated){A.log.warn(s.deprecated)}if(s.renamedParameters){const n=o.endpoint.merge(...r);for(const[r,o]of Object.entries(s.renamedParameters)){if(r in n){A.log.warn(`"${r}" parameter is deprecated for "octokit.${e}.${t}()". Use "${o}" instead`);if(!(o in n)){n[o]=n[r]}delete n[r]}}return o(n)}return o(...r)}return Object.assign(withDecorations,o)}function restEndpointMethods(A){const e=endpointsToMethods(A);return{rest:e}}restEndpointMethods.VERSION=n;function legacyRestEndpointMethods(A){const e=endpointsToMethods(A);return{...e,rest:e}}legacyRestEndpointMethods.VERSION=n;0&&0},8142:(A,e,t)=>{"use strict";var r=Object.create;var s=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var i=Object.getPrototypeOf;var a=Object.prototype.hasOwnProperty;var __export=(A,e)=>{for(var t in e)s(A,t,{get:e[t],enumerable:true})};var __copyProps=(A,e,t,r)=>{if(e&&typeof e==="object"||typeof e==="function"){for(let i of n(e))if(!a.call(A,i)&&i!==t)s(A,i,{get:()=>e[i],enumerable:!(r=o(e,i))||r.enumerable})}return A};var __toESM=(A,e,t)=>(t=A!=null?r(i(A)):{},__copyProps(e||!A||!A.__esModule?s(t,"default",{value:A,enumerable:true}):t,A));var __toCommonJS=A=>__copyProps(s({},"__esModule",{value:true}),A);var g={};__export(g,{RequestError:()=>B});A.exports=__toCommonJS(g);var c=t(8910);var E=__toESM(t(6280));var Q=(0,E.default)((A=>console.warn(A)));var C=(0,E.default)((A=>console.warn(A)));var B=class extends Error{constructor(A,e,t){super(A);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}this.name="HttpError";this.status=e;let r;if("headers"in t&&typeof t.headers!=="undefined"){r=t.headers}if("response"in t){this.response=t.response;r=t.response.headers}const s=Object.assign({},t.request);if(t.request.headers.authorization){s.headers=Object.assign({},t.request.headers,{authorization:t.request.headers.authorization.replace(/ .*$/," [REDACTED]")})}s.url=s.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]");this.request=s;Object.defineProperty(this,"code",{get(){Q(new c.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));return e}});Object.defineProperty(this,"headers",{get(){C(new c.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."));return r||{}}})}};0&&0},5151:(A,e,t)=>{"use strict";var r=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var __export=(A,e)=>{for(var t in e)r(A,t,{get:e[t],enumerable:true})};var __copyProps=(A,e,t,i)=>{if(e&&typeof e==="object"||typeof e==="function"){for(let a of o(e))if(!n.call(A,a)&&a!==t)r(A,a,{get:()=>e[a],enumerable:!(i=s(e,a))||i.enumerable})}return A};var __toCommonJS=A=>__copyProps(r({},"__esModule",{value:true}),A);var i={};__export(i,{request:()=>Q});A.exports=__toCommonJS(i);var a=t(8389);var g=t(5960);var c="8.1.6";function isPlainObject(A){if(typeof A!=="object"||A===null)return false;if(Object.prototype.toString.call(A)!=="[object Object]")return false;const e=Object.getPrototypeOf(A);if(e===null)return true;const t=Object.prototype.hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t==="function"&&t instanceof t&&Function.prototype.call(t)===Function.prototype.call(A)}var E=t(8142);function getBufferResponse(A){return A.arrayBuffer()}function fetchWrapper(A){var e,t,r;const s=A.request&&A.request.log?A.request.log:console;const o=((e=A.request)==null?void 0:e.parseSuccessResponseBody)!==false;if(isPlainObject(A.body)||Array.isArray(A.body)){A.body=JSON.stringify(A.body)}let n={};let i;let a;let{fetch:g}=globalThis;if((t=A.request)==null?void 0:t.fetch){g=A.request.fetch}if(!g){throw new Error("fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing")}return g(A.url,{method:A.method,body:A.body,headers:A.headers,signal:(r=A.request)==null?void 0:r.signal,...A.body&&{duplex:"half"}}).then((async e=>{a=e.url;i=e.status;for(const A of e.headers){n[A[0]]=A[1]}if("deprecation"in n){const e=n.link&&n.link.match(/<([^>]+)>; rel="deprecation"/);const t=e&&e.pop();s.warn(`[@octokit/request] "${A.method} ${A.url}" is deprecated. It is scheduled to be removed on ${n.sunset}${t?`. See ${t}`:""}`)}if(i===204||i===205){return}if(A.method==="HEAD"){if(i<400){return}throw new E.RequestError(e.statusText,i,{response:{url:a,status:i,headers:n,data:void 0},request:A})}if(i===304){throw new E.RequestError("Not modified",i,{response:{url:a,status:i,headers:n,data:await getResponseData(e)},request:A})}if(i>=400){const t=await getResponseData(e);const r=new E.RequestError(toErrorMessage(t),i,{response:{url:a,status:i,headers:n,data:t},request:A});throw r}return o?await getResponseData(e):e.body})).then((A=>({status:i,url:a,headers:n,data:A}))).catch((e=>{if(e instanceof E.RequestError)throw e;else if(e.name==="AbortError")throw e;let t=e.message;if(e.name==="TypeError"&&"cause"in e){if(e.cause instanceof Error){t=e.cause.message}else if(typeof e.cause==="string"){t=e.cause}}throw new E.RequestError(t,500,{request:A})}))}async function getResponseData(A){const e=A.headers.get("content-type");if(/application\/json/.test(e)){return A.json().catch((()=>A.text())).catch((()=>""))}if(!e||/^text\/|charset=utf-8$/.test(e)){return A.text()}return getBufferResponse(A)}function toErrorMessage(A){if(typeof A==="string")return A;if("message"in A){if(Array.isArray(A.errors)){return`${A.message}: ${A.errors.map(JSON.stringify).join(", ")}`}return A.message}return`Unknown error: ${JSON.stringify(A)}`}function withDefaults(A,e){const t=A.defaults(e);const newApi=function(A,e){const r=t.merge(A,e);if(!r.request||!r.request.hook){return fetchWrapper(t.parse(r))}const request2=(A,e)=>fetchWrapper(t.parse(t.merge(A,e)));Object.assign(request2,{endpoint:t,defaults:withDefaults.bind(null,t)});return r.request.hook(request2,r)};return Object.assign(newApi,{endpoint:t,defaults:withDefaults.bind(null,t)})}var Q=withDefaults(a.endpoint,{headers:{"user-agent":`octokit-request.js/${c} ${(0,g.getUserAgent)()}`}});0&&0},1821:(A,e,t)=>{var r=t(2964);var s=t(1894);var o=t(3941);var n=Function.bind;var i=n.bind(n);function bindApi(A,e,t){var r=i(o,null).apply(null,t?[e,t]:[e]);A.api={remove:r};A.remove=r;["before","error","after","wrap"].forEach((function(r){var o=t?[e,r,t]:[e,r];A[r]=A.api[r]=i(s,null).apply(null,o)}))}function HookSingular(){var A="h";var e={registry:{}};var t=r.bind(null,e,A);bindApi(t,e,A);return t}function HookCollection(){var A={registry:{}};var e=r.bind(null,A);bindApi(e,A);return e}var a=false;function Hook(){if(!a){console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4');a=true}return HookCollection()}Hook.Singular=HookSingular.bind();Hook.Collection=HookCollection.bind();A.exports=Hook;A.exports.Hook=Hook;A.exports.Singular=Hook.Singular;A.exports.Collection=Hook.Collection},1894:A=>{A.exports=addHook;function addHook(A,e,t,r){var s=r;if(!A.registry[t]){A.registry[t]=[]}if(e==="before"){r=function(A,e){return Promise.resolve().then(s.bind(null,e)).then(A.bind(null,e))}}if(e==="after"){r=function(A,e){var t;return Promise.resolve().then(A.bind(null,e)).then((function(A){t=A;return s(t,e)})).then((function(){return t}))}}if(e==="error"){r=function(A,e){return Promise.resolve().then(A.bind(null,e)).catch((function(A){return s(A,e)}))}}A.registry[t].push({hook:r,orig:s})}},2964:A=>{A.exports=register;function register(A,e,t,r){if(typeof t!=="function"){throw new Error("method for before hook must be a function")}if(!r){r={}}if(Array.isArray(e)){return e.reverse().reduce((function(e,t){return register.bind(null,A,t,e,r)}),t)()}return Promise.resolve().then((function(){if(!A.registry[e]){return t(r)}return A.registry[e].reduce((function(A,e){return e.hook.bind(null,A,r)}),t)()}))}},3941:A=>{A.exports=removeHook;function removeHook(A,e,t){if(!A.registry[e]){return}var r=A.registry[e].map((function(A){return A.orig})).indexOf(t);if(r===-1){return}A.registry[e].splice(r,1)}},8910:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});class Deprecation extends Error{constructor(A){super(A);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}this.name="Deprecation"}}e.Deprecation=Deprecation},6280:(A,e,t)=>{var r=t(9928);A.exports=r(once);A.exports.strict=r(onceStrict);once.proto=once((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:true});Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:true})}));function once(A){var f=function(){if(f.called)return f.value;f.called=true;return f.value=A.apply(this,arguments)};f.called=false;return f}function onceStrict(A){var f=function(){if(f.called)throw new Error(f.onceError);f.called=true;return f.value=A.apply(this,arguments)};var e=A.name||"Function wrapped with `once`";f.onceError=e+" shouldn't be called more than once";f.called=false;return f}},376:(A,e,t)=>{A.exports=t(8552)},8552:(A,e,t)=>{"use strict";var r=t(9278);var s=t(4756);var o=t(8611);var n=t(5692);var i=t(4434);var a=t(2613);var g=t(9023);e.httpOverHttp=httpOverHttp;e.httpsOverHttp=httpsOverHttp;e.httpOverHttps=httpOverHttps;e.httpsOverHttps=httpsOverHttps;function httpOverHttp(A){var e=new TunnelingAgent(A);e.request=o.request;return e}function httpsOverHttp(A){var e=new TunnelingAgent(A);e.request=o.request;e.createSocket=createSecureSocket;e.defaultPort=443;return e}function httpOverHttps(A){var e=new TunnelingAgent(A);e.request=n.request;return e}function httpsOverHttps(A){var e=new TunnelingAgent(A);e.request=n.request;e.createSocket=createSecureSocket;e.defaultPort=443;return e}function TunnelingAgent(A){var e=this;e.options=A||{};e.proxyOptions=e.options.proxy||{};e.maxSockets=e.options.maxSockets||o.Agent.defaultMaxSockets;e.requests=[];e.sockets=[];e.on("free",(function onFree(A,t,r,s){var o=toOptions(t,r,s);for(var n=0,i=e.requests.length;n=this.maxSockets){s.requests.push(o);return}s.createSocket(o,(function(e){e.on("free",onFree);e.on("close",onCloseOrRemove);e.on("agentRemove",onCloseOrRemove);A.onSocket(e);function onFree(){s.emit("free",e,o)}function onCloseOrRemove(A){s.removeSocket(e);e.removeListener("free",onFree);e.removeListener("close",onCloseOrRemove);e.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(A,e){var t=this;var r={};t.sockets.push(r);var s=mergeOptions({},t.proxyOptions,{method:"CONNECT",path:A.host+":"+A.port,agent:false,headers:{host:A.host+":"+A.port}});if(A.localAddress){s.localAddress=A.localAddress}if(s.proxyAuth){s.headers=s.headers||{};s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")}c("making CONNECT request");var o=t.request(s);o.useChunkedEncodingByDefault=false;o.once("response",onResponse);o.once("upgrade",onUpgrade);o.once("connect",onConnect);o.once("error",onError);o.end();function onResponse(A){A.upgrade=true}function onUpgrade(A,e,t){process.nextTick((function(){onConnect(A,e,t)}))}function onConnect(s,n,i){o.removeAllListeners();n.removeAllListeners();if(s.statusCode!==200){c("tunneling socket could not be established, statusCode=%d",s.statusCode);n.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+s.statusCode);a.code="ECONNRESET";A.request.emit("error",a);t.removeSocket(r);return}if(i.length>0){c("got illegal response body from proxy");n.destroy();var a=new Error("got illegal response body from proxy");a.code="ECONNRESET";A.request.emit("error",a);t.removeSocket(r);return}c("tunneling connection has established");t.sockets[t.sockets.indexOf(r)]=n;return e(n)}function onError(e){o.removeAllListeners();c("tunneling socket could not be established, cause=%s\n",e.message,e.stack);var s=new Error("tunneling socket could not be established, "+"cause="+e.message);s.code="ECONNRESET";A.request.emit("error",s);t.removeSocket(r)}};TunnelingAgent.prototype.removeSocket=function removeSocket(A){var e=this.sockets.indexOf(A);if(e===-1){return}this.sockets.splice(e,1);var t=this.requests.shift();if(t){this.createSocket(t,(function(A){t.request.onSocket(A)}))}};function createSecureSocket(A,e){var t=this;TunnelingAgent.prototype.createSocket.call(t,A,(function(r){var o=A.request.getHeader("host");var n=mergeOptions({},t.options,{socket:r,servername:o?o.replace(/:.*$/,""):A.host});var i=s.connect(0,n);t.sockets[t.sockets.indexOf(r)]=i;e(i)}))}function toOptions(A,e,t){if(typeof A==="string"){return{host:A,port:e,localAddress:t}}return A}function mergeOptions(A){for(var e=1,t=arguments.length;e{"use strict";const r=t(5752);const s=t(2514);const o=t(6600);const n=t(1013);const i=t(1514);const a=t(8902);const g=t(5647);const{InvalidArgumentError:c}=o;const E=t(628);const Q=t(7037);const C=t(7480);const B=t(7094);const l=t(2405);const I=t(4632);const h=t(3087);const u=t(7460);const{getGlobalDispatcher:d,setGlobalDispatcher:p}=t(0);const y=t(6265);const w=t(6836);const R=t(4288);let m;try{t(6982);m=true}catch{m=false}Object.assign(s.prototype,E);A.exports.Dispatcher=s;A.exports.Client=r;A.exports.Pool=n;A.exports.BalancedPool=i;A.exports.Agent=a;A.exports.ProxyAgent=h;A.exports.RetryHandler=u;A.exports.DecoratorHandler=y;A.exports.RedirectHandler=w;A.exports.createRedirectInterceptor=R;A.exports.buildConnector=Q;A.exports.errors=o;function makeDispatcher(A){return(e,t,r)=>{if(typeof t==="function"){r=t;t=null}if(!e||typeof e!=="string"&&typeof e!=="object"&&!(e instanceof URL)){throw new c("invalid url")}if(t!=null&&typeof t!=="object"){throw new c("invalid opts")}if(t&&t.path!=null){if(typeof t.path!=="string"){throw new c("invalid opts.path")}let A=t.path;if(!t.path.startsWith("/")){A=`/${A}`}e=new URL(g.parseOrigin(e).origin+A)}else{if(!t){t=typeof e==="object"?e:{}}e=g.parseURL(e)}const{agent:s,dispatcher:o=d()}=t;if(s){throw new c("unsupported opts.agent. Did you mean opts.client?")}return A.call(o,{...t,origin:e.origin,path:e.search?`${e.pathname}${e.search}`:e.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}A.exports.setGlobalDispatcher=p;A.exports.getGlobalDispatcher=d;if(g.nodeMajor>16||g.nodeMajor===16&&g.nodeMinor>=8){let e=null;A.exports.fetch=async function fetch(A){if(!e){e=t(1116).fetch}try{return await e(...arguments)}catch(A){if(typeof A==="object"){Error.captureStackTrace(A,this)}throw A}};A.exports.Headers=t(9486).Headers;A.exports.Response=t(5973).Response;A.exports.Request=t(1697).Request;A.exports.FormData=t(9512).FormData;A.exports.File=t(8516).File;A.exports.FileReader=t(1393).FileReader;const{setGlobalOrigin:r,getGlobalOrigin:s}=t(4629);A.exports.setGlobalOrigin=r;A.exports.getGlobalOrigin=s;const{CacheStorage:o}=t(1531);const{kConstruct:n}=t(4447);A.exports.caches=new o(n)}if(g.nodeMajor>=16){const{deleteCookie:e,getCookies:r,getSetCookies:s,setCookie:o}=t(3903);A.exports.deleteCookie=e;A.exports.getCookies=r;A.exports.getSetCookies=s;A.exports.setCookie=o;const{parseMIMEType:n,serializeAMimeType:i}=t(6277);A.exports.parseMIMEType=n;A.exports.serializeAMimeType=i}if(g.nodeMajor>=18&&m){const{WebSocket:e}=t(9336);A.exports.WebSocket=e}A.exports.request=makeDispatcher(E.request);A.exports.stream=makeDispatcher(E.stream);A.exports.pipeline=makeDispatcher(E.pipeline);A.exports.connect=makeDispatcher(E.connect);A.exports.upgrade=makeDispatcher(E.upgrade);A.exports.MockClient=C;A.exports.MockPool=l;A.exports.MockAgent=B;A.exports.mockErrors=I},8902:(A,e,t)=>{"use strict";const{InvalidArgumentError:r}=t(6600);const{kClients:s,kRunning:o,kClose:n,kDestroy:i,kDispatch:a,kInterceptors:g}=t(4914);const c=t(890);const E=t(1013);const Q=t(5752);const C=t(5647);const B=t(4288);const{WeakRef:l,FinalizationRegistry:I}=t(2825)();const h=Symbol("onConnect");const u=Symbol("onDisconnect");const d=Symbol("onConnectionError");const p=Symbol("maxRedirections");const y=Symbol("onDrain");const w=Symbol("factory");const R=Symbol("finalizer");const m=Symbol("options");function defaultFactory(A,e){return e&&e.connections===1?new Q(A,e):new E(A,e)}class Agent extends c{constructor({factory:A=defaultFactory,maxRedirections:e=0,connect:t,...o}={}){super();if(typeof A!=="function"){throw new r("factory must be a function.")}if(t!=null&&typeof t!=="function"&&typeof t!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(e)||e<0){throw new r("maxRedirections must be a positive number")}if(t&&typeof t!=="function"){t={...t}}this[g]=o.interceptors&&o.interceptors.Agent&&Array.isArray(o.interceptors.Agent)?o.interceptors.Agent:[B({maxRedirections:e})];this[m]={...C.deepClone(o),connect:t};this[m].interceptors=o.interceptors?{...o.interceptors}:undefined;this[p]=e;this[w]=A;this[s]=new Map;this[R]=new I((A=>{const e=this[s].get(A);if(e!==undefined&&e.deref()===undefined){this[s].delete(A)}}));const n=this;this[y]=(A,e)=>{n.emit("drain",A,[n,...e])};this[h]=(A,e)=>{n.emit("connect",A,[n,...e])};this[u]=(A,e,t)=>{n.emit("disconnect",A,[n,...e],t)};this[d]=(A,e,t)=>{n.emit("connectionError",A,[n,...e],t)}}get[o](){let A=0;for(const e of this[s].values()){const t=e.deref();if(t){A+=t[o]}}return A}[a](A,e){let t;if(A.origin&&(typeof A.origin==="string"||A.origin instanceof URL)){t=String(A.origin)}else{throw new r("opts.origin must be a non-empty string or URL.")}const o=this[s].get(t);let n=o?o.deref():null;if(!n){n=this[w](A.origin,this[m]).on("drain",this[y]).on("connect",this[h]).on("disconnect",this[u]).on("connectionError",this[d]);this[s].set(t,new l(n));this[R].register(n,t)}return n.dispatch(A,e)}async[n](){const A=[];for(const e of this[s].values()){const t=e.deref();if(t){A.push(t.close())}}await Promise.all(A)}async[i](A){const e=[];for(const t of this[s].values()){const r=t.deref();if(r){e.push(r.destroy(A))}}await Promise.all(e)}}A.exports=Agent},7771:(A,e,t)=>{const{addAbortListener:r}=t(5647);const{RequestAbortedError:s}=t(6600);const o=Symbol("kListener");const n=Symbol("kSignal");function abort(A){if(A.abort){A.abort()}else{A.onError(new s)}}function addSignal(A,e){A[n]=null;A[o]=null;if(!e){return}if(e.aborted){abort(A);return}A[n]=e;A[o]=()=>{abort(A)};r(A[n],A[o])}function removeSignal(A){if(!A[n]){return}if("removeEventListener"in A[n]){A[n].removeEventListener("abort",A[o])}else{A[n].removeListener("abort",A[o])}A[n]=null;A[o]=null}A.exports={addSignal:addSignal,removeSignal:removeSignal}},2631:(A,e,t)=>{"use strict";const{AsyncResource:r}=t(290);const{InvalidArgumentError:s,RequestAbortedError:o,SocketError:n}=t(6600);const i=t(5647);const{addSignal:a,removeSignal:g}=t(7771);class ConnectHandler extends r{constructor(A,e){if(!A||typeof A!=="object"){throw new s("invalid opts")}if(typeof e!=="function"){throw new s("invalid callback")}const{signal:t,opaque:r,responseHeaders:o}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=r||null;this.responseHeaders=o||null;this.callback=e;this.abort=null;a(this,t)}onConnect(A,e){if(!this.callback){throw new o}this.abort=A;this.context=e}onHeaders(){throw new n("bad connect",null)}onUpgrade(A,e,t){const{callback:r,opaque:s,context:o}=this;g(this);this.callback=null;let n=e;if(n!=null){n=this.responseHeaders==="raw"?i.parseRawHeaders(e):i.parseHeaders(e)}this.runInAsyncScope(r,null,null,{statusCode:A,headers:n,socket:t,opaque:s,context:o})}onError(A){const{callback:e,opaque:t}=this;g(this);if(e){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(e,null,A,{opaque:t})}))}}}function connect(A,e){if(e===undefined){return new Promise(((e,t)=>{connect.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{const t=new ConnectHandler(A,e);this.dispatch({...A,method:"CONNECT"},t)}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=connect},7659:(A,e,t)=>{"use strict";const{Readable:r,Duplex:s,PassThrough:o}=t(2203);const{InvalidArgumentError:n,InvalidReturnValueError:i,RequestAbortedError:a}=t(6600);const g=t(5647);const{AsyncResource:c}=t(290);const{addSignal:E,removeSignal:Q}=t(7771);const C=t(2613);const B=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[B]=null}_read(){const{[B]:A}=this;if(A){this[B]=null;A()}}_destroy(A,e){this._read();e(A)}}class PipelineResponse extends r{constructor(A){super({autoDestroy:true});this[B]=A}_read(){this[B]()}_destroy(A,e){if(!A&&!this._readableState.endEmitted){A=new a}e(A)}}class PipelineHandler extends c{constructor(A,e){if(!A||typeof A!=="object"){throw new n("invalid opts")}if(typeof e!=="function"){throw new n("invalid handler")}const{signal:t,method:r,opaque:o,onInfo:i,responseHeaders:c}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new n("invalid method")}if(i&&typeof i!=="function"){throw new n("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=o||null;this.responseHeaders=c||null;this.handler=e;this.abort=null;this.context=null;this.onInfo=i||null;this.req=(new PipelineRequest).on("error",g.nop);this.ret=new s({readableObjectMode:A.objectMode,autoDestroy:true,read:()=>{const{body:A}=this;if(A&&A.resume){A.resume()}},write:(A,e,t)=>{const{req:r}=this;if(r.push(A,e)||r._readableState.destroyed){t()}else{r[B]=t}},destroy:(A,e)=>{const{body:t,req:r,res:s,ret:o,abort:n}=this;if(!A&&!o._readableState.endEmitted){A=new a}if(n&&A){n()}g.destroy(t,A);g.destroy(r,A);g.destroy(s,A);Q(this);e(A)}}).on("prefinish",(()=>{const{req:A}=this;A.push(null)}));this.res=null;E(this,t)}onConnect(A,e){const{ret:t,res:r}=this;C(!r,"pipeline cannot be retried");if(t.destroyed){throw new a}this.abort=A;this.context=e}onHeaders(A,e,t){const{opaque:r,handler:s,context:o}=this;if(A<200){if(this.onInfo){const t=this.responseHeaders==="raw"?g.parseRawHeaders(e):g.parseHeaders(e);this.onInfo({statusCode:A,headers:t})}return}this.res=new PipelineResponse(t);let n;try{this.handler=null;const t=this.responseHeaders==="raw"?g.parseRawHeaders(e):g.parseHeaders(e);n=this.runInAsyncScope(s,null,{statusCode:A,headers:t,opaque:r,body:this.res,context:o})}catch(A){this.res.on("error",g.nop);throw A}if(!n||typeof n.on!=="function"){throw new i("expected Readable")}n.on("data",(A=>{const{ret:e,body:t}=this;if(!e.push(A)&&t.pause){t.pause()}})).on("error",(A=>{const{ret:e}=this;g.destroy(e,A)})).on("end",(()=>{const{ret:A}=this;A.push(null)})).on("close",(()=>{const{ret:A}=this;if(!A._readableState.ended){g.destroy(A,new a)}}));this.body=n}onData(A){const{res:e}=this;return e.push(A)}onComplete(A){const{res:e}=this;e.push(null)}onError(A){const{ret:e}=this;this.handler=null;g.destroy(e,A)}}function pipeline(A,e){try{const t=new PipelineHandler(A,e);this.dispatch({...A,body:t.req},t);return t.ret}catch(A){return(new o).destroy(A)}}A.exports=pipeline},1948:(A,e,t)=>{"use strict";const r=t(8058);const{InvalidArgumentError:s,RequestAbortedError:o}=t(6600);const n=t(5647);const{getResolveErrorBodyCallback:i}=t(390);const{AsyncResource:a}=t(290);const{addSignal:g,removeSignal:c}=t(7771);class RequestHandler extends a{constructor(A,e){if(!A||typeof A!=="object"){throw new s("invalid opts")}const{signal:t,method:r,opaque:o,body:i,onInfo:a,responseHeaders:c,throwOnError:E,highWaterMark:Q}=A;try{if(typeof e!=="function"){throw new s("invalid callback")}if(Q&&(typeof Q!=="number"||Q<0)){throw new s("invalid highWaterMark")}if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new s("invalid method")}if(a&&typeof a!=="function"){throw new s("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(A){if(n.isStream(i)){n.destroy(i.on("error",n.nop),A)}throw A}this.responseHeaders=c||null;this.opaque=o||null;this.callback=e;this.res=null;this.abort=null;this.body=i;this.trailers={};this.context=null;this.onInfo=a||null;this.throwOnError=E;this.highWaterMark=Q;if(n.isStream(i)){i.on("error",(A=>{this.onError(A)}))}g(this,t)}onConnect(A,e){if(!this.callback){throw new o}this.abort=A;this.context=e}onHeaders(A,e,t,s){const{callback:o,opaque:a,abort:g,context:c,responseHeaders:E,highWaterMark:Q}=this;const C=E==="raw"?n.parseRawHeaders(e):n.parseHeaders(e);if(A<200){if(this.onInfo){this.onInfo({statusCode:A,headers:C})}return}const B=E==="raw"?n.parseHeaders(e):C;const l=B["content-type"];const I=new r({resume:t,abort:g,contentType:l,highWaterMark:Q});this.callback=null;this.res=I;if(o!==null){if(this.throwOnError&&A>=400){this.runInAsyncScope(i,null,{callback:o,body:I,contentType:l,statusCode:A,statusMessage:s,headers:C})}else{this.runInAsyncScope(o,null,null,{statusCode:A,headers:C,trailers:this.trailers,opaque:a,body:I,context:c})}}}onData(A){const{res:e}=this;return e.push(A)}onComplete(A){const{res:e}=this;c(this);n.parseHeaders(A,this.trailers);e.push(null)}onError(A){const{res:e,callback:t,body:r,opaque:s}=this;c(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,A,{opaque:s})}))}if(e){this.res=null;queueMicrotask((()=>{n.destroy(e,A)}))}if(r){this.body=null;n.destroy(r,A)}}}function request(A,e){if(e===undefined){return new Promise(((e,t)=>{request.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{this.dispatch(A,new RequestHandler(A,e))}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=request;A.exports.RequestHandler=RequestHandler},3869:(A,e,t)=>{"use strict";const{finished:r,PassThrough:s}=t(2203);const{InvalidArgumentError:o,InvalidReturnValueError:n,RequestAbortedError:i}=t(6600);const a=t(5647);const{getResolveErrorBodyCallback:g}=t(390);const{AsyncResource:c}=t(290);const{addSignal:E,removeSignal:Q}=t(7771);class StreamHandler extends c{constructor(A,e,t){if(!A||typeof A!=="object"){throw new o("invalid opts")}const{signal:r,method:s,opaque:n,body:i,onInfo:g,responseHeaders:c,throwOnError:Q}=A;try{if(typeof t!=="function"){throw new o("invalid callback")}if(typeof e!=="function"){throw new o("invalid factory")}if(r&&typeof r.on!=="function"&&typeof r.addEventListener!=="function"){throw new o("signal must be an EventEmitter or EventTarget")}if(s==="CONNECT"){throw new o("invalid method")}if(g&&typeof g!=="function"){throw new o("invalid onInfo callback")}super("UNDICI_STREAM")}catch(A){if(a.isStream(i)){a.destroy(i.on("error",a.nop),A)}throw A}this.responseHeaders=c||null;this.opaque=n||null;this.factory=e;this.callback=t;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=i;this.onInfo=g||null;this.throwOnError=Q||false;if(a.isStream(i)){i.on("error",(A=>{this.onError(A)}))}E(this,r)}onConnect(A,e){if(!this.callback){throw new i}this.abort=A;this.context=e}onHeaders(A,e,t,o){const{factory:i,opaque:c,context:E,callback:Q,responseHeaders:C}=this;const B=C==="raw"?a.parseRawHeaders(e):a.parseHeaders(e);if(A<200){if(this.onInfo){this.onInfo({statusCode:A,headers:B})}return}this.factory=null;let l;if(this.throwOnError&&A>=400){const t=C==="raw"?a.parseHeaders(e):B;const r=t["content-type"];l=new s;this.callback=null;this.runInAsyncScope(g,null,{callback:Q,body:l,contentType:r,statusCode:A,statusMessage:o,headers:B})}else{if(i===null){return}l=this.runInAsyncScope(i,null,{statusCode:A,headers:B,opaque:c,context:E});if(!l||typeof l.write!=="function"||typeof l.end!=="function"||typeof l.on!=="function"){throw new n("expected Writable")}r(l,{readable:false},(A=>{const{callback:e,res:t,opaque:r,trailers:s,abort:o}=this;this.res=null;if(A||!t.readable){a.destroy(t,A)}this.callback=null;this.runInAsyncScope(e,null,A||null,{opaque:r,trailers:s});if(A){o()}}))}l.on("drain",t);this.res=l;const I=l.writableNeedDrain!==undefined?l.writableNeedDrain:l._writableState&&l._writableState.needDrain;return I!==true}onData(A){const{res:e}=this;return e?e.write(A):true}onComplete(A){const{res:e}=this;Q(this);if(!e){return}this.trailers=a.parseHeaders(A);e.end()}onError(A){const{res:e,callback:t,opaque:r,body:s}=this;Q(this);this.factory=null;if(e){this.res=null;a.destroy(e,A)}else if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}if(s){this.body=null;a.destroy(s,A)}}}function stream(A,e,t){if(t===undefined){return new Promise(((t,r)=>{stream.call(this,A,e,((A,e)=>A?r(A):t(e)))}))}try{this.dispatch(A,new StreamHandler(A,e,t))}catch(e){if(typeof t!=="function"){throw e}const r=A&&A.opaque;queueMicrotask((()=>t(e,{opaque:r})))}}A.exports=stream},4477:(A,e,t)=>{"use strict";const{InvalidArgumentError:r,RequestAbortedError:s,SocketError:o}=t(6600);const{AsyncResource:n}=t(290);const i=t(5647);const{addSignal:a,removeSignal:g}=t(7771);const c=t(2613);class UpgradeHandler extends n{constructor(A,e){if(!A||typeof A!=="object"){throw new r("invalid opts")}if(typeof e!=="function"){throw new r("invalid callback")}const{signal:t,opaque:s,responseHeaders:o}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=o||null;this.opaque=s||null;this.callback=e;this.abort=null;this.context=null;a(this,t)}onConnect(A,e){if(!this.callback){throw new s}this.abort=A;this.context=null}onHeaders(){throw new o("bad upgrade",null)}onUpgrade(A,e,t){const{callback:r,opaque:s,context:o}=this;c.strictEqual(A,101);g(this);this.callback=null;const n=this.responseHeaders==="raw"?i.parseRawHeaders(e):i.parseHeaders(e);this.runInAsyncScope(r,null,null,{headers:n,socket:t,opaque:s,context:o})}onError(A){const{callback:e,opaque:t}=this;g(this);if(e){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(e,null,A,{opaque:t})}))}}}function upgrade(A,e){if(e===undefined){return new Promise(((e,t)=>{upgrade.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{const t=new UpgradeHandler(A,e);this.dispatch({...A,method:A.method||"GET",upgrade:A.protocol||"Websocket"},t)}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=upgrade},628:(A,e,t)=>{"use strict";A.exports.request=t(1948);A.exports.stream=t(3869);A.exports.pipeline=t(7659);A.exports.upgrade=t(4477);A.exports.connect=t(2631)},8058:(A,e,t)=>{"use strict";const r=t(2613);const{Readable:s}=t(2203);const{RequestAbortedError:o,NotSupportedError:n,InvalidArgumentError:i}=t(6600);const a=t(5647);const{ReadableStreamFrom:g,toUSVString:c}=t(5647);let E;const Q=Symbol("kConsume");const C=Symbol("kReading");const B=Symbol("kBody");const l=Symbol("abort");const I=Symbol("kContentType");const noop=()=>{};A.exports=class BodyReadable extends s{constructor({resume:A,abort:e,contentType:t="",highWaterMark:r=64*1024}){super({autoDestroy:true,read:A,highWaterMark:r});this._readableState.dataEmitted=false;this[l]=e;this[Q]=null;this[B]=null;this[I]=t;this[C]=false}destroy(A){if(this.destroyed){return this}if(!A&&!this._readableState.endEmitted){A=new o}if(A){this[l]()}return super.destroy(A)}emit(A,...e){if(A==="data"){this._readableState.dataEmitted=true}else if(A==="error"){this._readableState.errorEmitted=true}return super.emit(A,...e)}on(A,...e){if(A==="data"||A==="readable"){this[C]=true}return super.on(A,...e)}addListener(A,...e){return this.on(A,...e)}off(A,...e){const t=super.off(A,...e);if(A==="data"||A==="readable"){this[C]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return t}removeListener(A,...e){return this.off(A,...e)}push(A){if(this[Q]&&A!==null&&this.readableLength===0){consumePush(this[Q],A);return this[C]?super.push(A):true}return super.push(A)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new n}get bodyUsed(){return a.isDisturbed(this)}get body(){if(!this[B]){this[B]=g(this);if(this[Q]){this[B].getReader();r(this[B].locked)}}return this[B]}dump(A){let e=A&&Number.isFinite(A.limit)?A.limit:262144;const t=A&&A.signal;if(t){try{if(typeof t!=="object"||!("aborted"in t)){throw new i("signal must be an AbortSignal")}a.throwIfAborted(t)}catch(A){return Promise.reject(A)}}if(this.closed){return Promise.resolve(null)}return new Promise(((A,r)=>{const s=t?a.addAbortListener(t,(()=>{this.destroy()})):noop;this.on("close",(function(){s();if(t&&t.aborted){r(t.reason||Object.assign(new Error("The operation was aborted"),{name:"AbortError"}))}else{A(null)}})).on("error",noop).on("data",(function(A){e-=A.length;if(e<=0){this.destroy()}})).resume()}))}};function isLocked(A){return A[B]&&A[B].locked===true||A[Q]}function isUnusable(A){return a.isDisturbed(A)||isLocked(A)}async function consume(A,e){if(isUnusable(A)){throw new TypeError("unusable")}r(!A[Q]);return new Promise(((t,r)=>{A[Q]={type:e,stream:A,resolve:t,reject:r,length:0,body:[]};A.on("error",(function(A){consumeFinish(this[Q],A)})).on("close",(function(){if(this[Q].body!==null){consumeFinish(this[Q],new o)}}));process.nextTick(consumeStart,A[Q])}))}function consumeStart(A){if(A.body===null){return}const{_readableState:e}=A.stream;for(const t of e.buffer){consumePush(A,t)}if(e.endEmitted){consumeEnd(this[Q])}else{A.stream.on("end",(function(){consumeEnd(this[Q])}))}A.stream.resume();while(A.stream.read()!=null){}}function consumeEnd(A){const{type:e,body:r,resolve:s,stream:o,length:n}=A;try{if(e==="text"){s(c(Buffer.concat(r)))}else if(e==="json"){s(JSON.parse(Buffer.concat(r)))}else if(e==="arrayBuffer"){const A=new Uint8Array(n);let e=0;for(const t of r){A.set(t,e);e+=t.byteLength}s(A.buffer)}else if(e==="blob"){if(!E){E=t(181).Blob}s(new E(r,{type:o[I]}))}consumeFinish(A)}catch(A){o.destroy(A)}}function consumePush(A,e){A.length+=e.length;A.body.push(e)}function consumeFinish(A,e){if(A.body===null){return}if(e){A.reject(e)}else{A.resolve()}A.type=null;A.stream=null;A.resolve=null;A.reject=null;A.length=0;A.body=null}},390:(A,e,t)=>{const r=t(2613);const{ResponseStatusCodeError:s}=t(6600);const{toUSVString:o}=t(5647);async function getResolveErrorBodyCallback({callback:A,body:e,contentType:t,statusCode:n,statusMessage:i,headers:a}){r(e);let g=[];let c=0;for await(const A of e){g.push(A);c+=A.length;if(c>128*1024){g=null;break}}if(n===204||!t||!g){process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a));return}try{if(t.startsWith("application/json")){const e=JSON.parse(o(Buffer.concat(g)));process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a,e));return}if(t.startsWith("text/")){const e=o(Buffer.concat(g));process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a,e));return}}catch(A){}process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a))}A.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback}},1514:(A,e,t)=>{"use strict";const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:s}=t(6600);const{PoolBase:o,kClients:n,kNeedDrain:i,kAddClient:a,kRemoveClient:g,kGetDispatcher:c}=t(6903);const E=t(1013);const{kUrl:Q,kInterceptors:C}=t(4914);const{parseOrigin:B}=t(5647);const l=Symbol("factory");const I=Symbol("options");const h=Symbol("kGreatestCommonDivisor");const u=Symbol("kCurrentWeight");const d=Symbol("kIndex");const p=Symbol("kWeight");const y=Symbol("kMaxWeightPerServer");const w=Symbol("kErrorPenalty");function getGreatestCommonDivisor(A,e){if(e===0)return A;return getGreatestCommonDivisor(e,A%e)}function defaultFactory(A,e){return new E(A,e)}class BalancedPool extends o{constructor(A=[],{factory:e=defaultFactory,...t}={}){super();this[I]=t;this[d]=-1;this[u]=0;this[y]=this[I].maxWeightPerServer||100;this[w]=this[I].errorPenalty||15;if(!Array.isArray(A)){A=[A]}if(typeof e!=="function"){throw new s("factory must be a function.")}this[C]=t.interceptors&&t.interceptors.BalancedPool&&Array.isArray(t.interceptors.BalancedPool)?t.interceptors.BalancedPool:[];this[l]=e;for(const e of A){this.addUpstream(e)}this._updateBalancedPoolStats()}addUpstream(A){const e=B(A).origin;if(this[n].find((A=>A[Q].origin===e&&A.closed!==true&&A.destroyed!==true))){return this}const t=this[l](e,Object.assign({},this[I]));this[a](t);t.on("connect",(()=>{t[p]=Math.min(this[y],t[p]+this[w])}));t.on("connectionError",(()=>{t[p]=Math.max(1,t[p]-this[w]);this._updateBalancedPoolStats()}));t.on("disconnect",((...A)=>{const e=A[2];if(e&&e.code==="UND_ERR_SOCKET"){t[p]=Math.max(1,t[p]-this[w]);this._updateBalancedPoolStats()}}));for(const A of this[n]){A[p]=this[y]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){this[h]=this[n].map((A=>A[p])).reduce(getGreatestCommonDivisor,0)}removeUpstream(A){const e=B(A).origin;const t=this[n].find((A=>A[Q].origin===e&&A.closed!==true&&A.destroyed!==true));if(t){this[g](t)}return this}get upstreams(){return this[n].filter((A=>A.closed!==true&&A.destroyed!==true)).map((A=>A[Q].origin))}[c](){if(this[n].length===0){throw new r}const A=this[n].find((A=>!A[i]&&A.closed!==true&&A.destroyed!==true));if(!A){return}const e=this[n].map((A=>A[i])).reduce(((A,e)=>A&&e),true);if(e){return}let t=0;let s=this[n].findIndex((A=>!A[i]));while(t++this[n][s][p]&&!A[i]){s=this[d]}if(this[d]===0){this[u]=this[u]-this[h];if(this[u]<=0){this[u]=this[y]}}if(A[p]>=this[u]&&!A[i]){return A}}this[u]=this[n][s][p];this[d]=s;return this[n][s]}}A.exports=BalancedPool},4455:(A,e,t)=>{"use strict";const{kConstruct:r}=t(4447);const{urlEquals:s,fieldValues:o}=t(4396);const{kEnumerableProperty:n,isDisturbed:i}=t(5647);const{kHeadersList:a}=t(4914);const{webidl:g}=t(19);const{Response:c,cloneResponse:E}=t(5973);const{Request:Q}=t(1697);const{kState:C,kHeaders:B,kGuard:l,kRealm:I}=t(3965);const{fetching:h}=t(1116);const{urlIsHttpHttpsScheme:u,createDeferredPromise:d,readAllBytes:p}=t(9246);const y=t(2613);const{getGlobalDispatcher:w}=t(0);class Cache{#A;constructor(){if(arguments[0]!==r){g.illegalConstructor()}this.#A=arguments[1]}async match(A,e={}){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.match"});A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);const t=await this.matchAll(A,e);if(t.length===0){return}return t[0]}async matchAll(A=undefined,e={}){g.brandCheck(this,Cache);if(A!==undefined)A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A!==undefined){if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return[]}}else if(typeof A==="string"){t=new Q(A)[C]}}const r=[];if(A===undefined){for(const A of this.#A){r.push(A[1])}}else{const A=this.#e(t,e);for(const e of A){r.push(e[1])}}const s=[];for(const A of r){const e=new c(A.body?.source??null);const t=e[C].body;e[C]=A;e[C].body=t;e[B][a]=A.headersList;e[B][l]="immutable";s.push(e)}return Object.freeze(s)}async add(A){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.add"});A=g.converters.RequestInfo(A);const e=[A];const t=this.addAll(e);return await t}async addAll(A){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});A=g.converters["sequence"](A);const e=[];const t=[];for(const e of A){if(typeof e==="string"){continue}const A=e[C];if(!u(A.url)||A.method!=="GET"){throw g.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}}const r=[];for(const s of A){const A=new Q(s)[C];if(!u(A.url)){throw g.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."})}A.initiator="fetch";A.destination="subresource";t.push(A);const n=d();r.push(h({request:A,dispatcher:w(),processResponse(A){if(A.type==="error"||A.status===206||A.status<200||A.status>299){n.reject(g.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(A.headersList.contains("vary")){const e=o(A.headersList.get("vary"));for(const A of e){if(A==="*"){n.reject(g.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const A of r){A.abort()}return}}}},processResponseEndOfBody(A){if(A.aborted){n.reject(new DOMException("aborted","AbortError"));return}n.resolve(A)}}));e.push(n.promise)}const s=Promise.all(e);const n=await s;const i=[];let a=0;for(const A of n){const e={type:"put",request:t[a],response:A};i.push(e);a++}const c=d();let E=null;try{this.#t(i)}catch(A){E=A}queueMicrotask((()=>{if(E===null){c.resolve(undefined)}else{c.reject(E)}}));return c.promise}async put(A,e){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,2,{header:"Cache.put"});A=g.converters.RequestInfo(A);e=g.converters.Response(e);let t=null;if(A instanceof Q){t=A[C]}else{t=new Q(A)[C]}if(!u(t.url)||t.method!=="GET"){throw g.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"})}const r=e[C];if(r.status===206){throw g.errors.exception({header:"Cache.put",message:"Got 206 status"})}if(r.headersList.contains("vary")){const A=o(r.headersList.get("vary"));for(const e of A){if(e==="*"){throw g.errors.exception({header:"Cache.put",message:"Got * vary field value"})}}}if(r.body&&(i(r.body.stream)||r.body.stream.locked)){throw g.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"})}const s=E(r);const n=d();if(r.body!=null){const A=r.body.stream;const e=A.getReader();p(e).then(n.resolve,n.reject)}else{n.resolve(undefined)}const a=[];const c={type:"put",request:t,response:s};a.push(c);const B=await n.promise;if(s.body!=null){s.body.source=B}const l=d();let I=null;try{this.#t(a)}catch(A){I=A}queueMicrotask((()=>{if(I===null){l.resolve()}else{l.reject(I)}}));return l.promise}async delete(A,e={}){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.delete"});A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return false}}else{y(typeof A==="string");t=new Q(A)[C]}const r=[];const s={type:"delete",request:t,options:e};r.push(s);const o=d();let n=null;let i;try{i=this.#t(r)}catch(A){n=A}queueMicrotask((()=>{if(n===null){o.resolve(!!i?.length)}else{o.reject(n)}}));return o.promise}async keys(A=undefined,e={}){g.brandCheck(this,Cache);if(A!==undefined)A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A!==undefined){if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return[]}}else if(typeof A==="string"){t=new Q(A)[C]}}const r=d();const s=[];if(A===undefined){for(const A of this.#A){s.push(A[0])}}else{const A=this.#e(t,e);for(const e of A){s.push(e[0])}}queueMicrotask((()=>{const A=[];for(const e of s){const t=new Q("https://a");t[C]=e;t[B][a]=e.headersList;t[B][l]="immutable";t[I]=e.client;A.push(t)}r.resolve(Object.freeze(A))}));return r.promise}#t(A){const e=this.#A;const t=[...e];const r=[];const s=[];try{for(const t of A){if(t.type!=="delete"&&t.type!=="put"){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(t.type==="delete"&&t.response!=null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#e(t.request,t.options,r).length){throw new DOMException("???","InvalidStateError")}let A;if(t.type==="delete"){A=this.#e(t.request,t.options);if(A.length===0){return[]}for(const t of A){const A=e.indexOf(t);y(A!==-1);e.splice(A,1)}}else if(t.type==="put"){if(t.response==null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const s=t.request;if(!u(s.url)){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(s.method!=="GET"){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(t.options!=null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}A=this.#e(t.request);for(const t of A){const A=e.indexOf(t);y(A!==-1);e.splice(A,1)}e.push([t.request,t.response]);r.push([t.request,t.response])}s.push([t.request,t.response])}return s}catch(A){this.#A.length=0;this.#A=t;throw A}}#e(A,e,t){const r=[];const s=t??this.#A;for(const t of s){const[s,o]=t;if(this.#r(A,s,o,e)){r.push(t)}}return r}#r(A,e,t=null,r){const n=new URL(A.url);const i=new URL(e.url);if(r?.ignoreSearch){i.search="";n.search=""}if(!s(n,i,true)){return false}if(t==null||r?.ignoreVary||!t.headersList.contains("vary")){return true}const a=o(t.headersList.get("vary"));for(const t of a){if(t==="*"){return false}const r=e.headersList.get(t);const s=A.headersList.get(t);if(r!==s){return false}}return true}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:n,matchAll:n,add:n,addAll:n,put:n,delete:n,keys:n});const R=[{key:"ignoreSearch",converter:g.converters.boolean,defaultValue:false},{key:"ignoreMethod",converter:g.converters.boolean,defaultValue:false},{key:"ignoreVary",converter:g.converters.boolean,defaultValue:false}];g.converters.CacheQueryOptions=g.dictionaryConverter(R);g.converters.MultiCacheQueryOptions=g.dictionaryConverter([...R,{key:"cacheName",converter:g.converters.DOMString}]);g.converters.Response=g.interfaceConverter(c);g.converters["sequence"]=g.sequenceConverter(g.converters.RequestInfo);A.exports={Cache:Cache}},1531:(A,e,t)=>{"use strict";const{kConstruct:r}=t(4447);const{Cache:s}=t(4455);const{webidl:o}=t(19);const{kEnumerableProperty:n}=t(5647);class CacheStorage{#s=new Map;constructor(){if(arguments[0]!==r){o.illegalConstructor()}}async match(A,e={}){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"});A=o.converters.RequestInfo(A);e=o.converters.MultiCacheQueryOptions(e);if(e.cacheName!=null){if(this.#s.has(e.cacheName)){const t=this.#s.get(e.cacheName);const o=new s(r,t);return await o.match(A,e)}}else{for(const t of this.#s.values()){const o=new s(r,t);const n=await o.match(A,e);if(n!==undefined){return n}}}}async has(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"});A=o.converters.DOMString(A);return this.#s.has(A)}async open(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"});A=o.converters.DOMString(A);if(this.#s.has(A)){const e=this.#s.get(A);return new s(r,e)}const e=[];this.#s.set(A,e);return new s(r,e)}async delete(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"});A=o.converters.DOMString(A);return this.#s.delete(A)}async keys(){o.brandCheck(this,CacheStorage);const A=this.#s.keys();return[...A]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:n,has:n,open:n,delete:n,keys:n});A.exports={CacheStorage:CacheStorage}},4447:(A,e,t)=>{"use strict";A.exports={kConstruct:t(4914).kConstruct}},4396:(A,e,t)=>{"use strict";const r=t(2613);const{URLSerializer:s}=t(6277);const{isValidHeaderName:o}=t(9246);function urlEquals(A,e,t=false){const r=s(A,t);const o=s(e,t);return r===o}function fieldValues(A){r(A!==null);const e=[];for(let t of A.split(",")){t=t.trim();if(!t.length){continue}else if(!o(t)){continue}e.push(t)}return e}A.exports={urlEquals:urlEquals,fieldValues:fieldValues}},5752:(A,e,t)=>{"use strict";const r=t(2613);const s=t(9278);const o=t(8611);const{pipeline:n}=t(2203);const i=t(5647);const a=t(9069);const g=t(9286);const c=t(890);const{RequestContentLengthMismatchError:E,ResponseContentLengthMismatchError:Q,InvalidArgumentError:C,RequestAbortedError:B,HeadersTimeoutError:l,HeadersOverflowError:I,SocketError:h,InformationalError:u,BodyTimeoutError:d,HTTPParserError:p,ResponseExceededMaxSizeError:y,ClientDestroyedError:w}=t(6600);const R=t(7037);const{kUrl:m,kReset:D,kServerName:k,kClient:b,kBusy:F,kParser:S,kConnect:N,kBlocking:U,kResuming:T,kRunning:L,kPending:M,kSize:G,kWriting:v,kQueue:Y,kConnected:H,kConnecting:J,kNeedDrain:V,kNoRef:O,kKeepAliveDefaultTimeout:P,kHostHeader:x,kPendingIdx:_,kRunningIdx:q,kError:W,kPipelining:j,kSocket:Z,kKeepAliveTimeoutValue:X,kMaxHeadersSize:K,kKeepAliveMaxTimeout:z,kKeepAliveTimeoutThreshold:$,kHeadersTimeout:AA,kBodyTimeout:eA,kStrictContentLength:tA,kConnector:rA,kMaxRedirections:sA,kMaxRequests:oA,kCounter:nA,kClose:iA,kDestroy:aA,kDispatch:gA,kInterceptors:cA,kLocalAddress:EA,kMaxResponseSize:QA,kHTTPConnVersion:CA,kHost:BA,kHTTP2Session:lA,kHTTP2SessionState:IA,kHTTP2BuildRequest:hA,kHTTP2CopyHeaders:uA,kHTTP1BuildRequest:dA}=t(4914);let fA;try{fA=t(5675)}catch{fA={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:pA,HTTP2_HEADER_METHOD:yA,HTTP2_HEADER_PATH:wA,HTTP2_HEADER_SCHEME:RA,HTTP2_HEADER_CONTENT_LENGTH:mA,HTTP2_HEADER_EXPECT:DA,HTTP2_HEADER_STATUS:kA}}=fA;let bA=false;const FA=Buffer[Symbol.species];const SA=Symbol("kClosedResolve");const NA={};try{const A=t(1637);NA.sendHeaders=A.channel("undici:client:sendHeaders");NA.beforeConnect=A.channel("undici:client:beforeConnect");NA.connectError=A.channel("undici:client:connectError");NA.connected=A.channel("undici:client:connected")}catch{NA.sendHeaders={hasSubscribers:false};NA.beforeConnect={hasSubscribers:false};NA.connectError={hasSubscribers:false};NA.connected={hasSubscribers:false}}class Client extends c{constructor(A,{interceptors:e,maxHeaderSize:t,headersTimeout:r,socketTimeout:n,requestTimeout:a,connectTimeout:g,bodyTimeout:c,idleTimeout:E,keepAlive:Q,keepAliveTimeout:B,maxKeepAliveTimeout:l,keepAliveMaxTimeout:I,keepAliveTimeoutThreshold:h,socketPath:u,pipelining:d,tls:p,strictContentLength:y,maxCachedSessions:w,maxRedirections:D,connect:b,maxRequestsPerClient:F,localAddress:S,maxResponseSize:N,autoSelectFamily:U,autoSelectFamilyAttemptTimeout:L,allowH2:M,maxConcurrentStreams:G}={}){super();if(Q!==undefined){throw new C("unsupported keepAlive, use pipelining=0 instead")}if(n!==undefined){throw new C("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new C("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(E!==undefined){throw new C("unsupported idleTimeout, use keepAliveTimeout instead")}if(l!==undefined){throw new C("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(t!=null&&!Number.isFinite(t)){throw new C("invalid maxHeaderSize")}if(u!=null&&typeof u!=="string"){throw new C("invalid socketPath")}if(g!=null&&(!Number.isFinite(g)||g<0)){throw new C("invalid connectTimeout")}if(B!=null&&(!Number.isFinite(B)||B<=0)){throw new C("invalid keepAliveTimeout")}if(I!=null&&(!Number.isFinite(I)||I<=0)){throw new C("invalid keepAliveMaxTimeout")}if(h!=null&&!Number.isFinite(h)){throw new C("invalid keepAliveTimeoutThreshold")}if(r!=null&&(!Number.isInteger(r)||r<0)){throw new C("headersTimeout must be a positive integer or zero")}if(c!=null&&(!Number.isInteger(c)||c<0)){throw new C("bodyTimeout must be a positive integer or zero")}if(b!=null&&typeof b!=="function"&&typeof b!=="object"){throw new C("connect must be a function or an object")}if(D!=null&&(!Number.isInteger(D)||D<0)){throw new C("maxRedirections must be a positive number")}if(F!=null&&(!Number.isInteger(F)||F<0)){throw new C("maxRequestsPerClient must be a positive number")}if(S!=null&&(typeof S!=="string"||s.isIP(S)===0)){throw new C("localAddress must be valid string IP address")}if(N!=null&&(!Number.isInteger(N)||N<-1)){throw new C("maxResponseSize must be a positive number")}if(L!=null&&(!Number.isInteger(L)||L<-1)){throw new C("autoSelectFamilyAttemptTimeout must be a positive number")}if(M!=null&&typeof M!=="boolean"){throw new C("allowH2 must be a valid boolean value")}if(G!=null&&(typeof G!=="number"||G<1)){throw new C("maxConcurrentStreams must be a possitive integer, greater than 0")}if(typeof b!=="function"){b=R({...p,maxCachedSessions:w,allowH2:M,socketPath:u,timeout:g,...i.nodeHasAutoSelectFamily&&U?{autoSelectFamily:U,autoSelectFamilyAttemptTimeout:L}:undefined,...b})}this[cA]=e&&e.Client&&Array.isArray(e.Client)?e.Client:[TA({maxRedirections:D})];this[m]=i.parseOrigin(A);this[rA]=b;this[Z]=null;this[j]=d!=null?d:1;this[K]=t||o.maxHeaderSize;this[P]=B==null?4e3:B;this[z]=I==null?6e5:I;this[$]=h==null?1e3:h;this[X]=this[P];this[k]=null;this[EA]=S!=null?S:null;this[T]=0;this[V]=0;this[x]=`host: ${this[m].hostname}${this[m].port?`:${this[m].port}`:""}\r\n`;this[eA]=c!=null?c:3e5;this[AA]=r!=null?r:3e5;this[tA]=y==null?true:y;this[sA]=D;this[oA]=F;this[SA]=null;this[QA]=N>-1?N:-1;this[CA]="h1";this[lA]=null;this[IA]=!M?null:{openStreams:0,maxConcurrentStreams:G!=null?G:100};this[BA]=`${this[m].hostname}${this[m].port?`:${this[m].port}`:""}`;this[Y]=[];this[q]=0;this[_]=0}get pipelining(){return this[j]}set pipelining(A){this[j]=A;resume(this,true)}get[M](){return this[Y].length-this[_]}get[L](){return this[_]-this[q]}get[G](){return this[Y].length-this[q]}get[H](){return!!this[Z]&&!this[J]&&!this[Z].destroyed}get[F](){const A=this[Z];return A&&(A[D]||A[v]||A[U])||this[G]>=(this[j]||1)||this[M]>0}[N](A){connect(this);this.once("connect",A)}[gA](A,e){const t=A.origin||this[m].origin;const r=this[CA]==="h2"?g[hA](t,A,e):g[dA](t,A,e);this[Y].push(r);if(this[T]){}else if(i.bodyLength(r.body)==null&&i.isIterable(r.body)){this[T]=1;process.nextTick(resume,this)}else{resume(this,true)}if(this[T]&&this[V]!==2&&this[F]){this[V]=2}return this[V]<2}async[iA](){return new Promise((A=>{if(!this[G]){A(null)}else{this[SA]=A}}))}async[aA](A){return new Promise((e=>{const t=this[Y].splice(this[_]);for(let e=0;e{if(this[SA]){this[SA]();this[SA]=null}e()};if(this[lA]!=null){i.destroy(this[lA],A);this[lA]=null;this[IA]=null}if(!this[Z]){queueMicrotask(callback)}else{i.destroy(this[Z].on("close",callback),A)}resume(this)}))}}function onHttp2SessionError(A){r(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[Z][W]=A;onError(this[b],A)}function onHttp2FrameError(A,e,t){const r=new u(`HTTP/2: "frameError" received - type ${A}, code ${e}`);if(t===0){this[Z][W]=r;onError(this[b],r)}}function onHttp2SessionEnd(){i.destroy(this,new h("other side closed"));i.destroy(this[Z],new h("other side closed"))}function onHTTP2GoAway(A){const e=this[b];const t=new u(`HTTP/2: "GOAWAY" frame received with code ${A}`);e[Z]=null;e[lA]=null;if(e.destroyed){r(this[M]===0);const A=e[Y].splice(e[q]);for(let e=0;e0){const A=e[Y][e[q]];e[Y][e[q]++]=null;errorRequest(e,A,t)}e[_]=e[q];r(e[L]===0);e.emit("disconnect",e[m],[e],t);resume(e)}const UA=t(6862);const TA=t(4288);const LA=Buffer.alloc(0);async function lazyllhttp(){const A=process.env.JEST_WORKER_ID?t(9443):undefined;let e;try{e=await WebAssembly.compile(Buffer.from(t(2585),"base64"))}catch(r){e=await WebAssembly.compile(Buffer.from(A||t(9443),"base64"))}return await WebAssembly.instantiate(e,{env:{wasm_on_url:(A,e,t)=>0,wasm_on_status:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onStatus(new FA(YA.buffer,s,t))||0},wasm_on_message_begin:A=>{r.strictEqual(vA.ptr,A);return vA.onMessageBegin()||0},wasm_on_header_field:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onHeaderField(new FA(YA.buffer,s,t))||0},wasm_on_header_value:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onHeaderValue(new FA(YA.buffer,s,t))||0},wasm_on_headers_complete:(A,e,t,s)=>{r.strictEqual(vA.ptr,A);return vA.onHeadersComplete(e,Boolean(t),Boolean(s))||0},wasm_on_body:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onBody(new FA(YA.buffer,s,t))||0},wasm_on_message_complete:A=>{r.strictEqual(vA.ptr,A);return vA.onMessageComplete()||0}}})}let MA=null;let GA=lazyllhttp();GA.catch();let vA=null;let YA=null;let HA=0;let JA=null;const VA=1;const OA=2;const PA=3;class Parser{constructor(A,e,{exports:t}){r(Number.isFinite(A[K])&&A[K]>0);this.llhttp=t;this.ptr=this.llhttp.llhttp_alloc(UA.TYPE.RESPONSE);this.client=A;this.socket=e;this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.statusCode=null;this.statusText="";this.upgrade=false;this.headers=[];this.headersSize=0;this.headersMaxSize=A[K];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=A[QA]}setTimeout(A,e){this.timeoutType=e;if(A!==this.timeoutValue){a.clearTimeout(this.timeout);if(A){this.timeout=a.setTimeout(onParserTimeout,A,this);if(this.timeout.unref){this.timeout.unref()}}else{this.timeout=null}this.timeoutValue=A}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(vA==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===OA);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||LA);this.readMore()}readMore(){while(!this.paused&&this.ptr){const A=this.socket.read();if(A===null){break}this.execute(A)}}execute(A){r(this.ptr!=null);r(vA==null);r(!this.paused);const{socket:e,llhttp:t}=this;if(A.length>HA){if(JA){t.free(JA)}HA=Math.ceil(A.length/4096)*4096;JA=t.malloc(HA)}new Uint8Array(t.memory.buffer,JA,HA).set(A);try{let r;try{YA=A;vA=this;r=t.llhttp_execute(this.ptr,JA,A.length)}catch(A){throw A}finally{vA=null;YA=null}const s=t.llhttp_get_error_pos(this.ptr)-JA;if(r===UA.ERROR.PAUSED_UPGRADE){this.onUpgrade(A.slice(s))}else if(r===UA.ERROR.PAUSED){this.paused=true;e.unshift(A.slice(s))}else if(r!==UA.ERROR.OK){const e=t.llhttp_get_error_reason(this.ptr);let o="";if(e){const A=new Uint8Array(t.memory.buffer,e).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(t.memory.buffer,e,A).toString()+")"}throw new p(o,UA.ERROR[r],A.slice(s))}}catch(A){i.destroy(e,A)}}destroy(){r(this.ptr!=null);r(vA==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;a.clearTimeout(this.timeout);this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.paused=false}onStatus(A){this.statusText=A.toString()}onMessageBegin(){const{socket:A,client:e}=this;if(A.destroyed){return-1}const t=e[Y][e[q]];if(!t){return-1}}onHeaderField(A){const e=this.headers.length;if((e&1)===0){this.headers.push(A)}else{this.headers[e-1]=Buffer.concat([this.headers[e-1],A])}this.trackHeader(A.length)}onHeaderValue(A){let e=this.headers.length;if((e&1)===1){this.headers.push(A);e+=1}else{this.headers[e-1]=Buffer.concat([this.headers[e-1],A])}const t=this.headers[e-2];if(t.length===10&&t.toString().toLowerCase()==="keep-alive"){this.keepAlive+=A.toString()}else if(t.length===10&&t.toString().toLowerCase()==="connection"){this.connection+=A.toString()}else if(t.length===14&&t.toString().toLowerCase()==="content-length"){this.contentLength+=A.toString()}this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A;if(this.headersSize>=this.headersMaxSize){i.destroy(this.socket,new I)}}onUpgrade(A){const{upgrade:e,client:t,socket:s,headers:o,statusCode:n}=this;r(e);const a=t[Y][t[q]];r(a);r(!s.destroyed);r(s===t[Z]);r(!this.paused);r(a.upgrade||a.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;r(this.headers.length%2===0);this.headers=[];this.headersSize=0;s.unshift(A);s[S].destroy();s[S]=null;s[b]=null;s[W]=null;s.removeListener("error",onSocketError).removeListener("readable",onSocketReadable).removeListener("end",onSocketEnd).removeListener("close",onSocketClose);t[Z]=null;t[Y][t[q]++]=null;t.emit("disconnect",t[m],[t],new u("upgrade"));try{a.onUpgrade(n,o,s)}catch(A){i.destroy(s,A)}resume(t)}onHeadersComplete(A,e,t){const{client:s,socket:o,headers:n,statusText:a}=this;if(o.destroyed){return-1}const g=s[Y][s[q]];if(!g){return-1}r(!this.upgrade);r(this.statusCode<200);if(A===100){i.destroy(o,new h("bad response",i.getSocketInfo(o)));return-1}if(e&&!g.upgrade){i.destroy(o,new h("bad upgrade",i.getSocketInfo(o)));return-1}r.strictEqual(this.timeoutType,VA);this.statusCode=A;this.shouldKeepAlive=t||g.method==="HEAD"&&!o[D]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const A=g.bodyTimeout!=null?g.bodyTimeout:s[eA];this.setTimeout(A,OA)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(g.method==="CONNECT"){r(s[L]===1);this.upgrade=true;return 2}if(e){r(s[L]===1);this.upgrade=true;return 2}r(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&s[j]){const A=this.keepAlive?i.parseKeepAliveTimeout(this.keepAlive):null;if(A!=null){const e=Math.min(A-s[$],s[z]);if(e<=0){o[D]=true}else{s[X]=e}}else{s[X]=s[P]}}else{o[D]=true}const c=g.onHeaders(A,n,this.resume,a)===false;if(g.aborted){return-1}if(g.method==="HEAD"){return 1}if(A<200){return 1}if(o[U]){o[U]=false;resume(s)}return c?UA.ERROR.PAUSED:0}onBody(A){const{client:e,socket:t,statusCode:s,maxResponseSize:o}=this;if(t.destroyed){return-1}const n=e[Y][e[q]];r(n);r.strictEqual(this.timeoutType,OA);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(s>=200);if(o>-1&&this.bytesRead+A.length>o){i.destroy(t,new y);return-1}this.bytesRead+=A.length;if(n.onData(A)===false){return UA.ERROR.PAUSED}}onMessageComplete(){const{client:A,socket:e,statusCode:t,upgrade:s,headers:o,contentLength:n,bytesRead:a,shouldKeepAlive:g}=this;if(e.destroyed&&(!t||g)){return-1}if(s){return}const c=A[Y][A[q]];r(c);r(t>=100);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";r(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(t<200){return}if(c.method!=="HEAD"&&n&&a!==parseInt(n,10)){i.destroy(e,new Q);return-1}c.onComplete(o);A[Y][A[q]++]=null;if(e[v]){r.strictEqual(A[L],0);i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(!g){i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(e[D]&&A[L]===0){i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(A[j]===1){setImmediate(resume,A)}else{resume(A)}}}function onParserTimeout(A){const{socket:e,timeoutType:t,client:s}=A;if(t===VA){if(!e[v]||e.writableNeedDrain||s[L]>1){r(!A.paused,"cannot be paused while waiting for headers");i.destroy(e,new l)}}else if(t===OA){if(!A.paused){i.destroy(e,new d)}}else if(t===PA){r(s[L]===0&&s[X]);i.destroy(e,new u("socket idle timeout"))}}function onSocketReadable(){const{[S]:A}=this;if(A){A.readMore()}}function onSocketError(A){const{[b]:e,[S]:t}=this;r(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID");if(e[CA]!=="h2"){if(A.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){t.onMessageComplete();return}}this[W]=A;onError(this[b],A)}function onError(A,e){if(A[L]===0&&e.code!=="UND_ERR_INFO"&&e.code!=="UND_ERR_SOCKET"){r(A[_]===A[q]);const t=A[Y].splice(A[q]);for(let r=0;r0&&t.code!=="UND_ERR_INFO"){const e=A[Y][A[q]];A[Y][A[q]++]=null;errorRequest(A,e,t)}A[_]=A[q];r(A[L]===0);A.emit("disconnect",A[m],[A],t);resume(A)}async function connect(A){r(!A[J]);r(!A[Z]);let{host:e,hostname:t,protocol:o,port:n}=A[m];if(t[0]==="["){const A=t.indexOf("]");r(A!==-1);const e=t.substring(1,A);r(s.isIP(e));t=e}A[J]=true;if(NA.beforeConnect.hasSubscribers){NA.beforeConnect.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA]})}try{const s=await new Promise(((r,s)=>{A[rA]({host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},((A,e)=>{if(A){s(A)}else{r(e)}}))}));if(A.destroyed){i.destroy(s.on("error",(()=>{})),new w);return}A[J]=false;r(s);const a=s.alpnProtocol==="h2";if(a){if(!bA){bA=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const e=fA.connect(A[m],{createConnection:()=>s,peerMaxConcurrentStreams:A[IA].maxConcurrentStreams});A[CA]="h2";e[b]=A;e[Z]=s;e.on("error",onHttp2SessionError);e.on("frameError",onHttp2FrameError);e.on("end",onHttp2SessionEnd);e.on("goaway",onHTTP2GoAway);e.on("close",onSocketClose);e.unref();A[lA]=e;s[lA]=e}else{if(!MA){MA=await GA;GA=null}s[O]=false;s[v]=false;s[D]=false;s[U]=false;s[S]=new Parser(A,s,MA)}s[nA]=0;s[oA]=A[oA];s[b]=A;s[W]=null;s.on("error",onSocketError).on("readable",onSocketReadable).on("end",onSocketEnd).on("close",onSocketClose);A[Z]=s;if(NA.connected.hasSubscribers){NA.connected.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA],socket:s})}A.emit("connect",A[m],[A])}catch(s){if(A.destroyed){return}A[J]=false;if(NA.connectError.hasSubscribers){NA.connectError.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA],error:s})}if(s.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(A[L]===0);while(A[M]>0&&A[Y][A[_]].servername===A[k]){const e=A[Y][A[_]++];errorRequest(A,e,s)}}else{onError(A,s)}A.emit("connectionError",A[m],[A],s)}resume(A)}function emitDrain(A){A[V]=0;A.emit("drain",A[m],[A])}function resume(A,e){if(A[T]===2){return}A[T]=2;_resume(A,e);A[T]=0;if(A[q]>256){A[Y].splice(0,A[q]);A[_]-=A[q];A[q]=0}}function _resume(A,e){while(true){if(A.destroyed){r(A[M]===0);return}if(A[SA]&&!A[G]){A[SA]();A[SA]=null;return}const t=A[Z];if(t&&!t.destroyed&&t.alpnProtocol!=="h2"){if(A[G]===0){if(!t[O]&&t.unref){t.unref();t[O]=true}}else if(t[O]&&t.ref){t.ref();t[O]=false}if(A[G]===0){if(t[S].timeoutType!==PA){t[S].setTimeout(A[X],PA)}}else if(A[L]>0&&t[S].statusCode<200){if(t[S].timeoutType!==VA){const e=A[Y][A[q]];const r=e.headersTimeout!=null?e.headersTimeout:A[AA];t[S].setTimeout(r,VA)}}}if(A[F]){A[V]=2}else if(A[V]===2){if(e){A[V]=1;process.nextTick(emitDrain,A)}else{emitDrain(A)}continue}if(A[M]===0){return}if(A[L]>=(A[j]||1)){return}const s=A[Y][A[_]];if(A[m].protocol==="https:"&&A[k]!==s.servername){if(A[L]>0){return}A[k]=s.servername;if(t&&t.servername!==s.servername){i.destroy(t,new u("servername changed"));return}}if(A[J]){return}if(!t&&!A[lA]){connect(A);return}if(t.destroyed||t[v]||t[D]||t[U]){return}if(A[L]>0&&!s.idempotent){return}if(A[L]>0&&(s.upgrade||s.method==="CONNECT")){return}if(A[L]>0&&i.bodyLength(s.body)!==0&&(i.isStream(s.body)||i.isAsyncIterable(s.body))){return}if(!s.aborted&&write(A,s)){A[_]++}else{A[Y].splice(A[_],1)}}}function shouldSendContentLength(A){return A!=="GET"&&A!=="HEAD"&&A!=="OPTIONS"&&A!=="TRACE"&&A!=="CONNECT"}function write(A,e){if(A[CA]==="h2"){writeH2(A,A[lA],e);return}const{body:t,method:s,path:o,host:n,upgrade:a,headers:g,blocking:c,reset:Q}=e;const C=s==="PUT"||s==="POST"||s==="PATCH";if(t&&typeof t.read==="function"){t.read(0)}const l=i.bodyLength(t);let I=l;if(I===null){I=e.contentLength}if(I===0&&!C){I=null}if(shouldSendContentLength(s)&&I>0&&e.contentLength!==null&&e.contentLength!==I){if(A[tA]){errorRequest(A,e,new E);return false}process.emitWarning(new E)}const h=A[Z];try{e.onConnect((t=>{if(e.aborted||e.completed){return}errorRequest(A,e,t||new B);i.destroy(h,new u("aborted"))}))}catch(t){errorRequest(A,e,t)}if(e.aborted){return false}if(s==="HEAD"){h[D]=true}if(a||s==="CONNECT"){h[D]=true}if(Q!=null){h[D]=Q}if(A[oA]&&h[nA]++>=A[oA]){h[D]=true}if(c){h[U]=true}let d=`${s} ${o} HTTP/1.1\r\n`;if(typeof n==="string"){d+=`host: ${n}\r\n`}else{d+=A[x]}if(a){d+=`connection: upgrade\r\nupgrade: ${a}\r\n`}else if(A[j]&&!h[D]){d+="connection: keep-alive\r\n"}else{d+="connection: close\r\n"}if(g){d+=g}if(NA.sendHeaders.hasSubscribers){NA.sendHeaders.publish({request:e,headers:d,socket:h})}if(!t||l===0){if(I===0){h.write(`${d}content-length: 0\r\n\r\n`,"latin1")}else{r(I===null,"no body must not have content length");h.write(`${d}\r\n`,"latin1")}e.onRequestSent()}else if(i.isBuffer(t)){r(I===t.byteLength,"buffer body must have content length");h.cork();h.write(`${d}content-length: ${I}\r\n\r\n`,"latin1");h.write(t);h.uncork();e.onBodySent(t);e.onRequestSent();if(!C){h[D]=true}}else if(i.isBlobLike(t)){if(typeof t.stream==="function"){writeIterable({body:t.stream(),client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else{writeBlob({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}}else if(i.isStream(t)){writeStream({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else if(i.isIterable(t)){writeIterable({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else{r(false)}return true}function writeH2(A,e,t){const{body:s,method:o,path:n,host:a,upgrade:c,expectContinue:Q,signal:C,headers:l}=t;let I;if(typeof l==="string")I=g[uA](l.trim());else I=l;if(c){errorRequest(A,t,new Error("Upgrade not supported for H2"));return false}try{t.onConnect((e=>{if(t.aborted||t.completed){return}errorRequest(A,t,e||new B)}))}catch(e){errorRequest(A,t,e)}if(t.aborted){return false}let h;const d=A[IA];I[pA]=a||A[BA];I[yA]=o;if(o==="CONNECT"){e.ref();h=e.request(I,{endStream:false,signal:C});if(h.id&&!h.pending){t.onUpgrade(null,null,h);++d.openStreams}else{h.once("ready",(()=>{t.onUpgrade(null,null,h);++d.openStreams}))}h.once("close",(()=>{d.openStreams-=1;if(d.openStreams===0)e.unref()}));return true}I[wA]=n;I[RA]="https";const p=o==="PUT"||o==="POST"||o==="PATCH";if(s&&typeof s.read==="function"){s.read(0)}let y=i.bodyLength(s);if(y==null){y=t.contentLength}if(y===0||!p){y=null}if(shouldSendContentLength(o)&&y>0&&t.contentLength!=null&&t.contentLength!==y){if(A[tA]){errorRequest(A,t,new E);return false}process.emitWarning(new E)}if(y!=null){r(s,"no body must not have content length");I[mA]=`${y}`}e.ref();const w=o==="GET"||o==="HEAD";if(Q){I[DA]="100-continue";h=e.request(I,{endStream:w,signal:C});h.once("continue",writeBodyH2)}else{h=e.request(I,{endStream:w,signal:C});writeBodyH2()}++d.openStreams;h.once("response",(A=>{const{[kA]:e,...r}=A;if(t.onHeaders(Number(e),r,h.resume.bind(h),"")===false){h.pause()}}));h.once("end",(()=>{t.onComplete([])}));h.on("data",(A=>{if(t.onData(A)===false){h.pause()}}));h.once("close",(()=>{d.openStreams-=1;if(d.openStreams===0){e.unref()}}));h.once("error",(function(e){if(A[lA]&&!A[lA].destroyed&&!this.closed&&!this.destroyed){d.streams-=1;i.destroy(h,e)}}));h.once("frameError",((e,r)=>{const s=new u(`HTTP/2: "frameError" received - type ${e}, code ${r}`);errorRequest(A,t,s);if(A[lA]&&!A[lA].destroyed&&!this.closed&&!this.destroyed){d.streams-=1;i.destroy(h,s)}}));return true;function writeBodyH2(){if(!s){t.onRequestSent()}else if(i.isBuffer(s)){r(y===s.byteLength,"buffer body must have content length");h.cork();h.write(s);h.uncork();h.end();t.onBodySent(s);t.onRequestSent()}else if(i.isBlobLike(s)){if(typeof s.stream==="function"){writeIterable({client:A,request:t,contentLength:y,h2stream:h,expectsPayload:p,body:s.stream(),socket:A[Z],header:""})}else{writeBlob({body:s,client:A,request:t,contentLength:y,expectsPayload:p,h2stream:h,header:"",socket:A[Z]})}}else if(i.isStream(s)){writeStream({body:s,client:A,request:t,contentLength:y,expectsPayload:p,socket:A[Z],h2stream:h,header:""})}else if(i.isIterable(s)){writeIterable({body:s,client:A,request:t,contentLength:y,expectsPayload:p,header:"",h2stream:h,socket:A[Z]})}else{r(false)}}}function writeStream({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:a,header:g,expectsPayload:c}){r(a!==0||t[L]===0,"stream body cannot be pipelined");if(t[CA]==="h2"){const C=n(e,A,(t=>{if(t){i.destroy(e,t);i.destroy(A,t)}else{s.onRequestSent()}}));C.on("data",onPipeData);C.once("end",(()=>{C.removeListener("data",onPipeData);i.destroy(C)}));function onPipeData(A){s.onBodySent(A)}return}let E=false;const Q=new AsyncWriter({socket:o,request:s,contentLength:a,client:t,expectsPayload:c,header:g});const onData=function(A){if(E){return}try{if(!Q.write(A)&&this.pause){this.pause()}}catch(A){i.destroy(this,A)}};const onDrain=function(){if(E){return}if(e.resume){e.resume()}};const onAbort=function(){if(E){return}const A=new B;queueMicrotask((()=>onFinished(A)))};const onFinished=function(A){if(E){return}E=true;r(o.destroyed||o[v]&&t[L]<=1);o.off("drain",onDrain).off("error",onFinished);e.removeListener("data",onData).removeListener("end",onFinished).removeListener("error",onFinished).removeListener("close",onAbort);if(!A){try{Q.end()}catch(e){A=e}}Q.destroy(A);if(A&&(A.code!=="UND_ERR_INFO"||A.message!=="reset")){i.destroy(e,A)}else{i.destroy(e)}};e.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onAbort);if(e.resume){e.resume()}o.on("drain",onDrain).on("error",onFinished)}async function writeBlob({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:n,header:a,expectsPayload:g}){r(n===e.size,"blob body must have content length");const c=t[CA]==="h2";try{if(n!=null&&n!==e.size){throw new E}const r=Buffer.from(await e.arrayBuffer());if(c){A.cork();A.write(r);A.uncork()}else{o.cork();o.write(`${a}content-length: ${n}\r\n\r\n`,"latin1");o.write(r);o.uncork()}s.onBodySent(r);s.onRequestSent();if(!g){o[D]=true}resume(t)}catch(e){i.destroy(c?A:o,e)}}async function writeIterable({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:n,header:i,expectsPayload:a}){r(n!==0||t[L]===0,"iterator body cannot be pipelined");let g=null;function onDrain(){if(g){const A=g;g=null;A()}}const waitForDrain=()=>new Promise(((A,e)=>{r(g===null);if(o[W]){e(o[W])}else{g=A}}));if(t[CA]==="h2"){A.on("close",onDrain).on("drain",onDrain);try{for await(const t of e){if(o[W]){throw o[W]}const e=A.write(t);s.onBodySent(t);if(!e){await waitForDrain()}}}catch(e){A.destroy(e)}finally{s.onRequestSent();A.end();A.off("close",onDrain).off("drain",onDrain)}return}o.on("close",onDrain).on("drain",onDrain);const c=new AsyncWriter({socket:o,request:s,contentLength:n,client:t,expectsPayload:a,header:i});try{for await(const A of e){if(o[W]){throw o[W]}if(!c.write(A)){await waitForDrain()}}c.end()}catch(A){c.destroy(A)}finally{o.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({socket:A,request:e,contentLength:t,client:r,expectsPayload:s,header:o}){this.socket=A;this.request=e;this.contentLength=t;this.client=r;this.bytesWritten=0;this.expectsPayload=s;this.header=o;A[v]=true}write(A){const{socket:e,request:t,contentLength:r,client:s,bytesWritten:o,expectsPayload:n,header:i}=this;if(e[W]){throw e[W]}if(e.destroyed){return false}const a=Buffer.byteLength(A);if(!a){return true}if(r!==null&&o+a>r){if(s[tA]){throw new E}process.emitWarning(new E)}e.cork();if(o===0){if(!n){e[D]=true}if(r===null){e.write(`${i}transfer-encoding: chunked\r\n`,"latin1")}else{e.write(`${i}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){e.write(`\r\n${a.toString(16)}\r\n`,"latin1")}this.bytesWritten+=a;const g=e.write(A);e.uncork();t.onBodySent(A);if(!g){if(e[S].timeout&&e[S].timeoutType===VA){if(e[S].timeout.refresh){e[S].timeout.refresh()}}}return g}end(){const{socket:A,contentLength:e,client:t,bytesWritten:r,expectsPayload:s,header:o,request:n}=this;n.onRequestSent();A[v]=false;if(A[W]){throw A[W]}if(A.destroyed){return}if(r===0){if(s){A.write(`${o}content-length: 0\r\n\r\n`,"latin1")}else{A.write(`${o}\r\n`,"latin1")}}else if(e===null){A.write("\r\n0\r\n\r\n","latin1")}if(e!==null&&r!==e){if(t[tA]){throw new E}else{process.emitWarning(new E)}}if(A[S].timeout&&A[S].timeoutType===VA){if(A[S].timeout.refresh){A[S].timeout.refresh()}}resume(t)}destroy(A){const{socket:e,client:t}=this;e[v]=false;if(A){r(t[L]<=1,"pipeline should only contain this request");i.destroy(e,A)}}}function errorRequest(A,e,t){try{e.onError(t);r(e.aborted)}catch(t){A.emit("error",t)}}A.exports=Client},2825:(A,e,t)=>{"use strict";const{kConnected:r,kSize:s}=t(4914);class CompatWeakRef{constructor(A){this.value=A}deref(){return this.value[r]===0&&this.value[s]===0?undefined:this.value}}class CompatFinalizer{constructor(A){this.finalizer=A}register(A,e){if(A.on){A.on("disconnect",(()=>{if(A[r]===0&&A[s]===0){this.finalizer(e)}}))}}}A.exports=function(){if(process.env.NODE_V8_COVERAGE){return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:global.WeakRef||CompatWeakRef,FinalizationRegistry:global.FinalizationRegistry||CompatFinalizer}}},4882:A=>{"use strict";const e=1024;const t=4096;A.exports={maxAttributeValueSize:e,maxNameValuePairSize:t}},3903:(A,e,t)=>{"use strict";const{parseSetCookie:r}=t(8);const{stringify:s,getHeadersList:o}=t(7487);const{webidl:n}=t(19);const{Headers:i}=t(9486);function getCookies(A){n.argumentLengthCheck(arguments,1,{header:"getCookies"});n.brandCheck(A,i,{strict:false});const e=A.get("cookie");const t={};if(!e){return t}for(const A of e.split(";")){const[e,...r]=A.split("=");t[e.trim()]=r.join("=")}return t}function deleteCookie(A,e,t){n.argumentLengthCheck(arguments,2,{header:"deleteCookie"});n.brandCheck(A,i,{strict:false});e=n.converters.DOMString(e);t=n.converters.DeleteCookieAttributes(t);setCookie(A,{name:e,value:"",expires:new Date(0),...t})}function getSetCookies(A){n.argumentLengthCheck(arguments,1,{header:"getSetCookies"});n.brandCheck(A,i,{strict:false});const e=o(A).cookies;if(!e){return[]}return e.map((A=>r(Array.isArray(A)?A[1]:A)))}function setCookie(A,e){n.argumentLengthCheck(arguments,2,{header:"setCookie"});n.brandCheck(A,i,{strict:false});e=n.converters.Cookie(e);const t=s(e);if(t){A.append("Set-Cookie",s(e))}}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter((A=>{if(typeof A==="number"){return n.converters["unsigned long long"](A)}return new Date(A)})),key:"expires",defaultValue:null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:[]}]);A.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},8:(A,e,t)=>{"use strict";const{maxNameValuePairSize:r,maxAttributeValueSize:s}=t(4882);const{isCTLExcludingHtab:o}=t(7487);const{collectASequenceOfCodePointsFast:n}=t(6277);const i=t(2613);function parseSetCookie(A){if(o(A)){return null}let e="";let t="";let s="";let i="";if(A.includes(";")){const r={position:0};e=n(";",A,r);t=A.slice(r.position)}else{e=A}if(!e.includes("=")){i=e}else{const A={position:0};s=n("=",e,A);i=e.slice(A.position+1)}s=s.trim();i=i.trim();if(s.length+i.length>r){return null}return{name:s,value:i,...parseUnparsedAttributes(t)}}function parseUnparsedAttributes(A,e={}){if(A.length===0){return e}i(A[0]===";");A=A.slice(1);let t="";if(A.includes(";")){t=n(";",A,{position:0});A=A.slice(t.length)}else{t=A;A=""}let r="";let o="";if(t.includes("=")){const A={position:0};r=n("=",t,A);o=t.slice(A.position+1)}else{r=t}r=r.trim();o=o.trim();if(o.length>s){return parseUnparsedAttributes(A,e)}const a=r.toLowerCase();if(a==="expires"){const A=new Date(o);e.expires=A}else if(a==="max-age"){const t=o.charCodeAt(0);if((t<48||t>57)&&o[0]!=="-"){return parseUnparsedAttributes(A,e)}if(!/^\d+$/.test(o)){return parseUnparsedAttributes(A,e)}const r=Number(o);e.maxAge=r}else if(a==="domain"){let A=o;if(A[0]==="."){A=A.slice(1)}A=A.toLowerCase();e.domain=A}else if(a==="path"){let A="";if(o.length===0||o[0]!=="/"){A="/"}else{A=o}e.path=A}else if(a==="secure"){e.secure=true}else if(a==="httponly"){e.httpOnly=true}else if(a==="samesite"){let A="Default";const t=o.toLowerCase();if(t.includes("none")){A="None"}if(t.includes("strict")){A="Strict"}if(t.includes("lax")){A="Lax"}e.sameSite=A}else{e.unparsed??=[];e.unparsed.push(`${r}=${o}`)}return parseUnparsedAttributes(A,e)}A.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},7487:(A,e,t)=>{"use strict";const r=t(2613);const{kHeadersList:s}=t(4914);function isCTLExcludingHtab(A){if(A.length===0){return false}for(const e of A){const A=e.charCodeAt(0);if(A>=0||A<=8||(A>=10||A<=31)||A===127){return false}}}function validateCookieName(A){for(const e of A){const A=e.charCodeAt(0);if(A<=32||A>127||e==="("||e===")"||e===">"||e==="<"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}"){throw new Error("Invalid cookie name")}}}function validateCookieValue(A){for(const e of A){const A=e.charCodeAt(0);if(A<33||A===34||A===44||A===59||A===92||A>126){throw new Error("Invalid header value")}}}function validateCookiePath(A){for(const e of A){const A=e.charCodeAt(0);if(A<33||e===";"){throw new Error("Invalid cookie path")}}}function validateCookieDomain(A){if(A.startsWith("-")||A.endsWith(".")||A.endsWith("-")){throw new Error("Invalid cookie domain")}}function toIMFDate(A){if(typeof A==="number"){A=new Date(A)}const e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=e[A.getUTCDay()];const s=A.getUTCDate().toString().padStart(2,"0");const o=t[A.getUTCMonth()];const n=A.getUTCFullYear();const i=A.getUTCHours().toString().padStart(2,"0");const a=A.getUTCMinutes().toString().padStart(2,"0");const g=A.getUTCSeconds().toString().padStart(2,"0");return`${r}, ${s} ${o} ${n} ${i}:${a}:${g} GMT`}function validateCookieMaxAge(A){if(A<0){throw new Error("Invalid cookie max-age")}}function stringify(A){if(A.name.length===0){return null}validateCookieName(A.name);validateCookieValue(A.value);const e=[`${A.name}=${A.value}`];if(A.name.startsWith("__Secure-")){A.secure=true}if(A.name.startsWith("__Host-")){A.secure=true;A.domain=null;A.path="/"}if(A.secure){e.push("Secure")}if(A.httpOnly){e.push("HttpOnly")}if(typeof A.maxAge==="number"){validateCookieMaxAge(A.maxAge);e.push(`Max-Age=${A.maxAge}`)}if(A.domain){validateCookieDomain(A.domain);e.push(`Domain=${A.domain}`)}if(A.path){validateCookiePath(A.path);e.push(`Path=${A.path}`)}if(A.expires&&A.expires.toString()!=="Invalid Date"){e.push(`Expires=${toIMFDate(A.expires)}`)}if(A.sameSite){e.push(`SameSite=${A.sameSite}`)}for(const t of A.unparsed){if(!t.includes("=")){throw new Error("Invalid unparsed")}const[A,...r]=t.split("=");e.push(`${A.trim()}=${r.join("=")}`)}return e.join("; ")}let o;function getHeadersList(A){if(A[s]){return A[s]}if(!o){o=Object.getOwnPropertySymbols(A).find((A=>A.description==="headers list"));r(o,"Headers cannot be parsed")}const e=A[o];r(e);return e}A.exports={isCTLExcludingHtab:isCTLExcludingHtab,stringify:stringify,getHeadersList:getHeadersList}},7037:(A,e,t)=>{"use strict";const r=t(9278);const s=t(2613);const o=t(5647);const{InvalidArgumentError:n,ConnectTimeoutError:i}=t(6600);let a;let g;if(global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE){g=class WeakSessionCache{constructor(A){this._maxCachedSessions=A;this._sessionCache=new Map;this._sessionRegistry=new global.FinalizationRegistry((A=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:A}=this._sessionCache.keys().next();this._sessionCache.delete(A)}this._sessionCache.set(A,e)}}}function buildConnector({allowH2:A,maxCachedSessions:e,socketPath:i,timeout:c,...E}){if(e!=null&&(!Number.isInteger(e)||e<0)){throw new n("maxCachedSessions must be a positive integer or zero")}const Q={path:i,...E};const C=new g(e==null?100:e);c=c==null?1e4:c;A=A!=null?A:false;return function connect({hostname:e,host:n,protocol:i,port:g,servername:E,localAddress:B,httpSocket:l},I){let h;if(i==="https:"){if(!a){a=t(4756)}E=E||Q.servername||o.getServerName(n)||null;const r=E||e;const i=C.get(r)||null;s(r);h=a.connect({highWaterMark:16384,...Q,servername:E,session:i,localAddress:B,ALPNProtocols:A?["http/1.1","h2"]:["http/1.1"],socket:l,port:g||443,host:e});h.on("session",(function(A){C.set(r,A)}))}else{s(!l,"httpSocket can only be sent on TLS update");h=r.connect({highWaterMark:64*1024,...Q,localAddress:B,port:g||80,host:e})}if(Q.keepAlive==null||Q.keepAlive){const A=Q.keepAliveInitialDelay===undefined?6e4:Q.keepAliveInitialDelay;h.setKeepAlive(true,A)}const u=setupTimeout((()=>onConnectTimeout(h)),c);h.setNoDelay(true).once(i==="https:"?"secureConnect":"connect",(function(){u();if(I){const A=I;I=null;A(null,this)}})).on("error",(function(A){u();if(I){const e=I;I=null;e(A)}}));return h}}function setupTimeout(A,e){if(!e){return()=>{}}let t=null;let r=null;const s=setTimeout((()=>{t=setImmediate((()=>{if(process.platform==="win32"){r=setImmediate((()=>A()))}else{A()}}))}),e);return()=>{clearTimeout(s);clearImmediate(t);clearImmediate(r)}}function onConnectTimeout(A){o.destroy(A,new i)}A.exports=buildConnector},6600:A=>{"use strict";class UndiciError extends Error{constructor(A){super(A);this.name="UndiciError";this.code="UND_ERR"}}class ConnectTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ConnectTimeoutError);this.name="ConnectTimeoutError";this.message=A||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}}class HeadersTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,HeadersTimeoutError);this.name="HeadersTimeoutError";this.message=A||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}}class HeadersOverflowError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,HeadersOverflowError);this.name="HeadersOverflowError";this.message=A||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}}class BodyTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,BodyTimeoutError);this.name="BodyTimeoutError";this.message=A||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}}class ResponseStatusCodeError extends UndiciError{constructor(A,e,t,r){super(A);Error.captureStackTrace(this,ResponseStatusCodeError);this.name="ResponseStatusCodeError";this.message=A||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=r;this.status=e;this.statusCode=e;this.headers=t}}class InvalidArgumentError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InvalidArgumentError);this.name="InvalidArgumentError";this.message=A||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}}class InvalidReturnValueError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InvalidReturnValueError);this.name="InvalidReturnValueError";this.message=A||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}}class RequestAbortedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,RequestAbortedError);this.name="AbortError";this.message=A||"Request aborted";this.code="UND_ERR_ABORTED"}}class InformationalError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InformationalError);this.name="InformationalError";this.message=A||"Request information";this.code="UND_ERR_INFO"}}class RequestContentLengthMismatchError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,RequestContentLengthMismatchError);this.name="RequestContentLengthMismatchError";this.message=A||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}}class ResponseContentLengthMismatchError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ResponseContentLengthMismatchError);this.name="ResponseContentLengthMismatchError";this.message=A||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}}class ClientDestroyedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ClientDestroyedError);this.name="ClientDestroyedError";this.message=A||"The client is destroyed";this.code="UND_ERR_DESTROYED"}}class ClientClosedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ClientClosedError);this.name="ClientClosedError";this.message=A||"The client is closed";this.code="UND_ERR_CLOSED"}}class SocketError extends UndiciError{constructor(A,e){super(A);Error.captureStackTrace(this,SocketError);this.name="SocketError";this.message=A||"Socket error";this.code="UND_ERR_SOCKET";this.socket=e}}class NotSupportedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,NotSupportedError);this.name="NotSupportedError";this.message=A||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}}class BalancedPoolMissingUpstreamError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,NotSupportedError);this.name="MissingUpstreamError";this.message=A||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}}class HTTPParserError extends Error{constructor(A,e,t){super(A);Error.captureStackTrace(this,HTTPParserError);this.name="HTTPParserError";this.code=e?`HPE_${e}`:undefined;this.data=t?t.toString():undefined}}class ResponseExceededMaxSizeError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ResponseExceededMaxSizeError);this.name="ResponseExceededMaxSizeError";this.message=A||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}}class RequestRetryError extends UndiciError{constructor(A,e,{headers:t,data:r}){super(A);Error.captureStackTrace(this,RequestRetryError);this.name="RequestRetryError";this.message=A||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=e;this.data=r;this.headers=t}}A.exports={HTTPParserError:HTTPParserError,UndiciError:UndiciError,HeadersTimeoutError:HeadersTimeoutError,HeadersOverflowError:HeadersOverflowError,BodyTimeoutError:BodyTimeoutError,RequestContentLengthMismatchError:RequestContentLengthMismatchError,ConnectTimeoutError:ConnectTimeoutError,ResponseStatusCodeError:ResponseStatusCodeError,InvalidArgumentError:InvalidArgumentError,InvalidReturnValueError:InvalidReturnValueError,RequestAbortedError:RequestAbortedError,ClientDestroyedError:ClientDestroyedError,ClientClosedError:ClientClosedError,InformationalError:InformationalError,SocketError:SocketError,NotSupportedError:NotSupportedError,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError:BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError,RequestRetryError:RequestRetryError}},9286:(A,e,t)=>{"use strict";const{InvalidArgumentError:r,NotSupportedError:s}=t(6600);const o=t(2613);const{kHTTP2BuildRequest:n,kHTTP2CopyHeaders:i,kHTTP1BuildRequest:a}=t(4914);const g=t(5647);const c=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;const E=/[^\t\x20-\x7e\x80-\xff]/;const Q=/[^\u0021-\u00ff]/;const C=Symbol("handler");const B={};let l;try{const A=t(1637);B.create=A.channel("undici:request:create");B.bodySent=A.channel("undici:request:bodySent");B.headers=A.channel("undici:request:headers");B.trailers=A.channel("undici:request:trailers");B.error=A.channel("undici:request:error")}catch{B.create={hasSubscribers:false};B.bodySent={hasSubscribers:false};B.headers={hasSubscribers:false};B.trailers={hasSubscribers:false};B.error={hasSubscribers:false}}class Request{constructor(A,{path:e,method:s,body:o,headers:n,query:i,idempotent:a,blocking:E,upgrade:I,headersTimeout:h,bodyTimeout:u,reset:d,throwOnError:p,expectContinue:y},w){if(typeof e!=="string"){throw new r("path must be a string")}else if(e[0]!=="/"&&!(e.startsWith("http://")||e.startsWith("https://"))&&s!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(Q.exec(e)!==null){throw new r("invalid request path")}if(typeof s!=="string"){throw new r("method must be a string")}else if(c.exec(s)===null){throw new r("invalid request method")}if(I&&typeof I!=="string"){throw new r("upgrade must be a string")}if(h!=null&&(!Number.isFinite(h)||h<0)){throw new r("invalid headersTimeout")}if(u!=null&&(!Number.isFinite(u)||u<0)){throw new r("invalid bodyTimeout")}if(d!=null&&typeof d!=="boolean"){throw new r("invalid reset")}if(y!=null&&typeof y!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=h;this.bodyTimeout=u;this.throwOnError=p===true;this.method=s;this.abort=null;if(o==null){this.body=null}else if(g.isStream(o)){this.body=o;const A=this.body._readableState;if(!A||!A.autoDestroy){this.endHandler=function autoDestroy(){g.destroy(this)};this.body.on("end",this.endHandler)}this.errorHandler=A=>{if(this.abort){this.abort(A)}else{this.error=A}};this.body.on("error",this.errorHandler)}else if(g.isBuffer(o)){this.body=o.byteLength?o:null}else if(ArrayBuffer.isView(o)){this.body=o.buffer.byteLength?Buffer.from(o.buffer,o.byteOffset,o.byteLength):null}else if(o instanceof ArrayBuffer){this.body=o.byteLength?Buffer.from(o):null}else if(typeof o==="string"){this.body=o.length?Buffer.from(o):null}else if(g.isFormDataLike(o)||g.isIterable(o)||g.isBlobLike(o)){this.body=o}else{throw new r("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=I||null;this.path=i?g.buildURL(e,i):e;this.origin=A;this.idempotent=a==null?s==="HEAD"||s==="GET":a;this.blocking=E==null?false:E;this.reset=d==null?null:d;this.host=null;this.contentLength=null;this.contentType=null;this.headers="";this.expectContinue=y!=null?y:false;if(Array.isArray(n)){if(n.length%2!==0){throw new r("headers array must be even")}for(let A=0;A{A.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"),kHeadersList:Symbol("headers list"),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"),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"),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"),kHTTP2BuildRequest:Symbol("http2 build request"),kHTTP1BuildRequest:Symbol("http1 build request"),kHTTP2CopyHeaders:Symbol("http2 copy headers"),kHTTPConnVersion:Symbol("http connection version"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable")}},5647:(A,e,t)=>{"use strict";const r=t(2613);const{kDestroyed:s,kBodyUsed:o}=t(4914);const{IncomingMessage:n}=t(8611);const i=t(2203);const a=t(9278);const{InvalidArgumentError:g}=t(6600);const{Blob:c}=t(181);const E=t(9023);const{stringify:Q}=t(3480);const[C,B]=process.versions.node.split(".").map((A=>Number(A)));function nop(){}function isStream(A){return A&&typeof A==="object"&&typeof A.pipe==="function"&&typeof A.on==="function"}function isBlobLike(A){return c&&A instanceof c||A&&typeof A==="object"&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&/^(Blob|File)$/.test(A[Symbol.toStringTag])}function buildURL(A,e){if(A.includes("?")||A.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const t=Q(e);if(t){A+="?"+t}return A}function parseURL(A){if(typeof A==="string"){A=new URL(A);if(!/^https?:/.test(A.origin||A.protocol)){throw new g("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return A}if(!A||typeof A!=="object"){throw new g("Invalid URL: The URL argument must be a non-null object.")}if(!/^https?:/.test(A.origin||A.protocol)){throw new g("Invalid URL protocol: the URL must start with `http:` or `https:`.")}if(!(A instanceof URL)){if(A.port!=null&&A.port!==""&&!Number.isFinite(parseInt(A.port))){throw new g("Invalid URL: port must be a valid integer or a string representation of an integer.")}if(A.path!=null&&typeof A.path!=="string"){throw new g("Invalid URL path: the path must be a string or null/undefined.")}if(A.pathname!=null&&typeof A.pathname!=="string"){throw new g("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(A.hostname!=null&&typeof A.hostname!=="string"){throw new g("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(A.origin!=null&&typeof A.origin!=="string"){throw new g("Invalid URL origin: the origin must be a string or null/undefined.")}const e=A.port!=null?A.port:A.protocol==="https:"?443:80;let t=A.origin!=null?A.origin:`${A.protocol}//${A.hostname}:${e}`;let r=A.path!=null?A.path:`${A.pathname||""}${A.search||""}`;if(t.endsWith("/")){t=t.substring(0,t.length-1)}if(r&&!r.startsWith("/")){r=`/${r}`}A=new URL(t+r)}return A}function parseOrigin(A){A=parseURL(A);if(A.pathname!=="/"||A.search||A.hash){throw new g("invalid url")}return A}function getHostname(A){if(A[0]==="["){const e=A.indexOf("]");r(e!==-1);return A.substring(1,e)}const e=A.indexOf(":");if(e===-1)return A;return A.substring(0,e)}function getServerName(A){if(!A){return null}r.strictEqual(typeof A,"string");const e=getHostname(A);if(a.isIP(e)){return""}return e}function deepClone(A){return JSON.parse(JSON.stringify(A))}function isAsyncIterable(A){return!!(A!=null&&typeof A[Symbol.asyncIterator]==="function")}function isIterable(A){return!!(A!=null&&(typeof A[Symbol.iterator]==="function"||typeof A[Symbol.asyncIterator]==="function"))}function bodyLength(A){if(A==null){return 0}else if(isStream(A)){const e=A._readableState;return e&&e.objectMode===false&&e.ended===true&&Number.isFinite(e.length)?e.length:null}else if(isBlobLike(A)){return A.size!=null?A.size:null}else if(isBuffer(A)){return A.byteLength}return null}function isDestroyed(A){return!A||!!(A.destroyed||A[s])}function isReadableAborted(A){const e=A&&A._readableState;return isDestroyed(A)&&e&&!e.endEmitted}function destroy(A,e){if(A==null||!isStream(A)||isDestroyed(A)){return}if(typeof A.destroy==="function"){if(Object.getPrototypeOf(A).constructor===n){A.socket=null}A.destroy(e)}else if(e){process.nextTick(((A,e)=>{A.emit("error",e)}),A,e)}if(A.destroyed!==true){A[s]=true}}const l=/timeout=(\d+)/;function parseKeepAliveTimeout(A){const e=A.toString().match(l);return e?parseInt(e[1],10)*1e3:null}function parseHeaders(A,e={}){if(!Array.isArray(A))return A;for(let t=0;tA.toString("utf8")))}else{e[r]=A[t+1].toString("utf8")}}else{if(!Array.isArray(s)){s=[s];e[r]=s}s.push(A[t+1].toString("utf8"))}}if("content-length"in e&&"content-disposition"in e){e["content-disposition"]=Buffer.from(e["content-disposition"]).toString("latin1")}return e}function parseRawHeaders(A){const e=[];let t=false;let r=-1;for(let s=0;s{A.close()}))}else{const e=Buffer.isBuffer(r)?r:Buffer.from(r);A.enqueue(new Uint8Array(e))}return A.desiredSize>0},async cancel(A){await e.return()}},0)}function isFormDataLike(A){return A&&typeof A==="object"&&typeof A.append==="function"&&typeof A.delete==="function"&&typeof A.get==="function"&&typeof A.getAll==="function"&&typeof A.has==="function"&&typeof A.set==="function"&&A[Symbol.toStringTag]==="FormData"}function throwIfAborted(A){if(!A){return}if(typeof A.throwIfAborted==="function"){A.throwIfAborted()}else{if(A.aborted){const A=new Error("The operation was aborted");A.name="AbortError";throw A}}}function addAbortListener(A,e){if("addEventListener"in A){A.addEventListener("abort",e,{once:true});return()=>A.removeEventListener("abort",e)}A.addListener("abort",e);return()=>A.removeListener("abort",e)}const h=!!String.prototype.toWellFormed;function toUSVString(A){if(h){return`${A}`.toWellFormed()}else if(E.toUSVString){return E.toUSVString(A)}return`${A}`}function parseRangeHeader(A){if(A==null||A==="")return{start:0,end:null,size:null};const e=A?A.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return e?{start:parseInt(e[1]),end:e[2]?parseInt(e[2]):null,size:e[3]?parseInt(e[3]):null}:null}const u=Object.create(null);u.enumerable=true;A.exports={kEnumerableProperty:u,nop:nop,isDisturbed:isDisturbed,isErrored:isErrored,isReadable:isReadable,toUSVString:toUSVString,isReadableAborted:isReadableAborted,isBlobLike:isBlobLike,parseOrigin:parseOrigin,parseURL:parseURL,getServerName:getServerName,isStream:isStream,isIterable:isIterable,isAsyncIterable:isAsyncIterable,isDestroyed:isDestroyed,parseRawHeaders:parseRawHeaders,parseHeaders:parseHeaders,parseKeepAliveTimeout:parseKeepAliveTimeout,destroy:destroy,bodyLength:bodyLength,deepClone:deepClone,ReadableStreamFrom:ReadableStreamFrom,isBuffer:isBuffer,validateHandler:validateHandler,getSocketInfo:getSocketInfo,isFormDataLike:isFormDataLike,buildURL:buildURL,throwIfAborted:throwIfAborted,addAbortListener:addAbortListener,parseRangeHeader:parseRangeHeader,nodeMajor:C,nodeMinor:B,nodeHasAutoSelectFamily:C>18||C===18&&B>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]}},890:(A,e,t)=>{"use strict";const r=t(2514);const{ClientDestroyedError:s,ClientClosedError:o,InvalidArgumentError:n}=t(6600);const{kDestroy:i,kClose:a,kDispatch:g,kInterceptors:c}=t(4914);const E=Symbol("destroyed");const Q=Symbol("closed");const C=Symbol("onDestroyed");const B=Symbol("onClosed");const l=Symbol("Intercepted Dispatch");class DispatcherBase extends r{constructor(){super();this[E]=false;this[C]=null;this[Q]=false;this[B]=[]}get destroyed(){return this[E]}get closed(){return this[Q]}get interceptors(){return this[c]}set interceptors(A){if(A){for(let e=A.length-1;e>=0;e--){const A=this[c][e];if(typeof A!=="function"){throw new n("interceptor must be an function")}}}this[c]=A}close(A){if(A===undefined){return new Promise(((A,e)=>{this.close(((t,r)=>t?e(t):A(r)))}))}if(typeof A!=="function"){throw new n("invalid callback")}if(this[E]){queueMicrotask((()=>A(new s,null)));return}if(this[Q]){if(this[B]){this[B].push(A)}else{queueMicrotask((()=>A(null,null)))}return}this[Q]=true;this[B].push(A);const onClosed=()=>{const A=this[B];this[B]=null;for(let e=0;ethis.destroy())).then((()=>{queueMicrotask(onClosed)}))}destroy(A,e){if(typeof A==="function"){e=A;A=null}if(e===undefined){return new Promise(((e,t)=>{this.destroy(A,((A,r)=>A?t(A):e(r)))}))}if(typeof e!=="function"){throw new n("invalid callback")}if(this[E]){if(this[C]){this[C].push(e)}else{queueMicrotask((()=>e(null,null)))}return}if(!A){A=new s}this[E]=true;this[C]=this[C]||[];this[C].push(e);const onDestroyed=()=>{const A=this[C];this[C]=null;for(let e=0;e{queueMicrotask(onDestroyed)}))}[l](A,e){if(!this[c]||this[c].length===0){this[l]=this[g];return this[g](A,e)}let t=this[g].bind(this);for(let A=this[c].length-1;A>=0;A--){t=this[c][A](t)}this[l]=t;return t(A,e)}dispatch(A,e){if(!e||typeof e!=="object"){throw new n("handler must be an object")}try{if(!A||typeof A!=="object"){throw new n("opts must be an object.")}if(this[E]||this[C]){throw new s}if(this[Q]){throw new o}return this[l](A,e)}catch(A){if(typeof e.onError!=="function"){throw new n("invalid onError method")}e.onError(A);return false}}}A.exports=DispatcherBase},2514:(A,e,t)=>{"use strict";const r=t(4434);class Dispatcher extends r{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}}A.exports=Dispatcher},9138:(A,e,t)=>{"use strict";const r=t(3681);const s=t(5647);const{ReadableStreamFrom:o,isBlobLike:n,isReadableStreamLike:i,readableStreamClose:a,createDeferredPromise:g,fullyReadBody:c}=t(9246);const{FormData:E}=t(9512);const{kState:Q}=t(3965);const{webidl:C}=t(19);const{DOMException:B,structuredClone:l}=t(3009);const{Blob:I,File:h}=t(181);const{kBodyUsed:u}=t(4914);const d=t(2613);const{isErrored:p}=t(5647);const{isUint8Array:y,isArrayBuffer:w}=t(8253);const{File:R}=t(8516);const{parseMIMEType:m,serializeAMimeType:D}=t(6277);let k=globalThis.ReadableStream;const b=h??R;const F=new TextEncoder;const S=new TextDecoder;function extractBody(A,e=false){if(!k){k=t(3774).ReadableStream}let r=null;if(A instanceof k){r=A}else if(n(A)){r=A.stream()}else{r=new k({async pull(A){A.enqueue(typeof c==="string"?F.encode(c):c);queueMicrotask((()=>a(A)))},start(){},type:undefined})}d(i(r));let g=null;let c=null;let E=null;let Q=null;if(typeof A==="string"){c=A;Q="text/plain;charset=UTF-8"}else if(A instanceof URLSearchParams){c=A.toString();Q="application/x-www-form-urlencoded;charset=UTF-8"}else if(w(A)){c=new Uint8Array(A.slice())}else if(ArrayBuffer.isView(A)){c=new Uint8Array(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength))}else if(s.isFormDataLike(A)){const e=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`;const t=`--${e}\r\nContent-Disposition: form-data` -/*! formdata-polyfill. MIT License. Jimmy Wärting */;const escape=A=>A.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=A=>A.replace(/\r?\n|\r/g,"\r\n");const r=[];const s=new Uint8Array([13,10]);E=0;let o=false;for(const[e,n]of A){if(typeof n==="string"){const A=F.encode(t+`; name="${escape(normalizeLinefeeds(e))}"`+`\r\n\r\n${normalizeLinefeeds(n)}\r\n`);r.push(A);E+=A.byteLength}else{const A=F.encode(`${t}; name="${escape(normalizeLinefeeds(e))}"`+(n.name?`; filename="${escape(n.name)}"`:"")+"\r\n"+`Content-Type: ${n.type||"application/octet-stream"}\r\n\r\n`);r.push(A,n,s);if(typeof n.size==="number"){E+=A.byteLength+n.size+s.byteLength}else{o=true}}}const n=F.encode(`--${e}--`);r.push(n);E+=n.byteLength;if(o){E=null}c=A;g=async function*(){for(const A of r){if(A.stream){yield*A.stream()}else{yield A}}};Q="multipart/form-data; boundary="+e}else if(n(A)){c=A;E=A.size;if(A.type){Q=A.type}}else if(typeof A[Symbol.asyncIterator]==="function"){if(e){throw new TypeError("keepalive")}if(s.isDisturbed(A)||A.locked){throw new TypeError("Response body object should not be disturbed or locked")}r=A instanceof k?A:o(A)}if(typeof c==="string"||s.isBuffer(c)){E=Buffer.byteLength(c)}if(g!=null){let e;r=new k({async start(){e=g(A)[Symbol.asyncIterator]()},async pull(A){const{value:t,done:s}=await e.next();if(s){queueMicrotask((()=>{A.close()}))}else{if(!p(r)){A.enqueue(new Uint8Array(t))}}return A.desiredSize>0},async cancel(A){await e.return()},type:undefined})}const C={stream:r,source:c,length:E};return[C,Q]}function safelyExtractBody(A,e=false){if(!k){k=t(3774).ReadableStream}if(A instanceof k){d(!s.isDisturbed(A),"The body has already been consumed.");d(!A.locked,"The stream is locked.")}return extractBody(A,e)}function cloneBody(A){const[e,t]=A.stream.tee();const r=l(t,{transfer:[t]});const[,s]=r.tee();A.stream=e;return{stream:s,length:A.length,source:A.source}}async function*consumeBody(A){if(A){if(y(A)){yield A}else{const e=A.stream;if(s.isDisturbed(e)){throw new TypeError("The body has already been consumed.")}if(e.locked){throw new TypeError("The stream is locked.")}e[u]=true;yield*e}}}function throwIfAborted(A){if(A.aborted){throw new B("The operation was aborted.","AbortError")}}function bodyMixinMethods(A){const e={blob(){return specConsumeBody(this,(A=>{let e=bodyMimeType(this);if(e==="failure"){e=""}else if(e){e=D(e)}return new I([A],{type:e})}),A)},arrayBuffer(){return specConsumeBody(this,(A=>new Uint8Array(A).buffer),A)},text(){return specConsumeBody(this,utf8DecodeBytes,A)},json(){return specConsumeBody(this,parseJSONFromBytes,A)},async formData(){C.brandCheck(this,A);throwIfAborted(this[Q]);const e=this.headers.get("Content-Type");if(/multipart\/form-data/.test(e)){const A={};for(const[e,t]of this.headers)A[e.toLowerCase()]=t;const e=new E;let t;try{t=new r({headers:A,preservePath:true})}catch(A){throw new B(`${A}`,"AbortError")}t.on("field",((A,t)=>{e.append(A,t)}));t.on("file",((A,t,r,s,o)=>{const n=[];if(s==="base64"||s.toLowerCase()==="base64"){let s="";t.on("data",(A=>{s+=A.toString().replace(/[\r\n]/gm,"");const e=s.length-s.length%4;n.push(Buffer.from(s.slice(0,e),"base64"));s=s.slice(e)}));t.on("end",(()=>{n.push(Buffer.from(s,"base64"));e.append(A,new b(n,r,{type:o}))}))}else{t.on("data",(A=>{n.push(A)}));t.on("end",(()=>{e.append(A,new b(n,r,{type:o}))}))}}));const s=new Promise(((A,e)=>{t.on("finish",A);t.on("error",(A=>e(new TypeError(A))))}));if(this.body!==null)for await(const A of consumeBody(this[Q].body))t.write(A);t.end();await s;return e}else if(/application\/x-www-form-urlencoded/.test(e)){let A;try{let e="";const t=new TextDecoder("utf-8",{ignoreBOM:true});for await(const A of consumeBody(this[Q].body)){if(!y(A)){throw new TypeError("Expected Uint8Array chunk")}e+=t.decode(A,{stream:true})}e+=t.decode();A=new URLSearchParams(e)}catch(A){throw Object.assign(new TypeError,{cause:A})}const e=new E;for(const[t,r]of A){e.append(t,r)}return e}else{await Promise.resolve();throwIfAborted(this[Q]);throw C.errors.exception({header:`${A.name}.formData`,message:"Could not parse content as FormData."})}}};return e}function mixinBody(A){Object.assign(A.prototype,bodyMixinMethods(A))}async function specConsumeBody(A,e,t){C.brandCheck(A,t);throwIfAborted(A[Q]);if(bodyUnusable(A[Q].body)){throw new TypeError("Body is unusable")}const r=g();const errorSteps=A=>r.reject(A);const successSteps=A=>{try{r.resolve(e(A))}catch(A){errorSteps(A)}};if(A[Q].body==null){successSteps(new Uint8Array);return r.promise}await c(A[Q].body,successSteps,errorSteps);return r.promise}function bodyUnusable(A){return A!=null&&(A.stream.locked||s.isDisturbed(A.stream))}function utf8DecodeBytes(A){if(A.length===0){return""}if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}const e=S.decode(A);return e}function parseJSONFromBytes(A){return JSON.parse(utf8DecodeBytes(A))}function bodyMimeType(A){const{headersList:e}=A[Q];const t=e.get("content-type");if(t===null){return"failure"}return m(t)}A.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody}},3009:(A,e,t)=>{"use strict";const{MessageChannel:r,receiveMessageOnPort:s}=t(8167);const o=["GET","HEAD","POST"];const n=new Set(o);const i=[101,204,205,304];const a=[301,302,303,307,308];const g=new Set(a);const c=["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","5060","5061","6000","6566","6665","6666","6667","6668","6669","6697","10080"];const E=new Set(c);const Q=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const C=new Set(Q);const B=["follow","manual","error"];const l=["GET","HEAD","OPTIONS","TRACE"];const I=new Set(l);const h=["navigate","same-origin","no-cors","cors"];const u=["omit","same-origin","include"];const d=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const p=["content-encoding","content-language","content-location","content-type","content-length"];const y=["half"];const w=["CONNECT","TRACE","TRACK"];const R=new Set(w);const m=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const D=new Set(m);const k=globalThis.DOMException??(()=>{try{atob("~")}catch(A){return Object.getPrototypeOf(A).constructor}})();let b;const F=globalThis.structuredClone??function structuredClone(A,e=undefined){if(arguments.length===0){throw new TypeError("missing argument")}if(!b){b=new r}b.port1.unref();b.port2.unref();b.port1.postMessage(A,e?.transfer);return s(b.port2).message};A.exports={DOMException:k,structuredClone:F,subresource:m,forbiddenMethods:w,requestBodyHeader:p,referrerPolicy:Q,requestRedirect:B,requestMode:h,requestCredentials:u,requestCache:d,redirectStatus:a,corsSafeListedMethods:o,nullBodyStatus:i,safeMethods:l,badPorts:c,requestDuplex:y,subresourceSet:D,badPortsSet:E,redirectStatusSet:g,corsSafeListedMethodsSet:n,safeMethodsSet:I,forbiddenMethodsSet:R,referrerPolicySet:C}},6277:(A,e,t)=>{const r=t(2613);const{atob:s}=t(181);const{isomorphicDecode:o}=t(9246);const n=new TextEncoder;const i=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;const a=/(\u000A|\u000D|\u0009|\u0020)/;const g=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function dataURLProcessor(A){r(A.protocol==="data:");let e=URLSerializer(A,true);e=e.slice(5);const t={position:0};let s=collectASequenceOfCodePointsFast(",",e,t);const n=s.length;s=removeASCIIWhitespace(s,true,true);if(t.position>=e.length){return"failure"}t.position++;const i=e.slice(n+1);let a=stringPercentDecode(i);if(/;(\u0020){0,}base64$/i.test(s)){const A=o(a);a=forgivingBase64(A);if(a==="failure"){return"failure"}s=s.slice(0,-6);s=s.replace(/(\u0020)+$/,"");s=s.slice(0,-1)}if(s.startsWith(";")){s="text/plain"+s}let g=parseMIMEType(s);if(g==="failure"){g=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:g,body:a}}function URLSerializer(A,e=false){if(!e){return A.href}const t=A.href;const r=A.hash.length;return r===0?t:t.substring(0,t.length-r)}function collectASequenceOfCodePoints(A,e,t){let r="";while(t.positionA.length){return"failure"}e.position++;let r=collectASequenceOfCodePointsFast(";",A,e);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!i.test(r)){return"failure"}const s=t.toLowerCase();const o=r.toLowerCase();const n={type:s,subtype:o,parameters:new Map,essence:`${s}/${o}`};while(e.positiona.test(A)),A,e);let t=collectASequenceOfCodePoints((A=>A!==";"&&A!=="="),A,e);t=t.toLowerCase();if(e.positionA.length){break}let r=null;if(A[e.position]==='"'){r=collectAnHTTPQuotedString(A,e,true);collectASequenceOfCodePointsFast(";",A,e)}else{r=collectASequenceOfCodePointsFast(";",A,e);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(t.length!==0&&i.test(t)&&(r.length===0||g.test(r))&&!n.parameters.has(t)){n.parameters.set(t,r)}}return n}function forgivingBase64(A){A=A.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,"");if(A.length%4===0){A=A.replace(/=?=$/,"")}if(A.length%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(A)){return"failure"}const e=s(A);const t=new Uint8Array(e.length);for(let A=0;AA!=='"'&&A!=="\\"),A,e);if(e.position>=A.length){break}const t=A[e.position];e.position++;if(t==="\\"){if(e.position>=A.length){o+="\\";break}o+=A[e.position];e.position++}else{r(t==='"');break}}if(t){return o}return A.slice(s,e.position)}function serializeAMimeType(A){r(A!=="failure");const{parameters:e,essence:t}=A;let s=t;for(let[A,t]of e.entries()){s+=";";s+=A;s+="=";if(!i.test(t)){t=t.replace(/(\\|")/g,"\\$1");t='"'+t;t+='"'}s+=t}return s}function isHTTPWhiteSpace(A){return A==="\r"||A==="\n"||A==="\t"||A===" "}function removeHTTPWhitespace(A,e=true,t=true){let r=0;let s=A.length-1;if(e){for(;r0&&isHTTPWhiteSpace(A[s]);s--);}return A.slice(r,s+1)}function isASCIIWhitespace(A){return A==="\r"||A==="\n"||A==="\t"||A==="\f"||A===" "}function removeASCIIWhitespace(A,e=true,t=true){let r=0;let s=A.length-1;if(e){for(;r0&&isASCIIWhitespace(A[s]);s--);}return A.slice(r,s+1)}A.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType}},8516:(A,e,t)=>{"use strict";const{Blob:r,File:s}=t(181);const{types:o}=t(9023);const{kState:n}=t(3965);const{isBlobLike:i}=t(9246);const{webidl:a}=t(19);const{parseMIMEType:g,serializeAMimeType:c}=t(6277);const{kEnumerableProperty:E}=t(5647);const Q=new TextEncoder;class File extends r{constructor(A,e,t={}){a.argumentLengthCheck(arguments,2,{header:"File constructor"});A=a.converters["sequence"](A);e=a.converters.USVString(e);t=a.converters.FilePropertyBag(t);const r=e;let s=t.type;let o;A:{if(s){s=g(s);if(s==="failure"){s="";break A}s=c(s).toLowerCase()}o=t.lastModified}super(processBlobParts(A,t),{type:s});this[n]={name:r,lastModified:o,type:s}}get name(){a.brandCheck(this,File);return this[n].name}get lastModified(){a.brandCheck(this,File);return this[n].lastModified}get type(){a.brandCheck(this,File);return this[n].type}}class FileLike{constructor(A,e,t={}){const r=e;const s=t.type;const o=t.lastModified??Date.now();this[n]={blobLike:A,name:r,type:s,lastModified:o}}stream(...A){a.brandCheck(this,FileLike);return this[n].blobLike.stream(...A)}arrayBuffer(...A){a.brandCheck(this,FileLike);return this[n].blobLike.arrayBuffer(...A)}slice(...A){a.brandCheck(this,FileLike);return this[n].blobLike.slice(...A)}text(...A){a.brandCheck(this,FileLike);return this[n].blobLike.text(...A)}get size(){a.brandCheck(this,FileLike);return this[n].blobLike.size}get type(){a.brandCheck(this,FileLike);return this[n].blobLike.type}get name(){a.brandCheck(this,FileLike);return this[n].name}get lastModified(){a.brandCheck(this,FileLike);return this[n].lastModified}get[Symbol.toStringTag](){return"File"}}Object.defineProperties(File.prototype,{[Symbol.toStringTag]:{value:"File",configurable:true},name:E,lastModified:E});a.converters.Blob=a.interfaceConverter(r);a.converters.BlobPart=function(A,e){if(a.util.Type(A)==="Object"){if(i(A)){return a.converters.Blob(A,{strict:false})}if(ArrayBuffer.isView(A)||o.isAnyArrayBuffer(A)){return a.converters.BufferSource(A,e)}}return a.converters.USVString(A,e)};a.converters["sequence"]=a.sequenceConverter(a.converters.BlobPart);a.converters.FilePropertyBag=a.dictionaryConverter([{key:"lastModified",converter:a.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:a.converters.DOMString,defaultValue:""},{key:"endings",converter:A=>{A=a.converters.DOMString(A);A=A.toLowerCase();if(A!=="native"){A="transparent"}return A},defaultValue:"transparent"}]);function processBlobParts(A,e){const t=[];for(const r of A){if(typeof r==="string"){let A=r;if(e.endings==="native"){A=convertLineEndingsNative(A)}t.push(Q.encode(A))}else if(o.isAnyArrayBuffer(r)||o.isTypedArray(r)){if(!r.buffer){t.push(new Uint8Array(r))}else{t.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}}else if(i(r)){t.push(r)}}return t}function convertLineEndingsNative(A){let e="\n";if(process.platform==="win32"){e="\r\n"}return A.replace(/\r?\n/g,e)}function isFileLike(A){return s&&A instanceof s||A instanceof File||A&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&A[Symbol.toStringTag]==="File"}A.exports={File:File,FileLike:FileLike,isFileLike:isFileLike}},9512:(A,e,t)=>{"use strict";const{isBlobLike:r,toUSVString:s,makeIterator:o}=t(9246);const{kState:n}=t(3965);const{File:i,FileLike:a,isFileLike:g}=t(8516);const{webidl:c}=t(19);const{Blob:E,File:Q}=t(181);const C=Q??i;class FormData{constructor(A){if(A!==undefined){throw c.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[n]=[]}append(A,e,t=undefined){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,2,{header:"FormData.append"});if(arguments.length===3&&!r(e)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}A=c.converters.USVString(A);e=r(e)?c.converters.Blob(e,{strict:false}):c.converters.USVString(e);t=arguments.length===3?c.converters.USVString(t):undefined;const s=makeEntry(A,e,t);this[n].push(s)}delete(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.delete"});A=c.converters.USVString(A);this[n]=this[n].filter((e=>e.name!==A))}get(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.get"});A=c.converters.USVString(A);const e=this[n].findIndex((e=>e.name===A));if(e===-1){return null}return this[n][e].value}getAll(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.getAll"});A=c.converters.USVString(A);return this[n].filter((e=>e.name===A)).map((A=>A.value))}has(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.has"});A=c.converters.USVString(A);return this[n].findIndex((e=>e.name===A))!==-1}set(A,e,t=undefined){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,2,{header:"FormData.set"});if(arguments.length===3&&!r(e)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}A=c.converters.USVString(A);e=r(e)?c.converters.Blob(e,{strict:false}):c.converters.USVString(e);t=arguments.length===3?s(t):undefined;const o=makeEntry(A,e,t);const i=this[n].findIndex((e=>e.name===A));if(i!==-1){this[n]=[...this[n].slice(0,i),o,...this[n].slice(i+1).filter((e=>e.name!==A))]}else{this[n].push(o)}}entries(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","key+value")}keys(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","key")}values(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","value")}forEach(A,e=globalThis){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.forEach"});if(typeof A!=="function"){throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.")}for(const[t,r]of this){A.apply(e,[r,t,this])}}}FormData.prototype[Symbol.iterator]=FormData.prototype.entries;Object.defineProperties(FormData.prototype,{[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(A,e,t){A=Buffer.from(A).toString("utf8");if(typeof e==="string"){e=Buffer.from(e).toString("utf8")}else{if(!g(e)){e=e instanceof E?new C([e],"blob",{type:e.type}):new a(e,"blob",{type:e.type})}if(t!==undefined){const A={type:e.type,lastModified:e.lastModified};e=Q&&e instanceof Q||e instanceof i?new C([e],t,A):new a(e,t,A)}}return{name:A,value:e}}A.exports={FormData:FormData}},4629:A=>{"use strict";const e=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[e]}function setGlobalOrigin(A){if(A===undefined){Object.defineProperty(globalThis,e,{value:undefined,writable:true,enumerable:false,configurable:false});return}const t=new URL(A);if(t.protocol!=="http:"&&t.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${t.protocol}`)}Object.defineProperty(globalThis,e,{value:t,writable:true,enumerable:false,configurable:false})}A.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},9486:(A,e,t)=>{"use strict";const{kHeadersList:r,kConstruct:s}=t(4914);const{kGuard:o}=t(3965);const{kEnumerableProperty:n}=t(5647);const{makeIterator:i,isValidHeaderName:a,isValidHeaderValue:g}=t(9246);const{webidl:c}=t(19);const E=t(2613);const Q=Symbol("headers map");const C=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(A){return A===10||A===13||A===9||A===32}function headerValueNormalize(A){let e=0;let t=A.length;while(t>e&&isHTTPWhiteSpaceCharCode(A.charCodeAt(t-1)))--t;while(t>e&&isHTTPWhiteSpaceCharCode(A.charCodeAt(e)))++e;return e===0&&t===A.length?A:A.substring(e,t)}function fill(A,e){if(Array.isArray(e)){for(let t=0;t>","record"]})}}function appendHeader(A,e,t){t=headerValueNormalize(t);if(!a(e)){throw c.errors.invalidArgument({prefix:"Headers.append",value:e,type:"header name"})}else if(!g(t)){throw c.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}if(A[o]==="immutable"){throw new TypeError("immutable")}else if(A[o]==="request-no-cors"){}return A[r].append(e,t)}class HeadersList{cookies=null;constructor(A){if(A instanceof HeadersList){this[Q]=new Map(A[Q]);this[C]=A[C];this.cookies=A.cookies===null?null:[...A.cookies]}else{this[Q]=new Map(A);this[C]=null}}contains(A){A=A.toLowerCase();return this[Q].has(A)}clear(){this[Q].clear();this[C]=null;this.cookies=null}append(A,e){this[C]=null;const t=A.toLowerCase();const r=this[Q].get(t);if(r){const A=t==="cookie"?"; ":", ";this[Q].set(t,{name:r.name,value:`${r.value}${A}${e}`})}else{this[Q].set(t,{name:A,value:e})}if(t==="set-cookie"){this.cookies??=[];this.cookies.push(e)}}set(A,e){this[C]=null;const t=A.toLowerCase();if(t==="set-cookie"){this.cookies=[e]}this[Q].set(t,{name:A,value:e})}delete(A){this[C]=null;A=A.toLowerCase();if(A==="set-cookie"){this.cookies=null}this[Q].delete(A)}get(A){const e=this[Q].get(A.toLowerCase());return e===undefined?null:e.value}*[Symbol.iterator](){for(const[A,{value:e}]of this[Q]){yield[A,e]}}get entries(){const A={};if(this[Q].size){for(const{name:e,value:t}of this[Q].values()){A[e]=t}}return A}}class Headers{constructor(A=undefined){if(A===s){return}this[r]=new HeadersList;this[o]="none";if(A!==undefined){A=c.converters.HeadersInit(A);fill(this,A)}}append(A,e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.append"});A=c.converters.ByteString(A);e=c.converters.ByteString(e);return appendHeader(this,A,e)}delete(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.delete"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"})}if(this[o]==="immutable"){throw new TypeError("immutable")}else if(this[o]==="request-no-cors"){}if(!this[r].contains(A)){return}this[r].delete(A)}get(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.get"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.get",value:A,type:"header name"})}return this[r].get(A)}has(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.has"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.has",value:A,type:"header name"})}return this[r].contains(A)}set(A,e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.set"});A=c.converters.ByteString(A);e=c.converters.ByteString(e);e=headerValueNormalize(e);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.set",value:A,type:"header name"})}else if(!g(e)){throw c.errors.invalidArgument({prefix:"Headers.set",value:e,type:"header value"})}if(this[o]==="immutable"){throw new TypeError("immutable")}else if(this[o]==="request-no-cors"){}this[r].set(A,e)}getSetCookie(){c.brandCheck(this,Headers);const A=this[r].cookies;if(A){return[...A]}return[]}get[C](){if(this[r][C]){return this[r][C]}const A=[];const e=[...this[r]].sort(((A,e)=>A[0]A),"Headers","key")}return i((()=>[...this[C].values()]),"Headers","key")}values(){c.brandCheck(this,Headers);if(this[o]==="immutable"){const A=this[C];return i((()=>A),"Headers","value")}return i((()=>[...this[C].values()]),"Headers","value")}entries(){c.brandCheck(this,Headers);if(this[o]==="immutable"){const A=this[C];return i((()=>A),"Headers","key+value")}return i((()=>[...this[C].values()]),"Headers","key+value")}forEach(A,e=globalThis){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.forEach"});if(typeof A!=="function"){throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.")}for(const[t,r]of this){A.apply(e,[r,t,this])}}[Symbol.for("nodejs.util.inspect.custom")](){c.brandCheck(this,Headers);return this[r]}}Headers.prototype[Symbol.iterator]=Headers.prototype.entries;Object.defineProperties(Headers.prototype,{append:n,delete:n,get:n,has:n,set:n,getSetCookie:n,keys:n,values:n,entries:n,forEach:n,[Symbol.iterator]:{enumerable:false},[Symbol.toStringTag]:{value:"Headers",configurable:true}});c.converters.HeadersInit=function(A){if(c.util.Type(A)==="Object"){if(A[Symbol.iterator]){return c.converters["sequence>"](A)}return c.converters["record"](A)}throw c.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};A.exports={fill:fill,Headers:Headers,HeadersList:HeadersList}},1116:(A,e,t)=>{"use strict";const{Response:r,makeNetworkError:s,makeAppropriateNetworkError:o,filterResponse:n,makeResponse:i}=t(5973);const{Headers:a}=t(9486);const{Request:g,makeRequest:c}=t(1697);const E=t(3106);const{bytesMatch:Q,makePolicyContainer:C,clonePolicyContainer:B,requestBadPort:l,TAOCheck:I,appendRequestOriginHeader:h,responseLocationURL:u,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:p,tryUpgradeRequestToAPotentiallyTrustworthyURL:y,createOpaqueTimingInfo:w,appendFetchMetadata:R,corsCheck:m,crossOriginResourcePolicyCheck:D,determineRequestsReferrer:k,coarsenedSharedCurrentTime:b,createDeferredPromise:F,isBlobLike:S,sameOrigin:N,isCancelled:U,isAborted:T,isErrorLike:L,fullyReadBody:M,readableStreamClose:G,isomorphicEncode:v,urlIsLocal:Y,urlIsHttpHttpsScheme:H,urlHasHttpsScheme:J}=t(9246);const{kState:V,kHeaders:O,kGuard:P,kRealm:x}=t(3965);const _=t(2613);const{safelyExtractBody:q}=t(9138);const{redirectStatusSet:W,nullBodyStatus:j,safeMethodsSet:Z,requestBodyHeader:X,subresourceSet:K,DOMException:z}=t(3009);const{kHeadersList:$}=t(4914);const AA=t(4434);const{Readable:eA,pipeline:tA}=t(2203);const{addAbortListener:rA,isErrored:sA,isReadable:oA,nodeMajor:nA,nodeMinor:iA}=t(5647);const{dataURLProcessor:aA,serializeAMimeType:gA}=t(6277);const{TransformStream:cA}=t(3774);const{getGlobalDispatcher:EA}=t(0);const{webidl:QA}=t(19);const{STATUS_CODES:CA}=t(8611);const BA=["GET","HEAD"];let lA;let IA=globalThis.ReadableStream;class Fetch extends AA{constructor(A){super();this.dispatcher=A;this.connection=null;this.dump=false;this.state="ongoing";this.setMaxListeners(21)}terminate(A){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(A);this.emit("terminated",A)}abort(A){if(this.state!=="ongoing"){return}this.state="aborted";if(!A){A=new z("The operation was aborted.","AbortError")}this.serializedAbortReason=A;this.connection?.destroy(A);this.emit("terminated",A)}}function fetch(A,e={}){QA.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const t=F();let s;try{s=new g(A,e)}catch(A){t.reject(A);return t.promise}const o=s[V];if(s.signal.aborted){abortFetch(t,o,null,s.signal.reason);return t.promise}const n=o.client.globalObject;if(n?.constructor?.name==="ServiceWorkerGlobalScope"){o.serviceWorkers="none"}let i=null;const a=null;let c=false;let E=null;rA(s.signal,(()=>{c=true;_(E!=null);E.abort(s.signal.reason);abortFetch(t,o,i,s.signal.reason)}));const handleFetchDone=A=>finalizeAndReportTiming(A,"fetch");const processResponse=A=>{if(c){return Promise.resolve()}if(A.aborted){abortFetch(t,o,i,E.serializedAbortReason);return Promise.resolve()}if(A.type==="error"){t.reject(Object.assign(new TypeError("fetch failed"),{cause:A.error}));return Promise.resolve()}i=new r;i[V]=A;i[x]=a;i[O][$]=A.headersList;i[O][P]="immutable";i[O][x]=a;t.resolve(i)};E=fetching({request:o,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:e.dispatcher??EA()});return t.promise}function finalizeAndReportTiming(A,e="other"){if(A.type==="error"&&A.aborted){return}if(!A.urlList?.length){return}const t=A.urlList[0];let r=A.timingInfo;let s=A.cacheState;if(!H(t)){return}if(r===null){return}if(!A.timingAllowPassed){r=w({startTime:r.startTime});s=""}r.endTime=b();A.timingInfo=r;markResourceTiming(r,t,e,globalThis,s)}function markResourceTiming(A,e,t,r,s){if(nA>18||nA===18&&iA>=2){performance.markResourceTiming(A,e.href,t,r,s)}}function abortFetch(A,e,t,r){if(!r){r=new z("The operation was aborted.","AbortError")}A.reject(r);if(e.body!=null&&oA(e.body?.stream)){e.body.stream.cancel(r).catch((A=>{if(A.code==="ERR_INVALID_STATE"){return}throw A}))}if(t==null){return}const s=t[V];if(s.body!=null&&oA(s.body?.stream)){s.body.stream.cancel(r).catch((A=>{if(A.code==="ERR_INVALID_STATE"){return}throw A}))}}function fetching({request:A,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:s,processResponseConsumeBody:o,useParallelQueue:n=false,dispatcher:i}){let a=null;let g=false;if(A.client!=null){a=A.client.globalObject;g=A.client.crossOriginIsolatedCapability}const c=b(g);const E=w({startTime:c});const Q={controller:new Fetch(i),request:A,timingInfo:E,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:o,processResponseEndOfBody:s,taskDestination:a,crossOriginIsolatedCapability:g};_(!A.body||A.body.stream);if(A.window==="client"){A.window=A.client?.globalObject?.constructor?.name==="Window"?A.client:"no-window"}if(A.origin==="client"){A.origin=A.client?.origin}if(A.policyContainer==="client"){if(A.client!=null){A.policyContainer=B(A.client.policyContainer)}else{A.policyContainer=C()}}if(!A.headersList.contains("accept")){const e="*/*";A.headersList.append("accept",e)}if(!A.headersList.contains("accept-language")){A.headersList.append("accept-language","*")}if(A.priority===null){}if(K.has(A.destination)){}mainFetch(Q).catch((A=>{Q.controller.terminate(A)}));return Q.controller}async function mainFetch(A,e=false){const t=A.request;let r=null;if(t.localURLsOnly&&!Y(d(t))){r=s("local URLs only")}y(t);if(l(t)==="blocked"){r=s("bad port")}if(t.referrerPolicy===""){t.referrerPolicy=t.policyContainer.referrerPolicy}if(t.referrer!=="no-referrer"){t.referrer=k(t)}if(r===null){r=await(async()=>{const e=d(t);if(N(e,t.url)&&t.responseTainting==="basic"||e.protocol==="data:"||(t.mode==="navigate"||t.mode==="websocket")){t.responseTainting="basic";return await schemeFetch(A)}if(t.mode==="same-origin"){return s('request mode cannot be "same-origin"')}if(t.mode==="no-cors"){if(t.redirect!=="follow"){return s('redirect mode cannot be "follow" for "no-cors" request')}t.responseTainting="opaque";return await schemeFetch(A)}if(!H(d(t))){return s("URL scheme must be a HTTP(S) scheme")}t.responseTainting="cors";return await httpFetch(A)})()}if(e){return r}if(r.status!==0&&!r.internalResponse){if(t.responseTainting==="cors"){}if(t.responseTainting==="basic"){r=n(r,"basic")}else if(t.responseTainting==="cors"){r=n(r,"cors")}else if(t.responseTainting==="opaque"){r=n(r,"opaque")}else{_(false)}}let o=r.status===0?r:r.internalResponse;if(o.urlList.length===0){o.urlList.push(...t.urlList)}if(!t.timingAllowFailed){r.timingAllowPassed=true}if(r.type==="opaque"&&o.status===206&&o.rangeRequested&&!t.headers.contains("range")){r=o=s()}if(r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||j.includes(o.status))){o.body=null;A.controller.dump=true}if(t.integrity){const processBodyError=e=>fetchFinale(A,s(e));if(t.responseTainting==="opaque"||r.body==null){processBodyError(r.error);return}const processBody=e=>{if(!Q(e,t.integrity)){processBodyError("integrity mismatch");return}r.body=q(e)[0];fetchFinale(A,r)};await M(r.body,processBody,processBodyError)}else{fetchFinale(A,r)}}function schemeFetch(A){if(U(A)&&A.request.redirectCount===0){return Promise.resolve(o(A))}const{request:e}=A;const{protocol:r}=d(e);switch(r){case"about:":{return Promise.resolve(s("about scheme is not supported"))}case"blob:":{if(!lA){lA=t(181).resolveObjectURL}const A=d(e);if(A.search.length!==0){return Promise.resolve(s("NetworkError when attempting to fetch resource."))}const r=lA(A.toString());if(e.method!=="GET"||!S(r)){return Promise.resolve(s("invalid method"))}const o=q(r);const n=o[0];const a=v(`${n.length}`);const g=o[1]??"";const c=i({statusText:"OK",headersList:[["content-length",{name:"Content-Length",value:a}],["content-type",{name:"Content-Type",value:g}]]});c.body=n;return Promise.resolve(c)}case"data:":{const A=d(e);const t=aA(A);if(t==="failure"){return Promise.resolve(s("failed to fetch the data URL"))}const r=gA(t.mimeType);return Promise.resolve(i({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:r}]],body:q(t.body)[0]}))}case"file:":{return Promise.resolve(s("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(A).catch((A=>s(A)))}default:{return Promise.resolve(s("unknown scheme"))}}}function finalizeResponse(A,e){A.request.done=true;if(A.processResponseDone!=null){queueMicrotask((()=>A.processResponseDone(e)))}}function fetchFinale(A,e){if(e.type==="error"){e.urlList=[A.request.urlList[0]];e.timingInfo=w({startTime:A.timingInfo.startTime})}const processResponseEndOfBody=()=>{A.request.done=true;if(A.processResponseEndOfBody!=null){queueMicrotask((()=>A.processResponseEndOfBody(e)))}};if(A.processResponse!=null){queueMicrotask((()=>A.processResponse(e)))}if(e.body==null){processResponseEndOfBody()}else{const identityTransformAlgorithm=(A,e)=>{e.enqueue(A)};const A=new cA({start(){},transform:identityTransformAlgorithm,flush:processResponseEndOfBody},{size(){return 1}},{size(){return 1}});e.body={stream:e.body.stream.pipeThrough(A)}}if(A.processResponseConsumeBody!=null){const processBody=t=>A.processResponseConsumeBody(e,t);const processBodyError=t=>A.processResponseConsumeBody(e,t);if(e.body==null){queueMicrotask((()=>processBody(null)))}else{return M(e.body,processBody,processBodyError)}return Promise.resolve()}}async function httpFetch(A){const e=A.request;let t=null;let r=null;const o=A.timingInfo;if(e.serviceWorkers==="all"){}if(t===null){if(e.redirect==="follow"){e.serviceWorkers="none"}r=t=await httpNetworkOrCacheFetch(A);if(e.responseTainting==="cors"&&m(e,t)==="failure"){return s("cors failure")}if(I(e,t)==="failure"){e.timingAllowFailed=true}}if((e.responseTainting==="opaque"||t.type==="opaque")&&D(e.origin,e.client,e.destination,r)==="blocked"){return s("blocked")}if(W.has(r.status)){if(e.redirect!=="manual"){A.controller.connection.destroy()}if(e.redirect==="error"){t=s("unexpected redirect")}else if(e.redirect==="manual"){t=r}else if(e.redirect==="follow"){t=await httpRedirectFetch(A,t)}else{_(false)}}t.timingInfo=o;return t}function httpRedirectFetch(A,e){const t=A.request;const r=e.internalResponse?e.internalResponse:e;let o;try{o=u(r,d(t).hash);if(o==null){return e}}catch(A){return Promise.resolve(s(A))}if(!H(o)){return Promise.resolve(s("URL scheme must be a HTTP(S) scheme"))}if(t.redirectCount===20){return Promise.resolve(s("redirect count exceeded"))}t.redirectCount+=1;if(t.mode==="cors"&&(o.username||o.password)&&!N(t,o)){return Promise.resolve(s('cross origin not allowed for request mode "cors"'))}if(t.responseTainting==="cors"&&(o.username||o.password)){return Promise.resolve(s('URL cannot contain credentials for request mode "cors"'))}if(r.status!==303&&t.body!=null&&t.body.source==null){return Promise.resolve(s())}if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!BA.includes(t.method)){t.method="GET";t.body=null;for(const A of X){t.headersList.delete(A)}}if(!N(d(t),o)){t.headersList.delete("authorization");t.headersList.delete("cookie");t.headersList.delete("host")}if(t.body!=null){_(t.body.source!=null);t.body=q(t.body.source)[0]}const n=A.timingInfo;n.redirectEndTime=n.postRedirectStartTime=b(A.crossOriginIsolatedCapability);if(n.redirectStartTime===0){n.redirectStartTime=n.startTime}t.urlList.push(o);p(t,r);return mainFetch(A,true)}async function httpNetworkOrCacheFetch(A,e=false,t=false){const r=A.request;let n=null;let i=null;let a=null;const g=null;const E=false;if(r.window==="no-window"&&r.redirect==="error"){n=A;i=r}else{i=c(r);n={...A};n.request=i}const Q=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic";const C=i.body?i.body.length:null;let B=null;if(i.body==null&&["POST","PUT"].includes(i.method)){B="0"}if(C!=null){B=v(`${C}`)}if(B!=null){i.headersList.append("content-length",B)}if(C!=null&&i.keepalive){}if(i.referrer instanceof URL){i.headersList.append("referer",v(i.referrer.href))}h(i);R(i);if(!i.headersList.contains("user-agent")){i.headersList.append("user-agent",typeof esbuildDetection==="undefined"?"undici":"node")}if(i.cache==="default"&&(i.headersList.contains("if-modified-since")||i.headersList.contains("if-none-match")||i.headersList.contains("if-unmodified-since")||i.headersList.contains("if-match")||i.headersList.contains("if-range"))){i.cache="no-store"}if(i.cache==="no-cache"&&!i.preventNoCacheCacheControlHeaderModification&&!i.headersList.contains("cache-control")){i.headersList.append("cache-control","max-age=0")}if(i.cache==="no-store"||i.cache==="reload"){if(!i.headersList.contains("pragma")){i.headersList.append("pragma","no-cache")}if(!i.headersList.contains("cache-control")){i.headersList.append("cache-control","no-cache")}}if(i.headersList.contains("range")){i.headersList.append("accept-encoding","identity")}if(!i.headersList.contains("accept-encoding")){if(J(d(i))){i.headersList.append("accept-encoding","br, gzip, deflate")}else{i.headersList.append("accept-encoding","gzip, deflate")}}i.headersList.delete("host");if(Q){}if(g==null){i.cache="no-store"}if(i.mode!=="no-store"&&i.mode!=="reload"){}if(a==null){if(i.mode==="only-if-cached"){return s("only if cached")}const A=await httpNetworkFetch(n,Q,t);if(!Z.has(i.method)&&A.status>=200&&A.status<=399){}if(E&&A.status===304){}if(a==null){a=A}}a.urlList=[...i.urlList];if(i.headersList.contains("range")){a.rangeRequested=true}a.requestIncludesCredentials=Q;if(a.status===407){if(r.window==="no-window"){return s()}if(U(A)){return o(A)}return s("proxy authentication required")}if(a.status===421&&!t&&(r.body==null||r.body.source!=null)){if(U(A)){return o(A)}A.controller.connection.destroy();a=await httpNetworkOrCacheFetch(A,e,true)}if(e){}return a}async function httpNetworkFetch(A,e=false,r=false){_(!A.controller.connection||A.controller.connection.destroyed);A.controller.connection={abort:null,destroyed:false,destroy(A){if(!this.destroyed){this.destroyed=true;this.abort?.(A??new z("The operation was aborted.","AbortError"))}}};const n=A.request;let g=null;const c=A.timingInfo;const Q=null;if(Q==null){n.cache="no-store"}const C=r?"yes":"no";if(n.mode==="websocket"){}else{}let B=null;if(n.body==null&&A.processRequestEndOfBody){queueMicrotask((()=>A.processRequestEndOfBody()))}else if(n.body!=null){const processBodyChunk=async function*(e){if(U(A)){return}yield e;A.processRequestBodyChunkLength?.(e.byteLength)};const processEndOfBody=()=>{if(U(A)){return}if(A.processRequestEndOfBody){A.processRequestEndOfBody()}};const processBodyError=e=>{if(U(A)){return}if(e.name==="AbortError"){A.controller.abort()}else{A.controller.terminate(e)}};B=async function*(){try{for await(const A of n.body.stream){yield*processBodyChunk(A)}processEndOfBody()}catch(A){processBodyError(A)}}()}try{const{body:e,status:t,statusText:r,headersList:s,socket:o}=await dispatch({body:B});if(o){g=i({status:t,statusText:r,headersList:s,socket:o})}else{const o=e[Symbol.asyncIterator]();A.controller.next=()=>o.next();g=i({status:t,statusText:r,headersList:s})}}catch(e){if(e.name==="AbortError"){A.controller.connection.destroy();return o(A,e)}return s(e)}const pullAlgorithm=()=>{A.controller.resume()};const cancelAlgorithm=e=>{A.controller.abort(e)};if(!IA){IA=t(3774).ReadableStream}const l=new IA({async start(e){A.controller.controller=e},async pull(A){await pullAlgorithm(A)},async cancel(A){await cancelAlgorithm(A)}},{highWaterMark:0,size(){return 1}});g.body={stream:l};A.controller.on("terminated",onAborted);A.controller.resume=async()=>{while(true){let e;let t;try{const{done:t,value:r}=await A.controller.next();if(T(A)){break}e=t?undefined:r}catch(r){if(A.controller.ended&&!c.encodedBodySize){e=undefined}else{e=r;t=true}}if(e===undefined){G(A.controller.controller);finalizeResponse(A,g);return}c.decodedBodySize+=e?.byteLength??0;if(t){A.controller.terminate(e);return}A.controller.controller.enqueue(new Uint8Array(e));if(sA(l)){A.controller.terminate();return}if(!A.controller.controller.desiredSize){return}}};function onAborted(e){if(T(A)){g.aborted=true;if(oA(l)){A.controller.controller.error(A.controller.serializedAbortReason)}}else{if(oA(l)){A.controller.controller.error(new TypeError("terminated",{cause:L(e)?e:undefined}))}}A.controller.connection.destroy()}return g;async function dispatch({body:e}){const t=d(n);const r=A.controller.dispatcher;return new Promise(((s,o)=>r.dispatch({path:t.pathname+t.search,origin:t.origin,method:n.method,body:A.controller.dispatcher.isMockActive?n.body&&(n.body.source||n.body.stream):e,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(e){const{connection:t}=A.controller;if(t.destroyed){e(new z("The operation was aborted.","AbortError"))}else{A.controller.on("terminated",e);this.abort=t.abort=e}},onHeaders(A,e,t,r){if(A<200){return}let o=[];let i="";const g=new a;if(Array.isArray(e)){for(let A=0;AA.trim()))}else if(t.toLowerCase()==="location"){i=r}g[$].append(t,r)}}else{const A=Object.keys(e);for(const t of A){const A=e[t];if(t.toLowerCase()==="content-encoding"){o=A.toLowerCase().split(",").map((A=>A.trim())).reverse()}else if(t.toLowerCase()==="location"){i=A}g[$].append(t,A)}}this.body=new eA({read:t});const c=[];const Q=n.redirect==="follow"&&i&&W.has(A);if(n.method!=="HEAD"&&n.method!=="CONNECT"&&!j.includes(A)&&!Q){for(const A of o){if(A==="x-gzip"||A==="gzip"){c.push(E.createGunzip({flush:E.constants.Z_SYNC_FLUSH,finishFlush:E.constants.Z_SYNC_FLUSH}))}else if(A==="deflate"){c.push(E.createInflate())}else if(A==="br"){c.push(E.createBrotliDecompress())}else{c.length=0;break}}}s({status:A,statusText:r,headersList:g[$],body:c.length?tA(this.body,...c,(()=>{})):this.body.on("error",(()=>{}))});return true},onData(e){if(A.controller.dump){return}const t=e;c.encodedBodySize+=t.byteLength;return this.body.push(t)},onComplete(){if(this.abort){A.controller.off("terminated",this.abort)}A.controller.ended=true;this.body.push(null)},onError(e){if(this.abort){A.controller.off("terminated",this.abort)}this.body?.destroy(e);A.controller.terminate(e);o(e)},onUpgrade(A,e,t){if(A!==101){return}const r=new a;for(let A=0;A{"use strict";const{extractBody:r,mixinBody:s,cloneBody:o}=t(9138);const{Headers:n,fill:i,HeadersList:a}=t(9486);const{FinalizationRegistry:g}=t(2825)();const c=t(5647);const{isValidHTTPToken:E,sameOrigin:Q,normalizeMethod:C,makePolicyContainer:B,normalizeMethodRecord:l}=t(9246);const{forbiddenMethodsSet:I,corsSafeListedMethodsSet:h,referrerPolicy:u,requestRedirect:d,requestMode:p,requestCredentials:y,requestCache:w,requestDuplex:R}=t(3009);const{kEnumerableProperty:m}=c;const{kHeaders:D,kSignal:k,kState:b,kGuard:F,kRealm:S}=t(3965);const{webidl:N}=t(19);const{getGlobalOrigin:U}=t(4629);const{URLSerializer:T}=t(6277);const{kHeadersList:L,kConstruct:M}=t(4914);const G=t(2613);const{getMaxListeners:v,setMaxListeners:Y,getEventListeners:H,defaultMaxListeners:J}=t(4434);let V=globalThis.TransformStream;const O=Symbol("abortController");const P=new g((({signal:A,abort:e})=>{A.removeEventListener("abort",e)}));class Request{constructor(A,e={}){if(A===M){return}N.argumentLengthCheck(arguments,1,{header:"Request constructor"});A=N.converters.RequestInfo(A);e=N.converters.RequestInit(e);this[S]={settingsObject:{baseUrl:U(),get origin(){return this.baseUrl?.origin},policyContainer:B()}};let s=null;let o=null;const g=this[S].settingsObject.baseUrl;let u=null;if(typeof A==="string"){let e;try{e=new URL(A,g)}catch(e){throw new TypeError("Failed to parse URL from "+A,{cause:e})}if(e.username||e.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+A)}s=makeRequest({urlList:[e]});o="cors"}else{G(A instanceof Request);s=A[b];u=A[k]}const d=this[S].settingsObject.origin;let p="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&Q(s.window,d)){p=s.window}if(e.window!=null){throw new TypeError(`'window' option '${p}' must be null`)}if("window"in e){p="no-window"}s=makeRequest({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:this[S].settingsObject,window:p,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const y=Object.keys(e).length!==0;if(y){if(s.mode==="navigate"){s.mode="same-origin"}s.reloadNavigation=false;s.historyNavigation=false;s.origin="client";s.referrer="client";s.referrerPolicy="";s.url=s.urlList[s.urlList.length-1];s.urlList=[s.url]}if(e.referrer!==undefined){const A=e.referrer;if(A===""){s.referrer="no-referrer"}else{let e;try{e=new URL(A,g)}catch(e){throw new TypeError(`Referrer "${A}" is not a valid URL.`,{cause:e})}if(e.protocol==="about:"&&e.hostname==="client"||d&&!Q(e,this[S].settingsObject.baseUrl)){s.referrer="client"}else{s.referrer=e}}}if(e.referrerPolicy!==undefined){s.referrerPolicy=e.referrerPolicy}let w;if(e.mode!==undefined){w=e.mode}else{w=o}if(w==="navigate"){throw N.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(w!=null){s.mode=w}if(e.credentials!==undefined){s.credentials=e.credentials}if(e.cache!==undefined){s.cache=e.cache}if(s.cache==="only-if-cached"&&s.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(e.redirect!==undefined){s.redirect=e.redirect}if(e.integrity!=null){s.integrity=String(e.integrity)}if(e.keepalive!==undefined){s.keepalive=Boolean(e.keepalive)}if(e.method!==undefined){let A=e.method;if(!E(A)){throw new TypeError(`'${A}' is not a valid HTTP method.`)}if(I.has(A.toUpperCase())){throw new TypeError(`'${A}' HTTP method is unsupported.`)}A=l[A]??C(A);s.method=A}if(e.signal!==undefined){u=e.signal}this[b]=s;const R=new AbortController;this[k]=R.signal;this[k][S]=this[S];if(u!=null){if(!u||typeof u.aborted!=="boolean"||typeof u.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(u.aborted){R.abort(u.reason)}else{this[O]=R;const A=new WeakRef(R);const abort=function(){const e=A.deref();if(e!==undefined){e.abort(this.reason)}};try{if(typeof v==="function"&&v(u)===J){Y(100,u)}else if(H(u,"abort").length>=J){Y(100,u)}}catch{}c.addAbortListener(u,abort);P.register(R,{signal:u,abort:abort})}}this[D]=new n(M);this[D][L]=s.headersList;this[D][F]="request";this[D][S]=this[S];if(w==="no-cors"){if(!h.has(s.method)){throw new TypeError(`'${s.method} is unsupported in no-cors mode.`)}this[D][F]="request-no-cors"}if(y){const A=this[D][L];const t=e.headers!==undefined?e.headers:new a(A);A.clear();if(t instanceof a){for(const[e,r]of t){A.append(e,r)}A.cookies=t.cookies}else{i(this[D],t)}}const m=A instanceof Request?A[b].body:null;if((e.body!=null||m!=null)&&(s.method==="GET"||s.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let T=null;if(e.body!=null){const[A,t]=r(e.body,s.keepalive);T=A;if(t&&!this[D][L].contains("content-type")){this[D].append("content-type",t)}}const x=T??m;if(x!=null&&x.source==null){if(T!=null&&e.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(s.mode!=="same-origin"&&s.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}s.useCORSPreflightFlag=true}let _=x;if(T==null&&m!=null){if(c.isDisturbed(m.stream)||m.stream.locked){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}if(!V){V=t(3774).TransformStream}const A=new V;m.stream.pipeThrough(A);_={source:m.source,length:m.length,stream:A.readable}}this[b].body=_}get method(){N.brandCheck(this,Request);return this[b].method}get url(){N.brandCheck(this,Request);return T(this[b].url)}get headers(){N.brandCheck(this,Request);return this[D]}get destination(){N.brandCheck(this,Request);return this[b].destination}get referrer(){N.brandCheck(this,Request);if(this[b].referrer==="no-referrer"){return""}if(this[b].referrer==="client"){return"about:client"}return this[b].referrer.toString()}get referrerPolicy(){N.brandCheck(this,Request);return this[b].referrerPolicy}get mode(){N.brandCheck(this,Request);return this[b].mode}get credentials(){return this[b].credentials}get cache(){N.brandCheck(this,Request);return this[b].cache}get redirect(){N.brandCheck(this,Request);return this[b].redirect}get integrity(){N.brandCheck(this,Request);return this[b].integrity}get keepalive(){N.brandCheck(this,Request);return this[b].keepalive}get isReloadNavigation(){N.brandCheck(this,Request);return this[b].reloadNavigation}get isHistoryNavigation(){N.brandCheck(this,Request);return this[b].historyNavigation}get signal(){N.brandCheck(this,Request);return this[k]}get body(){N.brandCheck(this,Request);return this[b].body?this[b].body.stream:null}get bodyUsed(){N.brandCheck(this,Request);return!!this[b].body&&c.isDisturbed(this[b].body.stream)}get duplex(){N.brandCheck(this,Request);return"half"}clone(){N.brandCheck(this,Request);if(this.bodyUsed||this.body?.locked){throw new TypeError("unusable")}const A=cloneRequest(this[b]);const e=new Request(M);e[b]=A;e[S]=this[S];e[D]=new n(M);e[D][L]=A.headersList;e[D][F]=this[D][F];e[D][S]=this[D][S];const t=new AbortController;if(this.signal.aborted){t.abort(this.signal.reason)}else{c.addAbortListener(this.signal,(()=>{t.abort(this.signal.reason)}))}e[k]=t.signal;return e}}s(Request);function makeRequest(A){const e={method:"GET",localURLsOnly:false,unsafeRequest:false,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:false,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:false,credentials:"same-origin",useCredentials:false,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:false,historyNavigation:false,userActivation:false,taintedOrigin:false,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:false,done:false,timingAllowFailed:false,...A,headersList:A.headersList?new a(A.headersList):new a};e.url=e.urlList[0];return e}function cloneRequest(A){const e=makeRequest({...A,body:null});if(A.body!=null){e.body=o(A.body)}return e}Object.defineProperties(Request.prototype,{method:m,url:m,headers:m,redirect:m,clone:m,signal:m,duplex:m,destination:m,body:m,bodyUsed:m,isHistoryNavigation:m,isReloadNavigation:m,keepalive:m,integrity:m,cache:m,credentials:m,attribute:m,referrerPolicy:m,referrer:m,mode:m,[Symbol.toStringTag]:{value:"Request",configurable:true}});N.converters.Request=N.interfaceConverter(Request);N.converters.RequestInfo=function(A){if(typeof A==="string"){return N.converters.USVString(A)}if(A instanceof Request){return N.converters.Request(A)}return N.converters.USVString(A)};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:u},{key:"mode",converter:N.converters.DOMString,allowedValues:p},{key:"credentials",converter:N.converters.DOMString,allowedValues:y},{key:"cache",converter:N.converters.DOMString,allowedValues:w},{key:"redirect",converter:N.converters.DOMString,allowedValues:d},{key:"integrity",converter:N.converters.DOMString},{key:"keepalive",converter:N.converters.boolean},{key:"signal",converter:N.nullableConverter((A=>N.converters.AbortSignal(A,{strict:false})))},{key:"window",converter:N.converters.any},{key:"duplex",converter:N.converters.DOMString,allowedValues:R}]);A.exports={Request:Request,makeRequest:makeRequest}},5973:(A,e,t)=>{"use strict";const{Headers:r,HeadersList:s,fill:o}=t(9486);const{extractBody:n,cloneBody:i,mixinBody:a}=t(9138);const g=t(5647);const{kEnumerableProperty:c}=g;const{isValidReasonPhrase:E,isCancelled:Q,isAborted:C,isBlobLike:B,serializeJavascriptValueToJSONString:l,isErrorLike:I,isomorphicEncode:h}=t(9246);const{redirectStatusSet:u,nullBodyStatus:d,DOMException:p}=t(3009);const{kState:y,kHeaders:w,kGuard:R,kRealm:m}=t(3965);const{webidl:D}=t(19);const{FormData:k}=t(9512);const{getGlobalOrigin:b}=t(4629);const{URLSerializer:F}=t(6277);const{kHeadersList:S,kConstruct:N}=t(4914);const U=t(2613);const{types:T}=t(9023);const L=globalThis.ReadableStream||t(3774).ReadableStream;const M=new TextEncoder("utf-8");class Response{static error(){const A={settingsObject:{}};const e=new Response;e[y]=makeNetworkError();e[m]=A;e[w][S]=e[y].headersList;e[w][R]="immutable";e[w][m]=A;return e}static json(A,e={}){D.argumentLengthCheck(arguments,1,{header:"Response.json"});if(e!==null){e=D.converters.ResponseInit(e)}const t=M.encode(l(A));const r=n(t);const s={settingsObject:{}};const o=new Response;o[m]=s;o[w][R]="response";o[w][m]=s;initializeResponse(o,e,{body:r[0],type:"application/json"});return o}static redirect(A,e=302){const t={settingsObject:{}};D.argumentLengthCheck(arguments,1,{header:"Response.redirect"});A=D.converters.USVString(A);e=D.converters["unsigned short"](e);let r;try{r=new URL(A,b())}catch(e){throw Object.assign(new TypeError("Failed to parse URL from "+A),{cause:e})}if(!u.has(e)){throw new RangeError("Invalid status code "+e)}const s=new Response;s[m]=t;s[w][R]="immutable";s[w][m]=t;s[y].status=e;const o=h(F(r));s[y].headersList.append("location",o);return s}constructor(A=null,e={}){if(A!==null){A=D.converters.BodyInit(A)}e=D.converters.ResponseInit(e);this[m]={settingsObject:{}};this[y]=makeResponse({});this[w]=new r(N);this[w][R]="response";this[w][S]=this[y].headersList;this[w][m]=this[m];let t=null;if(A!=null){const[e,r]=n(A);t={body:e,type:r}}initializeResponse(this,e,t)}get type(){D.brandCheck(this,Response);return this[y].type}get url(){D.brandCheck(this,Response);const A=this[y].urlList;const e=A[A.length-1]??null;if(e===null){return""}return F(e,true)}get redirected(){D.brandCheck(this,Response);return this[y].urlList.length>1}get status(){D.brandCheck(this,Response);return this[y].status}get ok(){D.brandCheck(this,Response);return this[y].status>=200&&this[y].status<=299}get statusText(){D.brandCheck(this,Response);return this[y].statusText}get headers(){D.brandCheck(this,Response);return this[w]}get body(){D.brandCheck(this,Response);return this[y].body?this[y].body.stream:null}get bodyUsed(){D.brandCheck(this,Response);return!!this[y].body&&g.isDisturbed(this[y].body.stream)}clone(){D.brandCheck(this,Response);if(this.bodyUsed||this.body&&this.body.locked){throw D.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const A=cloneResponse(this[y]);const e=new Response;e[y]=A;e[m]=this[m];e[w][S]=A.headersList;e[w][R]=this[w][R];e[w][m]=this[w][m];return e}}a(Response);Object.defineProperties(Response.prototype,{type:c,url:c,status:c,ok:c,redirected:c,statusText:c,headers:c,clone:c,body:c,bodyUsed:c,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:c,redirect:c,error:c});function cloneResponse(A){if(A.internalResponse){return filterResponse(cloneResponse(A.internalResponse),A.type)}const e=makeResponse({...A,body:null});if(A.body!=null){e.body=i(A.body)}return e}function makeResponse(A){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...A,headersList:A.headersList?new s(A.headersList):new s,urlList:A.urlList?[...A.urlList]:[]}}function makeNetworkError(A){const e=I(A);return makeResponse({type:"error",status:0,error:e?A:new Error(A?String(A):A),aborted:A&&A.name==="AbortError"})}function makeFilteredResponse(A,e){e={internalResponse:A,...e};return new Proxy(A,{get(A,t){return t in e?e[t]:A[t]},set(A,t,r){U(!(t in e));A[t]=r;return true}})}function filterResponse(A,e){if(e==="basic"){return makeFilteredResponse(A,{type:"basic",headersList:A.headersList})}else if(e==="cors"){return makeFilteredResponse(A,{type:"cors",headersList:A.headersList})}else if(e==="opaque"){return makeFilteredResponse(A,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(e==="opaqueredirect"){return makeFilteredResponse(A,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{U(false)}}function makeAppropriateNetworkError(A,e=null){U(Q(A));return C(A)?makeNetworkError(Object.assign(new p("The operation was aborted.","AbortError"),{cause:e})):makeNetworkError(Object.assign(new p("Request was cancelled."),{cause:e}))}function initializeResponse(A,e,t){if(e.status!==null&&(e.status<200||e.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in e&&e.statusText!=null){if(!E(String(e.statusText))){throw new TypeError("Invalid statusText")}}if("status"in e&&e.status!=null){A[y].status=e.status}if("statusText"in e&&e.statusText!=null){A[y].statusText=e.statusText}if("headers"in e&&e.headers!=null){o(A[w],e.headers)}if(t){if(d.includes(A.status)){throw D.errors.exception({header:"Response constructor",message:"Invalid response status code "+A.status})}A[y].body=t.body;if(t.type!=null&&!A[y].headersList.contains("Content-Type")){A[y].headersList.append("content-type",t.type)}}}D.converters.ReadableStream=D.interfaceConverter(L);D.converters.FormData=D.interfaceConverter(k);D.converters.URLSearchParams=D.interfaceConverter(URLSearchParams);D.converters.XMLHttpRequestBodyInit=function(A){if(typeof A==="string"){return D.converters.USVString(A)}if(B(A)){return D.converters.Blob(A,{strict:false})}if(T.isArrayBuffer(A)||T.isTypedArray(A)||T.isDataView(A)){return D.converters.BufferSource(A)}if(g.isFormDataLike(A)){return D.converters.FormData(A,{strict:false})}if(A instanceof URLSearchParams){return D.converters.URLSearchParams(A)}return D.converters.DOMString(A)};D.converters.BodyInit=function(A){if(A instanceof L){return D.converters.ReadableStream(A)}if(A?.[Symbol.asyncIterator]){return A}return D.converters.XMLHttpRequestBodyInit(A)};D.converters.ResponseInit=D.dictionaryConverter([{key:"status",converter:D.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:D.converters.ByteString,defaultValue:""},{key:"headers",converter:D.converters.HeadersInit}]);A.exports={makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse}},3965:A=>{"use strict";A.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm")}},9246:(A,e,t)=>{"use strict";const{redirectStatusSet:r,referrerPolicySet:s,badPortsSet:o}=t(3009);const{getGlobalOrigin:n}=t(4629);const{performance:i}=t(2987);const{isBlobLike:a,toUSVString:g,ReadableStreamFrom:c}=t(5647);const E=t(2613);const{isUint8Array:Q}=t(8253);let C;try{C=t(6982)}catch{}function responseURL(A){const e=A.urlList;const t=e.length;return t===0?null:e[t-1].toString()}function responseLocationURL(A,e){if(!r.has(A.status)){return null}let t=A.headersList.get("location");if(t!==null&&isValidHeaderValue(t)){t=new URL(t,responseURL(A))}if(t&&!t.hash){t.hash=e}return t}function requestCurrentURL(A){return A.urlList[A.urlList.length-1]}function requestBadPort(A){const e=requestCurrentURL(A);if(urlIsHttpHttpsScheme(e)&&o.has(e.port)){return"blocked"}return"allowed"}function isErrorLike(A){return A instanceof Error||(A?.constructor?.name==="Error"||A?.constructor?.name==="DOMException")}function isValidReasonPhrase(A){for(let e=0;e=32&&t<=126||t>=128&&t<=255)){return false}}return true}function isTokenCharCode(A){switch(A){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 false;default:return A>=33&&A<=126}}function isValidHTTPToken(A){if(A.length===0){return false}for(let e=0;e0){for(let A=r.length;A!==0;A--){const e=r[A-1].trim();if(s.has(e)){o=e;break}}}if(o!==""){A.referrerPolicy=o}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(A){let e=null;e=A.mode;A.headersList.set("sec-fetch-mode",e)}function appendRequestOriginHeader(A){let e=A.origin;if(A.responseTainting==="cors"||A.mode==="websocket"){if(e){A.headersList.append("origin",e)}}else if(A.method!=="GET"&&A.method!=="HEAD"){switch(A.referrerPolicy){case"no-referrer":e=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(A.origin&&urlHasHttpsScheme(A.origin)&&!urlHasHttpsScheme(requestCurrentURL(A))){e=null}break;case"same-origin":if(!sameOrigin(A,requestCurrentURL(A))){e=null}break;default:}if(e){A.headersList.append("origin",e)}}}function coarsenedSharedCurrentTime(A){return i.now()}function createOpaqueTimingInfo(A){return{startTime:A.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:A.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(A){return{referrerPolicy:A.referrerPolicy}}function determineRequestsReferrer(A){const e=A.referrerPolicy;E(e);let t=null;if(A.referrer==="client"){const A=n();if(!A||A.origin==="null"){return"no-referrer"}t=new URL(A)}else if(A.referrer instanceof URL){t=A.referrer}let r=stripURLForReferrer(t);const s=stripURLForReferrer(t,true);if(r.toString().length>4096){r=s}const o=sameOrigin(A,r);const i=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(A.url);switch(e){case"origin":return s!=null?s:stripURLForReferrer(t,true);case"unsafe-url":return r;case"same-origin":return o?s:"no-referrer";case"origin-when-cross-origin":return o?r:s;case"strict-origin-when-cross-origin":{const e=requestCurrentURL(A);if(sameOrigin(r,e)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e)){return"no-referrer"}return s}case"strict-origin":case"no-referrer-when-downgrade":default:return i?"no-referrer":s}}function stripURLForReferrer(A,e){E(A instanceof URL);if(A.protocol==="file:"||A.protocol==="about:"||A.protocol==="blank:"){return"no-referrer"}A.username="";A.password="";A.hash="";if(e){A.pathname="";A.search=""}return A}function isURLPotentiallyTrustworthy(A){if(!(A instanceof URL)){return false}if(A.href==="about:blank"||A.href==="about:srcdoc"){return true}if(A.protocol==="data:")return true;if(A.protocol==="file:")return true;return isOriginPotentiallyTrustworthy(A.origin);function isOriginPotentiallyTrustworthy(A){if(A==null||A==="null")return false;const e=new URL(A);if(e.protocol==="https:"||e.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(e.hostname)||(e.hostname==="localhost"||e.hostname.includes("localhost."))||e.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(A,e){if(C===undefined){return true}const t=parseMetadata(e);if(t==="no metadata"){return true}if(t.length===0){return true}const r=t.sort(((A,e)=>e.algo.localeCompare(A.algo)));const s=r[0].algo;const o=r.filter((A=>A.algo===s));for(const e of o){const t=e.algo;let r=e.hash;if(r.endsWith("==")){r=r.slice(0,-2)}let s=C.createHash(t).update(A).digest("base64");if(s.endsWith("==")){s=s.slice(0,-2)}if(s===r){return true}let o=C.createHash(t).update(A).digest("base64url");if(o.endsWith("==")){o=o.slice(0,-2)}if(o===r){return true}}return false}const B=/((?sha256|sha384|sha512)-(?[A-z0-9+/]{1}.*={0,2}))( +[\x21-\x7e]?)?/i;function parseMetadata(A){const e=[];let t=true;const r=C.getHashes();for(const s of A.split(" ")){t=false;const A=B.exec(s);if(A===null||A.groups===undefined){continue}const o=A.groups.algo;if(r.includes(o.toLowerCase())){e.push(A.groups)}}if(t===true){return"no metadata"}return e}function tryUpgradeRequestToAPotentiallyTrustworthyURL(A){}function sameOrigin(A,e){if(A.origin===e.origin&&A.origin==="null"){return true}if(A.protocol===e.protocol&&A.hostname===e.hostname&&A.port===e.port){return true}return false}function createDeferredPromise(){let A;let e;const t=new Promise(((t,r)=>{A=t;e=r}));return{promise:t,resolve:A,reject:e}}function isAborted(A){return A.controller.state==="aborted"}function isCancelled(A){return A.controller.state==="aborted"||A.controller.state==="terminated"}const l={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"};Object.setPrototypeOf(l,null);function normalizeMethod(A){return l[A.toLowerCase()]??A}function serializeJavascriptValueToJSONString(A){const e=JSON.stringify(A);if(e===undefined){throw new TypeError("Value is not JSON serializable")}E(typeof e==="string");return e}const I=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function makeIterator(A,e,t){const r={index:0,kind:t,target:A};const s={next(){if(Object.getPrototypeOf(this)!==s){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const{index:A,kind:t,target:o}=r;const n=o();const i=n.length;if(A>=i){return{value:undefined,done:true}}const a=n[A];r.index=A+1;return iteratorResult(a,t)},[Symbol.toStringTag]:`${e} Iterator`};Object.setPrototypeOf(s,I);return Object.setPrototypeOf({},s)}function iteratorResult(A,e){let t;switch(e){case"key":{t=A[0];break}case"value":{t=A[1];break}case"key+value":{t=A;break}}return{value:t,done:false}}async function fullyReadBody(A,e,t){const r=e;const s=t;let o;try{o=A.stream.getReader()}catch(A){s(A);return}try{const A=await readAllBytes(o);r(A)}catch(A){s(A)}}let h=globalThis.ReadableStream;function isReadableStreamLike(A){if(!h){h=t(3774).ReadableStream}return A instanceof h||A[Symbol.toStringTag]==="ReadableStream"&&typeof A.tee==="function"}const u=65535;function isomorphicDecode(A){if(A.lengthA+String.fromCharCode(e)),"")}function readableStreamClose(A){try{A.close()}catch(A){if(!A.message.includes("Controller is already closed")){throw A}}}function isomorphicEncode(A){for(let e=0;eObject.prototype.hasOwnProperty.call(A,e));A.exports={isAborted:isAborted,isCancelled:isCancelled,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:c,toUSVString:g,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:isValidHTTPToken,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:a,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,makeIterator:makeIterator,isValidHeaderName:isValidHeaderName,isValidHeaderValue:isValidHeaderValue,hasOwn:d,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,isomorphicDecode:isomorphicDecode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,normalizeMethodRecord:l}},19:(A,e,t)=>{"use strict";const{types:r}=t(9023);const{hasOwn:s,toUSVString:o}=t(9246);const n={};n.converters={};n.util={};n.errors={};n.errors.exception=function(A){return new TypeError(`${A.header}: ${A.message}`)};n.errors.conversionFailed=function(A){const e=A.types.length===1?"":" one of";const t=`${A.argument} could not be converted to`+`${e}: ${A.types.join(", ")}.`;return n.errors.exception({header:A.prefix,message:t})};n.errors.invalidArgument=function(A){return n.errors.exception({header:A.prefix,message:`"${A.value}" is an invalid ${A.type}.`})};n.brandCheck=function(A,e,t=undefined){if(t?.strict!==false&&!(A instanceof e)){throw new TypeError("Illegal invocation")}else{return A?.[Symbol.toStringTag]===e.prototype[Symbol.toStringTag]}};n.argumentLengthCheck=function({length:A},e,t){if(As){throw n.errors.exception({header:"Integer conversion",message:`Value must be between ${o}-${s}, got ${i}.`})}return i}if(!Number.isNaN(i)&&r.clamp===true){i=Math.min(Math.max(i,o),s);if(Math.floor(i)%2===0){i=Math.floor(i)}else{i=Math.ceil(i)}return i}if(Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){return 0}i=n.util.IntegerPart(i);i=i%Math.pow(2,e);if(t==="signed"&&i>=Math.pow(2,e)-1){return i-Math.pow(2,e)}return i};n.util.IntegerPart=function(A){const e=Math.floor(Math.abs(A));if(A<0){return-1*e}return e};n.sequenceConverter=function(A){return e=>{if(n.util.Type(e)!=="Object"){throw n.errors.exception({header:"Sequence",message:`Value of type ${n.util.Type(e)} is not an Object.`})}const t=e?.[Symbol.iterator]?.();const r=[];if(t===undefined||typeof t.next!=="function"){throw n.errors.exception({header:"Sequence",message:"Object is not an iterator."})}while(true){const{done:e,value:s}=t.next();if(e){break}r.push(A(s))}return r}};n.recordConverter=function(A,e){return t=>{if(n.util.Type(t)!=="Object"){throw n.errors.exception({header:"Record",message:`Value of type ${n.util.Type(t)} is not an Object.`})}const s={};if(!r.isProxy(t)){const r=Object.keys(t);for(const o of r){const r=A(o);const n=e(t[o]);s[r]=n}return s}const o=Reflect.ownKeys(t);for(const r of o){const o=Reflect.getOwnPropertyDescriptor(t,r);if(o?.enumerable){const o=A(r);const n=e(t[r]);s[o]=n}}return s}};n.interfaceConverter=function(A){return(e,t={})=>{if(t.strict!==false&&!(e instanceof A)){throw n.errors.exception({header:A.name,message:`Expected ${e} to be an instance of ${A.name}.`})}return e}};n.dictionaryConverter=function(A){return e=>{const t=n.util.Type(e);const r={};if(t==="Null"||t==="Undefined"){return r}else if(t!=="Object"){throw n.errors.exception({header:"Dictionary",message:`Expected ${e} to be one of: Null, Undefined, Object.`})}for(const t of A){const{key:A,defaultValue:o,required:i,converter:a}=t;if(i===true){if(!s(e,A)){throw n.errors.exception({header:"Dictionary",message:`Missing required key "${A}".`})}}let g=e[A];const c=s(t,"defaultValue");if(c&&g!==null){g=g??o}if(i||c||g!==undefined){g=a(g);if(t.allowedValues&&!t.allowedValues.includes(g)){throw n.errors.exception({header:"Dictionary",message:`${g} is not an accepted type. Expected one of ${t.allowedValues.join(", ")}.`})}r[A]=g}}return r}};n.nullableConverter=function(A){return e=>{if(e===null){return e}return A(e)}};n.converters.DOMString=function(A,e={}){if(A===null&&e.legacyNullToEmptyString){return""}if(typeof A==="symbol"){throw new TypeError("Could not convert argument of type symbol to string.")}return String(A)};n.converters.ByteString=function(A){const e=n.converters.DOMString(A);for(let A=0;A255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${A} has a value of ${e.charCodeAt(A)} which is greater than 255.`)}}return e};n.converters.USVString=o;n.converters.boolean=function(A){const e=Boolean(A);return e};n.converters.any=function(A){return A};n.converters["long long"]=function(A){const e=n.util.ConvertToInt(A,64,"signed");return e};n.converters["unsigned long long"]=function(A){const e=n.util.ConvertToInt(A,64,"unsigned");return e};n.converters["unsigned long"]=function(A){const e=n.util.ConvertToInt(A,32,"unsigned");return e};n.converters["unsigned short"]=function(A,e){const t=n.util.ConvertToInt(A,16,"unsigned",e);return t};n.converters.ArrayBuffer=function(A,e={}){if(n.util.Type(A)!=="Object"||!r.isAnyArrayBuffer(A)){throw n.errors.conversionFailed({prefix:`${A}`,argument:`${A}`,types:["ArrayBuffer"]})}if(e.allowShared===false&&r.isSharedArrayBuffer(A)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.TypedArray=function(A,e,t={}){if(n.util.Type(A)!=="Object"||!r.isTypedArray(A)||A.constructor.name!==e.name){throw n.errors.conversionFailed({prefix:`${e.name}`,argument:`${A}`,types:[e.name]})}if(t.allowShared===false&&r.isSharedArrayBuffer(A.buffer)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.DataView=function(A,e={}){if(n.util.Type(A)!=="Object"||!r.isDataView(A)){throw n.errors.exception({header:"DataView",message:"Object is not a DataView."})}if(e.allowShared===false&&r.isSharedArrayBuffer(A.buffer)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.BufferSource=function(A,e={}){if(r.isAnyArrayBuffer(A)){return n.converters.ArrayBuffer(A,e)}if(r.isTypedArray(A)){return n.converters.TypedArray(A,A.constructor)}if(r.isDataView(A)){return n.converters.DataView(A,e)}throw new TypeError(`Could not convert ${A} to a BufferSource.`)};n.converters["sequence"]=n.sequenceConverter(n.converters.ByteString);n.converters["sequence>"]=n.sequenceConverter(n.converters["sequence"]);n.converters["record"]=n.recordConverter(n.converters.ByteString,n.converters.ByteString);A.exports={webidl:n}},3693:A=>{"use strict";function getEncoding(A){if(!A){return"failure"}switch(A.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"}}A.exports={getEncoding:getEncoding}},1393:(A,e,t)=>{"use strict";const{staticPropertyDescriptors:r,readOperation:s,fireAProgressEvent:o}=t(7844);const{kState:n,kError:i,kResult:a,kEvents:g,kAborted:c}=t(1287);const{webidl:E}=t(19);const{kEnumerableProperty:Q}=t(5647);class FileReader extends EventTarget{constructor(){super();this[n]="empty";this[a]=null;this[i]=null;this[g]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"});A=E.converters.Blob(A,{strict:false});s(this,A,"ArrayBuffer")}readAsBinaryString(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"});A=E.converters.Blob(A,{strict:false});s(this,A,"BinaryString")}readAsText(A,e=undefined){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"});A=E.converters.Blob(A,{strict:false});if(e!==undefined){e=E.converters.DOMString(e)}s(this,A,"Text",e)}readAsDataURL(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"});A=E.converters.Blob(A,{strict:false});s(this,A,"DataURL")}abort(){if(this[n]==="empty"||this[n]==="done"){this[a]=null;return}if(this[n]==="loading"){this[n]="done";this[a]=null}this[c]=true;o("abort",this);if(this[n]!=="loading"){o("loadend",this)}}get readyState(){E.brandCheck(this,FileReader);switch(this[n]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){E.brandCheck(this,FileReader);return this[a]}get error(){E.brandCheck(this,FileReader);return this[i]}get onloadend(){E.brandCheck(this,FileReader);return this[g].loadend}set onloadend(A){E.brandCheck(this,FileReader);if(this[g].loadend){this.removeEventListener("loadend",this[g].loadend)}if(typeof A==="function"){this[g].loadend=A;this.addEventListener("loadend",A)}else{this[g].loadend=null}}get onerror(){E.brandCheck(this,FileReader);return this[g].error}set onerror(A){E.brandCheck(this,FileReader);if(this[g].error){this.removeEventListener("error",this[g].error)}if(typeof A==="function"){this[g].error=A;this.addEventListener("error",A)}else{this[g].error=null}}get onloadstart(){E.brandCheck(this,FileReader);return this[g].loadstart}set onloadstart(A){E.brandCheck(this,FileReader);if(this[g].loadstart){this.removeEventListener("loadstart",this[g].loadstart)}if(typeof A==="function"){this[g].loadstart=A;this.addEventListener("loadstart",A)}else{this[g].loadstart=null}}get onprogress(){E.brandCheck(this,FileReader);return this[g].progress}set onprogress(A){E.brandCheck(this,FileReader);if(this[g].progress){this.removeEventListener("progress",this[g].progress)}if(typeof A==="function"){this[g].progress=A;this.addEventListener("progress",A)}else{this[g].progress=null}}get onload(){E.brandCheck(this,FileReader);return this[g].load}set onload(A){E.brandCheck(this,FileReader);if(this[g].load){this.removeEventListener("load",this[g].load)}if(typeof A==="function"){this[g].load=A;this.addEventListener("load",A)}else{this[g].load=null}}get onabort(){E.brandCheck(this,FileReader);return this[g].abort}set onabort(A){E.brandCheck(this,FileReader);if(this[g].abort){this.removeEventListener("abort",this[g].abort)}if(typeof A==="function"){this[g].abort=A;this.addEventListener("abort",A)}else{this[g].abort=null}}}FileReader.EMPTY=FileReader.prototype.EMPTY=0;FileReader.LOADING=FileReader.prototype.LOADING=1;FileReader.DONE=FileReader.prototype.DONE=2;Object.defineProperties(FileReader.prototype,{EMPTY:r,LOADING:r,DONE:r,readAsArrayBuffer:Q,readAsBinaryString:Q,readAsText:Q,readAsDataURL:Q,abort:Q,readyState:Q,result:Q,error:Q,onloadstart:Q,onprogress:Q,onload:Q,onabort:Q,onerror:Q,onloadend:Q,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:r,LOADING:r,DONE:r});A.exports={FileReader:FileReader}},715:(A,e,t)=>{"use strict";const{webidl:r}=t(19);const s=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(A,e={}){A=r.converters.DOMString(A);e=r.converters.ProgressEventInit(e??{});super(A,e);this[s]={lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[s].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[s].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[s].total}}r.converters.ProgressEventInit=r.dictionaryConverter([{key:"lengthComputable",converter:r.converters.boolean,defaultValue:false},{key:"loaded",converter:r.converters["unsigned long long"],defaultValue:0},{key:"total",converter:r.converters["unsigned long long"],defaultValue:0},{key:"bubbles",converter:r.converters.boolean,defaultValue:false},{key:"cancelable",converter:r.converters.boolean,defaultValue:false},{key:"composed",converter:r.converters.boolean,defaultValue:false}]);A.exports={ProgressEvent:ProgressEvent}},1287:A=>{"use strict";A.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")}},7844:(A,e,t)=>{"use strict";const{kState:r,kError:s,kResult:o,kAborted:n,kLastProgressEventFired:i}=t(1287);const{ProgressEvent:a}=t(715);const{getEncoding:g}=t(3693);const{DOMException:c}=t(3009);const{serializeAMimeType:E,parseMIMEType:Q}=t(6277);const{types:C}=t(9023);const{StringDecoder:B}=t(3193);const{btoa:l}=t(181);const I={enumerable:true,writable:false,configurable:false};function readOperation(A,e,t,a){if(A[r]==="loading"){throw new c("Invalid state","InvalidStateError")}A[r]="loading";A[o]=null;A[s]=null;const g=e.stream();const E=g.getReader();const Q=[];let B=E.read();let l=true;(async()=>{while(!A[n]){try{const{done:g,value:c}=await B;if(l&&!A[n]){queueMicrotask((()=>{fireAProgressEvent("loadstart",A)}))}l=false;if(!g&&C.isUint8Array(c)){Q.push(c);if((A[i]===undefined||Date.now()-A[i]>=50)&&!A[n]){A[i]=Date.now();queueMicrotask((()=>{fireAProgressEvent("progress",A)}))}B=E.read()}else if(g){queueMicrotask((()=>{A[r]="done";try{const r=packageData(Q,t,e.type,a);if(A[n]){return}A[o]=r;fireAProgressEvent("load",A)}catch(e){A[s]=e;fireAProgressEvent("error",A)}if(A[r]!=="loading"){fireAProgressEvent("loadend",A)}}));break}}catch(e){if(A[n]){return}queueMicrotask((()=>{A[r]="done";A[s]=e;fireAProgressEvent("error",A);if(A[r]!=="loading"){fireAProgressEvent("loadend",A)}}));break}}})()}function fireAProgressEvent(A,e){const t=new a(A,{bubbles:false,cancelable:false});e.dispatchEvent(t)}function packageData(A,e,t,r){switch(e){case"DataURL":{let e="data:";const r=Q(t||"application/octet-stream");if(r!=="failure"){e+=E(r)}e+=";base64,";const s=new B("latin1");for(const t of A){e+=l(s.write(t))}e+=l(s.end());return e}case"Text":{let e="failure";if(r){e=g(r)}if(e==="failure"&&t){const A=Q(t);if(A!=="failure"){e=g(A.parameters.get("charset"))}}if(e==="failure"){e="UTF-8"}return decode(A,e)}case"ArrayBuffer":{const e=combineByteSequences(A);return e.buffer}case"BinaryString":{let e="";const t=new B("latin1");for(const r of A){e+=t.write(r)}e+=t.end();return e}}}function decode(A,e){const t=combineByteSequences(A);const r=BOMSniffing(t);let s=0;if(r!==null){e=r;s=r==="UTF-8"?3:2}const o=t.slice(s);return new TextDecoder(e).decode(o)}function BOMSniffing(A){const[e,t,r]=A;if(e===239&&t===187&&r===191){return"UTF-8"}else if(e===254&&t===255){return"UTF-16BE"}else if(e===255&&t===254){return"UTF-16LE"}return null}function combineByteSequences(A){const e=A.reduce(((A,e)=>A+e.byteLength),0);let t=0;return A.reduce(((A,e)=>{A.set(e,t);t+=e.byteLength;return A}),new Uint8Array(e))}A.exports={staticPropertyDescriptors:I,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},0:(A,e,t)=>{"use strict";const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:s}=t(6600);const o=t(8902);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new o)}function setGlobalDispatcher(A){if(!A||typeof A.dispatch!=="function"){throw new s("Argument agent must implement Agent")}Object.defineProperty(globalThis,r,{value:A,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[r]}A.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},6265:A=>{"use strict";A.exports=class DecoratorHandler{constructor(A){this.handler=A}onConnect(...A){return this.handler.onConnect(...A)}onError(...A){return this.handler.onError(...A)}onUpgrade(...A){return this.handler.onUpgrade(...A)}onHeaders(...A){return this.handler.onHeaders(...A)}onData(...A){return this.handler.onData(...A)}onComplete(...A){return this.handler.onComplete(...A)}onBodySent(...A){return this.handler.onBodySent(...A)}}},6836:(A,e,t)=>{"use strict";const r=t(5647);const{kBodyUsed:s}=t(4914);const o=t(2613);const{InvalidArgumentError:n}=t(6600);const i=t(4434);const a=[300,301,302,303,307,308];const g=Symbol("body");class BodyAsyncIterable{constructor(A){this[g]=A;this[s]=false}async*[Symbol.asyncIterator](){o(!this[s],"disturbed");this[s]=true;yield*this[g]}}class RedirectHandler{constructor(A,e,t,a){if(e!=null&&(!Number.isInteger(e)||e<0)){throw new n("maxRedirections must be a positive number")}r.validateHandler(a,t.method,t.upgrade);this.dispatch=A;this.location=null;this.abort=null;this.opts={...t,maxRedirections:0};this.maxRedirections=e;this.handler=a;this.history=[];if(r.isStream(this.opts.body)){if(r.bodyLength(this.opts.body)===0){this.opts.body.on("data",(function(){o(false)}))}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[s]=false;i.prototype.on.call(this.opts.body,"data",(function(){this[s]=true}))}}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function"){this.opts.body=new BodyAsyncIterable(this.opts.body)}else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&r.isIterable(this.opts.body)){this.opts.body=new BodyAsyncIterable(this.opts.body)}}onConnect(A){this.abort=A;this.handler.onConnect(A,{history:this.history})}onUpgrade(A,e,t){this.handler.onUpgrade(A,e,t)}onError(A){this.handler.onError(A)}onHeaders(A,e,t,s){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(A,e);if(this.opts.origin){this.history.push(new URL(this.opts.path,this.opts.origin))}if(!this.location){return this.handler.onHeaders(A,e,t,s)}const{origin:o,pathname:n,search:i}=r.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=i?`${n}${i}`:n;this.opts.headers=cleanRequestHeaders(this.opts.headers,A===303,this.opts.origin!==o);this.opts.path=a;this.opts.origin=o;this.opts.maxRedirections=0;this.opts.query=null;if(A===303&&this.opts.method!=="HEAD"){this.opts.method="GET";this.opts.body=null}}onData(A){if(this.location){}else{return this.handler.onData(A)}}onComplete(A){if(this.location){this.location=null;this.abort=null;this.dispatch(this.opts,this)}else{this.handler.onComplete(A)}}onBodySent(A){if(this.handler.onBodySent){this.handler.onBodySent(A)}}}function parseLocation(A,e){if(a.indexOf(A)===-1){return null}for(let A=0;A{const r=t(2613);const{kRetryHandlerDefaultRetry:s}=t(4914);const{RequestRetryError:o}=t(6600);const{isDisturbed:n,parseHeaders:i,parseRangeHeader:a}=t(5647);function calculateRetryAfterHeader(A){const e=Date.now();const t=new Date(A).getTime()-e;return t}class RetryHandler{constructor(A,e){const{retryOptions:t,...r}=A;const{retry:o,maxRetries:n,maxTimeout:i,minTimeout:a,timeoutFactor:g,methods:c,errorCodes:E,retryAfter:Q,statusCodes:C}=t??{};this.dispatch=e.dispatch;this.handler=e.handler;this.opts=r;this.abort=null;this.aborted=false;this.retryOpts={retry:o??RetryHandler[s],retryAfter:Q??true,maxTimeout:i??30*1e3,timeout:a??500,timeoutFactor:g??2,maxRetries:n??5,methods:c??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:C??[500,502,503,504,429],errorCodes:E??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE"]};this.retryCount=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.handler.onConnect((A=>{this.aborted=true;if(this.abort){this.abort(A)}else{this.reason=A}}))}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(A,e,t){if(this.handler.onUpgrade){this.handler.onUpgrade(A,e,t)}}onConnect(A){if(this.aborted){A(this.reason)}else{this.abort=A}}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[s](A,{state:e,opts:t},r){const{statusCode:s,code:o,headers:n}=A;const{method:i,retryOptions:a}=t;const{maxRetries:g,timeout:c,maxTimeout:E,timeoutFactor:Q,statusCodes:C,errorCodes:B,methods:l}=a;let{counter:I,currentTimeout:h}=e;h=h!=null&&h>0?h:c;if(o&&o!=="UND_ERR_REQ_RETRY"&&o!=="UND_ERR_SOCKET"&&!B.includes(o)){r(A);return}if(Array.isArray(l)&&!l.includes(i)){r(A);return}if(s!=null&&Array.isArray(C)&&!C.includes(s)){r(A);return}if(I>g){r(A);return}let u=n!=null&&n["retry-after"];if(u){u=Number(u);u=isNaN(u)?calculateRetryAfterHeader(u):u*1e3}const d=u>0?Math.min(u,E):Math.min(h*Q**I,E);e.currentTimeout=d;setTimeout((()=>r(null)),d)}onHeaders(A,e,t,s){const n=i(e);this.retryCount+=1;if(A>=300){this.abort(new o("Request failed",A,{headers:n,count:this.retryCount}));return false}if(this.resume!=null){this.resume=null;if(A!==206){return true}const e=a(n["content-range"]);if(!e){this.abort(new o("Content-Range mismatch",A,{headers:n,count:this.retryCount}));return false}if(this.etag!=null&&this.etag!==n.etag){this.abort(new o("ETag mismatch",A,{headers:n,count:this.retryCount}));return false}const{start:s,size:i,end:g=i}=e;r(this.start===s,"content-range mismatch");r(this.end==null||this.end===g,"content-range mismatch");this.resume=t;return true}if(this.end==null){if(A===206){const o=a(n["content-range"]);if(o==null){return this.handler.onHeaders(A,e,t,s)}const{start:i,size:g,end:c=g}=o;r(i!=null&&Number.isFinite(i)&&this.start!==i,"content-range mismatch");r(Number.isFinite(i));r(c!=null&&Number.isFinite(c)&&this.end!==c,"invalid content-length");this.start=i;this.end=c}if(this.end==null){const A=n["content-length"];this.end=A!=null?Number(A):null}r(Number.isFinite(this.start));r(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=t;this.etag=n.etag!=null?n.etag:null;return this.handler.onHeaders(A,e,t,s)}const g=new o("Request failed",A,{headers:n,count:this.retryCount});this.abort(g);return false}onData(A){this.start+=A.length;return this.handler.onData(A)}onComplete(A){this.retryCount=0;return this.handler.onComplete(A)}onError(A){if(this.aborted||n(this.opts.body)){return this.handler.onError(A)}this.retryOpts.retry(A,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(A){if(A!=null||this.aborted||n(this.opts.body)){return this.handler.onError(A)}if(this.start!==0){this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??""}`}}}try{this.dispatch(this.opts,this)}catch(A){this.handler.onError(A)}}}}A.exports=RetryHandler},4288:(A,e,t)=>{"use strict";const r=t(6836);function createRedirectInterceptor({maxRedirections:A}){return e=>function Intercept(t,s){const{maxRedirections:o=A}=t;if(!o){return e(t,s)}const n=new r(e,o,t,s);t={...t,maxRedirections:0};return e(t,n)}}A.exports=createRedirectInterceptor},6862:(A,e,t)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;const r=t(4677);var s;(function(A){A[A["OK"]=0]="OK";A[A["INTERNAL"]=1]="INTERNAL";A[A["STRICT"]=2]="STRICT";A[A["LF_EXPECTED"]=3]="LF_EXPECTED";A[A["UNEXPECTED_CONTENT_LENGTH"]=4]="UNEXPECTED_CONTENT_LENGTH";A[A["CLOSED_CONNECTION"]=5]="CLOSED_CONNECTION";A[A["INVALID_METHOD"]=6]="INVALID_METHOD";A[A["INVALID_URL"]=7]="INVALID_URL";A[A["INVALID_CONSTANT"]=8]="INVALID_CONSTANT";A[A["INVALID_VERSION"]=9]="INVALID_VERSION";A[A["INVALID_HEADER_TOKEN"]=10]="INVALID_HEADER_TOKEN";A[A["INVALID_CONTENT_LENGTH"]=11]="INVALID_CONTENT_LENGTH";A[A["INVALID_CHUNK_SIZE"]=12]="INVALID_CHUNK_SIZE";A[A["INVALID_STATUS"]=13]="INVALID_STATUS";A[A["INVALID_EOF_STATE"]=14]="INVALID_EOF_STATE";A[A["INVALID_TRANSFER_ENCODING"]=15]="INVALID_TRANSFER_ENCODING";A[A["CB_MESSAGE_BEGIN"]=16]="CB_MESSAGE_BEGIN";A[A["CB_HEADERS_COMPLETE"]=17]="CB_HEADERS_COMPLETE";A[A["CB_MESSAGE_COMPLETE"]=18]="CB_MESSAGE_COMPLETE";A[A["CB_CHUNK_HEADER"]=19]="CB_CHUNK_HEADER";A[A["CB_CHUNK_COMPLETE"]=20]="CB_CHUNK_COMPLETE";A[A["PAUSED"]=21]="PAUSED";A[A["PAUSED_UPGRADE"]=22]="PAUSED_UPGRADE";A[A["PAUSED_H2_UPGRADE"]=23]="PAUSED_H2_UPGRADE";A[A["USER"]=24]="USER"})(s=e.ERROR||(e.ERROR={}));var o;(function(A){A[A["BOTH"]=0]="BOTH";A[A["REQUEST"]=1]="REQUEST";A[A["RESPONSE"]=2]="RESPONSE"})(o=e.TYPE||(e.TYPE={}));var n;(function(A){A[A["CONNECTION_KEEP_ALIVE"]=1]="CONNECTION_KEEP_ALIVE";A[A["CONNECTION_CLOSE"]=2]="CONNECTION_CLOSE";A[A["CONNECTION_UPGRADE"]=4]="CONNECTION_UPGRADE";A[A["CHUNKED"]=8]="CHUNKED";A[A["UPGRADE"]=16]="UPGRADE";A[A["CONTENT_LENGTH"]=32]="CONTENT_LENGTH";A[A["SKIPBODY"]=64]="SKIPBODY";A[A["TRAILING"]=128]="TRAILING";A[A["TRANSFER_ENCODING"]=512]="TRANSFER_ENCODING"})(n=e.FLAGS||(e.FLAGS={}));var i;(function(A){A[A["HEADERS"]=1]="HEADERS";A[A["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";A[A["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(i=e.LENIENT_FLAGS||(e.LENIENT_FLAGS={}));var a;(function(A){A[A["DELETE"]=0]="DELETE";A[A["GET"]=1]="GET";A[A["HEAD"]=2]="HEAD";A[A["POST"]=3]="POST";A[A["PUT"]=4]="PUT";A[A["CONNECT"]=5]="CONNECT";A[A["OPTIONS"]=6]="OPTIONS";A[A["TRACE"]=7]="TRACE";A[A["COPY"]=8]="COPY";A[A["LOCK"]=9]="LOCK";A[A["MKCOL"]=10]="MKCOL";A[A["MOVE"]=11]="MOVE";A[A["PROPFIND"]=12]="PROPFIND";A[A["PROPPATCH"]=13]="PROPPATCH";A[A["SEARCH"]=14]="SEARCH";A[A["UNLOCK"]=15]="UNLOCK";A[A["BIND"]=16]="BIND";A[A["REBIND"]=17]="REBIND";A[A["UNBIND"]=18]="UNBIND";A[A["ACL"]=19]="ACL";A[A["REPORT"]=20]="REPORT";A[A["MKACTIVITY"]=21]="MKACTIVITY";A[A["CHECKOUT"]=22]="CHECKOUT";A[A["MERGE"]=23]="MERGE";A[A["M-SEARCH"]=24]="M-SEARCH";A[A["NOTIFY"]=25]="NOTIFY";A[A["SUBSCRIBE"]=26]="SUBSCRIBE";A[A["UNSUBSCRIBE"]=27]="UNSUBSCRIBE";A[A["PATCH"]=28]="PATCH";A[A["PURGE"]=29]="PURGE";A[A["MKCALENDAR"]=30]="MKCALENDAR";A[A["LINK"]=31]="LINK";A[A["UNLINK"]=32]="UNLINK";A[A["SOURCE"]=33]="SOURCE";A[A["PRI"]=34]="PRI";A[A["DESCRIBE"]=35]="DESCRIBE";A[A["ANNOUNCE"]=36]="ANNOUNCE";A[A["SETUP"]=37]="SETUP";A[A["PLAY"]=38]="PLAY";A[A["PAUSE"]=39]="PAUSE";A[A["TEARDOWN"]=40]="TEARDOWN";A[A["GET_PARAMETER"]=41]="GET_PARAMETER";A[A["SET_PARAMETER"]=42]="SET_PARAMETER";A[A["REDIRECT"]=43]="REDIRECT";A[A["RECORD"]=44]="RECORD";A[A["FLUSH"]=45]="FLUSH"})(a=e.METHODS||(e.METHODS={}));e.METHODS_HTTP=[a.DELETE,a.GET,a.HEAD,a.POST,a.PUT,a.CONNECT,a.OPTIONS,a.TRACE,a.COPY,a.LOCK,a.MKCOL,a.MOVE,a.PROPFIND,a.PROPPATCH,a.SEARCH,a.UNLOCK,a.BIND,a.REBIND,a.UNBIND,a.ACL,a.REPORT,a.MKACTIVITY,a.CHECKOUT,a.MERGE,a["M-SEARCH"],a.NOTIFY,a.SUBSCRIBE,a.UNSUBSCRIBE,a.PATCH,a.PURGE,a.MKCALENDAR,a.LINK,a.UNLINK,a.PRI,a.SOURCE];e.METHODS_ICE=[a.SOURCE];e.METHODS_RTSP=[a.OPTIONS,a.DESCRIBE,a.ANNOUNCE,a.SETUP,a.PLAY,a.PAUSE,a.TEARDOWN,a.GET_PARAMETER,a.SET_PARAMETER,a.REDIRECT,a.RECORD,a.FLUSH,a.GET,a.POST];e.METHOD_MAP=r.enumToMap(a);e.H_METHOD_MAP={};Object.keys(e.METHOD_MAP).forEach((A=>{if(/^H/.test(A)){e.H_METHOD_MAP[A]=e.METHOD_MAP[A]}}));var g;(function(A){A[A["SAFE"]=0]="SAFE";A[A["SAFE_WITH_CB"]=1]="SAFE_WITH_CB";A[A["UNSAFE"]=2]="UNSAFE"})(g=e.FINISH||(e.FINISH={}));e.ALPHA=[];for(let A="A".charCodeAt(0);A<="Z".charCodeAt(0);A++){e.ALPHA.push(String.fromCharCode(A));e.ALPHA.push(String.fromCharCode(A+32))}e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};e.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};e.NUM=["0","1","2","3","4","5","6","7","8","9"];e.ALPHANUM=e.ALPHA.concat(e.NUM);e.MARK=["-","_",".","!","~","*","'","(",")"];e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat(["%",";",":","&","=","+","$",","]);e.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(e.ALPHANUM);e.URL_CHAR=e.STRICT_URL_CHAR.concat(["\t","\f"]);for(let A=128;A<=255;A++){e.URL_CHAR.push(A)}e.HEX=e.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);e.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(e.ALPHANUM);e.TOKEN=e.STRICT_TOKEN.concat([" "]);e.HEADER_CHARS=["\t"];for(let A=32;A<=255;A++){if(A!==127){e.HEADER_CHARS.push(A)}}e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter((A=>A!==44));e.MAJOR=e.NUM_MAP;e.MINOR=e.MAJOR;var c;(function(A){A[A["GENERAL"]=0]="GENERAL";A[A["CONNECTION"]=1]="CONNECTION";A[A["CONTENT_LENGTH"]=2]="CONTENT_LENGTH";A[A["TRANSFER_ENCODING"]=3]="TRANSFER_ENCODING";A[A["UPGRADE"]=4]="UPGRADE";A[A["CONNECTION_KEEP_ALIVE"]=5]="CONNECTION_KEEP_ALIVE";A[A["CONNECTION_CLOSE"]=6]="CONNECTION_CLOSE";A[A["CONNECTION_UPGRADE"]=7]="CONNECTION_UPGRADE";A[A["TRANSFER_ENCODING_CHUNKED"]=8]="TRANSFER_ENCODING_CHUNKED"})(c=e.HEADER_STATE||(e.HEADER_STATE={}));e.SPECIAL_HEADERS={connection:c.CONNECTION,"content-length":c.CONTENT_LENGTH,"proxy-connection":c.CONNECTION,"transfer-encoding":c.TRANSFER_ENCODING,upgrade:c.UPGRADE}},9443:A=>{A.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="},2585:A=>{A.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCrLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC0kBAXsgAEEQav0MAAAAAAAAAAAAAAAAAAAAACIB/QsDACAAIAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="},4677:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.enumToMap=void 0;function enumToMap(A){const e={};Object.keys(A).forEach((t=>{const r=A[t];if(typeof r==="number"){e[t]=r}}));return e}e.enumToMap=enumToMap},7094:(A,e,t)=>{"use strict";const{kClients:r}=t(4914);const s=t(8902);const{kAgent:o,kMockAgentSet:n,kMockAgentGet:i,kDispatches:a,kIsMockActive:g,kNetConnect:c,kGetNetConnect:E,kOptions:Q,kFactory:C}=t(9442);const B=t(7480);const l=t(2405);const{matchValue:I,buildMockOptions:h}=t(154);const{InvalidArgumentError:u,UndiciError:d}=t(6600);const p=t(2514);const y=t(1246);const w=t(6749);class FakeWeakRef{constructor(A){this.value=A}deref(){return this.value}}class MockAgent extends p{constructor(A){super(A);this[c]=true;this[g]=true;if(A&&A.agent&&typeof A.agent.dispatch!=="function"){throw new u("Argument opts.agent must implement Agent")}const e=A&&A.agent?A.agent:new s(A);this[o]=e;this[r]=e[r];this[Q]=h(A)}get(A){let e=this[i](A);if(!e){e=this[C](A);this[n](A,e)}return e}dispatch(A,e){this.get(A.origin);return this[o].dispatch(A,e)}async close(){await this[o].close();this[r].clear()}deactivate(){this[g]=false}activate(){this[g]=true}enableNetConnect(A){if(typeof A==="string"||typeof A==="function"||A instanceof RegExp){if(Array.isArray(this[c])){this[c].push(A)}else{this[c]=[A]}}else if(typeof A==="undefined"){this[c]=true}else{throw new u("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[c]=false}get isMockActive(){return this[g]}[n](A,e){this[r].set(A,new FakeWeakRef(e))}[C](A){const e=Object.assign({agent:this},this[Q]);return this[Q]&&this[Q].connections===1?new B(A,e):new l(A,e)}[i](A){const e=this[r].get(A);if(e){return e.deref()}if(typeof A!=="string"){const e=this[C]("http://localhost:9999");this[n](A,e);return e}for(const[e,t]of Array.from(this[r])){const r=t.deref();if(r&&typeof e!=="string"&&I(e,A)){const e=this[C](A);this[n](A,e);e[a]=r[a];return e}}}[E](){return this[c]}pendingInterceptors(){const A=this[r];return Array.from(A.entries()).flatMap((([A,e])=>e.deref()[a].map((e=>({...e,origin:A}))))).filter((({pending:A})=>A))}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new w}={}){const e=this.pendingInterceptors();if(e.length===0){return}const t=new y("interceptor","interceptors").pluralize(e.length);throw new d(`\n${t.count} ${t.noun} ${t.is} pending:\n\n${A.format(e)}\n`.trim())}}A.exports=MockAgent},7480:(A,e,t)=>{"use strict";const{promisify:r}=t(9023);const s=t(5752);const{buildMockDispatch:o}=t(154);const{kDispatches:n,kMockAgent:i,kClose:a,kOriginalClose:g,kOrigin:c,kOriginalDispatch:E,kConnected:Q}=t(9442);const{MockInterceptor:C}=t(4900);const B=t(4914);const{InvalidArgumentError:l}=t(6600);class MockClient extends s{constructor(A,e){super(A,e);if(!e||!e.agent||typeof e.agent.dispatch!=="function"){throw new l("Argument opts.agent must implement Agent")}this[i]=e.agent;this[c]=A;this[n]=[];this[Q]=1;this[E]=this.dispatch;this[g]=this.close.bind(this);this.dispatch=o.call(this);this.close=this[a]}get[B.kConnected](){return this[Q]}intercept(A){return new C(A,this[n])}async[a](){await r(this[g])();this[Q]=0;this[i][B.kClients].delete(this[c])}}A.exports=MockClient},4632:(A,e,t)=>{"use strict";const{UndiciError:r}=t(6600);class MockNotMatchedError extends r{constructor(A){super(A);Error.captureStackTrace(this,MockNotMatchedError);this.name="MockNotMatchedError";this.message=A||"The request does not match any registered mock dispatches";this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}}A.exports={MockNotMatchedError:MockNotMatchedError}},4900:(A,e,t)=>{"use strict";const{getResponseData:r,buildKey:s,addMockDispatch:o}=t(154);const{kDispatches:n,kDispatchKey:i,kDefaultHeaders:a,kDefaultTrailers:g,kContentLength:c,kMockDispatch:E}=t(9442);const{InvalidArgumentError:Q}=t(6600);const{buildURL:C}=t(5647);class MockScope{constructor(A){this[E]=A}delay(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0){throw new Q("waitInMs must be a valid integer > 0")}this[E].delay=A;return this}persist(){this[E].persist=true;return this}times(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0){throw new Q("repeatTimes must be a valid integer > 0")}this[E].times=A;return this}}class MockInterceptor{constructor(A,e){if(typeof A!=="object"){throw new Q("opts must be an object")}if(typeof A.path==="undefined"){throw new Q("opts.path must be defined")}if(typeof A.method==="undefined"){A.method="GET"}if(typeof A.path==="string"){if(A.query){A.path=C(A.path,A.query)}else{const e=new URL(A.path,"data://");A.path=e.pathname+e.search}}if(typeof A.method==="string"){A.method=A.method.toUpperCase()}this[i]=s(A);this[n]=e;this[a]={};this[g]={};this[c]=false}createMockScopeDispatchData(A,e,t={}){const s=r(e);const o=this[c]?{"content-length":s.length}:{};const n={...this[a],...o,...t.headers};const i={...this[g],...t.trailers};return{statusCode:A,data:e,headers:n,trailers:i}}validateReplyParameters(A,e,t){if(typeof A==="undefined"){throw new Q("statusCode must be defined")}if(typeof e==="undefined"){throw new Q("data must be defined")}if(typeof t!=="object"){throw new Q("responseOptions must be an object")}}reply(A){if(typeof A==="function"){const wrappedDefaultsCallback=e=>{const t=A(e);if(typeof t!=="object"){throw new Q("reply options callback must return an object")}const{statusCode:r,data:s="",responseOptions:o={}}=t;this.validateReplyParameters(r,s,o);return{...this.createMockScopeDispatchData(r,s,o)}};const e=o(this[n],this[i],wrappedDefaultsCallback);return new MockScope(e)}const[e,t="",r={}]=[...arguments];this.validateReplyParameters(e,t,r);const s=this.createMockScopeDispatchData(e,t,r);const a=o(this[n],this[i],s);return new MockScope(a)}replyWithError(A){if(typeof A==="undefined"){throw new Q("error must be defined")}const e=o(this[n],this[i],{error:A});return new MockScope(e)}defaultReplyHeaders(A){if(typeof A==="undefined"){throw new Q("headers must be defined")}this[a]=A;return this}defaultReplyTrailers(A){if(typeof A==="undefined"){throw new Q("trailers must be defined")}this[g]=A;return this}replyContentLength(){this[c]=true;return this}}A.exports.MockInterceptor=MockInterceptor;A.exports.MockScope=MockScope},2405:(A,e,t)=>{"use strict";const{promisify:r}=t(9023);const s=t(1013);const{buildMockDispatch:o}=t(154);const{kDispatches:n,kMockAgent:i,kClose:a,kOriginalClose:g,kOrigin:c,kOriginalDispatch:E,kConnected:Q}=t(9442);const{MockInterceptor:C}=t(4900);const B=t(4914);const{InvalidArgumentError:l}=t(6600);class MockPool extends s{constructor(A,e){super(A,e);if(!e||!e.agent||typeof e.agent.dispatch!=="function"){throw new l("Argument opts.agent must implement Agent")}this[i]=e.agent;this[c]=A;this[n]=[];this[Q]=1;this[E]=this.dispatch;this[g]=this.close.bind(this);this.dispatch=o.call(this);this.close=this[a]}get[B.kConnected](){return this[Q]}intercept(A){return new C(A,this[n])}async[a](){await r(this[g])();this[Q]=0;this[i][B.kClients].delete(this[c])}}A.exports=MockPool},9442:A=>{"use strict";A.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")}},154:(A,e,t)=>{"use strict";const{MockNotMatchedError:r}=t(4632);const{kDispatches:s,kMockAgent:o,kOriginalDispatch:n,kOrigin:i,kGetNetConnect:a}=t(9442);const{buildURL:g,nop:c}=t(5647);const{STATUS_CODES:E}=t(8611);const{types:{isPromise:Q}}=t(9023);function matchValue(A,e){if(typeof A==="string"){return A===e}if(A instanceof RegExp){return A.test(e)}if(typeof A==="function"){return A(e)===true}return false}function lowerCaseEntries(A){return Object.fromEntries(Object.entries(A).map((([A,e])=>[A.toLocaleLowerCase(),e])))}function getHeaderByName(A,e){if(Array.isArray(A)){for(let t=0;t!A)).filter((({path:A})=>matchValue(safeUrl(A),s)));if(o.length===0){throw new r(`Mock dispatch not matched for path '${s}'`)}o=o.filter((({method:A})=>matchValue(A,e.method)));if(o.length===0){throw new r(`Mock dispatch not matched for method '${e.method}'`)}o=o.filter((({body:A})=>typeof A!=="undefined"?matchValue(A,e.body):true));if(o.length===0){throw new r(`Mock dispatch not matched for body '${e.body}'`)}o=o.filter((A=>matchHeaders(A,e.headers)));if(o.length===0){throw new r(`Mock dispatch not matched for headers '${typeof e.headers==="object"?JSON.stringify(e.headers):e.headers}'`)}return o[0]}function addMockDispatch(A,e,t){const r={timesInvoked:0,times:1,persist:false,consumed:false};const s=typeof t==="function"?{callback:t}:{...t};const o={...r,...e,pending:true,data:{error:null,...s}};A.push(o);return o}function deleteMockDispatch(A,e){const t=A.findIndex((A=>{if(!A.consumed){return false}return matchKey(A,e)}));if(t!==-1){A.splice(t,1)}}function buildKey(A){const{path:e,method:t,body:r,headers:s,query:o}=A;return{path:e,method:t,body:r,headers:s,query:o}}function generateKeyValues(A){return Object.entries(A).reduce(((A,[e,t])=>[...A,Buffer.from(`${e}`),Array.isArray(t)?t.map((A=>Buffer.from(`${A}`))):Buffer.from(`${t}`)]),[])}function getStatusText(A){return E[A]||"unknown"}async function getResponse(A){const e=[];for await(const t of A){e.push(t)}return Buffer.concat(e).toString("utf8")}function mockDispatch(A,e){const t=buildKey(A);const r=getMockDispatch(this[s],t);r.timesInvoked++;if(r.data.callback){r.data={...r.data,...r.data.callback(A)}}const{data:{statusCode:o,data:n,headers:i,trailers:a,error:g},delay:E,persist:C}=r;const{timesInvoked:B,times:l}=r;r.consumed=!C&&B>=l;r.pending=B0){setTimeout((()=>{handleReply(this[s])}),E)}else{handleReply(this[s])}function handleReply(r,s=n){const g=Array.isArray(A.headers)?buildHeadersFromArray(A.headers):A.headers;const E=typeof s==="function"?s({...A,headers:g}):s;if(Q(E)){E.then((A=>handleReply(r,A)));return}const C=getResponseData(E);const B=generateKeyValues(i);const l=generateKeyValues(a);e.abort=c;e.onHeaders(o,B,resume,getStatusText(o));e.onData(Buffer.from(C));e.onComplete(l);deleteMockDispatch(r,t)}function resume(){}return true}function buildMockDispatch(){const A=this[o];const e=this[i];const t=this[n];return function dispatch(s,o){if(A.isMockActive){try{mockDispatch.call(this,s,o)}catch(n){if(n instanceof r){const i=A[a]();if(i===false){throw new r(`${n.message}: subsequent request to origin ${e} was not allowed (net.connect disabled)`)}if(checkNetConnect(i,e)){t.call(this,s,o)}else{throw new r(`${n.message}: subsequent request to origin ${e} was not allowed (net.connect is not enabled for this origin)`)}}else{throw n}}}else{t.call(this,s,o)}}}function checkNetConnect(A,e){const t=new URL(e);if(A===true){return true}else if(Array.isArray(A)&&A.some((A=>matchValue(A,t.host)))){return true}return false}function buildMockOptions(A){if(A){const{agent:e,...t}=A;return t}}A.exports={getResponseData:getResponseData,getMockDispatch:getMockDispatch,addMockDispatch:addMockDispatch,deleteMockDispatch:deleteMockDispatch,buildKey:buildKey,generateKeyValues:generateKeyValues,matchValue:matchValue,getResponse:getResponse,getStatusText:getStatusText,mockDispatch:mockDispatch,buildMockDispatch:buildMockDispatch,checkNetConnect:checkNetConnect,buildMockOptions:buildMockOptions,getHeaderByName:getHeaderByName}},6749:(A,e,t)=>{"use strict";const{Transform:r}=t(2203);const{Console:s}=t(4236);A.exports=class PendingInterceptorsFormatter{constructor({disableColors:A}={}){this.transform=new r({transform(A,e,t){t(null,A)}});this.logger=new s({stdout:this.transform,inspectOptions:{colors:!A&&!process.env.CI}})}format(A){const e=A.map((({method:A,path:e,data:{statusCode:t},persist:r,times:s,timesInvoked:o,origin:n})=>({Method:A,Origin:n,Path:e,"Status code":t,Persistent:r?"✅":"❌",Invocations:o,Remaining:r?Infinity:s-o})));this.logger.table(e);return this.transform.read().toString()}}},1246:A=>{"use strict";const e={pronoun:"it",is:"is",was:"was",this:"this"};const t={pronoun:"they",is:"are",was:"were",this:"these"};A.exports=class Pluralizer{constructor(A,e){this.singular=A;this.plural=e}pluralize(A){const r=A===1;const s=r?e:t;const o=r?this.singular:this.plural;return{...s,count:A,noun:o}}}},8408:A=>{"use strict";const e=2048;const t=e-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(e);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&t)===this.bottom}push(A){this.list[this.top]=A;this.top=this.top+1&t}shift(){const A=this.list[this.bottom];if(A===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&t;return A}}A.exports=class FixedQueue{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(A){if(this.head.isFull()){this.head=this.head.next=new FixedCircularBuffer}this.head.push(A)}shift(){const A=this.tail;const e=A.shift();if(A.isEmpty()&&A.next!==null){this.tail=A.next}return e}}},6903:(A,e,t)=>{"use strict";const r=t(890);const s=t(8408);const{kConnected:o,kSize:n,kRunning:i,kPending:a,kQueued:g,kBusy:c,kFree:E,kUrl:Q,kClose:C,kDestroy:B,kDispatch:l}=t(4914);const I=t(8371);const h=Symbol("clients");const u=Symbol("needDrain");const d=Symbol("queue");const p=Symbol("closed resolve");const y=Symbol("onDrain");const w=Symbol("onConnect");const R=Symbol("onDisconnect");const m=Symbol("onConnectionError");const D=Symbol("get dispatcher");const k=Symbol("add client");const b=Symbol("remove client");const F=Symbol("stats");class PoolBase extends r{constructor(){super();this[d]=new s;this[h]=[];this[g]=0;const A=this;this[y]=function onDrain(e,t){const r=A[d];let s=false;while(!s){const e=r.shift();if(!e){break}A[g]--;s=!this.dispatch(e.opts,e.handler)}this[u]=s;if(!this[u]&&A[u]){A[u]=false;A.emit("drain",e,[A,...t])}if(A[p]&&r.isEmpty()){Promise.all(A[h].map((A=>A.close()))).then(A[p])}};this[w]=(e,t)=>{A.emit("connect",e,[A,...t])};this[R]=(e,t,r)=>{A.emit("disconnect",e,[A,...t],r)};this[m]=(e,t,r)=>{A.emit("connectionError",e,[A,...t],r)};this[F]=new I(this)}get[c](){return this[u]}get[o](){return this[h].filter((A=>A[o])).length}get[E](){return this[h].filter((A=>A[o]&&!A[u])).length}get[a](){let A=this[g];for(const{[a]:e}of this[h]){A+=e}return A}get[i](){let A=0;for(const{[i]:e}of this[h]){A+=e}return A}get[n](){let A=this[g];for(const{[n]:e}of this[h]){A+=e}return A}get stats(){return this[F]}async[C](){if(this[d].isEmpty()){return Promise.all(this[h].map((A=>A.close())))}else{return new Promise((A=>{this[p]=A}))}}async[B](A){while(true){const e=this[d].shift();if(!e){break}e.handler.onError(A)}return Promise.all(this[h].map((e=>e.destroy(A))))}[l](A,e){const t=this[D]();if(!t){this[u]=true;this[d].push({opts:A,handler:e});this[g]++}else if(!t.dispatch(A,e)){t[u]=true;this[u]=!this[D]()}return!this[u]}[k](A){A.on("drain",this[y]).on("connect",this[w]).on("disconnect",this[R]).on("connectionError",this[m]);this[h].push(A);if(this[u]){process.nextTick((()=>{if(this[u]){this[y](A[Q],[this,A])}}))}return this}[b](A){A.close((()=>{const e=this[h].indexOf(A);if(e!==-1){this[h].splice(e,1)}}));this[u]=this[h].some((A=>!A[u]&&A.closed!==true&&A.destroyed!==true))}}A.exports={PoolBase:PoolBase,kClients:h,kNeedDrain:u,kAddClient:k,kRemoveClient:b,kGetDispatcher:D}},8371:(A,e,t)=>{const{kFree:r,kConnected:s,kPending:o,kQueued:n,kRunning:i,kSize:a}=t(4914);const g=Symbol("pool");class PoolStats{constructor(A){this[g]=A}get connected(){return this[g][s]}get free(){return this[g][r]}get pending(){return this[g][o]}get queued(){return this[g][n]}get running(){return this[g][i]}get size(){return this[g][a]}}A.exports=PoolStats},1013:(A,e,t)=>{"use strict";const{PoolBase:r,kClients:s,kNeedDrain:o,kAddClient:n,kGetDispatcher:i}=t(6903);const a=t(5752);const{InvalidArgumentError:g}=t(6600);const c=t(5647);const{kUrl:E,kInterceptors:Q}=t(4914);const C=t(7037);const B=Symbol("options");const l=Symbol("connections");const I=Symbol("factory");function defaultFactory(A,e){return new a(A,e)}class Pool extends r{constructor(A,{connections:e,factory:t=defaultFactory,connect:r,connectTimeout:s,tls:o,maxCachedSessions:n,socketPath:i,autoSelectFamily:a,autoSelectFamilyAttemptTimeout:h,allowH2:u,...d}={}){super();if(e!=null&&(!Number.isFinite(e)||e<0)){throw new g("invalid connections")}if(typeof t!=="function"){throw new g("factory must be a function.")}if(r!=null&&typeof r!=="function"&&typeof r!=="object"){throw new g("connect must be a function or an object")}if(typeof r!=="function"){r=C({...o,maxCachedSessions:n,allowH2:u,socketPath:i,timeout:s,...c.nodeHasAutoSelectFamily&&a?{autoSelectFamily:a,autoSelectFamilyAttemptTimeout:h}:undefined,...r})}this[Q]=d.interceptors&&d.interceptors.Pool&&Array.isArray(d.interceptors.Pool)?d.interceptors.Pool:[];this[l]=e||null;this[E]=c.parseOrigin(A);this[B]={...c.deepClone(d),connect:r,allowH2:u};this[B].interceptors=d.interceptors?{...d.interceptors}:undefined;this[I]=t}[i](){let A=this[s].find((A=>!A[o]));if(A){return A}if(!this[l]||this[s].length{"use strict";const{kProxy:r,kClose:s,kDestroy:o,kInterceptors:n}=t(4914);const{URL:i}=t(7016);const a=t(8902);const g=t(1013);const c=t(890);const{InvalidArgumentError:E,RequestAbortedError:Q}=t(6600);const C=t(7037);const B=Symbol("proxy agent");const l=Symbol("proxy client");const I=Symbol("proxy headers");const h=Symbol("request tls settings");const u=Symbol("proxy tls settings");const d=Symbol("connect endpoint function");function defaultProtocolPort(A){return A==="https:"?443:80}function buildProxyOptions(A){if(typeof A==="string"){A={uri:A}}if(!A||!A.uri){throw new E("Proxy opts.uri is mandatory")}return{uri:A.uri,protocol:A.protocol||"https"}}function defaultFactory(A,e){return new g(A,e)}class ProxyAgent extends c{constructor(A){super(A);this[r]=buildProxyOptions(A);this[B]=new a(A);this[n]=A.interceptors&&A.interceptors.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[];if(typeof A==="string"){A={uri:A}}if(!A||!A.uri){throw new E("Proxy opts.uri is mandatory")}const{clientFactory:e=defaultFactory}=A;if(typeof e!=="function"){throw new E("Proxy opts.clientFactory must be a function.")}this[h]=A.requestTls;this[u]=A.proxyTls;this[I]=A.headers||{};const t=new i(A.uri);const{origin:s,port:o,host:g,username:c,password:p}=t;if(A.auth&&A.token){throw new E("opts.auth cannot be used in combination with opts.token")}else if(A.auth){this[I]["proxy-authorization"]=`Basic ${A.auth}`}else if(A.token){this[I]["proxy-authorization"]=A.token}else if(c&&p){this[I]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(c)}:${decodeURIComponent(p)}`).toString("base64")}`}const y=C({...A.proxyTls});this[d]=C({...A.requestTls});this[l]=e(t,{connect:y});this[B]=new a({...A,connect:async(A,e)=>{let t=A.host;if(!A.port){t+=`:${defaultProtocolPort(A.protocol)}`}try{const{socket:r,statusCode:n}=await this[l].connect({origin:s,port:o,path:t,signal:A.signal,headers:{...this[I],host:g}});if(n!==200){r.on("error",(()=>{})).destroy();e(new Q(`Proxy response (${n}) !== 200 when HTTP Tunneling`))}if(A.protocol!=="https:"){e(null,r);return}let i;if(this[h]){i=this[h].servername}else{i=A.servername}this[d]({...A,servername:i,httpSocket:r},e)}catch(A){e(A)}}})}dispatch(A,e){const{host:t}=new i(A.origin);const r=buildHeaders(A.headers);throwIfProxyAuthIsSent(r);return this[B].dispatch({...A,headers:{...r,host:t}},e)}async[s](){await this[B].close();await this[l].close()}async[o](){await this[B].destroy();await this[l].destroy()}}function buildHeaders(A){if(Array.isArray(A)){const e={};for(let t=0;tA.toLowerCase()==="proxy-authorization"));if(e){throw new E("Proxy-Authorization should be sent in ProxyAgent constructor")}}A.exports=ProxyAgent},9069:A=>{"use strict";let e=Date.now();let t;const r=[];function onTimeout(){e=Date.now();let A=r.length;let t=0;while(t0&&e>=s.state){s.state=-1;s.callback(s.opaque)}if(s.state===-1){s.state=-2;if(t!==A-1){r[t]=r.pop()}else{r.pop()}A-=1}else{t+=1}}if(r.length>0){refreshTimeout()}}function refreshTimeout(){if(t&&t.refresh){t.refresh()}else{clearTimeout(t);t=setTimeout(onTimeout,1e3);if(t.unref){t.unref()}}}class Timeout{constructor(A,e,t){this.callback=A;this.delay=e;this.opaque=t;this.state=-2;this.refresh()}refresh(){if(this.state===-2){r.push(this);if(!t||r.length===1){refreshTimeout()}}this.state=0}clear(){this.state=-1}}A.exports={setTimeout(A,e,t){return e<1e3?setTimeout(A,e,t):new Timeout(A,e,t)},clearTimeout(A){if(A instanceof Timeout){A.clear()}else{clearTimeout(A)}}}},2939:(A,e,t)=>{"use strict";const r=t(1637);const{uid:s,states:o}=t(9194);const{kReadyState:n,kSentClose:i,kByteParser:a,kReceivedClose:g}=t(8218);const{fireEvent:c,failWebsocketConnection:E}=t(2807);const{CloseEvent:Q}=t(1534);const{makeRequest:C}=t(1697);const{fetching:B}=t(1116);const{Headers:l}=t(9486);const{getGlobalDispatcher:I}=t(0);const{kHeadersList:h}=t(4914);const u={};u.open=r.channel("undici:websocket:open");u.close=r.channel("undici:websocket:close");u.socketError=r.channel("undici:websocket:socket_error");let d;try{d=t(6982)}catch{}function establishWebSocketConnection(A,e,t,r,o){const n=A;n.protocol=A.protocol==="ws:"?"http:":"https:";const i=C({urlList:[n],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(o.headers){const A=new l(o.headers)[h];i.headersList=A}const a=d.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",a);i.headersList.append("sec-websocket-version","13");for(const A of e){i.headersList.append("sec-websocket-protocol",A)}const g="";const c=B({request:i,useParallelQueue:true,dispatcher:o.dispatcher??I(),processResponse(A){if(A.type==="error"||A.status!==101){E(t,"Received network error or non-101 status code.");return}if(e.length!==0&&!A.headersList.get("Sec-WebSocket-Protocol")){E(t,"Server did not respond with sent protocols.");return}if(A.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){E(t,'Server did not set Upgrade header to "websocket".');return}if(A.headersList.get("Connection")?.toLowerCase()!=="upgrade"){E(t,'Server did not set Connection header to "upgrade".');return}const o=A.headersList.get("Sec-WebSocket-Accept");const n=d.createHash("sha1").update(a+s).digest("base64");if(o!==n){E(t,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const c=A.headersList.get("Sec-WebSocket-Extensions");if(c!==null&&c!==g){E(t,"Received different permessage-deflate than the one set.");return}const Q=A.headersList.get("Sec-WebSocket-Protocol");if(Q!==null&&Q!==i.headersList.get("Sec-WebSocket-Protocol")){E(t,"Protocol was not set in the opening handshake.");return}A.socket.on("data",onSocketData);A.socket.on("close",onSocketClose);A.socket.on("error",onSocketError);if(u.open.hasSubscribers){u.open.publish({address:A.socket.address(),protocol:Q,extensions:c})}r(A)}});return c}function onSocketData(A){if(!this.ws[a].write(A)){this.pause()}}function onSocketClose(){const{ws:A}=this;const e=A[i]&&A[g];let t=1005;let r="";const s=A[a].closingInfo;if(s){t=s.code??1005;r=s.reason}else if(!A[i]){t=1006}A[n]=o.CLOSED;c("close",A,Q,{wasClean:e,code:t,reason:r});if(u.close.hasSubscribers){u.close.publish({websocket:A,code:t,reason:r})}}function onSocketError(A){const{ws:e}=this;e[n]=o.CLOSING;if(u.socketError.hasSubscribers){u.socketError.publish(A)}this.destroy()}A.exports={establishWebSocketConnection:establishWebSocketConnection}},9194:A=>{"use strict";const e="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const t={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const s={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const o=2**16-1;const n={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const i=Buffer.allocUnsafe(0);A.exports={uid:e,staticPropertyDescriptors:t,states:r,opcodes:s,maxUnsigned16Bit:o,parserStates:n,emptyBuffer:i}},1534:(A,e,t)=>{"use strict";const{webidl:r}=t(19);const{kEnumerableProperty:s}=t(5647);const{MessagePort:o}=t(8167);class MessageEvent extends Event{#o;constructor(A,e={}){r.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"});A=r.converters.DOMString(A);e=r.converters.MessageEventInit(e);super(A,e);this.#o=e}get data(){r.brandCheck(this,MessageEvent);return this.#o.data}get origin(){r.brandCheck(this,MessageEvent);return this.#o.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#o.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#o.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#o.ports)){Object.freeze(this.#o.ports)}return this.#o.ports}initMessageEvent(A,e=false,t=false,s=null,o="",n="",i=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"});return new MessageEvent(A,{bubbles:e,cancelable:t,data:s,origin:o,lastEventId:n,source:i,ports:a})}}class CloseEvent extends Event{#o;constructor(A,e={}){r.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"});A=r.converters.DOMString(A);e=r.converters.CloseEventInit(e);super(A,e);this.#o=e}get wasClean(){r.brandCheck(this,CloseEvent);return this.#o.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#o.code}get reason(){r.brandCheck(this,CloseEvent);return this.#o.reason}}class ErrorEvent extends Event{#o;constructor(A,e){r.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(A,e);A=r.converters.DOMString(A);e=r.converters.ErrorEventInit(e??{});this.#o=e}get message(){r.brandCheck(this,ErrorEvent);return this.#o.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#o.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#o.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#o.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#o.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:s,origin:s,lastEventId:s,source:s,ports:s,initMessageEvent:s});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:s,code:s,wasClean:s});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:s,filename:s,lineno:s,colno:s,error:s});r.converters.MessagePort=r.interfaceConverter(o);r.converters["sequence"]=r.sequenceConverter(r.converters.MessagePort);const n=[{key:"bubbles",converter:r.converters.boolean,defaultValue:false},{key:"cancelable",converter:r.converters.boolean,defaultValue:false},{key:"composed",converter:r.converters.boolean,defaultValue:false}];r.converters.MessageEventInit=r.dictionaryConverter([...n,{key:"data",converter:r.converters.any,defaultValue:null},{key:"origin",converter:r.converters.USVString,defaultValue:""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:null},{key:"ports",converter:r.converters["sequence"],get defaultValue(){return[]}}]);r.converters.CloseEventInit=r.dictionaryConverter([...n,{key:"wasClean",converter:r.converters.boolean,defaultValue:false},{key:"code",converter:r.converters["unsigned short"],defaultValue:0},{key:"reason",converter:r.converters.USVString,defaultValue:""}]);r.converters.ErrorEventInit=r.dictionaryConverter([...n,{key:"message",converter:r.converters.DOMString,defaultValue:""},{key:"filename",converter:r.converters.USVString,defaultValue:""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:0},{key:"error",converter:r.converters.any}]);A.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent}},9218:(A,e,t)=>{"use strict";const{maxUnsigned16Bit:r}=t(9194);let s;try{s=t(6982)}catch{}class WebsocketFrameSend{constructor(A){this.frameData=A;this.maskKey=s.randomBytes(4)}createFrame(A){const e=this.frameData?.byteLength??0;let t=e;let s=6;if(e>r){s+=8;t=127}else if(e>125){s+=2;t=126}const o=Buffer.allocUnsafe(e+s);o[0]=o[1]=0;o[0]|=128;o[0]=(o[0]&240)+A; -/*! ws. MIT License. Einar Otto Stangvik */o[s-4]=this.maskKey[0];o[s-3]=this.maskKey[1];o[s-2]=this.maskKey[2];o[s-1]=this.maskKey[3];o[1]=t;if(t===126){o.writeUInt16BE(e,2)}else if(t===127){o[2]=o[3]=0;o.writeUIntBE(e,4,6)}o[1]|=128;for(let A=0;A{"use strict";const{Writable:r}=t(2203);const s=t(1637);const{parserStates:o,opcodes:n,states:i,emptyBuffer:a}=t(9194);const{kReadyState:g,kSentClose:c,kResponse:E,kReceivedClose:Q}=t(8218);const{isValidStatusCode:C,failWebsocketConnection:B,websocketMessageReceived:l}=t(2807);const{WebsocketFrameSend:I}=t(9218);const h={};h.ping=s.channel("undici:websocket:ping");h.pong=s.channel("undici:websocket:pong");class ByteParser extends r{#n=[];#i=0;#a=o.INFO;#g={};#c=[];constructor(A){super();this.ws=A}_write(A,e,t){this.#n.push(A);this.#i+=A.length;this.run(t)}run(A){while(true){if(this.#a===o.INFO){if(this.#i<2){return A()}const e=this.consume(2);this.#g.fin=(e[0]&128)!==0;this.#g.opcode=e[0]&15;this.#g.originalOpcode??=this.#g.opcode;this.#g.fragmented=!this.#g.fin&&this.#g.opcode!==n.CONTINUATION;if(this.#g.fragmented&&this.#g.opcode!==n.BINARY&&this.#g.opcode!==n.TEXT){B(this.ws,"Invalid frame type was fragmented.");return}const t=e[1]&127;if(t<=125){this.#g.payloadLength=t;this.#a=o.READ_DATA}else if(t===126){this.#a=o.PAYLOADLENGTH_16}else if(t===127){this.#a=o.PAYLOADLENGTH_64}if(this.#g.fragmented&&t>125){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#g.opcode===n.PING||this.#g.opcode===n.PONG||this.#g.opcode===n.CLOSE)&&t>125){B(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#g.opcode===n.CLOSE){if(t===1){B(this.ws,"Received close frame with a 1-byte body.");return}const A=this.consume(t);this.#g.closeInfo=this.parseCloseBody(false,A);if(!this.ws[c]){const A=Buffer.allocUnsafe(2);A.writeUInt16BE(this.#g.closeInfo.code,0);const e=new I(A);this.ws[E].socket.write(e.createFrame(n.CLOSE),(A=>{if(!A){this.ws[c]=true}}))}this.ws[g]=i.CLOSING;this.ws[Q]=true;this.end();return}else if(this.#g.opcode===n.PING){const e=this.consume(t);if(!this.ws[Q]){const A=new I(e);this.ws[E].socket.write(A.createFrame(n.PONG));if(h.ping.hasSubscribers){h.ping.publish({payload:e})}}this.#a=o.INFO;if(this.#i>0){continue}else{A();return}}else if(this.#g.opcode===n.PONG){const e=this.consume(t);if(h.pong.hasSubscribers){h.pong.publish({payload:e})}if(this.#i>0){continue}else{A();return}}}else if(this.#a===o.PAYLOADLENGTH_16){if(this.#i<2){return A()}const e=this.consume(2);this.#g.payloadLength=e.readUInt16BE(0);this.#a=o.READ_DATA}else if(this.#a===o.PAYLOADLENGTH_64){if(this.#i<8){return A()}const e=this.consume(8);const t=e.readUInt32BE(0);if(t>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}const r=e.readUInt32BE(4);this.#g.payloadLength=(t<<8)+r;this.#a=o.READ_DATA}else if(this.#a===o.READ_DATA){if(this.#i=this.#g.payloadLength){const A=this.consume(this.#g.payloadLength);this.#c.push(A);if(!this.#g.fragmented||this.#g.fin&&this.#g.opcode===n.CONTINUATION){const A=Buffer.concat(this.#c);l(this.ws,this.#g.originalOpcode,A);this.#g={};this.#c.length=0}this.#a=o.INFO}}if(this.#i>0){continue}else{A();break}}}consume(A){if(A>this.#i){return null}else if(A===0){return a}if(this.#n[0].length===A){this.#i-=this.#n[0].length;return this.#n.shift()}const e=Buffer.allocUnsafe(A);let t=0;while(t!==A){const r=this.#n[0];const{length:s}=r;if(s+t===A){e.set(this.#n.shift(),t);break}else if(s+t>A){e.set(r.subarray(0,A-t),t);this.#n[0]=r.subarray(A-t);break}else{e.set(this.#n.shift(),t);t+=r.length}}this.#i-=A;return e}parseCloseBody(A,e){let t;if(e.length>=2){t=e.readUInt16BE(0)}if(A){if(!C(t)){return null}return{code:t}}let r=e.subarray(2);if(r[0]===239&&r[1]===187&&r[2]===191){r=r.subarray(3)}if(t!==undefined&&!C(t)){return null}try{r=new TextDecoder("utf-8",{fatal:true}).decode(r)}catch{return null}return{code:t,reason:r}}get closingInfo(){return this.#g.closeInfo}}A.exports={ByteParser:ByteParser}},8218:A=>{"use strict";A.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")}},2807:(A,e,t)=>{"use strict";const{kReadyState:r,kController:s,kResponse:o,kBinaryType:n,kWebSocketURL:i}=t(8218);const{states:a,opcodes:g}=t(9194);const{MessageEvent:c,ErrorEvent:E}=t(1534);function isEstablished(A){return A[r]===a.OPEN}function isClosing(A){return A[r]===a.CLOSING}function isClosed(A){return A[r]===a.CLOSED}function fireEvent(A,e,t=Event,r){const s=new t(A,r);e.dispatchEvent(s)}function websocketMessageReceived(A,e,t){if(A[r]!==a.OPEN){return}let s;if(e===g.TEXT){try{s=new TextDecoder("utf-8",{fatal:true}).decode(t)}catch{failWebsocketConnection(A,"Received invalid UTF-8 in text frame.");return}}else if(e===g.BINARY){if(A[n]==="blob"){s=new Blob([t])}else{s=new Uint8Array(t).buffer}}fireEvent("message",A,c,{origin:A[i].origin,data:s})}function isValidSubprotocol(A){if(A.length===0){return false}for(const e of A){const A=e.charCodeAt(0);if(A<33||A>126||e==="("||e===")"||e==="<"||e===">"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}"||A===32||A===9){return false}}return true}function isValidStatusCode(A){if(A>=1e3&&A<1015){return A!==1004&&A!==1005&&A!==1006}return A>=3e3&&A<=4999}function failWebsocketConnection(A,e){const{[s]:t,[o]:r}=A;t.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(e){fireEvent("error",A,E,{error:new Error(e)})}}A.exports={isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived}},9336:(A,e,t)=>{"use strict";const{webidl:r}=t(19);const{DOMException:s}=t(3009);const{URLSerializer:o}=t(6277);const{getGlobalOrigin:n}=t(4629);const{staticPropertyDescriptors:i,states:a,opcodes:g,emptyBuffer:c}=t(9194);const{kWebSocketURL:E,kReadyState:Q,kController:C,kBinaryType:B,kResponse:l,kSentClose:I,kByteParser:h}=t(8218);const{isEstablished:u,isClosing:d,isValidSubprotocol:p,failWebsocketConnection:y,fireEvent:w}=t(2807);const{establishWebSocketConnection:R}=t(2939);const{WebsocketFrameSend:m}=t(9218);const{ByteParser:D}=t(6994);const{kEnumerableProperty:k,isBlobLike:b}=t(5647);const{getGlobalDispatcher:F}=t(0);const{types:S}=t(9023);let N=false;class WebSocket extends EventTarget{#E={open:null,error:null,close:null,message:null};#Q=0;#C="";#B="";constructor(A,e=[]){super();r.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"});if(!N){N=true;process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"})}const t=r.converters["DOMString or sequence or WebSocketInit"](e);A=r.converters.USVString(A);e=t.protocols;const o=n();let i;try{i=new URL(A,o)}catch(A){throw new s(A,"SyntaxError")}if(i.protocol==="http:"){i.protocol="ws:"}else if(i.protocol==="https:"){i.protocol="wss:"}if(i.protocol!=="ws:"&&i.protocol!=="wss:"){throw new s(`Expected a ws: or wss: protocol, got ${i.protocol}`,"SyntaxError")}if(i.hash||i.href.endsWith("#")){throw new s("Got fragment","SyntaxError")}if(typeof e==="string"){e=[e]}if(e.length!==new Set(e.map((A=>A.toLowerCase()))).size){throw new s("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(e.length>0&&!e.every((A=>p(A)))){throw new s("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[E]=new URL(i.href);this[C]=R(i,e,this,(A=>this.#l(A)),t);this[Q]=WebSocket.CONNECTING;this[B]="blob"}close(A=undefined,e=undefined){r.brandCheck(this,WebSocket);if(A!==undefined){A=r.converters["unsigned short"](A,{clamp:true})}if(e!==undefined){e=r.converters.USVString(e)}if(A!==undefined){if(A!==1e3&&(A<3e3||A>4999)){throw new s("invalid code","InvalidAccessError")}}let t=0;if(e!==undefined){t=Buffer.byteLength(e);if(t>123){throw new s(`Reason must be less than 123 bytes; received ${t}`,"SyntaxError")}}if(this[Q]===WebSocket.CLOSING||this[Q]===WebSocket.CLOSED){}else if(!u(this)){y(this,"Connection was closed before it was established.");this[Q]=WebSocket.CLOSING}else if(!d(this)){const r=new m;if(A!==undefined&&e===undefined){r.frameData=Buffer.allocUnsafe(2);r.frameData.writeUInt16BE(A,0)}else if(A!==undefined&&e!==undefined){r.frameData=Buffer.allocUnsafe(2+t);r.frameData.writeUInt16BE(A,0);r.frameData.write(e,2,"utf-8")}else{r.frameData=c}const s=this[l].socket;s.write(r.createFrame(g.CLOSE),(A=>{if(!A){this[I]=true}}));this[Q]=a.CLOSING}else{this[Q]=WebSocket.CLOSING}}send(A){r.brandCheck(this,WebSocket);r.argumentLengthCheck(arguments,1,{header:"WebSocket.send"});A=r.converters.WebSocketSendData(A);if(this[Q]===WebSocket.CONNECTING){throw new s("Sent before connected.","InvalidStateError")}if(!u(this)||d(this)){return}const e=this[l].socket;if(typeof A==="string"){const t=Buffer.from(A);const r=new m(t);const s=r.createFrame(g.TEXT);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(S.isArrayBuffer(A)){const t=Buffer.from(A);const r=new m(t);const s=r.createFrame(g.BINARY);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(ArrayBuffer.isView(A)){const t=Buffer.from(A,A.byteOffset,A.byteLength);const r=new m(t);const s=r.createFrame(g.BINARY);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(b(A)){const t=new m;A.arrayBuffer().then((A=>{const r=Buffer.from(A);t.frameData=r;const s=t.createFrame(g.BINARY);this.#Q+=r.byteLength;e.write(s,(()=>{this.#Q-=r.byteLength}))}))}}get readyState(){r.brandCheck(this,WebSocket);return this[Q]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#Q}get url(){r.brandCheck(this,WebSocket);return o(this[E])}get extensions(){r.brandCheck(this,WebSocket);return this.#B}get protocol(){r.brandCheck(this,WebSocket);return this.#C}get onopen(){r.brandCheck(this,WebSocket);return this.#E.open}set onopen(A){r.brandCheck(this,WebSocket);if(this.#E.open){this.removeEventListener("open",this.#E.open)}if(typeof A==="function"){this.#E.open=A;this.addEventListener("open",A)}else{this.#E.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#E.error}set onerror(A){r.brandCheck(this,WebSocket);if(this.#E.error){this.removeEventListener("error",this.#E.error)}if(typeof A==="function"){this.#E.error=A;this.addEventListener("error",A)}else{this.#E.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#E.close}set onclose(A){r.brandCheck(this,WebSocket);if(this.#E.close){this.removeEventListener("close",this.#E.close)}if(typeof A==="function"){this.#E.close=A;this.addEventListener("close",A)}else{this.#E.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#E.message}set onmessage(A){r.brandCheck(this,WebSocket);if(this.#E.message){this.removeEventListener("message",this.#E.message)}if(typeof A==="function"){this.#E.message=A;this.addEventListener("message",A)}else{this.#E.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[B]}set binaryType(A){r.brandCheck(this,WebSocket);if(A!=="blob"&&A!=="arraybuffer"){this[B]="blob"}else{this[B]=A}}#l(A){this[l]=A;const e=new D(this);e.on("drain",(function onParserDrain(){this.ws[l].socket.resume()}));A.socket.ws=this;this[h]=e;this[Q]=a.OPEN;const t=A.headersList.get("sec-websocket-extensions");if(t!==null){this.#B=t}const r=A.headersList.get("sec-websocket-protocol");if(r!==null){this.#C=r}w("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=a.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=a.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=a.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=a.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:k,readyState:k,bufferedAmount:k,onopen:k,onerror:k,onclose:k,close:k,onmessage:k,binaryType:k,send:k,extensions:k,protocol:k,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(A){if(r.util.Type(A)==="Object"&&Symbol.iterator in A){return r.converters["sequence"](A)}return r.converters.DOMString(A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:A=>A,get defaultValue(){return F()}},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(A){if(r.util.Type(A)==="Object"&&!(Symbol.iterator in A)){return r.converters.WebSocketInit(A)}return{protocols:r.converters["DOMString or sequence"](A)}};r.converters.WebSocketSendData=function(A){if(r.util.Type(A)==="Object"){if(b(A)){return r.converters.Blob(A,{strict:false})}if(ArrayBuffer.isView(A)||S.isAnyArrayBuffer(A)){return r.converters.BufferSource(A)}}return r.converters.USVString(A)};A.exports={WebSocket:WebSocket}},3601:(A,e,t)=>{"use strict";const r=t(2962);const s=t(7584);const o=t(6562);const n=t(6927);const i=t(2532);const a=t(4212);const g=t(781);const{InvalidArgumentError:c}=o;const E=t(7434);const Q=t(3883);const C=t(6286);const B=t(600);const l=t(3923);const I=t(4858);const h=t(8229);const u=t(8562);const{getGlobalDispatcher:d,setGlobalDispatcher:p}=t(5302);const y=t(4315);const w=t(8026);const R=t(3038);let m;try{t(6982);m=true}catch{m=false}Object.assign(s.prototype,E);A.exports.Dispatcher=s;A.exports.Client=r;A.exports.Pool=n;A.exports.BalancedPool=i;A.exports.Agent=a;A.exports.ProxyAgent=h;A.exports.RetryHandler=u;A.exports.DecoratorHandler=y;A.exports.RedirectHandler=w;A.exports.createRedirectInterceptor=R;A.exports.buildConnector=Q;A.exports.errors=o;function makeDispatcher(A){return(e,t,r)=>{if(typeof t==="function"){r=t;t=null}if(!e||typeof e!=="string"&&typeof e!=="object"&&!(e instanceof URL)){throw new c("invalid url")}if(t!=null&&typeof t!=="object"){throw new c("invalid opts")}if(t&&t.path!=null){if(typeof t.path!=="string"){throw new c("invalid opts.path")}let A=t.path;if(!t.path.startsWith("/")){A=`/${A}`}e=new URL(g.parseOrigin(e).origin+A)}else{if(!t){t=typeof e==="object"?e:{}}e=g.parseURL(e)}const{agent:s,dispatcher:o=d()}=t;if(s){throw new c("unsupported opts.agent. Did you mean opts.client?")}return A.call(o,{...t,origin:e.origin,path:e.search?`${e.pathname}${e.search}`:e.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}A.exports.setGlobalDispatcher=p;A.exports.getGlobalDispatcher=d;if(g.nodeMajor>16||g.nodeMajor===16&&g.nodeMinor>=8){let e=null;A.exports.fetch=async function fetch(A){if(!e){e=t(530).fetch}try{return await e(...arguments)}catch(A){if(typeof A==="object"){Error.captureStackTrace(A,this)}throw A}};A.exports.Headers=t(9976).Headers;A.exports.Response=t(2991).Response;A.exports.Request=t(6891).Request;A.exports.FormData=t(8242).FormData;A.exports.File=t(1062).File;A.exports.FileReader=t(4855).FileReader;const{setGlobalOrigin:r,getGlobalOrigin:s}=t(4647);A.exports.setGlobalOrigin=r;A.exports.getGlobalOrigin=s;const{CacheStorage:o}=t(6825);const{kConstruct:n}=t(2657);A.exports.caches=new o(n)}if(g.nodeMajor>=16){const{deleteCookie:e,getCookies:r,getSetCookies:s,setCookie:o}=t(5993);A.exports.deleteCookie=e;A.exports.getCookies=r;A.exports.getSetCookies=s;A.exports.setCookie=o;const{parseMIMEType:n,serializeAMimeType:i}=t(7691);A.exports.parseMIMEType=n;A.exports.serializeAMimeType=i}if(g.nodeMajor>=18&&m){const{WebSocket:e}=t(9922);A.exports.WebSocket=e}A.exports.request=makeDispatcher(E.request);A.exports.stream=makeDispatcher(E.stream);A.exports.pipeline=makeDispatcher(E.pipeline);A.exports.connect=makeDispatcher(E.connect);A.exports.upgrade=makeDispatcher(E.upgrade);A.exports.MockClient=C;A.exports.MockPool=l;A.exports.MockAgent=B;A.exports.mockErrors=I},4212:(A,e,t)=>{"use strict";const{InvalidArgumentError:r}=t(6562);const{kClients:s,kRunning:o,kClose:n,kDestroy:i,kDispatch:a,kInterceptors:g}=t(548);const c=t(2708);const E=t(6927);const Q=t(2962);const C=t(781);const B=t(3038);const{WeakRef:l,FinalizationRegistry:I}=t(2135)();const h=Symbol("onConnect");const u=Symbol("onDisconnect");const d=Symbol("onConnectionError");const p=Symbol("maxRedirections");const y=Symbol("onDrain");const w=Symbol("factory");const R=Symbol("finalizer");const m=Symbol("options");function defaultFactory(A,e){return e&&e.connections===1?new Q(A,e):new E(A,e)}class Agent extends c{constructor({factory:A=defaultFactory,maxRedirections:e=0,connect:t,...o}={}){super();if(typeof A!=="function"){throw new r("factory must be a function.")}if(t!=null&&typeof t!=="function"&&typeof t!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(e)||e<0){throw new r("maxRedirections must be a positive number")}if(t&&typeof t!=="function"){t={...t}}this[g]=o.interceptors&&o.interceptors.Agent&&Array.isArray(o.interceptors.Agent)?o.interceptors.Agent:[B({maxRedirections:e})];this[m]={...C.deepClone(o),connect:t};this[m].interceptors=o.interceptors?{...o.interceptors}:undefined;this[p]=e;this[w]=A;this[s]=new Map;this[R]=new I((A=>{const e=this[s].get(A);if(e!==undefined&&e.deref()===undefined){this[s].delete(A)}}));const n=this;this[y]=(A,e)=>{n.emit("drain",A,[n,...e])};this[h]=(A,e)=>{n.emit("connect",A,[n,...e])};this[u]=(A,e,t)=>{n.emit("disconnect",A,[n,...e],t)};this[d]=(A,e,t)=>{n.emit("connectionError",A,[n,...e],t)}}get[o](){let A=0;for(const e of this[s].values()){const t=e.deref();if(t){A+=t[o]}}return A}[a](A,e){let t;if(A.origin&&(typeof A.origin==="string"||A.origin instanceof URL)){t=String(A.origin)}else{throw new r("opts.origin must be a non-empty string or URL.")}const o=this[s].get(t);let n=o?o.deref():null;if(!n){n=this[w](A.origin,this[m]).on("drain",this[y]).on("connect",this[h]).on("disconnect",this[u]).on("connectionError",this[d]);this[s].set(t,new l(n));this[R].register(n,t)}return n.dispatch(A,e)}async[n](){const A=[];for(const e of this[s].values()){const t=e.deref();if(t){A.push(t.close())}}await Promise.all(A)}async[i](A){const e=[];for(const t of this[s].values()){const r=t.deref();if(r){e.push(r.destroy(A))}}await Promise.all(e)}}A.exports=Agent},4481:(A,e,t)=>{const{addAbortListener:r}=t(781);const{RequestAbortedError:s}=t(6562);const o=Symbol("kListener");const n=Symbol("kSignal");function abort(A){if(A.abort){A.abort()}else{A.onError(new s)}}function addSignal(A,e){A[n]=null;A[o]=null;if(!e){return}if(e.aborted){abort(A);return}A[n]=e;A[o]=()=>{abort(A)};r(A[n],A[o])}function removeSignal(A){if(!A[n]){return}if("removeEventListener"in A[n]){A[n].removeEventListener("abort",A[o])}else{A[n].removeListener("abort",A[o])}A[n]=null;A[o]=null}A.exports={addSignal:addSignal,removeSignal:removeSignal}},8685:(A,e,t)=>{"use strict";const{AsyncResource:r}=t(290);const{InvalidArgumentError:s,RequestAbortedError:o,SocketError:n}=t(6562);const i=t(781);const{addSignal:a,removeSignal:g}=t(4481);class ConnectHandler extends r{constructor(A,e){if(!A||typeof A!=="object"){throw new s("invalid opts")}if(typeof e!=="function"){throw new s("invalid callback")}const{signal:t,opaque:r,responseHeaders:o}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=r||null;this.responseHeaders=o||null;this.callback=e;this.abort=null;a(this,t)}onConnect(A,e){if(!this.callback){throw new o}this.abort=A;this.context=e}onHeaders(){throw new n("bad connect",null)}onUpgrade(A,e,t){const{callback:r,opaque:s,context:o}=this;g(this);this.callback=null;let n=e;if(n!=null){n=this.responseHeaders==="raw"?i.parseRawHeaders(e):i.parseHeaders(e)}this.runInAsyncScope(r,null,null,{statusCode:A,headers:n,socket:t,opaque:s,context:o})}onError(A){const{callback:e,opaque:t}=this;g(this);if(e){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(e,null,A,{opaque:t})}))}}}function connect(A,e){if(e===undefined){return new Promise(((e,t)=>{connect.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{const t=new ConnectHandler(A,e);this.dispatch({...A,method:"CONNECT"},t)}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=connect},7045:(A,e,t)=>{"use strict";const{Readable:r,Duplex:s,PassThrough:o}=t(2203);const{InvalidArgumentError:n,InvalidReturnValueError:i,RequestAbortedError:a}=t(6562);const g=t(781);const{AsyncResource:c}=t(290);const{addSignal:E,removeSignal:Q}=t(4481);const C=t(2613);const B=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[B]=null}_read(){const{[B]:A}=this;if(A){this[B]=null;A()}}_destroy(A,e){this._read();e(A)}}class PipelineResponse extends r{constructor(A){super({autoDestroy:true});this[B]=A}_read(){this[B]()}_destroy(A,e){if(!A&&!this._readableState.endEmitted){A=new a}e(A)}}class PipelineHandler extends c{constructor(A,e){if(!A||typeof A!=="object"){throw new n("invalid opts")}if(typeof e!=="function"){throw new n("invalid handler")}const{signal:t,method:r,opaque:o,onInfo:i,responseHeaders:c}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new n("invalid method")}if(i&&typeof i!=="function"){throw new n("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=o||null;this.responseHeaders=c||null;this.handler=e;this.abort=null;this.context=null;this.onInfo=i||null;this.req=(new PipelineRequest).on("error",g.nop);this.ret=new s({readableObjectMode:A.objectMode,autoDestroy:true,read:()=>{const{body:A}=this;if(A&&A.resume){A.resume()}},write:(A,e,t)=>{const{req:r}=this;if(r.push(A,e)||r._readableState.destroyed){t()}else{r[B]=t}},destroy:(A,e)=>{const{body:t,req:r,res:s,ret:o,abort:n}=this;if(!A&&!o._readableState.endEmitted){A=new a}if(n&&A){n()}g.destroy(t,A);g.destroy(r,A);g.destroy(s,A);Q(this);e(A)}}).on("prefinish",(()=>{const{req:A}=this;A.push(null)}));this.res=null;E(this,t)}onConnect(A,e){const{ret:t,res:r}=this;C(!r,"pipeline cannot be retried");if(t.destroyed){throw new a}this.abort=A;this.context=e}onHeaders(A,e,t){const{opaque:r,handler:s,context:o}=this;if(A<200){if(this.onInfo){const t=this.responseHeaders==="raw"?g.parseRawHeaders(e):g.parseHeaders(e);this.onInfo({statusCode:A,headers:t})}return}this.res=new PipelineResponse(t);let n;try{this.handler=null;const t=this.responseHeaders==="raw"?g.parseRawHeaders(e):g.parseHeaders(e);n=this.runInAsyncScope(s,null,{statusCode:A,headers:t,opaque:r,body:this.res,context:o})}catch(A){this.res.on("error",g.nop);throw A}if(!n||typeof n.on!=="function"){throw new i("expected Readable")}n.on("data",(A=>{const{ret:e,body:t}=this;if(!e.push(A)&&t.pause){t.pause()}})).on("error",(A=>{const{ret:e}=this;g.destroy(e,A)})).on("end",(()=>{const{ret:A}=this;A.push(null)})).on("close",(()=>{const{ret:A}=this;if(!A._readableState.ended){g.destroy(A,new a)}}));this.body=n}onData(A){const{res:e}=this;return e.push(A)}onComplete(A){const{res:e}=this;e.push(null)}onError(A){const{ret:e}=this;this.handler=null;g.destroy(e,A)}}function pipeline(A,e){try{const t=new PipelineHandler(A,e);this.dispatch({...A,body:t.req},t);return t.ret}catch(A){return(new o).destroy(A)}}A.exports=pipeline},8678:(A,e,t)=>{"use strict";const r=t(80);const{InvalidArgumentError:s,RequestAbortedError:o}=t(6562);const n=t(781);const{getResolveErrorBodyCallback:i}=t(6164);const{AsyncResource:a}=t(290);const{addSignal:g,removeSignal:c}=t(4481);class RequestHandler extends a{constructor(A,e){if(!A||typeof A!=="object"){throw new s("invalid opts")}const{signal:t,method:r,opaque:o,body:i,onInfo:a,responseHeaders:c,throwOnError:E,highWaterMark:Q}=A;try{if(typeof e!=="function"){throw new s("invalid callback")}if(Q&&(typeof Q!=="number"||Q<0)){throw new s("invalid highWaterMark")}if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new s("invalid method")}if(a&&typeof a!=="function"){throw new s("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(A){if(n.isStream(i)){n.destroy(i.on("error",n.nop),A)}throw A}this.responseHeaders=c||null;this.opaque=o||null;this.callback=e;this.res=null;this.abort=null;this.body=i;this.trailers={};this.context=null;this.onInfo=a||null;this.throwOnError=E;this.highWaterMark=Q;if(n.isStream(i)){i.on("error",(A=>{this.onError(A)}))}g(this,t)}onConnect(A,e){if(!this.callback){throw new o}this.abort=A;this.context=e}onHeaders(A,e,t,s){const{callback:o,opaque:a,abort:g,context:c,responseHeaders:E,highWaterMark:Q}=this;const C=E==="raw"?n.parseRawHeaders(e):n.parseHeaders(e);if(A<200){if(this.onInfo){this.onInfo({statusCode:A,headers:C})}return}const B=E==="raw"?n.parseHeaders(e):C;const l=B["content-type"];const I=new r({resume:t,abort:g,contentType:l,highWaterMark:Q});this.callback=null;this.res=I;if(o!==null){if(this.throwOnError&&A>=400){this.runInAsyncScope(i,null,{callback:o,body:I,contentType:l,statusCode:A,statusMessage:s,headers:C})}else{this.runInAsyncScope(o,null,null,{statusCode:A,headers:C,trailers:this.trailers,opaque:a,body:I,context:c})}}}onData(A){const{res:e}=this;return e.push(A)}onComplete(A){const{res:e}=this;c(this);n.parseHeaders(A,this.trailers);e.push(null)}onError(A){const{res:e,callback:t,body:r,opaque:s}=this;c(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,A,{opaque:s})}))}if(e){this.res=null;queueMicrotask((()=>{n.destroy(e,A)}))}if(r){this.body=null;n.destroy(r,A)}}}function request(A,e){if(e===undefined){return new Promise(((e,t)=>{request.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{this.dispatch(A,new RequestHandler(A,e))}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=request;A.exports.RequestHandler=RequestHandler},2043:(A,e,t)=>{"use strict";const{finished:r,PassThrough:s}=t(2203);const{InvalidArgumentError:o,InvalidReturnValueError:n,RequestAbortedError:i}=t(6562);const a=t(781);const{getResolveErrorBodyCallback:g}=t(6164);const{AsyncResource:c}=t(290);const{addSignal:E,removeSignal:Q}=t(4481);class StreamHandler extends c{constructor(A,e,t){if(!A||typeof A!=="object"){throw new o("invalid opts")}const{signal:r,method:s,opaque:n,body:i,onInfo:g,responseHeaders:c,throwOnError:Q}=A;try{if(typeof t!=="function"){throw new o("invalid callback")}if(typeof e!=="function"){throw new o("invalid factory")}if(r&&typeof r.on!=="function"&&typeof r.addEventListener!=="function"){throw new o("signal must be an EventEmitter or EventTarget")}if(s==="CONNECT"){throw new o("invalid method")}if(g&&typeof g!=="function"){throw new o("invalid onInfo callback")}super("UNDICI_STREAM")}catch(A){if(a.isStream(i)){a.destroy(i.on("error",a.nop),A)}throw A}this.responseHeaders=c||null;this.opaque=n||null;this.factory=e;this.callback=t;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=i;this.onInfo=g||null;this.throwOnError=Q||false;if(a.isStream(i)){i.on("error",(A=>{this.onError(A)}))}E(this,r)}onConnect(A,e){if(!this.callback){throw new i}this.abort=A;this.context=e}onHeaders(A,e,t,o){const{factory:i,opaque:c,context:E,callback:Q,responseHeaders:C}=this;const B=C==="raw"?a.parseRawHeaders(e):a.parseHeaders(e);if(A<200){if(this.onInfo){this.onInfo({statusCode:A,headers:B})}return}this.factory=null;let l;if(this.throwOnError&&A>=400){const t=C==="raw"?a.parseHeaders(e):B;const r=t["content-type"];l=new s;this.callback=null;this.runInAsyncScope(g,null,{callback:Q,body:l,contentType:r,statusCode:A,statusMessage:o,headers:B})}else{if(i===null){return}l=this.runInAsyncScope(i,null,{statusCode:A,headers:B,opaque:c,context:E});if(!l||typeof l.write!=="function"||typeof l.end!=="function"||typeof l.on!=="function"){throw new n("expected Writable")}r(l,{readable:false},(A=>{const{callback:e,res:t,opaque:r,trailers:s,abort:o}=this;this.res=null;if(A||!t.readable){a.destroy(t,A)}this.callback=null;this.runInAsyncScope(e,null,A||null,{opaque:r,trailers:s});if(A){o()}}))}l.on("drain",t);this.res=l;const I=l.writableNeedDrain!==undefined?l.writableNeedDrain:l._writableState&&l._writableState.needDrain;return I!==true}onData(A){const{res:e}=this;return e?e.write(A):true}onComplete(A){const{res:e}=this;Q(this);if(!e){return}this.trailers=a.parseHeaders(A);e.end()}onError(A){const{res:e,callback:t,opaque:r,body:s}=this;Q(this);this.factory=null;if(e){this.res=null;a.destroy(e,A)}else if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,A,{opaque:r})}))}if(s){this.body=null;a.destroy(s,A)}}}function stream(A,e,t){if(t===undefined){return new Promise(((t,r)=>{stream.call(this,A,e,((A,e)=>A?r(A):t(e)))}))}try{this.dispatch(A,new StreamHandler(A,e,t))}catch(e){if(typeof t!=="function"){throw e}const r=A&&A.opaque;queueMicrotask((()=>t(e,{opaque:r})))}}A.exports=stream},1135:(A,e,t)=>{"use strict";const{InvalidArgumentError:r,RequestAbortedError:s,SocketError:o}=t(6562);const{AsyncResource:n}=t(290);const i=t(781);const{addSignal:a,removeSignal:g}=t(4481);const c=t(2613);class UpgradeHandler extends n{constructor(A,e){if(!A||typeof A!=="object"){throw new r("invalid opts")}if(typeof e!=="function"){throw new r("invalid callback")}const{signal:t,opaque:s,responseHeaders:o}=A;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=o||null;this.opaque=s||null;this.callback=e;this.abort=null;this.context=null;a(this,t)}onConnect(A,e){if(!this.callback){throw new s}this.abort=A;this.context=null}onHeaders(){throw new o("bad upgrade",null)}onUpgrade(A,e,t){const{callback:r,opaque:s,context:o}=this;c.strictEqual(A,101);g(this);this.callback=null;const n=this.responseHeaders==="raw"?i.parseRawHeaders(e):i.parseHeaders(e);this.runInAsyncScope(r,null,null,{headers:n,socket:t,opaque:s,context:o})}onError(A){const{callback:e,opaque:t}=this;g(this);if(e){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(e,null,A,{opaque:t})}))}}}function upgrade(A,e){if(e===undefined){return new Promise(((e,t)=>{upgrade.call(this,A,((A,r)=>A?t(A):e(r)))}))}try{const t=new UpgradeHandler(A,e);this.dispatch({...A,method:A.method||"GET",upgrade:A.protocol||"Websocket"},t)}catch(t){if(typeof e!=="function"){throw t}const r=A&&A.opaque;queueMicrotask((()=>e(t,{opaque:r})))}}A.exports=upgrade},7434:(A,e,t)=>{"use strict";A.exports.request=t(8678);A.exports.stream=t(2043);A.exports.pipeline=t(7045);A.exports.upgrade=t(1135);A.exports.connect=t(8685)},80:(A,e,t)=>{"use strict";const r=t(2613);const{Readable:s}=t(2203);const{RequestAbortedError:o,NotSupportedError:n,InvalidArgumentError:i}=t(6562);const a=t(781);const{ReadableStreamFrom:g,toUSVString:c}=t(781);let E;const Q=Symbol("kConsume");const C=Symbol("kReading");const B=Symbol("kBody");const l=Symbol("abort");const I=Symbol("kContentType");const noop=()=>{};A.exports=class BodyReadable extends s{constructor({resume:A,abort:e,contentType:t="",highWaterMark:r=64*1024}){super({autoDestroy:true,read:A,highWaterMark:r});this._readableState.dataEmitted=false;this[l]=e;this[Q]=null;this[B]=null;this[I]=t;this[C]=false}destroy(A){if(this.destroyed){return this}if(!A&&!this._readableState.endEmitted){A=new o}if(A){this[l]()}return super.destroy(A)}emit(A,...e){if(A==="data"){this._readableState.dataEmitted=true}else if(A==="error"){this._readableState.errorEmitted=true}return super.emit(A,...e)}on(A,...e){if(A==="data"||A==="readable"){this[C]=true}return super.on(A,...e)}addListener(A,...e){return this.on(A,...e)}off(A,...e){const t=super.off(A,...e);if(A==="data"||A==="readable"){this[C]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return t}removeListener(A,...e){return this.off(A,...e)}push(A){if(this[Q]&&A!==null&&this.readableLength===0){consumePush(this[Q],A);return this[C]?super.push(A):true}return super.push(A)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new n}get bodyUsed(){return a.isDisturbed(this)}get body(){if(!this[B]){this[B]=g(this);if(this[Q]){this[B].getReader();r(this[B].locked)}}return this[B]}dump(A){let e=A&&Number.isFinite(A.limit)?A.limit:262144;const t=A&&A.signal;if(t){try{if(typeof t!=="object"||!("aborted"in t)){throw new i("signal must be an AbortSignal")}a.throwIfAborted(t)}catch(A){return Promise.reject(A)}}if(this.closed){return Promise.resolve(null)}return new Promise(((A,r)=>{const s=t?a.addAbortListener(t,(()=>{this.destroy()})):noop;this.on("close",(function(){s();if(t&&t.aborted){r(t.reason||Object.assign(new Error("The operation was aborted"),{name:"AbortError"}))}else{A(null)}})).on("error",noop).on("data",(function(A){e-=A.length;if(e<=0){this.destroy()}})).resume()}))}};function isLocked(A){return A[B]&&A[B].locked===true||A[Q]}function isUnusable(A){return a.isDisturbed(A)||isLocked(A)}async function consume(A,e){if(isUnusable(A)){throw new TypeError("unusable")}r(!A[Q]);return new Promise(((t,r)=>{A[Q]={type:e,stream:A,resolve:t,reject:r,length:0,body:[]};A.on("error",(function(A){consumeFinish(this[Q],A)})).on("close",(function(){if(this[Q].body!==null){consumeFinish(this[Q],new o)}}));process.nextTick(consumeStart,A[Q])}))}function consumeStart(A){if(A.body===null){return}const{_readableState:e}=A.stream;for(const t of e.buffer){consumePush(A,t)}if(e.endEmitted){consumeEnd(this[Q])}else{A.stream.on("end",(function(){consumeEnd(this[Q])}))}A.stream.resume();while(A.stream.read()!=null){}}function consumeEnd(A){const{type:e,body:r,resolve:s,stream:o,length:n}=A;try{if(e==="text"){s(c(Buffer.concat(r)))}else if(e==="json"){s(JSON.parse(Buffer.concat(r)))}else if(e==="arrayBuffer"){const A=new Uint8Array(n);let e=0;for(const t of r){A.set(t,e);e+=t.byteLength}s(A.buffer)}else if(e==="blob"){if(!E){E=t(181).Blob}s(new E(r,{type:o[I]}))}consumeFinish(A)}catch(A){o.destroy(A)}}function consumePush(A,e){A.length+=e.length;A.body.push(e)}function consumeFinish(A,e){if(A.body===null){return}if(e){A.reject(e)}else{A.resolve()}A.type=null;A.stream=null;A.resolve=null;A.reject=null;A.length=0;A.body=null}},6164:(A,e,t)=>{const r=t(2613);const{ResponseStatusCodeError:s}=t(6562);const{toUSVString:o}=t(781);async function getResolveErrorBodyCallback({callback:A,body:e,contentType:t,statusCode:n,statusMessage:i,headers:a}){r(e);let g=[];let c=0;for await(const A of e){g.push(A);c+=A.length;if(c>128*1024){g=null;break}}if(n===204||!t||!g){process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a));return}try{if(t.startsWith("application/json")){const e=JSON.parse(o(Buffer.concat(g)));process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a,e));return}if(t.startsWith("text/")){const e=o(Buffer.concat(g));process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a,e));return}}catch(A){}process.nextTick(A,new s(`Response status code ${n}${i?`: ${i}`:""}`,n,a))}A.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback}},2532:(A,e,t)=>{"use strict";const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:s}=t(6562);const{PoolBase:o,kClients:n,kNeedDrain:i,kAddClient:a,kRemoveClient:g,kGetDispatcher:c}=t(2469);const E=t(6927);const{kUrl:Q,kInterceptors:C}=t(548);const{parseOrigin:B}=t(781);const l=Symbol("factory");const I=Symbol("options");const h=Symbol("kGreatestCommonDivisor");const u=Symbol("kCurrentWeight");const d=Symbol("kIndex");const p=Symbol("kWeight");const y=Symbol("kMaxWeightPerServer");const w=Symbol("kErrorPenalty");function getGreatestCommonDivisor(A,e){if(e===0)return A;return getGreatestCommonDivisor(e,A%e)}function defaultFactory(A,e){return new E(A,e)}class BalancedPool extends o{constructor(A=[],{factory:e=defaultFactory,...t}={}){super();this[I]=t;this[d]=-1;this[u]=0;this[y]=this[I].maxWeightPerServer||100;this[w]=this[I].errorPenalty||15;if(!Array.isArray(A)){A=[A]}if(typeof e!=="function"){throw new s("factory must be a function.")}this[C]=t.interceptors&&t.interceptors.BalancedPool&&Array.isArray(t.interceptors.BalancedPool)?t.interceptors.BalancedPool:[];this[l]=e;for(const e of A){this.addUpstream(e)}this._updateBalancedPoolStats()}addUpstream(A){const e=B(A).origin;if(this[n].find((A=>A[Q].origin===e&&A.closed!==true&&A.destroyed!==true))){return this}const t=this[l](e,Object.assign({},this[I]));this[a](t);t.on("connect",(()=>{t[p]=Math.min(this[y],t[p]+this[w])}));t.on("connectionError",(()=>{t[p]=Math.max(1,t[p]-this[w]);this._updateBalancedPoolStats()}));t.on("disconnect",((...A)=>{const e=A[2];if(e&&e.code==="UND_ERR_SOCKET"){t[p]=Math.max(1,t[p]-this[w]);this._updateBalancedPoolStats()}}));for(const A of this[n]){A[p]=this[y]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){this[h]=this[n].map((A=>A[p])).reduce(getGreatestCommonDivisor,0)}removeUpstream(A){const e=B(A).origin;const t=this[n].find((A=>A[Q].origin===e&&A.closed!==true&&A.destroyed!==true));if(t){this[g](t)}return this}get upstreams(){return this[n].filter((A=>A.closed!==true&&A.destroyed!==true)).map((A=>A[Q].origin))}[c](){if(this[n].length===0){throw new r}const A=this[n].find((A=>!A[i]&&A.closed!==true&&A.destroyed!==true));if(!A){return}const e=this[n].map((A=>A[i])).reduce(((A,e)=>A&&e),true);if(e){return}let t=0;let s=this[n].findIndex((A=>!A[i]));while(t++this[n][s][p]&&!A[i]){s=this[d]}if(this[d]===0){this[u]=this[u]-this[h];if(this[u]<=0){this[u]=this[y]}}if(A[p]>=this[u]&&!A[i]){return A}}this[u]=this[n][s][p];this[d]=s;return this[n][s]}}A.exports=BalancedPool},550:(A,e,t)=>{"use strict";const{kConstruct:r}=t(2657);const{urlEquals:s,fieldValues:o}=t(9210);const{kEnumerableProperty:n,isDisturbed:i}=t(781);const{kHeadersList:a}=t(548);const{webidl:g}=t(3113);const{Response:c,cloneResponse:E}=t(2991);const{Request:Q}=t(6891);const{kState:C,kHeaders:B,kGuard:l,kRealm:I}=t(4111);const{fetching:h}=t(530);const{urlIsHttpHttpsScheme:u,createDeferredPromise:d,readAllBytes:p}=t(2492);const y=t(2613);const{getGlobalDispatcher:w}=t(5302);class Cache{#A;constructor(){if(arguments[0]!==r){g.illegalConstructor()}this.#A=arguments[1]}async match(A,e={}){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.match"});A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);const t=await this.matchAll(A,e);if(t.length===0){return}return t[0]}async matchAll(A=undefined,e={}){g.brandCheck(this,Cache);if(A!==undefined)A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A!==undefined){if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return[]}}else if(typeof A==="string"){t=new Q(A)[C]}}const r=[];if(A===undefined){for(const A of this.#A){r.push(A[1])}}else{const A=this.#e(t,e);for(const e of A){r.push(e[1])}}const s=[];for(const A of r){const e=new c(A.body?.source??null);const t=e[C].body;e[C]=A;e[C].body=t;e[B][a]=A.headersList;e[B][l]="immutable";s.push(e)}return Object.freeze(s)}async add(A){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.add"});A=g.converters.RequestInfo(A);const e=[A];const t=this.addAll(e);return await t}async addAll(A){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});A=g.converters["sequence"](A);const e=[];const t=[];for(const e of A){if(typeof e==="string"){continue}const A=e[C];if(!u(A.url)||A.method!=="GET"){throw g.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}}const r=[];for(const s of A){const A=new Q(s)[C];if(!u(A.url)){throw g.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."})}A.initiator="fetch";A.destination="subresource";t.push(A);const n=d();r.push(h({request:A,dispatcher:w(),processResponse(A){if(A.type==="error"||A.status===206||A.status<200||A.status>299){n.reject(g.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(A.headersList.contains("vary")){const e=o(A.headersList.get("vary"));for(const A of e){if(A==="*"){n.reject(g.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const A of r){A.abort()}return}}}},processResponseEndOfBody(A){if(A.aborted){n.reject(new DOMException("aborted","AbortError"));return}n.resolve(A)}}));e.push(n.promise)}const s=Promise.all(e);const n=await s;const i=[];let a=0;for(const A of n){const e={type:"put",request:t[a],response:A};i.push(e);a++}const c=d();let E=null;try{this.#t(i)}catch(A){E=A}queueMicrotask((()=>{if(E===null){c.resolve(undefined)}else{c.reject(E)}}));return c.promise}async put(A,e){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,2,{header:"Cache.put"});A=g.converters.RequestInfo(A);e=g.converters.Response(e);let t=null;if(A instanceof Q){t=A[C]}else{t=new Q(A)[C]}if(!u(t.url)||t.method!=="GET"){throw g.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"})}const r=e[C];if(r.status===206){throw g.errors.exception({header:"Cache.put",message:"Got 206 status"})}if(r.headersList.contains("vary")){const A=o(r.headersList.get("vary"));for(const e of A){if(e==="*"){throw g.errors.exception({header:"Cache.put",message:"Got * vary field value"})}}}if(r.body&&(i(r.body.stream)||r.body.stream.locked)){throw g.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"})}const s=E(r);const n=d();if(r.body!=null){const A=r.body.stream;const e=A.getReader();p(e).then(n.resolve,n.reject)}else{n.resolve(undefined)}const a=[];const c={type:"put",request:t,response:s};a.push(c);const B=await n.promise;if(s.body!=null){s.body.source=B}const l=d();let I=null;try{this.#t(a)}catch(A){I=A}queueMicrotask((()=>{if(I===null){l.resolve()}else{l.reject(I)}}));return l.promise}async delete(A,e={}){g.brandCheck(this,Cache);g.argumentLengthCheck(arguments,1,{header:"Cache.delete"});A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return false}}else{y(typeof A==="string");t=new Q(A)[C]}const r=[];const s={type:"delete",request:t,options:e};r.push(s);const o=d();let n=null;let i;try{i=this.#t(r)}catch(A){n=A}queueMicrotask((()=>{if(n===null){o.resolve(!!i?.length)}else{o.reject(n)}}));return o.promise}async keys(A=undefined,e={}){g.brandCheck(this,Cache);if(A!==undefined)A=g.converters.RequestInfo(A);e=g.converters.CacheQueryOptions(e);let t=null;if(A!==undefined){if(A instanceof Q){t=A[C];if(t.method!=="GET"&&!e.ignoreMethod){return[]}}else if(typeof A==="string"){t=new Q(A)[C]}}const r=d();const s=[];if(A===undefined){for(const A of this.#A){s.push(A[0])}}else{const A=this.#e(t,e);for(const e of A){s.push(e[0])}}queueMicrotask((()=>{const A=[];for(const e of s){const t=new Q("https://a");t[C]=e;t[B][a]=e.headersList;t[B][l]="immutable";t[I]=e.client;A.push(t)}r.resolve(Object.freeze(A))}));return r.promise}#t(A){const e=this.#A;const t=[...e];const r=[];const s=[];try{for(const t of A){if(t.type!=="delete"&&t.type!=="put"){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(t.type==="delete"&&t.response!=null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#e(t.request,t.options,r).length){throw new DOMException("???","InvalidStateError")}let A;if(t.type==="delete"){A=this.#e(t.request,t.options);if(A.length===0){return[]}for(const t of A){const A=e.indexOf(t);y(A!==-1);e.splice(A,1)}}else if(t.type==="put"){if(t.response==null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const s=t.request;if(!u(s.url)){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(s.method!=="GET"){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(t.options!=null){throw g.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}A=this.#e(t.request);for(const t of A){const A=e.indexOf(t);y(A!==-1);e.splice(A,1)}e.push([t.request,t.response]);r.push([t.request,t.response])}s.push([t.request,t.response])}return s}catch(A){this.#A.length=0;this.#A=t;throw A}}#e(A,e,t){const r=[];const s=t??this.#A;for(const t of s){const[s,o]=t;if(this.#r(A,s,o,e)){r.push(t)}}return r}#r(A,e,t=null,r){const n=new URL(A.url);const i=new URL(e.url);if(r?.ignoreSearch){i.search="";n.search=""}if(!s(n,i,true)){return false}if(t==null||r?.ignoreVary||!t.headersList.contains("vary")){return true}const a=o(t.headersList.get("vary"));for(const t of a){if(t==="*"){return false}const r=e.headersList.get(t);const s=A.headersList.get(t);if(r!==s){return false}}return true}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:n,matchAll:n,add:n,addAll:n,put:n,delete:n,keys:n});const R=[{key:"ignoreSearch",converter:g.converters.boolean,defaultValue:false},{key:"ignoreMethod",converter:g.converters.boolean,defaultValue:false},{key:"ignoreVary",converter:g.converters.boolean,defaultValue:false}];g.converters.CacheQueryOptions=g.dictionaryConverter(R);g.converters.MultiCacheQueryOptions=g.dictionaryConverter([...R,{key:"cacheName",converter:g.converters.DOMString}]);g.converters.Response=g.interfaceConverter(c);g.converters["sequence"]=g.sequenceConverter(g.converters.RequestInfo);A.exports={Cache:Cache}},6825:(A,e,t)=>{"use strict";const{kConstruct:r}=t(2657);const{Cache:s}=t(550);const{webidl:o}=t(3113);const{kEnumerableProperty:n}=t(781);class CacheStorage{#s=new Map;constructor(){if(arguments[0]!==r){o.illegalConstructor()}}async match(A,e={}){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"});A=o.converters.RequestInfo(A);e=o.converters.MultiCacheQueryOptions(e);if(e.cacheName!=null){if(this.#s.has(e.cacheName)){const t=this.#s.get(e.cacheName);const o=new s(r,t);return await o.match(A,e)}}else{for(const t of this.#s.values()){const o=new s(r,t);const n=await o.match(A,e);if(n!==undefined){return n}}}}async has(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"});A=o.converters.DOMString(A);return this.#s.has(A)}async open(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"});A=o.converters.DOMString(A);if(this.#s.has(A)){const e=this.#s.get(A);return new s(r,e)}const e=[];this.#s.set(A,e);return new s(r,e)}async delete(A){o.brandCheck(this,CacheStorage);o.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"});A=o.converters.DOMString(A);return this.#s.delete(A)}async keys(){o.brandCheck(this,CacheStorage);const A=this.#s.keys();return[...A]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:n,has:n,open:n,delete:n,keys:n});A.exports={CacheStorage:CacheStorage}},2657:(A,e,t)=>{"use strict";A.exports={kConstruct:t(548).kConstruct}},9210:(A,e,t)=>{"use strict";const r=t(2613);const{URLSerializer:s}=t(7691);const{isValidHeaderName:o}=t(2492);function urlEquals(A,e,t=false){const r=s(A,t);const o=s(e,t);return r===o}function fieldValues(A){r(A!==null);const e=[];for(let t of A.split(",")){t=t.trim();if(!t.length){continue}else if(!o(t)){continue}e.push(t)}return e}A.exports={urlEquals:urlEquals,fieldValues:fieldValues}},2962:(A,e,t)=>{"use strict";const r=t(2613);const s=t(9278);const o=t(8611);const{pipeline:n}=t(2203);const i=t(781);const a=t(7999);const g=t(8376);const c=t(2708);const{RequestContentLengthMismatchError:E,ResponseContentLengthMismatchError:Q,InvalidArgumentError:C,RequestAbortedError:B,HeadersTimeoutError:l,HeadersOverflowError:I,SocketError:h,InformationalError:u,BodyTimeoutError:d,HTTPParserError:p,ResponseExceededMaxSizeError:y,ClientDestroyedError:w}=t(6562);const R=t(3883);const{kUrl:m,kReset:D,kServerName:k,kClient:b,kBusy:F,kParser:S,kConnect:N,kBlocking:U,kResuming:T,kRunning:L,kPending:M,kSize:G,kWriting:v,kQueue:Y,kConnected:H,kConnecting:J,kNeedDrain:V,kNoRef:O,kKeepAliveDefaultTimeout:P,kHostHeader:x,kPendingIdx:_,kRunningIdx:q,kError:W,kPipelining:j,kSocket:Z,kKeepAliveTimeoutValue:X,kMaxHeadersSize:K,kKeepAliveMaxTimeout:z,kKeepAliveTimeoutThreshold:$,kHeadersTimeout:AA,kBodyTimeout:eA,kStrictContentLength:tA,kConnector:rA,kMaxRedirections:sA,kMaxRequests:oA,kCounter:nA,kClose:iA,kDestroy:aA,kDispatch:gA,kInterceptors:cA,kLocalAddress:EA,kMaxResponseSize:QA,kHTTPConnVersion:CA,kHost:BA,kHTTP2Session:lA,kHTTP2SessionState:IA,kHTTP2BuildRequest:hA,kHTTP2CopyHeaders:uA,kHTTP1BuildRequest:dA}=t(548);let fA;try{fA=t(5675)}catch{fA={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:pA,HTTP2_HEADER_METHOD:yA,HTTP2_HEADER_PATH:wA,HTTP2_HEADER_SCHEME:RA,HTTP2_HEADER_CONTENT_LENGTH:mA,HTTP2_HEADER_EXPECT:DA,HTTP2_HEADER_STATUS:kA}}=fA;let bA=false;const FA=Buffer[Symbol.species];const SA=Symbol("kClosedResolve");const NA={};try{const A=t(1637);NA.sendHeaders=A.channel("undici:client:sendHeaders");NA.beforeConnect=A.channel("undici:client:beforeConnect");NA.connectError=A.channel("undici:client:connectError");NA.connected=A.channel("undici:client:connected")}catch{NA.sendHeaders={hasSubscribers:false};NA.beforeConnect={hasSubscribers:false};NA.connectError={hasSubscribers:false};NA.connected={hasSubscribers:false}}class Client extends c{constructor(A,{interceptors:e,maxHeaderSize:t,headersTimeout:r,socketTimeout:n,requestTimeout:a,connectTimeout:g,bodyTimeout:c,idleTimeout:E,keepAlive:Q,keepAliveTimeout:B,maxKeepAliveTimeout:l,keepAliveMaxTimeout:I,keepAliveTimeoutThreshold:h,socketPath:u,pipelining:d,tls:p,strictContentLength:y,maxCachedSessions:w,maxRedirections:D,connect:b,maxRequestsPerClient:F,localAddress:S,maxResponseSize:N,autoSelectFamily:U,autoSelectFamilyAttemptTimeout:L,allowH2:M,maxConcurrentStreams:G}={}){super();if(Q!==undefined){throw new C("unsupported keepAlive, use pipelining=0 instead")}if(n!==undefined){throw new C("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new C("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(E!==undefined){throw new C("unsupported idleTimeout, use keepAliveTimeout instead")}if(l!==undefined){throw new C("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(t!=null&&!Number.isFinite(t)){throw new C("invalid maxHeaderSize")}if(u!=null&&typeof u!=="string"){throw new C("invalid socketPath")}if(g!=null&&(!Number.isFinite(g)||g<0)){throw new C("invalid connectTimeout")}if(B!=null&&(!Number.isFinite(B)||B<=0)){throw new C("invalid keepAliveTimeout")}if(I!=null&&(!Number.isFinite(I)||I<=0)){throw new C("invalid keepAliveMaxTimeout")}if(h!=null&&!Number.isFinite(h)){throw new C("invalid keepAliveTimeoutThreshold")}if(r!=null&&(!Number.isInteger(r)||r<0)){throw new C("headersTimeout must be a positive integer or zero")}if(c!=null&&(!Number.isInteger(c)||c<0)){throw new C("bodyTimeout must be a positive integer or zero")}if(b!=null&&typeof b!=="function"&&typeof b!=="object"){throw new C("connect must be a function or an object")}if(D!=null&&(!Number.isInteger(D)||D<0)){throw new C("maxRedirections must be a positive number")}if(F!=null&&(!Number.isInteger(F)||F<0)){throw new C("maxRequestsPerClient must be a positive number")}if(S!=null&&(typeof S!=="string"||s.isIP(S)===0)){throw new C("localAddress must be valid string IP address")}if(N!=null&&(!Number.isInteger(N)||N<-1)){throw new C("maxResponseSize must be a positive number")}if(L!=null&&(!Number.isInteger(L)||L<-1)){throw new C("autoSelectFamilyAttemptTimeout must be a positive number")}if(M!=null&&typeof M!=="boolean"){throw new C("allowH2 must be a valid boolean value")}if(G!=null&&(typeof G!=="number"||G<1)){throw new C("maxConcurrentStreams must be a possitive integer, greater than 0")}if(typeof b!=="function"){b=R({...p,maxCachedSessions:w,allowH2:M,socketPath:u,timeout:g,...i.nodeHasAutoSelectFamily&&U?{autoSelectFamily:U,autoSelectFamilyAttemptTimeout:L}:undefined,...b})}this[cA]=e&&e.Client&&Array.isArray(e.Client)?e.Client:[TA({maxRedirections:D})];this[m]=i.parseOrigin(A);this[rA]=b;this[Z]=null;this[j]=d!=null?d:1;this[K]=t||o.maxHeaderSize;this[P]=B==null?4e3:B;this[z]=I==null?6e5:I;this[$]=h==null?1e3:h;this[X]=this[P];this[k]=null;this[EA]=S!=null?S:null;this[T]=0;this[V]=0;this[x]=`host: ${this[m].hostname}${this[m].port?`:${this[m].port}`:""}\r\n`;this[eA]=c!=null?c:3e5;this[AA]=r!=null?r:3e5;this[tA]=y==null?true:y;this[sA]=D;this[oA]=F;this[SA]=null;this[QA]=N>-1?N:-1;this[CA]="h1";this[lA]=null;this[IA]=!M?null:{openStreams:0,maxConcurrentStreams:G!=null?G:100};this[BA]=`${this[m].hostname}${this[m].port?`:${this[m].port}`:""}`;this[Y]=[];this[q]=0;this[_]=0}get pipelining(){return this[j]}set pipelining(A){this[j]=A;resume(this,true)}get[M](){return this[Y].length-this[_]}get[L](){return this[_]-this[q]}get[G](){return this[Y].length-this[q]}get[H](){return!!this[Z]&&!this[J]&&!this[Z].destroyed}get[F](){const A=this[Z];return A&&(A[D]||A[v]||A[U])||this[G]>=(this[j]||1)||this[M]>0}[N](A){connect(this);this.once("connect",A)}[gA](A,e){const t=A.origin||this[m].origin;const r=this[CA]==="h2"?g[hA](t,A,e):g[dA](t,A,e);this[Y].push(r);if(this[T]){}else if(i.bodyLength(r.body)==null&&i.isIterable(r.body)){this[T]=1;process.nextTick(resume,this)}else{resume(this,true)}if(this[T]&&this[V]!==2&&this[F]){this[V]=2}return this[V]<2}async[iA](){return new Promise((A=>{if(!this[G]){A(null)}else{this[SA]=A}}))}async[aA](A){return new Promise((e=>{const t=this[Y].splice(this[_]);for(let e=0;e{if(this[SA]){this[SA]();this[SA]=null}e()};if(this[lA]!=null){i.destroy(this[lA],A);this[lA]=null;this[IA]=null}if(!this[Z]){queueMicrotask(callback)}else{i.destroy(this[Z].on("close",callback),A)}resume(this)}))}}function onHttp2SessionError(A){r(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[Z][W]=A;onError(this[b],A)}function onHttp2FrameError(A,e,t){const r=new u(`HTTP/2: "frameError" received - type ${A}, code ${e}`);if(t===0){this[Z][W]=r;onError(this[b],r)}}function onHttp2SessionEnd(){i.destroy(this,new h("other side closed"));i.destroy(this[Z],new h("other side closed"))}function onHTTP2GoAway(A){const e=this[b];const t=new u(`HTTP/2: "GOAWAY" frame received with code ${A}`);e[Z]=null;e[lA]=null;if(e.destroyed){r(this[M]===0);const A=e[Y].splice(e[q]);for(let e=0;e0){const A=e[Y][e[q]];e[Y][e[q]++]=null;errorRequest(e,A,t)}e[_]=e[q];r(e[L]===0);e.emit("disconnect",e[m],[e],t);resume(e)}const UA=t(4623);const TA=t(3038);const LA=Buffer.alloc(0);async function lazyllhttp(){const A=process.env.JEST_WORKER_ID?t(2745):undefined;let e;try{e=await WebAssembly.compile(Buffer.from(t(3643),"base64"))}catch(r){e=await WebAssembly.compile(Buffer.from(A||t(2745),"base64"))}return await WebAssembly.instantiate(e,{env:{wasm_on_url:(A,e,t)=>0,wasm_on_status:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onStatus(new FA(YA.buffer,s,t))||0},wasm_on_message_begin:A=>{r.strictEqual(vA.ptr,A);return vA.onMessageBegin()||0},wasm_on_header_field:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onHeaderField(new FA(YA.buffer,s,t))||0},wasm_on_header_value:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onHeaderValue(new FA(YA.buffer,s,t))||0},wasm_on_headers_complete:(A,e,t,s)=>{r.strictEqual(vA.ptr,A);return vA.onHeadersComplete(e,Boolean(t),Boolean(s))||0},wasm_on_body:(A,e,t)=>{r.strictEqual(vA.ptr,A);const s=e-JA+YA.byteOffset;return vA.onBody(new FA(YA.buffer,s,t))||0},wasm_on_message_complete:A=>{r.strictEqual(vA.ptr,A);return vA.onMessageComplete()||0}}})}let MA=null;let GA=lazyllhttp();GA.catch();let vA=null;let YA=null;let HA=0;let JA=null;const VA=1;const OA=2;const PA=3;class Parser{constructor(A,e,{exports:t}){r(Number.isFinite(A[K])&&A[K]>0);this.llhttp=t;this.ptr=this.llhttp.llhttp_alloc(UA.TYPE.RESPONSE);this.client=A;this.socket=e;this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.statusCode=null;this.statusText="";this.upgrade=false;this.headers=[];this.headersSize=0;this.headersMaxSize=A[K];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=A[QA]}setTimeout(A,e){this.timeoutType=e;if(A!==this.timeoutValue){a.clearTimeout(this.timeout);if(A){this.timeout=a.setTimeout(onParserTimeout,A,this);if(this.timeout.unref){this.timeout.unref()}}else{this.timeout=null}this.timeoutValue=A}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(vA==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===OA);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||LA);this.readMore()}readMore(){while(!this.paused&&this.ptr){const A=this.socket.read();if(A===null){break}this.execute(A)}}execute(A){r(this.ptr!=null);r(vA==null);r(!this.paused);const{socket:e,llhttp:t}=this;if(A.length>HA){if(JA){t.free(JA)}HA=Math.ceil(A.length/4096)*4096;JA=t.malloc(HA)}new Uint8Array(t.memory.buffer,JA,HA).set(A);try{let r;try{YA=A;vA=this;r=t.llhttp_execute(this.ptr,JA,A.length)}catch(A){throw A}finally{vA=null;YA=null}const s=t.llhttp_get_error_pos(this.ptr)-JA;if(r===UA.ERROR.PAUSED_UPGRADE){this.onUpgrade(A.slice(s))}else if(r===UA.ERROR.PAUSED){this.paused=true;e.unshift(A.slice(s))}else if(r!==UA.ERROR.OK){const e=t.llhttp_get_error_reason(this.ptr);let o="";if(e){const A=new Uint8Array(t.memory.buffer,e).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(t.memory.buffer,e,A).toString()+")"}throw new p(o,UA.ERROR[r],A.slice(s))}}catch(A){i.destroy(e,A)}}destroy(){r(this.ptr!=null);r(vA==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;a.clearTimeout(this.timeout);this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.paused=false}onStatus(A){this.statusText=A.toString()}onMessageBegin(){const{socket:A,client:e}=this;if(A.destroyed){return-1}const t=e[Y][e[q]];if(!t){return-1}}onHeaderField(A){const e=this.headers.length;if((e&1)===0){this.headers.push(A)}else{this.headers[e-1]=Buffer.concat([this.headers[e-1],A])}this.trackHeader(A.length)}onHeaderValue(A){let e=this.headers.length;if((e&1)===1){this.headers.push(A);e+=1}else{this.headers[e-1]=Buffer.concat([this.headers[e-1],A])}const t=this.headers[e-2];if(t.length===10&&t.toString().toLowerCase()==="keep-alive"){this.keepAlive+=A.toString()}else if(t.length===10&&t.toString().toLowerCase()==="connection"){this.connection+=A.toString()}else if(t.length===14&&t.toString().toLowerCase()==="content-length"){this.contentLength+=A.toString()}this.trackHeader(A.length)}trackHeader(A){this.headersSize+=A;if(this.headersSize>=this.headersMaxSize){i.destroy(this.socket,new I)}}onUpgrade(A){const{upgrade:e,client:t,socket:s,headers:o,statusCode:n}=this;r(e);const a=t[Y][t[q]];r(a);r(!s.destroyed);r(s===t[Z]);r(!this.paused);r(a.upgrade||a.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;r(this.headers.length%2===0);this.headers=[];this.headersSize=0;s.unshift(A);s[S].destroy();s[S]=null;s[b]=null;s[W]=null;s.removeListener("error",onSocketError).removeListener("readable",onSocketReadable).removeListener("end",onSocketEnd).removeListener("close",onSocketClose);t[Z]=null;t[Y][t[q]++]=null;t.emit("disconnect",t[m],[t],new u("upgrade"));try{a.onUpgrade(n,o,s)}catch(A){i.destroy(s,A)}resume(t)}onHeadersComplete(A,e,t){const{client:s,socket:o,headers:n,statusText:a}=this;if(o.destroyed){return-1}const g=s[Y][s[q]];if(!g){return-1}r(!this.upgrade);r(this.statusCode<200);if(A===100){i.destroy(o,new h("bad response",i.getSocketInfo(o)));return-1}if(e&&!g.upgrade){i.destroy(o,new h("bad upgrade",i.getSocketInfo(o)));return-1}r.strictEqual(this.timeoutType,VA);this.statusCode=A;this.shouldKeepAlive=t||g.method==="HEAD"&&!o[D]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const A=g.bodyTimeout!=null?g.bodyTimeout:s[eA];this.setTimeout(A,OA)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(g.method==="CONNECT"){r(s[L]===1);this.upgrade=true;return 2}if(e){r(s[L]===1);this.upgrade=true;return 2}r(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&s[j]){const A=this.keepAlive?i.parseKeepAliveTimeout(this.keepAlive):null;if(A!=null){const e=Math.min(A-s[$],s[z]);if(e<=0){o[D]=true}else{s[X]=e}}else{s[X]=s[P]}}else{o[D]=true}const c=g.onHeaders(A,n,this.resume,a)===false;if(g.aborted){return-1}if(g.method==="HEAD"){return 1}if(A<200){return 1}if(o[U]){o[U]=false;resume(s)}return c?UA.ERROR.PAUSED:0}onBody(A){const{client:e,socket:t,statusCode:s,maxResponseSize:o}=this;if(t.destroyed){return-1}const n=e[Y][e[q]];r(n);r.strictEqual(this.timeoutType,OA);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(s>=200);if(o>-1&&this.bytesRead+A.length>o){i.destroy(t,new y);return-1}this.bytesRead+=A.length;if(n.onData(A)===false){return UA.ERROR.PAUSED}}onMessageComplete(){const{client:A,socket:e,statusCode:t,upgrade:s,headers:o,contentLength:n,bytesRead:a,shouldKeepAlive:g}=this;if(e.destroyed&&(!t||g)){return-1}if(s){return}const c=A[Y][A[q]];r(c);r(t>=100);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";r(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(t<200){return}if(c.method!=="HEAD"&&n&&a!==parseInt(n,10)){i.destroy(e,new Q);return-1}c.onComplete(o);A[Y][A[q]++]=null;if(e[v]){r.strictEqual(A[L],0);i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(!g){i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(e[D]&&A[L]===0){i.destroy(e,new u("reset"));return UA.ERROR.PAUSED}else if(A[j]===1){setImmediate(resume,A)}else{resume(A)}}}function onParserTimeout(A){const{socket:e,timeoutType:t,client:s}=A;if(t===VA){if(!e[v]||e.writableNeedDrain||s[L]>1){r(!A.paused,"cannot be paused while waiting for headers");i.destroy(e,new l)}}else if(t===OA){if(!A.paused){i.destroy(e,new d)}}else if(t===PA){r(s[L]===0&&s[X]);i.destroy(e,new u("socket idle timeout"))}}function onSocketReadable(){const{[S]:A}=this;if(A){A.readMore()}}function onSocketError(A){const{[b]:e,[S]:t}=this;r(A.code!=="ERR_TLS_CERT_ALTNAME_INVALID");if(e[CA]!=="h2"){if(A.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){t.onMessageComplete();return}}this[W]=A;onError(this[b],A)}function onError(A,e){if(A[L]===0&&e.code!=="UND_ERR_INFO"&&e.code!=="UND_ERR_SOCKET"){r(A[_]===A[q]);const t=A[Y].splice(A[q]);for(let r=0;r0&&t.code!=="UND_ERR_INFO"){const e=A[Y][A[q]];A[Y][A[q]++]=null;errorRequest(A,e,t)}A[_]=A[q];r(A[L]===0);A.emit("disconnect",A[m],[A],t);resume(A)}async function connect(A){r(!A[J]);r(!A[Z]);let{host:e,hostname:t,protocol:o,port:n}=A[m];if(t[0]==="["){const A=t.indexOf("]");r(A!==-1);const e=t.substring(1,A);r(s.isIP(e));t=e}A[J]=true;if(NA.beforeConnect.hasSubscribers){NA.beforeConnect.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA]})}try{const s=await new Promise(((r,s)=>{A[rA]({host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},((A,e)=>{if(A){s(A)}else{r(e)}}))}));if(A.destroyed){i.destroy(s.on("error",(()=>{})),new w);return}A[J]=false;r(s);const a=s.alpnProtocol==="h2";if(a){if(!bA){bA=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const e=fA.connect(A[m],{createConnection:()=>s,peerMaxConcurrentStreams:A[IA].maxConcurrentStreams});A[CA]="h2";e[b]=A;e[Z]=s;e.on("error",onHttp2SessionError);e.on("frameError",onHttp2FrameError);e.on("end",onHttp2SessionEnd);e.on("goaway",onHTTP2GoAway);e.on("close",onSocketClose);e.unref();A[lA]=e;s[lA]=e}else{if(!MA){MA=await GA;GA=null}s[O]=false;s[v]=false;s[D]=false;s[U]=false;s[S]=new Parser(A,s,MA)}s[nA]=0;s[oA]=A[oA];s[b]=A;s[W]=null;s.on("error",onSocketError).on("readable",onSocketReadable).on("end",onSocketEnd).on("close",onSocketClose);A[Z]=s;if(NA.connected.hasSubscribers){NA.connected.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA],socket:s})}A.emit("connect",A[m],[A])}catch(s){if(A.destroyed){return}A[J]=false;if(NA.connectError.hasSubscribers){NA.connectError.publish({connectParams:{host:e,hostname:t,protocol:o,port:n,servername:A[k],localAddress:A[EA]},connector:A[rA],error:s})}if(s.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(A[L]===0);while(A[M]>0&&A[Y][A[_]].servername===A[k]){const e=A[Y][A[_]++];errorRequest(A,e,s)}}else{onError(A,s)}A.emit("connectionError",A[m],[A],s)}resume(A)}function emitDrain(A){A[V]=0;A.emit("drain",A[m],[A])}function resume(A,e){if(A[T]===2){return}A[T]=2;_resume(A,e);A[T]=0;if(A[q]>256){A[Y].splice(0,A[q]);A[_]-=A[q];A[q]=0}}function _resume(A,e){while(true){if(A.destroyed){r(A[M]===0);return}if(A[SA]&&!A[G]){A[SA]();A[SA]=null;return}const t=A[Z];if(t&&!t.destroyed&&t.alpnProtocol!=="h2"){if(A[G]===0){if(!t[O]&&t.unref){t.unref();t[O]=true}}else if(t[O]&&t.ref){t.ref();t[O]=false}if(A[G]===0){if(t[S].timeoutType!==PA){t[S].setTimeout(A[X],PA)}}else if(A[L]>0&&t[S].statusCode<200){if(t[S].timeoutType!==VA){const e=A[Y][A[q]];const r=e.headersTimeout!=null?e.headersTimeout:A[AA];t[S].setTimeout(r,VA)}}}if(A[F]){A[V]=2}else if(A[V]===2){if(e){A[V]=1;process.nextTick(emitDrain,A)}else{emitDrain(A)}continue}if(A[M]===0){return}if(A[L]>=(A[j]||1)){return}const s=A[Y][A[_]];if(A[m].protocol==="https:"&&A[k]!==s.servername){if(A[L]>0){return}A[k]=s.servername;if(t&&t.servername!==s.servername){i.destroy(t,new u("servername changed"));return}}if(A[J]){return}if(!t&&!A[lA]){connect(A);return}if(t.destroyed||t[v]||t[D]||t[U]){return}if(A[L]>0&&!s.idempotent){return}if(A[L]>0&&(s.upgrade||s.method==="CONNECT")){return}if(A[L]>0&&i.bodyLength(s.body)!==0&&(i.isStream(s.body)||i.isAsyncIterable(s.body))){return}if(!s.aborted&&write(A,s)){A[_]++}else{A[Y].splice(A[_],1)}}}function shouldSendContentLength(A){return A!=="GET"&&A!=="HEAD"&&A!=="OPTIONS"&&A!=="TRACE"&&A!=="CONNECT"}function write(A,e){if(A[CA]==="h2"){writeH2(A,A[lA],e);return}const{body:t,method:s,path:o,host:n,upgrade:a,headers:g,blocking:c,reset:Q}=e;const C=s==="PUT"||s==="POST"||s==="PATCH";if(t&&typeof t.read==="function"){t.read(0)}const l=i.bodyLength(t);let I=l;if(I===null){I=e.contentLength}if(I===0&&!C){I=null}if(shouldSendContentLength(s)&&I>0&&e.contentLength!==null&&e.contentLength!==I){if(A[tA]){errorRequest(A,e,new E);return false}process.emitWarning(new E)}const h=A[Z];try{e.onConnect((t=>{if(e.aborted||e.completed){return}errorRequest(A,e,t||new B);i.destroy(h,new u("aborted"))}))}catch(t){errorRequest(A,e,t)}if(e.aborted){return false}if(s==="HEAD"){h[D]=true}if(a||s==="CONNECT"){h[D]=true}if(Q!=null){h[D]=Q}if(A[oA]&&h[nA]++>=A[oA]){h[D]=true}if(c){h[U]=true}let d=`${s} ${o} HTTP/1.1\r\n`;if(typeof n==="string"){d+=`host: ${n}\r\n`}else{d+=A[x]}if(a){d+=`connection: upgrade\r\nupgrade: ${a}\r\n`}else if(A[j]&&!h[D]){d+="connection: keep-alive\r\n"}else{d+="connection: close\r\n"}if(g){d+=g}if(NA.sendHeaders.hasSubscribers){NA.sendHeaders.publish({request:e,headers:d,socket:h})}if(!t||l===0){if(I===0){h.write(`${d}content-length: 0\r\n\r\n`,"latin1")}else{r(I===null,"no body must not have content length");h.write(`${d}\r\n`,"latin1")}e.onRequestSent()}else if(i.isBuffer(t)){r(I===t.byteLength,"buffer body must have content length");h.cork();h.write(`${d}content-length: ${I}\r\n\r\n`,"latin1");h.write(t);h.uncork();e.onBodySent(t);e.onRequestSent();if(!C){h[D]=true}}else if(i.isBlobLike(t)){if(typeof t.stream==="function"){writeIterable({body:t.stream(),client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else{writeBlob({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}}else if(i.isStream(t)){writeStream({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else if(i.isIterable(t)){writeIterable({body:t,client:A,request:e,socket:h,contentLength:I,header:d,expectsPayload:C})}else{r(false)}return true}function writeH2(A,e,t){const{body:s,method:o,path:n,host:a,upgrade:c,expectContinue:Q,signal:C,headers:l}=t;let I;if(typeof l==="string")I=g[uA](l.trim());else I=l;if(c){errorRequest(A,t,new Error("Upgrade not supported for H2"));return false}try{t.onConnect((e=>{if(t.aborted||t.completed){return}errorRequest(A,t,e||new B)}))}catch(e){errorRequest(A,t,e)}if(t.aborted){return false}let h;const d=A[IA];I[pA]=a||A[BA];I[yA]=o;if(o==="CONNECT"){e.ref();h=e.request(I,{endStream:false,signal:C});if(h.id&&!h.pending){t.onUpgrade(null,null,h);++d.openStreams}else{h.once("ready",(()=>{t.onUpgrade(null,null,h);++d.openStreams}))}h.once("close",(()=>{d.openStreams-=1;if(d.openStreams===0)e.unref()}));return true}I[wA]=n;I[RA]="https";const p=o==="PUT"||o==="POST"||o==="PATCH";if(s&&typeof s.read==="function"){s.read(0)}let y=i.bodyLength(s);if(y==null){y=t.contentLength}if(y===0||!p){y=null}if(shouldSendContentLength(o)&&y>0&&t.contentLength!=null&&t.contentLength!==y){if(A[tA]){errorRequest(A,t,new E);return false}process.emitWarning(new E)}if(y!=null){r(s,"no body must not have content length");I[mA]=`${y}`}e.ref();const w=o==="GET"||o==="HEAD";if(Q){I[DA]="100-continue";h=e.request(I,{endStream:w,signal:C});h.once("continue",writeBodyH2)}else{h=e.request(I,{endStream:w,signal:C});writeBodyH2()}++d.openStreams;h.once("response",(A=>{const{[kA]:e,...r}=A;if(t.onHeaders(Number(e),r,h.resume.bind(h),"")===false){h.pause()}}));h.once("end",(()=>{t.onComplete([])}));h.on("data",(A=>{if(t.onData(A)===false){h.pause()}}));h.once("close",(()=>{d.openStreams-=1;if(d.openStreams===0){e.unref()}}));h.once("error",(function(e){if(A[lA]&&!A[lA].destroyed&&!this.closed&&!this.destroyed){d.streams-=1;i.destroy(h,e)}}));h.once("frameError",((e,r)=>{const s=new u(`HTTP/2: "frameError" received - type ${e}, code ${r}`);errorRequest(A,t,s);if(A[lA]&&!A[lA].destroyed&&!this.closed&&!this.destroyed){d.streams-=1;i.destroy(h,s)}}));return true;function writeBodyH2(){if(!s){t.onRequestSent()}else if(i.isBuffer(s)){r(y===s.byteLength,"buffer body must have content length");h.cork();h.write(s);h.uncork();h.end();t.onBodySent(s);t.onRequestSent()}else if(i.isBlobLike(s)){if(typeof s.stream==="function"){writeIterable({client:A,request:t,contentLength:y,h2stream:h,expectsPayload:p,body:s.stream(),socket:A[Z],header:""})}else{writeBlob({body:s,client:A,request:t,contentLength:y,expectsPayload:p,h2stream:h,header:"",socket:A[Z]})}}else if(i.isStream(s)){writeStream({body:s,client:A,request:t,contentLength:y,expectsPayload:p,socket:A[Z],h2stream:h,header:""})}else if(i.isIterable(s)){writeIterable({body:s,client:A,request:t,contentLength:y,expectsPayload:p,header:"",h2stream:h,socket:A[Z]})}else{r(false)}}}function writeStream({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:a,header:g,expectsPayload:c}){r(a!==0||t[L]===0,"stream body cannot be pipelined");if(t[CA]==="h2"){const C=n(e,A,(t=>{if(t){i.destroy(e,t);i.destroy(A,t)}else{s.onRequestSent()}}));C.on("data",onPipeData);C.once("end",(()=>{C.removeListener("data",onPipeData);i.destroy(C)}));function onPipeData(A){s.onBodySent(A)}return}let E=false;const Q=new AsyncWriter({socket:o,request:s,contentLength:a,client:t,expectsPayload:c,header:g});const onData=function(A){if(E){return}try{if(!Q.write(A)&&this.pause){this.pause()}}catch(A){i.destroy(this,A)}};const onDrain=function(){if(E){return}if(e.resume){e.resume()}};const onAbort=function(){if(E){return}const A=new B;queueMicrotask((()=>onFinished(A)))};const onFinished=function(A){if(E){return}E=true;r(o.destroyed||o[v]&&t[L]<=1);o.off("drain",onDrain).off("error",onFinished);e.removeListener("data",onData).removeListener("end",onFinished).removeListener("error",onFinished).removeListener("close",onAbort);if(!A){try{Q.end()}catch(e){A=e}}Q.destroy(A);if(A&&(A.code!=="UND_ERR_INFO"||A.message!=="reset")){i.destroy(e,A)}else{i.destroy(e)}};e.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onAbort);if(e.resume){e.resume()}o.on("drain",onDrain).on("error",onFinished)}async function writeBlob({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:n,header:a,expectsPayload:g}){r(n===e.size,"blob body must have content length");const c=t[CA]==="h2";try{if(n!=null&&n!==e.size){throw new E}const r=Buffer.from(await e.arrayBuffer());if(c){A.cork();A.write(r);A.uncork()}else{o.cork();o.write(`${a}content-length: ${n}\r\n\r\n`,"latin1");o.write(r);o.uncork()}s.onBodySent(r);s.onRequestSent();if(!g){o[D]=true}resume(t)}catch(e){i.destroy(c?A:o,e)}}async function writeIterable({h2stream:A,body:e,client:t,request:s,socket:o,contentLength:n,header:i,expectsPayload:a}){r(n!==0||t[L]===0,"iterator body cannot be pipelined");let g=null;function onDrain(){if(g){const A=g;g=null;A()}}const waitForDrain=()=>new Promise(((A,e)=>{r(g===null);if(o[W]){e(o[W])}else{g=A}}));if(t[CA]==="h2"){A.on("close",onDrain).on("drain",onDrain);try{for await(const t of e){if(o[W]){throw o[W]}const e=A.write(t);s.onBodySent(t);if(!e){await waitForDrain()}}}catch(e){A.destroy(e)}finally{s.onRequestSent();A.end();A.off("close",onDrain).off("drain",onDrain)}return}o.on("close",onDrain).on("drain",onDrain);const c=new AsyncWriter({socket:o,request:s,contentLength:n,client:t,expectsPayload:a,header:i});try{for await(const A of e){if(o[W]){throw o[W]}if(!c.write(A)){await waitForDrain()}}c.end()}catch(A){c.destroy(A)}finally{o.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({socket:A,request:e,contentLength:t,client:r,expectsPayload:s,header:o}){this.socket=A;this.request=e;this.contentLength=t;this.client=r;this.bytesWritten=0;this.expectsPayload=s;this.header=o;A[v]=true}write(A){const{socket:e,request:t,contentLength:r,client:s,bytesWritten:o,expectsPayload:n,header:i}=this;if(e[W]){throw e[W]}if(e.destroyed){return false}const a=Buffer.byteLength(A);if(!a){return true}if(r!==null&&o+a>r){if(s[tA]){throw new E}process.emitWarning(new E)}e.cork();if(o===0){if(!n){e[D]=true}if(r===null){e.write(`${i}transfer-encoding: chunked\r\n`,"latin1")}else{e.write(`${i}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){e.write(`\r\n${a.toString(16)}\r\n`,"latin1")}this.bytesWritten+=a;const g=e.write(A);e.uncork();t.onBodySent(A);if(!g){if(e[S].timeout&&e[S].timeoutType===VA){if(e[S].timeout.refresh){e[S].timeout.refresh()}}}return g}end(){const{socket:A,contentLength:e,client:t,bytesWritten:r,expectsPayload:s,header:o,request:n}=this;n.onRequestSent();A[v]=false;if(A[W]){throw A[W]}if(A.destroyed){return}if(r===0){if(s){A.write(`${o}content-length: 0\r\n\r\n`,"latin1")}else{A.write(`${o}\r\n`,"latin1")}}else if(e===null){A.write("\r\n0\r\n\r\n","latin1")}if(e!==null&&r!==e){if(t[tA]){throw new E}else{process.emitWarning(new E)}}if(A[S].timeout&&A[S].timeoutType===VA){if(A[S].timeout.refresh){A[S].timeout.refresh()}}resume(t)}destroy(A){const{socket:e,client:t}=this;e[v]=false;if(A){r(t[L]<=1,"pipeline should only contain this request");i.destroy(e,A)}}}function errorRequest(A,e,t){try{e.onError(t);r(e.aborted)}catch(t){A.emit("error",t)}}A.exports=Client},2135:(A,e,t)=>{"use strict";const{kConnected:r,kSize:s}=t(548);class CompatWeakRef{constructor(A){this.value=A}deref(){return this.value[r]===0&&this.value[s]===0?undefined:this.value}}class CompatFinalizer{constructor(A){this.finalizer=A}register(A,e){if(A.on){A.on("disconnect",(()=>{if(A[r]===0&&A[s]===0){this.finalizer(e)}}))}}}A.exports=function(){if(process.env.NODE_V8_COVERAGE){return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:global.WeakRef||CompatWeakRef,FinalizationRegistry:global.FinalizationRegistry||CompatFinalizer}}},7568:A=>{"use strict";const e=1024;const t=4096;A.exports={maxAttributeValueSize:e,maxNameValuePairSize:t}},5993:(A,e,t)=>{"use strict";const{parseSetCookie:r}=t(6590);const{stringify:s,getHeadersList:o}=t(9281);const{webidl:n}=t(3113);const{Headers:i}=t(9976);function getCookies(A){n.argumentLengthCheck(arguments,1,{header:"getCookies"});n.brandCheck(A,i,{strict:false});const e=A.get("cookie");const t={};if(!e){return t}for(const A of e.split(";")){const[e,...r]=A.split("=");t[e.trim()]=r.join("=")}return t}function deleteCookie(A,e,t){n.argumentLengthCheck(arguments,2,{header:"deleteCookie"});n.brandCheck(A,i,{strict:false});e=n.converters.DOMString(e);t=n.converters.DeleteCookieAttributes(t);setCookie(A,{name:e,value:"",expires:new Date(0),...t})}function getSetCookies(A){n.argumentLengthCheck(arguments,1,{header:"getSetCookies"});n.brandCheck(A,i,{strict:false});const e=o(A).cookies;if(!e){return[]}return e.map((A=>r(Array.isArray(A)?A[1]:A)))}function setCookie(A,e){n.argumentLengthCheck(arguments,2,{header:"setCookie"});n.brandCheck(A,i,{strict:false});e=n.converters.Cookie(e);const t=s(e);if(t){A.append("Set-Cookie",s(e))}}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter((A=>{if(typeof A==="number"){return n.converters["unsigned long long"](A)}return new Date(A)})),key:"expires",defaultValue:null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:[]}]);A.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},6590:(A,e,t)=>{"use strict";const{maxNameValuePairSize:r,maxAttributeValueSize:s}=t(7568);const{isCTLExcludingHtab:o}=t(9281);const{collectASequenceOfCodePointsFast:n}=t(7691);const i=t(2613);function parseSetCookie(A){if(o(A)){return null}let e="";let t="";let s="";let i="";if(A.includes(";")){const r={position:0};e=n(";",A,r);t=A.slice(r.position)}else{e=A}if(!e.includes("=")){i=e}else{const A={position:0};s=n("=",e,A);i=e.slice(A.position+1)}s=s.trim();i=i.trim();if(s.length+i.length>r){return null}return{name:s,value:i,...parseUnparsedAttributes(t)}}function parseUnparsedAttributes(A,e={}){if(A.length===0){return e}i(A[0]===";");A=A.slice(1);let t="";if(A.includes(";")){t=n(";",A,{position:0});A=A.slice(t.length)}else{t=A;A=""}let r="";let o="";if(t.includes("=")){const A={position:0};r=n("=",t,A);o=t.slice(A.position+1)}else{r=t}r=r.trim();o=o.trim();if(o.length>s){return parseUnparsedAttributes(A,e)}const a=r.toLowerCase();if(a==="expires"){const A=new Date(o);e.expires=A}else if(a==="max-age"){const t=o.charCodeAt(0);if((t<48||t>57)&&o[0]!=="-"){return parseUnparsedAttributes(A,e)}if(!/^\d+$/.test(o)){return parseUnparsedAttributes(A,e)}const r=Number(o);e.maxAge=r}else if(a==="domain"){let A=o;if(A[0]==="."){A=A.slice(1)}A=A.toLowerCase();e.domain=A}else if(a==="path"){let A="";if(o.length===0||o[0]!=="/"){A="/"}else{A=o}e.path=A}else if(a==="secure"){e.secure=true}else if(a==="httponly"){e.httpOnly=true}else if(a==="samesite"){let A="Default";const t=o.toLowerCase();if(t.includes("none")){A="None"}if(t.includes("strict")){A="Strict"}if(t.includes("lax")){A="Lax"}e.sameSite=A}else{e.unparsed??=[];e.unparsed.push(`${r}=${o}`)}return parseUnparsedAttributes(A,e)}A.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},9281:(A,e,t)=>{"use strict";const r=t(2613);const{kHeadersList:s}=t(548);function isCTLExcludingHtab(A){if(A.length===0){return false}for(const e of A){const A=e.charCodeAt(0);if(A>=0||A<=8||(A>=10||A<=31)||A===127){return false}}}function validateCookieName(A){for(const e of A){const A=e.charCodeAt(0);if(A<=32||A>127||e==="("||e===")"||e===">"||e==="<"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}"){throw new Error("Invalid cookie name")}}}function validateCookieValue(A){for(const e of A){const A=e.charCodeAt(0);if(A<33||A===34||A===44||A===59||A===92||A>126){throw new Error("Invalid header value")}}}function validateCookiePath(A){for(const e of A){const A=e.charCodeAt(0);if(A<33||e===";"){throw new Error("Invalid cookie path")}}}function validateCookieDomain(A){if(A.startsWith("-")||A.endsWith(".")||A.endsWith("-")){throw new Error("Invalid cookie domain")}}function toIMFDate(A){if(typeof A==="number"){A=new Date(A)}const e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=e[A.getUTCDay()];const s=A.getUTCDate().toString().padStart(2,"0");const o=t[A.getUTCMonth()];const n=A.getUTCFullYear();const i=A.getUTCHours().toString().padStart(2,"0");const a=A.getUTCMinutes().toString().padStart(2,"0");const g=A.getUTCSeconds().toString().padStart(2,"0");return`${r}, ${s} ${o} ${n} ${i}:${a}:${g} GMT`}function validateCookieMaxAge(A){if(A<0){throw new Error("Invalid cookie max-age")}}function stringify(A){if(A.name.length===0){return null}validateCookieName(A.name);validateCookieValue(A.value);const e=[`${A.name}=${A.value}`];if(A.name.startsWith("__Secure-")){A.secure=true}if(A.name.startsWith("__Host-")){A.secure=true;A.domain=null;A.path="/"}if(A.secure){e.push("Secure")}if(A.httpOnly){e.push("HttpOnly")}if(typeof A.maxAge==="number"){validateCookieMaxAge(A.maxAge);e.push(`Max-Age=${A.maxAge}`)}if(A.domain){validateCookieDomain(A.domain);e.push(`Domain=${A.domain}`)}if(A.path){validateCookiePath(A.path);e.push(`Path=${A.path}`)}if(A.expires&&A.expires.toString()!=="Invalid Date"){e.push(`Expires=${toIMFDate(A.expires)}`)}if(A.sameSite){e.push(`SameSite=${A.sameSite}`)}for(const t of A.unparsed){if(!t.includes("=")){throw new Error("Invalid unparsed")}const[A,...r]=t.split("=");e.push(`${A.trim()}=${r.join("=")}`)}return e.join("; ")}let o;function getHeadersList(A){if(A[s]){return A[s]}if(!o){o=Object.getOwnPropertySymbols(A).find((A=>A.description==="headers list"));r(o,"Headers cannot be parsed")}const e=A[o];r(e);return e}A.exports={isCTLExcludingHtab:isCTLExcludingHtab,stringify:stringify,getHeadersList:getHeadersList}},3883:(A,e,t)=>{"use strict";const r=t(9278);const s=t(2613);const o=t(781);const{InvalidArgumentError:n,ConnectTimeoutError:i}=t(6562);let a;let g;if(global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE){g=class WeakSessionCache{constructor(A){this._maxCachedSessions=A;this._sessionCache=new Map;this._sessionRegistry=new global.FinalizationRegistry((A=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:A}=this._sessionCache.keys().next();this._sessionCache.delete(A)}this._sessionCache.set(A,e)}}}function buildConnector({allowH2:A,maxCachedSessions:e,socketPath:i,timeout:c,...E}){if(e!=null&&(!Number.isInteger(e)||e<0)){throw new n("maxCachedSessions must be a positive integer or zero")}const Q={path:i,...E};const C=new g(e==null?100:e);c=c==null?1e4:c;A=A!=null?A:false;return function connect({hostname:e,host:n,protocol:i,port:g,servername:E,localAddress:B,httpSocket:l},I){let h;if(i==="https:"){if(!a){a=t(4756)}E=E||Q.servername||o.getServerName(n)||null;const r=E||e;const i=C.get(r)||null;s(r);h=a.connect({highWaterMark:16384,...Q,servername:E,session:i,localAddress:B,ALPNProtocols:A?["http/1.1","h2"]:["http/1.1"],socket:l,port:g||443,host:e});h.on("session",(function(A){C.set(r,A)}))}else{s(!l,"httpSocket can only be sent on TLS update");h=r.connect({highWaterMark:64*1024,...Q,localAddress:B,port:g||80,host:e})}if(Q.keepAlive==null||Q.keepAlive){const A=Q.keepAliveInitialDelay===undefined?6e4:Q.keepAliveInitialDelay;h.setKeepAlive(true,A)}const u=setupTimeout((()=>onConnectTimeout(h)),c);h.setNoDelay(true).once(i==="https:"?"secureConnect":"connect",(function(){u();if(I){const A=I;I=null;A(null,this)}})).on("error",(function(A){u();if(I){const e=I;I=null;e(A)}}));return h}}function setupTimeout(A,e){if(!e){return()=>{}}let t=null;let r=null;const s=setTimeout((()=>{t=setImmediate((()=>{if(process.platform==="win32"){r=setImmediate((()=>A()))}else{A()}}))}),e);return()=>{clearTimeout(s);clearImmediate(t);clearImmediate(r)}}function onConnectTimeout(A){o.destroy(A,new i)}A.exports=buildConnector},7812:A=>{"use strict";const e={};const t=["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 A=0;A{"use strict";class UndiciError extends Error{constructor(A){super(A);this.name="UndiciError";this.code="UND_ERR"}}class ConnectTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ConnectTimeoutError);this.name="ConnectTimeoutError";this.message=A||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}}class HeadersTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,HeadersTimeoutError);this.name="HeadersTimeoutError";this.message=A||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}}class HeadersOverflowError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,HeadersOverflowError);this.name="HeadersOverflowError";this.message=A||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}}class BodyTimeoutError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,BodyTimeoutError);this.name="BodyTimeoutError";this.message=A||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}}class ResponseStatusCodeError extends UndiciError{constructor(A,e,t,r){super(A);Error.captureStackTrace(this,ResponseStatusCodeError);this.name="ResponseStatusCodeError";this.message=A||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=r;this.status=e;this.statusCode=e;this.headers=t}}class InvalidArgumentError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InvalidArgumentError);this.name="InvalidArgumentError";this.message=A||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}}class InvalidReturnValueError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InvalidReturnValueError);this.name="InvalidReturnValueError";this.message=A||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}}class RequestAbortedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,RequestAbortedError);this.name="AbortError";this.message=A||"Request aborted";this.code="UND_ERR_ABORTED"}}class InformationalError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,InformationalError);this.name="InformationalError";this.message=A||"Request information";this.code="UND_ERR_INFO"}}class RequestContentLengthMismatchError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,RequestContentLengthMismatchError);this.name="RequestContentLengthMismatchError";this.message=A||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}}class ResponseContentLengthMismatchError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ResponseContentLengthMismatchError);this.name="ResponseContentLengthMismatchError";this.message=A||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}}class ClientDestroyedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ClientDestroyedError);this.name="ClientDestroyedError";this.message=A||"The client is destroyed";this.code="UND_ERR_DESTROYED"}}class ClientClosedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ClientClosedError);this.name="ClientClosedError";this.message=A||"The client is closed";this.code="UND_ERR_CLOSED"}}class SocketError extends UndiciError{constructor(A,e){super(A);Error.captureStackTrace(this,SocketError);this.name="SocketError";this.message=A||"Socket error";this.code="UND_ERR_SOCKET";this.socket=e}}class NotSupportedError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,NotSupportedError);this.name="NotSupportedError";this.message=A||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}}class BalancedPoolMissingUpstreamError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,NotSupportedError);this.name="MissingUpstreamError";this.message=A||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}}class HTTPParserError extends Error{constructor(A,e,t){super(A);Error.captureStackTrace(this,HTTPParserError);this.name="HTTPParserError";this.code=e?`HPE_${e}`:undefined;this.data=t?t.toString():undefined}}class ResponseExceededMaxSizeError extends UndiciError{constructor(A){super(A);Error.captureStackTrace(this,ResponseExceededMaxSizeError);this.name="ResponseExceededMaxSizeError";this.message=A||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}}class RequestRetryError extends UndiciError{constructor(A,e,{headers:t,data:r}){super(A);Error.captureStackTrace(this,RequestRetryError);this.name="RequestRetryError";this.message=A||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=e;this.data=r;this.headers=t}}A.exports={HTTPParserError:HTTPParserError,UndiciError:UndiciError,HeadersTimeoutError:HeadersTimeoutError,HeadersOverflowError:HeadersOverflowError,BodyTimeoutError:BodyTimeoutError,RequestContentLengthMismatchError:RequestContentLengthMismatchError,ConnectTimeoutError:ConnectTimeoutError,ResponseStatusCodeError:ResponseStatusCodeError,InvalidArgumentError:InvalidArgumentError,InvalidReturnValueError:InvalidReturnValueError,RequestAbortedError:RequestAbortedError,ClientDestroyedError:ClientDestroyedError,ClientClosedError:ClientClosedError,InformationalError:InformationalError,SocketError:SocketError,NotSupportedError:NotSupportedError,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError:BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError,RequestRetryError:RequestRetryError}},8376:(A,e,t)=>{"use strict";const{InvalidArgumentError:r,NotSupportedError:s}=t(6562);const o=t(2613);const{kHTTP2BuildRequest:n,kHTTP2CopyHeaders:i,kHTTP1BuildRequest:a}=t(548);const g=t(781);const c=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;const E=/[^\t\x20-\x7e\x80-\xff]/;const Q=/[^\u0021-\u00ff]/;const C=Symbol("handler");const B={};let l;try{const A=t(1637);B.create=A.channel("undici:request:create");B.bodySent=A.channel("undici:request:bodySent");B.headers=A.channel("undici:request:headers");B.trailers=A.channel("undici:request:trailers");B.error=A.channel("undici:request:error")}catch{B.create={hasSubscribers:false};B.bodySent={hasSubscribers:false};B.headers={hasSubscribers:false};B.trailers={hasSubscribers:false};B.error={hasSubscribers:false}}class Request{constructor(A,{path:e,method:s,body:o,headers:n,query:i,idempotent:a,blocking:E,upgrade:I,headersTimeout:h,bodyTimeout:u,reset:d,throwOnError:p,expectContinue:y},w){if(typeof e!=="string"){throw new r("path must be a string")}else if(e[0]!=="/"&&!(e.startsWith("http://")||e.startsWith("https://"))&&s!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(Q.exec(e)!==null){throw new r("invalid request path")}if(typeof s!=="string"){throw new r("method must be a string")}else if(c.exec(s)===null){throw new r("invalid request method")}if(I&&typeof I!=="string"){throw new r("upgrade must be a string")}if(h!=null&&(!Number.isFinite(h)||h<0)){throw new r("invalid headersTimeout")}if(u!=null&&(!Number.isFinite(u)||u<0)){throw new r("invalid bodyTimeout")}if(d!=null&&typeof d!=="boolean"){throw new r("invalid reset")}if(y!=null&&typeof y!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=h;this.bodyTimeout=u;this.throwOnError=p===true;this.method=s;this.abort=null;if(o==null){this.body=null}else if(g.isStream(o)){this.body=o;const A=this.body._readableState;if(!A||!A.autoDestroy){this.endHandler=function autoDestroy(){g.destroy(this)};this.body.on("end",this.endHandler)}this.errorHandler=A=>{if(this.abort){this.abort(A)}else{this.error=A}};this.body.on("error",this.errorHandler)}else if(g.isBuffer(o)){this.body=o.byteLength?o:null}else if(ArrayBuffer.isView(o)){this.body=o.buffer.byteLength?Buffer.from(o.buffer,o.byteOffset,o.byteLength):null}else if(o instanceof ArrayBuffer){this.body=o.byteLength?Buffer.from(o):null}else if(typeof o==="string"){this.body=o.length?Buffer.from(o):null}else if(g.isFormDataLike(o)||g.isIterable(o)||g.isBlobLike(o)){this.body=o}else{throw new r("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=I||null;this.path=i?g.buildURL(e,i):e;this.origin=A;this.idempotent=a==null?s==="HEAD"||s==="GET":a;this.blocking=E==null?false:E;this.reset=d==null?null:d;this.host=null;this.contentLength=null;this.contentType=null;this.headers="";this.expectContinue=y!=null?y:false;if(Array.isArray(n)){if(n.length%2!==0){throw new r("headers array must be even")}for(let A=0;A{A.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"),kHeadersList:Symbol("headers list"),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"),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"),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"),kHTTP2BuildRequest:Symbol("http2 build request"),kHTTP1BuildRequest:Symbol("http1 build request"),kHTTP2CopyHeaders:Symbol("http2 copy headers"),kHTTPConnVersion:Symbol("http connection version"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable")}},781:(A,e,t)=>{"use strict";const r=t(2613);const{kDestroyed:s,kBodyUsed:o}=t(548);const{IncomingMessage:n}=t(8611);const i=t(2203);const a=t(9278);const{InvalidArgumentError:g}=t(6562);const{Blob:c}=t(181);const E=t(9023);const{stringify:Q}=t(3480);const{headerNameLowerCasedRecord:C}=t(7812);const[B,l]=process.versions.node.split(".").map((A=>Number(A)));function nop(){}function isStream(A){return A&&typeof A==="object"&&typeof A.pipe==="function"&&typeof A.on==="function"}function isBlobLike(A){return c&&A instanceof c||A&&typeof A==="object"&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&/^(Blob|File)$/.test(A[Symbol.toStringTag])}function buildURL(A,e){if(A.includes("?")||A.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const t=Q(e);if(t){A+="?"+t}return A}function parseURL(A){if(typeof A==="string"){A=new URL(A);if(!/^https?:/.test(A.origin||A.protocol)){throw new g("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return A}if(!A||typeof A!=="object"){throw new g("Invalid URL: The URL argument must be a non-null object.")}if(!/^https?:/.test(A.origin||A.protocol)){throw new g("Invalid URL protocol: the URL must start with `http:` or `https:`.")}if(!(A instanceof URL)){if(A.port!=null&&A.port!==""&&!Number.isFinite(parseInt(A.port))){throw new g("Invalid URL: port must be a valid integer or a string representation of an integer.")}if(A.path!=null&&typeof A.path!=="string"){throw new g("Invalid URL path: the path must be a string or null/undefined.")}if(A.pathname!=null&&typeof A.pathname!=="string"){throw new g("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(A.hostname!=null&&typeof A.hostname!=="string"){throw new g("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(A.origin!=null&&typeof A.origin!=="string"){throw new g("Invalid URL origin: the origin must be a string or null/undefined.")}const e=A.port!=null?A.port:A.protocol==="https:"?443:80;let t=A.origin!=null?A.origin:`${A.protocol}//${A.hostname}:${e}`;let r=A.path!=null?A.path:`${A.pathname||""}${A.search||""}`;if(t.endsWith("/")){t=t.substring(0,t.length-1)}if(r&&!r.startsWith("/")){r=`/${r}`}A=new URL(t+r)}return A}function parseOrigin(A){A=parseURL(A);if(A.pathname!=="/"||A.search||A.hash){throw new g("invalid url")}return A}function getHostname(A){if(A[0]==="["){const e=A.indexOf("]");r(e!==-1);return A.substring(1,e)}const e=A.indexOf(":");if(e===-1)return A;return A.substring(0,e)}function getServerName(A){if(!A){return null}r.strictEqual(typeof A,"string");const e=getHostname(A);if(a.isIP(e)){return""}return e}function deepClone(A){return JSON.parse(JSON.stringify(A))}function isAsyncIterable(A){return!!(A!=null&&typeof A[Symbol.asyncIterator]==="function")}function isIterable(A){return!!(A!=null&&(typeof A[Symbol.iterator]==="function"||typeof A[Symbol.asyncIterator]==="function"))}function bodyLength(A){if(A==null){return 0}else if(isStream(A)){const e=A._readableState;return e&&e.objectMode===false&&e.ended===true&&Number.isFinite(e.length)?e.length:null}else if(isBlobLike(A)){return A.size!=null?A.size:null}else if(isBuffer(A)){return A.byteLength}return null}function isDestroyed(A){return!A||!!(A.destroyed||A[s])}function isReadableAborted(A){const e=A&&A._readableState;return isDestroyed(A)&&e&&!e.endEmitted}function destroy(A,e){if(A==null||!isStream(A)||isDestroyed(A)){return}if(typeof A.destroy==="function"){if(Object.getPrototypeOf(A).constructor===n){A.socket=null}A.destroy(e)}else if(e){process.nextTick(((A,e)=>{A.emit("error",e)}),A,e)}if(A.destroyed!==true){A[s]=true}}const I=/timeout=(\d+)/;function parseKeepAliveTimeout(A){const e=A.toString().match(I);return e?parseInt(e[1],10)*1e3:null}function headerNameToString(A){return C[A]||A.toLowerCase()}function parseHeaders(A,e={}){if(!Array.isArray(A))return A;for(let t=0;tA.toString("utf8")))}else{e[r]=A[t+1].toString("utf8")}}else{if(!Array.isArray(s)){s=[s];e[r]=s}s.push(A[t+1].toString("utf8"))}}if("content-length"in e&&"content-disposition"in e){e["content-disposition"]=Buffer.from(e["content-disposition"]).toString("latin1")}return e}function parseRawHeaders(A){const e=[];let t=false;let r=-1;for(let s=0;s{A.close()}))}else{const e=Buffer.isBuffer(r)?r:Buffer.from(r);A.enqueue(new Uint8Array(e))}return A.desiredSize>0},async cancel(A){await e.return()}},0)}function isFormDataLike(A){return A&&typeof A==="object"&&typeof A.append==="function"&&typeof A.delete==="function"&&typeof A.get==="function"&&typeof A.getAll==="function"&&typeof A.has==="function"&&typeof A.set==="function"&&A[Symbol.toStringTag]==="FormData"}function throwIfAborted(A){if(!A){return}if(typeof A.throwIfAborted==="function"){A.throwIfAborted()}else{if(A.aborted){const A=new Error("The operation was aborted");A.name="AbortError";throw A}}}function addAbortListener(A,e){if("addEventListener"in A){A.addEventListener("abort",e,{once:true});return()=>A.removeEventListener("abort",e)}A.addListener("abort",e);return()=>A.removeListener("abort",e)}const u=!!String.prototype.toWellFormed;function toUSVString(A){if(u){return`${A}`.toWellFormed()}else if(E.toUSVString){return E.toUSVString(A)}return`${A}`}function parseRangeHeader(A){if(A==null||A==="")return{start:0,end:null,size:null};const e=A?A.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return e?{start:parseInt(e[1]),end:e[2]?parseInt(e[2]):null,size:e[3]?parseInt(e[3]):null}:null}const d=Object.create(null);d.enumerable=true;A.exports={kEnumerableProperty:d,nop:nop,isDisturbed:isDisturbed,isErrored:isErrored,isReadable:isReadable,toUSVString:toUSVString,isReadableAborted:isReadableAborted,isBlobLike:isBlobLike,parseOrigin:parseOrigin,parseURL:parseURL,getServerName:getServerName,isStream:isStream,isIterable:isIterable,isAsyncIterable:isAsyncIterable,isDestroyed:isDestroyed,headerNameToString:headerNameToString,parseRawHeaders:parseRawHeaders,parseHeaders:parseHeaders,parseKeepAliveTimeout:parseKeepAliveTimeout,destroy:destroy,bodyLength:bodyLength,deepClone:deepClone,ReadableStreamFrom:ReadableStreamFrom,isBuffer:isBuffer,validateHandler:validateHandler,getSocketInfo:getSocketInfo,isFormDataLike:isFormDataLike,buildURL:buildURL,throwIfAborted:throwIfAborted,addAbortListener:addAbortListener,parseRangeHeader:parseRangeHeader,nodeMajor:B,nodeMinor:l,nodeHasAutoSelectFamily:B>18||B===18&&l>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]}},2708:(A,e,t)=>{"use strict";const r=t(7584);const{ClientDestroyedError:s,ClientClosedError:o,InvalidArgumentError:n}=t(6562);const{kDestroy:i,kClose:a,kDispatch:g,kInterceptors:c}=t(548);const E=Symbol("destroyed");const Q=Symbol("closed");const C=Symbol("onDestroyed");const B=Symbol("onClosed");const l=Symbol("Intercepted Dispatch");class DispatcherBase extends r{constructor(){super();this[E]=false;this[C]=null;this[Q]=false;this[B]=[]}get destroyed(){return this[E]}get closed(){return this[Q]}get interceptors(){return this[c]}set interceptors(A){if(A){for(let e=A.length-1;e>=0;e--){const A=this[c][e];if(typeof A!=="function"){throw new n("interceptor must be an function")}}}this[c]=A}close(A){if(A===undefined){return new Promise(((A,e)=>{this.close(((t,r)=>t?e(t):A(r)))}))}if(typeof A!=="function"){throw new n("invalid callback")}if(this[E]){queueMicrotask((()=>A(new s,null)));return}if(this[Q]){if(this[B]){this[B].push(A)}else{queueMicrotask((()=>A(null,null)))}return}this[Q]=true;this[B].push(A);const onClosed=()=>{const A=this[B];this[B]=null;for(let e=0;ethis.destroy())).then((()=>{queueMicrotask(onClosed)}))}destroy(A,e){if(typeof A==="function"){e=A;A=null}if(e===undefined){return new Promise(((e,t)=>{this.destroy(A,((A,r)=>A?t(A):e(r)))}))}if(typeof e!=="function"){throw new n("invalid callback")}if(this[E]){if(this[C]){this[C].push(e)}else{queueMicrotask((()=>e(null,null)))}return}if(!A){A=new s}this[E]=true;this[C]=this[C]||[];this[C].push(e);const onDestroyed=()=>{const A=this[C];this[C]=null;for(let e=0;e{queueMicrotask(onDestroyed)}))}[l](A,e){if(!this[c]||this[c].length===0){this[l]=this[g];return this[g](A,e)}let t=this[g].bind(this);for(let A=this[c].length-1;A>=0;A--){t=this[c][A](t)}this[l]=t;return t(A,e)}dispatch(A,e){if(!e||typeof e!=="object"){throw new n("handler must be an object")}try{if(!A||typeof A!=="object"){throw new n("opts must be an object.")}if(this[E]||this[C]){throw new s}if(this[Q]){throw new o}return this[l](A,e)}catch(A){if(typeof e.onError!=="function"){throw new n("invalid onError method")}e.onError(A);return false}}}A.exports=DispatcherBase},7584:(A,e,t)=>{"use strict";const r=t(4434);class Dispatcher extends r{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}}A.exports=Dispatcher},8544:(A,e,t)=>{"use strict";const r=t(6298);const s=t(781);const{ReadableStreamFrom:o,isBlobLike:n,isReadableStreamLike:i,readableStreamClose:a,createDeferredPromise:g,fullyReadBody:c}=t(2492);const{FormData:E}=t(8242);const{kState:Q}=t(4111);const{webidl:C}=t(3113);const{DOMException:B,structuredClone:l}=t(5107);const{Blob:I,File:h}=t(181);const{kBodyUsed:u}=t(548);const d=t(2613);const{isErrored:p}=t(781);const{isUint8Array:y,isArrayBuffer:w}=t(8253);const{File:R}=t(1062);const{parseMIMEType:m,serializeAMimeType:D}=t(7691);let k=globalThis.ReadableStream;const b=h??R;const F=new TextEncoder;const S=new TextDecoder;function extractBody(A,e=false){if(!k){k=t(3774).ReadableStream}let r=null;if(A instanceof k){r=A}else if(n(A)){r=A.stream()}else{r=new k({async pull(A){A.enqueue(typeof c==="string"?F.encode(c):c);queueMicrotask((()=>a(A)))},start(){},type:undefined})}d(i(r));let g=null;let c=null;let E=null;let Q=null;if(typeof A==="string"){c=A;Q="text/plain;charset=UTF-8"}else if(A instanceof URLSearchParams){c=A.toString();Q="application/x-www-form-urlencoded;charset=UTF-8"}else if(w(A)){c=new Uint8Array(A.slice())}else if(ArrayBuffer.isView(A)){c=new Uint8Array(A.buffer.slice(A.byteOffset,A.byteOffset+A.byteLength))}else if(s.isFormDataLike(A)){const e=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`;const t=`--${e}\r\nContent-Disposition: form-data` -/*! formdata-polyfill. MIT License. Jimmy Wärting */;const escape=A=>A.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=A=>A.replace(/\r?\n|\r/g,"\r\n");const r=[];const s=new Uint8Array([13,10]);E=0;let o=false;for(const[e,n]of A){if(typeof n==="string"){const A=F.encode(t+`; name="${escape(normalizeLinefeeds(e))}"`+`\r\n\r\n${normalizeLinefeeds(n)}\r\n`);r.push(A);E+=A.byteLength}else{const A=F.encode(`${t}; name="${escape(normalizeLinefeeds(e))}"`+(n.name?`; filename="${escape(n.name)}"`:"")+"\r\n"+`Content-Type: ${n.type||"application/octet-stream"}\r\n\r\n`);r.push(A,n,s);if(typeof n.size==="number"){E+=A.byteLength+n.size+s.byteLength}else{o=true}}}const n=F.encode(`--${e}--`);r.push(n);E+=n.byteLength;if(o){E=null}c=A;g=async function*(){for(const A of r){if(A.stream){yield*A.stream()}else{yield A}}};Q="multipart/form-data; boundary="+e}else if(n(A)){c=A;E=A.size;if(A.type){Q=A.type}}else if(typeof A[Symbol.asyncIterator]==="function"){if(e){throw new TypeError("keepalive")}if(s.isDisturbed(A)||A.locked){throw new TypeError("Response body object should not be disturbed or locked")}r=A instanceof k?A:o(A)}if(typeof c==="string"||s.isBuffer(c)){E=Buffer.byteLength(c)}if(g!=null){let e;r=new k({async start(){e=g(A)[Symbol.asyncIterator]()},async pull(A){const{value:t,done:s}=await e.next();if(s){queueMicrotask((()=>{A.close()}))}else{if(!p(r)){A.enqueue(new Uint8Array(t))}}return A.desiredSize>0},async cancel(A){await e.return()},type:undefined})}const C={stream:r,source:c,length:E};return[C,Q]}function safelyExtractBody(A,e=false){if(!k){k=t(3774).ReadableStream}if(A instanceof k){d(!s.isDisturbed(A),"The body has already been consumed.");d(!A.locked,"The stream is locked.")}return extractBody(A,e)}function cloneBody(A){const[e,t]=A.stream.tee();const r=l(t,{transfer:[t]});const[,s]=r.tee();A.stream=e;return{stream:s,length:A.length,source:A.source}}async function*consumeBody(A){if(A){if(y(A)){yield A}else{const e=A.stream;if(s.isDisturbed(e)){throw new TypeError("The body has already been consumed.")}if(e.locked){throw new TypeError("The stream is locked.")}e[u]=true;yield*e}}}function throwIfAborted(A){if(A.aborted){throw new B("The operation was aborted.","AbortError")}}function bodyMixinMethods(A){const e={blob(){return specConsumeBody(this,(A=>{let e=bodyMimeType(this);if(e==="failure"){e=""}else if(e){e=D(e)}return new I([A],{type:e})}),A)},arrayBuffer(){return specConsumeBody(this,(A=>new Uint8Array(A).buffer),A)},text(){return specConsumeBody(this,utf8DecodeBytes,A)},json(){return specConsumeBody(this,parseJSONFromBytes,A)},async formData(){C.brandCheck(this,A);throwIfAborted(this[Q]);const e=this.headers.get("Content-Type");if(/multipart\/form-data/.test(e)){const A={};for(const[e,t]of this.headers)A[e.toLowerCase()]=t;const e=new E;let t;try{t=new r({headers:A,preservePath:true})}catch(A){throw new B(`${A}`,"AbortError")}t.on("field",((A,t)=>{e.append(A,t)}));t.on("file",((A,t,r,s,o)=>{const n=[];if(s==="base64"||s.toLowerCase()==="base64"){let s="";t.on("data",(A=>{s+=A.toString().replace(/[\r\n]/gm,"");const e=s.length-s.length%4;n.push(Buffer.from(s.slice(0,e),"base64"));s=s.slice(e)}));t.on("end",(()=>{n.push(Buffer.from(s,"base64"));e.append(A,new b(n,r,{type:o}))}))}else{t.on("data",(A=>{n.push(A)}));t.on("end",(()=>{e.append(A,new b(n,r,{type:o}))}))}}));const s=new Promise(((A,e)=>{t.on("finish",A);t.on("error",(A=>e(new TypeError(A))))}));if(this.body!==null)for await(const A of consumeBody(this[Q].body))t.write(A);t.end();await s;return e}else if(/application\/x-www-form-urlencoded/.test(e)){let A;try{let e="";const t=new TextDecoder("utf-8",{ignoreBOM:true});for await(const A of consumeBody(this[Q].body)){if(!y(A)){throw new TypeError("Expected Uint8Array chunk")}e+=t.decode(A,{stream:true})}e+=t.decode();A=new URLSearchParams(e)}catch(A){throw Object.assign(new TypeError,{cause:A})}const e=new E;for(const[t,r]of A){e.append(t,r)}return e}else{await Promise.resolve();throwIfAborted(this[Q]);throw C.errors.exception({header:`${A.name}.formData`,message:"Could not parse content as FormData."})}}};return e}function mixinBody(A){Object.assign(A.prototype,bodyMixinMethods(A))}async function specConsumeBody(A,e,t){C.brandCheck(A,t);throwIfAborted(A[Q]);if(bodyUnusable(A[Q].body)){throw new TypeError("Body is unusable")}const r=g();const errorSteps=A=>r.reject(A);const successSteps=A=>{try{r.resolve(e(A))}catch(A){errorSteps(A)}};if(A[Q].body==null){successSteps(new Uint8Array);return r.promise}await c(A[Q].body,successSteps,errorSteps);return r.promise}function bodyUnusable(A){return A!=null&&(A.stream.locked||s.isDisturbed(A.stream))}function utf8DecodeBytes(A){if(A.length===0){return""}if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}const e=S.decode(A);return e}function parseJSONFromBytes(A){return JSON.parse(utf8DecodeBytes(A))}function bodyMimeType(A){const{headersList:e}=A[Q];const t=e.get("content-type");if(t===null){return"failure"}return m(t)}A.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody}},5107:(A,e,t)=>{"use strict";const{MessageChannel:r,receiveMessageOnPort:s}=t(8167);const o=["GET","HEAD","POST"];const n=new Set(o);const i=[101,204,205,304];const a=[301,302,303,307,308];const g=new Set(a);const c=["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","5060","5061","6000","6566","6665","6666","6667","6668","6669","6697","10080"];const E=new Set(c);const Q=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const C=new Set(Q);const B=["follow","manual","error"];const l=["GET","HEAD","OPTIONS","TRACE"];const I=new Set(l);const h=["navigate","same-origin","no-cors","cors"];const u=["omit","same-origin","include"];const d=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const p=["content-encoding","content-language","content-location","content-type","content-length"];const y=["half"];const w=["CONNECT","TRACE","TRACK"];const R=new Set(w);const m=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const D=new Set(m);const k=globalThis.DOMException??(()=>{try{atob("~")}catch(A){return Object.getPrototypeOf(A).constructor}})();let b;const F=globalThis.structuredClone??function structuredClone(A,e=undefined){if(arguments.length===0){throw new TypeError("missing argument")}if(!b){b=new r}b.port1.unref();b.port2.unref();b.port1.postMessage(A,e?.transfer);return s(b.port2).message};A.exports={DOMException:k,structuredClone:F,subresource:m,forbiddenMethods:w,requestBodyHeader:p,referrerPolicy:Q,requestRedirect:B,requestMode:h,requestCredentials:u,requestCache:d,redirectStatus:a,corsSafeListedMethods:o,nullBodyStatus:i,safeMethods:l,badPorts:c,requestDuplex:y,subresourceSet:D,badPortsSet:E,redirectStatusSet:g,corsSafeListedMethodsSet:n,safeMethodsSet:I,forbiddenMethodsSet:R,referrerPolicySet:C}},7691:(A,e,t)=>{const r=t(2613);const{atob:s}=t(181);const{isomorphicDecode:o}=t(2492);const n=new TextEncoder;const i=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;const a=/(\u000A|\u000D|\u0009|\u0020)/;const g=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function dataURLProcessor(A){r(A.protocol==="data:");let e=URLSerializer(A,true);e=e.slice(5);const t={position:0};let s=collectASequenceOfCodePointsFast(",",e,t);const n=s.length;s=removeASCIIWhitespace(s,true,true);if(t.position>=e.length){return"failure"}t.position++;const i=e.slice(n+1);let a=stringPercentDecode(i);if(/;(\u0020){0,}base64$/i.test(s)){const A=o(a);a=forgivingBase64(A);if(a==="failure"){return"failure"}s=s.slice(0,-6);s=s.replace(/(\u0020)+$/,"");s=s.slice(0,-1)}if(s.startsWith(";")){s="text/plain"+s}let g=parseMIMEType(s);if(g==="failure"){g=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:g,body:a}}function URLSerializer(A,e=false){if(!e){return A.href}const t=A.href;const r=A.hash.length;return r===0?t:t.substring(0,t.length-r)}function collectASequenceOfCodePoints(A,e,t){let r="";while(t.positionA.length){return"failure"}e.position++;let r=collectASequenceOfCodePointsFast(";",A,e);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!i.test(r)){return"failure"}const s=t.toLowerCase();const o=r.toLowerCase();const n={type:s,subtype:o,parameters:new Map,essence:`${s}/${o}`};while(e.positiona.test(A)),A,e);let t=collectASequenceOfCodePoints((A=>A!==";"&&A!=="="),A,e);t=t.toLowerCase();if(e.positionA.length){break}let r=null;if(A[e.position]==='"'){r=collectAnHTTPQuotedString(A,e,true);collectASequenceOfCodePointsFast(";",A,e)}else{r=collectASequenceOfCodePointsFast(";",A,e);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(t.length!==0&&i.test(t)&&(r.length===0||g.test(r))&&!n.parameters.has(t)){n.parameters.set(t,r)}}return n}function forgivingBase64(A){A=A.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,"");if(A.length%4===0){A=A.replace(/=?=$/,"")}if(A.length%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(A)){return"failure"}const e=s(A);const t=new Uint8Array(e.length);for(let A=0;AA!=='"'&&A!=="\\"),A,e);if(e.position>=A.length){break}const t=A[e.position];e.position++;if(t==="\\"){if(e.position>=A.length){o+="\\";break}o+=A[e.position];e.position++}else{r(t==='"');break}}if(t){return o}return A.slice(s,e.position)}function serializeAMimeType(A){r(A!=="failure");const{parameters:e,essence:t}=A;let s=t;for(let[A,t]of e.entries()){s+=";";s+=A;s+="=";if(!i.test(t)){t=t.replace(/(\\|")/g,"\\$1");t='"'+t;t+='"'}s+=t}return s}function isHTTPWhiteSpace(A){return A==="\r"||A==="\n"||A==="\t"||A===" "}function removeHTTPWhitespace(A,e=true,t=true){let r=0;let s=A.length-1;if(e){for(;r0&&isHTTPWhiteSpace(A[s]);s--);}return A.slice(r,s+1)}function isASCIIWhitespace(A){return A==="\r"||A==="\n"||A==="\t"||A==="\f"||A===" "}function removeASCIIWhitespace(A,e=true,t=true){let r=0;let s=A.length-1;if(e){for(;r0&&isASCIIWhitespace(A[s]);s--);}return A.slice(r,s+1)}A.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType}},1062:(A,e,t)=>{"use strict";const{Blob:r,File:s}=t(181);const{types:o}=t(9023);const{kState:n}=t(4111);const{isBlobLike:i}=t(2492);const{webidl:a}=t(3113);const{parseMIMEType:g,serializeAMimeType:c}=t(7691);const{kEnumerableProperty:E}=t(781);const Q=new TextEncoder;class File extends r{constructor(A,e,t={}){a.argumentLengthCheck(arguments,2,{header:"File constructor"});A=a.converters["sequence"](A);e=a.converters.USVString(e);t=a.converters.FilePropertyBag(t);const r=e;let s=t.type;let o;A:{if(s){s=g(s);if(s==="failure"){s="";break A}s=c(s).toLowerCase()}o=t.lastModified}super(processBlobParts(A,t),{type:s});this[n]={name:r,lastModified:o,type:s}}get name(){a.brandCheck(this,File);return this[n].name}get lastModified(){a.brandCheck(this,File);return this[n].lastModified}get type(){a.brandCheck(this,File);return this[n].type}}class FileLike{constructor(A,e,t={}){const r=e;const s=t.type;const o=t.lastModified??Date.now();this[n]={blobLike:A,name:r,type:s,lastModified:o}}stream(...A){a.brandCheck(this,FileLike);return this[n].blobLike.stream(...A)}arrayBuffer(...A){a.brandCheck(this,FileLike);return this[n].blobLike.arrayBuffer(...A)}slice(...A){a.brandCheck(this,FileLike);return this[n].blobLike.slice(...A)}text(...A){a.brandCheck(this,FileLike);return this[n].blobLike.text(...A)}get size(){a.brandCheck(this,FileLike);return this[n].blobLike.size}get type(){a.brandCheck(this,FileLike);return this[n].blobLike.type}get name(){a.brandCheck(this,FileLike);return this[n].name}get lastModified(){a.brandCheck(this,FileLike);return this[n].lastModified}get[Symbol.toStringTag](){return"File"}}Object.defineProperties(File.prototype,{[Symbol.toStringTag]:{value:"File",configurable:true},name:E,lastModified:E});a.converters.Blob=a.interfaceConverter(r);a.converters.BlobPart=function(A,e){if(a.util.Type(A)==="Object"){if(i(A)){return a.converters.Blob(A,{strict:false})}if(ArrayBuffer.isView(A)||o.isAnyArrayBuffer(A)){return a.converters.BufferSource(A,e)}}return a.converters.USVString(A,e)};a.converters["sequence"]=a.sequenceConverter(a.converters.BlobPart);a.converters.FilePropertyBag=a.dictionaryConverter([{key:"lastModified",converter:a.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:a.converters.DOMString,defaultValue:""},{key:"endings",converter:A=>{A=a.converters.DOMString(A);A=A.toLowerCase();if(A!=="native"){A="transparent"}return A},defaultValue:"transparent"}]);function processBlobParts(A,e){const t=[];for(const r of A){if(typeof r==="string"){let A=r;if(e.endings==="native"){A=convertLineEndingsNative(A)}t.push(Q.encode(A))}else if(o.isAnyArrayBuffer(r)||o.isTypedArray(r)){if(!r.buffer){t.push(new Uint8Array(r))}else{t.push(new Uint8Array(r.buffer,r.byteOffset,r.byteLength))}}else if(i(r)){t.push(r)}}return t}function convertLineEndingsNative(A){let e="\n";if(process.platform==="win32"){e="\r\n"}return A.replace(/\r?\n/g,e)}function isFileLike(A){return s&&A instanceof s||A instanceof File||A&&(typeof A.stream==="function"||typeof A.arrayBuffer==="function")&&A[Symbol.toStringTag]==="File"}A.exports={File:File,FileLike:FileLike,isFileLike:isFileLike}},8242:(A,e,t)=>{"use strict";const{isBlobLike:r,toUSVString:s,makeIterator:o}=t(2492);const{kState:n}=t(4111);const{File:i,FileLike:a,isFileLike:g}=t(1062);const{webidl:c}=t(3113);const{Blob:E,File:Q}=t(181);const C=Q??i;class FormData{constructor(A){if(A!==undefined){throw c.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[n]=[]}append(A,e,t=undefined){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,2,{header:"FormData.append"});if(arguments.length===3&&!r(e)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}A=c.converters.USVString(A);e=r(e)?c.converters.Blob(e,{strict:false}):c.converters.USVString(e);t=arguments.length===3?c.converters.USVString(t):undefined;const s=makeEntry(A,e,t);this[n].push(s)}delete(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.delete"});A=c.converters.USVString(A);this[n]=this[n].filter((e=>e.name!==A))}get(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.get"});A=c.converters.USVString(A);const e=this[n].findIndex((e=>e.name===A));if(e===-1){return null}return this[n][e].value}getAll(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.getAll"});A=c.converters.USVString(A);return this[n].filter((e=>e.name===A)).map((A=>A.value))}has(A){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.has"});A=c.converters.USVString(A);return this[n].findIndex((e=>e.name===A))!==-1}set(A,e,t=undefined){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,2,{header:"FormData.set"});if(arguments.length===3&&!r(e)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}A=c.converters.USVString(A);e=r(e)?c.converters.Blob(e,{strict:false}):c.converters.USVString(e);t=arguments.length===3?s(t):undefined;const o=makeEntry(A,e,t);const i=this[n].findIndex((e=>e.name===A));if(i!==-1){this[n]=[...this[n].slice(0,i),o,...this[n].slice(i+1).filter((e=>e.name!==A))]}else{this[n].push(o)}}entries(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","key+value")}keys(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","key")}values(){c.brandCheck(this,FormData);return o((()=>this[n].map((A=>[A.name,A.value]))),"FormData","value")}forEach(A,e=globalThis){c.brandCheck(this,FormData);c.argumentLengthCheck(arguments,1,{header:"FormData.forEach"});if(typeof A!=="function"){throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.")}for(const[t,r]of this){A.apply(e,[r,t,this])}}}FormData.prototype[Symbol.iterator]=FormData.prototype.entries;Object.defineProperties(FormData.prototype,{[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(A,e,t){A=Buffer.from(A).toString("utf8");if(typeof e==="string"){e=Buffer.from(e).toString("utf8")}else{if(!g(e)){e=e instanceof E?new C([e],"blob",{type:e.type}):new a(e,"blob",{type:e.type})}if(t!==undefined){const A={type:e.type,lastModified:e.lastModified};e=Q&&e instanceof Q||e instanceof i?new C([e],t,A):new a(e,t,A)}}return{name:A,value:e}}A.exports={FormData:FormData}},4647:A=>{"use strict";const e=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[e]}function setGlobalOrigin(A){if(A===undefined){Object.defineProperty(globalThis,e,{value:undefined,writable:true,enumerable:false,configurable:false});return}const t=new URL(A);if(t.protocol!=="http:"&&t.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${t.protocol}`)}Object.defineProperty(globalThis,e,{value:t,writable:true,enumerable:false,configurable:false})}A.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},9976:(A,e,t)=>{"use strict";const{kHeadersList:r,kConstruct:s}=t(548);const{kGuard:o}=t(4111);const{kEnumerableProperty:n}=t(781);const{makeIterator:i,isValidHeaderName:a,isValidHeaderValue:g}=t(2492);const{webidl:c}=t(3113);const E=t(2613);const Q=Symbol("headers map");const C=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(A){return A===10||A===13||A===9||A===32}function headerValueNormalize(A){let e=0;let t=A.length;while(t>e&&isHTTPWhiteSpaceCharCode(A.charCodeAt(t-1)))--t;while(t>e&&isHTTPWhiteSpaceCharCode(A.charCodeAt(e)))++e;return e===0&&t===A.length?A:A.substring(e,t)}function fill(A,e){if(Array.isArray(e)){for(let t=0;t>","record"]})}}function appendHeader(A,e,t){t=headerValueNormalize(t);if(!a(e)){throw c.errors.invalidArgument({prefix:"Headers.append",value:e,type:"header name"})}else if(!g(t)){throw c.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}if(A[o]==="immutable"){throw new TypeError("immutable")}else if(A[o]==="request-no-cors"){}return A[r].append(e,t)}class HeadersList{cookies=null;constructor(A){if(A instanceof HeadersList){this[Q]=new Map(A[Q]);this[C]=A[C];this.cookies=A.cookies===null?null:[...A.cookies]}else{this[Q]=new Map(A);this[C]=null}}contains(A){A=A.toLowerCase();return this[Q].has(A)}clear(){this[Q].clear();this[C]=null;this.cookies=null}append(A,e){this[C]=null;const t=A.toLowerCase();const r=this[Q].get(t);if(r){const A=t==="cookie"?"; ":", ";this[Q].set(t,{name:r.name,value:`${r.value}${A}${e}`})}else{this[Q].set(t,{name:A,value:e})}if(t==="set-cookie"){this.cookies??=[];this.cookies.push(e)}}set(A,e){this[C]=null;const t=A.toLowerCase();if(t==="set-cookie"){this.cookies=[e]}this[Q].set(t,{name:A,value:e})}delete(A){this[C]=null;A=A.toLowerCase();if(A==="set-cookie"){this.cookies=null}this[Q].delete(A)}get(A){const e=this[Q].get(A.toLowerCase());return e===undefined?null:e.value}*[Symbol.iterator](){for(const[A,{value:e}]of this[Q]){yield[A,e]}}get entries(){const A={};if(this[Q].size){for(const{name:e,value:t}of this[Q].values()){A[e]=t}}return A}}class Headers{constructor(A=undefined){if(A===s){return}this[r]=new HeadersList;this[o]="none";if(A!==undefined){A=c.converters.HeadersInit(A);fill(this,A)}}append(A,e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.append"});A=c.converters.ByteString(A);e=c.converters.ByteString(e);return appendHeader(this,A,e)}delete(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.delete"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.delete",value:A,type:"header name"})}if(this[o]==="immutable"){throw new TypeError("immutable")}else if(this[o]==="request-no-cors"){}if(!this[r].contains(A)){return}this[r].delete(A)}get(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.get"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.get",value:A,type:"header name"})}return this[r].get(A)}has(A){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.has"});A=c.converters.ByteString(A);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.has",value:A,type:"header name"})}return this[r].contains(A)}set(A,e){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,2,{header:"Headers.set"});A=c.converters.ByteString(A);e=c.converters.ByteString(e);e=headerValueNormalize(e);if(!a(A)){throw c.errors.invalidArgument({prefix:"Headers.set",value:A,type:"header name"})}else if(!g(e)){throw c.errors.invalidArgument({prefix:"Headers.set",value:e,type:"header value"})}if(this[o]==="immutable"){throw new TypeError("immutable")}else if(this[o]==="request-no-cors"){}this[r].set(A,e)}getSetCookie(){c.brandCheck(this,Headers);const A=this[r].cookies;if(A){return[...A]}return[]}get[C](){if(this[r][C]){return this[r][C]}const A=[];const e=[...this[r]].sort(((A,e)=>A[0]A),"Headers","key")}return i((()=>[...this[C].values()]),"Headers","key")}values(){c.brandCheck(this,Headers);if(this[o]==="immutable"){const A=this[C];return i((()=>A),"Headers","value")}return i((()=>[...this[C].values()]),"Headers","value")}entries(){c.brandCheck(this,Headers);if(this[o]==="immutable"){const A=this[C];return i((()=>A),"Headers","key+value")}return i((()=>[...this[C].values()]),"Headers","key+value")}forEach(A,e=globalThis){c.brandCheck(this,Headers);c.argumentLengthCheck(arguments,1,{header:"Headers.forEach"});if(typeof A!=="function"){throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.")}for(const[t,r]of this){A.apply(e,[r,t,this])}}[Symbol.for("nodejs.util.inspect.custom")](){c.brandCheck(this,Headers);return this[r]}}Headers.prototype[Symbol.iterator]=Headers.prototype.entries;Object.defineProperties(Headers.prototype,{append:n,delete:n,get:n,has:n,set:n,getSetCookie:n,keys:n,values:n,entries:n,forEach:n,[Symbol.iterator]:{enumerable:false},[Symbol.toStringTag]:{value:"Headers",configurable:true}});c.converters.HeadersInit=function(A){if(c.util.Type(A)==="Object"){if(A[Symbol.iterator]){return c.converters["sequence>"](A)}return c.converters["record"](A)}throw c.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};A.exports={fill:fill,Headers:Headers,HeadersList:HeadersList}},530:(A,e,t)=>{"use strict";const{Response:r,makeNetworkError:s,makeAppropriateNetworkError:o,filterResponse:n,makeResponse:i}=t(2991);const{Headers:a}=t(9976);const{Request:g,makeRequest:c}=t(6891);const E=t(3106);const{bytesMatch:Q,makePolicyContainer:C,clonePolicyContainer:B,requestBadPort:l,TAOCheck:I,appendRequestOriginHeader:h,responseLocationURL:u,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:p,tryUpgradeRequestToAPotentiallyTrustworthyURL:y,createOpaqueTimingInfo:w,appendFetchMetadata:R,corsCheck:m,crossOriginResourcePolicyCheck:D,determineRequestsReferrer:k,coarsenedSharedCurrentTime:b,createDeferredPromise:F,isBlobLike:S,sameOrigin:N,isCancelled:U,isAborted:T,isErrorLike:L,fullyReadBody:M,readableStreamClose:G,isomorphicEncode:v,urlIsLocal:Y,urlIsHttpHttpsScheme:H,urlHasHttpsScheme:J}=t(2492);const{kState:V,kHeaders:O,kGuard:P,kRealm:x}=t(4111);const _=t(2613);const{safelyExtractBody:q}=t(8544);const{redirectStatusSet:W,nullBodyStatus:j,safeMethodsSet:Z,requestBodyHeader:X,subresourceSet:K,DOMException:z}=t(5107);const{kHeadersList:$}=t(548);const AA=t(4434);const{Readable:eA,pipeline:tA}=t(2203);const{addAbortListener:rA,isErrored:sA,isReadable:oA,nodeMajor:nA,nodeMinor:iA}=t(781);const{dataURLProcessor:aA,serializeAMimeType:gA}=t(7691);const{TransformStream:cA}=t(3774);const{getGlobalDispatcher:EA}=t(5302);const{webidl:QA}=t(3113);const{STATUS_CODES:CA}=t(8611);const BA=["GET","HEAD"];let lA;let IA=globalThis.ReadableStream;class Fetch extends AA{constructor(A){super();this.dispatcher=A;this.connection=null;this.dump=false;this.state="ongoing";this.setMaxListeners(21)}terminate(A){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(A);this.emit("terminated",A)}abort(A){if(this.state!=="ongoing"){return}this.state="aborted";if(!A){A=new z("The operation was aborted.","AbortError")}this.serializedAbortReason=A;this.connection?.destroy(A);this.emit("terminated",A)}}function fetch(A,e={}){QA.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const t=F();let s;try{s=new g(A,e)}catch(A){t.reject(A);return t.promise}const o=s[V];if(s.signal.aborted){abortFetch(t,o,null,s.signal.reason);return t.promise}const n=o.client.globalObject;if(n?.constructor?.name==="ServiceWorkerGlobalScope"){o.serviceWorkers="none"}let i=null;const a=null;let c=false;let E=null;rA(s.signal,(()=>{c=true;_(E!=null);E.abort(s.signal.reason);abortFetch(t,o,i,s.signal.reason)}));const handleFetchDone=A=>finalizeAndReportTiming(A,"fetch");const processResponse=A=>{if(c){return Promise.resolve()}if(A.aborted){abortFetch(t,o,i,E.serializedAbortReason);return Promise.resolve()}if(A.type==="error"){t.reject(Object.assign(new TypeError("fetch failed"),{cause:A.error}));return Promise.resolve()}i=new r;i[V]=A;i[x]=a;i[O][$]=A.headersList;i[O][P]="immutable";i[O][x]=a;t.resolve(i)};E=fetching({request:o,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:e.dispatcher??EA()});return t.promise}function finalizeAndReportTiming(A,e="other"){if(A.type==="error"&&A.aborted){return}if(!A.urlList?.length){return}const t=A.urlList[0];let r=A.timingInfo;let s=A.cacheState;if(!H(t)){return}if(r===null){return}if(!A.timingAllowPassed){r=w({startTime:r.startTime});s=""}r.endTime=b();A.timingInfo=r;markResourceTiming(r,t,e,globalThis,s)}function markResourceTiming(A,e,t,r,s){if(nA>18||nA===18&&iA>=2){performance.markResourceTiming(A,e.href,t,r,s)}}function abortFetch(A,e,t,r){if(!r){r=new z("The operation was aborted.","AbortError")}A.reject(r);if(e.body!=null&&oA(e.body?.stream)){e.body.stream.cancel(r).catch((A=>{if(A.code==="ERR_INVALID_STATE"){return}throw A}))}if(t==null){return}const s=t[V];if(s.body!=null&&oA(s.body?.stream)){s.body.stream.cancel(r).catch((A=>{if(A.code==="ERR_INVALID_STATE"){return}throw A}))}}function fetching({request:A,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:s,processResponseConsumeBody:o,useParallelQueue:n=false,dispatcher:i}){let a=null;let g=false;if(A.client!=null){a=A.client.globalObject;g=A.client.crossOriginIsolatedCapability}const c=b(g);const E=w({startTime:c});const Q={controller:new Fetch(i),request:A,timingInfo:E,processRequestBodyChunkLength:e,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:o,processResponseEndOfBody:s,taskDestination:a,crossOriginIsolatedCapability:g};_(!A.body||A.body.stream);if(A.window==="client"){A.window=A.client?.globalObject?.constructor?.name==="Window"?A.client:"no-window"}if(A.origin==="client"){A.origin=A.client?.origin}if(A.policyContainer==="client"){if(A.client!=null){A.policyContainer=B(A.client.policyContainer)}else{A.policyContainer=C()}}if(!A.headersList.contains("accept")){const e="*/*";A.headersList.append("accept",e)}if(!A.headersList.contains("accept-language")){A.headersList.append("accept-language","*")}if(A.priority===null){}if(K.has(A.destination)){}mainFetch(Q).catch((A=>{Q.controller.terminate(A)}));return Q.controller}async function mainFetch(A,e=false){const t=A.request;let r=null;if(t.localURLsOnly&&!Y(d(t))){r=s("local URLs only")}y(t);if(l(t)==="blocked"){r=s("bad port")}if(t.referrerPolicy===""){t.referrerPolicy=t.policyContainer.referrerPolicy}if(t.referrer!=="no-referrer"){t.referrer=k(t)}if(r===null){r=await(async()=>{const e=d(t);if(N(e,t.url)&&t.responseTainting==="basic"||e.protocol==="data:"||(t.mode==="navigate"||t.mode==="websocket")){t.responseTainting="basic";return await schemeFetch(A)}if(t.mode==="same-origin"){return s('request mode cannot be "same-origin"')}if(t.mode==="no-cors"){if(t.redirect!=="follow"){return s('redirect mode cannot be "follow" for "no-cors" request')}t.responseTainting="opaque";return await schemeFetch(A)}if(!H(d(t))){return s("URL scheme must be a HTTP(S) scheme")}t.responseTainting="cors";return await httpFetch(A)})()}if(e){return r}if(r.status!==0&&!r.internalResponse){if(t.responseTainting==="cors"){}if(t.responseTainting==="basic"){r=n(r,"basic")}else if(t.responseTainting==="cors"){r=n(r,"cors")}else if(t.responseTainting==="opaque"){r=n(r,"opaque")}else{_(false)}}let o=r.status===0?r:r.internalResponse;if(o.urlList.length===0){o.urlList.push(...t.urlList)}if(!t.timingAllowFailed){r.timingAllowPassed=true}if(r.type==="opaque"&&o.status===206&&o.rangeRequested&&!t.headers.contains("range")){r=o=s()}if(r.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||j.includes(o.status))){o.body=null;A.controller.dump=true}if(t.integrity){const processBodyError=e=>fetchFinale(A,s(e));if(t.responseTainting==="opaque"||r.body==null){processBodyError(r.error);return}const processBody=e=>{if(!Q(e,t.integrity)){processBodyError("integrity mismatch");return}r.body=q(e)[0];fetchFinale(A,r)};await M(r.body,processBody,processBodyError)}else{fetchFinale(A,r)}}function schemeFetch(A){if(U(A)&&A.request.redirectCount===0){return Promise.resolve(o(A))}const{request:e}=A;const{protocol:r}=d(e);switch(r){case"about:":{return Promise.resolve(s("about scheme is not supported"))}case"blob:":{if(!lA){lA=t(181).resolveObjectURL}const A=d(e);if(A.search.length!==0){return Promise.resolve(s("NetworkError when attempting to fetch resource."))}const r=lA(A.toString());if(e.method!=="GET"||!S(r)){return Promise.resolve(s("invalid method"))}const o=q(r);const n=o[0];const a=v(`${n.length}`);const g=o[1]??"";const c=i({statusText:"OK",headersList:[["content-length",{name:"Content-Length",value:a}],["content-type",{name:"Content-Type",value:g}]]});c.body=n;return Promise.resolve(c)}case"data:":{const A=d(e);const t=aA(A);if(t==="failure"){return Promise.resolve(s("failed to fetch the data URL"))}const r=gA(t.mimeType);return Promise.resolve(i({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:r}]],body:q(t.body)[0]}))}case"file:":{return Promise.resolve(s("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(A).catch((A=>s(A)))}default:{return Promise.resolve(s("unknown scheme"))}}}function finalizeResponse(A,e){A.request.done=true;if(A.processResponseDone!=null){queueMicrotask((()=>A.processResponseDone(e)))}}function fetchFinale(A,e){if(e.type==="error"){e.urlList=[A.request.urlList[0]];e.timingInfo=w({startTime:A.timingInfo.startTime})}const processResponseEndOfBody=()=>{A.request.done=true;if(A.processResponseEndOfBody!=null){queueMicrotask((()=>A.processResponseEndOfBody(e)))}};if(A.processResponse!=null){queueMicrotask((()=>A.processResponse(e)))}if(e.body==null){processResponseEndOfBody()}else{const identityTransformAlgorithm=(A,e)=>{e.enqueue(A)};const A=new cA({start(){},transform:identityTransformAlgorithm,flush:processResponseEndOfBody},{size(){return 1}},{size(){return 1}});e.body={stream:e.body.stream.pipeThrough(A)}}if(A.processResponseConsumeBody!=null){const processBody=t=>A.processResponseConsumeBody(e,t);const processBodyError=t=>A.processResponseConsumeBody(e,t);if(e.body==null){queueMicrotask((()=>processBody(null)))}else{return M(e.body,processBody,processBodyError)}return Promise.resolve()}}async function httpFetch(A){const e=A.request;let t=null;let r=null;const o=A.timingInfo;if(e.serviceWorkers==="all"){}if(t===null){if(e.redirect==="follow"){e.serviceWorkers="none"}r=t=await httpNetworkOrCacheFetch(A);if(e.responseTainting==="cors"&&m(e,t)==="failure"){return s("cors failure")}if(I(e,t)==="failure"){e.timingAllowFailed=true}}if((e.responseTainting==="opaque"||t.type==="opaque")&&D(e.origin,e.client,e.destination,r)==="blocked"){return s("blocked")}if(W.has(r.status)){if(e.redirect!=="manual"){A.controller.connection.destroy()}if(e.redirect==="error"){t=s("unexpected redirect")}else if(e.redirect==="manual"){t=r}else if(e.redirect==="follow"){t=await httpRedirectFetch(A,t)}else{_(false)}}t.timingInfo=o;return t}function httpRedirectFetch(A,e){const t=A.request;const r=e.internalResponse?e.internalResponse:e;let o;try{o=u(r,d(t).hash);if(o==null){return e}}catch(A){return Promise.resolve(s(A))}if(!H(o)){return Promise.resolve(s("URL scheme must be a HTTP(S) scheme"))}if(t.redirectCount===20){return Promise.resolve(s("redirect count exceeded"))}t.redirectCount+=1;if(t.mode==="cors"&&(o.username||o.password)&&!N(t,o)){return Promise.resolve(s('cross origin not allowed for request mode "cors"'))}if(t.responseTainting==="cors"&&(o.username||o.password)){return Promise.resolve(s('URL cannot contain credentials for request mode "cors"'))}if(r.status!==303&&t.body!=null&&t.body.source==null){return Promise.resolve(s())}if([301,302].includes(r.status)&&t.method==="POST"||r.status===303&&!BA.includes(t.method)){t.method="GET";t.body=null;for(const A of X){t.headersList.delete(A)}}if(!N(d(t),o)){t.headersList.delete("authorization");t.headersList.delete("proxy-authorization",true);t.headersList.delete("cookie");t.headersList.delete("host")}if(t.body!=null){_(t.body.source!=null);t.body=q(t.body.source)[0]}const n=A.timingInfo;n.redirectEndTime=n.postRedirectStartTime=b(A.crossOriginIsolatedCapability);if(n.redirectStartTime===0){n.redirectStartTime=n.startTime}t.urlList.push(o);p(t,r);return mainFetch(A,true)}async function httpNetworkOrCacheFetch(A,e=false,t=false){const r=A.request;let n=null;let i=null;let a=null;const g=null;const E=false;if(r.window==="no-window"&&r.redirect==="error"){n=A;i=r}else{i=c(r);n={...A};n.request=i}const Q=r.credentials==="include"||r.credentials==="same-origin"&&r.responseTainting==="basic";const C=i.body?i.body.length:null;let B=null;if(i.body==null&&["POST","PUT"].includes(i.method)){B="0"}if(C!=null){B=v(`${C}`)}if(B!=null){i.headersList.append("content-length",B)}if(C!=null&&i.keepalive){}if(i.referrer instanceof URL){i.headersList.append("referer",v(i.referrer.href))}h(i);R(i);if(!i.headersList.contains("user-agent")){i.headersList.append("user-agent",typeof esbuildDetection==="undefined"?"undici":"node")}if(i.cache==="default"&&(i.headersList.contains("if-modified-since")||i.headersList.contains("if-none-match")||i.headersList.contains("if-unmodified-since")||i.headersList.contains("if-match")||i.headersList.contains("if-range"))){i.cache="no-store"}if(i.cache==="no-cache"&&!i.preventNoCacheCacheControlHeaderModification&&!i.headersList.contains("cache-control")){i.headersList.append("cache-control","max-age=0")}if(i.cache==="no-store"||i.cache==="reload"){if(!i.headersList.contains("pragma")){i.headersList.append("pragma","no-cache")}if(!i.headersList.contains("cache-control")){i.headersList.append("cache-control","no-cache")}}if(i.headersList.contains("range")){i.headersList.append("accept-encoding","identity")}if(!i.headersList.contains("accept-encoding")){if(J(d(i))){i.headersList.append("accept-encoding","br, gzip, deflate")}else{i.headersList.append("accept-encoding","gzip, deflate")}}i.headersList.delete("host");if(Q){}if(g==null){i.cache="no-store"}if(i.mode!=="no-store"&&i.mode!=="reload"){}if(a==null){if(i.mode==="only-if-cached"){return s("only if cached")}const A=await httpNetworkFetch(n,Q,t);if(!Z.has(i.method)&&A.status>=200&&A.status<=399){}if(E&&A.status===304){}if(a==null){a=A}}a.urlList=[...i.urlList];if(i.headersList.contains("range")){a.rangeRequested=true}a.requestIncludesCredentials=Q;if(a.status===407){if(r.window==="no-window"){return s()}if(U(A)){return o(A)}return s("proxy authentication required")}if(a.status===421&&!t&&(r.body==null||r.body.source!=null)){if(U(A)){return o(A)}A.controller.connection.destroy();a=await httpNetworkOrCacheFetch(A,e,true)}if(e){}return a}async function httpNetworkFetch(A,e=false,r=false){_(!A.controller.connection||A.controller.connection.destroyed);A.controller.connection={abort:null,destroyed:false,destroy(A){if(!this.destroyed){this.destroyed=true;this.abort?.(A??new z("The operation was aborted.","AbortError"))}}};const n=A.request;let g=null;const c=A.timingInfo;const Q=null;if(Q==null){n.cache="no-store"}const C=r?"yes":"no";if(n.mode==="websocket"){}else{}let B=null;if(n.body==null&&A.processRequestEndOfBody){queueMicrotask((()=>A.processRequestEndOfBody()))}else if(n.body!=null){const processBodyChunk=async function*(e){if(U(A)){return}yield e;A.processRequestBodyChunkLength?.(e.byteLength)};const processEndOfBody=()=>{if(U(A)){return}if(A.processRequestEndOfBody){A.processRequestEndOfBody()}};const processBodyError=e=>{if(U(A)){return}if(e.name==="AbortError"){A.controller.abort()}else{A.controller.terminate(e)}};B=async function*(){try{for await(const A of n.body.stream){yield*processBodyChunk(A)}processEndOfBody()}catch(A){processBodyError(A)}}()}try{const{body:e,status:t,statusText:r,headersList:s,socket:o}=await dispatch({body:B});if(o){g=i({status:t,statusText:r,headersList:s,socket:o})}else{const o=e[Symbol.asyncIterator]();A.controller.next=()=>o.next();g=i({status:t,statusText:r,headersList:s})}}catch(e){if(e.name==="AbortError"){A.controller.connection.destroy();return o(A,e)}return s(e)}const pullAlgorithm=()=>{A.controller.resume()};const cancelAlgorithm=e=>{A.controller.abort(e)};if(!IA){IA=t(3774).ReadableStream}const l=new IA({async start(e){A.controller.controller=e},async pull(A){await pullAlgorithm(A)},async cancel(A){await cancelAlgorithm(A)}},{highWaterMark:0,size(){return 1}});g.body={stream:l};A.controller.on("terminated",onAborted);A.controller.resume=async()=>{while(true){let e;let t;try{const{done:t,value:r}=await A.controller.next();if(T(A)){break}e=t?undefined:r}catch(r){if(A.controller.ended&&!c.encodedBodySize){e=undefined}else{e=r;t=true}}if(e===undefined){G(A.controller.controller);finalizeResponse(A,g);return}c.decodedBodySize+=e?.byteLength??0;if(t){A.controller.terminate(e);return}A.controller.controller.enqueue(new Uint8Array(e));if(sA(l)){A.controller.terminate();return}if(!A.controller.controller.desiredSize){return}}};function onAborted(e){if(T(A)){g.aborted=true;if(oA(l)){A.controller.controller.error(A.controller.serializedAbortReason)}}else{if(oA(l)){A.controller.controller.error(new TypeError("terminated",{cause:L(e)?e:undefined}))}}A.controller.connection.destroy()}return g;async function dispatch({body:e}){const t=d(n);const r=A.controller.dispatcher;return new Promise(((s,o)=>r.dispatch({path:t.pathname+t.search,origin:t.origin,method:n.method,body:A.controller.dispatcher.isMockActive?n.body&&(n.body.source||n.body.stream):e,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(e){const{connection:t}=A.controller;if(t.destroyed){e(new z("The operation was aborted.","AbortError"))}else{A.controller.on("terminated",e);this.abort=t.abort=e}},onHeaders(A,e,t,r){if(A<200){return}let o=[];let i="";const g=new a;if(Array.isArray(e)){for(let A=0;AA.trim()))}else if(t.toLowerCase()==="location"){i=r}g[$].append(t,r)}}else{const A=Object.keys(e);for(const t of A){const A=e[t];if(t.toLowerCase()==="content-encoding"){o=A.toLowerCase().split(",").map((A=>A.trim())).reverse()}else if(t.toLowerCase()==="location"){i=A}g[$].append(t,A)}}this.body=new eA({read:t});const c=[];const Q=n.redirect==="follow"&&i&&W.has(A);if(n.method!=="HEAD"&&n.method!=="CONNECT"&&!j.includes(A)&&!Q){for(const A of o){if(A==="x-gzip"||A==="gzip"){c.push(E.createGunzip({flush:E.constants.Z_SYNC_FLUSH,finishFlush:E.constants.Z_SYNC_FLUSH}))}else if(A==="deflate"){c.push(E.createInflate())}else if(A==="br"){c.push(E.createBrotliDecompress())}else{c.length=0;break}}}s({status:A,statusText:r,headersList:g[$],body:c.length?tA(this.body,...c,(()=>{})):this.body.on("error",(()=>{}))});return true},onData(e){if(A.controller.dump){return}const t=e;c.encodedBodySize+=t.byteLength;return this.body.push(t)},onComplete(){if(this.abort){A.controller.off("terminated",this.abort)}A.controller.ended=true;this.body.push(null)},onError(e){if(this.abort){A.controller.off("terminated",this.abort)}this.body?.destroy(e);A.controller.terminate(e);o(e)},onUpgrade(A,e,t){if(A!==101){return}const r=new a;for(let A=0;A{"use strict";const{extractBody:r,mixinBody:s,cloneBody:o}=t(8544);const{Headers:n,fill:i,HeadersList:a}=t(9976);const{FinalizationRegistry:g}=t(2135)();const c=t(781);const{isValidHTTPToken:E,sameOrigin:Q,normalizeMethod:C,makePolicyContainer:B,normalizeMethodRecord:l}=t(2492);const{forbiddenMethodsSet:I,corsSafeListedMethodsSet:h,referrerPolicy:u,requestRedirect:d,requestMode:p,requestCredentials:y,requestCache:w,requestDuplex:R}=t(5107);const{kEnumerableProperty:m}=c;const{kHeaders:D,kSignal:k,kState:b,kGuard:F,kRealm:S}=t(4111);const{webidl:N}=t(3113);const{getGlobalOrigin:U}=t(4647);const{URLSerializer:T}=t(7691);const{kHeadersList:L,kConstruct:M}=t(548);const G=t(2613);const{getMaxListeners:v,setMaxListeners:Y,getEventListeners:H,defaultMaxListeners:J}=t(4434);let V=globalThis.TransformStream;const O=Symbol("abortController");const P=new g((({signal:A,abort:e})=>{A.removeEventListener("abort",e)}));class Request{constructor(A,e={}){if(A===M){return}N.argumentLengthCheck(arguments,1,{header:"Request constructor"});A=N.converters.RequestInfo(A);e=N.converters.RequestInit(e);this[S]={settingsObject:{baseUrl:U(),get origin(){return this.baseUrl?.origin},policyContainer:B()}};let s=null;let o=null;const g=this[S].settingsObject.baseUrl;let u=null;if(typeof A==="string"){let e;try{e=new URL(A,g)}catch(e){throw new TypeError("Failed to parse URL from "+A,{cause:e})}if(e.username||e.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+A)}s=makeRequest({urlList:[e]});o="cors"}else{G(A instanceof Request);s=A[b];u=A[k]}const d=this[S].settingsObject.origin;let p="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&Q(s.window,d)){p=s.window}if(e.window!=null){throw new TypeError(`'window' option '${p}' must be null`)}if("window"in e){p="no-window"}s=makeRequest({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:this[S].settingsObject,window:p,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const y=Object.keys(e).length!==0;if(y){if(s.mode==="navigate"){s.mode="same-origin"}s.reloadNavigation=false;s.historyNavigation=false;s.origin="client";s.referrer="client";s.referrerPolicy="";s.url=s.urlList[s.urlList.length-1];s.urlList=[s.url]}if(e.referrer!==undefined){const A=e.referrer;if(A===""){s.referrer="no-referrer"}else{let e;try{e=new URL(A,g)}catch(e){throw new TypeError(`Referrer "${A}" is not a valid URL.`,{cause:e})}if(e.protocol==="about:"&&e.hostname==="client"||d&&!Q(e,this[S].settingsObject.baseUrl)){s.referrer="client"}else{s.referrer=e}}}if(e.referrerPolicy!==undefined){s.referrerPolicy=e.referrerPolicy}let w;if(e.mode!==undefined){w=e.mode}else{w=o}if(w==="navigate"){throw N.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(w!=null){s.mode=w}if(e.credentials!==undefined){s.credentials=e.credentials}if(e.cache!==undefined){s.cache=e.cache}if(s.cache==="only-if-cached"&&s.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(e.redirect!==undefined){s.redirect=e.redirect}if(e.integrity!=null){s.integrity=String(e.integrity)}if(e.keepalive!==undefined){s.keepalive=Boolean(e.keepalive)}if(e.method!==undefined){let A=e.method;if(!E(A)){throw new TypeError(`'${A}' is not a valid HTTP method.`)}if(I.has(A.toUpperCase())){throw new TypeError(`'${A}' HTTP method is unsupported.`)}A=l[A]??C(A);s.method=A}if(e.signal!==undefined){u=e.signal}this[b]=s;const R=new AbortController;this[k]=R.signal;this[k][S]=this[S];if(u!=null){if(!u||typeof u.aborted!=="boolean"||typeof u.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(u.aborted){R.abort(u.reason)}else{this[O]=R;const A=new WeakRef(R);const abort=function(){const e=A.deref();if(e!==undefined){e.abort(this.reason)}};try{if(typeof v==="function"&&v(u)===J){Y(100,u)}else if(H(u,"abort").length>=J){Y(100,u)}}catch{}c.addAbortListener(u,abort);P.register(R,{signal:u,abort:abort})}}this[D]=new n(M);this[D][L]=s.headersList;this[D][F]="request";this[D][S]=this[S];if(w==="no-cors"){if(!h.has(s.method)){throw new TypeError(`'${s.method} is unsupported in no-cors mode.`)}this[D][F]="request-no-cors"}if(y){const A=this[D][L];const t=e.headers!==undefined?e.headers:new a(A);A.clear();if(t instanceof a){for(const[e,r]of t){A.append(e,r)}A.cookies=t.cookies}else{i(this[D],t)}}const m=A instanceof Request?A[b].body:null;if((e.body!=null||m!=null)&&(s.method==="GET"||s.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let T=null;if(e.body!=null){const[A,t]=r(e.body,s.keepalive);T=A;if(t&&!this[D][L].contains("content-type")){this[D].append("content-type",t)}}const x=T??m;if(x!=null&&x.source==null){if(T!=null&&e.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(s.mode!=="same-origin"&&s.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}s.useCORSPreflightFlag=true}let _=x;if(T==null&&m!=null){if(c.isDisturbed(m.stream)||m.stream.locked){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}if(!V){V=t(3774).TransformStream}const A=new V;m.stream.pipeThrough(A);_={source:m.source,length:m.length,stream:A.readable}}this[b].body=_}get method(){N.brandCheck(this,Request);return this[b].method}get url(){N.brandCheck(this,Request);return T(this[b].url)}get headers(){N.brandCheck(this,Request);return this[D]}get destination(){N.brandCheck(this,Request);return this[b].destination}get referrer(){N.brandCheck(this,Request);if(this[b].referrer==="no-referrer"){return""}if(this[b].referrer==="client"){return"about:client"}return this[b].referrer.toString()}get referrerPolicy(){N.brandCheck(this,Request);return this[b].referrerPolicy}get mode(){N.brandCheck(this,Request);return this[b].mode}get credentials(){return this[b].credentials}get cache(){N.brandCheck(this,Request);return this[b].cache}get redirect(){N.brandCheck(this,Request);return this[b].redirect}get integrity(){N.brandCheck(this,Request);return this[b].integrity}get keepalive(){N.brandCheck(this,Request);return this[b].keepalive}get isReloadNavigation(){N.brandCheck(this,Request);return this[b].reloadNavigation}get isHistoryNavigation(){N.brandCheck(this,Request);return this[b].historyNavigation}get signal(){N.brandCheck(this,Request);return this[k]}get body(){N.brandCheck(this,Request);return this[b].body?this[b].body.stream:null}get bodyUsed(){N.brandCheck(this,Request);return!!this[b].body&&c.isDisturbed(this[b].body.stream)}get duplex(){N.brandCheck(this,Request);return"half"}clone(){N.brandCheck(this,Request);if(this.bodyUsed||this.body?.locked){throw new TypeError("unusable")}const A=cloneRequest(this[b]);const e=new Request(M);e[b]=A;e[S]=this[S];e[D]=new n(M);e[D][L]=A.headersList;e[D][F]=this[D][F];e[D][S]=this[D][S];const t=new AbortController;if(this.signal.aborted){t.abort(this.signal.reason)}else{c.addAbortListener(this.signal,(()=>{t.abort(this.signal.reason)}))}e[k]=t.signal;return e}}s(Request);function makeRequest(A){const e={method:"GET",localURLsOnly:false,unsafeRequest:false,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:false,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:false,credentials:"same-origin",useCredentials:false,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:false,historyNavigation:false,userActivation:false,taintedOrigin:false,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:false,done:false,timingAllowFailed:false,...A,headersList:A.headersList?new a(A.headersList):new a};e.url=e.urlList[0];return e}function cloneRequest(A){const e=makeRequest({...A,body:null});if(A.body!=null){e.body=o(A.body)}return e}Object.defineProperties(Request.prototype,{method:m,url:m,headers:m,redirect:m,clone:m,signal:m,duplex:m,destination:m,body:m,bodyUsed:m,isHistoryNavigation:m,isReloadNavigation:m,keepalive:m,integrity:m,cache:m,credentials:m,attribute:m,referrerPolicy:m,referrer:m,mode:m,[Symbol.toStringTag]:{value:"Request",configurable:true}});N.converters.Request=N.interfaceConverter(Request);N.converters.RequestInfo=function(A){if(typeof A==="string"){return N.converters.USVString(A)}if(A instanceof Request){return N.converters.Request(A)}return N.converters.USVString(A)};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:u},{key:"mode",converter:N.converters.DOMString,allowedValues:p},{key:"credentials",converter:N.converters.DOMString,allowedValues:y},{key:"cache",converter:N.converters.DOMString,allowedValues:w},{key:"redirect",converter:N.converters.DOMString,allowedValues:d},{key:"integrity",converter:N.converters.DOMString},{key:"keepalive",converter:N.converters.boolean},{key:"signal",converter:N.nullableConverter((A=>N.converters.AbortSignal(A,{strict:false})))},{key:"window",converter:N.converters.any},{key:"duplex",converter:N.converters.DOMString,allowedValues:R}]);A.exports={Request:Request,makeRequest:makeRequest}},2991:(A,e,t)=>{"use strict";const{Headers:r,HeadersList:s,fill:o}=t(9976);const{extractBody:n,cloneBody:i,mixinBody:a}=t(8544);const g=t(781);const{kEnumerableProperty:c}=g;const{isValidReasonPhrase:E,isCancelled:Q,isAborted:C,isBlobLike:B,serializeJavascriptValueToJSONString:l,isErrorLike:I,isomorphicEncode:h}=t(2492);const{redirectStatusSet:u,nullBodyStatus:d,DOMException:p}=t(5107);const{kState:y,kHeaders:w,kGuard:R,kRealm:m}=t(4111);const{webidl:D}=t(3113);const{FormData:k}=t(8242);const{getGlobalOrigin:b}=t(4647);const{URLSerializer:F}=t(7691);const{kHeadersList:S,kConstruct:N}=t(548);const U=t(2613);const{types:T}=t(9023);const L=globalThis.ReadableStream||t(3774).ReadableStream;const M=new TextEncoder("utf-8");class Response{static error(){const A={settingsObject:{}};const e=new Response;e[y]=makeNetworkError();e[m]=A;e[w][S]=e[y].headersList;e[w][R]="immutable";e[w][m]=A;return e}static json(A,e={}){D.argumentLengthCheck(arguments,1,{header:"Response.json"});if(e!==null){e=D.converters.ResponseInit(e)}const t=M.encode(l(A));const r=n(t);const s={settingsObject:{}};const o=new Response;o[m]=s;o[w][R]="response";o[w][m]=s;initializeResponse(o,e,{body:r[0],type:"application/json"});return o}static redirect(A,e=302){const t={settingsObject:{}};D.argumentLengthCheck(arguments,1,{header:"Response.redirect"});A=D.converters.USVString(A);e=D.converters["unsigned short"](e);let r;try{r=new URL(A,b())}catch(e){throw Object.assign(new TypeError("Failed to parse URL from "+A),{cause:e})}if(!u.has(e)){throw new RangeError("Invalid status code "+e)}const s=new Response;s[m]=t;s[w][R]="immutable";s[w][m]=t;s[y].status=e;const o=h(F(r));s[y].headersList.append("location",o);return s}constructor(A=null,e={}){if(A!==null){A=D.converters.BodyInit(A)}e=D.converters.ResponseInit(e);this[m]={settingsObject:{}};this[y]=makeResponse({});this[w]=new r(N);this[w][R]="response";this[w][S]=this[y].headersList;this[w][m]=this[m];let t=null;if(A!=null){const[e,r]=n(A);t={body:e,type:r}}initializeResponse(this,e,t)}get type(){D.brandCheck(this,Response);return this[y].type}get url(){D.brandCheck(this,Response);const A=this[y].urlList;const e=A[A.length-1]??null;if(e===null){return""}return F(e,true)}get redirected(){D.brandCheck(this,Response);return this[y].urlList.length>1}get status(){D.brandCheck(this,Response);return this[y].status}get ok(){D.brandCheck(this,Response);return this[y].status>=200&&this[y].status<=299}get statusText(){D.brandCheck(this,Response);return this[y].statusText}get headers(){D.brandCheck(this,Response);return this[w]}get body(){D.brandCheck(this,Response);return this[y].body?this[y].body.stream:null}get bodyUsed(){D.brandCheck(this,Response);return!!this[y].body&&g.isDisturbed(this[y].body.stream)}clone(){D.brandCheck(this,Response);if(this.bodyUsed||this.body&&this.body.locked){throw D.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const A=cloneResponse(this[y]);const e=new Response;e[y]=A;e[m]=this[m];e[w][S]=A.headersList;e[w][R]=this[w][R];e[w][m]=this[w][m];return e}}a(Response);Object.defineProperties(Response.prototype,{type:c,url:c,status:c,ok:c,redirected:c,statusText:c,headers:c,clone:c,body:c,bodyUsed:c,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:c,redirect:c,error:c});function cloneResponse(A){if(A.internalResponse){return filterResponse(cloneResponse(A.internalResponse),A.type)}const e=makeResponse({...A,body:null});if(A.body!=null){e.body=i(A.body)}return e}function makeResponse(A){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...A,headersList:A.headersList?new s(A.headersList):new s,urlList:A.urlList?[...A.urlList]:[]}}function makeNetworkError(A){const e=I(A);return makeResponse({type:"error",status:0,error:e?A:new Error(A?String(A):A),aborted:A&&A.name==="AbortError"})}function makeFilteredResponse(A,e){e={internalResponse:A,...e};return new Proxy(A,{get(A,t){return t in e?e[t]:A[t]},set(A,t,r){U(!(t in e));A[t]=r;return true}})}function filterResponse(A,e){if(e==="basic"){return makeFilteredResponse(A,{type:"basic",headersList:A.headersList})}else if(e==="cors"){return makeFilteredResponse(A,{type:"cors",headersList:A.headersList})}else if(e==="opaque"){return makeFilteredResponse(A,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(e==="opaqueredirect"){return makeFilteredResponse(A,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{U(false)}}function makeAppropriateNetworkError(A,e=null){U(Q(A));return C(A)?makeNetworkError(Object.assign(new p("The operation was aborted.","AbortError"),{cause:e})):makeNetworkError(Object.assign(new p("Request was cancelled."),{cause:e}))}function initializeResponse(A,e,t){if(e.status!==null&&(e.status<200||e.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in e&&e.statusText!=null){if(!E(String(e.statusText))){throw new TypeError("Invalid statusText")}}if("status"in e&&e.status!=null){A[y].status=e.status}if("statusText"in e&&e.statusText!=null){A[y].statusText=e.statusText}if("headers"in e&&e.headers!=null){o(A[w],e.headers)}if(t){if(d.includes(A.status)){throw D.errors.exception({header:"Response constructor",message:"Invalid response status code "+A.status})}A[y].body=t.body;if(t.type!=null&&!A[y].headersList.contains("Content-Type")){A[y].headersList.append("content-type",t.type)}}}D.converters.ReadableStream=D.interfaceConverter(L);D.converters.FormData=D.interfaceConverter(k);D.converters.URLSearchParams=D.interfaceConverter(URLSearchParams);D.converters.XMLHttpRequestBodyInit=function(A){if(typeof A==="string"){return D.converters.USVString(A)}if(B(A)){return D.converters.Blob(A,{strict:false})}if(T.isArrayBuffer(A)||T.isTypedArray(A)||T.isDataView(A)){return D.converters.BufferSource(A)}if(g.isFormDataLike(A)){return D.converters.FormData(A,{strict:false})}if(A instanceof URLSearchParams){return D.converters.URLSearchParams(A)}return D.converters.DOMString(A)};D.converters.BodyInit=function(A){if(A instanceof L){return D.converters.ReadableStream(A)}if(A?.[Symbol.asyncIterator]){return A}return D.converters.XMLHttpRequestBodyInit(A)};D.converters.ResponseInit=D.dictionaryConverter([{key:"status",converter:D.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:D.converters.ByteString,defaultValue:""},{key:"headers",converter:D.converters.HeadersInit}]);A.exports={makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse}},4111:A=>{"use strict";A.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm")}},2492:(A,e,t)=>{"use strict";const{redirectStatusSet:r,referrerPolicySet:s,badPortsSet:o}=t(5107);const{getGlobalOrigin:n}=t(4647);const{performance:i}=t(2987);const{isBlobLike:a,toUSVString:g,ReadableStreamFrom:c}=t(781);const E=t(2613);const{isUint8Array:Q}=t(8253);let C=[];let B;try{B=t(6982);const A=["sha256","sha384","sha512"];C=B.getHashes().filter((e=>A.includes(e)))}catch{}function responseURL(A){const e=A.urlList;const t=e.length;return t===0?null:e[t-1].toString()}function responseLocationURL(A,e){if(!r.has(A.status)){return null}let t=A.headersList.get("location");if(t!==null&&isValidHeaderValue(t)){t=new URL(t,responseURL(A))}if(t&&!t.hash){t.hash=e}return t}function requestCurrentURL(A){return A.urlList[A.urlList.length-1]}function requestBadPort(A){const e=requestCurrentURL(A);if(urlIsHttpHttpsScheme(e)&&o.has(e.port)){return"blocked"}return"allowed"}function isErrorLike(A){return A instanceof Error||(A?.constructor?.name==="Error"||A?.constructor?.name==="DOMException")}function isValidReasonPhrase(A){for(let e=0;e=32&&t<=126||t>=128&&t<=255)){return false}}return true}function isTokenCharCode(A){switch(A){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 false;default:return A>=33&&A<=126}}function isValidHTTPToken(A){if(A.length===0){return false}for(let e=0;e0){for(let A=r.length;A!==0;A--){const e=r[A-1].trim();if(s.has(e)){o=e;break}}}if(o!==""){A.referrerPolicy=o}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(A){let e=null;e=A.mode;A.headersList.set("sec-fetch-mode",e)}function appendRequestOriginHeader(A){let e=A.origin;if(A.responseTainting==="cors"||A.mode==="websocket"){if(e){A.headersList.append("origin",e)}}else if(A.method!=="GET"&&A.method!=="HEAD"){switch(A.referrerPolicy){case"no-referrer":e=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(A.origin&&urlHasHttpsScheme(A.origin)&&!urlHasHttpsScheme(requestCurrentURL(A))){e=null}break;case"same-origin":if(!sameOrigin(A,requestCurrentURL(A))){e=null}break;default:}if(e){A.headersList.append("origin",e)}}}function coarsenedSharedCurrentTime(A){return i.now()}function createOpaqueTimingInfo(A){return{startTime:A.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:A.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(A){return{referrerPolicy:A.referrerPolicy}}function determineRequestsReferrer(A){const e=A.referrerPolicy;E(e);let t=null;if(A.referrer==="client"){const A=n();if(!A||A.origin==="null"){return"no-referrer"}t=new URL(A)}else if(A.referrer instanceof URL){t=A.referrer}let r=stripURLForReferrer(t);const s=stripURLForReferrer(t,true);if(r.toString().length>4096){r=s}const o=sameOrigin(A,r);const i=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(A.url);switch(e){case"origin":return s!=null?s:stripURLForReferrer(t,true);case"unsafe-url":return r;case"same-origin":return o?s:"no-referrer";case"origin-when-cross-origin":return o?r:s;case"strict-origin-when-cross-origin":{const e=requestCurrentURL(A);if(sameOrigin(r,e)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e)){return"no-referrer"}return s}case"strict-origin":case"no-referrer-when-downgrade":default:return i?"no-referrer":s}}function stripURLForReferrer(A,e){E(A instanceof URL);if(A.protocol==="file:"||A.protocol==="about:"||A.protocol==="blank:"){return"no-referrer"}A.username="";A.password="";A.hash="";if(e){A.pathname="";A.search=""}return A}function isURLPotentiallyTrustworthy(A){if(!(A instanceof URL)){return false}if(A.href==="about:blank"||A.href==="about:srcdoc"){return true}if(A.protocol==="data:")return true;if(A.protocol==="file:")return true;return isOriginPotentiallyTrustworthy(A.origin);function isOriginPotentiallyTrustworthy(A){if(A==null||A==="null")return false;const e=new URL(A);if(e.protocol==="https:"||e.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(e.hostname)||(e.hostname==="localhost"||e.hostname.includes("localhost."))||e.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(A,e){if(B===undefined){return true}const t=parseMetadata(e);if(t==="no metadata"){return true}if(t.length===0){return true}const r=getStrongestMetadata(t);const s=filterMetadataListByAlgorithm(t,r);for(const e of s){const t=e.algo;const r=e.hash;let s=B.createHash(t).update(A).digest("base64");if(s[s.length-1]==="="){if(s[s.length-2]==="="){s=s.slice(0,-2)}else{s=s.slice(0,-1)}}if(compareBase64Mixed(s,r)){return true}}return false}const l=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function parseMetadata(A){const e=[];let t=true;for(const r of A.split(" ")){t=false;const A=l.exec(r);if(A===null||A.groups===undefined||A.groups.algo===undefined){continue}const s=A.groups.algo.toLowerCase();if(C.includes(s)){e.push(A.groups)}}if(t===true){return"no metadata"}return e}function getStrongestMetadata(A){let e=A[0].algo;if(e[3]==="5"){return e}for(let t=1;t{A=t;e=r}));return{promise:t,resolve:A,reject:e}}function isAborted(A){return A.controller.state==="aborted"}function isCancelled(A){return A.controller.state==="aborted"||A.controller.state==="terminated"}const I={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"};Object.setPrototypeOf(I,null);function normalizeMethod(A){return I[A.toLowerCase()]??A}function serializeJavascriptValueToJSONString(A){const e=JSON.stringify(A);if(e===undefined){throw new TypeError("Value is not JSON serializable")}E(typeof e==="string");return e}const h=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function makeIterator(A,e,t){const r={index:0,kind:t,target:A};const s={next(){if(Object.getPrototypeOf(this)!==s){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const{index:A,kind:t,target:o}=r;const n=o();const i=n.length;if(A>=i){return{value:undefined,done:true}}const a=n[A];r.index=A+1;return iteratorResult(a,t)},[Symbol.toStringTag]:`${e} Iterator`};Object.setPrototypeOf(s,h);return Object.setPrototypeOf({},s)}function iteratorResult(A,e){let t;switch(e){case"key":{t=A[0];break}case"value":{t=A[1];break}case"key+value":{t=A;break}}return{value:t,done:false}}async function fullyReadBody(A,e,t){const r=e;const s=t;let o;try{o=A.stream.getReader()}catch(A){s(A);return}try{const A=await readAllBytes(o);r(A)}catch(A){s(A)}}let u=globalThis.ReadableStream;function isReadableStreamLike(A){if(!u){u=t(3774).ReadableStream}return A instanceof u||A[Symbol.toStringTag]==="ReadableStream"&&typeof A.tee==="function"}const d=65535;function isomorphicDecode(A){if(A.lengthA+String.fromCharCode(e)),"")}function readableStreamClose(A){try{A.close()}catch(A){if(!A.message.includes("Controller is already closed")){throw A}}}function isomorphicEncode(A){for(let e=0;eObject.prototype.hasOwnProperty.call(A,e));A.exports={isAborted:isAborted,isCancelled:isCancelled,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:c,toUSVString:g,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:isValidHTTPToken,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:a,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,makeIterator:makeIterator,isValidHeaderName:isValidHeaderName,isValidHeaderValue:isValidHeaderValue,hasOwn:p,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,isomorphicDecode:isomorphicDecode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,normalizeMethodRecord:I,parseMetadata:parseMetadata}},3113:(A,e,t)=>{"use strict";const{types:r}=t(9023);const{hasOwn:s,toUSVString:o}=t(2492);const n={};n.converters={};n.util={};n.errors={};n.errors.exception=function(A){return new TypeError(`${A.header}: ${A.message}`)};n.errors.conversionFailed=function(A){const e=A.types.length===1?"":" one of";const t=`${A.argument} could not be converted to`+`${e}: ${A.types.join(", ")}.`;return n.errors.exception({header:A.prefix,message:t})};n.errors.invalidArgument=function(A){return n.errors.exception({header:A.prefix,message:`"${A.value}" is an invalid ${A.type}.`})};n.brandCheck=function(A,e,t=undefined){if(t?.strict!==false&&!(A instanceof e)){throw new TypeError("Illegal invocation")}else{return A?.[Symbol.toStringTag]===e.prototype[Symbol.toStringTag]}};n.argumentLengthCheck=function({length:A},e,t){if(As){throw n.errors.exception({header:"Integer conversion",message:`Value must be between ${o}-${s}, got ${i}.`})}return i}if(!Number.isNaN(i)&&r.clamp===true){i=Math.min(Math.max(i,o),s);if(Math.floor(i)%2===0){i=Math.floor(i)}else{i=Math.ceil(i)}return i}if(Number.isNaN(i)||i===0&&Object.is(0,i)||i===Number.POSITIVE_INFINITY||i===Number.NEGATIVE_INFINITY){return 0}i=n.util.IntegerPart(i);i=i%Math.pow(2,e);if(t==="signed"&&i>=Math.pow(2,e)-1){return i-Math.pow(2,e)}return i};n.util.IntegerPart=function(A){const e=Math.floor(Math.abs(A));if(A<0){return-1*e}return e};n.sequenceConverter=function(A){return e=>{if(n.util.Type(e)!=="Object"){throw n.errors.exception({header:"Sequence",message:`Value of type ${n.util.Type(e)} is not an Object.`})}const t=e?.[Symbol.iterator]?.();const r=[];if(t===undefined||typeof t.next!=="function"){throw n.errors.exception({header:"Sequence",message:"Object is not an iterator."})}while(true){const{done:e,value:s}=t.next();if(e){break}r.push(A(s))}return r}};n.recordConverter=function(A,e){return t=>{if(n.util.Type(t)!=="Object"){throw n.errors.exception({header:"Record",message:`Value of type ${n.util.Type(t)} is not an Object.`})}const s={};if(!r.isProxy(t)){const r=Object.keys(t);for(const o of r){const r=A(o);const n=e(t[o]);s[r]=n}return s}const o=Reflect.ownKeys(t);for(const r of o){const o=Reflect.getOwnPropertyDescriptor(t,r);if(o?.enumerable){const o=A(r);const n=e(t[r]);s[o]=n}}return s}};n.interfaceConverter=function(A){return(e,t={})=>{if(t.strict!==false&&!(e instanceof A)){throw n.errors.exception({header:A.name,message:`Expected ${e} to be an instance of ${A.name}.`})}return e}};n.dictionaryConverter=function(A){return e=>{const t=n.util.Type(e);const r={};if(t==="Null"||t==="Undefined"){return r}else if(t!=="Object"){throw n.errors.exception({header:"Dictionary",message:`Expected ${e} to be one of: Null, Undefined, Object.`})}for(const t of A){const{key:A,defaultValue:o,required:i,converter:a}=t;if(i===true){if(!s(e,A)){throw n.errors.exception({header:"Dictionary",message:`Missing required key "${A}".`})}}let g=e[A];const c=s(t,"defaultValue");if(c&&g!==null){g=g??o}if(i||c||g!==undefined){g=a(g);if(t.allowedValues&&!t.allowedValues.includes(g)){throw n.errors.exception({header:"Dictionary",message:`${g} is not an accepted type. Expected one of ${t.allowedValues.join(", ")}.`})}r[A]=g}}return r}};n.nullableConverter=function(A){return e=>{if(e===null){return e}return A(e)}};n.converters.DOMString=function(A,e={}){if(A===null&&e.legacyNullToEmptyString){return""}if(typeof A==="symbol"){throw new TypeError("Could not convert argument of type symbol to string.")}return String(A)};n.converters.ByteString=function(A){const e=n.converters.DOMString(A);for(let A=0;A255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${A} has a value of ${e.charCodeAt(A)} which is greater than 255.`)}}return e};n.converters.USVString=o;n.converters.boolean=function(A){const e=Boolean(A);return e};n.converters.any=function(A){return A};n.converters["long long"]=function(A){const e=n.util.ConvertToInt(A,64,"signed");return e};n.converters["unsigned long long"]=function(A){const e=n.util.ConvertToInt(A,64,"unsigned");return e};n.converters["unsigned long"]=function(A){const e=n.util.ConvertToInt(A,32,"unsigned");return e};n.converters["unsigned short"]=function(A,e){const t=n.util.ConvertToInt(A,16,"unsigned",e);return t};n.converters.ArrayBuffer=function(A,e={}){if(n.util.Type(A)!=="Object"||!r.isAnyArrayBuffer(A)){throw n.errors.conversionFailed({prefix:`${A}`,argument:`${A}`,types:["ArrayBuffer"]})}if(e.allowShared===false&&r.isSharedArrayBuffer(A)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.TypedArray=function(A,e,t={}){if(n.util.Type(A)!=="Object"||!r.isTypedArray(A)||A.constructor.name!==e.name){throw n.errors.conversionFailed({prefix:`${e.name}`,argument:`${A}`,types:[e.name]})}if(t.allowShared===false&&r.isSharedArrayBuffer(A.buffer)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.DataView=function(A,e={}){if(n.util.Type(A)!=="Object"||!r.isDataView(A)){throw n.errors.exception({header:"DataView",message:"Object is not a DataView."})}if(e.allowShared===false&&r.isSharedArrayBuffer(A.buffer)){throw n.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return A};n.converters.BufferSource=function(A,e={}){if(r.isAnyArrayBuffer(A)){return n.converters.ArrayBuffer(A,e)}if(r.isTypedArray(A)){return n.converters.TypedArray(A,A.constructor)}if(r.isDataView(A)){return n.converters.DataView(A,e)}throw new TypeError(`Could not convert ${A} to a BufferSource.`)};n.converters["sequence"]=n.sequenceConverter(n.converters.ByteString);n.converters["sequence>"]=n.sequenceConverter(n.converters["sequence"]);n.converters["record"]=n.recordConverter(n.converters.ByteString,n.converters.ByteString);A.exports={webidl:n}},6979:A=>{"use strict";function getEncoding(A){if(!A){return"failure"}switch(A.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"}}A.exports={getEncoding:getEncoding}},4855:(A,e,t)=>{"use strict";const{staticPropertyDescriptors:r,readOperation:s,fireAProgressEvent:o}=t(2438);const{kState:n,kError:i,kResult:a,kEvents:g,kAborted:c}=t(1813);const{webidl:E}=t(3113);const{kEnumerableProperty:Q}=t(781);class FileReader extends EventTarget{constructor(){super();this[n]="empty";this[a]=null;this[i]=null;this[g]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"});A=E.converters.Blob(A,{strict:false});s(this,A,"ArrayBuffer")}readAsBinaryString(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"});A=E.converters.Blob(A,{strict:false});s(this,A,"BinaryString")}readAsText(A,e=undefined){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"});A=E.converters.Blob(A,{strict:false});if(e!==undefined){e=E.converters.DOMString(e)}s(this,A,"Text",e)}readAsDataURL(A){E.brandCheck(this,FileReader);E.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"});A=E.converters.Blob(A,{strict:false});s(this,A,"DataURL")}abort(){if(this[n]==="empty"||this[n]==="done"){this[a]=null;return}if(this[n]==="loading"){this[n]="done";this[a]=null}this[c]=true;o("abort",this);if(this[n]!=="loading"){o("loadend",this)}}get readyState(){E.brandCheck(this,FileReader);switch(this[n]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){E.brandCheck(this,FileReader);return this[a]}get error(){E.brandCheck(this,FileReader);return this[i]}get onloadend(){E.brandCheck(this,FileReader);return this[g].loadend}set onloadend(A){E.brandCheck(this,FileReader);if(this[g].loadend){this.removeEventListener("loadend",this[g].loadend)}if(typeof A==="function"){this[g].loadend=A;this.addEventListener("loadend",A)}else{this[g].loadend=null}}get onerror(){E.brandCheck(this,FileReader);return this[g].error}set onerror(A){E.brandCheck(this,FileReader);if(this[g].error){this.removeEventListener("error",this[g].error)}if(typeof A==="function"){this[g].error=A;this.addEventListener("error",A)}else{this[g].error=null}}get onloadstart(){E.brandCheck(this,FileReader);return this[g].loadstart}set onloadstart(A){E.brandCheck(this,FileReader);if(this[g].loadstart){this.removeEventListener("loadstart",this[g].loadstart)}if(typeof A==="function"){this[g].loadstart=A;this.addEventListener("loadstart",A)}else{this[g].loadstart=null}}get onprogress(){E.brandCheck(this,FileReader);return this[g].progress}set onprogress(A){E.brandCheck(this,FileReader);if(this[g].progress){this.removeEventListener("progress",this[g].progress)}if(typeof A==="function"){this[g].progress=A;this.addEventListener("progress",A)}else{this[g].progress=null}}get onload(){E.brandCheck(this,FileReader);return this[g].load}set onload(A){E.brandCheck(this,FileReader);if(this[g].load){this.removeEventListener("load",this[g].load)}if(typeof A==="function"){this[g].load=A;this.addEventListener("load",A)}else{this[g].load=null}}get onabort(){E.brandCheck(this,FileReader);return this[g].abort}set onabort(A){E.brandCheck(this,FileReader);if(this[g].abort){this.removeEventListener("abort",this[g].abort)}if(typeof A==="function"){this[g].abort=A;this.addEventListener("abort",A)}else{this[g].abort=null}}}FileReader.EMPTY=FileReader.prototype.EMPTY=0;FileReader.LOADING=FileReader.prototype.LOADING=1;FileReader.DONE=FileReader.prototype.DONE=2;Object.defineProperties(FileReader.prototype,{EMPTY:r,LOADING:r,DONE:r,readAsArrayBuffer:Q,readAsBinaryString:Q,readAsText:Q,readAsDataURL:Q,abort:Q,readyState:Q,result:Q,error:Q,onloadstart:Q,onprogress:Q,onload:Q,onabort:Q,onerror:Q,onloadend:Q,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:r,LOADING:r,DONE:r});A.exports={FileReader:FileReader}},361:(A,e,t)=>{"use strict";const{webidl:r}=t(3113);const s=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(A,e={}){A=r.converters.DOMString(A);e=r.converters.ProgressEventInit(e??{});super(A,e);this[s]={lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[s].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[s].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[s].total}}r.converters.ProgressEventInit=r.dictionaryConverter([{key:"lengthComputable",converter:r.converters.boolean,defaultValue:false},{key:"loaded",converter:r.converters["unsigned long long"],defaultValue:0},{key:"total",converter:r.converters["unsigned long long"],defaultValue:0},{key:"bubbles",converter:r.converters.boolean,defaultValue:false},{key:"cancelable",converter:r.converters.boolean,defaultValue:false},{key:"composed",converter:r.converters.boolean,defaultValue:false}]);A.exports={ProgressEvent:ProgressEvent}},1813:A=>{"use strict";A.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")}},2438:(A,e,t)=>{"use strict";const{kState:r,kError:s,kResult:o,kAborted:n,kLastProgressEventFired:i}=t(1813);const{ProgressEvent:a}=t(361);const{getEncoding:g}=t(6979);const{DOMException:c}=t(5107);const{serializeAMimeType:E,parseMIMEType:Q}=t(7691);const{types:C}=t(9023);const{StringDecoder:B}=t(3193);const{btoa:l}=t(181);const I={enumerable:true,writable:false,configurable:false};function readOperation(A,e,t,a){if(A[r]==="loading"){throw new c("Invalid state","InvalidStateError")}A[r]="loading";A[o]=null;A[s]=null;const g=e.stream();const E=g.getReader();const Q=[];let B=E.read();let l=true;(async()=>{while(!A[n]){try{const{done:g,value:c}=await B;if(l&&!A[n]){queueMicrotask((()=>{fireAProgressEvent("loadstart",A)}))}l=false;if(!g&&C.isUint8Array(c)){Q.push(c);if((A[i]===undefined||Date.now()-A[i]>=50)&&!A[n]){A[i]=Date.now();queueMicrotask((()=>{fireAProgressEvent("progress",A)}))}B=E.read()}else if(g){queueMicrotask((()=>{A[r]="done";try{const r=packageData(Q,t,e.type,a);if(A[n]){return}A[o]=r;fireAProgressEvent("load",A)}catch(e){A[s]=e;fireAProgressEvent("error",A)}if(A[r]!=="loading"){fireAProgressEvent("loadend",A)}}));break}}catch(e){if(A[n]){return}queueMicrotask((()=>{A[r]="done";A[s]=e;fireAProgressEvent("error",A);if(A[r]!=="loading"){fireAProgressEvent("loadend",A)}}));break}}})()}function fireAProgressEvent(A,e){const t=new a(A,{bubbles:false,cancelable:false});e.dispatchEvent(t)}function packageData(A,e,t,r){switch(e){case"DataURL":{let e="data:";const r=Q(t||"application/octet-stream");if(r!=="failure"){e+=E(r)}e+=";base64,";const s=new B("latin1");for(const t of A){e+=l(s.write(t))}e+=l(s.end());return e}case"Text":{let e="failure";if(r){e=g(r)}if(e==="failure"&&t){const A=Q(t);if(A!=="failure"){e=g(A.parameters.get("charset"))}}if(e==="failure"){e="UTF-8"}return decode(A,e)}case"ArrayBuffer":{const e=combineByteSequences(A);return e.buffer}case"BinaryString":{let e="";const t=new B("latin1");for(const r of A){e+=t.write(r)}e+=t.end();return e}}}function decode(A,e){const t=combineByteSequences(A);const r=BOMSniffing(t);let s=0;if(r!==null){e=r;s=r==="UTF-8"?3:2}const o=t.slice(s);return new TextDecoder(e).decode(o)}function BOMSniffing(A){const[e,t,r]=A;if(e===239&&t===187&&r===191){return"UTF-8"}else if(e===254&&t===255){return"UTF-16BE"}else if(e===255&&t===254){return"UTF-16LE"}return null}function combineByteSequences(A){const e=A.reduce(((A,e)=>A+e.byteLength),0);let t=0;return A.reduce(((A,e)=>{A.set(e,t);t+=e.byteLength;return A}),new Uint8Array(e))}A.exports={staticPropertyDescriptors:I,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},5302:(A,e,t)=>{"use strict";const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:s}=t(6562);const o=t(4212);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new o)}function setGlobalDispatcher(A){if(!A||typeof A.dispatch!=="function"){throw new s("Argument agent must implement Agent")}Object.defineProperty(globalThis,r,{value:A,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[r]}A.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},4315:A=>{"use strict";A.exports=class DecoratorHandler{constructor(A){this.handler=A}onConnect(...A){return this.handler.onConnect(...A)}onError(...A){return this.handler.onError(...A)}onUpgrade(...A){return this.handler.onUpgrade(...A)}onHeaders(...A){return this.handler.onHeaders(...A)}onData(...A){return this.handler.onData(...A)}onComplete(...A){return this.handler.onComplete(...A)}onBodySent(...A){return this.handler.onBodySent(...A)}}},8026:(A,e,t)=>{"use strict";const r=t(781);const{kBodyUsed:s}=t(548);const o=t(2613);const{InvalidArgumentError:n}=t(6562);const i=t(4434);const a=[300,301,302,303,307,308];const g=Symbol("body");class BodyAsyncIterable{constructor(A){this[g]=A;this[s]=false}async*[Symbol.asyncIterator](){o(!this[s],"disturbed");this[s]=true;yield*this[g]}}class RedirectHandler{constructor(A,e,t,a){if(e!=null&&(!Number.isInteger(e)||e<0)){throw new n("maxRedirections must be a positive number")}r.validateHandler(a,t.method,t.upgrade);this.dispatch=A;this.location=null;this.abort=null;this.opts={...t,maxRedirections:0};this.maxRedirections=e;this.handler=a;this.history=[];if(r.isStream(this.opts.body)){if(r.bodyLength(this.opts.body)===0){this.opts.body.on("data",(function(){o(false)}))}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[s]=false;i.prototype.on.call(this.opts.body,"data",(function(){this[s]=true}))}}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function"){this.opts.body=new BodyAsyncIterable(this.opts.body)}else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&r.isIterable(this.opts.body)){this.opts.body=new BodyAsyncIterable(this.opts.body)}}onConnect(A){this.abort=A;this.handler.onConnect(A,{history:this.history})}onUpgrade(A,e,t){this.handler.onUpgrade(A,e,t)}onError(A){this.handler.onError(A)}onHeaders(A,e,t,s){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(A,e);if(this.opts.origin){this.history.push(new URL(this.opts.path,this.opts.origin))}if(!this.location){return this.handler.onHeaders(A,e,t,s)}const{origin:o,pathname:n,search:i}=r.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=i?`${n}${i}`:n;this.opts.headers=cleanRequestHeaders(this.opts.headers,A===303,this.opts.origin!==o);this.opts.path=a;this.opts.origin=o;this.opts.maxRedirections=0;this.opts.query=null;if(A===303&&this.opts.method!=="HEAD"){this.opts.method="GET";this.opts.body=null}}onData(A){if(this.location){}else{return this.handler.onData(A)}}onComplete(A){if(this.location){this.location=null;this.abort=null;this.dispatch(this.opts,this)}else{this.handler.onComplete(A)}}onBodySent(A){if(this.handler.onBodySent){this.handler.onBodySent(A)}}}function parseLocation(A,e){if(a.indexOf(A)===-1){return null}for(let A=0;A{const r=t(2613);const{kRetryHandlerDefaultRetry:s}=t(548);const{RequestRetryError:o}=t(6562);const{isDisturbed:n,parseHeaders:i,parseRangeHeader:a}=t(781);function calculateRetryAfterHeader(A){const e=Date.now();const t=new Date(A).getTime()-e;return t}class RetryHandler{constructor(A,e){const{retryOptions:t,...r}=A;const{retry:o,maxRetries:n,maxTimeout:i,minTimeout:a,timeoutFactor:g,methods:c,errorCodes:E,retryAfter:Q,statusCodes:C}=t??{};this.dispatch=e.dispatch;this.handler=e.handler;this.opts=r;this.abort=null;this.aborted=false;this.retryOpts={retry:o??RetryHandler[s],retryAfter:Q??true,maxTimeout:i??30*1e3,timeout:a??500,timeoutFactor:g??2,maxRetries:n??5,methods:c??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:C??[500,502,503,504,429],errorCodes:E??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE"]};this.retryCount=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.handler.onConnect((A=>{this.aborted=true;if(this.abort){this.abort(A)}else{this.reason=A}}))}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(A,e,t){if(this.handler.onUpgrade){this.handler.onUpgrade(A,e,t)}}onConnect(A){if(this.aborted){A(this.reason)}else{this.abort=A}}onBodySent(A){if(this.handler.onBodySent)return this.handler.onBodySent(A)}static[s](A,{state:e,opts:t},r){const{statusCode:s,code:o,headers:n}=A;const{method:i,retryOptions:a}=t;const{maxRetries:g,timeout:c,maxTimeout:E,timeoutFactor:Q,statusCodes:C,errorCodes:B,methods:l}=a;let{counter:I,currentTimeout:h}=e;h=h!=null&&h>0?h:c;if(o&&o!=="UND_ERR_REQ_RETRY"&&o!=="UND_ERR_SOCKET"&&!B.includes(o)){r(A);return}if(Array.isArray(l)&&!l.includes(i)){r(A);return}if(s!=null&&Array.isArray(C)&&!C.includes(s)){r(A);return}if(I>g){r(A);return}let u=n!=null&&n["retry-after"];if(u){u=Number(u);u=isNaN(u)?calculateRetryAfterHeader(u):u*1e3}const d=u>0?Math.min(u,E):Math.min(h*Q**I,E);e.currentTimeout=d;setTimeout((()=>r(null)),d)}onHeaders(A,e,t,s){const n=i(e);this.retryCount+=1;if(A>=300){this.abort(new o("Request failed",A,{headers:n,count:this.retryCount}));return false}if(this.resume!=null){this.resume=null;if(A!==206){return true}const e=a(n["content-range"]);if(!e){this.abort(new o("Content-Range mismatch",A,{headers:n,count:this.retryCount}));return false}if(this.etag!=null&&this.etag!==n.etag){this.abort(new o("ETag mismatch",A,{headers:n,count:this.retryCount}));return false}const{start:s,size:i,end:g=i}=e;r(this.start===s,"content-range mismatch");r(this.end==null||this.end===g,"content-range mismatch");this.resume=t;return true}if(this.end==null){if(A===206){const o=a(n["content-range"]);if(o==null){return this.handler.onHeaders(A,e,t,s)}const{start:i,size:g,end:c=g}=o;r(i!=null&&Number.isFinite(i)&&this.start!==i,"content-range mismatch");r(Number.isFinite(i));r(c!=null&&Number.isFinite(c)&&this.end!==c,"invalid content-length");this.start=i;this.end=c}if(this.end==null){const A=n["content-length"];this.end=A!=null?Number(A):null}r(Number.isFinite(this.start));r(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=t;this.etag=n.etag!=null?n.etag:null;return this.handler.onHeaders(A,e,t,s)}const g=new o("Request failed",A,{headers:n,count:this.retryCount});this.abort(g);return false}onData(A){this.start+=A.length;return this.handler.onData(A)}onComplete(A){this.retryCount=0;return this.handler.onComplete(A)}onError(A){if(this.aborted||n(this.opts.body)){return this.handler.onError(A)}this.retryOpts.retry(A,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(A){if(A!=null||this.aborted||n(this.opts.body)){return this.handler.onError(A)}if(this.start!==0){this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??""}`}}}try{this.dispatch(this.opts,this)}catch(A){this.handler.onError(A)}}}}A.exports=RetryHandler},3038:(A,e,t)=>{"use strict";const r=t(8026);function createRedirectInterceptor({maxRedirections:A}){return e=>function Intercept(t,s){const{maxRedirections:o=A}=t;if(!o){return e(t,s)}const n=new r(e,o,t,s);t={...t,maxRedirections:0};return e(t,n)}}A.exports=createRedirectInterceptor},4623:(A,e,t)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.SPECIAL_HEADERS=e.HEADER_STATE=e.MINOR=e.MAJOR=e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS=e.TOKEN=e.STRICT_TOKEN=e.HEX=e.URL_CHAR=e.STRICT_URL_CHAR=e.USERINFO_CHARS=e.MARK=e.ALPHANUM=e.NUM=e.HEX_MAP=e.NUM_MAP=e.ALPHA=e.FINISH=e.H_METHOD_MAP=e.METHOD_MAP=e.METHODS_RTSP=e.METHODS_ICE=e.METHODS_HTTP=e.METHODS=e.LENIENT_FLAGS=e.FLAGS=e.TYPE=e.ERROR=void 0;const r=t(815);var s;(function(A){A[A["OK"]=0]="OK";A[A["INTERNAL"]=1]="INTERNAL";A[A["STRICT"]=2]="STRICT";A[A["LF_EXPECTED"]=3]="LF_EXPECTED";A[A["UNEXPECTED_CONTENT_LENGTH"]=4]="UNEXPECTED_CONTENT_LENGTH";A[A["CLOSED_CONNECTION"]=5]="CLOSED_CONNECTION";A[A["INVALID_METHOD"]=6]="INVALID_METHOD";A[A["INVALID_URL"]=7]="INVALID_URL";A[A["INVALID_CONSTANT"]=8]="INVALID_CONSTANT";A[A["INVALID_VERSION"]=9]="INVALID_VERSION";A[A["INVALID_HEADER_TOKEN"]=10]="INVALID_HEADER_TOKEN";A[A["INVALID_CONTENT_LENGTH"]=11]="INVALID_CONTENT_LENGTH";A[A["INVALID_CHUNK_SIZE"]=12]="INVALID_CHUNK_SIZE";A[A["INVALID_STATUS"]=13]="INVALID_STATUS";A[A["INVALID_EOF_STATE"]=14]="INVALID_EOF_STATE";A[A["INVALID_TRANSFER_ENCODING"]=15]="INVALID_TRANSFER_ENCODING";A[A["CB_MESSAGE_BEGIN"]=16]="CB_MESSAGE_BEGIN";A[A["CB_HEADERS_COMPLETE"]=17]="CB_HEADERS_COMPLETE";A[A["CB_MESSAGE_COMPLETE"]=18]="CB_MESSAGE_COMPLETE";A[A["CB_CHUNK_HEADER"]=19]="CB_CHUNK_HEADER";A[A["CB_CHUNK_COMPLETE"]=20]="CB_CHUNK_COMPLETE";A[A["PAUSED"]=21]="PAUSED";A[A["PAUSED_UPGRADE"]=22]="PAUSED_UPGRADE";A[A["PAUSED_H2_UPGRADE"]=23]="PAUSED_H2_UPGRADE";A[A["USER"]=24]="USER"})(s=e.ERROR||(e.ERROR={}));var o;(function(A){A[A["BOTH"]=0]="BOTH";A[A["REQUEST"]=1]="REQUEST";A[A["RESPONSE"]=2]="RESPONSE"})(o=e.TYPE||(e.TYPE={}));var n;(function(A){A[A["CONNECTION_KEEP_ALIVE"]=1]="CONNECTION_KEEP_ALIVE";A[A["CONNECTION_CLOSE"]=2]="CONNECTION_CLOSE";A[A["CONNECTION_UPGRADE"]=4]="CONNECTION_UPGRADE";A[A["CHUNKED"]=8]="CHUNKED";A[A["UPGRADE"]=16]="UPGRADE";A[A["CONTENT_LENGTH"]=32]="CONTENT_LENGTH";A[A["SKIPBODY"]=64]="SKIPBODY";A[A["TRAILING"]=128]="TRAILING";A[A["TRANSFER_ENCODING"]=512]="TRANSFER_ENCODING"})(n=e.FLAGS||(e.FLAGS={}));var i;(function(A){A[A["HEADERS"]=1]="HEADERS";A[A["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";A[A["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(i=e.LENIENT_FLAGS||(e.LENIENT_FLAGS={}));var a;(function(A){A[A["DELETE"]=0]="DELETE";A[A["GET"]=1]="GET";A[A["HEAD"]=2]="HEAD";A[A["POST"]=3]="POST";A[A["PUT"]=4]="PUT";A[A["CONNECT"]=5]="CONNECT";A[A["OPTIONS"]=6]="OPTIONS";A[A["TRACE"]=7]="TRACE";A[A["COPY"]=8]="COPY";A[A["LOCK"]=9]="LOCK";A[A["MKCOL"]=10]="MKCOL";A[A["MOVE"]=11]="MOVE";A[A["PROPFIND"]=12]="PROPFIND";A[A["PROPPATCH"]=13]="PROPPATCH";A[A["SEARCH"]=14]="SEARCH";A[A["UNLOCK"]=15]="UNLOCK";A[A["BIND"]=16]="BIND";A[A["REBIND"]=17]="REBIND";A[A["UNBIND"]=18]="UNBIND";A[A["ACL"]=19]="ACL";A[A["REPORT"]=20]="REPORT";A[A["MKACTIVITY"]=21]="MKACTIVITY";A[A["CHECKOUT"]=22]="CHECKOUT";A[A["MERGE"]=23]="MERGE";A[A["M-SEARCH"]=24]="M-SEARCH";A[A["NOTIFY"]=25]="NOTIFY";A[A["SUBSCRIBE"]=26]="SUBSCRIBE";A[A["UNSUBSCRIBE"]=27]="UNSUBSCRIBE";A[A["PATCH"]=28]="PATCH";A[A["PURGE"]=29]="PURGE";A[A["MKCALENDAR"]=30]="MKCALENDAR";A[A["LINK"]=31]="LINK";A[A["UNLINK"]=32]="UNLINK";A[A["SOURCE"]=33]="SOURCE";A[A["PRI"]=34]="PRI";A[A["DESCRIBE"]=35]="DESCRIBE";A[A["ANNOUNCE"]=36]="ANNOUNCE";A[A["SETUP"]=37]="SETUP";A[A["PLAY"]=38]="PLAY";A[A["PAUSE"]=39]="PAUSE";A[A["TEARDOWN"]=40]="TEARDOWN";A[A["GET_PARAMETER"]=41]="GET_PARAMETER";A[A["SET_PARAMETER"]=42]="SET_PARAMETER";A[A["REDIRECT"]=43]="REDIRECT";A[A["RECORD"]=44]="RECORD";A[A["FLUSH"]=45]="FLUSH"})(a=e.METHODS||(e.METHODS={}));e.METHODS_HTTP=[a.DELETE,a.GET,a.HEAD,a.POST,a.PUT,a.CONNECT,a.OPTIONS,a.TRACE,a.COPY,a.LOCK,a.MKCOL,a.MOVE,a.PROPFIND,a.PROPPATCH,a.SEARCH,a.UNLOCK,a.BIND,a.REBIND,a.UNBIND,a.ACL,a.REPORT,a.MKACTIVITY,a.CHECKOUT,a.MERGE,a["M-SEARCH"],a.NOTIFY,a.SUBSCRIBE,a.UNSUBSCRIBE,a.PATCH,a.PURGE,a.MKCALENDAR,a.LINK,a.UNLINK,a.PRI,a.SOURCE];e.METHODS_ICE=[a.SOURCE];e.METHODS_RTSP=[a.OPTIONS,a.DESCRIBE,a.ANNOUNCE,a.SETUP,a.PLAY,a.PAUSE,a.TEARDOWN,a.GET_PARAMETER,a.SET_PARAMETER,a.REDIRECT,a.RECORD,a.FLUSH,a.GET,a.POST];e.METHOD_MAP=r.enumToMap(a);e.H_METHOD_MAP={};Object.keys(e.METHOD_MAP).forEach((A=>{if(/^H/.test(A)){e.H_METHOD_MAP[A]=e.METHOD_MAP[A]}}));var g;(function(A){A[A["SAFE"]=0]="SAFE";A[A["SAFE_WITH_CB"]=1]="SAFE_WITH_CB";A[A["UNSAFE"]=2]="UNSAFE"})(g=e.FINISH||(e.FINISH={}));e.ALPHA=[];for(let A="A".charCodeAt(0);A<="Z".charCodeAt(0);A++){e.ALPHA.push(String.fromCharCode(A));e.ALPHA.push(String.fromCharCode(A+32))}e.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};e.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};e.NUM=["0","1","2","3","4","5","6","7","8","9"];e.ALPHANUM=e.ALPHA.concat(e.NUM);e.MARK=["-","_",".","!","~","*","'","(",")"];e.USERINFO_CHARS=e.ALPHANUM.concat(e.MARK).concat(["%",";",":","&","=","+","$",","]);e.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(e.ALPHANUM);e.URL_CHAR=e.STRICT_URL_CHAR.concat(["\t","\f"]);for(let A=128;A<=255;A++){e.URL_CHAR.push(A)}e.HEX=e.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);e.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(e.ALPHANUM);e.TOKEN=e.STRICT_TOKEN.concat([" "]);e.HEADER_CHARS=["\t"];for(let A=32;A<=255;A++){if(A!==127){e.HEADER_CHARS.push(A)}}e.CONNECTION_TOKEN_CHARS=e.HEADER_CHARS.filter((A=>A!==44));e.MAJOR=e.NUM_MAP;e.MINOR=e.MAJOR;var c;(function(A){A[A["GENERAL"]=0]="GENERAL";A[A["CONNECTION"]=1]="CONNECTION";A[A["CONTENT_LENGTH"]=2]="CONTENT_LENGTH";A[A["TRANSFER_ENCODING"]=3]="TRANSFER_ENCODING";A[A["UPGRADE"]=4]="UPGRADE";A[A["CONNECTION_KEEP_ALIVE"]=5]="CONNECTION_KEEP_ALIVE";A[A["CONNECTION_CLOSE"]=6]="CONNECTION_CLOSE";A[A["CONNECTION_UPGRADE"]=7]="CONNECTION_UPGRADE";A[A["TRANSFER_ENCODING_CHUNKED"]=8]="TRANSFER_ENCODING_CHUNKED"})(c=e.HEADER_STATE||(e.HEADER_STATE={}));e.SPECIAL_HEADERS={connection:c.CONNECTION,"content-length":c.CONTENT_LENGTH,"proxy-connection":c.CONNECTION,"transfer-encoding":c.TRANSFER_ENCODING,upgrade:c.UPGRADE}},2745:A=>{A.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="},3643:A=>{A.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="},815:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});e.enumToMap=void 0;function enumToMap(A){const e={};Object.keys(A).forEach((t=>{const r=A[t];if(typeof r==="number"){e[t]=r}}));return e}e.enumToMap=enumToMap},600:(A,e,t)=>{"use strict";const{kClients:r}=t(548);const s=t(4212);const{kAgent:o,kMockAgentSet:n,kMockAgentGet:i,kDispatches:a,kIsMockActive:g,kNetConnect:c,kGetNetConnect:E,kOptions:Q,kFactory:C}=t(7292);const B=t(6286);const l=t(3923);const{matchValue:I,buildMockOptions:h}=t(2944);const{InvalidArgumentError:u,UndiciError:d}=t(6562);const p=t(7584);const y=t(2448);const w=t(8711);class FakeWeakRef{constructor(A){this.value=A}deref(){return this.value}}class MockAgent extends p{constructor(A){super(A);this[c]=true;this[g]=true;if(A&&A.agent&&typeof A.agent.dispatch!=="function"){throw new u("Argument opts.agent must implement Agent")}const e=A&&A.agent?A.agent:new s(A);this[o]=e;this[r]=e[r];this[Q]=h(A)}get(A){let e=this[i](A);if(!e){e=this[C](A);this[n](A,e)}return e}dispatch(A,e){this.get(A.origin);return this[o].dispatch(A,e)}async close(){await this[o].close();this[r].clear()}deactivate(){this[g]=false}activate(){this[g]=true}enableNetConnect(A){if(typeof A==="string"||typeof A==="function"||A instanceof RegExp){if(Array.isArray(this[c])){this[c].push(A)}else{this[c]=[A]}}else if(typeof A==="undefined"){this[c]=true}else{throw new u("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[c]=false}get isMockActive(){return this[g]}[n](A,e){this[r].set(A,new FakeWeakRef(e))}[C](A){const e=Object.assign({agent:this},this[Q]);return this[Q]&&this[Q].connections===1?new B(A,e):new l(A,e)}[i](A){const e=this[r].get(A);if(e){return e.deref()}if(typeof A!=="string"){const e=this[C]("http://localhost:9999");this[n](A,e);return e}for(const[e,t]of Array.from(this[r])){const r=t.deref();if(r&&typeof e!=="string"&&I(e,A)){const e=this[C](A);this[n](A,e);e[a]=r[a];return e}}}[E](){return this[c]}pendingInterceptors(){const A=this[r];return Array.from(A.entries()).flatMap((([A,e])=>e.deref()[a].map((e=>({...e,origin:A}))))).filter((({pending:A})=>A))}assertNoPendingInterceptors({pendingInterceptorsFormatter:A=new w}={}){const e=this.pendingInterceptors();if(e.length===0){return}const t=new y("interceptor","interceptors").pluralize(e.length);throw new d(`\n${t.count} ${t.noun} ${t.is} pending:\n\n${A.format(e)}\n`.trim())}}A.exports=MockAgent},6286:(A,e,t)=>{"use strict";const{promisify:r}=t(9023);const s=t(2962);const{buildMockDispatch:o}=t(2944);const{kDispatches:n,kMockAgent:i,kClose:a,kOriginalClose:g,kOrigin:c,kOriginalDispatch:E,kConnected:Q}=t(7292);const{MockInterceptor:C}=t(2898);const B=t(548);const{InvalidArgumentError:l}=t(6562);class MockClient extends s{constructor(A,e){super(A,e);if(!e||!e.agent||typeof e.agent.dispatch!=="function"){throw new l("Argument opts.agent must implement Agent")}this[i]=e.agent;this[c]=A;this[n]=[];this[Q]=1;this[E]=this.dispatch;this[g]=this.close.bind(this);this.dispatch=o.call(this);this.close=this[a]}get[B.kConnected](){return this[Q]}intercept(A){return new C(A,this[n])}async[a](){await r(this[g])();this[Q]=0;this[i][B.kClients].delete(this[c])}}A.exports=MockClient},4858:(A,e,t)=>{"use strict";const{UndiciError:r}=t(6562);class MockNotMatchedError extends r{constructor(A){super(A);Error.captureStackTrace(this,MockNotMatchedError);this.name="MockNotMatchedError";this.message=A||"The request does not match any registered mock dispatches";this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}}A.exports={MockNotMatchedError:MockNotMatchedError}},2898:(A,e,t)=>{"use strict";const{getResponseData:r,buildKey:s,addMockDispatch:o}=t(2944);const{kDispatches:n,kDispatchKey:i,kDefaultHeaders:a,kDefaultTrailers:g,kContentLength:c,kMockDispatch:E}=t(7292);const{InvalidArgumentError:Q}=t(6562);const{buildURL:C}=t(781);class MockScope{constructor(A){this[E]=A}delay(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0){throw new Q("waitInMs must be a valid integer > 0")}this[E].delay=A;return this}persist(){this[E].persist=true;return this}times(A){if(typeof A!=="number"||!Number.isInteger(A)||A<=0){throw new Q("repeatTimes must be a valid integer > 0")}this[E].times=A;return this}}class MockInterceptor{constructor(A,e){if(typeof A!=="object"){throw new Q("opts must be an object")}if(typeof A.path==="undefined"){throw new Q("opts.path must be defined")}if(typeof A.method==="undefined"){A.method="GET"}if(typeof A.path==="string"){if(A.query){A.path=C(A.path,A.query)}else{const e=new URL(A.path,"data://");A.path=e.pathname+e.search}}if(typeof A.method==="string"){A.method=A.method.toUpperCase()}this[i]=s(A);this[n]=e;this[a]={};this[g]={};this[c]=false}createMockScopeDispatchData(A,e,t={}){const s=r(e);const o=this[c]?{"content-length":s.length}:{};const n={...this[a],...o,...t.headers};const i={...this[g],...t.trailers};return{statusCode:A,data:e,headers:n,trailers:i}}validateReplyParameters(A,e,t){if(typeof A==="undefined"){throw new Q("statusCode must be defined")}if(typeof e==="undefined"){throw new Q("data must be defined")}if(typeof t!=="object"){throw new Q("responseOptions must be an object")}}reply(A){if(typeof A==="function"){const wrappedDefaultsCallback=e=>{const t=A(e);if(typeof t!=="object"){throw new Q("reply options callback must return an object")}const{statusCode:r,data:s="",responseOptions:o={}}=t;this.validateReplyParameters(r,s,o);return{...this.createMockScopeDispatchData(r,s,o)}};const e=o(this[n],this[i],wrappedDefaultsCallback);return new MockScope(e)}const[e,t="",r={}]=[...arguments];this.validateReplyParameters(e,t,r);const s=this.createMockScopeDispatchData(e,t,r);const a=o(this[n],this[i],s);return new MockScope(a)}replyWithError(A){if(typeof A==="undefined"){throw new Q("error must be defined")}const e=o(this[n],this[i],{error:A});return new MockScope(e)}defaultReplyHeaders(A){if(typeof A==="undefined"){throw new Q("headers must be defined")}this[a]=A;return this}defaultReplyTrailers(A){if(typeof A==="undefined"){throw new Q("trailers must be defined")}this[g]=A;return this}replyContentLength(){this[c]=true;return this}}A.exports.MockInterceptor=MockInterceptor;A.exports.MockScope=MockScope},3923:(A,e,t)=>{"use strict";const{promisify:r}=t(9023);const s=t(6927);const{buildMockDispatch:o}=t(2944);const{kDispatches:n,kMockAgent:i,kClose:a,kOriginalClose:g,kOrigin:c,kOriginalDispatch:E,kConnected:Q}=t(7292);const{MockInterceptor:C}=t(2898);const B=t(548);const{InvalidArgumentError:l}=t(6562);class MockPool extends s{constructor(A,e){super(A,e);if(!e||!e.agent||typeof e.agent.dispatch!=="function"){throw new l("Argument opts.agent must implement Agent")}this[i]=e.agent;this[c]=A;this[n]=[];this[Q]=1;this[E]=this.dispatch;this[g]=this.close.bind(this);this.dispatch=o.call(this);this.close=this[a]}get[B.kConnected](){return this[Q]}intercept(A){return new C(A,this[n])}async[a](){await r(this[g])();this[Q]=0;this[i][B.kClients].delete(this[c])}}A.exports=MockPool},7292:A=>{"use strict";A.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")}},2944:(A,e,t)=>{"use strict";const{MockNotMatchedError:r}=t(4858);const{kDispatches:s,kMockAgent:o,kOriginalDispatch:n,kOrigin:i,kGetNetConnect:a}=t(7292);const{buildURL:g,nop:c}=t(781);const{STATUS_CODES:E}=t(8611);const{types:{isPromise:Q}}=t(9023);function matchValue(A,e){if(typeof A==="string"){return A===e}if(A instanceof RegExp){return A.test(e)}if(typeof A==="function"){return A(e)===true}return false}function lowerCaseEntries(A){return Object.fromEntries(Object.entries(A).map((([A,e])=>[A.toLocaleLowerCase(),e])))}function getHeaderByName(A,e){if(Array.isArray(A)){for(let t=0;t!A)).filter((({path:A})=>matchValue(safeUrl(A),s)));if(o.length===0){throw new r(`Mock dispatch not matched for path '${s}'`)}o=o.filter((({method:A})=>matchValue(A,e.method)));if(o.length===0){throw new r(`Mock dispatch not matched for method '${e.method}'`)}o=o.filter((({body:A})=>typeof A!=="undefined"?matchValue(A,e.body):true));if(o.length===0){throw new r(`Mock dispatch not matched for body '${e.body}'`)}o=o.filter((A=>matchHeaders(A,e.headers)));if(o.length===0){throw new r(`Mock dispatch not matched for headers '${typeof e.headers==="object"?JSON.stringify(e.headers):e.headers}'`)}return o[0]}function addMockDispatch(A,e,t){const r={timesInvoked:0,times:1,persist:false,consumed:false};const s=typeof t==="function"?{callback:t}:{...t};const o={...r,...e,pending:true,data:{error:null,...s}};A.push(o);return o}function deleteMockDispatch(A,e){const t=A.findIndex((A=>{if(!A.consumed){return false}return matchKey(A,e)}));if(t!==-1){A.splice(t,1)}}function buildKey(A){const{path:e,method:t,body:r,headers:s,query:o}=A;return{path:e,method:t,body:r,headers:s,query:o}}function generateKeyValues(A){return Object.entries(A).reduce(((A,[e,t])=>[...A,Buffer.from(`${e}`),Array.isArray(t)?t.map((A=>Buffer.from(`${A}`))):Buffer.from(`${t}`)]),[])}function getStatusText(A){return E[A]||"unknown"}async function getResponse(A){const e=[];for await(const t of A){e.push(t)}return Buffer.concat(e).toString("utf8")}function mockDispatch(A,e){const t=buildKey(A);const r=getMockDispatch(this[s],t);r.timesInvoked++;if(r.data.callback){r.data={...r.data,...r.data.callback(A)}}const{data:{statusCode:o,data:n,headers:i,trailers:a,error:g},delay:E,persist:C}=r;const{timesInvoked:B,times:l}=r;r.consumed=!C&&B>=l;r.pending=B0){setTimeout((()=>{handleReply(this[s])}),E)}else{handleReply(this[s])}function handleReply(r,s=n){const g=Array.isArray(A.headers)?buildHeadersFromArray(A.headers):A.headers;const E=typeof s==="function"?s({...A,headers:g}):s;if(Q(E)){E.then((A=>handleReply(r,A)));return}const C=getResponseData(E);const B=generateKeyValues(i);const l=generateKeyValues(a);e.abort=c;e.onHeaders(o,B,resume,getStatusText(o));e.onData(Buffer.from(C));e.onComplete(l);deleteMockDispatch(r,t)}function resume(){}return true}function buildMockDispatch(){const A=this[o];const e=this[i];const t=this[n];return function dispatch(s,o){if(A.isMockActive){try{mockDispatch.call(this,s,o)}catch(n){if(n instanceof r){const i=A[a]();if(i===false){throw new r(`${n.message}: subsequent request to origin ${e} was not allowed (net.connect disabled)`)}if(checkNetConnect(i,e)){t.call(this,s,o)}else{throw new r(`${n.message}: subsequent request to origin ${e} was not allowed (net.connect is not enabled for this origin)`)}}else{throw n}}}else{t.call(this,s,o)}}}function checkNetConnect(A,e){const t=new URL(e);if(A===true){return true}else if(Array.isArray(A)&&A.some((A=>matchValue(A,t.host)))){return true}return false}function buildMockOptions(A){if(A){const{agent:e,...t}=A;return t}}A.exports={getResponseData:getResponseData,getMockDispatch:getMockDispatch,addMockDispatch:addMockDispatch,deleteMockDispatch:deleteMockDispatch,buildKey:buildKey,generateKeyValues:generateKeyValues,matchValue:matchValue,getResponse:getResponse,getStatusText:getStatusText,mockDispatch:mockDispatch,buildMockDispatch:buildMockDispatch,checkNetConnect:checkNetConnect,buildMockOptions:buildMockOptions,getHeaderByName:getHeaderByName}},8711:(A,e,t)=>{"use strict";const{Transform:r}=t(2203);const{Console:s}=t(4236);A.exports=class PendingInterceptorsFormatter{constructor({disableColors:A}={}){this.transform=new r({transform(A,e,t){t(null,A)}});this.logger=new s({stdout:this.transform,inspectOptions:{colors:!A&&!process.env.CI}})}format(A){const e=A.map((({method:A,path:e,data:{statusCode:t},persist:r,times:s,timesInvoked:o,origin:n})=>({Method:A,Origin:n,Path:e,"Status code":t,Persistent:r?"✅":"❌",Invocations:o,Remaining:r?Infinity:s-o})));this.logger.table(e);return this.transform.read().toString()}}},2448:A=>{"use strict";const e={pronoun:"it",is:"is",was:"was",this:"this"};const t={pronoun:"they",is:"are",was:"were",this:"these"};A.exports=class Pluralizer{constructor(A,e){this.singular=A;this.plural=e}pluralize(A){const r=A===1;const s=r?e:t;const o=r?this.singular:this.plural;return{...s,count:A,noun:o}}}},7514:A=>{"use strict";const e=2048;const t=e-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(e);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&t)===this.bottom}push(A){this.list[this.top]=A;this.top=this.top+1&t}shift(){const A=this.list[this.bottom];if(A===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&t;return A}}A.exports=class FixedQueue{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(A){if(this.head.isFull()){this.head=this.head.next=new FixedCircularBuffer}this.head.push(A)}shift(){const A=this.tail;const e=A.shift();if(A.isEmpty()&&A.next!==null){this.tail=A.next}return e}}},2469:(A,e,t)=>{"use strict";const r=t(2708);const s=t(7514);const{kConnected:o,kSize:n,kRunning:i,kPending:a,kQueued:g,kBusy:c,kFree:E,kUrl:Q,kClose:C,kDestroy:B,kDispatch:l}=t(548);const I=t(2181);const h=Symbol("clients");const u=Symbol("needDrain");const d=Symbol("queue");const p=Symbol("closed resolve");const y=Symbol("onDrain");const w=Symbol("onConnect");const R=Symbol("onDisconnect");const m=Symbol("onConnectionError");const D=Symbol("get dispatcher");const k=Symbol("add client");const b=Symbol("remove client");const F=Symbol("stats");class PoolBase extends r{constructor(){super();this[d]=new s;this[h]=[];this[g]=0;const A=this;this[y]=function onDrain(e,t){const r=A[d];let s=false;while(!s){const e=r.shift();if(!e){break}A[g]--;s=!this.dispatch(e.opts,e.handler)}this[u]=s;if(!this[u]&&A[u]){A[u]=false;A.emit("drain",e,[A,...t])}if(A[p]&&r.isEmpty()){Promise.all(A[h].map((A=>A.close()))).then(A[p])}};this[w]=(e,t)=>{A.emit("connect",e,[A,...t])};this[R]=(e,t,r)=>{A.emit("disconnect",e,[A,...t],r)};this[m]=(e,t,r)=>{A.emit("connectionError",e,[A,...t],r)};this[F]=new I(this)}get[c](){return this[u]}get[o](){return this[h].filter((A=>A[o])).length}get[E](){return this[h].filter((A=>A[o]&&!A[u])).length}get[a](){let A=this[g];for(const{[a]:e}of this[h]){A+=e}return A}get[i](){let A=0;for(const{[i]:e}of this[h]){A+=e}return A}get[n](){let A=this[g];for(const{[n]:e}of this[h]){A+=e}return A}get stats(){return this[F]}async[C](){if(this[d].isEmpty()){return Promise.all(this[h].map((A=>A.close())))}else{return new Promise((A=>{this[p]=A}))}}async[B](A){while(true){const e=this[d].shift();if(!e){break}e.handler.onError(A)}return Promise.all(this[h].map((e=>e.destroy(A))))}[l](A,e){const t=this[D]();if(!t){this[u]=true;this[d].push({opts:A,handler:e});this[g]++}else if(!t.dispatch(A,e)){t[u]=true;this[u]=!this[D]()}return!this[u]}[k](A){A.on("drain",this[y]).on("connect",this[w]).on("disconnect",this[R]).on("connectionError",this[m]);this[h].push(A);if(this[u]){process.nextTick((()=>{if(this[u]){this[y](A[Q],[this,A])}}))}return this}[b](A){A.close((()=>{const e=this[h].indexOf(A);if(e!==-1){this[h].splice(e,1)}}));this[u]=this[h].some((A=>!A[u]&&A.closed!==true&&A.destroyed!==true))}}A.exports={PoolBase:PoolBase,kClients:h,kNeedDrain:u,kAddClient:k,kRemoveClient:b,kGetDispatcher:D}},2181:(A,e,t)=>{const{kFree:r,kConnected:s,kPending:o,kQueued:n,kRunning:i,kSize:a}=t(548);const g=Symbol("pool");class PoolStats{constructor(A){this[g]=A}get connected(){return this[g][s]}get free(){return this[g][r]}get pending(){return this[g][o]}get queued(){return this[g][n]}get running(){return this[g][i]}get size(){return this[g][a]}}A.exports=PoolStats},6927:(A,e,t)=>{"use strict";const{PoolBase:r,kClients:s,kNeedDrain:o,kAddClient:n,kGetDispatcher:i}=t(2469);const a=t(2962);const{InvalidArgumentError:g}=t(6562);const c=t(781);const{kUrl:E,kInterceptors:Q}=t(548);const C=t(3883);const B=Symbol("options");const l=Symbol("connections");const I=Symbol("factory");function defaultFactory(A,e){return new a(A,e)}class Pool extends r{constructor(A,{connections:e,factory:t=defaultFactory,connect:r,connectTimeout:s,tls:o,maxCachedSessions:n,socketPath:i,autoSelectFamily:a,autoSelectFamilyAttemptTimeout:h,allowH2:u,...d}={}){super();if(e!=null&&(!Number.isFinite(e)||e<0)){throw new g("invalid connections")}if(typeof t!=="function"){throw new g("factory must be a function.")}if(r!=null&&typeof r!=="function"&&typeof r!=="object"){throw new g("connect must be a function or an object")}if(typeof r!=="function"){r=C({...o,maxCachedSessions:n,allowH2:u,socketPath:i,timeout:s,...c.nodeHasAutoSelectFamily&&a?{autoSelectFamily:a,autoSelectFamilyAttemptTimeout:h}:undefined,...r})}this[Q]=d.interceptors&&d.interceptors.Pool&&Array.isArray(d.interceptors.Pool)?d.interceptors.Pool:[];this[l]=e||null;this[E]=c.parseOrigin(A);this[B]={...c.deepClone(d),connect:r,allowH2:u};this[B].interceptors=d.interceptors?{...d.interceptors}:undefined;this[I]=t}[i](){let A=this[s].find((A=>!A[o]));if(A){return A}if(!this[l]||this[s].length{"use strict";const{kProxy:r,kClose:s,kDestroy:o,kInterceptors:n}=t(548);const{URL:i}=t(7016);const a=t(4212);const g=t(6927);const c=t(2708);const{InvalidArgumentError:E,RequestAbortedError:Q}=t(6562);const C=t(3883);const B=Symbol("proxy agent");const l=Symbol("proxy client");const I=Symbol("proxy headers");const h=Symbol("request tls settings");const u=Symbol("proxy tls settings");const d=Symbol("connect endpoint function");function defaultProtocolPort(A){return A==="https:"?443:80}function buildProxyOptions(A){if(typeof A==="string"){A={uri:A}}if(!A||!A.uri){throw new E("Proxy opts.uri is mandatory")}return{uri:A.uri,protocol:A.protocol||"https"}}function defaultFactory(A,e){return new g(A,e)}class ProxyAgent extends c{constructor(A){super(A);this[r]=buildProxyOptions(A);this[B]=new a(A);this[n]=A.interceptors&&A.interceptors.ProxyAgent&&Array.isArray(A.interceptors.ProxyAgent)?A.interceptors.ProxyAgent:[];if(typeof A==="string"){A={uri:A}}if(!A||!A.uri){throw new E("Proxy opts.uri is mandatory")}const{clientFactory:e=defaultFactory}=A;if(typeof e!=="function"){throw new E("Proxy opts.clientFactory must be a function.")}this[h]=A.requestTls;this[u]=A.proxyTls;this[I]=A.headers||{};const t=new i(A.uri);const{origin:s,port:o,host:g,username:c,password:p}=t;if(A.auth&&A.token){throw new E("opts.auth cannot be used in combination with opts.token")}else if(A.auth){this[I]["proxy-authorization"]=`Basic ${A.auth}`}else if(A.token){this[I]["proxy-authorization"]=A.token}else if(c&&p){this[I]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(c)}:${decodeURIComponent(p)}`).toString("base64")}`}const y=C({...A.proxyTls});this[d]=C({...A.requestTls});this[l]=e(t,{connect:y});this[B]=new a({...A,connect:async(A,e)=>{let t=A.host;if(!A.port){t+=`:${defaultProtocolPort(A.protocol)}`}try{const{socket:r,statusCode:n}=await this[l].connect({origin:s,port:o,path:t,signal:A.signal,headers:{...this[I],host:g}});if(n!==200){r.on("error",(()=>{})).destroy();e(new Q(`Proxy response (${n}) !== 200 when HTTP Tunneling`))}if(A.protocol!=="https:"){e(null,r);return}let i;if(this[h]){i=this[h].servername}else{i=A.servername}this[d]({...A,servername:i,httpSocket:r},e)}catch(A){e(A)}}})}dispatch(A,e){const{host:t}=new i(A.origin);const r=buildHeaders(A.headers);throwIfProxyAuthIsSent(r);return this[B].dispatch({...A,headers:{...r,host:t}},e)}async[s](){await this[B].close();await this[l].close()}async[o](){await this[B].destroy();await this[l].destroy()}}function buildHeaders(A){if(Array.isArray(A)){const e={};for(let t=0;tA.toLowerCase()==="proxy-authorization"));if(e){throw new E("Proxy-Authorization should be sent in ProxyAgent constructor")}}A.exports=ProxyAgent},7999:A=>{"use strict";let e=Date.now();let t;const r=[];function onTimeout(){e=Date.now();let A=r.length;let t=0;while(t0&&e>=s.state){s.state=-1;s.callback(s.opaque)}if(s.state===-1){s.state=-2;if(t!==A-1){r[t]=r.pop()}else{r.pop()}A-=1}else{t+=1}}if(r.length>0){refreshTimeout()}}function refreshTimeout(){if(t&&t.refresh){t.refresh()}else{clearTimeout(t);t=setTimeout(onTimeout,1e3);if(t.unref){t.unref()}}}class Timeout{constructor(A,e,t){this.callback=A;this.delay=e;this.opaque=t;this.state=-2;this.refresh()}refresh(){if(this.state===-2){r.push(this);if(!t||r.length===1){refreshTimeout()}}this.state=0}clear(){this.state=-1}}A.exports={setTimeout(A,e,t){return e<1e3?setTimeout(A,e,t):new Timeout(A,e,t)},clearTimeout(A){if(A instanceof Timeout){A.clear()}else{clearTimeout(A)}}}},3901:(A,e,t)=>{"use strict";const r=t(1637);const{uid:s,states:o}=t(9812);const{kReadyState:n,kSentClose:i,kByteParser:a,kReceivedClose:g}=t(6980);const{fireEvent:c,failWebsocketConnection:E}=t(9853);const{CloseEvent:Q}=t(6576);const{makeRequest:C}=t(6891);const{fetching:B}=t(530);const{Headers:l}=t(9976);const{getGlobalDispatcher:I}=t(5302);const{kHeadersList:h}=t(548);const u={};u.open=r.channel("undici:websocket:open");u.close=r.channel("undici:websocket:close");u.socketError=r.channel("undici:websocket:socket_error");let d;try{d=t(6982)}catch{}function establishWebSocketConnection(A,e,t,r,o){const n=A;n.protocol=A.protocol==="ws:"?"http:":"https:";const i=C({urlList:[n],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(o.headers){const A=new l(o.headers)[h];i.headersList=A}const a=d.randomBytes(16).toString("base64");i.headersList.append("sec-websocket-key",a);i.headersList.append("sec-websocket-version","13");for(const A of e){i.headersList.append("sec-websocket-protocol",A)}const g="";const c=B({request:i,useParallelQueue:true,dispatcher:o.dispatcher??I(),processResponse(A){if(A.type==="error"||A.status!==101){E(t,"Received network error or non-101 status code.");return}if(e.length!==0&&!A.headersList.get("Sec-WebSocket-Protocol")){E(t,"Server did not respond with sent protocols.");return}if(A.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){E(t,'Server did not set Upgrade header to "websocket".');return}if(A.headersList.get("Connection")?.toLowerCase()!=="upgrade"){E(t,'Server did not set Connection header to "upgrade".');return}const o=A.headersList.get("Sec-WebSocket-Accept");const n=d.createHash("sha1").update(a+s).digest("base64");if(o!==n){E(t,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const c=A.headersList.get("Sec-WebSocket-Extensions");if(c!==null&&c!==g){E(t,"Received different permessage-deflate than the one set.");return}const Q=A.headersList.get("Sec-WebSocket-Protocol");if(Q!==null&&Q!==i.headersList.get("Sec-WebSocket-Protocol")){E(t,"Protocol was not set in the opening handshake.");return}A.socket.on("data",onSocketData);A.socket.on("close",onSocketClose);A.socket.on("error",onSocketError);if(u.open.hasSubscribers){u.open.publish({address:A.socket.address(),protocol:Q,extensions:c})}r(A)}});return c}function onSocketData(A){if(!this.ws[a].write(A)){this.pause()}}function onSocketClose(){const{ws:A}=this;const e=A[i]&&A[g];let t=1005;let r="";const s=A[a].closingInfo;if(s){t=s.code??1005;r=s.reason}else if(!A[i]){t=1006}A[n]=o.CLOSED;c("close",A,Q,{wasClean:e,code:t,reason:r});if(u.close.hasSubscribers){u.close.publish({websocket:A,code:t,reason:r})}}function onSocketError(A){const{ws:e}=this;e[n]=o.CLOSING;if(u.socketError.hasSubscribers){u.socketError.publish(A)}this.destroy()}A.exports={establishWebSocketConnection:establishWebSocketConnection}},9812:A=>{"use strict";const e="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const t={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const s={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const o=2**16-1;const n={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const i=Buffer.allocUnsafe(0);A.exports={uid:e,staticPropertyDescriptors:t,states:r,opcodes:s,maxUnsigned16Bit:o,parserStates:n,emptyBuffer:i}},6576:(A,e,t)=>{"use strict";const{webidl:r}=t(3113);const{kEnumerableProperty:s}=t(781);const{MessagePort:o}=t(8167);class MessageEvent extends Event{#o;constructor(A,e={}){r.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"});A=r.converters.DOMString(A);e=r.converters.MessageEventInit(e);super(A,e);this.#o=e}get data(){r.brandCheck(this,MessageEvent);return this.#o.data}get origin(){r.brandCheck(this,MessageEvent);return this.#o.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#o.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#o.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#o.ports)){Object.freeze(this.#o.ports)}return this.#o.ports}initMessageEvent(A,e=false,t=false,s=null,o="",n="",i=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"});return new MessageEvent(A,{bubbles:e,cancelable:t,data:s,origin:o,lastEventId:n,source:i,ports:a})}}class CloseEvent extends Event{#o;constructor(A,e={}){r.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"});A=r.converters.DOMString(A);e=r.converters.CloseEventInit(e);super(A,e);this.#o=e}get wasClean(){r.brandCheck(this,CloseEvent);return this.#o.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#o.code}get reason(){r.brandCheck(this,CloseEvent);return this.#o.reason}}class ErrorEvent extends Event{#o;constructor(A,e){r.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(A,e);A=r.converters.DOMString(A);e=r.converters.ErrorEventInit(e??{});this.#o=e}get message(){r.brandCheck(this,ErrorEvent);return this.#o.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#o.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#o.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#o.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#o.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:s,origin:s,lastEventId:s,source:s,ports:s,initMessageEvent:s});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:s,code:s,wasClean:s});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:s,filename:s,lineno:s,colno:s,error:s});r.converters.MessagePort=r.interfaceConverter(o);r.converters["sequence"]=r.sequenceConverter(r.converters.MessagePort);const n=[{key:"bubbles",converter:r.converters.boolean,defaultValue:false},{key:"cancelable",converter:r.converters.boolean,defaultValue:false},{key:"composed",converter:r.converters.boolean,defaultValue:false}];r.converters.MessageEventInit=r.dictionaryConverter([...n,{key:"data",converter:r.converters.any,defaultValue:null},{key:"origin",converter:r.converters.USVString,defaultValue:""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:null},{key:"ports",converter:r.converters["sequence"],get defaultValue(){return[]}}]);r.converters.CloseEventInit=r.dictionaryConverter([...n,{key:"wasClean",converter:r.converters.boolean,defaultValue:false},{key:"code",converter:r.converters["unsigned short"],defaultValue:0},{key:"reason",converter:r.converters.USVString,defaultValue:""}]);r.converters.ErrorEventInit=r.dictionaryConverter([...n,{key:"message",converter:r.converters.DOMString,defaultValue:""},{key:"filename",converter:r.converters.USVString,defaultValue:""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:0},{key:"error",converter:r.converters.any}]);A.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent}},7012:(A,e,t)=>{"use strict";const{maxUnsigned16Bit:r}=t(9812);let s;try{s=t(6982)}catch{}class WebsocketFrameSend{constructor(A){this.frameData=A;this.maskKey=s.randomBytes(4)}createFrame(A){const e=this.frameData?.byteLength??0;let t=e;let s=6;if(e>r){s+=8;t=127}else if(e>125){s+=2;t=126}const o=Buffer.allocUnsafe(e+s);o[0]=o[1]=0;o[0]|=128;o[0]=(o[0]&240)+A; -/*! ws. MIT License. Einar Otto Stangvik */o[s-4]=this.maskKey[0];o[s-3]=this.maskKey[1];o[s-2]=this.maskKey[2];o[s-1]=this.maskKey[3];o[1]=t;if(t===126){o.writeUInt16BE(e,2)}else if(t===127){o[2]=o[3]=0;o.writeUIntBE(e,4,6)}o[1]|=128;for(let A=0;A{"use strict";const{Writable:r}=t(2203);const s=t(1637);const{parserStates:o,opcodes:n,states:i,emptyBuffer:a}=t(9812);const{kReadyState:g,kSentClose:c,kResponse:E,kReceivedClose:Q}=t(6980);const{isValidStatusCode:C,failWebsocketConnection:B,websocketMessageReceived:l}=t(9853);const{WebsocketFrameSend:I}=t(7012);const h={};h.ping=s.channel("undici:websocket:ping");h.pong=s.channel("undici:websocket:pong");class ByteParser extends r{#n=[];#i=0;#a=o.INFO;#g={};#c=[];constructor(A){super();this.ws=A}_write(A,e,t){this.#n.push(A);this.#i+=A.length;this.run(t)}run(A){while(true){if(this.#a===o.INFO){if(this.#i<2){return A()}const e=this.consume(2);this.#g.fin=(e[0]&128)!==0;this.#g.opcode=e[0]&15;this.#g.originalOpcode??=this.#g.opcode;this.#g.fragmented=!this.#g.fin&&this.#g.opcode!==n.CONTINUATION;if(this.#g.fragmented&&this.#g.opcode!==n.BINARY&&this.#g.opcode!==n.TEXT){B(this.ws,"Invalid frame type was fragmented.");return}const t=e[1]&127;if(t<=125){this.#g.payloadLength=t;this.#a=o.READ_DATA}else if(t===126){this.#a=o.PAYLOADLENGTH_16}else if(t===127){this.#a=o.PAYLOADLENGTH_64}if(this.#g.fragmented&&t>125){B(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#g.opcode===n.PING||this.#g.opcode===n.PONG||this.#g.opcode===n.CLOSE)&&t>125){B(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#g.opcode===n.CLOSE){if(t===1){B(this.ws,"Received close frame with a 1-byte body.");return}const A=this.consume(t);this.#g.closeInfo=this.parseCloseBody(false,A);if(!this.ws[c]){const A=Buffer.allocUnsafe(2);A.writeUInt16BE(this.#g.closeInfo.code,0);const e=new I(A);this.ws[E].socket.write(e.createFrame(n.CLOSE),(A=>{if(!A){this.ws[c]=true}}))}this.ws[g]=i.CLOSING;this.ws[Q]=true;this.end();return}else if(this.#g.opcode===n.PING){const e=this.consume(t);if(!this.ws[Q]){const A=new I(e);this.ws[E].socket.write(A.createFrame(n.PONG));if(h.ping.hasSubscribers){h.ping.publish({payload:e})}}this.#a=o.INFO;if(this.#i>0){continue}else{A();return}}else if(this.#g.opcode===n.PONG){const e=this.consume(t);if(h.pong.hasSubscribers){h.pong.publish({payload:e})}if(this.#i>0){continue}else{A();return}}}else if(this.#a===o.PAYLOADLENGTH_16){if(this.#i<2){return A()}const e=this.consume(2);this.#g.payloadLength=e.readUInt16BE(0);this.#a=o.READ_DATA}else if(this.#a===o.PAYLOADLENGTH_64){if(this.#i<8){return A()}const e=this.consume(8);const t=e.readUInt32BE(0);if(t>2**31-1){B(this.ws,"Received payload length > 2^31 bytes.");return}const r=e.readUInt32BE(4);this.#g.payloadLength=(t<<8)+r;this.#a=o.READ_DATA}else if(this.#a===o.READ_DATA){if(this.#i=this.#g.payloadLength){const A=this.consume(this.#g.payloadLength);this.#c.push(A);if(!this.#g.fragmented||this.#g.fin&&this.#g.opcode===n.CONTINUATION){const A=Buffer.concat(this.#c);l(this.ws,this.#g.originalOpcode,A);this.#g={};this.#c.length=0}this.#a=o.INFO}}if(this.#i>0){continue}else{A();break}}}consume(A){if(A>this.#i){return null}else if(A===0){return a}if(this.#n[0].length===A){this.#i-=this.#n[0].length;return this.#n.shift()}const e=Buffer.allocUnsafe(A);let t=0;while(t!==A){const r=this.#n[0];const{length:s}=r;if(s+t===A){e.set(this.#n.shift(),t);break}else if(s+t>A){e.set(r.subarray(0,A-t),t);this.#n[0]=r.subarray(A-t);break}else{e.set(this.#n.shift(),t);t+=r.length}}this.#i-=A;return e}parseCloseBody(A,e){let t;if(e.length>=2){t=e.readUInt16BE(0)}if(A){if(!C(t)){return null}return{code:t}}let r=e.subarray(2);if(r[0]===239&&r[1]===187&&r[2]===191){r=r.subarray(3)}if(t!==undefined&&!C(t)){return null}try{r=new TextDecoder("utf-8",{fatal:true}).decode(r)}catch{return null}return{code:t,reason:r}}get closingInfo(){return this.#g.closeInfo}}A.exports={ByteParser:ByteParser}},6980:A=>{"use strict";A.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")}},9853:(A,e,t)=>{"use strict";const{kReadyState:r,kController:s,kResponse:o,kBinaryType:n,kWebSocketURL:i}=t(6980);const{states:a,opcodes:g}=t(9812);const{MessageEvent:c,ErrorEvent:E}=t(6576);function isEstablished(A){return A[r]===a.OPEN}function isClosing(A){return A[r]===a.CLOSING}function isClosed(A){return A[r]===a.CLOSED}function fireEvent(A,e,t=Event,r){const s=new t(A,r);e.dispatchEvent(s)}function websocketMessageReceived(A,e,t){if(A[r]!==a.OPEN){return}let s;if(e===g.TEXT){try{s=new TextDecoder("utf-8",{fatal:true}).decode(t)}catch{failWebsocketConnection(A,"Received invalid UTF-8 in text frame.");return}}else if(e===g.BINARY){if(A[n]==="blob"){s=new Blob([t])}else{s=new Uint8Array(t).buffer}}fireEvent("message",A,c,{origin:A[i].origin,data:s})}function isValidSubprotocol(A){if(A.length===0){return false}for(const e of A){const A=e.charCodeAt(0);if(A<33||A>126||e==="("||e===")"||e==="<"||e===">"||e==="@"||e===","||e===";"||e===":"||e==="\\"||e==='"'||e==="/"||e==="["||e==="]"||e==="?"||e==="="||e==="{"||e==="}"||A===32||A===9){return false}}return true}function isValidStatusCode(A){if(A>=1e3&&A<1015){return A!==1004&&A!==1005&&A!==1006}return A>=3e3&&A<=4999}function failWebsocketConnection(A,e){const{[s]:t,[o]:r}=A;t.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(e){fireEvent("error",A,E,{error:new Error(e)})}}A.exports={isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived}},9922:(A,e,t)=>{"use strict";const{webidl:r}=t(3113);const{DOMException:s}=t(5107);const{URLSerializer:o}=t(7691);const{getGlobalOrigin:n}=t(4647);const{staticPropertyDescriptors:i,states:a,opcodes:g,emptyBuffer:c}=t(9812);const{kWebSocketURL:E,kReadyState:Q,kController:C,kBinaryType:B,kResponse:l,kSentClose:I,kByteParser:h}=t(6980);const{isEstablished:u,isClosing:d,isValidSubprotocol:p,failWebsocketConnection:y,fireEvent:w}=t(9853);const{establishWebSocketConnection:R}=t(3901);const{WebsocketFrameSend:m}=t(7012);const{ByteParser:D}=t(2104);const{kEnumerableProperty:k,isBlobLike:b}=t(781);const{getGlobalDispatcher:F}=t(5302);const{types:S}=t(9023);let N=false;class WebSocket extends EventTarget{#E={open:null,error:null,close:null,message:null};#Q=0;#C="";#B="";constructor(A,e=[]){super();r.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"});if(!N){N=true;process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"})}const t=r.converters["DOMString or sequence or WebSocketInit"](e);A=r.converters.USVString(A);e=t.protocols;const o=n();let i;try{i=new URL(A,o)}catch(A){throw new s(A,"SyntaxError")}if(i.protocol==="http:"){i.protocol="ws:"}else if(i.protocol==="https:"){i.protocol="wss:"}if(i.protocol!=="ws:"&&i.protocol!=="wss:"){throw new s(`Expected a ws: or wss: protocol, got ${i.protocol}`,"SyntaxError")}if(i.hash||i.href.endsWith("#")){throw new s("Got fragment","SyntaxError")}if(typeof e==="string"){e=[e]}if(e.length!==new Set(e.map((A=>A.toLowerCase()))).size){throw new s("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(e.length>0&&!e.every((A=>p(A)))){throw new s("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[E]=new URL(i.href);this[C]=R(i,e,this,(A=>this.#l(A)),t);this[Q]=WebSocket.CONNECTING;this[B]="blob"}close(A=undefined,e=undefined){r.brandCheck(this,WebSocket);if(A!==undefined){A=r.converters["unsigned short"](A,{clamp:true})}if(e!==undefined){e=r.converters.USVString(e)}if(A!==undefined){if(A!==1e3&&(A<3e3||A>4999)){throw new s("invalid code","InvalidAccessError")}}let t=0;if(e!==undefined){t=Buffer.byteLength(e);if(t>123){throw new s(`Reason must be less than 123 bytes; received ${t}`,"SyntaxError")}}if(this[Q]===WebSocket.CLOSING||this[Q]===WebSocket.CLOSED){}else if(!u(this)){y(this,"Connection was closed before it was established.");this[Q]=WebSocket.CLOSING}else if(!d(this)){const r=new m;if(A!==undefined&&e===undefined){r.frameData=Buffer.allocUnsafe(2);r.frameData.writeUInt16BE(A,0)}else if(A!==undefined&&e!==undefined){r.frameData=Buffer.allocUnsafe(2+t);r.frameData.writeUInt16BE(A,0);r.frameData.write(e,2,"utf-8")}else{r.frameData=c}const s=this[l].socket;s.write(r.createFrame(g.CLOSE),(A=>{if(!A){this[I]=true}}));this[Q]=a.CLOSING}else{this[Q]=WebSocket.CLOSING}}send(A){r.brandCheck(this,WebSocket);r.argumentLengthCheck(arguments,1,{header:"WebSocket.send"});A=r.converters.WebSocketSendData(A);if(this[Q]===WebSocket.CONNECTING){throw new s("Sent before connected.","InvalidStateError")}if(!u(this)||d(this)){return}const e=this[l].socket;if(typeof A==="string"){const t=Buffer.from(A);const r=new m(t);const s=r.createFrame(g.TEXT);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(S.isArrayBuffer(A)){const t=Buffer.from(A);const r=new m(t);const s=r.createFrame(g.BINARY);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(ArrayBuffer.isView(A)){const t=Buffer.from(A,A.byteOffset,A.byteLength);const r=new m(t);const s=r.createFrame(g.BINARY);this.#Q+=t.byteLength;e.write(s,(()=>{this.#Q-=t.byteLength}))}else if(b(A)){const t=new m;A.arrayBuffer().then((A=>{const r=Buffer.from(A);t.frameData=r;const s=t.createFrame(g.BINARY);this.#Q+=r.byteLength;e.write(s,(()=>{this.#Q-=r.byteLength}))}))}}get readyState(){r.brandCheck(this,WebSocket);return this[Q]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#Q}get url(){r.brandCheck(this,WebSocket);return o(this[E])}get extensions(){r.brandCheck(this,WebSocket);return this.#B}get protocol(){r.brandCheck(this,WebSocket);return this.#C}get onopen(){r.brandCheck(this,WebSocket);return this.#E.open}set onopen(A){r.brandCheck(this,WebSocket);if(this.#E.open){this.removeEventListener("open",this.#E.open)}if(typeof A==="function"){this.#E.open=A;this.addEventListener("open",A)}else{this.#E.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#E.error}set onerror(A){r.brandCheck(this,WebSocket);if(this.#E.error){this.removeEventListener("error",this.#E.error)}if(typeof A==="function"){this.#E.error=A;this.addEventListener("error",A)}else{this.#E.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#E.close}set onclose(A){r.brandCheck(this,WebSocket);if(this.#E.close){this.removeEventListener("close",this.#E.close)}if(typeof A==="function"){this.#E.close=A;this.addEventListener("close",A)}else{this.#E.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#E.message}set onmessage(A){r.brandCheck(this,WebSocket);if(this.#E.message){this.removeEventListener("message",this.#E.message)}if(typeof A==="function"){this.#E.message=A;this.addEventListener("message",A)}else{this.#E.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[B]}set binaryType(A){r.brandCheck(this,WebSocket);if(A!=="blob"&&A!=="arraybuffer"){this[B]="blob"}else{this[B]=A}}#l(A){this[l]=A;const e=new D(this);e.on("drain",(function onParserDrain(){this.ws[l].socket.resume()}));A.socket.ws=this;this[h]=e;this[Q]=a.OPEN;const t=A.headersList.get("sec-websocket-extensions");if(t!==null){this.#B=t}const r=A.headersList.get("sec-websocket-protocol");if(r!==null){this.#C=r}w("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=a.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=a.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=a.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=a.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i,url:k,readyState:k,bufferedAmount:k,onopen:k,onerror:k,onclose:k,close:k,onmessage:k,binaryType:k,send:k,extensions:k,protocol:k,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:i,OPEN:i,CLOSING:i,CLOSED:i});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(A){if(r.util.Type(A)==="Object"&&Symbol.iterator in A){return r.converters["sequence"](A)}return r.converters.DOMString(A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:A=>A,get defaultValue(){return F()}},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(A){if(r.util.Type(A)==="Object"&&!(Symbol.iterator in A)){return r.converters.WebSocketInit(A)}return{protocols:r.converters["DOMString or sequence"](A)}};r.converters.WebSocketSendData=function(A){if(r.util.Type(A)==="Object"){if(b(A)){return r.converters.Blob(A,{strict:false})}if(ArrayBuffer.isView(A)||S.isAnyArrayBuffer(A)){return r.converters.BufferSource(A)}}return r.converters.USVString(A)};A.exports={WebSocket:WebSocket}},5960:(A,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:true});function getUserAgent(){if(typeof navigator==="object"&&"userAgent"in navigator){return navigator.userAgent}if(typeof process==="object"&&"version"in process){return`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`}return""}e.getUserAgent=getUserAgent},9928:A=>{A.exports=wrappy;function wrappy(A,e){if(A&&e)return wrappy(A)(e);if(typeof A!=="function")throw new TypeError("need wrapper function");Object.keys(A).forEach((function(e){wrapper[e]=A[e]}));return wrapper;function wrapper(){var e=new Array(arguments.length);for(var t=0;t{"use strict";A.exports=require("assert")},290:A=>{"use strict";A.exports=require("async_hooks")},181:A=>{"use strict";A.exports=require("buffer")},5317:A=>{"use strict";A.exports=require("child_process")},4236:A=>{"use strict";A.exports=require("console")},6982:A=>{"use strict";A.exports=require("crypto")},1637:A=>{"use strict";A.exports=require("diagnostics_channel")},4434:A=>{"use strict";A.exports=require("events")},9896:A=>{"use strict";A.exports=require("fs")},8611:A=>{"use strict";A.exports=require("http")},5675:A=>{"use strict";A.exports=require("http2")},5692:A=>{"use strict";A.exports=require("https")},9278:A=>{"use strict";A.exports=require("net")},8474:A=>{"use strict";A.exports=require("node:events")},7075:A=>{"use strict";A.exports=require("node:stream")},7975:A=>{"use strict";A.exports=require("node:util")},857:A=>{"use strict";A.exports=require("os")},6928:A=>{"use strict";A.exports=require("path")},2987:A=>{"use strict";A.exports=require("perf_hooks")},3480:A=>{"use strict";A.exports=require("querystring")},2203:A=>{"use strict";A.exports=require("stream")},3774:A=>{"use strict";A.exports=require("stream/web")},3193:A=>{"use strict";A.exports=require("string_decoder")},3557:A=>{"use strict";A.exports=require("timers")},4756:A=>{"use strict";A.exports=require("tls")},7016:A=>{"use strict";A.exports=require("url")},9023:A=>{"use strict";A.exports=require("util")},8253:A=>{"use strict";A.exports=require("util/types")},8167:A=>{"use strict";A.exports=require("worker_threads")},3106:A=>{"use strict";A.exports=require("zlib")},6338:(A,e,t)=>{"use strict";const r=t(7075).Writable;const s=t(7975).inherits;const o=t(3764);const n=t(2720);const i=t(8075);const a=45;const g=Buffer.from("-");const c=Buffer.from("\r\n");const EMPTY_FN=function(){};function Dicer(A){if(!(this instanceof Dicer)){return new Dicer(A)}r.call(this,A);if(!A||!A.headerFirst&&typeof A.boundary!=="string"){throw new TypeError("Boundary required")}if(typeof A.boundary==="string"){this.setBoundary(A.boundary)}else{this._bparser=undefined}this._headerFirst=A.headerFirst;this._dashes=0;this._parts=0;this._finished=false;this._realFinish=false;this._isPreamble=true;this._justMatched=false;this._firstWrite=true;this._inHeader=true;this._part=undefined;this._cb=undefined;this._ignoreData=false;this._partOpts={highWaterMark:A.partHwm};this._pause=false;const e=this;this._hparser=new i(A);this._hparser.on("header",(function(A){e._inHeader=false;e._part.emit("header",A)}))}s(Dicer,r);Dicer.prototype.emit=function(A){if(A==="finish"&&!this._realFinish){if(!this._finished){const A=this;process.nextTick((function(){A.emit("error",new Error("Unexpected end of multipart data"));if(A._part&&!A._ignoreData){const e=A._isPreamble?"Preamble":"Part";A._part.emit("error",new Error(e+" terminated early due to unexpected end of multipart data"));A._part.push(null);process.nextTick((function(){A._realFinish=true;A.emit("finish");A._realFinish=false}));return}A._realFinish=true;A.emit("finish");A._realFinish=false}))}}else{r.prototype.emit.apply(this,arguments)}};Dicer.prototype._write=function(A,e,t){if(!this._hparser&&!this._bparser){return t()}if(this._headerFirst&&this._isPreamble){if(!this._part){this._part=new n(this._partOpts);if(this._events.preamble){this.emit("preamble",this._part)}else{this._ignore()}}const e=this._hparser.push(A);if(!this._inHeader&&e!==undefined&&e{"use strict";const r=t(8474).EventEmitter;const s=t(7975).inherits;const o=t(397);const n=t(3764);const i=Buffer.from("\r\n\r\n");const a=/\r\n/g;const g=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function HeaderParser(A){r.call(this);A=A||{};const e=this;this.nread=0;this.maxed=false;this.npairs=0;this.maxHeaderPairs=o(A,"maxHeaderPairs",2e3);this.maxHeaderSize=o(A,"maxHeaderSize",80*1024);this.buffer="";this.header={};this.finished=false;this.ss=new n(i);this.ss.on("info",(function(A,t,r,s){if(t&&!e.maxed){if(e.nread+s-r>=e.maxHeaderSize){s=e.maxHeaderSize-e.nread+r;e.nread=e.maxHeaderSize;e.maxed=true}else{e.nread+=s-r}e.buffer+=t.toString("binary",r,s)}if(A){e._finish()}}))}s(HeaderParser,r);HeaderParser.prototype.push=function(A){const e=this.ss.push(A);if(this.finished){return e}};HeaderParser.prototype.reset=function(){this.finished=false;this.buffer="";this.header={};this.ss.reset()};HeaderParser.prototype._finish=function(){if(this.buffer){this._parseHeader()}this.ss.matches=this.ss.maxMatches;const A=this.header;this.header={};this.buffer="";this.finished=true;this.nread=this.npairs=0;this.maxed=false;this.emit("header",A)};HeaderParser.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs){return}const A=this.buffer.split(a);const e=A.length;let t,r;for(var s=0;s{"use strict";const r=t(7975).inherits;const s=t(7075).Readable;function PartStream(A){s.call(this,A)}r(PartStream,s);PartStream.prototype._read=function(A){};A.exports=PartStream},3764:(A,e,t)=>{"use strict";const r=t(8474).EventEmitter;const s=t(7975).inherits;function SBMH(A){if(typeof A==="string"){A=Buffer.from(A)}if(!Buffer.isBuffer(A)){throw new TypeError("The needle has to be a String or a Buffer.")}const e=A.length;if(e===0){throw new Error("The needle cannot be an empty String/Buffer.")}if(e>256){throw new Error("The needle cannot have a length bigger than 256.")}this.maxMatches=Infinity;this.matches=0;this._occ=new Array(256).fill(e);this._lookbehind_size=0;this._needle=A;this._bufpos=0;this._lookbehind=Buffer.alloc(e);for(var t=0;t=0){this.emit("info",false,this._lookbehind,0,this._lookbehind_size);this._lookbehind_size=0}else{const t=this._lookbehind_size+o;if(t>0){this.emit("info",false,this._lookbehind,0,t)}this._lookbehind.copy(this._lookbehind,0,t,this._lookbehind_size-t);this._lookbehind_size-=t;A.copy(this._lookbehind,this._lookbehind_size);this._lookbehind_size+=e;this._bufpos=e;return e}}o+=(o>=0)*this._bufpos;if(A.indexOf(t,o)!==-1){o=A.indexOf(t,o);++this.matches;if(o>0){this.emit("info",true,A,this._bufpos,o)}else{this.emit("info",true)}return this._bufpos=o+r}else{o=e-r}while(o0){this.emit("info",false,A,this._bufpos,o{"use strict";const r=t(7075).Writable;const{inherits:s}=t(7975);const o=t(6338);const n=t(7156);const i=t(6931);const a=t(2333);function Busboy(A){if(!(this instanceof Busboy)){return new Busboy(A)}if(typeof A!=="object"){throw new TypeError("Busboy expected an options-Object.")}if(typeof A.headers!=="object"){throw new TypeError("Busboy expected an options-Object with headers-attribute.")}if(typeof A.headers["content-type"]!=="string"){throw new TypeError("Missing Content-Type-header.")}const{headers:e,...t}=A;this.opts={autoDestroy:false,...t};r.call(this,this.opts);this._done=false;this._parser=this.getParserByHeaders(e);this._finished=false}s(Busboy,r);Busboy.prototype.emit=function(A){if(A==="finish"){if(!this._done){this._parser?.end();return}else if(this._finished){return}this._finished=true}r.prototype.emit.apply(this,arguments)};Busboy.prototype.getParserByHeaders=function(A){const e=a(A["content-type"]);const t={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:A,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:e,preservePath:this.opts.preservePath};if(n.detect.test(e[0])){return new n(this,t)}if(i.detect.test(e[0])){return new i(this,t)}throw new Error("Unsupported Content-Type.")};Busboy.prototype._write=function(A,e,t){this._parser.write(A,t)};A.exports=Busboy;A.exports["default"]=Busboy;A.exports.Busboy=Busboy;A.exports.Dicer=o},7156:(A,e,t)=>{"use strict";const{Readable:r}=t(7075);const{inherits:s}=t(7975);const o=t(6338);const n=t(2333);const i=t(543);const a=t(1016);const g=t(397);const c=/^boundary$/i;const E=/^form-data$/i;const Q=/^charset$/i;const C=/^filename$/i;const B=/^name$/i;Multipart.detect=/^multipart\/form-data/i;function Multipart(A,e){let t;let r;const s=this;let l;const I=e.limits;const h=e.isPartAFile||((A,e,t)=>e==="application/octet-stream"||t!==undefined);const u=e.parsedConType||[];const d=e.defCharset||"utf8";const p=e.preservePath;const y={highWaterMark:e.fileHwm};for(t=0,r=u.length;tk){s.parser.removeListener("part",onPart);s.parser.on("part",skipPart);A.hitPartsLimit=true;A.emit("partsLimit");return skipPart(e)}if(L){const A=L;A.emit("end");A.removeAllListeners("end")}e.on("header",(function(o){let g;let c;let l;let I;let u;let k;let b=0;if(o["content-type"]){l=n(o["content-type"][0]);if(l[0]){g=l[0].toLowerCase();for(t=0,r=l.length;tR){const r=R-b+A.length;if(r>0){t.push(A.slice(0,r))}t.truncated=true;t.bytesRead=R;e.removeAllListeners("data");t.emit("limit");return}else if(!t.push(A)){s._pause=true}t.bytesRead=b};M=function(){T=undefined;t.push(null)}}else{if(N===D){if(!A.hitFieldsLimit){A.hitFieldsLimit=true;A.emit("fieldsLimit")}return skipPart(e)}++N;++U;let t="";let r=false;L=e;F=function(A){if((b+=A.length)>w){const s=w-(b-A.length);t+=A.toString("binary",0,s);r=true;e.removeAllListeners("data")}else{t+=A.toString("binary")}};M=function(){L=undefined;if(t.length){t=i(t,"binary",I)}A.emit("field",c,t,false,r,u,g);--U;checkFinished()}}e._readableState.sync=false;e.on("data",F);e.on("end",M)})).on("error",(function(A){if(T){T.emit("error",A)}}))})).on("error",(function(e){A.emit("error",e)})).on("finish",(function(){M=true;checkFinished()}))}Multipart.prototype.write=function(A,e){const t=this.parser.write(A);if(t&&!this._pause){e()}else{this._needDrain=!t;this._cb=e}};Multipart.prototype.end=function(){const A=this;if(A.parser.writable){A.parser.end()}else if(!A._boy._done){process.nextTick((function(){A._boy._done=true;A._boy.emit("finish")}))}};function skipPart(A){A.resume()}function FileStream(A){r.call(this,A);this.bytesRead=0;this.truncated=false}s(FileStream,r);FileStream.prototype._read=function(A){};A.exports=Multipart},6931:(A,e,t)=>{"use strict";const r=t(1100);const s=t(543);const o=t(397);const n=/^charset$/i;UrlEncoded.detect=/^application\/x-www-form-urlencoded/i;function UrlEncoded(A,e){const t=e.limits;const s=e.parsedConType;this.boy=A;this.fieldSizeLimit=o(t,"fieldSize",1*1024*1024);this.fieldNameSizeLimit=o(t,"fieldNameSize",100);this.fieldsLimit=o(t,"fields",Infinity);let i;for(var a=0,g=s.length;an){this._key+=this.decoder.write(A.toString("binary",n,t))}this._state="val";this._hitLimit=false;this._checkingBytes=true;this._val="";this._bytesVal=0;this._valTrunc=false;this.decoder.reset();n=t+1}else if(r!==undefined){++this._fields;let t;const o=this._keyTrunc;if(r>n){t=this._key+=this.decoder.write(A.toString("binary",n,r))}else{t=this._key}this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();if(t.length){this.boy.emit("field",s(t,"binary",this.charset),"",o,false)}n=r+1;if(this._fields===this.fieldsLimit){return e()}}else if(this._hitLimit){if(o>n){this._key+=this.decoder.write(A.toString("binary",n,o))}n=o;if((this._bytesKey=this._key.length)===this.fieldNameSizeLimit){this._checkingBytes=false;this._keyTrunc=true}}else{if(nn){this._val+=this.decoder.write(A.toString("binary",n,r))}this.boy.emit("field",s(this._key,"binary",this.charset),s(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc);this._state="key";this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();n=r+1;if(this._fields===this.fieldsLimit){return e()}}else if(this._hitLimit){if(o>n){this._val+=this.decoder.write(A.toString("binary",n,o))}n=o;if(this._val===""&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit){this._checkingBytes=false;this._valTrunc=true}}else{if(n0){this.boy.emit("field",s(this._key,"binary",this.charset),"",this._keyTrunc,false)}else if(this._state==="val"){this.boy.emit("field",s(this._key,"binary",this.charset),s(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc)}this.boy._done=true;this.boy.emit("finish")};A.exports=UrlEncoded},1100:A=>{"use strict";const e=/\+/g;const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function Decoder(){this.buffer=undefined}Decoder.prototype.write=function(A){A=A.replace(e," ");let r="";let s=0;let o=0;const n=A.length;for(;so){r+=A.substring(o,s);o=s}this.buffer="";++o}}if(o{"use strict";A.exports=function basename(A){if(typeof A!=="string"){return""}for(var e=A.length-1;e>=0;--e){switch(A.charCodeAt(e)){case 47:case 92:A=A.slice(e+1);return A===".."||A==="."?"":A}}return A===".."||A==="."?"":A}},543:function(A){"use strict";const e=new TextDecoder("utf-8");const t=new Map([["utf-8",e],["utf8",e]]);function getDecoder(A){let e;while(true){switch(A){case"utf-8":case"utf8":return r.utf8;case"latin1":case"ascii":case"us-ascii":case"iso-8859-1":case"iso8859-1":case"iso88591":case"iso_8859-1":case"windows-1252":case"iso_8859-1:1987":case"cp1252":case"x-cp1252":return r.latin1;case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return r.utf16le;case"base64":return r.base64;default:if(e===undefined){e=true;A=A.toLowerCase();continue}return r.other.bind(A)}}}const r={utf8:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.utf8Slice(0,A.length)},latin1:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){return A}return A.latin1Slice(0,A.length)},utf16le:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.ucs2Slice(0,A.length)},base64:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.base64Slice(0,A.length)},other:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}if(t.has(this.toString())){try{return t.get(this).decode(A)}catch(A){}}return typeof A==="string"?A:A.toString()}};function decodeText(A,e,t){if(A){return getDecoder(t)(A,e)}return A}A.exports=decodeText},397:A=>{"use strict";A.exports=function getLimit(A,e,t){if(!A||A[e]===undefined||A[e]===null){return t}if(typeof A[e]!=="number"||isNaN(A[e])){throw new TypeError("Limit "+e+" is not a valid number")}return A[e]}},2333:(A,e,t)=>{"use strict";const r=t(543);const s=/%[a-fA-F0-9][a-fA-F0-9]/g;const o={"%00":"\0","%01":"","%02":"","%03":"","%04":"","%05":"","%06":"","%07":"","%08":"\b","%09":"\t","%0a":"\n","%0A":"\n","%0b":"\v","%0B":"\v","%0c":"\f","%0C":"\f","%0d":"\r","%0D":"\r","%0e":"","%0E":"","%0f":"","%0F":"","%10":"","%11":"","%12":"","%13":"","%14":"","%15":"","%16":"","%17":"","%18":"","%19":"","%1a":"","%1A":"","%1b":"","%1B":"","%1c":"","%1C":"","%1d":"","%1D":"","%1e":"","%1E":"","%1f":"","%1F":"","%20":" ","%21":"!","%22":'"',"%23":"#","%24":"$","%25":"%","%26":"&","%27":"'","%28":"(","%29":")","%2a":"*","%2A":"*","%2b":"+","%2B":"+","%2c":",","%2C":",","%2d":"-","%2D":"-","%2e":".","%2E":".","%2f":"/","%2F":"/","%30":"0","%31":"1","%32":"2","%33":"3","%34":"4","%35":"5","%36":"6","%37":"7","%38":"8","%39":"9","%3a":":","%3A":":","%3b":";","%3B":";","%3c":"<","%3C":"<","%3d":"=","%3D":"=","%3e":">","%3E":">","%3f":"?","%3F":"?","%40":"@","%41":"A","%42":"B","%43":"C","%44":"D","%45":"E","%46":"F","%47":"G","%48":"H","%49":"I","%4a":"J","%4A":"J","%4b":"K","%4B":"K","%4c":"L","%4C":"L","%4d":"M","%4D":"M","%4e":"N","%4E":"N","%4f":"O","%4F":"O","%50":"P","%51":"Q","%52":"R","%53":"S","%54":"T","%55":"U","%56":"V","%57":"W","%58":"X","%59":"Y","%5a":"Z","%5A":"Z","%5b":"[","%5B":"[","%5c":"\\","%5C":"\\","%5d":"]","%5D":"]","%5e":"^","%5E":"^","%5f":"_","%5F":"_","%60":"`","%61":"a","%62":"b","%63":"c","%64":"d","%65":"e","%66":"f","%67":"g","%68":"h","%69":"i","%6a":"j","%6A":"j","%6b":"k","%6B":"k","%6c":"l","%6C":"l","%6d":"m","%6D":"m","%6e":"n","%6E":"n","%6f":"o","%6F":"o","%70":"p","%71":"q","%72":"r","%73":"s","%74":"t","%75":"u","%76":"v","%77":"w","%78":"x","%79":"y","%7a":"z","%7A":"z","%7b":"{","%7B":"{","%7c":"|","%7C":"|","%7d":"}","%7D":"}","%7e":"~","%7E":"~","%7f":"","%7F":"","%80":"€","%81":"","%82":"‚","%83":"ƒ","%84":"„","%85":"…","%86":"†","%87":"‡","%88":"ˆ","%89":"‰","%8a":"Š","%8A":"Š","%8b":"‹","%8B":"‹","%8c":"Œ","%8C":"Œ","%8d":"","%8D":"","%8e":"Ž","%8E":"Ž","%8f":"","%8F":"","%90":"","%91":"‘","%92":"’","%93":"“","%94":"”","%95":"•","%96":"–","%97":"—","%98":"˜","%99":"™","%9a":"š","%9A":"š","%9b":"›","%9B":"›","%9c":"œ","%9C":"œ","%9d":"","%9D":"","%9e":"ž","%9E":"ž","%9f":"Ÿ","%9F":"Ÿ","%a0":" ","%A0":" ","%a1":"¡","%A1":"¡","%a2":"¢","%A2":"¢","%a3":"£","%A3":"£","%a4":"¤","%A4":"¤","%a5":"¥","%A5":"¥","%a6":"¦","%A6":"¦","%a7":"§","%A7":"§","%a8":"¨","%A8":"¨","%a9":"©","%A9":"©","%aa":"ª","%Aa":"ª","%aA":"ª","%AA":"ª","%ab":"«","%Ab":"«","%aB":"«","%AB":"«","%ac":"¬","%Ac":"¬","%aC":"¬","%AC":"¬","%ad":"­","%Ad":"­","%aD":"­","%AD":"­","%ae":"®","%Ae":"®","%aE":"®","%AE":"®","%af":"¯","%Af":"¯","%aF":"¯","%AF":"¯","%b0":"°","%B0":"°","%b1":"±","%B1":"±","%b2":"²","%B2":"²","%b3":"³","%B3":"³","%b4":"´","%B4":"´","%b5":"µ","%B5":"µ","%b6":"¶","%B6":"¶","%b7":"·","%B7":"·","%b8":"¸","%B8":"¸","%b9":"¹","%B9":"¹","%ba":"º","%Ba":"º","%bA":"º","%BA":"º","%bb":"»","%Bb":"»","%bB":"»","%BB":"»","%bc":"¼","%Bc":"¼","%bC":"¼","%BC":"¼","%bd":"½","%Bd":"½","%bD":"½","%BD":"½","%be":"¾","%Be":"¾","%bE":"¾","%BE":"¾","%bf":"¿","%Bf":"¿","%bF":"¿","%BF":"¿","%c0":"À","%C0":"À","%c1":"Á","%C1":"Á","%c2":"Â","%C2":"Â","%c3":"Ã","%C3":"Ã","%c4":"Ä","%C4":"Ä","%c5":"Å","%C5":"Å","%c6":"Æ","%C6":"Æ","%c7":"Ç","%C7":"Ç","%c8":"È","%C8":"È","%c9":"É","%C9":"É","%ca":"Ê","%Ca":"Ê","%cA":"Ê","%CA":"Ê","%cb":"Ë","%Cb":"Ë","%cB":"Ë","%CB":"Ë","%cc":"Ì","%Cc":"Ì","%cC":"Ì","%CC":"Ì","%cd":"Í","%Cd":"Í","%cD":"Í","%CD":"Í","%ce":"Î","%Ce":"Î","%cE":"Î","%CE":"Î","%cf":"Ï","%Cf":"Ï","%cF":"Ï","%CF":"Ï","%d0":"Ð","%D0":"Ð","%d1":"Ñ","%D1":"Ñ","%d2":"Ò","%D2":"Ò","%d3":"Ó","%D3":"Ó","%d4":"Ô","%D4":"Ô","%d5":"Õ","%D5":"Õ","%d6":"Ö","%D6":"Ö","%d7":"×","%D7":"×","%d8":"Ø","%D8":"Ø","%d9":"Ù","%D9":"Ù","%da":"Ú","%Da":"Ú","%dA":"Ú","%DA":"Ú","%db":"Û","%Db":"Û","%dB":"Û","%DB":"Û","%dc":"Ü","%Dc":"Ü","%dC":"Ü","%DC":"Ü","%dd":"Ý","%Dd":"Ý","%dD":"Ý","%DD":"Ý","%de":"Þ","%De":"Þ","%dE":"Þ","%DE":"Þ","%df":"ß","%Df":"ß","%dF":"ß","%DF":"ß","%e0":"à","%E0":"à","%e1":"á","%E1":"á","%e2":"â","%E2":"â","%e3":"ã","%E3":"ã","%e4":"ä","%E4":"ä","%e5":"å","%E5":"å","%e6":"æ","%E6":"æ","%e7":"ç","%E7":"ç","%e8":"è","%E8":"è","%e9":"é","%E9":"é","%ea":"ê","%Ea":"ê","%eA":"ê","%EA":"ê","%eb":"ë","%Eb":"ë","%eB":"ë","%EB":"ë","%ec":"ì","%Ec":"ì","%eC":"ì","%EC":"ì","%ed":"í","%Ed":"í","%eD":"í","%ED":"í","%ee":"î","%Ee":"î","%eE":"î","%EE":"î","%ef":"ï","%Ef":"ï","%eF":"ï","%EF":"ï","%f0":"ð","%F0":"ð","%f1":"ñ","%F1":"ñ","%f2":"ò","%F2":"ò","%f3":"ó","%F3":"ó","%f4":"ô","%F4":"ô","%f5":"õ","%F5":"õ","%f6":"ö","%F6":"ö","%f7":"÷","%F7":"÷","%f8":"ø","%F8":"ø","%f9":"ù","%F9":"ù","%fa":"ú","%Fa":"ú","%fA":"ú","%FA":"ú","%fb":"û","%Fb":"û","%fB":"û","%FB":"û","%fc":"ü","%Fc":"ü","%fC":"ü","%FC":"ü","%fd":"ý","%Fd":"ý","%fD":"ý","%FD":"ý","%fe":"þ","%Fe":"þ","%fE":"þ","%FE":"þ","%ff":"ÿ","%Ff":"ÿ","%fF":"ÿ","%FF":"ÿ"};function encodedReplacer(A){return o[A]}const n=0;const i=1;const a=2;const g=3;function parseParams(A){const e=[];let t=n;let o="";let c=false;let E=false;let Q=0;let C="";const B=A.length;for(var l=0;l{"use strict";const r=t(7075).Writable;const s=t(7975).inherits;const o=t(6483);const n=t(649);const i=t(4502);const a=45;const g=Buffer.from("-");const c=Buffer.from("\r\n");const EMPTY_FN=function(){};function Dicer(A){if(!(this instanceof Dicer)){return new Dicer(A)}r.call(this,A);if(!A||!A.headerFirst&&typeof A.boundary!=="string"){throw new TypeError("Boundary required")}if(typeof A.boundary==="string"){this.setBoundary(A.boundary)}else{this._bparser=undefined}this._headerFirst=A.headerFirst;this._dashes=0;this._parts=0;this._finished=false;this._realFinish=false;this._isPreamble=true;this._justMatched=false;this._firstWrite=true;this._inHeader=true;this._part=undefined;this._cb=undefined;this._ignoreData=false;this._partOpts={highWaterMark:A.partHwm};this._pause=false;const e=this;this._hparser=new i(A);this._hparser.on("header",(function(A){e._inHeader=false;e._part.emit("header",A)}))}s(Dicer,r);Dicer.prototype.emit=function(A){if(A==="finish"&&!this._realFinish){if(!this._finished){const A=this;process.nextTick((function(){A.emit("error",new Error("Unexpected end of multipart data"));if(A._part&&!A._ignoreData){const e=A._isPreamble?"Preamble":"Part";A._part.emit("error",new Error(e+" terminated early due to unexpected end of multipart data"));A._part.push(null);process.nextTick((function(){A._realFinish=true;A.emit("finish");A._realFinish=false}));return}A._realFinish=true;A.emit("finish");A._realFinish=false}))}}else{r.prototype.emit.apply(this,arguments)}};Dicer.prototype._write=function(A,e,t){if(!this._hparser&&!this._bparser){return t()}if(this._headerFirst&&this._isPreamble){if(!this._part){this._part=new n(this._partOpts);if(this.listenerCount("preamble")!==0){this.emit("preamble",this._part)}else{this._ignore()}}const e=this._hparser.push(A);if(!this._inHeader&&e!==undefined&&e{"use strict";const r=t(8474).EventEmitter;const s=t(7975).inherits;const o=t(182);const n=t(6483);const i=Buffer.from("\r\n\r\n");const a=/\r\n/g;const g=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function HeaderParser(A){r.call(this);A=A||{};const e=this;this.nread=0;this.maxed=false;this.npairs=0;this.maxHeaderPairs=o(A,"maxHeaderPairs",2e3);this.maxHeaderSize=o(A,"maxHeaderSize",80*1024);this.buffer="";this.header={};this.finished=false;this.ss=new n(i);this.ss.on("info",(function(A,t,r,s){if(t&&!e.maxed){if(e.nread+s-r>=e.maxHeaderSize){s=e.maxHeaderSize-e.nread+r;e.nread=e.maxHeaderSize;e.maxed=true}else{e.nread+=s-r}e.buffer+=t.toString("binary",r,s)}if(A){e._finish()}}))}s(HeaderParser,r);HeaderParser.prototype.push=function(A){const e=this.ss.push(A);if(this.finished){return e}};HeaderParser.prototype.reset=function(){this.finished=false;this.buffer="";this.header={};this.ss.reset()};HeaderParser.prototype._finish=function(){if(this.buffer){this._parseHeader()}this.ss.matches=this.ss.maxMatches;const A=this.header;this.header={};this.buffer="";this.finished=true;this.nread=this.npairs=0;this.maxed=false;this.emit("header",A)};HeaderParser.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs){return}const A=this.buffer.split(a);const e=A.length;let t,r;for(var s=0;s{"use strict";const r=t(7975).inherits;const s=t(7075).Readable;function PartStream(A){s.call(this,A)}r(PartStream,s);PartStream.prototype._read=function(A){};A.exports=PartStream},6483:(A,e,t)=>{"use strict";const r=t(8474).EventEmitter;const s=t(7975).inherits;function SBMH(A){if(typeof A==="string"){A=Buffer.from(A)}if(!Buffer.isBuffer(A)){throw new TypeError("The needle has to be a String or a Buffer.")}const e=A.length;if(e===0){throw new Error("The needle cannot be an empty String/Buffer.")}if(e>256){throw new Error("The needle cannot have a length bigger than 256.")}this.maxMatches=Infinity;this.matches=0;this._occ=new Array(256).fill(e);this._lookbehind_size=0;this._needle=A;this._bufpos=0;this._lookbehind=Buffer.alloc(e);for(var t=0;t=0){this.emit("info",false,this._lookbehind,0,this._lookbehind_size);this._lookbehind_size=0}else{const t=this._lookbehind_size+o;if(t>0){this.emit("info",false,this._lookbehind,0,t)}this._lookbehind.copy(this._lookbehind,0,t,this._lookbehind_size-t);this._lookbehind_size-=t;A.copy(this._lookbehind,this._lookbehind_size);this._lookbehind_size+=e;this._bufpos=e;return e}}o+=(o>=0)*this._bufpos;if(A.indexOf(t,o)!==-1){o=A.indexOf(t,o);++this.matches;if(o>0){this.emit("info",true,A,this._bufpos,o)}else{this.emit("info",true)}return this._bufpos=o+r}else{o=e-r}while(o0){this.emit("info",false,A,this._bufpos,o{"use strict";const r=t(7075).Writable;const{inherits:s}=t(7975);const o=t(953);const n=t(5501);const i=t(9448);const a=t(4504);function Busboy(A){if(!(this instanceof Busboy)){return new Busboy(A)}if(typeof A!=="object"){throw new TypeError("Busboy expected an options-Object.")}if(typeof A.headers!=="object"){throw new TypeError("Busboy expected an options-Object with headers-attribute.")}if(typeof A.headers["content-type"]!=="string"){throw new TypeError("Missing Content-Type-header.")}const{headers:e,...t}=A;this.opts={autoDestroy:false,...t};r.call(this,this.opts);this._done=false;this._parser=this.getParserByHeaders(e);this._finished=false}s(Busboy,r);Busboy.prototype.emit=function(A){if(A==="finish"){if(!this._done){this._parser?.end();return}else if(this._finished){return}this._finished=true}r.prototype.emit.apply(this,arguments)};Busboy.prototype.getParserByHeaders=function(A){const e=a(A["content-type"]);const t={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:A,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:e,preservePath:this.opts.preservePath};if(n.detect.test(e[0])){return new n(this,t)}if(i.detect.test(e[0])){return new i(this,t)}throw new Error("Unsupported Content-Type.")};Busboy.prototype._write=function(A,e,t){this._parser.write(A,t)};A.exports=Busboy;A.exports["default"]=Busboy;A.exports.Busboy=Busboy;A.exports.Dicer=o},5501:(A,e,t)=>{"use strict";const{Readable:r}=t(7075);const{inherits:s}=t(7975);const o=t(953);const n=t(4504);const i=t(9328);const a=t(3131);const g=t(182);const c=/^boundary$/i;const E=/^form-data$/i;const Q=/^charset$/i;const C=/^filename$/i;const B=/^name$/i;Multipart.detect=/^multipart\/form-data/i;function Multipart(A,e){let t;let r;const s=this;let l;const I=e.limits;const h=e.isPartAFile||((A,e,t)=>e==="application/octet-stream"||t!==undefined);const u=e.parsedConType||[];const d=e.defCharset||"utf8";const p=e.preservePath;const y={highWaterMark:e.fileHwm};for(t=0,r=u.length;tk){s.parser.removeListener("part",onPart);s.parser.on("part",skipPart);A.hitPartsLimit=true;A.emit("partsLimit");return skipPart(e)}if(L){const A=L;A.emit("end");A.removeAllListeners("end")}e.on("header",(function(o){let g;let c;let l;let I;let u;let k;let b=0;if(o["content-type"]){l=n(o["content-type"][0]);if(l[0]){g=l[0].toLowerCase();for(t=0,r=l.length;tR){const r=R-b+A.length;if(r>0){t.push(A.slice(0,r))}t.truncated=true;t.bytesRead=R;e.removeAllListeners("data");t.emit("limit");return}else if(!t.push(A)){s._pause=true}t.bytesRead=b};M=function(){T=undefined;t.push(null)}}else{if(N===D){if(!A.hitFieldsLimit){A.hitFieldsLimit=true;A.emit("fieldsLimit")}return skipPart(e)}++N;++U;let t="";let r=false;L=e;F=function(A){if((b+=A.length)>w){const s=w-(b-A.length);t+=A.toString("binary",0,s);r=true;e.removeAllListeners("data")}else{t+=A.toString("binary")}};M=function(){L=undefined;if(t.length){t=i(t,"binary",I)}A.emit("field",c,t,false,r,u,g);--U;checkFinished()}}e._readableState.sync=false;e.on("data",F);e.on("end",M)})).on("error",(function(A){if(T){T.emit("error",A)}}))})).on("error",(function(e){A.emit("error",e)})).on("finish",(function(){M=true;checkFinished()}))}Multipart.prototype.write=function(A,e){const t=this.parser.write(A);if(t&&!this._pause){e()}else{this._needDrain=!t;this._cb=e}};Multipart.prototype.end=function(){const A=this;if(A.parser.writable){A.parser.end()}else if(!A._boy._done){process.nextTick((function(){A._boy._done=true;A._boy.emit("finish")}))}};function skipPart(A){A.resume()}function FileStream(A){r.call(this,A);this.bytesRead=0;this.truncated=false}s(FileStream,r);FileStream.prototype._read=function(A){};A.exports=Multipart},9448:(A,e,t)=>{"use strict";const r=t(9037);const s=t(9328);const o=t(182);const n=/^charset$/i;UrlEncoded.detect=/^application\/x-www-form-urlencoded/i;function UrlEncoded(A,e){const t=e.limits;const s=e.parsedConType;this.boy=A;this.fieldSizeLimit=o(t,"fieldSize",1*1024*1024);this.fieldNameSizeLimit=o(t,"fieldNameSize",100);this.fieldsLimit=o(t,"fields",Infinity);let i;for(var a=0,g=s.length;an){this._key+=this.decoder.write(A.toString("binary",n,t))}this._state="val";this._hitLimit=false;this._checkingBytes=true;this._val="";this._bytesVal=0;this._valTrunc=false;this.decoder.reset();n=t+1}else if(r!==undefined){++this._fields;let t;const o=this._keyTrunc;if(r>n){t=this._key+=this.decoder.write(A.toString("binary",n,r))}else{t=this._key}this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();if(t.length){this.boy.emit("field",s(t,"binary",this.charset),"",o,false)}n=r+1;if(this._fields===this.fieldsLimit){return e()}}else if(this._hitLimit){if(o>n){this._key+=this.decoder.write(A.toString("binary",n,o))}n=o;if((this._bytesKey=this._key.length)===this.fieldNameSizeLimit){this._checkingBytes=false;this._keyTrunc=true}}else{if(nn){this._val+=this.decoder.write(A.toString("binary",n,r))}this.boy.emit("field",s(this._key,"binary",this.charset),s(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc);this._state="key";this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();n=r+1;if(this._fields===this.fieldsLimit){return e()}}else if(this._hitLimit){if(o>n){this._val+=this.decoder.write(A.toString("binary",n,o))}n=o;if(this._val===""&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit){this._checkingBytes=false;this._valTrunc=true}}else{if(n0){this.boy.emit("field",s(this._key,"binary",this.charset),"",this._keyTrunc,false)}else if(this._state==="val"){this.boy.emit("field",s(this._key,"binary",this.charset),s(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc)}this.boy._done=true;this.boy.emit("finish")};A.exports=UrlEncoded},9037:A=>{"use strict";const e=/\+/g;const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function Decoder(){this.buffer=undefined}Decoder.prototype.write=function(A){A=A.replace(e," ");let r="";let s=0;let o=0;const n=A.length;for(;so){r+=A.substring(o,s);o=s}this.buffer="";++o}}if(o{"use strict";A.exports=function basename(A){if(typeof A!=="string"){return""}for(var e=A.length-1;e>=0;--e){switch(A.charCodeAt(e)){case 47:case 92:A=A.slice(e+1);return A===".."||A==="."?"":A}}return A===".."||A==="."?"":A}},9328:function(A){"use strict";const e=new TextDecoder("utf-8");const t=new Map([["utf-8",e],["utf8",e]]);function getDecoder(A){let e;while(true){switch(A){case"utf-8":case"utf8":return r.utf8;case"latin1":case"ascii":case"us-ascii":case"iso-8859-1":case"iso8859-1":case"iso88591":case"iso_8859-1":case"windows-1252":case"iso_8859-1:1987":case"cp1252":case"x-cp1252":return r.latin1;case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return r.utf16le;case"base64":return r.base64;default:if(e===undefined){e=true;A=A.toLowerCase();continue}return r.other.bind(A)}}}const r={utf8:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.utf8Slice(0,A.length)},latin1:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){return A}return A.latin1Slice(0,A.length)},utf16le:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.ucs2Slice(0,A.length)},base64:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}return A.base64Slice(0,A.length)},other:(A,e)=>{if(A.length===0){return""}if(typeof A==="string"){A=Buffer.from(A,e)}if(t.has(this.toString())){try{return t.get(this).decode(A)}catch{}}return typeof A==="string"?A:A.toString()}};function decodeText(A,e,t){if(A){return getDecoder(t)(A,e)}return A}A.exports=decodeText},182:A=>{"use strict";A.exports=function getLimit(A,e,t){if(!A||A[e]===undefined||A[e]===null){return t}if(typeof A[e]!=="number"||isNaN(A[e])){throw new TypeError("Limit "+e+" is not a valid number")}return A[e]}},4504:(A,e,t)=>{"use strict";const r=t(9328);const s=/%[a-fA-F0-9][a-fA-F0-9]/g;const o={"%00":"\0","%01":"","%02":"","%03":"","%04":"","%05":"","%06":"","%07":"","%08":"\b","%09":"\t","%0a":"\n","%0A":"\n","%0b":"\v","%0B":"\v","%0c":"\f","%0C":"\f","%0d":"\r","%0D":"\r","%0e":"","%0E":"","%0f":"","%0F":"","%10":"","%11":"","%12":"","%13":"","%14":"","%15":"","%16":"","%17":"","%18":"","%19":"","%1a":"","%1A":"","%1b":"","%1B":"","%1c":"","%1C":"","%1d":"","%1D":"","%1e":"","%1E":"","%1f":"","%1F":"","%20":" ","%21":"!","%22":'"',"%23":"#","%24":"$","%25":"%","%26":"&","%27":"'","%28":"(","%29":")","%2a":"*","%2A":"*","%2b":"+","%2B":"+","%2c":",","%2C":",","%2d":"-","%2D":"-","%2e":".","%2E":".","%2f":"/","%2F":"/","%30":"0","%31":"1","%32":"2","%33":"3","%34":"4","%35":"5","%36":"6","%37":"7","%38":"8","%39":"9","%3a":":","%3A":":","%3b":";","%3B":";","%3c":"<","%3C":"<","%3d":"=","%3D":"=","%3e":">","%3E":">","%3f":"?","%3F":"?","%40":"@","%41":"A","%42":"B","%43":"C","%44":"D","%45":"E","%46":"F","%47":"G","%48":"H","%49":"I","%4a":"J","%4A":"J","%4b":"K","%4B":"K","%4c":"L","%4C":"L","%4d":"M","%4D":"M","%4e":"N","%4E":"N","%4f":"O","%4F":"O","%50":"P","%51":"Q","%52":"R","%53":"S","%54":"T","%55":"U","%56":"V","%57":"W","%58":"X","%59":"Y","%5a":"Z","%5A":"Z","%5b":"[","%5B":"[","%5c":"\\","%5C":"\\","%5d":"]","%5D":"]","%5e":"^","%5E":"^","%5f":"_","%5F":"_","%60":"`","%61":"a","%62":"b","%63":"c","%64":"d","%65":"e","%66":"f","%67":"g","%68":"h","%69":"i","%6a":"j","%6A":"j","%6b":"k","%6B":"k","%6c":"l","%6C":"l","%6d":"m","%6D":"m","%6e":"n","%6E":"n","%6f":"o","%6F":"o","%70":"p","%71":"q","%72":"r","%73":"s","%74":"t","%75":"u","%76":"v","%77":"w","%78":"x","%79":"y","%7a":"z","%7A":"z","%7b":"{","%7B":"{","%7c":"|","%7C":"|","%7d":"}","%7D":"}","%7e":"~","%7E":"~","%7f":"","%7F":"","%80":"€","%81":"","%82":"‚","%83":"ƒ","%84":"„","%85":"…","%86":"†","%87":"‡","%88":"ˆ","%89":"‰","%8a":"Š","%8A":"Š","%8b":"‹","%8B":"‹","%8c":"Œ","%8C":"Œ","%8d":"","%8D":"","%8e":"Ž","%8E":"Ž","%8f":"","%8F":"","%90":"","%91":"‘","%92":"’","%93":"“","%94":"”","%95":"•","%96":"–","%97":"—","%98":"˜","%99":"™","%9a":"š","%9A":"š","%9b":"›","%9B":"›","%9c":"œ","%9C":"œ","%9d":"","%9D":"","%9e":"ž","%9E":"ž","%9f":"Ÿ","%9F":"Ÿ","%a0":" ","%A0":" ","%a1":"¡","%A1":"¡","%a2":"¢","%A2":"¢","%a3":"£","%A3":"£","%a4":"¤","%A4":"¤","%a5":"¥","%A5":"¥","%a6":"¦","%A6":"¦","%a7":"§","%A7":"§","%a8":"¨","%A8":"¨","%a9":"©","%A9":"©","%aa":"ª","%Aa":"ª","%aA":"ª","%AA":"ª","%ab":"«","%Ab":"«","%aB":"«","%AB":"«","%ac":"¬","%Ac":"¬","%aC":"¬","%AC":"¬","%ad":"­","%Ad":"­","%aD":"­","%AD":"­","%ae":"®","%Ae":"®","%aE":"®","%AE":"®","%af":"¯","%Af":"¯","%aF":"¯","%AF":"¯","%b0":"°","%B0":"°","%b1":"±","%B1":"±","%b2":"²","%B2":"²","%b3":"³","%B3":"³","%b4":"´","%B4":"´","%b5":"µ","%B5":"µ","%b6":"¶","%B6":"¶","%b7":"·","%B7":"·","%b8":"¸","%B8":"¸","%b9":"¹","%B9":"¹","%ba":"º","%Ba":"º","%bA":"º","%BA":"º","%bb":"»","%Bb":"»","%bB":"»","%BB":"»","%bc":"¼","%Bc":"¼","%bC":"¼","%BC":"¼","%bd":"½","%Bd":"½","%bD":"½","%BD":"½","%be":"¾","%Be":"¾","%bE":"¾","%BE":"¾","%bf":"¿","%Bf":"¿","%bF":"¿","%BF":"¿","%c0":"À","%C0":"À","%c1":"Á","%C1":"Á","%c2":"Â","%C2":"Â","%c3":"Ã","%C3":"Ã","%c4":"Ä","%C4":"Ä","%c5":"Å","%C5":"Å","%c6":"Æ","%C6":"Æ","%c7":"Ç","%C7":"Ç","%c8":"È","%C8":"È","%c9":"É","%C9":"É","%ca":"Ê","%Ca":"Ê","%cA":"Ê","%CA":"Ê","%cb":"Ë","%Cb":"Ë","%cB":"Ë","%CB":"Ë","%cc":"Ì","%Cc":"Ì","%cC":"Ì","%CC":"Ì","%cd":"Í","%Cd":"Í","%cD":"Í","%CD":"Í","%ce":"Î","%Ce":"Î","%cE":"Î","%CE":"Î","%cf":"Ï","%Cf":"Ï","%cF":"Ï","%CF":"Ï","%d0":"Ð","%D0":"Ð","%d1":"Ñ","%D1":"Ñ","%d2":"Ò","%D2":"Ò","%d3":"Ó","%D3":"Ó","%d4":"Ô","%D4":"Ô","%d5":"Õ","%D5":"Õ","%d6":"Ö","%D6":"Ö","%d7":"×","%D7":"×","%d8":"Ø","%D8":"Ø","%d9":"Ù","%D9":"Ù","%da":"Ú","%Da":"Ú","%dA":"Ú","%DA":"Ú","%db":"Û","%Db":"Û","%dB":"Û","%DB":"Û","%dc":"Ü","%Dc":"Ü","%dC":"Ü","%DC":"Ü","%dd":"Ý","%Dd":"Ý","%dD":"Ý","%DD":"Ý","%de":"Þ","%De":"Þ","%dE":"Þ","%DE":"Þ","%df":"ß","%Df":"ß","%dF":"ß","%DF":"ß","%e0":"à","%E0":"à","%e1":"á","%E1":"á","%e2":"â","%E2":"â","%e3":"ã","%E3":"ã","%e4":"ä","%E4":"ä","%e5":"å","%E5":"å","%e6":"æ","%E6":"æ","%e7":"ç","%E7":"ç","%e8":"è","%E8":"è","%e9":"é","%E9":"é","%ea":"ê","%Ea":"ê","%eA":"ê","%EA":"ê","%eb":"ë","%Eb":"ë","%eB":"ë","%EB":"ë","%ec":"ì","%Ec":"ì","%eC":"ì","%EC":"ì","%ed":"í","%Ed":"í","%eD":"í","%ED":"í","%ee":"î","%Ee":"î","%eE":"î","%EE":"î","%ef":"ï","%Ef":"ï","%eF":"ï","%EF":"ï","%f0":"ð","%F0":"ð","%f1":"ñ","%F1":"ñ","%f2":"ò","%F2":"ò","%f3":"ó","%F3":"ó","%f4":"ô","%F4":"ô","%f5":"õ","%F5":"õ","%f6":"ö","%F6":"ö","%f7":"÷","%F7":"÷","%f8":"ø","%F8":"ø","%f9":"ù","%F9":"ù","%fa":"ú","%Fa":"ú","%fA":"ú","%FA":"ú","%fb":"û","%Fb":"û","%fB":"û","%FB":"û","%fc":"ü","%Fc":"ü","%fC":"ü","%FC":"ü","%fd":"ý","%Fd":"ý","%fD":"ý","%FD":"ý","%fe":"þ","%Fe":"þ","%fE":"þ","%FE":"þ","%ff":"ÿ","%Ff":"ÿ","%fF":"ÿ","%FF":"ÿ"};function encodedReplacer(A){return o[A]}const n=0;const i=1;const a=2;const g=3;function parseParams(A){const e=[];let t=n;let o="";let c=false;let E=false;let Q=0;let C="";const B=A.length;for(var l=0;l{__nccwpck_require__.n=A=>{var e=A&&A.__esModule?()=>A["default"]:()=>A;__nccwpck_require__.d(e,{a:e});return e}})();(()=>{__nccwpck_require__.d=(A,e)=>{for(var t in e){if(__nccwpck_require__.o(e,t)&&!__nccwpck_require__.o(A,t)){Object.defineProperty(A,t,{enumerable:true,get:e[t]})}}}})();(()=>{__nccwpck_require__.o=(A,e)=>Object.prototype.hasOwnProperty.call(A,e)})();(()=>{__nccwpck_require__.r=A=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(A,"__esModule",{value:true})}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var t={};(()=>{"use strict";__nccwpck_require__.r(t);var A=__nccwpck_require__(99);var e=__nccwpck_require__.n(A);var r=__nccwpck_require__(6495);var s=__nccwpck_require__.n(r);var o=undefined&&undefined.__awaiter||function(A,e,t,r){function adopt(A){return A instanceof t?A:new t((function(e){e(A)}))}return new(t||(t=Promise))((function(t,s){function fulfilled(A){try{step(r.next(A))}catch(A){s(A)}}function rejected(A){try{step(r["throw"](A))}catch(A){s(A)}}function step(A){A.done?t(A.value):adopt(A.value).then(fulfilled,rejected)}step((r=r.apply(A,e||[])).next())}))};function main(){return o(this,void 0,void 0,(function*(){if(!process.env.GITHUB_TOKEN)throw new TypeError("GITHUB_TOKEN not set");const e=(0,r.getOctokit)(process.env.GITHUB_TOKEN);const{owner:t,repo:s}=r.context.repo;const o=r.context.payload.issue;const n=`\n\nThis issue has been closed due to the incorrect issue template being used. Please make sure to submit a new issue using the [correct issue template](https://github.com/vercel/next.js/issues/new?assignees=&labels=bug&projects=&template=1.bug_report.yml). This will ensure that we have all the necessary information to triage your issue.\n\nThank you for your understanding and contributions.\n\nBest regards,\nThe Next.js Team\n `;try{yield e.rest.issues.createComment({owner:t,repo:s,issue_number:o.number,body:n});yield e.rest.issues.update({owner:t,repo:s,issue_number:o.number,state:"closed"});(0,A.info)(`Issue #${o.number}, which was opened with the incorrect template, has been successfully closed.`)}catch(e){(0,A.setFailed)(e)}}))}main()})();module.exports=t})(); \ No newline at end of file diff --git a/.github/actions/next-repo-actions/dist/wrong-issue-template/licenses.txt b/.github/actions/next-repo-actions/dist/wrong-issue-template/licenses.txt deleted file mode 100644 index e1effa066179..000000000000 --- a/.github/actions/next-repo-actions/dist/wrong-issue-template/licenses.txt +++ /dev/null @@ -1,612 +0,0 @@ -@actions/core -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/exec -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/github -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/http-client -MIT -Actions Http Client for Node.js - -Copyright (c) GitHub, Inc. - -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@actions/io -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@fastify/busboy -MIT -Copyright Brian White. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -@octokit/auth-token -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/core -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/endpoint -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/graphql -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/plugin-paginate-rest -MIT -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@octokit/plugin-rest-endpoint-methods -MIT -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@octokit/request -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/request-error -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -before-after-hook -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Gregor Martynus and other contributors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -deprecation -ISC -The ISC License - -Copyright (c) Gregor Martynus and contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -nextjs-project -The MIT License (MIT) - -Copyright (c) 2025 Vercel, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -once -ISC -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -tunnel -MIT -The MIT License (MIT) - -Copyright (c) 2012 Koichi Kobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -undici -MIT -MIT License - -Copyright (c) Matteo Collina and Undici contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -universal-user-agent -ISC -# [ISC License](https://spdx.org/licenses/ISC) - -Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -wrappy -ISC -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/.github/actions/next-repo-actions/package.json b/.github/actions/next-repo-actions/package.json index c8e36c3d1e8c..d61419d29399 100644 --- a/.github/actions/next-repo-actions/package.json +++ b/.github/actions/next-repo-actions/package.json @@ -4,8 +4,7 @@ "scripts": { "build-issues": "ncc build src/popular-issues.mjs -m -o dist/issues --license licenses.txt", "build-prs": "ncc build src/popular-prs.ts -m -o dist/prs --license licenses.txt", - "build-feature-requests": "ncc build src/popular-feature-requests.mjs -m -o dist/feature-requests --license licenses.txt", - "build-wrong-issue-template": "ncc build src/wrong-issue-template.ts -m -o dist/wrong-issue-template --license licenses.txt" + "build-feature-requests": "ncc build src/popular-feature-requests.mjs -m -o dist/feature-requests --license licenses.txt" }, "dependencies": { "@actions/core": "^1.11.1", diff --git a/.github/actions/next-repo-actions/src/wrong-issue-template.ts b/.github/actions/next-repo-actions/src/wrong-issue-template.ts deleted file mode 100644 index 0aebd3809b35..000000000000 --- a/.github/actions/next-repo-actions/src/wrong-issue-template.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { info, setFailed } from '@actions/core' -import { context, getOctokit } from '@actions/github' - -async function main() { - if (!process.env.GITHUB_TOKEN) throw new TypeError('GITHUB_TOKEN not set') - - const octokit = getOctokit(process.env.GITHUB_TOKEN) - - const { owner, repo } = context.repo - const issue = context.payload.issue - const body = ` - -This issue has been closed due to the incorrect issue template being used. Please make sure to submit a new issue using the [correct issue template](https://github.com/vercel/next.js/issues/new?assignees=&labels=bug&projects=&template=1.bug_report.yml). This will ensure that we have all the necessary information to triage your issue. - -Thank you for your understanding and contributions. - -Best regards, -The Next.js Team - ` - - try { - await octokit.rest.issues.createComment({ - owner, - repo, - issue_number: issue.number, - body, - }) - - await octokit.rest.issues.update({ - owner, - repo, - issue_number: issue.number, - state: 'closed', - }) - - info( - `Issue #${issue.number}, which was opened with the incorrect template, has been successfully closed.` - ) - } catch (error) { - setFailed(error) - } -} - -main() diff --git a/.github/workflows/code_freeze.yml b/.github/workflows/code_freeze.yml deleted file mode 100644 index 3e313bd92bee..000000000000 --- a/.github/workflows/code_freeze.yml +++ /dev/null @@ -1,49 +0,0 @@ -on: - workflow_dispatch: - inputs: - type: - description: Enable/disable code freeze - required: true - type: choice - options: - - enable - - disable - - secrets: - CODE_FREEZE_TOKEN: - required: true - -name: Code Freeze - -env: - NAPI_CLI_VERSION: 3.7.2 - TURBO_VERSION: 2.9.4 - NODE_LTS_VERSION: 20 - -jobs: - start: - runs-on: ubuntu-latest - - environment: release-${{ github.event.inputs.releaseType }} - steps: - - name: Setup node - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: - node-version: ${{ env.NODE_LTS_VERSION }} - check-latest: true - package-manager-cache: false - - name: Setup corepack - run: | - npm i -g corepack@0.31 - corepack enable - - - run: git clone https://github.com/vercel/next.js.git --depth=1 . - - # https://github.com/actions/virtual-environments/issues/1187 - - name: tune linux network - run: sudo ethtool -K eth0 tx off rx off - - - run: node ./scripts/code-freeze.js --type "${INPUT_TYPE}" - env: - CODE_FREEZE_TOKEN: ${{ secrets.CODE_FREEZE_TOKEN }} - INPUT_TYPE: ${{ github.event.inputs.type }} diff --git a/.github/workflows/issue_stale.yml b/.github/workflows/issue_stale.yml deleted file mode 100644 index 4476c0d86d0b..000000000000 --- a/.github/workflows/issue_stale.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: 'Stale issue handler' -on: - workflow_dispatch: - schedule: - # This runs every day 20 minutes before midnight: https://crontab.guru/#40_23_*_*_* - - cron: '40 23 * * *' - -jobs: - stale: - runs-on: ubuntu-latest - if: github.repository_owner == 'vercel' - steps: - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 - id: issue-stale - name: 'Mark stale issues, close stale issues' - with: - repo-token: ${{ secrets.STALE_TOKEN }} - ascending: true - days-before-issue-close: 7 - days-before-issue-stale: 545 # issues with no activity in over ~1.5 years - days-before-pr-close: -1 - days-before-pr-stale: -1 - remove-issue-stale-when-updated: true - stale-issue-label: 'stale' - labels-to-add-when-unstale: 'not stale' - stale-issue-message: 'This issue has been automatically marked as stale due to inactivity. It will be closed in 7 days unless there’s further input. If you believe this issue is still relevant, please leave a comment or provide updated details. Thank you.' - close-issue-message: 'This issue has been automatically closed due to inactivity. If you’re still experiencing a similar problem or have additional details to share, please open a new issue following our current issue template. Your updated report helps us investigate and address concerns more efficiently. Thank you for your understanding!' - operations-per-run: 300 # 1 operation per 100 issues, the rest is to label/comment/close - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 - id: stale-no-repro - name: 'Close stale issues with no reproduction' - with: - repo-token: ${{ secrets.STALE_TOKEN }} - any-of-issue-labels: 'please add a complete reproduction' - close-issue-message: 'This issue has been automatically closed due to 2 days of inactivity and the absence of a complete reproduction. If you believe this was done in error, please leave a comment. If you are experiencing a similar issue, consider opening a new issue with a complete reproduction. Thank you.' - days-before-issue-close: 2 - days-before-issue-stale: 1 - days-before-pr-close: -1 - days-before-pr-stale: -1 - remove-issue-stale-when-updated: true - stale-issue-label: 'stale' - labels-to-add-when-unstale: 'not stale' - operations-per-run: 300 # 1 operation per 100 issues, the rest is to label/comment/close - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 - id: stale-simple-repro - name: 'Close issues with no simple repro' - with: - repo-token: ${{ secrets.STALE_TOKEN }} - any-of-issue-labels: 'please simplify reproduction' - close-issue-message: 'This issue has been automatically closed due to 14 days of inactivity and the absence of a simple reproduction for investigation. If you believe this was done in error, please leave a comment. If you are experiencing a similar issue, consider opening a new issue with a simple reproduction. Thank you.' - days-before-issue-close: 14 - days-before-issue-stale: 1 - days-before-pr-close: -1 - days-before-pr-stale: -1 - remove-issue-stale-when-updated: true - stale-issue-label: 'stale' - labels-to-add-when-unstale: 'not stale' - operations-per-run: 300 # 1 operation per 100 issues, the rest is to label/comment/close - - uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0 - id: stale-no-canary - name: 'Close issues not verified on canary' - with: - repo-token: ${{ secrets.STALE_TOKEN }} - any-of-issue-labels: 'please verify canary' - close-issue-message: 'This issue has been automatically closed due to 14 days of inactivity and the absence of testing against next@canary. If you believe this was done in error, please leave a comment. If you are experiencing a similar issue, consider opening a new issue with a reproduction. Thank you.' - days-before-issue-close: 14 - days-before-issue-stale: 1 - days-before-pr-close: -1 - days-before-pr-stale: -1 - remove-issue-stale-when-updated: true - stale-issue-label: 'stale' - labels-to-add-when-unstale: 'not stale' - operations-per-run: 300 # 1 operation per 100 issues, the rest is to label/comment/close diff --git a/.github/workflows/issue_wrong_template.yml b/.github/workflows/issue_wrong_template.yml deleted file mode 100644 index c59d95c7272a..000000000000 --- a/.github/workflows/issue_wrong_template.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: 'Close issues using the wrong issue template' - -on: - issues: - types: [labeled] - -jobs: - close: - if: github.event.label.name == 'please use the correct issue template' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - persist-credentials: false - - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 - with: - package-manager-cache: false - - name: Setup corepack - run: | - npm i -g corepack@0.31 - corepack enable - - name: 'Close issues using the wrong issue template' - run: node ./.github/actions/next-repo-actions/dist/wrong-issue-template/index.js - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/upload_preview_tarballs.yml b/.github/workflows/upload_preview_tarballs.yml index 7e2c8e59fa61..4e6b1a55fb23 100644 --- a/.github/workflows/upload_preview_tarballs.yml +++ b/.github/workflows/upload_preview_tarballs.yml @@ -67,5 +67,4 @@ jobs: github.event.workflow_run.head_sha }}" "${{ runner.temp }}/preview-tarballs" env: - BLOB_ACCESS: ${{ vars.PREVIEW_BUILDS_ACCESS }} PREVIEW_BUILDS_BASE_URL: ${{ vars.PREVIEW_BUILDS_BASE_URL }} diff --git a/crates/next-api/src/app.rs b/crates/next-api/src/app.rs index d9be7f73c1cd..cb33963ff2dd 100644 --- a/crates/next-api/src/app.rs +++ b/crates/next-api/src/app.rs @@ -426,7 +426,7 @@ impl AppProject { } #[turbo_tasks::function] - fn rsc_module_context(self: Vc) -> Result> { + pub(crate) fn rsc_module_context(self: Vc) -> Result> { Ok(ModuleAssetContext::new( self.get_rsc_transitions( self.ecmascript_client_reference_transition(), @@ -459,7 +459,7 @@ impl AppProject { } #[turbo_tasks::function] - async fn route_module_context(self: Vc) -> Result> { + pub(crate) async fn route_module_context(self: Vc) -> Result> { let transitions = [ ( AppProject::client_transition_name(), diff --git a/crates/next-api/src/server_actions.rs b/crates/next-api/src/server_actions.rs index 4be69efd26cf..8eaea56eecad 100644 --- a/crates/next-api/src/server_actions.rs +++ b/crates/next-api/src/server_actions.rs @@ -3,9 +3,11 @@ use std::{borrow::Cow, collections::BTreeMap, io::Write, sync::LazyLock}; use anyhow::{Context, Result, bail}; use bincode::{Decode, Encode}; use next_core::{ + get_next_package, next_client_reference::{CssClientReferenceModule, EcmascriptClientReferenceModule}, next_manifests::{ - ActionLayer, ActionManifestModuleId, ActionManifestWorkerEntry, ServerReferenceManifest, + ActionLayer, ActionManifestModuleId, ActionManifestWorkerEntry, + ActionManifestWorkerEntryDurability, ServerReferenceManifest, }, util::NextRuntime, }; @@ -36,7 +38,7 @@ use turbopack_core::{ context::AssetContext, file_source::FileSource, ident::AssetIdent, - module::Module, + module::{Module, Modules}, module_graph::{ GraphTraversalAction, ModuleGraph, ModuleGraphLayer, async_module_info::AsyncModulesInfo, }, @@ -46,7 +48,7 @@ use turbopack_core::{ virtual_source::VirtualSource, }; use turbopack_ecmascript::{ - EcmascriptParsable, + EcmascriptAnalyzable, EcmascriptParsable, EnvVarInfo, chunk::{EcmascriptChunkItem, EcmascriptChunkItemExt, EcmascriptChunkPlaceable}, module_fragments::part::module::EcmascriptModulePartAsset, parse::ParseResult, @@ -247,10 +249,46 @@ impl Asset for ServerActionManifestAsset { NextRuntime::NodeJs => &mut manifest.node, }; + // These modules end up pulling in a lot of env vars and would always cause invalidations. + // But they don't actually read the env vars for the imports that are used. Their code is + // versioned anyway via the Next.js version in the cache key. + // + // `module.compiled.js -> app-page-turbo.runtime.prod.js` is imported by the following + // modules. But none of them have values whose runtime value depends on the runtime env + // vars. + // - react + // - react-dom + // - react-server-dom-* + // - next/dist/shared/lib/app-router-context.shared-runtime + // - next/dist/shared/lib/head-manager-context.shared-runtime + // - next/dist/shared/lib/hooks-client-context.shared-runtime + // - next/dist/shared/lib/image-config-context.shared-runtime + // - next/dist/shared/lib/router-context.shared-runtime + // - next/dist/shared/lib/server-inserted-html.shared-runtime + let app_project = self.project.app_project().await?.unwrap(); + let next_dir = get_next_package(self.project.project_path().owned().await?).await?; + let source_to_ignore = FileSource::new( + next_dir.join("dist/server/route-modules/app-page/module.compiled.js")?, + ); + let modules_to_ignore = Vc::cell( + [ + app_project.rsc_module_context(), + app_project.route_module_context(), + ] + .iter() + .map(|c| { + c.process(Vc::upcast(source_to_ignore), ReferenceType::Undefined) + .module() + .to_resolved() + }) + .try_join() + .await?, + ); + struct ActionMetadata<'a> { exported_name: &'a str, filename: Cow<'a, str>, - code_hash: Option>, + data: Option>, } let action_metadata: Vec<(&str, ActionMetadata<'_>)> = actions_value @@ -265,27 +303,30 @@ impl Asset for ServerActionManifestAsset { Cow::Owned(module.ident().await?.path.to_string()) }; + let data = if durable_use_cache_entries + && extract_type_from_server_reference_id(hash_id) + == ServerReferenceType::UseCache + { + Some( + compute_subtree_content_hash( + *self.module_graph, + **module, + *self.chunking_context, + hash_salt, + modules_to_ignore, + ) + .await?, + ) + } else { + None + }; + Ok(( &**hash_id, ActionMetadata { exported_name: &meta.name, filename, - code_hash: if durable_use_cache_entries - && extract_type_from_server_reference_id(hash_id) - == ServerReferenceType::UseCache - { - Some( - compute_subtree_content_hash( - *self.module_graph, - **module, - *self.chunking_context, - hash_salt, - ) - .await?, - ) - } else { - None - }, + data, }, )) }) @@ -298,7 +339,7 @@ impl Asset for ServerActionManifestAsset { ActionMetadata { exported_name, filename, - code_hash, + data, }, ) in &action_metadata { @@ -310,7 +351,11 @@ impl Asset for ServerActionManifestAsset { is_async: async_module_info .is_async(self.chunk_item.module().to_resolved().await?) .await?, - code_hash: code_hash.as_ref().map(|h| h.as_str()), + durability: data.as_ref().map(|d| ActionManifestWorkerEntryDurability { + code_hash: d.ident_code_hash.as_str(), + runtime_env_vars: d.runtime_env_vars.as_slice(), + references_client_component: d.references_client_component, + }), }, ); @@ -357,13 +402,26 @@ pub async fn to_rsc_context( Ok(module) } +/// Merged information about a module graph subgraph +#[turbo_tasks::value] +#[derive(Debug)] +struct ModulesInformation { + /// The combined code hash of all modules in the subgraph + pub ident_code_hash: RcStr, + /// The merged and deduplicated list of all runtime env vars referenced in the subgraph + pub runtime_env_vars: Vec, + /// Whether the subgraph imports any client components + pub references_client_component: bool, +} + #[turbo_tasks::function] async fn compute_subtree_content_hash( module_graph: ResolvedVc, entry: ResolvedVc>, chunking_context: Vc>, hash_salt: Vc, -) -> Result> { + modules_to_ignore: Vc, +) -> Result> { let span = tracing::info_span!( "compute use-cache code hash", entry = display(entry.ident_string().await?) @@ -372,20 +430,29 @@ async fn compute_subtree_content_hash( let module_graph_value = module_graph.await?; let async_module_info = module_graph.async_module_info(); + let mut references_client_component = false; + + let modules_to_ignore = modules_to_ignore.await?; let mut modules = FxIndexSet::default(); module_graph_value.traverse_edges_dfs( std::iter::once(entry), /* state */ &mut (), /* visit_preorder */ |_, target, _| { - if ResolvedVc::try_downcast_type::(target).is_some() { + if modules_to_ignore.contains(&target) { + Ok(GraphTraversalAction::Exclude) + } else if ResolvedVc::try_downcast_type::(target) + .is_some() + { // Don't include the module at all. There is nothing that executes on the server + references_client_component = true; Ok(GraphTraversalAction::Exclude) } else if ResolvedVc::try_downcast_type::(target) .is_some() { // Include the client reference proxy module, but not the referenced client // modules themselves. + references_client_component = true; modules.insert(target); Ok(GraphTraversalAction::Exclude) } else { @@ -407,41 +474,70 @@ async fn compute_subtree_content_hash( entry.ident().await?.path, modules .iter() - .map(async |m| Ok(format!( - " '{}': {}", - m.ident_string().await?, - module_hash( + .map(async |m| { + let data = module_hash( *module_graph, chunking_context, async_module_info, **m, - hash_salt + hash_salt, ) - .await? - ))) + .await?; + Ok(format!( + " '{}': {} with env: {}", + m.ident_string().await?, + data.ident_code_hash, + data.env_var_info + .as_ref() + .map(|e| e.runtime.clone()) + .unwrap_or_default() + .join(",") + )) + }) .try_join() .await? .join("\n") ); } - let hashes = modules + let data = modules .into_iter() - .map(|m| { - module_hash( - *module_graph, - chunking_context, - async_module_info, - *m, - hash_salt, - ) + .map(async |m| { + Ok(( + m, + module_hash( + *module_graph, + chunking_context, + async_module_info, + *m, + hash_salt, + ) + .await?, + )) }) .try_join() .await?; - anyhow::Ok(Vc::cell( - deterministic_hash("", hashes, HashAlgorithm::Xxh3Hash128Hex).into(), - )) + let mut hashes = Vec::with_capacity(data.len()); + let mut runtime_env_vars = FxIndexSet::default(); + + for (_m, data) in &data { + hashes.push(&data.ident_code_hash); + if let Some(env) = &data.env_var_info { + runtime_env_vars.extend(env.runtime.iter()); + } + } + + let hash = deterministic_hash("", hashes, HashAlgorithm::Xxh3Hash128Hex).into(); + + anyhow::Ok( + ModulesInformation { + ident_code_hash: hash, + runtime_env_vars: runtime_env_vars.into_iter().cloned().collect(), + references_client_component, + } + .cell(), + ) } .instrument(span) .await @@ -458,6 +554,13 @@ async fn compute_subtree_content_hash( } } +#[turbo_tasks::value] +#[derive(Debug)] +struct ModuleInformation { + pub ident_code_hash: RcStr, + pub env_var_info: Option>, +} + #[turbo_tasks::function] async fn module_hash( module_graph: ResolvedVc, @@ -465,12 +568,34 @@ async fn module_hash( async_module_info: ResolvedVc, m: ResolvedVc>, hash_salt: Vc, -) -> Result> { +) -> Result> { let ident = m.ident(); let ident_value = ident.await?; let ident_str = ident.to_string().await?; - if let Some(placeable_module) = ResolvedVc::try_downcast::>(m) + if cfg!(debug_assertions) + && (ident_str + .contains("next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js") + || ident_str.contains( + "next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js", + ) + || ident_str.contains("next/dist/compiled/next-server/app-page-turbo.runtime.dev.js") + || ident_str.contains("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js")) + { + // This isn't exactly a fatal error, but it makes cross-deployment caching completely + // ineffective. + bail!("use cache subtree shouldn't contain {}", ident_str); + } + + let env_var_info = + if let Some(module) = ResolvedVc::try_downcast::>(m) { + Some(module.env_var_info().await?) + } else { + None + }; + + let ident_code_hash = if let Some(placeable_module) = + ResolvedVc::try_downcast::>(m) && !ident_value .layer .as_ref() @@ -481,19 +606,19 @@ async fn module_hash( .as_chunk_item(*module_graph, *chunking_context) .to_resolved() .await?; - let chunk_item = - ResolvedVc::try_downcast::>(chunk_item).unwrap(); + let chunk_item = ResolvedVc::try_downcast::>(chunk_item) + .context("expected EcmascriptChunkItem")?; let async_info = if async_module_info.is_async(m).await? { Some(module_graph.referenced_async_modules(*m)) } else { None }; let code = chunk_item.code(async_info); - Ok(Vc::cell(RcStr::from(deterministic_hash( + RcStr::from(deterministic_hash( "", (ident_str, code.source_code_hash().await?), HashAlgorithm::Xxh3Hash128Hex, - )))) + )) } else { // A non-JS static file or an external module let content_hash = m @@ -503,12 +628,18 @@ async fn module_hash( .content() .hash(hash_salt, HashAlgorithm::Xxh3Hash128Hex) .await?; - Ok(Vc::cell(RcStr::from(deterministic_hash( + RcStr::from(deterministic_hash( "", (ident_str, content_hash), HashAlgorithm::Xxh3Hash128Hex, - )))) + )) + }; + + Ok(ModuleInformation { + ident_code_hash, + env_var_info, } + .cell()) } /// Server action info for JSON parsing diff --git a/crates/next-core/src/next_config.rs b/crates/next-core/src/next_config.rs index 8267f47ec256..5bcb83615cf1 100644 --- a/crates/next-core/src/next_config.rs +++ b/crates/next-core/src/next_config.rs @@ -2429,21 +2429,6 @@ impl NextConfig { Vc::cell(self.experimental.taint.unwrap_or(false)) } - #[turbo_tasks::function] - pub fn enable_transition_indicator(&self) -> Vc { - Vc::cell(self.experimental.transition_indicator.unwrap_or(false)) - } - - #[turbo_tasks::function] - pub fn enable_gesture_transition(&self) -> Vc { - Vc::cell(self.experimental.gesture_transition.unwrap_or(false)) - } - - #[turbo_tasks::function] - pub fn enable_blocking_ssr(&self) -> Vc { - Vc::cell(self.experimental.blocking_ssr.unwrap_or(false)) - } - #[turbo_tasks::function] pub fn enable_expose_testing_api_in_production_build(&self) -> Vc { Vc::cell( @@ -2486,6 +2471,16 @@ impl NextConfig { }) } + #[turbo_tasks::function] + pub fn use_react_experimental(&self) -> Vc { + // Keep in sync with file:///./../../../packages/next/src/lib/needs-experimental-react.ts + let blocking_ssr = self.experimental.blocking_ssr.unwrap_or(false); + let taint = self.experimental.taint.unwrap_or(false); + let transition_indicator = self.experimental.transition_indicator.unwrap_or(false); + let gesture_transition = self.experimental.gesture_transition.unwrap_or(false); + Vc::cell(blocking_ssr || taint || transition_indicator || gesture_transition) + } + #[turbo_tasks::function] pub fn is_using_adapter(&self) -> Vc { Vc::cell(self.adapter_path.is_some()) diff --git a/crates/next-core/src/next_import_map.rs b/crates/next-core/src/next_import_map.rs index 546e3a14324f..be5af986e9db 100644 --- a/crates/next-core/src/next_import_map.rs +++ b/crates/next-core/src/next_import_map.rs @@ -97,17 +97,11 @@ pub async fn get_next_client_import_map( ); } ClientContextType::App { app_dir } => { - // Keep in sync with file:///./../../../packages/next/src/lib/needs-experimental-react.ts - let blocking_ssr = *next_config.enable_blocking_ssr().await?; - let taint = *next_config.enable_taint().await?; - let transition_indicator = *next_config.enable_transition_indicator().await?; - let gesture_transition = *next_config.enable_gesture_transition().await?; - let react_channel = - if blocking_ssr || taint || transition_indicator || gesture_transition { - "-experimental" - } else { - "" - }; + let react_channel = if *next_config.use_react_experimental().await? { + "-experimental" + } else { + "" + }; import_map.insert_exact_alias( rcstr!("react"), @@ -883,11 +877,7 @@ async fn apply_vendored_react_aliases_server( runtime: NextRuntime, next_config: Vc, ) -> Result<()> { - let blocking_ssr = *next_config.enable_blocking_ssr().await?; - let taint = *next_config.enable_taint().await?; - let transition_indicator = *next_config.enable_transition_indicator().await?; - let gesture_transition = *next_config.enable_gesture_transition().await?; - let react_channel = if blocking_ssr || taint || transition_indicator || gesture_transition { + let react_channel = if *next_config.use_react_experimental().await? { "-experimental" } else { "" diff --git a/crates/next-core/src/next_manifests/mod.rs b/crates/next-core/src/next_manifests/mod.rs index 38d2e8dcbfd6..bd94ce3a5335 100644 --- a/crates/next-core/src/next_manifests/mod.rs +++ b/crates/next-core/src/next_manifests/mod.rs @@ -459,13 +459,22 @@ pub struct ActionManifestEntry<'a> { } #[derive(Serialize, Debug)] +#[serde(rename_all = "camelCase")] pub struct ActionManifestWorkerEntry<'a> { - #[serde(rename = "moduleId")] pub module_id: ActionManifestModuleId<'a>, #[serde(rename = "async")] pub is_async: bool, - #[serde(rename = "codeHash")] - pub code_hash: Option<&'a str>, + #[serde(skip_serializing_if = "Option::is_none")] + pub durability: Option>, +} + +#[derive(Serialize, Debug)] +#[serde(rename_all = "camelCase")] +pub struct ActionManifestWorkerEntryDurability<'a> { + pub code_hash: &'a str, + pub runtime_env_vars: &'a [RcStr], + #[serde(skip_serializing_if = "std::ops::Not::not")] + pub references_client_component: bool, } #[derive(Serialize, Debug, Clone)] diff --git a/packages/next/src/build/collect-build-traces.ts b/packages/next/src/build/collect-build-traces.ts index fca0eec30804..18696c621c75 100644 --- a/packages/next/src/build/collect-build-traces.ts +++ b/packages/next/src/build/collect-build-traces.ts @@ -240,6 +240,7 @@ export async function collectBuildTraces({ // only ignore image-optimizer code when // this is being handled outside of next-server '**/next/dist/server/image-optimizer.js', + '**/next/dist/server/image-optimizer/**/*', ] : []), diff --git a/packages/next/src/build/webpack/loaders/next-image-loader/blur.ts b/packages/next/src/build/webpack/loaders/next-image-loader/blur.ts index b7dbb2508625..f6934273df76 100644 --- a/packages/next/src/build/webpack/loaders/next-image-loader/blur.ts +++ b/packages/next/src/build/webpack/loaders/next-image-loader/blur.ts @@ -1,5 +1,5 @@ import isAnimated from 'next/dist/compiled/is-animated' -import { optimizeImage } from '../../../../server/image-optimizer' +import { optimizeImage } from '../../../../server/image-optimizer/transform' const BLUR_IMG_SIZE = 8 const BLUR_QUALITY = 70 diff --git a/packages/next/src/build/webpack/loaders/next-image-loader/index.ts b/packages/next/src/build/webpack/loaders/next-image-loader/index.ts index 7590ea3e7671..e47656bbf8d3 100644 --- a/packages/next/src/build/webpack/loaders/next-image-loader/index.ts +++ b/packages/next/src/build/webpack/loaders/next-image-loader/index.ts @@ -2,7 +2,7 @@ import type { CompilerNameValues } from '../../../../shared/lib/constants' import path from 'path' import loaderUtils from 'next/dist/compiled/loader-utils3' -import { getImageSize } from '../../../../server/image-optimizer' +import { getImageSize } from '../../../../server/image-optimizer/get-image-size' import { getBlurImage } from './blur' interface Options { diff --git a/packages/next/src/build/webpack/loaders/next-metadata-image-loader.ts b/packages/next/src/build/webpack/loaders/next-metadata-image-loader.ts index 43433fe96237..237daa77f67f 100644 --- a/packages/next/src/build/webpack/loaders/next-metadata-image-loader.ts +++ b/packages/next/src/build/webpack/loaders/next-metadata-image-loader.ts @@ -10,7 +10,7 @@ import type { import { existsSync, promises as fs } from 'fs' import path from 'path' import loaderUtils from 'next/dist/compiled/loader-utils3' -import { getImageSize } from '../../../server/image-optimizer' +import { getImageSize } from '../../../server/image-optimizer/get-image-size' import { imageExtMimeTypeMap } from '../../../lib/mime-type' import { WEBPACK_RESOURCE_QUERIES } from '../../../lib/constants' import { fillStaticMetadataSegment } from '../../../lib/metadata/get-metadata-route' diff --git a/packages/next/src/build/webpack/plugins/flight-client-entry-plugin.ts b/packages/next/src/build/webpack/plugins/flight-client-entry-plugin.ts index 508d1b5a735a..6bf798354020 100644 --- a/packages/next/src/build/webpack/plugins/flight-client-entry-plugin.ts +++ b/packages/next/src/build/webpack/plugins/flight-client-entry-plugin.ts @@ -72,6 +72,11 @@ type Actions = { [name: string]: { moduleId: string | number async: boolean + durability?: { + codeHash: string + runtimeEnvVars: string[] + referencesClientComponent?: boolean + } } } // Record which layer the action is in (rsc or sc_action), in the specific entry diff --git a/packages/next/src/lib/needs-experimental-react.ts b/packages/next/src/lib/needs-experimental-react.ts index f666c011c3e4..2e82f7cd3ae0 100644 --- a/packages/next/src/lib/needs-experimental-react.ts +++ b/packages/next/src/lib/needs-experimental-react.ts @@ -1,6 +1,6 @@ import type { NextConfig } from '../server/config-shared' -// Keep in sync with Turbopack's experimental React switch: file://./../../../../crates/next-core/src/next_import_map.rs +// Keep in sync with Turbopack's experimental React switch: file://./../../../../crates/next-core/src/next_config.rs export function needsExperimentalReact(config: NextConfig) { const { blockingSSR, taint, transitionIndicator, gestureTransition } = config.experimental || {} diff --git a/packages/next/src/server/app-render/manifests-singleton.ts b/packages/next/src/server/app-render/manifests-singleton.ts index e91ace8c6432..d625283dd058 100644 --- a/packages/next/src/server/app-render/manifests-singleton.ts +++ b/packages/next/src/server/app-render/manifests-singleton.ts @@ -261,7 +261,17 @@ function createServerModuleMap(): ServerModuleMap { const workStore = workAsyncStorage.getStore() - let workerEntry: { moduleId: string | number; async: boolean } | undefined + let workerEntry: + | { + moduleId: string | number + async: boolean + durability?: { + codeHash: string + runtimeEnvVars: readonly string[] + referencesClientComponent?: boolean + } + } + | undefined if (workStore) { workerEntry = workers[normalizeWorkerPageName(workStore.page)] @@ -280,9 +290,15 @@ function createServerModuleMap(): ServerModuleMap { throw getActionNotFoundError(id) } - const { moduleId, async } = workerEntry + const { moduleId, async, durability } = workerEntry - return { id: moduleId, name: id, chunks: [], async } + return { + id: moduleId, + name: id, + chunks: [], + async, + durability, + } }, }) } @@ -291,7 +307,7 @@ function createServerModuleMap(): ServerModuleMap { * The flight entry loader keys actions by bundlePath. bundlePath corresponds * with the relative path (including 'app') to the page entrypoint. */ -function normalizeWorkerPageName(pageName: string) { +export function normalizeWorkerPageName(pageName: string) { if (pathHasPrefix(pageName, 'app')) { return pageName } diff --git a/packages/next/src/server/dev/use-cache-probe-worker.ts b/packages/next/src/server/dev/use-cache-probe-worker.ts index 3bfde76431fc..03732c9f0578 100644 --- a/packages/next/src/server/dev/use-cache-probe-worker.ts +++ b/packages/next/src/server/dev/use-cache-probe-worker.ts @@ -148,7 +148,7 @@ export async function probeUseCache(msg: ProbeMessage): Promise { ) } - const args = decoded[2] + const args = decoded[1] const workStore: WorkStore = buildProbeWorkStore(msg) // The outer store is `'request'`-typed and built from the forwarded diff --git a/packages/next/src/server/image-optimizer.ts b/packages/next/src/server/image-optimizer.ts index 077eaf355f91..1e6f4daf1f3d 100644 --- a/packages/next/src/server/image-optimizer.ts +++ b/packages/next/src/server/image-optimizer.ts @@ -1,11 +1,7 @@ -import { createHash } from 'crypto' import { promises } from 'fs' import type { IncomingMessage, ServerResponse } from 'http' import { mediaType } from 'next/dist/compiled/@hapi/accept' import contentDisposition from 'next/dist/compiled/content-disposition' -import imageSizeOf from 'next/dist/compiled/image-size' -import { detector } from 'next/dist/compiled/image-detector/detector.js' -import isAnimated from 'next/dist/compiled/is-animated' import { join } from 'path' import { getImageBlurSvg } from '../shared/lib/image-blur-svg' import type { ImageConfigComplete } from '../shared/lib/image-config' @@ -17,8 +13,6 @@ import type { NextUrlWithParsedQuery } from './request-meta' import { CachedRouteKind, IncrementalCacheKind, - type CachedImageValue, - type IncrementalCacheEntry, type IncrementalCacheValue, type IncrementalResponseCacheEntry, } from './response-cache' @@ -26,7 +20,6 @@ import type { CacheHandler } from './lib/incremental-cache' import { sendEtagResponse } from './send-payload' import { getContentType, getExtension } from './serve-static' import * as Log from '../build/output/log' -import isError from '../lib/is-error' import { isPrivateIp } from './is-private-ip' import { getOrInitDiskLRU } from './lib/disk-lru-cache.external' import { parseUrl, parseReqUrl } from '../lib/url' @@ -35,30 +28,28 @@ import { InvariantError } from '../shared/lib/invariant-error' import { lookup } from 'dns/promises' import { isIP } from 'net' import { ALL } from 'dns' +import { + imageOptimizerTransform, + type ImageUpstream, +} from './image-optimizer/transform' +import { extractEtag, getHash } from './image-optimizer/extract-etag' +import { getPreviouslyCachedImageOrNull } from './image-optimizer/get-previously-cached-image-or-null' +import { getImageSize } from './image-optimizer/get-image-size' +import { ImageError } from './image-optimizer/image-error' + +// `next-server.ts` destructures `ImageError` from this module to check +// `instanceof` on errors thrown by the transform. +export { ImageError } from './image-optimizer/image-error' type XCacheHeader = 'MISS' | 'HIT' | 'STALE' -const AVIF = 'image/avif' -const WEBP = 'image/webp' -const PNG = 'image/png' -const JPEG = 'image/jpeg' -const JXL = 'image/jxl' -const JP2 = 'image/jp2' -const HEIC = 'image/heic' -const GIF = 'image/gif' -const SVG = 'image/svg+xml' -const ICO = 'image/x-icon' -const ICNS = 'image/x-icns' -const TIFF = 'image/tiff' -const BMP = 'image/bmp' -const PDF = 'application/pdf' const CACHE_VERSION = 4 -const ANIMATABLE_TYPES = [WEBP, PNG, GIF] -const BYPASS_TYPES = [SVG, ICO, ICNS, BMP, JXL, HEIC] const BLUR_IMG_SIZE = 8 // should match `next-image-loader` const BLUR_QUALITY = 70 // should match `next-image-loader` -let _sharp: typeof import('sharp').default +function isValidMime(contentType: string) { + return Boolean(getExtension(contentType)) +} async function initCacheEntries( cacheDir: string @@ -83,50 +74,6 @@ async function initCacheEntries( return entries.sort((a, b) => a.expireAt - b.expireAt) } -export function getSharp( - concurrency: number | null | undefined, - operationCache: boolean | null | undefined -) { - if (_sharp) { - return _sharp - } - try { - _sharp = require('sharp') as typeof import('sharp').default - _sharp.block({ operation: ['VipsForeignLoad'] }) - _sharp.unblock({ - operation: [ - 'VipsForeignLoadHeif', // avif - 'VipsForeignLoadJpeg', - 'VipsForeignLoadNsgif', - 'VipsForeignLoadPng', - 'VipsForeignLoadSvg', - 'VipsForeignLoadTiff', - 'VipsForeignLoadWebp', - ], - }) - if (typeof operationCache === 'boolean') { - _sharp.cache(operationCache) - } - if (_sharp.concurrency() > 1) { - // Reducing concurrency should reduce the memory usage too. - // We more aggressively reduce in dev but also reduce in prod. - // https://sharp.pixelplumbing.com/api-utility#concurrency - const divisor = process.env.NODE_ENV === 'development' ? 4 : 2 - _sharp.concurrency( - concurrency ?? Math.floor(Math.max(_sharp.concurrency() / divisor, 1)) - ) - } - } catch (e: unknown) { - if (isError(e) && e.code === 'MODULE_NOT_FOUND') { - throw new Error( - 'Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.' - ) - } - throw e - } - return _sharp -} - export interface ImageParamsResult { href: string isAbsolute: boolean @@ -138,46 +85,11 @@ export interface ImageParamsResult { minimumCacheTTL: number } -interface ImageUpstream { - buffer: Buffer - contentType: string | null | undefined - cacheControl: string | null | undefined - etag: string -} - function getSupportedMimeType(options: string[], accept = ''): string { const mimeType = mediaType(accept, options) return accept.includes(mimeType) ? mimeType : '' } -export function getHash(items: (string | number | Buffer)[]) { - const hash = createHash('sha256') - for (let item of items) { - if (typeof item === 'number') hash.update(String(item)) - else { - hash.update(item) - } - } - // See https://en.wikipedia.org/wiki/Base64#URL_applications - return hash.digest('base64url') -} - -export function extractEtag( - etag: string | null | undefined, - imageBuffer: Buffer -) { - if (etag) { - // upstream etag needs to be base64url encoded due to weak etag signature - // as we store this in the cache-entry file name. - return Buffer.from(etag).toString('base64url') - } - return getImageEtag(imageBuffer) -} - -export function getImageEtag(image: Buffer) { - return getHash([image]) -} - async function writeToCacheDir( cacheDir: string, cacheKey: string, @@ -241,132 +153,6 @@ async function deleteFromCacheDir(cacheDir: string, cacheKey: string) { }) } -/** - * Inspects the first few bytes of a buffer to determine if - * it matches the "magic number" of known file signatures. - * https://en.wikipedia.org/wiki/List_of_file_signatures - */ -export async function detectContentType( - buffer: Buffer -): Promise { - if (buffer.byteLength === 0) { - return null - } - if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) { - return JPEG - } - if ( - [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every( - (b, i) => buffer[i] === b - ) - ) { - return PNG - } - if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) { - return GIF - } - if ( - [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every( - (b, i) => !b || buffer[i] === b - ) - ) { - return WEBP - } - if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) { - return SVG - } - if ([0x3c, 0x73, 0x76, 0x67].every((b, i) => buffer[i] === b)) { - return SVG - } - if ( - [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every( - (b, i) => !b || buffer[i] === b - ) - ) { - return AVIF - } - if ([0x00, 0x00, 0x01, 0x00].every((b, i) => buffer[i] === b)) { - return ICO - } - if ([0x69, 0x63, 0x6e, 0x73].every((b, i) => buffer[i] === b)) { - return ICNS - } - if ([0x49, 0x49, 0x2a, 0x00].every((b, i) => buffer[i] === b)) { - return TIFF - } - if ([0x42, 0x4d].every((b, i) => buffer[i] === b)) { - return BMP - } - if ([0xff, 0x0a].every((b, i) => buffer[i] === b)) { - return JXL - } - if ( - [ - 0x00, 0x00, 0x00, 0x0c, 0x4a, 0x58, 0x4c, 0x20, 0x0d, 0x0a, 0x87, 0x0a, - ].every((b, i) => buffer[i] === b) - ) { - return JXL - } - if ( - [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63].every( - (b, i) => !b || buffer[i] === b - ) - ) { - return HEIC - } - if ([0x25, 0x50, 0x44, 0x46, 0x2d].every((b, i) => buffer[i] === b)) { - return PDF - } - if ( - [ - 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a, - ].every((b, i) => buffer[i] === b) - ) { - return JP2 - } - - const format = detector(buffer.subarray(0, 1024)) - - switch (format) { - case 'webp': - return WEBP - case 'png': - return PNG - case 'jpg': - return JPEG - case 'gif': - return GIF - case 'svg': - return SVG - case 'jxl': - case 'jxl-stream': - return JXL - case 'jp2': - return JP2 - case 'tiff': - return TIFF - case 'bmp': - return BMP - case 'ico': - return ICO - case 'icns': - return ICNS - case 'heif': - case 'cur': - case 'dds': - case 'j2c': - case 'ktx': - case 'pnm': - case 'psd': - case 'tga': - case undefined: - return null // unsupported formats - default: - format satisfies never // exhaustive check - return null // impossible to reach - } -} - export class ImageOptimizerCache { private cacheDir: string private nextConfig: NextConfigRuntime @@ -732,132 +518,6 @@ export class ImageOptimizerCache { } } } -export class ImageError extends Error { - statusCode: number - - constructor(statusCode: number, message: string) { - super(message) - - // ensure an error status is used > 400 - if (statusCode >= 400) { - this.statusCode = statusCode - } else { - this.statusCode = 500 - } - } -} - -function parseCacheControl( - str: string | null | undefined -): Map { - const map = new Map() - if (!str) { - return map - } - for (let directive of str.split(',')) { - let [key, value] = directive.trim().split('=', 2) - key = key.toLowerCase() - if (value) { - value = value.toLowerCase() - } - map.set(key, value) - } - return map -} - -export function getMaxAge(str: string | null | undefined): number { - const map = parseCacheControl(str) - if (map) { - let age = map.get('s-maxage') || map.get('max-age') || '' - if (age.startsWith('"') && age.endsWith('"')) { - age = age.slice(1, -1) - } - const n = parseInt(age, 10) - if (!isNaN(n)) { - return n - } - } - return 0 -} -export function getPreviouslyCachedImageOrNull( - upstreamImage: ImageUpstream, - previousCacheEntry: IncrementalCacheEntry | null | undefined -): CachedImageValue | null { - if ( - previousCacheEntry?.value?.kind === 'IMAGE' && - // Images that are SVGs, animated or failed the optimization previously end up using upstreamEtag as their etag as well, - // in these cases we want to trigger a new "optimization" attempt. - previousCacheEntry.value.upstreamEtag !== previousCacheEntry.value.etag && - // and the upstream etag is the same as the previous cache entry's - upstreamImage.etag === previousCacheEntry.value.upstreamEtag - ) { - return previousCacheEntry.value - } - return null -} - -export async function optimizeImage({ - buffer, - contentType, - quality, - width, - height, - concurrency, - operationCache, - limitInputPixels, - sequentialRead, - timeoutInSeconds, -}: { - buffer: Buffer - contentType: string - quality: number - width: number - height?: number - concurrency?: number | null - operationCache?: boolean | null | undefined - limitInputPixels?: number - sequentialRead?: boolean | null - timeoutInSeconds?: number -}): Promise { - const sharp = getSharp(concurrency, operationCache) - const transformer = sharp(buffer, { - limitInputPixels, - sequentialRead: sequentialRead ?? undefined, - }) - .timeout({ - seconds: timeoutInSeconds ?? 7, - }) - .rotate() - - if (height) { - transformer.resize(width, height) - } else { - transformer.resize(width, undefined, { - withoutEnlargement: true, - }) - } - - if (contentType === AVIF) { - transformer.avif({ - // Scale the quality to try and match webp. This ratio was derived - // from sharp's default 80 (webp) and 50 (avif), and then verified - // using dssim and ssimulacra2 visual quality tests. - quality: Math.max(Math.round(quality * (50 / 80)), 1), - effort: 3, - }) - } else if (contentType === WEBP) { - transformer.webp({ quality }) - } else if (contentType === PNG) { - transformer.png({ quality }) - } else if (contentType === JPEG) { - transformer.jpeg({ quality, mozjpeg: true }) - } - - const optimizedBuffer = await transformer.toBuffer() - - return optimizedBuffer -} - function isRedirect(statusCode: number) { return [301, 302, 303, 307, 308].includes(statusCode) } @@ -1054,6 +714,22 @@ export async function fetchInternalImage( } } +async function makeBlurPlaceholder(buffer: Buffer, contentType: string) { + // During `next dev`, we don't want to generate blur placeholders with webpack + // because it can delay starting the dev server. Instead, `next-image-loader.js` + // will inline a special url to lazily generate the blur placeholder at request time. + const meta = await getImageSize(buffer) + const blurOpts = { + blurWidth: meta.width, + blurHeight: meta.height, + blurDataURL: `data:${contentType};base64,${buffer.toString('base64')}`, + } + return { + buffer: Buffer.from(unescape(getImageBlurSvg(blurOpts))), + contentType: 'image/svg+xml', + } +} + export async function imageOptimizer( imageUpstream: ImageUpstream, paramsResult: Pick< @@ -1087,147 +763,30 @@ export async function imageOptimizer( upstreamEtag: string error?: unknown }> { - const { href, quality, width, mimeType } = paramsResult - const { buffer: upstreamBuffer, etag: upstreamEtag } = imageUpstream - const maxAge = Math.max( - nextConfig.images.minimumCacheTTL, - getMaxAge(imageUpstream.cacheControl) - ) - - const upstreamType = await detectContentType(upstreamBuffer) - - if ( - !upstreamType || - !upstreamType.startsWith('image/') || - upstreamType.includes(',') - ) { - if (!opts.silent) { - Log.error( - "The requested resource isn't a valid image for", - href, - 'received', - upstreamType - ) - } - throw new ImageError(400, "The requested resource isn't a valid image.") - } - if ( - upstreamType.startsWith('image/svg') && - !nextConfig.images.dangerouslyAllowSVG - ) { - if (!opts.silent) { - Log.error( - `The requested resource "${href}" has type "${upstreamType}" but dangerouslyAllowSVG is disabled. Consider adding the "unoptimized" property to the .` - ) - } - throw new ImageError( - 400, - '"url" parameter is valid but image type is not allowed' - ) - } - if (ANIMATABLE_TYPES.includes(upstreamType) && isAnimated(upstreamBuffer)) { - if (!opts.silent) { - Log.warnOnce( - `The requested resource "${href}" is an animated image so it will not be optimized. Consider adding the "unoptimized" property to the .` - ) - } - return { - buffer: upstreamBuffer, - contentType: upstreamType, - maxAge, - etag: upstreamEtag, - upstreamEtag, - } - } - if (BYPASS_TYPES.includes(upstreamType)) { - return { - buffer: upstreamBuffer, - contentType: upstreamType, - maxAge, - etag: upstreamEtag, - upstreamEtag, - } - } - - let contentType: string - - if (mimeType) { - contentType = mimeType - } else if ( - getExtension(upstreamType) && - upstreamType !== WEBP && - upstreamType !== AVIF - ) { - contentType = upstreamType - } else { - contentType = JPEG - } const previouslyCachedImage = getPreviouslyCachedImageOrNull( imageUpstream, opts.previousCacheEntry ) - if (previouslyCachedImage) { - return { - buffer: previouslyCachedImage.buffer, - contentType, - maxAge: opts?.previousCacheEntry?.cacheControl?.revalidate || maxAge, - etag: previouslyCachedImage.etag, - upstreamEtag: previouslyCachedImage.upstreamEtag, - } - } - try { - let optimizedBuffer = await optimizeImage({ - buffer: upstreamBuffer, - contentType, - quality, - width, - concurrency: nextConfig.experimental.imgOptConcurrency, - operationCache: nextConfig.experimental.imgOptOperationCache, - limitInputPixels: nextConfig.experimental.imgOptMaxInputPixels, - sequentialRead: nextConfig.experimental.imgOptSequentialRead, - timeoutInSeconds: nextConfig.experimental.imgOptTimeoutInSeconds, - }) - if (opts.isDev && width <= BLUR_IMG_SIZE && quality === BLUR_QUALITY) { - // During `next dev`, we don't want to generate blur placeholders with webpack - // because it can delay starting the dev server. Instead, `next-image-loader.js` - // will inline a special url to lazily generate the blur placeholder at request time. - const meta = await getImageSize(optimizedBuffer) - const blurOpts = { - blurWidth: meta.width, - blurHeight: meta.height, - blurDataURL: `data:${contentType};base64,${optimizedBuffer.toString( - 'base64' - )}`, - } - optimizedBuffer = Buffer.from(unescape(getImageBlurSvg(blurOpts))) - contentType = 'image/svg+xml' - } - return { - buffer: optimizedBuffer, - contentType, - maxAge, - etag: getImageEtag(optimizedBuffer), - upstreamEtag, - } - } catch (error) { - if (upstreamType) { - // If we fail to optimize, fallback to the original image - return { - buffer: upstreamBuffer, - contentType: upstreamType, - maxAge: nextConfig.images.minimumCacheTTL, - etag: upstreamEtag, - upstreamEtag, - error, - } - } else { - throw new ImageError( - 400, - 'Unable to optimize image and unable to fallback to upstream image' - ) - } - } + return imageOptimizerTransform(imageUpstream, paramsResult, nextConfig, { + isValidMime, + previousOutput: previouslyCachedImage + ? { + buffer: previouslyCachedImage.buffer, + maxAge: + opts.previousCacheEntry?.cacheControl?.revalidate || undefined, + etag: previouslyCachedImage.etag, + upstreamEtag: previouslyCachedImage.upstreamEtag, + } + : undefined, + logger: opts.silent ? undefined : Log, + handleDevOutput: + opts.isDev && + paramsResult.width <= BLUR_IMG_SIZE && + paramsResult.quality === BLUR_QUALITY + ? makeBlurPlaceholder + : undefined, + }) } function getFileNameWithExtension( @@ -1320,11 +879,3 @@ export function sendResponse( } } } - -export async function getImageSize(buffer: Buffer): Promise<{ - width?: number - height?: number -}> { - const { width, height } = imageSizeOf(buffer) - return { width, height } -} diff --git a/packages/next/src/server/image-optimizer/detect-content-type.ts b/packages/next/src/server/image-optimizer/detect-content-type.ts new file mode 100644 index 000000000000..435a927208a4 --- /dev/null +++ b/packages/next/src/server/image-optimizer/detect-content-type.ts @@ -0,0 +1,143 @@ +import { detector } from 'next/dist/compiled/image-detector/detector.js' +import { + AVIF, + BMP, + GIF, + HEIC, + ICNS, + ICO, + JPEG, + JP2, + JXL, + PDF, + PNG, + SVG, + TIFF, + WEBP, +} from './image-type' + +/** + * Inspects the first few bytes of a buffer to determine if + * it matches the "magic number" of known file signatures. + * https://en.wikipedia.org/wiki/List_of_file_signatures + */ +export async function detectContentType( + buffer: Buffer +): Promise { + if (buffer.byteLength === 0) { + return null + } + if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) { + return JPEG + } + if ( + [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every( + (b, i) => buffer[i] === b + ) + ) { + return PNG + } + if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) { + return GIF + } + if ( + [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every( + (b, i) => !b || buffer[i] === b + ) + ) { + return WEBP + } + if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) { + return SVG + } + if ([0x3c, 0x73, 0x76, 0x67].every((b, i) => buffer[i] === b)) { + return SVG + } + if ( + [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every( + (b, i) => !b || buffer[i] === b + ) + ) { + return AVIF + } + if ([0x00, 0x00, 0x01, 0x00].every((b, i) => buffer[i] === b)) { + return ICO + } + if ([0x69, 0x63, 0x6e, 0x73].every((b, i) => buffer[i] === b)) { + return ICNS + } + if ([0x49, 0x49, 0x2a, 0x00].every((b, i) => buffer[i] === b)) { + return TIFF + } + if ([0x42, 0x4d].every((b, i) => buffer[i] === b)) { + return BMP + } + if ([0xff, 0x0a].every((b, i) => buffer[i] === b)) { + return JXL + } + if ( + [ + 0x00, 0x00, 0x00, 0x0c, 0x4a, 0x58, 0x4c, 0x20, 0x0d, 0x0a, 0x87, 0x0a, + ].every((b, i) => buffer[i] === b) + ) { + return JXL + } + if ( + [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x68, 0x65, 0x69, 0x63].every( + (b, i) => !b || buffer[i] === b + ) + ) { + return HEIC + } + if ([0x25, 0x50, 0x44, 0x46, 0x2d].every((b, i) => buffer[i] === b)) { + return PDF + } + if ( + [ + 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a, + ].every((b, i) => buffer[i] === b) + ) { + return JP2 + } + + const format = detector(buffer.subarray(0, 1024)) + + switch (format) { + case 'webp': + return WEBP + case 'png': + return PNG + case 'jpg': + return JPEG + case 'gif': + return GIF + case 'svg': + return SVG + case 'jxl': + case 'jxl-stream': + return JXL + case 'jp2': + return JP2 + case 'tiff': + return TIFF + case 'bmp': + return BMP + case 'ico': + return ICO + case 'icns': + return ICNS + case 'heif': + case 'cur': + case 'dds': + case 'j2c': + case 'ktx': + case 'pnm': + case 'psd': + case 'tga': + case undefined: + return null // unsupported formats + default: + format satisfies never // exhaustive check + return null // impossible to reach + } +} diff --git a/packages/next/src/server/image-optimizer/extract-etag.ts b/packages/next/src/server/image-optimizer/extract-etag.ts new file mode 100644 index 000000000000..5455a98c8713 --- /dev/null +++ b/packages/next/src/server/image-optimizer/extract-etag.ts @@ -0,0 +1,29 @@ +import { createHash } from 'crypto' + +export function getHash(items: (string | number | Buffer)[]) { + const hash = createHash('sha256') + for (let item of items) { + if (typeof item === 'number') hash.update(String(item)) + else { + hash.update(item) + } + } + // See https://en.wikipedia.org/wiki/Base64#URL_applications + return hash.digest('base64url') +} + +export function extractEtag( + etag: string | null | undefined, + imageBuffer: Buffer +) { + if (etag) { + // upstream etag needs to be base64url encoded due to weak etag signature + // as we store this in the cache-entry file name. + return Buffer.from(etag).toString('base64url') + } + return getImageEtag(imageBuffer) +} + +export function getImageEtag(image: Buffer) { + return getHash([image]) +} diff --git a/packages/next/src/server/image-optimizer/get-image-size.ts b/packages/next/src/server/image-optimizer/get-image-size.ts new file mode 100644 index 000000000000..f2b2c0a68532 --- /dev/null +++ b/packages/next/src/server/image-optimizer/get-image-size.ts @@ -0,0 +1,9 @@ +import imageSizeOf from 'next/dist/compiled/image-size' + +export async function getImageSize(buffer: Buffer): Promise<{ + width?: number + height?: number +}> { + const { width, height } = imageSizeOf(buffer) + return { width, height } +} diff --git a/packages/next/src/server/image-optimizer/get-max-age.ts b/packages/next/src/server/image-optimizer/get-max-age.ts new file mode 100644 index 000000000000..8eac077bed61 --- /dev/null +++ b/packages/next/src/server/image-optimizer/get-max-age.ts @@ -0,0 +1,32 @@ +function parseCacheControl( + str: string | null | undefined +): Map { + const map = new Map() + if (!str) { + return map + } + for (let directive of str.split(',')) { + let [key, value] = directive.trim().split('=', 2) + key = key.toLowerCase() + if (value) { + value = value.toLowerCase() + } + map.set(key, value) + } + return map +} + +export function getMaxAge(str: string | null | undefined): number { + const map = parseCacheControl(str) + if (map) { + let age = map.get('s-maxage') || map.get('max-age') || '' + if (age.startsWith('"') && age.endsWith('"')) { + age = age.slice(1, -1) + } + const n = parseInt(age, 10) + if (!isNaN(n)) { + return n + } + } + return 0 +} diff --git a/packages/next/src/server/image-optimizer/get-previously-cached-image-or-null.ts b/packages/next/src/server/image-optimizer/get-previously-cached-image-or-null.ts new file mode 100644 index 000000000000..8c443204bf0c --- /dev/null +++ b/packages/next/src/server/image-optimizer/get-previously-cached-image-or-null.ts @@ -0,0 +1,22 @@ +import type { + CachedImageValue, + IncrementalCacheEntry, +} from '../response-cache/types' +import type { ImageUpstream } from './transform' + +export function getPreviouslyCachedImageOrNull( + upstreamImage: ImageUpstream, + previousCacheEntry: IncrementalCacheEntry | null | undefined +): CachedImageValue | null { + if ( + previousCacheEntry?.value?.kind === 'IMAGE' && + // Images that are SVGs, animated or failed the optimization previously end up using upstreamEtag as their etag as well, + // in these cases we want to trigger a new "optimization" attempt. + previousCacheEntry.value.upstreamEtag !== previousCacheEntry.value.etag && + // and the upstream etag is the same as the previous cache entry's + upstreamImage.etag === previousCacheEntry.value.upstreamEtag + ) { + return previousCacheEntry.value + } + return null +} diff --git a/packages/next/src/server/image-optimizer/image-error.ts b/packages/next/src/server/image-optimizer/image-error.ts new file mode 100644 index 000000000000..f302fdb9b703 --- /dev/null +++ b/packages/next/src/server/image-optimizer/image-error.ts @@ -0,0 +1,14 @@ +export class ImageError extends Error { + statusCode: number + + constructor(statusCode: number, message: string) { + super(message) + + // ensure an error status is used > 400 + if (statusCode >= 400) { + this.statusCode = statusCode + } else { + this.statusCode = 500 + } + } +} diff --git a/packages/next/src/server/image-optimizer/image-type.ts b/packages/next/src/server/image-optimizer/image-type.ts new file mode 100644 index 000000000000..bd64ed6f9ebe --- /dev/null +++ b/packages/next/src/server/image-optimizer/image-type.ts @@ -0,0 +1,14 @@ +export const AVIF = 'image/avif' +export const WEBP = 'image/webp' +export const PNG = 'image/png' +export const JPEG = 'image/jpeg' +export const JXL = 'image/jxl' +export const JP2 = 'image/jp2' +export const HEIC = 'image/heic' +export const GIF = 'image/gif' +export const SVG = 'image/svg+xml' +export const ICO = 'image/x-icon' +export const ICNS = 'image/x-icns' +export const TIFF = 'image/tiff' +export const BMP = 'image/bmp' +export const PDF = 'application/pdf' diff --git a/packages/next/src/server/image-optimizer/transform.ts b/packages/next/src/server/image-optimizer/transform.ts new file mode 100644 index 000000000000..c89ec5d7ed79 --- /dev/null +++ b/packages/next/src/server/image-optimizer/transform.ts @@ -0,0 +1,321 @@ +// WARNING: Please keep this module lightweight with very few imports since +// we intend to run it in a child process in the future. Please do NOT +// add new imports without considering their impact on its dependency graph. +import isAnimated from 'next/dist/compiled/is-animated' +import type { NextConfigComplete } from '../config-shared' +import isError from '../../lib/is-error' +import { detectContentType } from './detect-content-type' +import { + AVIF, + BMP, + GIF, + HEIC, + ICNS, + ICO, + JPEG, + JXL, + PNG, + SVG, + WEBP, +} from './image-type' +import { getImageEtag } from './extract-etag' +import { getMaxAge } from './get-max-age' +import { ImageError } from './image-error' + +const ANIMATABLE_TYPES = [WEBP, PNG, GIF] +const BYPASS_TYPES = [SVG, ICO, ICNS, BMP, JXL, HEIC] + +let _sharp: typeof import('sharp').default + +export interface ImageUpstream { + buffer: Buffer + contentType: string | null | undefined + cacheControl: string | null | undefined + etag: string +} + +export interface ImageOptimizerTransformParams { + href: string + width: number + quality: number + mimeType: string +} + +export type ImageOptimizerTransformConfig = { + experimental: Pick< + NextConfigComplete['experimental'], + | 'imgOptConcurrency' + | 'imgOptOperationCache' + | 'imgOptMaxInputPixels' + | 'imgOptSequentialRead' + | 'imgOptTimeoutInSeconds' + > + images: Pick< + NextConfigComplete['images'], + 'dangerouslyAllowSVG' | 'minimumCacheTTL' + > +} + +export interface ImageOptimizerTransformLogger { + error(...args: unknown[]): void + warnOnce(message: string): void +} + +export interface ImageOptimizerTransformOptions { + isValidMime: (contentType: string) => boolean + previousOutput?: { + buffer: Buffer + maxAge?: number + etag: string + upstreamEtag: string + } + logger?: ImageOptimizerTransformLogger + handleDevOutput?: ( + buffer: Buffer, + contentType: string + ) => Promise<{ buffer: Buffer; contentType: string }> +} + +export interface ImageOptimizerResult { + buffer: Buffer + contentType: string + maxAge: number + etag: string + upstreamEtag: string + error?: unknown +} + +export function getSharp( + concurrency: number | null | undefined, + operationCache: boolean | null | undefined +) { + if (_sharp) { + return _sharp + } + try { + _sharp = require('sharp') as typeof import('sharp').default + _sharp.block({ operation: ['VipsForeignLoad'] }) + _sharp.unblock({ + operation: [ + 'VipsForeignLoadHeif', // avif + 'VipsForeignLoadJpeg', + 'VipsForeignLoadNsgif', + 'VipsForeignLoadPng', + 'VipsForeignLoadSvg', + 'VipsForeignLoadTiff', + 'VipsForeignLoadWebp', + ], + }) + if (typeof operationCache === 'boolean') { + _sharp.cache(operationCache) + } + if (_sharp.concurrency() > 1) { + // Reducing concurrency should reduce the memory usage too. + // We more aggressively reduce in dev but also reduce in prod. + // https://sharp.pixelplumbing.com/api-utility#concurrency + const divisor = process.env.NODE_ENV === 'development' ? 4 : 2 + _sharp.concurrency( + concurrency ?? Math.floor(Math.max(_sharp.concurrency() / divisor, 1)) + ) + } + } catch (e: unknown) { + if (isError(e) && e.code === 'MODULE_NOT_FOUND') { + throw new Error( + 'Module `sharp` not found. Please run `npm install --cpu=wasm32 sharp` to install it.' + ) + } + throw e + } + return _sharp +} + +export async function optimizeImage({ + buffer, + contentType, + quality, + width, + height, + concurrency, + operationCache, + limitInputPixels, + sequentialRead, + timeoutInSeconds, +}: { + buffer: Buffer + contentType: string + quality: number + width: number + height?: number + concurrency?: number | null + operationCache?: boolean | null | undefined + limitInputPixels?: number + sequentialRead?: boolean | null + timeoutInSeconds?: number +}): Promise { + const sharp = getSharp(concurrency, operationCache) + const transformer = sharp(buffer, { + limitInputPixels, + sequentialRead: sequentialRead ?? undefined, + }) + .timeout({ + seconds: timeoutInSeconds ?? 7, + }) + .rotate() + + if (height) { + transformer.resize(width, height) + } else { + transformer.resize(width, undefined, { + withoutEnlargement: true, + }) + } + + if (contentType === AVIF) { + transformer.avif({ + // Scale the quality to try and match webp. This ratio was derived + // from sharp's default 80 (webp) and 50 (avif), and then verified + // using dssim and ssimulacra2 visual quality tests. + quality: Math.max(Math.round(quality * (50 / 80)), 1), + effort: 3, + }) + } else if (contentType === WEBP) { + transformer.webp({ quality }) + } else if (contentType === PNG) { + transformer.png({ quality }) + } else if (contentType === JPEG) { + transformer.jpeg({ quality, mozjpeg: true }) + } + + const optimizedBuffer = await transformer.toBuffer() + + return optimizedBuffer +} + +export async function imageOptimizerTransform( + imageUpstream: ImageUpstream, + paramsResult: ImageOptimizerTransformParams, + nextConfig: ImageOptimizerTransformConfig, + opts: ImageOptimizerTransformOptions +): Promise { + const { href, quality, width, mimeType } = paramsResult + const { buffer: upstreamBuffer, etag: upstreamEtag } = imageUpstream + const maxAge = Math.max( + nextConfig.images.minimumCacheTTL, + getMaxAge(imageUpstream.cacheControl) + ) + const upstreamType = await detectContentType(upstreamBuffer) + + if ( + !upstreamType || + !upstreamType.startsWith('image/') || + upstreamType.includes(',') + ) { + opts.logger?.error( + "The requested resource isn't a valid image for", + href, + 'received', + upstreamType + ) + throw new ImageError(400, "The requested resource isn't a valid image.") + } + if ( + upstreamType.startsWith('image/svg') && + !nextConfig.images.dangerouslyAllowSVG + ) { + opts.logger?.error( + `The requested resource "${href}" has type "${upstreamType}" but dangerouslyAllowSVG is disabled. Consider adding the "unoptimized" property to the .` + ) + throw new ImageError( + 400, + '"url" parameter is valid but image type is not allowed' + ) + } + if (ANIMATABLE_TYPES.includes(upstreamType) && isAnimated(upstreamBuffer)) { + opts.logger?.warnOnce( + `The requested resource "${href}" is an animated image so it will not be optimized. Consider adding the "unoptimized" property to the .` + ) + return { + buffer: upstreamBuffer, + contentType: upstreamType, + maxAge, + etag: upstreamEtag, + upstreamEtag, + } + } + if (BYPASS_TYPES.includes(upstreamType)) { + return { + buffer: upstreamBuffer, + contentType: upstreamType, + maxAge, + etag: upstreamEtag, + upstreamEtag, + } + } + + let contentType: string + + if (mimeType) { + contentType = mimeType + } else if ( + opts.isValidMime(upstreamType) && + upstreamType !== WEBP && + upstreamType !== AVIF + ) { + contentType = upstreamType + } else { + contentType = JPEG + } + + if (opts.previousOutput) { + return { + buffer: opts.previousOutput.buffer, + contentType, + maxAge: opts.previousOutput.maxAge || maxAge, + etag: opts.previousOutput.etag, + upstreamEtag: opts.previousOutput.upstreamEtag, + } + } + + try { + let optimizedBuffer = await optimizeImage({ + buffer: upstreamBuffer, + contentType, + quality, + width, + concurrency: nextConfig.experimental.imgOptConcurrency, + operationCache: nextConfig.experimental.imgOptOperationCache, + limitInputPixels: nextConfig.experimental.imgOptMaxInputPixels, + sequentialRead: nextConfig.experimental.imgOptSequentialRead, + timeoutInSeconds: nextConfig.experimental.imgOptTimeoutInSeconds, + }) + if (opts.handleDevOutput) { + const output = await opts.handleDevOutput(optimizedBuffer, contentType) + optimizedBuffer = output.buffer + contentType = output.contentType + } + return { + buffer: optimizedBuffer, + contentType, + maxAge, + etag: getImageEtag(optimizedBuffer), + upstreamEtag, + } + } catch (error) { + if (upstreamType) { + // If we fail to optimize, fallback to the original image + return { + buffer: upstreamBuffer, + contentType: upstreamType, + maxAge: nextConfig.images.minimumCacheTTL, + etag: upstreamEtag, + upstreamEtag, + error, + } + } else { + throw new ImageError( + 400, + 'Unable to optimize image and unable to fallback to upstream image' + ) + } + } +} diff --git a/packages/next/src/server/use-cache/use-cache-wrapper.ts b/packages/next/src/server/use-cache/use-cache-wrapper.ts index de1667537c00..8b270ba3d373 100644 --- a/packages/next/src/server/use-cache/use-cache-wrapper.ts +++ b/packages/next/src/server/use-cache/use-cache-wrapper.ts @@ -51,7 +51,9 @@ import type { ClientReferenceManifest } from '../../build/webpack/plugins/flight import { getClientReferenceManifest, + getServerActionsManifest, getServerModuleMap, + normalizeWorkerPageName, } from '../app-render/manifests-singleton' import type { CacheEntry } from '../lib/cache-handlers/types' import type { CacheSignal } from '../app-render/cache-signal' @@ -153,9 +155,13 @@ interface PublicCacheContext { type CacheContext = PrivateCacheContext | PublicCacheContext -export type CacheKeyParts = - | [buildId: string, id: string, args: unknown[]] - | [buildId: string, id: string, args: unknown[], hmrRefreshHash: string] +const nextVersion = process.env.__NEXT_VERSION as string + +export type CacheKeyParts = [ + id: string, + args: unknown[], + implementationHash: unknown, +] interface UseCachePageInnerProps { params: Promise @@ -1285,7 +1291,7 @@ async function generateCacheEntryImpl( const temporaryReferences = createServerTemporaryReferenceSet() const outerWorkUnitStore = cacheContext.outerWorkUnitStore - const [, , args] = + const [, args] = typeof encodedArguments === 'string' ? await decodeReply( encodedArguments, @@ -1982,19 +1988,6 @@ export async function cache( // In case getClientReferenceManifestSingleton is implemented using AsyncLocalStorage. const clientReferenceManifest = getClientReferenceManifest() - // Because the Action ID is not yet unique per implementation of that Action we can't - // safely reuse the results across builds yet. In the meantime we add the buildId to the - // arguments as a seed to ensure they're not reused. Remove this once Action IDs hash - // the implementation. - const buildId = workStore.deploymentId || workStore.buildId - - // In dev mode, when the HMR refresh hash is set, we include it in the - // cache key. This ensures that cache entries are not reused when server - // components have been edited. This is a very coarse approach. But it's - // also only a temporary solution until Action IDs are unique per - // implementation. Remove this once Action IDs hash the implementation. - const hmrRefreshHash = getHmrRefreshHash(workUnitStore) - const hangingInputAbortSignal = createHangingInputAbortSignal(workUnitStore) if (cacheContext.kind === 'private') { @@ -2155,9 +2148,11 @@ export async function cache( // long as the request. In development private caches are persisted across // requests, so `cacheHandlerKeyBase` (below) additionally scopes the handler // key by the request's cookies and headers. - const cacheKeyParts: CacheKeyParts = hmrRefreshHash - ? [buildId, id, args, hmrRefreshHash] - : [buildId, id, args] + const cacheKeyParts: CacheKeyParts = [ + id, + args, + await computeCacheKeyImplementationPart(workStore, workUnitStore, id), + ] const encodeCacheKeyParts = () => encodeReply(cacheKeyParts, { @@ -3616,6 +3611,71 @@ export async function cache( }) } +/** + * This returns a cache key that has to cover everything that can affect the result of the cached + * function (apart from the arguments). So + * - codeHash: the code itself that generates the return value + * - Notably, this excludes the following modules. Those are included via the Next.js version + * anyway: + * - react, react-dom, private-next-rsc-server-reference, private-next-rsc-cache-wrapper + * - runtimeEnvVars: the keys and values runtime environment variables that the code reads (and are + * not inlined) + * - the version of Next.js (to account for RSC wire format changes, or use-cache-wrapper.ts + * + * In case that granular information isn't available, fall back to + * buildId/deploymentId/hmrRefreshHash, which is a correct hash but over-invalidates way too often. + */ +async function computeCacheKeyImplementationPart( + workStore: WorkStore, + workUnitStore: WorkUnitStore, + id: string +): Promise { + let durability = workStore.durableUseCacheEntries + ? getServerActionsManifest().node[id].workers?.[ + normalizeWorkerPageName(workStore.page) + ]?.durability + : undefined + if ( + durability && + // TODO replace this with more granular tracking: a list of all imported client components + durability.referencesClientComponent !== true + ) { + // use cache is only supported in Node.js runtime. So we can use the Node.js crypto module here. + const crypto = require('crypto') as typeof import('crypto') + let runtimeEnvVarStateHash = crypto + // Hash the env var values, to not leak secrets into the cache key. + .createHash('sha256') + .update( + durability.runtimeEnvVars + .map((k) => { + // Make sure not to stringify `undefined` and `"undefined"` to the same value. + return process.env[k] != null ? `${k}=${process.env[k]}` : k + }) + .join('\0') ?? '' + ) + .digest('hex') + + // When more accurate analysis information is available, use codeHash + runtimeEnvVars + return [durability.codeHash, nextVersion, runtimeEnvVarStateHash] + } else { + // Because the Action ID is not yet unique per implementation of that Action we can't + // safely reuse the results across builds yet. In the meantime we add the buildId to the + // arguments as a seed to ensure they're not reused. Remove this once Action IDs hash + // the implementation. + const buildId = workStore.deploymentId || workStore.buildId + + // In dev mode, when the HMR refresh hash is set, we include it in the + // cache key. This ensures that cache entries are not reused when server + // components have been edited. This is a very coarse approach. But it's + // also only a temporary solution until Action IDs are unique per + // implementation. Remove this once Action IDs hash the implementation. + const hmrRefreshHash = getHmrRefreshHash(workUnitStore) + + // otherwise fall back to buildId and/or the HMR hash. + return hmrRefreshHash ? [buildId, hmrRefreshHash] : [buildId] + } +} + /** * Returns `true` if the `'use cache'` function is the page component itself, * or `generateMetadata`/`generateViewport` in a page file. diff --git a/scripts/code-freeze.js b/scripts/code-freeze.js deleted file mode 100644 index 1b0faf3a3d98..000000000000 --- a/scripts/code-freeze.js +++ /dev/null @@ -1,117 +0,0 @@ -const authToken = process.env.CODE_FREEZE_TOKEN - -if (!authToken) { - throw new Error(`missing CODE_FREEZE_TOKEN env`) -} - -const codeFreezeRule = { - context: 'Potentially publish release', - app_id: 15368, -} - -async function updateRules(newRules) { - const res = await fetch( - `https://api.github.com/repos/vercel/next.js/branches/canary/protection`, - { - method: 'PUT', - headers: { - Accept: 'application/vnd.github+json', - Authorization: `Bearer ${authToken}`, - 'X-GitHub-Api-Version': '2022-11-28', - }, - body: JSON.stringify(newRules), - } - ) - - if (!res.ok) { - throw new Error( - `Failed to check for rule ${res.status} ${await res.text()}` - ) - } -} - -async function getCurrentRules() { - const res = await fetch( - `https://api.github.com/repos/vercel/next.js/branches/canary/protection`, - { - headers: { - Accept: 'application/vnd.github+json', - Authorization: `Bearer ${authToken}`, - 'X-GitHub-Api-Version': '2022-11-28', - }, - } - ) - - if (!res.ok) { - throw new Error( - `Failed to check for rule ${res.status} ${await res.text()}` - ) - } - const data = await res.json() - - return { - required_status_checks: { - strict: data.required_status_checks.strict, - // checks: data.required_status_checks.checks, - contexts: data.required_status_checks.contexts, - }, - enforce_admins: data.enforce_admins.enabled, - required_pull_request_reviews: { - dismiss_stale_reviews: - data.required_pull_request_reviews.dismiss_stale_reviews, - require_code_owner_reviews: - data.required_pull_request_reviews.require_code_owner_reviews, - require_last_push_approval: - data.required_pull_request_reviews.require_last_push_approval, - required_approving_review_count: - data.required_pull_request_reviews.required_approving_review_count, - }, - restrictions: { - users: data.restrictions.users?.map((user) => user.login) || [], - teams: data.restrictions.teams?.map((team) => team.slug) || [], - apps: data.restrictions.apps?.map((app) => app.slug) || [], - }, - } -} - -async function main() { - const typeIdx = process.argv.indexOf('--type') - const type = process.argv[typeIdx + 1] - - if (type !== 'enable' && type !== 'disable') { - throw new Error(`--type should be enable or disable`) - } - const isEnable = type === 'enable' - const currentRules = await getCurrentRules() - const hasRule = currentRules.required_status_checks.contexts?.some((ctx) => { - return ctx === codeFreezeRule.context - }) - - console.log(currentRules) - - if (isEnable) { - if (hasRule) { - console.log(`Already enabled`) - return - } - currentRules.required_status_checks.contexts.push(codeFreezeRule.context) - await updateRules(currentRules) - console.log('Enabled code freeze') - } else { - if (!hasRule) { - console.log(`Already disabled`) - return - } - currentRules.required_status_checks.contexts = - currentRules.required_status_checks.contexts.filter( - (ctx) => ctx !== codeFreezeRule.context - ) - await updateRules(currentRules) - console.log('Disabled code freeze') - } -} - -main().catch((err) => { - console.error(err) - process.exit(1) -}) diff --git a/scripts/upload-preview-tarballs.js b/scripts/upload-preview-tarballs.js index 8e3bb5b003fd..e4e97b632348 100644 --- a/scripts/upload-preview-tarballs.js +++ b/scripts/upload-preview-tarballs.js @@ -1,5 +1,4 @@ // @ts-check -const { put } = require('@vercel/blob/client') const fs = require('node:fs/promises') const path = require('node:path') @@ -116,12 +115,6 @@ async function main() { ) } - const blobAccess = process.env.BLOB_ACCESS - if (blobAccess !== 'private' && blobAccess !== 'public') { - throw new Error( - `BLOB_ACCESS environment variable can only be "private" or "public" but got "${blobAccess}".` - ) - } const baseUrl = process.env.PREVIEW_BUILDS_BASE_URL || DEFAULT_PREVIEW_BUILDS_BASE_URL const getOidcToken = createGitHubOidcTokenGetter() @@ -129,8 +122,8 @@ async function main() { for await (const { packageName, tarballPath } of findTarballs( tarballDirectory )) { - // vercel-packages authorizes the OIDC token and answers with a client - // token scoped to this exact blob path. The bytes then flow directly to + // vercel-packages authorizes the OIDC token and answers with a presigned + // upload URL scoped to this exact blob path. The bytes flow directly to // the store, so the tarball size is not limited by a function's request // body limit. const response = await fetch( @@ -146,20 +139,21 @@ async function main() { `Response headers: ${JSON.stringify(Object.fromEntries(response.headers))}` ) } - const { clientToken } = await response.json() + const body = await response.json() const fileBuffer = await fs.readFile(tarballPath) - const { url } = await put( - `next/commits/${githubHeadSha}/${packageName}.tgz`, - fileBuffer, - { - access: blobAccess, - token: clientToken, - contentType: 'application/gzip', - multipart: true, - } - ) - console.info(`Uploaded ${packageName} -> ${url}`) + const putResponse = await fetch(body.url, { + method: 'PUT', + body: new Uint8Array(fileBuffer), + headers: { 'content-type': 'application/gzip' }, + }) + if (!putResponse.ok) { + throw new Error( + `Failed to upload ${packageName}: ${putResponse.status}. ` + + `Response headers: ${JSON.stringify(Object.fromEntries(putResponse.headers))}` + ) + } + console.info(`Uploaded ${packageName} -> ${body.downloadUrl}`) } console.info('All tarballs uploaded') diff --git a/test/e2e/app-dir/use-cache-custom-handler/use-cache-custom-handler.test.ts b/test/e2e/app-dir/use-cache-custom-handler/use-cache-custom-handler.test.ts index 4ba8967289a8..4a53cd52fd8f 100644 --- a/test/e2e/app-dir/use-cache-custom-handler/use-cache-custom-handler.test.ts +++ b/test/e2e/app-dir/use-cache-custom-handler/use-cache-custom-handler.test.ts @@ -27,15 +27,10 @@ describe('use-cache-custom-handler', () => { expect(cliOutput).toContain('ModernCustomCacheHandler::refreshTags') - // In development the cache key carries a trailing HMR refresh hash element - // (absent in production), so the args array may be followed by an optional - // quoted hash. + // The implementation parts contain either the code hash and version or the + // build ID, followed by an optional HMR refresh hash in development. expect(next.cliOutput.slice(outputIndex)).toMatch( - /ModernCustomCacheHandler::get \["(development|[A-Za-z0-9_-]+)","([0-9a-f]{2})+",\[\](,"[^"]+")?\] \[ '_N_T_\/layout', '_N_T_\/page', '_N_T_\/', '_N_T_\/index' \]/ - ) - - expect(next.cliOutput.slice(outputIndex)).toMatch( - /ModernCustomCacheHandler::set \["(development|[A-Za-z0-9_-]+)","([0-9a-f]{2})+",\[\](,"[^"]+")?\]/ + /ModernCustomCacheHandler::get \["([0-9a-f]{2})+",\[\],\["(development|[A-Za-z0-9_-]+)"(,"[^"]+")*\]\] \[ '_N_T_\/layout', '_N_T_\/page', '_N_T_\/', '_N_T_\/index' \]/ ) // Since no existing cache entry was retrieved, we don't need to call @@ -129,7 +124,7 @@ describe('use-cache-custom-handler', () => { if (isNextStart) { it('should save a short-lived cache during prerendering at buildtime', async () => { expect(next.cliOutput).toMatch( - /ModernCustomCacheHandler::set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"dynamic-cache"}]\]/ + /ModernCustomCacheHandler::set \["([0-9a-f]{2})+",\[{"id":"dynamic-cache"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")*\]\]/ ) }) } diff --git a/test/e2e/app-dir/use-cache-default-handler-expire-zero/use-cache-default-handler-expire-zero.test.ts b/test/e2e/app-dir/use-cache-default-handler-expire-zero/use-cache-default-handler-expire-zero.test.ts index e5d59a24f8e3..a555ee5dfcab 100644 --- a/test/e2e/app-dir/use-cache-default-handler-expire-zero/use-cache-default-handler-expire-zero.test.ts +++ b/test/e2e/app-dir/use-cache-default-handler-expire-zero/use-cache-default-handler-expire-zero.test.ts @@ -28,17 +28,17 @@ describe('use-cache-default-handler-expire-zero', () => { // The default handler skips storing the `expire: 0` entry (it would never // be served back in production)... expect(next.cliOutput).toMatch( - /DefaultCacheHandler: set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"expire-zero"}]\] skipped dynamic entry/ + /DefaultCacheHandler: set \["([0-9a-f]{2})+",\[{"id":"expire-zero"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")*\]\] skipped dynamic entry/ ) // ...and never reports it as stored. expect(next.cliOutput).not.toMatch( - /DefaultCacheHandler: set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"expire-zero"}]\] done/ + /DefaultCacheHandler: set \["([0-9a-f]{2})+",\[{"id":"expire-zero"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")*\]\] done/ ) // The short-lived (`expire: 60`) cache is still stored. expect(next.cliOutput).toMatch( - /DefaultCacheHandler: set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"short-lived"}]\] done/ + /DefaultCacheHandler: set \["([0-9a-f]{2})+",\[{"id":"short-lived"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")*\]\] done/ ) }) } else { @@ -50,16 +50,16 @@ describe('use-cache-default-handler-expire-zero', () => { // In development the default handler keeps `expire: 0` entries (its // minimum retention serves them warm across reloads), so it stores rather - // than skips. The dev cache key always carries a trailing HMR refresh - // hash element after the args array. + // than skips. The implementation parts include the build ID and a + // trailing HMR refresh hash. await retry(async () => { expect(next.cliOutput).toMatch( - /DefaultCacheHandler: set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"expire-zero"}],"[^"]+"\] done/ + /DefaultCacheHandler: set \["([0-9a-f]{2})+",\[{"id":"expire-zero"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")+\]\] done/ ) }) expect(next.cliOutput).not.toMatch( - /DefaultCacheHandler: set \["[A-Za-z0-9_-]+","([0-9a-f]{2})+",\[{"id":"expire-zero"}],"[^"]+"\] skipped/ + /DefaultCacheHandler: set \["([0-9a-f]{2})+",\[{"id":"expire-zero"}\],\["[A-Za-z0-9_-]+"(,"[^"]+")+\]\] skipped/ ) }) } diff --git a/test/production/app-dir/sync-io-blocks-root/sync-io-blocks-root.test.ts b/test/production/app-dir/sync-io-blocks-root/sync-io-blocks-root.test.ts index a7e57f6df3b9..d4cddaa87a62 100644 --- a/test/production/app-dir/sync-io-blocks-root/sync-io-blocks-root.test.ts +++ b/test/production/app-dir/sync-io-blocks-root/sync-io-blocks-root.test.ts @@ -1,8 +1,6 @@ import { nextTestSetup } from 'e2e-utils' -// TODO(lubieowoce): reenable when the cause of flakiness is found and fixed -// (seems to have increased sharply around 2026-08-24/25) -describe.skip('sync IO that blocks the root', () => { +describe('sync IO that blocks the root', () => { const { next } = nextTestSetup({ files: __dirname, skipStart: true, diff --git a/test/production/app-dir/use-cache-code-hash/app/env-dynamic/foo.tsx b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/foo.tsx new file mode 100644 index 000000000000..7eb4a5e4d78e --- /dev/null +++ b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/foo.tsx @@ -0,0 +1,3 @@ +export function foo() { + return 'foo-v1' +} diff --git a/test/production/app-dir/use-cache-code-hash/app/env-dynamic/logic.tsx b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/logic.tsx new file mode 100644 index 000000000000..20ed7e2b9c9c --- /dev/null +++ b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/logic.tsx @@ -0,0 +1,10 @@ +// @ts-ignore +globalThis.blackbox = (v) => ({ DECOY: v.FOOBAR }) + +// @ts-ignore +const envVar = blackbox(process.env).DECOY + +export async function logic() { + 'use cache' + return `${envVar}` +} diff --git a/test/production/app-dir/use-cache-code-hash/app/env-dynamic/page.tsx b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/page.tsx new file mode 100644 index 000000000000..d7fab7dc92d0 --- /dev/null +++ b/test/production/app-dir/use-cache-code-hash/app/env-dynamic/page.tsx @@ -0,0 +1,6 @@ +import { logic } from './logic' + +export default async function Page() { + const value = await logic() + return

{value}

+} diff --git a/test/production/app-dir/use-cache-code-hash/app/use-cache-client/page.tsx b/test/production/app-dir/use-cache-code-hash/app/use-cache-client/page.tsx index 173a193917e6..2f94db4f9e93 100644 --- a/test/production/app-dir/use-cache-code-hash/app/use-cache-client/page.tsx +++ b/test/production/app-dir/use-cache-code-hash/app/use-cache-client/page.tsx @@ -1,9 +1,15 @@ import { ClientComponent } from './client-reference' +import { preinit } from 'react-dom' import './client-reference-css.css' export default async function Page() { 'use cache' + + if (Date.now() < 0) { + // Try importing anything from react-dom + preinit('abc') + } return (

diff --git a/test/production/app-dir/use-cache-code-hash/app/use-cache/logic.tsx b/test/production/app-dir/use-cache-code-hash/app/use-cache/logic.tsx index 4f6adca8f7bc..654ee6d02f57 100644 --- a/test/production/app-dir/use-cache-code-hash/app/use-cache/logic.tsx +++ b/test/production/app-dir/use-cache-code-hash/app/use-cache/logic.tsx @@ -4,5 +4,5 @@ import { external } from 'external-dep' export async function logic() { 'use cache' - return `${foo()}:${external()}` + return `${foo()}:${external()}:${process.env.BUNDLED_NON_INLINED_ENVVAR}` } diff --git a/test/production/app-dir/use-cache-code-hash/node_modules/external-dep/index.js b/test/production/app-dir/use-cache-code-hash/node_modules/external-dep/index.js index 59b2fbc475a0..2bdc8d07e149 100644 --- a/test/production/app-dir/use-cache-code-hash/node_modules/external-dep/index.js +++ b/test/production/app-dir/use-cache-code-hash/node_modules/external-dep/index.js @@ -1,3 +1,3 @@ export function external() { - return 'external-v1' + return 'external-v1' + process.env.EXTERNAL_ENV_VAR } diff --git a/test/production/app-dir/use-cache-code-hash/use-cache-code-hash.test.ts b/test/production/app-dir/use-cache-code-hash/use-cache-code-hash.test.ts index b6b1b6e5fece..fc207c141003 100644 --- a/test/production/app-dir/use-cache-code-hash/use-cache-code-hash.test.ts +++ b/test/production/app-dir/use-cache-code-hash/use-cache-code-hash.test.ts @@ -3,7 +3,9 @@ import { nextTestSetup, type NextInstance } from 'e2e-utils' async function getCodeHashes( next: NextInstance, pages?: string[] -): Promise<{ id: string; page: string; codeHash?: string }[]> { +): Promise< + { id: string; page: string; codeHash?: string; runtimeEnvVars?: string[] }[] +> { const manifest = await next.readJSON( '.next/server/server-reference-manifest.json' ) @@ -12,6 +14,7 @@ async function getCodeHashes( id: string page: string codeHash?: string + runtimeEnvVars?: string[] }[] = [] for (const [actionId, entry] of Object.entries(manifest.node)) { for (const [workerKey, worker] of Object.entries(entry.workers)) { @@ -19,7 +22,8 @@ async function getCodeHashes( hashes.push({ id: actionId, page: workerKey, - codeHash: worker?.codeHash, + codeHash: worker?.durability?.codeHash, + runtimeEnvVars: worker?.durability?.runtimeEnvVars, }) } } @@ -32,134 +36,174 @@ async function getCodeHashes( ;(process.env.IS_TURBOPACK_TEST ? describe : describe.skip)( 'app-dir - use-cache-code-hash', () => { - const { next } = nextTestSetup({ - files: __dirname, - skipStart: true, + describe('basic', () => { + const { next } = nextTestSetup({ + files: __dirname, + }) + + it('emits codeHash only for use-cache functions', async () => { + const values = Object.values(await getCodeHashes(next)) + expect(values.length).toBe(4) + + const valuesWithoutCodeHash = values.filter( + (e) => typeof e.codeHash !== 'string' + ) + expect(valuesWithoutCodeHash.length).toBe(1) + expect(valuesWithoutCodeHash[0].page).toBe('app/use-server/page') + }) + + it('lists non-inlined runtime env vars', async () => { + const data = await getCodeHashes(next) + + expect(data.find((e) => e.page === 'app/use-cache/page').runtimeEnvVars) + .toMatchInlineSnapshot(` + [ + "BUNDLED_NON_INLINED_ENVVAR", + "NEXT_PRIVATE_DEBUG_CACHE", + "__NEXT_DEV_SERVER", + "NEXT_PRIVATE_DEBUG_RUNTIME_DATA", + "NEXT_OTEL_VERBOSE", + "NEXT_OTEL_PERFORMANCE_PREFIX", + "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY", + "EXTERNAL_ENV_VAR", + ] + `) + + expect( + data.find((e) => e.page === 'app/env-dynamic/page').runtimeEnvVars + ).toMatchInlineSnapshot(` + [ + "NEXT_PRIVATE_DEBUG_CACHE", + "__NEXT_DEV_SERVER", + "NEXT_PRIVATE_DEBUG_RUNTIME_DATA", + "NEXT_OTEL_VERBOSE", + "NEXT_OTEL_PERFORMANCE_PREFIX", + "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY", + ] + `) + }) }) - it('emits codeHash only for use-cache functions', async () => { - await next.build() - const values = Object.values(await getCodeHashes(next)) - expect(values.length).toBe(3) + describe('invalidation', () => { + const { next } = nextTestSetup({ + files: __dirname, + skipStart: true, + }) - const valuesWithoutCodeHash = values.filter( - (e) => typeof e.codeHash !== 'string' - ) - expect(valuesWithoutCodeHash.length).toBe(1) - expect(valuesWithoutCodeHash[0].page).toBe('app/use-server/page') - }) - - it('codeHash stays stable across identical rebuilds', async () => { - await next.build() - const first = await getCodeHashes(next) + it('codeHash stays stable across identical rebuilds', async () => { + await next.build() + const first = await getCodeHashes(next) - await next.build() - const second = await getCodeHashes(next) + await next.build() + const second = await getCodeHashes(next) - expect(second).toEqual(first) - }) + expect(second).toEqual(first) + }) - it("changes when the action's own code changes", async () => { - await next.build() - const before = await getCodeHashes(next, ['app/use-cache/page']) + it("changes when the action's own code changes", async () => { + await next.build() + const before = await getCodeHashes(next, ['app/use-cache/page']) - await next.patchFile( - 'app/use-cache/logic.tsx', - `import { foo } from './foo' + await next.patchFile( + 'app/use-cache/logic.tsx', + `import { foo } from './foo' import { external } from 'external-dep' export async function logic() { 'use cache' - return \`\${foo()}:\${external()}\` + ":other" + return \`\${foo()}:\${external()}:\${process.env.BUNDLED_NON_INLINED_ENVVAR}\` + ":other" } `, - async () => { - await next.build() - const after = await getCodeHashes(next, ['app/use-cache/page']) - - // Same set of actions, but the hash for the changed action differs. - expect(Object.keys(after)).toEqual(Object.keys(before)) - expect(after).not.toEqual(before) - } - ) - }) - - it('codeHash changes when an imported dependency changes', async () => { - await next.build() - const before = await getCodeHashes(next, ['app/use-cache/page']) - - await next.patchFile( - 'app/use-cache/foo.tsx', - `export function foo() { + async () => { + await next.build() + const after = await getCodeHashes(next, ['app/use-cache/page']) + + // Same set of actions, but the hash for the changed action differs. + expect(Object.keys(after)).toEqual(Object.keys(before)) + expect(after).not.toEqual(before) + } + ) + }) + + it('codeHash changes when an imported dependency changes', async () => { + await next.build() + const before = await getCodeHashes(next, ['app/use-cache/page']) + + await next.patchFile( + 'app/use-cache/foo.tsx', + `export function foo() { return "foo-v2" } `, - async () => { - await next.build() - const after = await getCodeHashes(next, ['app/use-cache/page']) - - expect(Object.keys(after)).toEqual(Object.keys(before)) - expect(after).not.toEqual(before) - } - ) - }) - - it('codeHash changes when an external (node_modules) dependency changes', async () => { - await next.build() - const before = await getCodeHashes(next, ['app/use-cache/page']) - - await next.patchFile( - 'node_modules/external-dep/index.js', - `export function external() { - return 'external-v2' + async () => { + await next.build() + const after = await getCodeHashes(next, ['app/use-cache/page']) + + expect(Object.keys(after)).toEqual(Object.keys(before)) + expect(after).not.toEqual(before) + } + ) + }) + + it('codeHash changes when an external (node_modules) dependency changes', async () => { + await next.build() + const before = await getCodeHashes(next, ['app/use-cache/page']) + + await next.patchFile( + 'node_modules/external-dep/index.js', + `export function external() { + return 'external-v2' + process.env.EXTERNAL_ENV_VAR } `, - async () => { - await next.build() - const after = await getCodeHashes(next, ['app/use-cache/page']) - - expect(Object.keys(after)).toEqual(Object.keys(before)) - expect(after).not.toEqual(before) - } - ) - }) - - it('codeHash does not change when an unrelated file changes', async () => { - await next.build() - const before = await getCodeHashes(next, ['app/use-cache/page']) - - await next.patchFile( - 'app/use-cache/unrelated.ts', - `export function unrelated() { + async () => { + await next.build() + const after = await getCodeHashes(next, ['app/use-cache/page']) + + expect(Object.keys(after)).toEqual(Object.keys(before)) + expect(after).not.toEqual(before) + } + ) + }) + + it('codeHash does not change when an unrelated file changes', async () => { + await next.build() + const before = await getCodeHashes(next, ['app/use-cache/page']) + + await next.patchFile( + 'app/use-cache/unrelated.ts', + `export function unrelated() { return 'unrelated-v2' } `, - async () => { - await next.build() - const after = await getCodeHashes(next, ['app/use-cache/page']) - - expect(after).toEqual(before) - } - ) - }) - - it('codeHash does not change when a client file changes', async () => { - await next.build() - const before = await getCodeHashes(next, ['app/use-cache-client/page']) - - await next.patchFile( - 'app/use-cache-client/data.ts', - `export function data() { + async () => { + await next.build() + const after = await getCodeHashes(next, ['app/use-cache/page']) + + expect(after).toEqual(before) + } + ) + }) + + it('codeHash does not change when a client file changes', async () => { + await next.build() + const before = await getCodeHashes(next, ['app/use-cache-client/page']) + + await next.patchFile( + 'app/use-cache-client/data.ts', + `export function data() { return 'data-v2' } `, - async () => { - await next.build() - const after = await getCodeHashes(next, ['app/use-cache-client/page']) - - expect(after).toEqual(before) - } - ) + async () => { + await next.build() + const after = await getCodeHashes(next, [ + 'app/use-cache-client/page', + ]) + + expect(after).toEqual(before) + } + ) + }) }) } ) diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/action.ts b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/action.ts new file mode 100644 index 000000000000..6119517935c9 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/action.ts @@ -0,0 +1,4 @@ +export async function action() { + 'use cache' + return 'first' +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/get-data.ts b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/get-data.ts new file mode 100644 index 000000000000..4b62504ea037 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/get-data.ts @@ -0,0 +1,7 @@ +export async function getData(action) { + 'use cache: remote' + + console.log(action) + + return Math.random() +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/page.tsx new file mode 100644 index 000000000000..37edb04ff7f3 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-cache/page.tsx @@ -0,0 +1,9 @@ +import { connection } from 'next/server' +import { action } from './action' +import { getData } from './get-data' + +export default async function Page() { + await connection() + + return {await getData(action)} +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/client.tsx b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/client.tsx new file mode 100644 index 000000000000..fc07343ca9c0 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/client.tsx @@ -0,0 +1,5 @@ +'use client' + +export function client() { + return 'first' +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/get-data.ts b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/get-data.ts new file mode 100644 index 000000000000..0dcfdc19520c --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/get-data.ts @@ -0,0 +1,7 @@ +export async function getData(client) { + 'use cache: remote' + + console.log(client) + + return Math.random() +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/page.tsx new file mode 100644 index 000000000000..02fa0fd11a36 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-client/page.tsx @@ -0,0 +1,9 @@ +import { connection } from 'next/server' +import { client } from './client' +import { getData } from './get-data' + +export default async function Page() { + await connection() + + return {await getData(client)} +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/action.ts b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/action.ts new file mode 100644 index 000000000000..9bf1e7d02a9f --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/action.ts @@ -0,0 +1,4 @@ +export async function action() { + 'use server' + return 'first' +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/get-data.ts b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/get-data.ts new file mode 100644 index 000000000000..4b62504ea037 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/get-data.ts @@ -0,0 +1,7 @@ +export async function getData(action) { + 'use cache: remote' + + console.log(action) + + return Math.random() +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/page.tsx new file mode 100644 index 000000000000..37edb04ff7f3 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/argument-use-server/page.tsx @@ -0,0 +1,9 @@ +import { connection } from 'next/server' +import { action } from './action' +import { getData } from './get-data' + +export default async function Page() { + await connection() + + return {await getData(action)} +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/client/client.tsx b/test/production/app-dir/use-cache-cross-deployment/app/client/client.tsx new file mode 100644 index 000000000000..06cb1e111f6e --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/client/client.tsx @@ -0,0 +1,5 @@ +'use client' + +export default function Client({ children }: { children: React.ReactNode }) { + return {children} +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/client/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/client/page.tsx new file mode 100644 index 000000000000..39b38020aaba --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/client/page.tsx @@ -0,0 +1,23 @@ +import { Suspense } from 'react' +import { cacheLife } from 'next/cache' +import { connection } from 'next/server' +import { getDate } from '../logic' +import Client from './client' + +async function DynamicCache({ id }: { id: string }) { + 'use cache: remote' + cacheLife('days') + return {getDate()} +} + +export default async function Page() { + await connection() + + return ( +

+ + + +
+ ) +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/logic.ts b/test/production/app-dir/use-cache-cross-deployment/app/logic.ts new file mode 100644 index 000000000000..589507ba467f --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/logic.ts @@ -0,0 +1,3 @@ +export function getDate() { + return `${new Date().toISOString()}:${process.env.FOOBAR}` +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/nested/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/nested/page.tsx new file mode 100644 index 000000000000..17b39bc213b2 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/nested/page.tsx @@ -0,0 +1,20 @@ +import { connection } from 'next/server' +import { getDate } from '../logic' + +async function getInnerData() { + 'use cache: remote' + + return getDate() +} + +async function getOuterData() { + 'use cache: remote' + + return getInnerData() +} + +export default async function Page() { + await connection() + + return {await getOuterData()} +} diff --git a/test/production/app-dir/use-cache-cross-deployment/app/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/page.tsx index 5ddaadda5cfc..9bb9b6d57b5d 100644 --- a/test/production/app-dir/use-cache-cross-deployment/app/page.tsx +++ b/test/production/app-dir/use-cache-cross-deployment/app/page.tsx @@ -1,16 +1,17 @@ import { Suspense } from 'react' import { connection } from 'next/server' +import { getDate } from './logic' async function getData() { - 'use cache' + 'use cache: remote' - return new Date().toISOString() + return getDate() } async function AsyncComp() { let data = await getData() - return

{data}

+ return {data} } export default async function Home() { @@ -18,7 +19,7 @@ export default async function Home() { return (
- Loading...

}> + Loading...}>
diff --git a/test/production/app-dir/use-cache-cross-deployment/app/prerender/page.tsx b/test/production/app-dir/use-cache-cross-deployment/app/prerender/page.tsx index eaa994cc8c6f..aad28420e07c 100644 --- a/test/production/app-dir/use-cache-cross-deployment/app/prerender/page.tsx +++ b/test/production/app-dir/use-cache-cross-deployment/app/prerender/page.tsx @@ -1,21 +1,19 @@ import { Suspense } from 'react' import { cacheLife } from 'next/cache' +import { getDate } from '../logic' -// The id prop is just used to assert on the logged cache key in tests. async function DynamicCache({ id }: { id: string }) { - 'use cache' - cacheLife('seconds') - return

{new Date().toISOString()}

+ 'use cache: remote' + cacheLife('days') + return {getDate()} } export default function Page() { return ( -

- This page uses a short-lived "use cache", which is omitted from the - prerender, but should still be saved in the cache handler. +

-

+
) } diff --git a/test/production/app-dir/use-cache-cross-deployment/app/route/route.ts b/test/production/app-dir/use-cache-cross-deployment/app/route/route.ts new file mode 100644 index 000000000000..17a80088b878 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/app/route/route.ts @@ -0,0 +1,14 @@ +import { connection } from 'next/server' +import { getDate } from '../logic' + +async function getData() { + 'use cache: remote' + + return getDate() +} + +export async function GET() { + await connection() + + return new Response(await getData()) +} diff --git a/test/production/app-dir/use-cache-cross-deployment/handler-remote.js b/test/production/app-dir/use-cache-cross-deployment/handler-remote.js new file mode 100644 index 000000000000..93078381c104 --- /dev/null +++ b/test/production/app-dir/use-cache-cross-deployment/handler-remote.js @@ -0,0 +1,119 @@ +// @ts-check + +const fs = require('fs') +const path = require('path') + +/** + * @type {Record} + */ +let data = {} +try { + data = JSON.parse( + fs.readFileSync(path.join(__dirname, 'handler-remote-data.json'), 'utf8') + ) +} catch (_e) {} + +const client = { + /** + * @param {string} key + * @returns unknown + */ + async get(key) { + return data[key] + }, + /** + * + * @param {string} key + * @param {string} value + * @param {{expire?: number} | undefined} options + */ + async set(key, value, options) { + // options.expire is ignored in this impl + data[key] = value + fs.writeFileSync( + path.join(__dirname, 'handler-remote-data.json'), + JSON.stringify(data, null, 2) + ) + }, +} + +/** + * @type {import('next/dist/server/lib/cache-handlers/types').CacheHandler} + */ +module.exports = { + async get(cacheKey, softTags) { + console.log('CustomCacheHandler::get', cacheKey, JSON.stringify([softTags])) + // Retrieve from Redis + const stored = await client.get(cacheKey) + if (!stored) return undefined + + // Deserialize the entry + const data = JSON.parse(stored) + + // Reconstruct the ReadableStream from stored data + return { + value: new ReadableStream({ + start(controller) { + controller.enqueue(Buffer.from(data.value, 'base64')) + controller.close() + }, + }), + tags: data.tags, + stale: data.stale, + timestamp: data.timestamp, + expire: data.expire, + revalidate: data.revalidate, + } + }, + + async set(cacheKey, pendingEntry) { + console.log('CustomCacheHandler::set', cacheKey) + const entry = await pendingEntry + + // Read the stream to get the data + const reader = entry.value.getReader() + const chunks = [] + + try { + while (true) { + const { done, value } = await reader.read() + if (done) break + chunks.push(value) + } + } finally { + reader.releaseLock() + } + + // Combine chunks and serialize for Redis storage + const data = Buffer.concat(chunks.map((chunk) => Buffer.from(chunk))) + + await client.set( + cacheKey, + JSON.stringify({ + value: data.toString('base64'), + tags: entry.tags, + stale: entry.stale, + timestamp: entry.timestamp, + expire: entry.expire, + revalidate: entry.revalidate, + }), + { expire: entry.expire } + ) + }, + + async refreshTags() { + // No-op for basic Redis implementation + // Could sync with external tag service if needed + }, + + async getExpiration(tags) { + // Return 0 to indicate no tags have been revalidated + // Could query Redis for tag expiration timestamps if tracking them + return 0 + }, + + async updateTags(tags, durations) { + // Implement tag-based invalidation if needed + // Could iterate over keys with matching tags and delete them + }, +} diff --git a/test/production/app-dir/use-cache-cross-deployment/next.config.js b/test/production/app-dir/use-cache-cross-deployment/next.config.js index 7e37ff4abece..f2bb51450646 100644 --- a/test/production/app-dir/use-cache-cross-deployment/next.config.js +++ b/test/production/app-dir/use-cache-cross-deployment/next.config.js @@ -5,12 +5,17 @@ const nextConfig = { cacheComponents: true, cacheHandlers: { default: require.resolve('./handler.js'), + remote: require.resolve('./handler-remote.js'), }, generateBuildId: process.env.BUILD_ID ? async () => { return process.env.BUILD_ID } : undefined, + experimental: { + durableUseCacheEntries: + process.env.DURABLE_USE_CACHE_ENTRIES === '1' ? true : undefined, + }, } module.exports = nextConfig diff --git a/test/production/app-dir/use-cache-cross-deployment/use-cache-cross-deployment.test.ts b/test/production/app-dir/use-cache-cross-deployment/use-cache-cross-deployment.test.ts index a640c6d6187b..2e3d5a8e10a3 100644 --- a/test/production/app-dir/use-cache-cross-deployment/use-cache-cross-deployment.test.ts +++ b/test/production/app-dir/use-cache-cross-deployment/use-cache-cross-deployment.test.ts @@ -1,6 +1,145 @@ -import { nextTestSetup } from 'e2e-utils' +import { type NextInstance, nextTestSetup } from 'e2e-utils' -const isoDateRegExp = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/ +async function execute(next: NextInstance, envKey: string, id: string) { + await next.stop() + if (envKey !== 'default') { + next.env[envKey] = id + } + try { + await next.start() + + let keyRoot: string, + keyNested: string, + keyArgumentUseCache: string, + keyArgumentUseClient: string, + keyArgumentUseServer: string, + keyPrerender: string, + keyClient: string, + keyRoute: string, + dataRoot: string, + dataNested: string, + dataArgumentUseCache: string, + dataArgumentUseClient: string, + dataArgumentUseServer: string, + dataPrerender: string, + dataClient: string, + dataRoute: string + { + const match = next.cliOutput.match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/prerender\/layout","_N_T_\/prerender\/page","_N_T_\/prerender"\]\]$/m + ) + expect(match).toBeArray() + keyPrerender = match[0] + const browser = await next.browser(`/prerender`) + dataPrerender = await browser.elementById('data').text() + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/client`) + dataClient = await browser.elementById('data').text() + // Client references are only known during serialization, so they aren't part of the coarse + // cache key; instead the coarse key holds a redirect entry and the real entry lives at a + // "specific" key = coarse key + a hash suffix derived from the accessed client references' + // resolved manifest values. + const matches = [ + ...logs().matchAll( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/client\/layout","_N_T_\/client\/page","_N_T_\/client"\]\]$/gm + ), + ] + expect(matches).not.toBeEmpty() + keyClient = matches.map((m) => m[0]).join('\n') + } + + { + const logs = next.getCliOutputFromHere() + const response = await next.fetch(`/route`) + dataRoute = await response.text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/route","_N_T_\/route\/route"\]\]$/m + ) + expect(match).toBeArray() + keyRoute = match[0] + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/nested`) + dataNested = await browser.elementById('data').text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/nested\/layout","_N_T_\/nested\/page","_N_T_\/nested"\]\]$/m + ) + expect(match).toBeArray() + keyNested = match[0] + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/argument-use-cache`) + dataArgumentUseCache = await browser.elementById('data').text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/argument-use-cache\/layout","_N_T_\/argument-use-cache\/page","_N_T_\/argument-use-cache"\]\]$/m + ) + expect(match).toBeArray() + keyArgumentUseCache = match[0] + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/argument-use-client`) + dataArgumentUseClient = await browser.elementById('data').text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/argument-use-client\/layout","_N_T_\/argument-use-client\/page","_N_T_\/argument-use-client"\]\]$/m + ) + expect(match).toBeArray() + keyArgumentUseClient = match[0] + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/argument-use-server`) + dataArgumentUseServer = await browser.elementById('data').text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/argument-use-server\/layout","_N_T_\/argument-use-server\/page","_N_T_\/argument-use-server"\]\]$/m + ) + expect(match).toBeArray() + keyArgumentUseServer = match[0] + } + + { + const logs = next.getCliOutputFromHere() + const browser = await next.browser(`/`) + dataRoot = await browser.elementById('data').text() + const match = logs().match( + /^CustomCacheHandler::get .* \[\["_N_T_\/layout","_N_T_\/page","_N_T_\/","_N_T_\/index"\]\]$/m + ) + expect(match).toBeArray() + keyRoot = match[0] + } + return { + keyRoot, + keyNested, + keyArgumentUseCache, + keyArgumentUseClient, + keyArgumentUseServer, + keyPrerender, + keyClient, + keyRoute, + dataRoot, + dataNested, + dataArgumentUseCache, + dataArgumentUseClient, + dataArgumentUseServer, + dataPrerender, + dataClient, + dataRoute, + } + } finally { + if (envKey !== 'default') { + delete next.env[envKey] + } + } +} describe.each(['NEXT_DEPLOYMENT_ID', 'BUILD_ID', 'default'])( 'use-cache-cross-deployment with %s', @@ -16,47 +155,219 @@ describe.each(['NEXT_DEPLOYMENT_ID', 'BUILD_ID', 'default'])( // In the future, this assertion can be relaxed to only prevent sharing if the implementation // changed. it('should not have the same cache key across deployments', async () => { - async function execute(id: string) { - await next.stop() - if (envKey !== 'default') { - next.env[envKey] = id + const key1 = await execute(next, envKey, 'dpl-id-1') + const key2 = await execute(next, envKey, 'dpl-id-2') + // Second run should not use the same key + expect(key1.keyRoot).not.toBe(key2.keyRoot) + expect(key1.dataRoot).not.toBe(key2.dataRoot) + + expect(key1.keyPrerender).not.toBe(key2.keyPrerender) + expect(key1.dataPrerender).not.toBe(key2.dataPrerender) + + expect(key1.keyClient).not.toBe(key2.keyClient) + expect(key1.dataClient).not.toBe(key2.dataClient) + + expect(key1.keyRoute).not.toBe(key2.keyRoute) + expect(key1.dataRoute).not.toBe(key2.dataRoute) + }) + } +) + +// durableUseCacheEntries is only supported in Turbopack +;(process.env.IS_TURBOPACK_TEST ? describe : describe.skip)( + 'use-cache-cross-deployment with durableUseCacheEntries', + () => { + const { next, skipped } = nextTestSetup({ + files: __dirname, + disableAutoSkewProtection: true, + skipStart: true, + env: { DURABLE_USE_CACHE_ENTRIES: '1' }, + }) + + if (skipped) return + + beforeEach(async () => { + await next.deleteFile('handler-remote-data.json') + }) + + it('should not recompute when nothing changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + // Should be the same key (because the implementation didn't change) + expect(key1.keyRoot).toBe(key2.keyRoot) + expect(key1.dataRoot).toBe(key2.dataRoot) + + expect(key1.keyPrerender).toBe(key2.keyPrerender) + expect(key1.dataPrerender).toBe(key2.dataPrerender) + + expect(key1.keyRoute).toBe(key2.keyRoute) + expect(key1.dataRoute).toBe(key2.dataRoute) + + // TODO needs more granular client reference tracking + // expect(key1.keyClient).toBe(key2.keyClient) + // expect(key1.dataClient).toBe(key2.dataClient) + }) + + it('should recompute when transitive implementation changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + + let value = String(Math.random()) + await next.patchFile( + 'app/logic.ts', + `export function getDate() { + return ${JSON.stringify(value)} +}`, + async () => { + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + // Should not be the same key (because the implementation did change) + expect(key1.keyRoot).not.toBe(key2.keyRoot) + expect(key1.dataRoot).not.toBe(key2.dataRoot) + expect(key2.dataRoot).toBe(value) + + expect(key1.keyPrerender).not.toBe(key2.keyPrerender) + expect(key1.dataPrerender).not.toBe(key2.dataPrerender) + expect(key2.dataPrerender).toBe(value) + + expect(key1.keyClient).not.toBe(key2.keyClient) + expect(key1.dataClient).not.toBe(key2.dataClient) + expect(key2.dataClient).toBe(value) + + expect(key1.keyRoute).not.toBe(key2.keyRoute) + expect(key1.dataRoute).not.toBe(key2.dataRoute) + expect(key2.dataRoute).toBe(value) } - try { - await next.start() - let keyRoot: string, keyPrerender: string - - { - let match = next.cliOutput.match( - /CustomCacheHandler::get \["([A-Za-z0-9_-]+)","([0-9a-f]{2})+",\[\{"id":"dynamic-cache"\}\]\] \[\["_N_T_\/layout","_N_T_\/prerender\/layout","_N_T_\/prerender\/page","_N_T_\/prerender"\]\]/ - ) - expect(match).toBeDefined() - keyPrerender = match[0] - } - - { - let logs = next.getCliOutputFromHere() - const browser = await next.browser(`/`) - const initialData = await browser.elementById('data').text() - expect(initialData).toMatch(isoDateRegExp) - let match = logs().match( - /CustomCacheHandler::get \["([A-Za-z0-9_-]+)","([0-9a-f]{2})+",\[\]\] \[\["_N_T_\/layout","_N_T_\/page","_N_T_\/","_N_T_\/index"\]\]/ - ) - expect(match).toBeDefined() - keyRoot = match[0] - } - return { keyRoot, keyPrerender } - } finally { - if (envKey !== 'default') { - delete next.env[envKey] - } + ) + }) + + // TODO when serializing server reference arguments, we need to include the server reference's + // entropy in the argument-part of the cache key. + it.skip('should recompute when a use cache reference argument changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + + await next.patchFile( + 'app/argument-use-cache/action.ts', + (content) => content.replace("return 'first'", "return 'second'"), + async () => { + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + + expect(key1.keyArgumentUseCache).not.toBe(key2.keyArgumentUseCache) + expect(key1.dataArgumentUseCache).not.toBe(key2.dataArgumentUseCache) } + ) + }) + + // TODO when serializing server reference arguments, we need to include the server reference's + // entropy in the argument-part of the cache key. + // Furthermore, we need to compute the metadata information for use-server functions. + it.skip('should recompute when a use server reference argument changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + + await next.patchFile( + 'app/argument-use-server/action.ts', + (content) => content.replace("return 'first'", "return 'second'"), + async () => { + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + + expect(key1.keyArgumentUseServer).not.toBe(key2.keyArgumentUseServer) + expect(key1.dataArgumentUseServer).not.toBe( + key2.dataArgumentUseServer + ) + } + ) + }) + + it('should recompute when runtime env var changes', async () => { + let foobar1 = String(Math.random()) + let foobar2 = String(Math.random()) + try { + next.env['FOOBAR'] = foobar1 + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + + next.env['FOOBAR'] = foobar2 + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + // Should not be the same key (because process.env.FOOBAR is read at runtime and changed) + expect(key1.keyRoot).not.toBe(key2.keyRoot) + expect(key1.dataRoot).toEndWith(`:${foobar1}`) + expect(key2.dataRoot).toEndWith(`:${foobar2}`) + // The env var value should not be leaked into the cache key, only hashes of it. + expect(key1.keyRoot).not.toContain(foobar1) + expect(key2.keyRoot).not.toContain(foobar2) + + expect(key1.keyNested).not.toBe(key2.keyNested) + expect(key1.dataNested).toEndWith(`:${foobar1}`) + expect(key2.dataNested).toEndWith(`:${foobar2}`) + expect(key1.keyNested).not.toContain(foobar1) + expect(key2.keyNested).not.toContain(foobar2) + + expect(key1.keyPrerender).not.toBe(key2.keyPrerender) + expect(key1.dataPrerender).toEndWith(`:${foobar1}`) + expect(key2.dataPrerender).toEndWith(`:${foobar2}`) + expect(key1.keyPrerender).not.toContain(foobar1) + expect(key2.keyPrerender).not.toContain(foobar2) + + expect(key1.keyClient).not.toBe(key2.keyClient) + expect(key1.dataClient).toEndWith(`:${foobar1}`) + expect(key2.dataClient).toEndWith(`:${foobar2}`) + expect(key1.keyClient).not.toContain(foobar1) + expect(key2.keyClient).not.toContain(foobar2) + + expect(key1.keyRoute).not.toBe(key2.keyRoute) + expect(key1.dataRoute).toEndWith(`:${foobar1}`) + expect(key2.dataRoute).toEndWith(`:${foobar2}`) + expect(key1.keyRoute).not.toContain(foobar1) + expect(key2.keyRoute).not.toContain(foobar2) + } finally { + delete next.env['FOOBAR'] } + }) - let key1 = await execute('value-1') - let key2 = await execute('value-2') - // Second run should not use the same key - expect(key1.keyRoot).not.toBe(key2.keyRoot) - expect(key1.keyPrerender).not.toBe(key2.keyPrerender) + it('should recompute when client reference import changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + await next.patchFile( + 'app/client/client.tsx', + (oldContent) => + oldContent.replace( + "'use client'", + "'use client'\n\nawait Promise.resolve()" + ), + async () => { + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + // Should be the same key (because the implementation didn't change) + expect(key1.keyRoot).toBe(key2.keyRoot) + expect(key1.dataRoot).toBe(key2.dataRoot) + + expect(key1.keyPrerender).toBe(key2.keyPrerender) + expect(key1.dataPrerender).toBe(key2.dataPrerender) + + expect(key1.keyRoute).toBe(key2.keyRoute) + expect(key1.dataRoute).toBe(key2.dataRoute) + + // Is different, the client code and async:false->true + expect(key1.keyClient).not.toBe(key2.keyClient) + expect(key1.dataClient).not.toBe(key2.dataClient) + } + ) + }) + + // TODO this seems like a preexisting bug? The reference gets serialized into the cache key as just "$T" + it.skip('should recompute when a client reference argument changes', async () => { + const key1 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-1') + await next.patchFile( + 'app/argument-use-client/client.tsx', + (oldContent) => + oldContent.replace( + "'use client'", + "'use client'\n\nawait Promise.resolve()" + ), + async () => { + const key2 = await execute(next, 'NEXT_DEPLOYMENT_ID', 'dpl-id-2') + + expect(key1.keyArgumentUseClient).not.toBe(key2.keyArgumentUseClient) + expect(key1.dataArgumentUseClient).not.toBe( + key2.dataArgumentUseClient + ) + } + ) }) } ) diff --git a/test/production/custom-server/custom-server.test.ts b/test/production/custom-server/custom-server.test.ts index 492c1873738d..bb9021ce8513 100644 --- a/test/production/custom-server/custom-server.test.ts +++ b/test/production/custom-server/custom-server.test.ts @@ -115,6 +115,6 @@ function createCacheSetLogRegExp(id: string) { // Expect a requestId, that's provided through ALS, to be present in the log // message for the cache handler set call. return new RegExp( - `set cache \\["[A-Za-z0-9_-]+","(?:[0-9a-f]{2})+",\\[{"id":"${id}"}]\\] requestId: \\d+` + `set cache \\["(?:[0-9a-f]{2})+",\\[{"id":"${id}"}\\],\\["[A-Za-z0-9_-]+"(?:,"[^"]+")*\\]\\] requestId: \\d+` ) } diff --git a/test/unit/image-optimizer/detect-content-type.test.ts b/test/unit/image-optimizer/detect-content-type.test.ts index 6bc36bf52925..8205df4edb7d 100644 --- a/test/unit/image-optimizer/detect-content-type.test.ts +++ b/test/unit/image-optimizer/detect-content-type.test.ts @@ -1,5 +1,5 @@ /* eslint-env jest */ -import { detectContentType as dct } from 'next/dist/server/image-optimizer' +import { detectContentType as dct } from 'next/dist/server/image-optimizer/detect-content-type' import { readFile } from 'fs-extra' import { join } from 'path' diff --git a/test/unit/image-optimizer/extract-etag.test.ts b/test/unit/image-optimizer/extract-etag.test.ts index 29c5de38502a..0a035a6eba1e 100644 --- a/test/unit/image-optimizer/extract-etag.test.ts +++ b/test/unit/image-optimizer/extract-etag.test.ts @@ -1,5 +1,8 @@ /* eslint-env jest */ -import { extractEtag, getImageEtag } from 'next/dist/server/image-optimizer' +import { + extractEtag, + getImageEtag, +} from 'next/dist/server/image-optimizer/extract-etag' import { readFile } from 'fs-extra' import { join } from 'path' diff --git a/test/unit/image-optimizer/get-max-age.test.ts b/test/unit/image-optimizer/get-max-age.test.ts index 10fc8caff2d2..b8c142f9ec4e 100644 --- a/test/unit/image-optimizer/get-max-age.test.ts +++ b/test/unit/image-optimizer/get-max-age.test.ts @@ -1,5 +1,5 @@ /* eslint-env jest */ -import { getMaxAge } from 'next/dist/server/image-optimizer' +import { getMaxAge } from 'next/dist/server/image-optimizer/get-max-age' describe('getMaxAge', () => { it('should return 0 when no cache-control provided', () => { diff --git a/test/unit/image-optimizer/get-previously-cached-image-or-null.test.ts b/test/unit/image-optimizer/get-previously-cached-image-or-null.test.ts index c0d8e2230aa1..c7dde4484a06 100644 --- a/test/unit/image-optimizer/get-previously-cached-image-or-null.test.ts +++ b/test/unit/image-optimizer/get-previously-cached-image-or-null.test.ts @@ -1,8 +1,6 @@ /* eslint-env jest */ -import { - getPreviouslyCachedImageOrNull, - getImageEtag, -} from 'next/dist/server/image-optimizer' +import { getPreviouslyCachedImageOrNull } from 'next/dist/server/image-optimizer/get-previously-cached-image-or-null' +import { getImageEtag } from 'next/dist/server/image-optimizer/extract-etag' import { CachedRouteKind, IncrementalCacheEntry, diff --git a/test/unit/image-optimizer/transform.test.ts b/test/unit/image-optimizer/transform.test.ts new file mode 100644 index 000000000000..2c7d79b44ed4 --- /dev/null +++ b/test/unit/image-optimizer/transform.test.ts @@ -0,0 +1,191 @@ +/* eslint-env jest */ +import { readFile } from 'fs-extra' +import { join } from 'path' +import { + imageOptimizerTransform, + type ImageOptimizerTransformOptions, +} from 'next/dist/server/image-optimizer/transform' +import type { + CachedRouteKind, + IncrementalResponseCacheEntry, +} from 'next/dist/server/response-cache/types' + +const getImage = (filename: string) => + readFile(join(__dirname, 'images', filename)) + +const isValidMime = (contentType: string) => contentType === 'image/png' + +const config = { + images: { + dangerouslyAllowSVG: true, + minimumCacheTTL: 60, + }, + experimental: { + imgOptConcurrency: 1, + imgOptOperationCache: false, + imgOptMaxInputPixels: 67_108_864, + imgOptSequentialRead: true, + imgOptTimeoutInSeconds: 6, + }, +} + +async function transform( + filename: string, + mimeType = 'image/webp', + options?: ImageOptimizerTransformOptions +) { + const buffer = await getImage(filename) + return imageOptimizerTransform( + { + buffer, + contentType: undefined, + cacheControl: 'public, max-age=120', + etag: 'source-etag', + }, + { href: `/${filename}`, width: 64, quality: 75, mimeType }, + config, + { isValidMime, ...options } + ) +} + +async function transformInDevelopment( + filename: string, + previousCacheEntry?: IncrementalResponseCacheEntry +) { + const { imageOptimizer } = + require('next/dist/server/image-optimizer') as typeof import('next/dist/server/image-optimizer') + const buffer = await getImage(filename) + return imageOptimizer( + { + buffer, + contentType: undefined, + cacheControl: undefined, + etag: 'source-etag', + }, + { href: `/${filename}`, width: 8, quality: 70, mimeType: 'image/webp' }, + config, + { isDev: true, silent: true, previousCacheEntry } + ) +} + +describe('imageOptimizerTransform', () => { + it('loads without the server image optimizer dependency graph', () => { + const loaded = Object.keys(require.cache) + expect( + loaded.some((path) => /\/server\/image-optimizer\.[jt]s$/.test(path)) + ).toBe(false) + expect( + loaded.some((path) => path.includes('/server/response-cache/')) + ).toBe(false) + expect( + loaded.some((path) => /\/server\/serve-static\.[jt]s$/.test(path)) + ).toBe(false) + expect( + loaded.some((path) => /\/server\/lib\/mock-request\.[jt]s$/.test(path)) + ).toBe(false) + expect( + loaded.some((path) => /\/server\/config-shared\.[jt]s$/.test(path)) + ).toBe(false) + expect( + loaded.some((path) => /\/build\/output\/log\.[jt]s$/.test(path)) + ).toBe(false) + }) + + it('transforms a png buffer', async () => { + const result = await transform('test.png') + expect(result.contentType).toBe('image/webp') + expect(result.buffer.byteLength).toBeGreaterThan(0) + expect(result.maxAge).toBe(120) + }) + + it('preserves the source format when no output format is requested', async () => { + const result = await transform('test.png', '') + expect(result.contentType).toBe('image/png') + }) + + it('transforms an avif source', async () => { + const source = await getImage('test.avif') + const result = await transform('test.avif') + expect(result.buffer).not.toEqual(source) + expect(result.contentType).toBe('image/webp') + }) + + it('generates blur placeholders in development', async () => { + const result = await transformInDevelopment('test.png') + expect(result.contentType).toBe('image/svg+xml') + expect(result.buffer.toString()).toContain(' { + const source = await getImage('test.svg') + const result = await transformInDevelopment('test.svg') + expect(result.buffer).toEqual(source) + expect(result.contentType).toBe('image/svg+xml') + }) + + it('reuses a previous cache entry without generating a blur placeholder', async () => { + const previousBuffer = Buffer.from('previous image') + const result = await transformInDevelopment('test.png', { + value: { + kind: 'IMAGE' as CachedRouteKind.IMAGE, + buffer: previousBuffer, + etag: 'optimized-etag', + upstreamEtag: 'source-etag', + extension: 'webp', + }, + cacheControl: { revalidate: 90, expire: undefined }, + }) + expect(result.buffer).toEqual(previousBuffer) + expect(result.contentType).toBe('image/webp') + expect(result.maxAge).toBe(90) + }) + + it('bypasses svg buffers', async () => { + const source = await getImage('test.svg') + const result = await transform('test.svg') + expect(result.buffer).toEqual(source) + expect(result.contentType).toBe('image/svg+xml') + }) + + it('bypasses animated buffers', async () => { + const source = await getImage('animated.webp') + const result = await transform('animated.webp') + expect(result.buffer).toEqual(source) + expect(result.contentType).toBe('image/webp') + }) + + it('rejects disallowed svg buffers', async () => { + await expect( + imageOptimizerTransform( + { + buffer: await getImage('test.svg'), + contentType: undefined, + cacheControl: undefined, + etag: 'source-etag', + }, + { href: '/test.svg', width: 64, quality: 75, mimeType: 'image/webp' }, + { + ...config, + images: { ...config.images, dangerouslyAllowSVG: false }, + }, + { isValidMime } + ) + ).rejects.toMatchObject({ statusCode: 400 }) + }) + + it('rejects unrecognized buffers', async () => { + await expect( + imageOptimizerTransform( + { + buffer: Buffer.from('not an image'), + contentType: undefined, + cacheControl: undefined, + etag: 'source-etag', + }, + { href: '/bad', width: 64, quality: 75, mimeType: 'image/webp' }, + config, + { isValidMime } + ) + ).rejects.toMatchObject({ statusCode: 400 }) + }) +})