zola-check-manager

A Github Action allowing you to manage the zola check results in github
git clone git://archive.git.mtrnord.blog/MTRNord/zola-check-manager.git
Log | Files | Refs | README | LICENSE

index.js (1094078B)


      1 import './sourcemap-register.cjs';import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";
      2 /******/ var __webpack_modules__ = ({
      3 
      4 /***/ 7351:
      5 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
      6 
      7 
      8 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
      9     if (k2 === undefined) k2 = k;
     10     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
     11 }) : (function(o, m, k, k2) {
     12     if (k2 === undefined) k2 = k;
     13     o[k2] = m[k];
     14 }));
     15 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
     16     Object.defineProperty(o, "default", { enumerable: true, value: v });
     17 }) : function(o, v) {
     18     o["default"] = v;
     19 });
     20 var __importStar = (this && this.__importStar) || function (mod) {
     21     if (mod && mod.__esModule) return mod;
     22     var result = {};
     23     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
     24     __setModuleDefault(result, mod);
     25     return result;
     26 };
     27 Object.defineProperty(exports, "__esModule", ({ value: true }));
     28 exports.issue = exports.issueCommand = void 0;
     29 const os = __importStar(__nccwpck_require__(2037));
     30 const utils_1 = __nccwpck_require__(5278);
     31 /**
     32  * Commands
     33  *
     34  * Command Format:
     35  *   ::name key=value,key=value::message
     36  *
     37  * Examples:
     38  *   ::warning::This is the message
     39  *   ::set-env name=MY_VAR::some value
     40  */
     41 function issueCommand(command, properties, message) {
     42     const cmd = new Command(command, properties, message);
     43     process.stdout.write(cmd.toString() + os.EOL);
     44 }
     45 exports.issueCommand = issueCommand;
     46 function issue(name, message = '') {
     47     issueCommand(name, {}, message);
     48 }
     49 exports.issue = issue;
     50 const CMD_STRING = '::';
     51 class Command {
     52     constructor(command, properties, message) {
     53         if (!command) {
     54             command = 'missing.command';
     55         }
     56         this.command = command;
     57         this.properties = properties;
     58         this.message = message;
     59     }
     60     toString() {
     61         let cmdStr = CMD_STRING + this.command;
     62         if (this.properties && Object.keys(this.properties).length > 0) {
     63             cmdStr += ' ';
     64             let first = true;
     65             for (const key in this.properties) {
     66                 if (this.properties.hasOwnProperty(key)) {
     67                     const val = this.properties[key];
     68                     if (val) {
     69                         if (first) {
     70                             first = false;
     71                         }
     72                         else {
     73                             cmdStr += ',';
     74                         }
     75                         cmdStr += `${key}=${escapeProperty(val)}`;
     76                     }
     77                 }
     78             }
     79         }
     80         cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
     81         return cmdStr;
     82     }
     83 }
     84 function escapeData(s) {
     85     return utils_1.toCommandValue(s)
     86         .replace(/%/g, '%25')
     87         .replace(/\r/g, '%0D')
     88         .replace(/\n/g, '%0A');
     89 }
     90 function escapeProperty(s) {
     91     return utils_1.toCommandValue(s)
     92         .replace(/%/g, '%25')
     93         .replace(/\r/g, '%0D')
     94         .replace(/\n/g, '%0A')
     95         .replace(/:/g, '%3A')
     96         .replace(/,/g, '%2C');
     97 }
     98 //# sourceMappingURL=command.js.map
     99 
    100 /***/ }),
    101 
    102 /***/ 2186:
    103 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    104 
    105 
    106 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    107     if (k2 === undefined) k2 = k;
    108     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
    109 }) : (function(o, m, k, k2) {
    110     if (k2 === undefined) k2 = k;
    111     o[k2] = m[k];
    112 }));
    113 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    114     Object.defineProperty(o, "default", { enumerable: true, value: v });
    115 }) : function(o, v) {
    116     o["default"] = v;
    117 });
    118 var __importStar = (this && this.__importStar) || function (mod) {
    119     if (mod && mod.__esModule) return mod;
    120     var result = {};
    121     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    122     __setModuleDefault(result, mod);
    123     return result;
    124 };
    125 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    126     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    127     return new (P || (P = Promise))(function (resolve, reject) {
    128         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
    129         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
    130         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
    131         step((generator = generator.apply(thisArg, _arguments || [])).next());
    132     });
    133 };
    134 Object.defineProperty(exports, "__esModule", ({ value: true }));
    135 exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
    136 const command_1 = __nccwpck_require__(7351);
    137 const file_command_1 = __nccwpck_require__(717);
    138 const utils_1 = __nccwpck_require__(5278);
    139 const os = __importStar(__nccwpck_require__(2037));
    140 const path = __importStar(__nccwpck_require__(1017));
    141 const oidc_utils_1 = __nccwpck_require__(8041);
    142 /**
    143  * The code to exit an action
    144  */
    145 var ExitCode;
    146 (function (ExitCode) {
    147     /**
    148      * A code indicating that the action was successful
    149      */
    150     ExitCode[ExitCode["Success"] = 0] = "Success";
    151     /**
    152      * A code indicating that the action was a failure
    153      */
    154     ExitCode[ExitCode["Failure"] = 1] = "Failure";
    155 })(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
    156 //-----------------------------------------------------------------------
    157 // Variables
    158 //-----------------------------------------------------------------------
    159 /**
    160  * Sets env variable for this action and future actions in the job
    161  * @param name the name of the variable to set
    162  * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
    163  */
    164 // eslint-disable-next-line @typescript-eslint/no-explicit-any
    165 function exportVariable(name, val) {
    166     const convertedVal = utils_1.toCommandValue(val);
    167     process.env[name] = convertedVal;
    168     const filePath = process.env['GITHUB_ENV'] || '';
    169     if (filePath) {
    170         return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));
    171     }
    172     command_1.issueCommand('set-env', { name }, convertedVal);
    173 }
    174 exports.exportVariable = exportVariable;
    175 /**
    176  * Registers a secret which will get masked from logs
    177  * @param secret value of the secret
    178  */
    179 function setSecret(secret) {
    180     command_1.issueCommand('add-mask', {}, secret);
    181 }
    182 exports.setSecret = setSecret;
    183 /**
    184  * Prepends inputPath to the PATH (for this action and future actions)
    185  * @param inputPath
    186  */
    187 function addPath(inputPath) {
    188     const filePath = process.env['GITHUB_PATH'] || '';
    189     if (filePath) {
    190         file_command_1.issueFileCommand('PATH', inputPath);
    191     }
    192     else {
    193         command_1.issueCommand('add-path', {}, inputPath);
    194     }
    195     process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
    196 }
    197 exports.addPath = addPath;
    198 /**
    199  * Gets the value of an input.
    200  * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
    201  * Returns an empty string if the value is not defined.
    202  *
    203  * @param     name     name of the input to get
    204  * @param     options  optional. See InputOptions.
    205  * @returns   string
    206  */
    207 function getInput(name, options) {
    208     const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
    209     if (options && options.required && !val) {
    210         throw new Error(`Input required and not supplied: ${name}`);
    211     }
    212     if (options && options.trimWhitespace === false) {
    213         return val;
    214     }
    215     return val.trim();
    216 }
    217 exports.getInput = getInput;
    218 /**
    219  * Gets the values of an multiline input.  Each value is also trimmed.
    220  *
    221  * @param     name     name of the input to get
    222  * @param     options  optional. See InputOptions.
    223  * @returns   string[]
    224  *
    225  */
    226 function getMultilineInput(name, options) {
    227     const inputs = getInput(name, options)
    228         .split('\n')
    229         .filter(x => x !== '');
    230     if (options && options.trimWhitespace === false) {
    231         return inputs;
    232     }
    233     return inputs.map(input => input.trim());
    234 }
    235 exports.getMultilineInput = getMultilineInput;
    236 /**
    237  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
    238  * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
    239  * The return value is also in boolean type.
    240  * ref: https://yaml.org/spec/1.2/spec.html#id2804923
    241  *
    242  * @param     name     name of the input to get
    243  * @param     options  optional. See InputOptions.
    244  * @returns   boolean
    245  */
    246 function getBooleanInput(name, options) {
    247     const trueValue = ['true', 'True', 'TRUE'];
    248     const falseValue = ['false', 'False', 'FALSE'];
    249     const val = getInput(name, options);
    250     if (trueValue.includes(val))
    251         return true;
    252     if (falseValue.includes(val))
    253         return false;
    254     throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` +
    255         `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
    256 }
    257 exports.getBooleanInput = getBooleanInput;
    258 /**
    259  * Sets the value of an output.
    260  *
    261  * @param     name     name of the output to set
    262  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
    263  */
    264 // eslint-disable-next-line @typescript-eslint/no-explicit-any
    265 function setOutput(name, value) {
    266     const filePath = process.env['GITHUB_OUTPUT'] || '';
    267     if (filePath) {
    268         return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));
    269     }
    270     process.stdout.write(os.EOL);
    271     command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));
    272 }
    273 exports.setOutput = setOutput;
    274 /**
    275  * Enables or disables the echoing of commands into stdout for the rest of the step.
    276  * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
    277  *
    278  */
    279 function setCommandEcho(enabled) {
    280     command_1.issue('echo', enabled ? 'on' : 'off');
    281 }
    282 exports.setCommandEcho = setCommandEcho;
    283 //-----------------------------------------------------------------------
    284 // Results
    285 //-----------------------------------------------------------------------
    286 /**
    287  * Sets the action status to failed.
    288  * When the action exits it will be with an exit code of 1
    289  * @param message add error issue message
    290  */
    291 function setFailed(message) {
    292     process.exitCode = ExitCode.Failure;
    293     error(message);
    294 }
    295 exports.setFailed = setFailed;
    296 //-----------------------------------------------------------------------
    297 // Logging Commands
    298 //-----------------------------------------------------------------------
    299 /**
    300  * Gets whether Actions Step Debug is on or not
    301  */
    302 function isDebug() {
    303     return process.env['RUNNER_DEBUG'] === '1';
    304 }
    305 exports.isDebug = isDebug;
    306 /**
    307  * Writes debug message to user log
    308  * @param message debug message
    309  */
    310 function debug(message) {
    311     command_1.issueCommand('debug', {}, message);
    312 }
    313 exports.debug = debug;
    314 /**
    315  * Adds an error issue
    316  * @param message error issue message. Errors will be converted to string via toString()
    317  * @param properties optional properties to add to the annotation.
    318  */
    319 function error(message, properties = {}) {
    320     command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
    321 }
    322 exports.error = error;
    323 /**
    324  * Adds a warning issue
    325  * @param message warning issue message. Errors will be converted to string via toString()
    326  * @param properties optional properties to add to the annotation.
    327  */
    328 function warning(message, properties = {}) {
    329     command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
    330 }
    331 exports.warning = warning;
    332 /**
    333  * Adds a notice issue
    334  * @param message notice issue message. Errors will be converted to string via toString()
    335  * @param properties optional properties to add to the annotation.
    336  */
    337 function notice(message, properties = {}) {
    338     command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
    339 }
    340 exports.notice = notice;
    341 /**
    342  * Writes info to log with console.log.
    343  * @param message info message
    344  */
    345 function info(message) {
    346     process.stdout.write(message + os.EOL);
    347 }
    348 exports.info = info;
    349 /**
    350  * Begin an output group.
    351  *
    352  * Output until the next `groupEnd` will be foldable in this group
    353  *
    354  * @param name The name of the output group
    355  */
    356 function startGroup(name) {
    357     command_1.issue('group', name);
    358 }
    359 exports.startGroup = startGroup;
    360 /**
    361  * End an output group.
    362  */
    363 function endGroup() {
    364     command_1.issue('endgroup');
    365 }
    366 exports.endGroup = endGroup;
    367 /**
    368  * Wrap an asynchronous function call in a group.
    369  *
    370  * Returns the same type as the function itself.
    371  *
    372  * @param name The name of the group
    373  * @param fn The function to wrap in the group
    374  */
    375 function group(name, fn) {
    376     return __awaiter(this, void 0, void 0, function* () {
    377         startGroup(name);
    378         let result;
    379         try {
    380             result = yield fn();
    381         }
    382         finally {
    383             endGroup();
    384         }
    385         return result;
    386     });
    387 }
    388 exports.group = group;
    389 //-----------------------------------------------------------------------
    390 // Wrapper action state
    391 //-----------------------------------------------------------------------
    392 /**
    393  * Saves state for current action, the state can only be retrieved by this action's post job execution.
    394  *
    395  * @param     name     name of the state to store
    396  * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
    397  */
    398 // eslint-disable-next-line @typescript-eslint/no-explicit-any
    399 function saveState(name, value) {
    400     const filePath = process.env['GITHUB_STATE'] || '';
    401     if (filePath) {
    402         return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));
    403     }
    404     command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));
    405 }
    406 exports.saveState = saveState;
    407 /**
    408  * Gets the value of an state set by this action's main execution.
    409  *
    410  * @param     name     name of the state to get
    411  * @returns   string
    412  */
    413 function getState(name) {
    414     return process.env[`STATE_${name}`] || '';
    415 }
    416 exports.getState = getState;
    417 function getIDToken(aud) {
    418     return __awaiter(this, void 0, void 0, function* () {
    419         return yield oidc_utils_1.OidcClient.getIDToken(aud);
    420     });
    421 }
    422 exports.getIDToken = getIDToken;
    423 /**
    424  * Summary exports
    425  */
    426 var summary_1 = __nccwpck_require__(1327);
    427 Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } }));
    428 /**
    429  * @deprecated use core.summary
    430  */
    431 var summary_2 = __nccwpck_require__(1327);
    432 Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } }));
    433 /**
    434  * Path exports
    435  */
    436 var path_utils_1 = __nccwpck_require__(2981);
    437 Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } }));
    438 Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } }));
    439 Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }));
    440 //# sourceMappingURL=core.js.map
    441 
    442 /***/ }),
    443 
    444 /***/ 717:
    445 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    446 
    447 
    448 // For internal use, subject to change.
    449 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    450     if (k2 === undefined) k2 = k;
    451     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
    452 }) : (function(o, m, k, k2) {
    453     if (k2 === undefined) k2 = k;
    454     o[k2] = m[k];
    455 }));
    456 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    457     Object.defineProperty(o, "default", { enumerable: true, value: v });
    458 }) : function(o, v) {
    459     o["default"] = v;
    460 });
    461 var __importStar = (this && this.__importStar) || function (mod) {
    462     if (mod && mod.__esModule) return mod;
    463     var result = {};
    464     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    465     __setModuleDefault(result, mod);
    466     return result;
    467 };
    468 Object.defineProperty(exports, "__esModule", ({ value: true }));
    469 exports.prepareKeyValueMessage = exports.issueFileCommand = void 0;
    470 // We use any as a valid input type
    471 /* eslint-disable @typescript-eslint/no-explicit-any */
    472 const fs = __importStar(__nccwpck_require__(7147));
    473 const os = __importStar(__nccwpck_require__(2037));
    474 const uuid_1 = __nccwpck_require__(5840);
    475 const utils_1 = __nccwpck_require__(5278);
    476 function issueFileCommand(command, message) {
    477     const filePath = process.env[`GITHUB_${command}`];
    478     if (!filePath) {
    479         throw new Error(`Unable to find environment variable for file command ${command}`);
    480     }
    481     if (!fs.existsSync(filePath)) {
    482         throw new Error(`Missing file at path: ${filePath}`);
    483     }
    484     fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
    485         encoding: 'utf8'
    486     });
    487 }
    488 exports.issueFileCommand = issueFileCommand;
    489 function prepareKeyValueMessage(key, value) {
    490     const delimiter = `ghadelimiter_${uuid_1.v4()}`;
    491     const convertedValue = utils_1.toCommandValue(value);
    492     // These should realistically never happen, but just in case someone finds a
    493     // way to exploit uuid generation let's not allow keys or values that contain
    494     // the delimiter.
    495     if (key.includes(delimiter)) {
    496         throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`);
    497     }
    498     if (convertedValue.includes(delimiter)) {
    499         throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`);
    500     }
    501     return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;
    502 }
    503 exports.prepareKeyValueMessage = prepareKeyValueMessage;
    504 //# sourceMappingURL=file-command.js.map
    505 
    506 /***/ }),
    507 
    508 /***/ 8041:
    509 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    510 
    511 
    512 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    513     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    514     return new (P || (P = Promise))(function (resolve, reject) {
    515         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
    516         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
    517         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
    518         step((generator = generator.apply(thisArg, _arguments || [])).next());
    519     });
    520 };
    521 Object.defineProperty(exports, "__esModule", ({ value: true }));
    522 exports.OidcClient = void 0;
    523 const http_client_1 = __nccwpck_require__(6255);
    524 const auth_1 = __nccwpck_require__(5526);
    525 const core_1 = __nccwpck_require__(2186);
    526 class OidcClient {
    527     static createHttpClient(allowRetry = true, maxRetry = 10) {
    528         const requestOptions = {
    529             allowRetries: allowRetry,
    530             maxRetries: maxRetry
    531         };
    532         return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
    533     }
    534     static getRequestToken() {
    535         const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
    536         if (!token) {
    537             throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
    538         }
    539         return token;
    540     }
    541     static getIDTokenUrl() {
    542         const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
    543         if (!runtimeUrl) {
    544             throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
    545         }
    546         return runtimeUrl;
    547     }
    548     static getCall(id_token_url) {
    549         var _a;
    550         return __awaiter(this, void 0, void 0, function* () {
    551             const httpclient = OidcClient.createHttpClient();
    552             const res = yield httpclient
    553                 .getJson(id_token_url)
    554                 .catch(error => {
    555                 throw new Error(`Failed to get ID Token. \n 
    556         Error Code : ${error.statusCode}\n 
    557         Error Message: ${error.result.message}`);
    558             });
    559             const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
    560             if (!id_token) {
    561                 throw new Error('Response json body do not have ID Token field');
    562             }
    563             return id_token;
    564         });
    565     }
    566     static getIDToken(audience) {
    567         return __awaiter(this, void 0, void 0, function* () {
    568             try {
    569                 // New ID Token is requested from action service
    570                 let id_token_url = OidcClient.getIDTokenUrl();
    571                 if (audience) {
    572                     const encodedAudience = encodeURIComponent(audience);
    573                     id_token_url = `${id_token_url}&audience=${encodedAudience}`;
    574                 }
    575                 core_1.debug(`ID token url is ${id_token_url}`);
    576                 const id_token = yield OidcClient.getCall(id_token_url);
    577                 core_1.setSecret(id_token);
    578                 return id_token;
    579             }
    580             catch (error) {
    581                 throw new Error(`Error message: ${error.message}`);
    582             }
    583         });
    584     }
    585 }
    586 exports.OidcClient = OidcClient;
    587 //# sourceMappingURL=oidc-utils.js.map
    588 
    589 /***/ }),
    590 
    591 /***/ 2981:
    592 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    593 
    594 
    595 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    596     if (k2 === undefined) k2 = k;
    597     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
    598 }) : (function(o, m, k, k2) {
    599     if (k2 === undefined) k2 = k;
    600     o[k2] = m[k];
    601 }));
    602 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    603     Object.defineProperty(o, "default", { enumerable: true, value: v });
    604 }) : function(o, v) {
    605     o["default"] = v;
    606 });
    607 var __importStar = (this && this.__importStar) || function (mod) {
    608     if (mod && mod.__esModule) return mod;
    609     var result = {};
    610     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    611     __setModuleDefault(result, mod);
    612     return result;
    613 };
    614 Object.defineProperty(exports, "__esModule", ({ value: true }));
    615 exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;
    616 const path = __importStar(__nccwpck_require__(1017));
    617 /**
    618  * toPosixPath converts the given path to the posix form. On Windows, \\ will be
    619  * replaced with /.
    620  *
    621  * @param pth. Path to transform.
    622  * @return string Posix path.
    623  */
    624 function toPosixPath(pth) {
    625     return pth.replace(/[\\]/g, '/');
    626 }
    627 exports.toPosixPath = toPosixPath;
    628 /**
    629  * toWin32Path converts the given path to the win32 form. On Linux, / will be
    630  * replaced with \\.
    631  *
    632  * @param pth. Path to transform.
    633  * @return string Win32 path.
    634  */
    635 function toWin32Path(pth) {
    636     return pth.replace(/[/]/g, '\\');
    637 }
    638 exports.toWin32Path = toWin32Path;
    639 /**
    640  * toPlatformPath converts the given path to a platform-specific path. It does
    641  * this by replacing instances of / and \ with the platform-specific path
    642  * separator.
    643  *
    644  * @param pth The path to platformize.
    645  * @return string The platform-specific path.
    646  */
    647 function toPlatformPath(pth) {
    648     return pth.replace(/[/\\]/g, path.sep);
    649 }
    650 exports.toPlatformPath = toPlatformPath;
    651 //# sourceMappingURL=path-utils.js.map
    652 
    653 /***/ }),
    654 
    655 /***/ 1327:
    656 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    657 
    658 
    659 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    660     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    661     return new (P || (P = Promise))(function (resolve, reject) {
    662         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
    663         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
    664         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
    665         step((generator = generator.apply(thisArg, _arguments || [])).next());
    666     });
    667 };
    668 Object.defineProperty(exports, "__esModule", ({ value: true }));
    669 exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;
    670 const os_1 = __nccwpck_require__(2037);
    671 const fs_1 = __nccwpck_require__(7147);
    672 const { access, appendFile, writeFile } = fs_1.promises;
    673 exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';
    674 exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';
    675 class Summary {
    676     constructor() {
    677         this._buffer = '';
    678     }
    679     /**
    680      * Finds the summary file path from the environment, rejects if env var is not found or file does not exist
    681      * Also checks r/w permissions.
    682      *
    683      * @returns step summary file path
    684      */
    685     filePath() {
    686         return __awaiter(this, void 0, void 0, function* () {
    687             if (this._filePath) {
    688                 return this._filePath;
    689             }
    690             const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];
    691             if (!pathFromEnv) {
    692                 throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);
    693             }
    694             try {
    695                 yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);
    696             }
    697             catch (_a) {
    698                 throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
    699             }
    700             this._filePath = pathFromEnv;
    701             return this._filePath;
    702         });
    703     }
    704     /**
    705      * Wraps content in an HTML tag, adding any HTML attributes
    706      *
    707      * @param {string} tag HTML tag to wrap
    708      * @param {string | null} content content within the tag
    709      * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
    710      *
    711      * @returns {string} content wrapped in HTML element
    712      */
    713     wrap(tag, content, attrs = {}) {
    714         const htmlAttrs = Object.entries(attrs)
    715             .map(([key, value]) => ` ${key}="${value}"`)
    716             .join('');
    717         if (!content) {
    718             return `<${tag}${htmlAttrs}>`;
    719         }
    720         return `<${tag}${htmlAttrs}>${content}</${tag}>`;
    721     }
    722     /**
    723      * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
    724      *
    725      * @param {SummaryWriteOptions} [options] (optional) options for write operation
    726      *
    727      * @returns {Promise<Summary>} summary instance
    728      */
    729     write(options) {
    730         return __awaiter(this, void 0, void 0, function* () {
    731             const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);
    732             const filePath = yield this.filePath();
    733             const writeFunc = overwrite ? writeFile : appendFile;
    734             yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });
    735             return this.emptyBuffer();
    736         });
    737     }
    738     /**
    739      * Clears the summary buffer and wipes the summary file
    740      *
    741      * @returns {Summary} summary instance
    742      */
    743     clear() {
    744         return __awaiter(this, void 0, void 0, function* () {
    745             return this.emptyBuffer().write({ overwrite: true });
    746         });
    747     }
    748     /**
    749      * Returns the current summary buffer as a string
    750      *
    751      * @returns {string} string of summary buffer
    752      */
    753     stringify() {
    754         return this._buffer;
    755     }
    756     /**
    757      * If the summary buffer is empty
    758      *
    759      * @returns {boolen} true if the buffer is empty
    760      */
    761     isEmptyBuffer() {
    762         return this._buffer.length === 0;
    763     }
    764     /**
    765      * Resets the summary buffer without writing to summary file
    766      *
    767      * @returns {Summary} summary instance
    768      */
    769     emptyBuffer() {
    770         this._buffer = '';
    771         return this;
    772     }
    773     /**
    774      * Adds raw text to the summary buffer
    775      *
    776      * @param {string} text content to add
    777      * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
    778      *
    779      * @returns {Summary} summary instance
    780      */
    781     addRaw(text, addEOL = false) {
    782         this._buffer += text;
    783         return addEOL ? this.addEOL() : this;
    784     }
    785     /**
    786      * Adds the operating system-specific end-of-line marker to the buffer
    787      *
    788      * @returns {Summary} summary instance
    789      */
    790     addEOL() {
    791         return this.addRaw(os_1.EOL);
    792     }
    793     /**
    794      * Adds an HTML codeblock to the summary buffer
    795      *
    796      * @param {string} code content to render within fenced code block
    797      * @param {string} lang (optional) language to syntax highlight code
    798      *
    799      * @returns {Summary} summary instance
    800      */
    801     addCodeBlock(code, lang) {
    802         const attrs = Object.assign({}, (lang && { lang }));
    803         const element = this.wrap('pre', this.wrap('code', code), attrs);
    804         return this.addRaw(element).addEOL();
    805     }
    806     /**
    807      * Adds an HTML list to the summary buffer
    808      *
    809      * @param {string[]} items list of items to render
    810      * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
    811      *
    812      * @returns {Summary} summary instance
    813      */
    814     addList(items, ordered = false) {
    815         const tag = ordered ? 'ol' : 'ul';
    816         const listItems = items.map(item => this.wrap('li', item)).join('');
    817         const element = this.wrap(tag, listItems);
    818         return this.addRaw(element).addEOL();
    819     }
    820     /**
    821      * Adds an HTML table to the summary buffer
    822      *
    823      * @param {SummaryTableCell[]} rows table rows
    824      *
    825      * @returns {Summary} summary instance
    826      */
    827     addTable(rows) {
    828         const tableBody = rows
    829             .map(row => {
    830             const cells = row
    831                 .map(cell => {
    832                 if (typeof cell === 'string') {
    833                     return this.wrap('td', cell);
    834                 }
    835                 const { header, data, colspan, rowspan } = cell;
    836                 const tag = header ? 'th' : 'td';
    837                 const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));
    838                 return this.wrap(tag, data, attrs);
    839             })
    840                 .join('');
    841             return this.wrap('tr', cells);
    842         })
    843             .join('');
    844         const element = this.wrap('table', tableBody);
    845         return this.addRaw(element).addEOL();
    846     }
    847     /**
    848      * Adds a collapsable HTML details element to the summary buffer
    849      *
    850      * @param {string} label text for the closed state
    851      * @param {string} content collapsable content
    852      *
    853      * @returns {Summary} summary instance
    854      */
    855     addDetails(label, content) {
    856         const element = this.wrap('details', this.wrap('summary', label) + content);
    857         return this.addRaw(element).addEOL();
    858     }
    859     /**
    860      * Adds an HTML image tag to the summary buffer
    861      *
    862      * @param {string} src path to the image you to embed
    863      * @param {string} alt text description of the image
    864      * @param {SummaryImageOptions} options (optional) addition image attributes
    865      *
    866      * @returns {Summary} summary instance
    867      */
    868     addImage(src, alt, options) {
    869         const { width, height } = options || {};
    870         const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));
    871         const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));
    872         return this.addRaw(element).addEOL();
    873     }
    874     /**
    875      * Adds an HTML section heading element
    876      *
    877      * @param {string} text heading text
    878      * @param {number | string} [level=1] (optional) the heading level, default: 1
    879      *
    880      * @returns {Summary} summary instance
    881      */
    882     addHeading(text, level) {
    883         const tag = `h${level}`;
    884         const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)
    885             ? tag
    886             : 'h1';
    887         const element = this.wrap(allowedTag, text);
    888         return this.addRaw(element).addEOL();
    889     }
    890     /**
    891      * Adds an HTML thematic break (<hr>) to the summary buffer
    892      *
    893      * @returns {Summary} summary instance
    894      */
    895     addSeparator() {
    896         const element = this.wrap('hr', null);
    897         return this.addRaw(element).addEOL();
    898     }
    899     /**
    900      * Adds an HTML line break (<br>) to the summary buffer
    901      *
    902      * @returns {Summary} summary instance
    903      */
    904     addBreak() {
    905         const element = this.wrap('br', null);
    906         return this.addRaw(element).addEOL();
    907     }
    908     /**
    909      * Adds an HTML blockquote to the summary buffer
    910      *
    911      * @param {string} text quote text
    912      * @param {string} cite (optional) citation url
    913      *
    914      * @returns {Summary} summary instance
    915      */
    916     addQuote(text, cite) {
    917         const attrs = Object.assign({}, (cite && { cite }));
    918         const element = this.wrap('blockquote', text, attrs);
    919         return this.addRaw(element).addEOL();
    920     }
    921     /**
    922      * Adds an HTML anchor tag to the summary buffer
    923      *
    924      * @param {string} text link text/content
    925      * @param {string} href hyperlink
    926      *
    927      * @returns {Summary} summary instance
    928      */
    929     addLink(text, href) {
    930         const element = this.wrap('a', text, { href });
    931         return this.addRaw(element).addEOL();
    932     }
    933 }
    934 const _summary = new Summary();
    935 /**
    936  * @deprecated use `core.summary`
    937  */
    938 exports.markdownSummary = _summary;
    939 exports.summary = _summary;
    940 //# sourceMappingURL=summary.js.map
    941 
    942 /***/ }),
    943 
    944 /***/ 5278:
    945 /***/ ((__unused_webpack_module, exports) => {
    946 
    947 
    948 // We use any as a valid input type
    949 /* eslint-disable @typescript-eslint/no-explicit-any */
    950 Object.defineProperty(exports, "__esModule", ({ value: true }));
    951 exports.toCommandProperties = exports.toCommandValue = void 0;
    952 /**
    953  * Sanitizes an input into a string so it can be passed into issueCommand safely
    954  * @param input input to sanitize into a string
    955  */
    956 function toCommandValue(input) {
    957     if (input === null || input === undefined) {
    958         return '';
    959     }
    960     else if (typeof input === 'string' || input instanceof String) {
    961         return input;
    962     }
    963     return JSON.stringify(input);
    964 }
    965 exports.toCommandValue = toCommandValue;
    966 /**
    967  *
    968  * @param annotationProperties
    969  * @returns The command properties to send with the actual annotation command
    970  * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
    971  */
    972 function toCommandProperties(annotationProperties) {
    973     if (!Object.keys(annotationProperties).length) {
    974         return {};
    975     }
    976     return {
    977         title: annotationProperties.title,
    978         file: annotationProperties.file,
    979         line: annotationProperties.startLine,
    980         endLine: annotationProperties.endLine,
    981         col: annotationProperties.startColumn,
    982         endColumn: annotationProperties.endColumn
    983     };
    984 }
    985 exports.toCommandProperties = toCommandProperties;
    986 //# sourceMappingURL=utils.js.map
    987 
    988 /***/ }),
    989 
    990 /***/ 1514:
    991 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
    992 
    993 
    994 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    995     if (k2 === undefined) k2 = k;
    996     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
    997 }) : (function(o, m, k, k2) {
    998     if (k2 === undefined) k2 = k;
    999     o[k2] = m[k];
   1000 }));
   1001 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   1002     Object.defineProperty(o, "default", { enumerable: true, value: v });
   1003 }) : function(o, v) {
   1004     o["default"] = v;
   1005 });
   1006 var __importStar = (this && this.__importStar) || function (mod) {
   1007     if (mod && mod.__esModule) return mod;
   1008     var result = {};
   1009     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   1010     __setModuleDefault(result, mod);
   1011     return result;
   1012 };
   1013 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   1014     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   1015     return new (P || (P = Promise))(function (resolve, reject) {
   1016         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   1017         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   1018         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   1019         step((generator = generator.apply(thisArg, _arguments || [])).next());
   1020     });
   1021 };
   1022 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1023 exports.getExecOutput = exports.exec = void 0;
   1024 const string_decoder_1 = __nccwpck_require__(1576);
   1025 const tr = __importStar(__nccwpck_require__(8159));
   1026 /**
   1027  * Exec a command.
   1028  * Output will be streamed to the live console.
   1029  * Returns promise with return code
   1030  *
   1031  * @param     commandLine        command to execute (can include additional args). Must be correctly escaped.
   1032  * @param     args               optional arguments for tool. Escaping is handled by the lib.
   1033  * @param     options            optional exec options.  See ExecOptions
   1034  * @returns   Promise<number>    exit code
   1035  */
   1036 function exec(commandLine, args, options) {
   1037     return __awaiter(this, void 0, void 0, function* () {
   1038         const commandArgs = tr.argStringToArray(commandLine);
   1039         if (commandArgs.length === 0) {
   1040             throw new Error(`Parameter 'commandLine' cannot be null or empty.`);
   1041         }
   1042         // Path to tool to execute should be first arg
   1043         const toolPath = commandArgs[0];
   1044         args = commandArgs.slice(1).concat(args || []);
   1045         const runner = new tr.ToolRunner(toolPath, args, options);
   1046         return runner.exec();
   1047     });
   1048 }
   1049 exports.exec = exec;
   1050 /**
   1051  * Exec a command and get the output.
   1052  * Output will be streamed to the live console.
   1053  * Returns promise with the exit code and collected stdout and stderr
   1054  *
   1055  * @param     commandLine           command to execute (can include additional args). Must be correctly escaped.
   1056  * @param     args                  optional arguments for tool. Escaping is handled by the lib.
   1057  * @param     options               optional exec options.  See ExecOptions
   1058  * @returns   Promise<ExecOutput>   exit code, stdout, and stderr
   1059  */
   1060 function getExecOutput(commandLine, args, options) {
   1061     var _a, _b;
   1062     return __awaiter(this, void 0, void 0, function* () {
   1063         let stdout = '';
   1064         let stderr = '';
   1065         //Using string decoder covers the case where a mult-byte character is split
   1066         const stdoutDecoder = new string_decoder_1.StringDecoder('utf8');
   1067         const stderrDecoder = new string_decoder_1.StringDecoder('utf8');
   1068         const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout;
   1069         const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr;
   1070         const stdErrListener = (data) => {
   1071             stderr += stderrDecoder.write(data);
   1072             if (originalStdErrListener) {
   1073                 originalStdErrListener(data);
   1074             }
   1075         };
   1076         const stdOutListener = (data) => {
   1077             stdout += stdoutDecoder.write(data);
   1078             if (originalStdoutListener) {
   1079                 originalStdoutListener(data);
   1080             }
   1081         };
   1082         const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener });
   1083         const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners }));
   1084         //flush any remaining characters
   1085         stdout += stdoutDecoder.end();
   1086         stderr += stderrDecoder.end();
   1087         return {
   1088             exitCode,
   1089             stdout,
   1090             stderr
   1091         };
   1092     });
   1093 }
   1094 exports.getExecOutput = getExecOutput;
   1095 //# sourceMappingURL=exec.js.map
   1096 
   1097 /***/ }),
   1098 
   1099 /***/ 8159:
   1100 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   1101 
   1102 
   1103 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   1104     if (k2 === undefined) k2 = k;
   1105     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   1106 }) : (function(o, m, k, k2) {
   1107     if (k2 === undefined) k2 = k;
   1108     o[k2] = m[k];
   1109 }));
   1110 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   1111     Object.defineProperty(o, "default", { enumerable: true, value: v });
   1112 }) : function(o, v) {
   1113     o["default"] = v;
   1114 });
   1115 var __importStar = (this && this.__importStar) || function (mod) {
   1116     if (mod && mod.__esModule) return mod;
   1117     var result = {};
   1118     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   1119     __setModuleDefault(result, mod);
   1120     return result;
   1121 };
   1122 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   1123     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   1124     return new (P || (P = Promise))(function (resolve, reject) {
   1125         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   1126         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   1127         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   1128         step((generator = generator.apply(thisArg, _arguments || [])).next());
   1129     });
   1130 };
   1131 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1132 exports.argStringToArray = exports.ToolRunner = void 0;
   1133 const os = __importStar(__nccwpck_require__(2037));
   1134 const events = __importStar(__nccwpck_require__(2361));
   1135 const child = __importStar(__nccwpck_require__(2081));
   1136 const path = __importStar(__nccwpck_require__(1017));
   1137 const io = __importStar(__nccwpck_require__(7436));
   1138 const ioUtil = __importStar(__nccwpck_require__(1962));
   1139 const timers_1 = __nccwpck_require__(9512);
   1140 /* eslint-disable @typescript-eslint/unbound-method */
   1141 const IS_WINDOWS = process.platform === 'win32';
   1142 /*
   1143  * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.
   1144  */
   1145 class ToolRunner extends events.EventEmitter {
   1146     constructor(toolPath, args, options) {
   1147         super();
   1148         if (!toolPath) {
   1149             throw new Error("Parameter 'toolPath' cannot be null or empty.");
   1150         }
   1151         this.toolPath = toolPath;
   1152         this.args = args || [];
   1153         this.options = options || {};
   1154     }
   1155     _debug(message) {
   1156         if (this.options.listeners && this.options.listeners.debug) {
   1157             this.options.listeners.debug(message);
   1158         }
   1159     }
   1160     _getCommandString(options, noPrefix) {
   1161         const toolPath = this._getSpawnFileName();
   1162         const args = this._getSpawnArgs(options);
   1163         let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool
   1164         if (IS_WINDOWS) {
   1165             // Windows + cmd file
   1166             if (this._isCmdFile()) {
   1167                 cmd += toolPath;
   1168                 for (const a of args) {
   1169                     cmd += ` ${a}`;
   1170                 }
   1171             }
   1172             // Windows + verbatim
   1173             else if (options.windowsVerbatimArguments) {
   1174                 cmd += `"${toolPath}"`;
   1175                 for (const a of args) {
   1176                     cmd += ` ${a}`;
   1177                 }
   1178             }
   1179             // Windows (regular)
   1180             else {
   1181                 cmd += this._windowsQuoteCmdArg(toolPath);
   1182                 for (const a of args) {
   1183                     cmd += ` ${this._windowsQuoteCmdArg(a)}`;
   1184                 }
   1185             }
   1186         }
   1187         else {
   1188             // OSX/Linux - this can likely be improved with some form of quoting.
   1189             // creating processes on Unix is fundamentally different than Windows.
   1190             // on Unix, execvp() takes an arg array.
   1191             cmd += toolPath;
   1192             for (const a of args) {
   1193                 cmd += ` ${a}`;
   1194             }
   1195         }
   1196         return cmd;
   1197     }
   1198     _processLineBuffer(data, strBuffer, onLine) {
   1199         try {
   1200             let s = strBuffer + data.toString();
   1201             let n = s.indexOf(os.EOL);
   1202             while (n > -1) {
   1203                 const line = s.substring(0, n);
   1204                 onLine(line);
   1205                 // the rest of the string ...
   1206                 s = s.substring(n + os.EOL.length);
   1207                 n = s.indexOf(os.EOL);
   1208             }
   1209             return s;
   1210         }
   1211         catch (err) {
   1212             // streaming lines to console is best effort.  Don't fail a build.
   1213             this._debug(`error processing line. Failed with error ${err}`);
   1214             return '';
   1215         }
   1216     }
   1217     _getSpawnFileName() {
   1218         if (IS_WINDOWS) {
   1219             if (this._isCmdFile()) {
   1220                 return process.env['COMSPEC'] || 'cmd.exe';
   1221             }
   1222         }
   1223         return this.toolPath;
   1224     }
   1225     _getSpawnArgs(options) {
   1226         if (IS_WINDOWS) {
   1227             if (this._isCmdFile()) {
   1228                 let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;
   1229                 for (const a of this.args) {
   1230                     argline += ' ';
   1231                     argline += options.windowsVerbatimArguments
   1232                         ? a
   1233                         : this._windowsQuoteCmdArg(a);
   1234                 }
   1235                 argline += '"';
   1236                 return [argline];
   1237             }
   1238         }
   1239         return this.args;
   1240     }
   1241     _endsWith(str, end) {
   1242         return str.endsWith(end);
   1243     }
   1244     _isCmdFile() {
   1245         const upperToolPath = this.toolPath.toUpperCase();
   1246         return (this._endsWith(upperToolPath, '.CMD') ||
   1247             this._endsWith(upperToolPath, '.BAT'));
   1248     }
   1249     _windowsQuoteCmdArg(arg) {
   1250         // for .exe, apply the normal quoting rules that libuv applies
   1251         if (!this._isCmdFile()) {
   1252             return this._uvQuoteCmdArg(arg);
   1253         }
   1254         // otherwise apply quoting rules specific to the cmd.exe command line parser.
   1255         // the libuv rules are generic and are not designed specifically for cmd.exe
   1256         // command line parser.
   1257         //
   1258         // for a detailed description of the cmd.exe command line parser, refer to
   1259         // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
   1260         // need quotes for empty arg
   1261         if (!arg) {
   1262             return '""';
   1263         }
   1264         // determine whether the arg needs to be quoted
   1265         const cmdSpecialChars = [
   1266             ' ',
   1267             '\t',
   1268             '&',
   1269             '(',
   1270             ')',
   1271             '[',
   1272             ']',
   1273             '{',
   1274             '}',
   1275             '^',
   1276             '=',
   1277             ';',
   1278             '!',
   1279             "'",
   1280             '+',
   1281             ',',
   1282             '`',
   1283             '~',
   1284             '|',
   1285             '<',
   1286             '>',
   1287             '"'
   1288         ];
   1289         let needsQuotes = false;
   1290         for (const char of arg) {
   1291             if (cmdSpecialChars.some(x => x === char)) {
   1292                 needsQuotes = true;
   1293                 break;
   1294             }
   1295         }
   1296         // short-circuit if quotes not needed
   1297         if (!needsQuotes) {
   1298             return arg;
   1299         }
   1300         // the following quoting rules are very similar to the rules that by libuv applies.
   1301         //
   1302         // 1) wrap the string in quotes
   1303         //
   1304         // 2) double-up quotes - i.e. " => ""
   1305         //
   1306         //    this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
   1307         //    doesn't work well with a cmd.exe command line.
   1308         //
   1309         //    note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
   1310         //    for example, the command line:
   1311         //          foo.exe "myarg:""my val"""
   1312         //    is parsed by a .NET console app into an arg array:
   1313         //          [ "myarg:\"my val\"" ]
   1314         //    which is the same end result when applying libuv quoting rules. although the actual
   1315         //    command line from libuv quoting rules would look like:
   1316         //          foo.exe "myarg:\"my val\""
   1317         //
   1318         // 3) double-up slashes that precede a quote,
   1319         //    e.g.  hello \world    => "hello \world"
   1320         //          hello\"world    => "hello\\""world"
   1321         //          hello\\"world   => "hello\\\\""world"
   1322         //          hello world\    => "hello world\\"
   1323         //
   1324         //    technically this is not required for a cmd.exe command line, or the batch argument parser.
   1325         //    the reasons for including this as a .cmd quoting rule are:
   1326         //
   1327         //    a) this is optimized for the scenario where the argument is passed from the .cmd file to an
   1328         //       external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
   1329         //
   1330         //    b) it's what we've been doing previously (by deferring to node default behavior) and we
   1331         //       haven't heard any complaints about that aspect.
   1332         //
   1333         // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
   1334         // escaped when used on the command line directly - even though within a .cmd file % can be escaped
   1335         // by using %%.
   1336         //
   1337         // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
   1338         // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
   1339         //
   1340         // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
   1341         // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
   1342         // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
   1343         // to an external program.
   1344         //
   1345         // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
   1346         // % can be escaped within a .cmd file.
   1347         let reverse = '"';
   1348         let quoteHit = true;
   1349         for (let i = arg.length; i > 0; i--) {
   1350             // walk the string in reverse
   1351             reverse += arg[i - 1];
   1352             if (quoteHit && arg[i - 1] === '\\') {
   1353                 reverse += '\\'; // double the slash
   1354             }
   1355             else if (arg[i - 1] === '"') {
   1356                 quoteHit = true;
   1357                 reverse += '"'; // double the quote
   1358             }
   1359             else {
   1360                 quoteHit = false;
   1361             }
   1362         }
   1363         reverse += '"';
   1364         return reverse
   1365             .split('')
   1366             .reverse()
   1367             .join('');
   1368     }
   1369     _uvQuoteCmdArg(arg) {
   1370         // Tool runner wraps child_process.spawn() and needs to apply the same quoting as
   1371         // Node in certain cases where the undocumented spawn option windowsVerbatimArguments
   1372         // is used.
   1373         //
   1374         // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
   1375         // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
   1376         // pasting copyright notice from Node within this function:
   1377         //
   1378         //      Copyright Joyent, Inc. and other Node contributors. All rights reserved.
   1379         //
   1380         //      Permission is hereby granted, free of charge, to any person obtaining a copy
   1381         //      of this software and associated documentation files (the "Software"), to
   1382         //      deal in the Software without restriction, including without limitation the
   1383         //      rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
   1384         //      sell copies of the Software, and to permit persons to whom the Software is
   1385         //      furnished to do so, subject to the following conditions:
   1386         //
   1387         //      The above copyright notice and this permission notice shall be included in
   1388         //      all copies or substantial portions of the Software.
   1389         //
   1390         //      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   1391         //      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   1392         //      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   1393         //      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   1394         //      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   1395         //      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   1396         //      IN THE SOFTWARE.
   1397         if (!arg) {
   1398             // Need double quotation for empty argument
   1399             return '""';
   1400         }
   1401         if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) {
   1402             // No quotation needed
   1403             return arg;
   1404         }
   1405         if (!arg.includes('"') && !arg.includes('\\')) {
   1406             // No embedded double quotes or backslashes, so I can just wrap
   1407             // quote marks around the whole thing.
   1408             return `"${arg}"`;
   1409         }
   1410         // Expected input/output:
   1411         //   input : hello"world
   1412         //   output: "hello\"world"
   1413         //   input : hello""world
   1414         //   output: "hello\"\"world"
   1415         //   input : hello\world
   1416         //   output: hello\world
   1417         //   input : hello\\world
   1418         //   output: hello\\world
   1419         //   input : hello\"world
   1420         //   output: "hello\\\"world"
   1421         //   input : hello\\"world
   1422         //   output: "hello\\\\\"world"
   1423         //   input : hello world\
   1424         //   output: "hello world\\" - note the comment in libuv actually reads "hello world\"
   1425         //                             but it appears the comment is wrong, it should be "hello world\\"
   1426         let reverse = '"';
   1427         let quoteHit = true;
   1428         for (let i = arg.length; i > 0; i--) {
   1429             // walk the string in reverse
   1430             reverse += arg[i - 1];
   1431             if (quoteHit && arg[i - 1] === '\\') {
   1432                 reverse += '\\';
   1433             }
   1434             else if (arg[i - 1] === '"') {
   1435                 quoteHit = true;
   1436                 reverse += '\\';
   1437             }
   1438             else {
   1439                 quoteHit = false;
   1440             }
   1441         }
   1442         reverse += '"';
   1443         return reverse
   1444             .split('')
   1445             .reverse()
   1446             .join('');
   1447     }
   1448     _cloneExecOptions(options) {
   1449         options = options || {};
   1450         const result = {
   1451             cwd: options.cwd || process.cwd(),
   1452             env: options.env || process.env,
   1453             silent: options.silent || false,
   1454             windowsVerbatimArguments: options.windowsVerbatimArguments || false,
   1455             failOnStdErr: options.failOnStdErr || false,
   1456             ignoreReturnCode: options.ignoreReturnCode || false,
   1457             delay: options.delay || 10000
   1458         };
   1459         result.outStream = options.outStream || process.stdout;
   1460         result.errStream = options.errStream || process.stderr;
   1461         return result;
   1462     }
   1463     _getSpawnOptions(options, toolPath) {
   1464         options = options || {};
   1465         const result = {};
   1466         result.cwd = options.cwd;
   1467         result.env = options.env;
   1468         result['windowsVerbatimArguments'] =
   1469             options.windowsVerbatimArguments || this._isCmdFile();
   1470         if (options.windowsVerbatimArguments) {
   1471             result.argv0 = `"${toolPath}"`;
   1472         }
   1473         return result;
   1474     }
   1475     /**
   1476      * Exec a tool.
   1477      * Output will be streamed to the live console.
   1478      * Returns promise with return code
   1479      *
   1480      * @param     tool     path to tool to exec
   1481      * @param     options  optional exec options.  See ExecOptions
   1482      * @returns   number
   1483      */
   1484     exec() {
   1485         return __awaiter(this, void 0, void 0, function* () {
   1486             // root the tool path if it is unrooted and contains relative pathing
   1487             if (!ioUtil.isRooted(this.toolPath) &&
   1488                 (this.toolPath.includes('/') ||
   1489                     (IS_WINDOWS && this.toolPath.includes('\\')))) {
   1490                 // prefer options.cwd if it is specified, however options.cwd may also need to be rooted
   1491                 this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath);
   1492             }
   1493             // if the tool is only a file name, then resolve it from the PATH
   1494             // otherwise verify it exists (add extension on Windows if necessary)
   1495             this.toolPath = yield io.which(this.toolPath, true);
   1496             return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
   1497                 this._debug(`exec tool: ${this.toolPath}`);
   1498                 this._debug('arguments:');
   1499                 for (const arg of this.args) {
   1500                     this._debug(`   ${arg}`);
   1501                 }
   1502                 const optionsNonNull = this._cloneExecOptions(this.options);
   1503                 if (!optionsNonNull.silent && optionsNonNull.outStream) {
   1504                     optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);
   1505                 }
   1506                 const state = new ExecState(optionsNonNull, this.toolPath);
   1507                 state.on('debug', (message) => {
   1508                     this._debug(message);
   1509                 });
   1510                 if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) {
   1511                     return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`));
   1512                 }
   1513                 const fileName = this._getSpawnFileName();
   1514                 const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
   1515                 let stdbuffer = '';
   1516                 if (cp.stdout) {
   1517                     cp.stdout.on('data', (data) => {
   1518                         if (this.options.listeners && this.options.listeners.stdout) {
   1519                             this.options.listeners.stdout(data);
   1520                         }
   1521                         if (!optionsNonNull.silent && optionsNonNull.outStream) {
   1522                             optionsNonNull.outStream.write(data);
   1523                         }
   1524                         stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => {
   1525                             if (this.options.listeners && this.options.listeners.stdline) {
   1526                                 this.options.listeners.stdline(line);
   1527                             }
   1528                         });
   1529                     });
   1530                 }
   1531                 let errbuffer = '';
   1532                 if (cp.stderr) {
   1533                     cp.stderr.on('data', (data) => {
   1534                         state.processStderr = true;
   1535                         if (this.options.listeners && this.options.listeners.stderr) {
   1536                             this.options.listeners.stderr(data);
   1537                         }
   1538                         if (!optionsNonNull.silent &&
   1539                             optionsNonNull.errStream &&
   1540                             optionsNonNull.outStream) {
   1541                             const s = optionsNonNull.failOnStdErr
   1542                                 ? optionsNonNull.errStream
   1543                                 : optionsNonNull.outStream;
   1544                             s.write(data);
   1545                         }
   1546                         errbuffer = this._processLineBuffer(data, errbuffer, (line) => {
   1547                             if (this.options.listeners && this.options.listeners.errline) {
   1548                                 this.options.listeners.errline(line);
   1549                             }
   1550                         });
   1551                     });
   1552                 }
   1553                 cp.on('error', (err) => {
   1554                     state.processError = err.message;
   1555                     state.processExited = true;
   1556                     state.processClosed = true;
   1557                     state.CheckComplete();
   1558                 });
   1559                 cp.on('exit', (code) => {
   1560                     state.processExitCode = code;
   1561                     state.processExited = true;
   1562                     this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);
   1563                     state.CheckComplete();
   1564                 });
   1565                 cp.on('close', (code) => {
   1566                     state.processExitCode = code;
   1567                     state.processExited = true;
   1568                     state.processClosed = true;
   1569                     this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);
   1570                     state.CheckComplete();
   1571                 });
   1572                 state.on('done', (error, exitCode) => {
   1573                     if (stdbuffer.length > 0) {
   1574                         this.emit('stdline', stdbuffer);
   1575                     }
   1576                     if (errbuffer.length > 0) {
   1577                         this.emit('errline', errbuffer);
   1578                     }
   1579                     cp.removeAllListeners();
   1580                     if (error) {
   1581                         reject(error);
   1582                     }
   1583                     else {
   1584                         resolve(exitCode);
   1585                     }
   1586                 });
   1587                 if (this.options.input) {
   1588                     if (!cp.stdin) {
   1589                         throw new Error('child process missing stdin');
   1590                     }
   1591                     cp.stdin.end(this.options.input);
   1592                 }
   1593             }));
   1594         });
   1595     }
   1596 }
   1597 exports.ToolRunner = ToolRunner;
   1598 /**
   1599  * Convert an arg string to an array of args. Handles escaping
   1600  *
   1601  * @param    argString   string of arguments
   1602  * @returns  string[]    array of arguments
   1603  */
   1604 function argStringToArray(argString) {
   1605     const args = [];
   1606     let inQuotes = false;
   1607     let escaped = false;
   1608     let arg = '';
   1609     function append(c) {
   1610         // we only escape double quotes.
   1611         if (escaped && c !== '"') {
   1612             arg += '\\';
   1613         }
   1614         arg += c;
   1615         escaped = false;
   1616     }
   1617     for (let i = 0; i < argString.length; i++) {
   1618         const c = argString.charAt(i);
   1619         if (c === '"') {
   1620             if (!escaped) {
   1621                 inQuotes = !inQuotes;
   1622             }
   1623             else {
   1624                 append(c);
   1625             }
   1626             continue;
   1627         }
   1628         if (c === '\\' && escaped) {
   1629             append(c);
   1630             continue;
   1631         }
   1632         if (c === '\\' && inQuotes) {
   1633             escaped = true;
   1634             continue;
   1635         }
   1636         if (c === ' ' && !inQuotes) {
   1637             if (arg.length > 0) {
   1638                 args.push(arg);
   1639                 arg = '';
   1640             }
   1641             continue;
   1642         }
   1643         append(c);
   1644     }
   1645     if (arg.length > 0) {
   1646         args.push(arg.trim());
   1647     }
   1648     return args;
   1649 }
   1650 exports.argStringToArray = argStringToArray;
   1651 class ExecState extends events.EventEmitter {
   1652     constructor(options, toolPath) {
   1653         super();
   1654         this.processClosed = false; // tracks whether the process has exited and stdio is closed
   1655         this.processError = '';
   1656         this.processExitCode = 0;
   1657         this.processExited = false; // tracks whether the process has exited
   1658         this.processStderr = false; // tracks whether stderr was written to
   1659         this.delay = 10000; // 10 seconds
   1660         this.done = false;
   1661         this.timeout = null;
   1662         if (!toolPath) {
   1663             throw new Error('toolPath must not be empty');
   1664         }
   1665         this.options = options;
   1666         this.toolPath = toolPath;
   1667         if (options.delay) {
   1668             this.delay = options.delay;
   1669         }
   1670     }
   1671     CheckComplete() {
   1672         if (this.done) {
   1673             return;
   1674         }
   1675         if (this.processClosed) {
   1676             this._setResult();
   1677         }
   1678         else if (this.processExited) {
   1679             this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this);
   1680         }
   1681     }
   1682     _debug(message) {
   1683         this.emit('debug', message);
   1684     }
   1685     _setResult() {
   1686         // determine whether there is an error
   1687         let error;
   1688         if (this.processExited) {
   1689             if (this.processError) {
   1690                 error = 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}`);
   1691             }
   1692             else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {
   1693                 error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
   1694             }
   1695             else if (this.processStderr && this.options.failOnStdErr) {
   1696                 error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);
   1697             }
   1698         }
   1699         // clear the timeout
   1700         if (this.timeout) {
   1701             clearTimeout(this.timeout);
   1702             this.timeout = null;
   1703         }
   1704         this.done = true;
   1705         this.emit('done', error, this.processExitCode);
   1706     }
   1707     static HandleTimeout(state) {
   1708         if (state.done) {
   1709             return;
   1710         }
   1711         if (!state.processClosed && state.processExited) {
   1712             const message = `The STDIO streams did not close within ${state.delay /
   1713                 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;
   1714             state._debug(message);
   1715         }
   1716         state._setResult();
   1717     }
   1718 }
   1719 //# sourceMappingURL=toolrunner.js.map
   1720 
   1721 /***/ }),
   1722 
   1723 /***/ 4087:
   1724 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   1725 
   1726 
   1727 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1728 exports.Context = void 0;
   1729 const fs_1 = __nccwpck_require__(7147);
   1730 const os_1 = __nccwpck_require__(2037);
   1731 class Context {
   1732     /**
   1733      * Hydrate the context from the environment
   1734      */
   1735     constructor() {
   1736         var _a, _b, _c;
   1737         this.payload = {};
   1738         if (process.env.GITHUB_EVENT_PATH) {
   1739             if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {
   1740                 this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
   1741             }
   1742             else {
   1743                 const path = process.env.GITHUB_EVENT_PATH;
   1744                 process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);
   1745             }
   1746         }
   1747         this.eventName = process.env.GITHUB_EVENT_NAME;
   1748         this.sha = process.env.GITHUB_SHA;
   1749         this.ref = process.env.GITHUB_REF;
   1750         this.workflow = process.env.GITHUB_WORKFLOW;
   1751         this.action = process.env.GITHUB_ACTION;
   1752         this.actor = process.env.GITHUB_ACTOR;
   1753         this.job = process.env.GITHUB_JOB;
   1754         this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);
   1755         this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);
   1756         this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;
   1757         this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;
   1758         this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;
   1759     }
   1760     get issue() {
   1761         const payload = this.payload;
   1762         return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });
   1763     }
   1764     get repo() {
   1765         if (process.env.GITHUB_REPOSITORY) {
   1766             const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
   1767             return { owner, repo };
   1768         }
   1769         if (this.payload.repository) {
   1770             return {
   1771                 owner: this.payload.repository.owner.login,
   1772                 repo: this.payload.repository.name
   1773             };
   1774         }
   1775         throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
   1776     }
   1777 }
   1778 exports.Context = Context;
   1779 //# sourceMappingURL=context.js.map
   1780 
   1781 /***/ }),
   1782 
   1783 /***/ 5438:
   1784 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   1785 
   1786 
   1787 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   1788     if (k2 === undefined) k2 = k;
   1789     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   1790 }) : (function(o, m, k, k2) {
   1791     if (k2 === undefined) k2 = k;
   1792     o[k2] = m[k];
   1793 }));
   1794 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   1795     Object.defineProperty(o, "default", { enumerable: true, value: v });
   1796 }) : function(o, v) {
   1797     o["default"] = v;
   1798 });
   1799 var __importStar = (this && this.__importStar) || function (mod) {
   1800     if (mod && mod.__esModule) return mod;
   1801     var result = {};
   1802     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   1803     __setModuleDefault(result, mod);
   1804     return result;
   1805 };
   1806 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1807 exports.getOctokit = exports.context = void 0;
   1808 const Context = __importStar(__nccwpck_require__(4087));
   1809 const utils_1 = __nccwpck_require__(3030);
   1810 exports.context = new Context.Context();
   1811 /**
   1812  * Returns a hydrated octokit ready to use for GitHub Actions
   1813  *
   1814  * @param     token    the repo PAT or GITHUB_TOKEN
   1815  * @param     options  other options to set
   1816  */
   1817 function getOctokit(token, options, ...additionalPlugins) {
   1818     const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);
   1819     return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options));
   1820 }
   1821 exports.getOctokit = getOctokit;
   1822 //# sourceMappingURL=github.js.map
   1823 
   1824 /***/ }),
   1825 
   1826 /***/ 7914:
   1827 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   1828 
   1829 
   1830 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   1831     if (k2 === undefined) k2 = k;
   1832     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   1833 }) : (function(o, m, k, k2) {
   1834     if (k2 === undefined) k2 = k;
   1835     o[k2] = m[k];
   1836 }));
   1837 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   1838     Object.defineProperty(o, "default", { enumerable: true, value: v });
   1839 }) : function(o, v) {
   1840     o["default"] = v;
   1841 });
   1842 var __importStar = (this && this.__importStar) || function (mod) {
   1843     if (mod && mod.__esModule) return mod;
   1844     var result = {};
   1845     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   1846     __setModuleDefault(result, mod);
   1847     return result;
   1848 };
   1849 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1850 exports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0;
   1851 const httpClient = __importStar(__nccwpck_require__(6255));
   1852 function getAuthString(token, options) {
   1853     if (!token && !options.auth) {
   1854         throw new Error('Parameter token or opts.auth is required');
   1855     }
   1856     else if (token && options.auth) {
   1857         throw new Error('Parameters token and opts.auth may not both be specified');
   1858     }
   1859     return typeof options.auth === 'string' ? options.auth : `token ${token}`;
   1860 }
   1861 exports.getAuthString = getAuthString;
   1862 function getProxyAgent(destinationUrl) {
   1863     const hc = new httpClient.HttpClient();
   1864     return hc.getAgent(destinationUrl);
   1865 }
   1866 exports.getProxyAgent = getProxyAgent;
   1867 function getApiBaseUrl() {
   1868     return process.env['GITHUB_API_URL'] || 'https://api.github.com';
   1869 }
   1870 exports.getApiBaseUrl = getApiBaseUrl;
   1871 //# sourceMappingURL=utils.js.map
   1872 
   1873 /***/ }),
   1874 
   1875 /***/ 3030:
   1876 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   1877 
   1878 
   1879 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   1880     if (k2 === undefined) k2 = k;
   1881     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   1882 }) : (function(o, m, k, k2) {
   1883     if (k2 === undefined) k2 = k;
   1884     o[k2] = m[k];
   1885 }));
   1886 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   1887     Object.defineProperty(o, "default", { enumerable: true, value: v });
   1888 }) : function(o, v) {
   1889     o["default"] = v;
   1890 });
   1891 var __importStar = (this && this.__importStar) || function (mod) {
   1892     if (mod && mod.__esModule) return mod;
   1893     var result = {};
   1894     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   1895     __setModuleDefault(result, mod);
   1896     return result;
   1897 };
   1898 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1899 exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;
   1900 const Context = __importStar(__nccwpck_require__(4087));
   1901 const Utils = __importStar(__nccwpck_require__(7914));
   1902 // octokit + plugins
   1903 const core_1 = __nccwpck_require__(6762);
   1904 const plugin_rest_endpoint_methods_1 = __nccwpck_require__(3044);
   1905 const plugin_paginate_rest_1 = __nccwpck_require__(4193);
   1906 exports.context = new Context.Context();
   1907 const baseUrl = Utils.getApiBaseUrl();
   1908 exports.defaults = {
   1909     baseUrl,
   1910     request: {
   1911         agent: Utils.getProxyAgent(baseUrl)
   1912     }
   1913 };
   1914 exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);
   1915 /**
   1916  * Convience function to correctly format Octokit Options to pass into the constructor.
   1917  *
   1918  * @param     token    the repo PAT or GITHUB_TOKEN
   1919  * @param     options  other options to set
   1920  */
   1921 function getOctokitOptions(token, options) {
   1922     const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller
   1923     // Auth
   1924     const auth = Utils.getAuthString(token, opts);
   1925     if (auth) {
   1926         opts.auth = auth;
   1927     }
   1928     return opts;
   1929 }
   1930 exports.getOctokitOptions = getOctokitOptions;
   1931 //# sourceMappingURL=utils.js.map
   1932 
   1933 /***/ }),
   1934 
   1935 /***/ 5526:
   1936 /***/ (function(__unused_webpack_module, exports) {
   1937 
   1938 
   1939 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   1940     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   1941     return new (P || (P = Promise))(function (resolve, reject) {
   1942         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   1943         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   1944         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   1945         step((generator = generator.apply(thisArg, _arguments || [])).next());
   1946     });
   1947 };
   1948 Object.defineProperty(exports, "__esModule", ({ value: true }));
   1949 exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;
   1950 class BasicCredentialHandler {
   1951     constructor(username, password) {
   1952         this.username = username;
   1953         this.password = password;
   1954     }
   1955     prepareRequest(options) {
   1956         if (!options.headers) {
   1957             throw Error('The request has no headers');
   1958         }
   1959         options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;
   1960     }
   1961     // This handler cannot handle 401
   1962     canHandleAuthentication() {
   1963         return false;
   1964     }
   1965     handleAuthentication() {
   1966         return __awaiter(this, void 0, void 0, function* () {
   1967             throw new Error('not implemented');
   1968         });
   1969     }
   1970 }
   1971 exports.BasicCredentialHandler = BasicCredentialHandler;
   1972 class BearerCredentialHandler {
   1973     constructor(token) {
   1974         this.token = token;
   1975     }
   1976     // currently implements pre-authorization
   1977     // TODO: support preAuth = false where it hooks on 401
   1978     prepareRequest(options) {
   1979         if (!options.headers) {
   1980             throw Error('The request has no headers');
   1981         }
   1982         options.headers['Authorization'] = `Bearer ${this.token}`;
   1983     }
   1984     // This handler cannot handle 401
   1985     canHandleAuthentication() {
   1986         return false;
   1987     }
   1988     handleAuthentication() {
   1989         return __awaiter(this, void 0, void 0, function* () {
   1990             throw new Error('not implemented');
   1991         });
   1992     }
   1993 }
   1994 exports.BearerCredentialHandler = BearerCredentialHandler;
   1995 class PersonalAccessTokenCredentialHandler {
   1996     constructor(token) {
   1997         this.token = token;
   1998     }
   1999     // currently implements pre-authorization
   2000     // TODO: support preAuth = false where it hooks on 401
   2001     prepareRequest(options) {
   2002         if (!options.headers) {
   2003             throw Error('The request has no headers');
   2004         }
   2005         options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;
   2006     }
   2007     // This handler cannot handle 401
   2008     canHandleAuthentication() {
   2009         return false;
   2010     }
   2011     handleAuthentication() {
   2012         return __awaiter(this, void 0, void 0, function* () {
   2013             throw new Error('not implemented');
   2014         });
   2015     }
   2016 }
   2017 exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
   2018 //# sourceMappingURL=auth.js.map
   2019 
   2020 /***/ }),
   2021 
   2022 /***/ 6255:
   2023 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   2024 
   2025 
   2026 /* eslint-disable @typescript-eslint/no-explicit-any */
   2027 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   2028     if (k2 === undefined) k2 = k;
   2029     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   2030 }) : (function(o, m, k, k2) {
   2031     if (k2 === undefined) k2 = k;
   2032     o[k2] = m[k];
   2033 }));
   2034 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   2035     Object.defineProperty(o, "default", { enumerable: true, value: v });
   2036 }) : function(o, v) {
   2037     o["default"] = v;
   2038 });
   2039 var __importStar = (this && this.__importStar) || function (mod) {
   2040     if (mod && mod.__esModule) return mod;
   2041     var result = {};
   2042     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   2043     __setModuleDefault(result, mod);
   2044     return result;
   2045 };
   2046 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   2047     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   2048     return new (P || (P = Promise))(function (resolve, reject) {
   2049         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   2050         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   2051         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   2052         step((generator = generator.apply(thisArg, _arguments || [])).next());
   2053     });
   2054 };
   2055 Object.defineProperty(exports, "__esModule", ({ value: true }));
   2056 exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;
   2057 const http = __importStar(__nccwpck_require__(3685));
   2058 const https = __importStar(__nccwpck_require__(5687));
   2059 const pm = __importStar(__nccwpck_require__(9835));
   2060 const tunnel = __importStar(__nccwpck_require__(4294));
   2061 var HttpCodes;
   2062 (function (HttpCodes) {
   2063     HttpCodes[HttpCodes["OK"] = 200] = "OK";
   2064     HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
   2065     HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
   2066     HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
   2067     HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
   2068     HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
   2069     HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
   2070     HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
   2071     HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
   2072     HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
   2073     HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
   2074     HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
   2075     HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
   2076     HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
   2077     HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
   2078     HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
   2079     HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
   2080     HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
   2081     HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
   2082     HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
   2083     HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
   2084     HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
   2085     HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
   2086     HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
   2087     HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
   2088     HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
   2089     HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
   2090 })(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
   2091 var Headers;
   2092 (function (Headers) {
   2093     Headers["Accept"] = "accept";
   2094     Headers["ContentType"] = "content-type";
   2095 })(Headers = exports.Headers || (exports.Headers = {}));
   2096 var MediaTypes;
   2097 (function (MediaTypes) {
   2098     MediaTypes["ApplicationJson"] = "application/json";
   2099 })(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));
   2100 /**
   2101  * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
   2102  * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
   2103  */
   2104 function getProxyUrl(serverUrl) {
   2105     const proxyUrl = pm.getProxyUrl(new URL(serverUrl));
   2106     return proxyUrl ? proxyUrl.href : '';
   2107 }
   2108 exports.getProxyUrl = getProxyUrl;
   2109 const HttpRedirectCodes = [
   2110     HttpCodes.MovedPermanently,
   2111     HttpCodes.ResourceMoved,
   2112     HttpCodes.SeeOther,
   2113     HttpCodes.TemporaryRedirect,
   2114     HttpCodes.PermanentRedirect
   2115 ];
   2116 const HttpResponseRetryCodes = [
   2117     HttpCodes.BadGateway,
   2118     HttpCodes.ServiceUnavailable,
   2119     HttpCodes.GatewayTimeout
   2120 ];
   2121 const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
   2122 const ExponentialBackoffCeiling = 10;
   2123 const ExponentialBackoffTimeSlice = 5;
   2124 class HttpClientError extends Error {
   2125     constructor(message, statusCode) {
   2126         super(message);
   2127         this.name = 'HttpClientError';
   2128         this.statusCode = statusCode;
   2129         Object.setPrototypeOf(this, HttpClientError.prototype);
   2130     }
   2131 }
   2132 exports.HttpClientError = HttpClientError;
   2133 class HttpClientResponse {
   2134     constructor(message) {
   2135         this.message = message;
   2136     }
   2137     readBody() {
   2138         return __awaiter(this, void 0, void 0, function* () {
   2139             return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
   2140                 let output = Buffer.alloc(0);
   2141                 this.message.on('data', (chunk) => {
   2142                     output = Buffer.concat([output, chunk]);
   2143                 });
   2144                 this.message.on('end', () => {
   2145                     resolve(output.toString());
   2146                 });
   2147             }));
   2148         });
   2149     }
   2150 }
   2151 exports.HttpClientResponse = HttpClientResponse;
   2152 function isHttps(requestUrl) {
   2153     const parsedUrl = new URL(requestUrl);
   2154     return parsedUrl.protocol === 'https:';
   2155 }
   2156 exports.isHttps = isHttps;
   2157 class HttpClient {
   2158     constructor(userAgent, handlers, requestOptions) {
   2159         this._ignoreSslError = false;
   2160         this._allowRedirects = true;
   2161         this._allowRedirectDowngrade = false;
   2162         this._maxRedirects = 50;
   2163         this._allowRetries = false;
   2164         this._maxRetries = 1;
   2165         this._keepAlive = false;
   2166         this._disposed = false;
   2167         this.userAgent = userAgent;
   2168         this.handlers = handlers || [];
   2169         this.requestOptions = requestOptions;
   2170         if (requestOptions) {
   2171             if (requestOptions.ignoreSslError != null) {
   2172                 this._ignoreSslError = requestOptions.ignoreSslError;
   2173             }
   2174             this._socketTimeout = requestOptions.socketTimeout;
   2175             if (requestOptions.allowRedirects != null) {
   2176                 this._allowRedirects = requestOptions.allowRedirects;
   2177             }
   2178             if (requestOptions.allowRedirectDowngrade != null) {
   2179                 this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
   2180             }
   2181             if (requestOptions.maxRedirects != null) {
   2182                 this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
   2183             }
   2184             if (requestOptions.keepAlive != null) {
   2185                 this._keepAlive = requestOptions.keepAlive;
   2186             }
   2187             if (requestOptions.allowRetries != null) {
   2188                 this._allowRetries = requestOptions.allowRetries;
   2189             }
   2190             if (requestOptions.maxRetries != null) {
   2191                 this._maxRetries = requestOptions.maxRetries;
   2192             }
   2193         }
   2194     }
   2195     options(requestUrl, additionalHeaders) {
   2196         return __awaiter(this, void 0, void 0, function* () {
   2197             return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
   2198         });
   2199     }
   2200     get(requestUrl, additionalHeaders) {
   2201         return __awaiter(this, void 0, void 0, function* () {
   2202             return this.request('GET', requestUrl, null, additionalHeaders || {});
   2203         });
   2204     }
   2205     del(requestUrl, additionalHeaders) {
   2206         return __awaiter(this, void 0, void 0, function* () {
   2207             return this.request('DELETE', requestUrl, null, additionalHeaders || {});
   2208         });
   2209     }
   2210     post(requestUrl, data, additionalHeaders) {
   2211         return __awaiter(this, void 0, void 0, function* () {
   2212             return this.request('POST', requestUrl, data, additionalHeaders || {});
   2213         });
   2214     }
   2215     patch(requestUrl, data, additionalHeaders) {
   2216         return __awaiter(this, void 0, void 0, function* () {
   2217             return this.request('PATCH', requestUrl, data, additionalHeaders || {});
   2218         });
   2219     }
   2220     put(requestUrl, data, additionalHeaders) {
   2221         return __awaiter(this, void 0, void 0, function* () {
   2222             return this.request('PUT', requestUrl, data, additionalHeaders || {});
   2223         });
   2224     }
   2225     head(requestUrl, additionalHeaders) {
   2226         return __awaiter(this, void 0, void 0, function* () {
   2227             return this.request('HEAD', requestUrl, null, additionalHeaders || {});
   2228         });
   2229     }
   2230     sendStream(verb, requestUrl, stream, additionalHeaders) {
   2231         return __awaiter(this, void 0, void 0, function* () {
   2232             return this.request(verb, requestUrl, stream, additionalHeaders);
   2233         });
   2234     }
   2235     /**
   2236      * Gets a typed object from an endpoint
   2237      * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
   2238      */
   2239     getJson(requestUrl, additionalHeaders = {}) {
   2240         return __awaiter(this, void 0, void 0, function* () {
   2241             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
   2242             const res = yield this.get(requestUrl, additionalHeaders);
   2243             return this._processResponse(res, this.requestOptions);
   2244         });
   2245     }
   2246     postJson(requestUrl, obj, additionalHeaders = {}) {
   2247         return __awaiter(this, void 0, void 0, function* () {
   2248             const data = JSON.stringify(obj, null, 2);
   2249             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
   2250             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
   2251             const res = yield this.post(requestUrl, data, additionalHeaders);
   2252             return this._processResponse(res, this.requestOptions);
   2253         });
   2254     }
   2255     putJson(requestUrl, obj, additionalHeaders = {}) {
   2256         return __awaiter(this, void 0, void 0, function* () {
   2257             const data = JSON.stringify(obj, null, 2);
   2258             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
   2259             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
   2260             const res = yield this.put(requestUrl, data, additionalHeaders);
   2261             return this._processResponse(res, this.requestOptions);
   2262         });
   2263     }
   2264     patchJson(requestUrl, obj, additionalHeaders = {}) {
   2265         return __awaiter(this, void 0, void 0, function* () {
   2266             const data = JSON.stringify(obj, null, 2);
   2267             additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
   2268             additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
   2269             const res = yield this.patch(requestUrl, data, additionalHeaders);
   2270             return this._processResponse(res, this.requestOptions);
   2271         });
   2272     }
   2273     /**
   2274      * Makes a raw http request.
   2275      * All other methods such as get, post, patch, and request ultimately call this.
   2276      * Prefer get, del, post and patch
   2277      */
   2278     request(verb, requestUrl, data, headers) {
   2279         return __awaiter(this, void 0, void 0, function* () {
   2280             if (this._disposed) {
   2281                 throw new Error('Client has already been disposed.');
   2282             }
   2283             const parsedUrl = new URL(requestUrl);
   2284             let info = this._prepareRequest(verb, parsedUrl, headers);
   2285             // Only perform retries on reads since writes may not be idempotent.
   2286             const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)
   2287                 ? this._maxRetries + 1
   2288                 : 1;
   2289             let numTries = 0;
   2290             let response;
   2291             do {
   2292                 response = yield this.requestRaw(info, data);
   2293                 // Check if it's an authentication challenge
   2294                 if (response &&
   2295                     response.message &&
   2296                     response.message.statusCode === HttpCodes.Unauthorized) {
   2297                     let authenticationHandler;
   2298                     for (const handler of this.handlers) {
   2299                         if (handler.canHandleAuthentication(response)) {
   2300                             authenticationHandler = handler;
   2301                             break;
   2302                         }
   2303                     }
   2304                     if (authenticationHandler) {
   2305                         return authenticationHandler.handleAuthentication(this, info, data);
   2306                     }
   2307                     else {
   2308                         // We have received an unauthorized response but have no handlers to handle it.
   2309                         // Let the response return to the caller.
   2310                         return response;
   2311                     }
   2312                 }
   2313                 let redirectsRemaining = this._maxRedirects;
   2314                 while (response.message.statusCode &&
   2315                     HttpRedirectCodes.includes(response.message.statusCode) &&
   2316                     this._allowRedirects &&
   2317                     redirectsRemaining > 0) {
   2318                     const redirectUrl = response.message.headers['location'];
   2319                     if (!redirectUrl) {
   2320                         // if there's no location to redirect to, we won't
   2321                         break;
   2322                     }
   2323                     const parsedRedirectUrl = new URL(redirectUrl);
   2324                     if (parsedUrl.protocol === 'https:' &&
   2325                         parsedUrl.protocol !== parsedRedirectUrl.protocol &&
   2326                         !this._allowRedirectDowngrade) {
   2327                         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.');
   2328                     }
   2329                     // we need to finish reading the response before reassigning response
   2330                     // which will leak the open socket.
   2331                     yield response.readBody();
   2332                     // strip authorization header if redirected to a different hostname
   2333                     if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
   2334                         for (const header in headers) {
   2335                             // header names are case insensitive
   2336                             if (header.toLowerCase() === 'authorization') {
   2337                                 delete headers[header];
   2338                             }
   2339                         }
   2340                     }
   2341                     // let's make the request with the new redirectUrl
   2342                     info = this._prepareRequest(verb, parsedRedirectUrl, headers);
   2343                     response = yield this.requestRaw(info, data);
   2344                     redirectsRemaining--;
   2345                 }
   2346                 if (!response.message.statusCode ||
   2347                     !HttpResponseRetryCodes.includes(response.message.statusCode)) {
   2348                     // If not a retry code, return immediately instead of retrying
   2349                     return response;
   2350                 }
   2351                 numTries += 1;
   2352                 if (numTries < maxTries) {
   2353                     yield response.readBody();
   2354                     yield this._performExponentialBackoff(numTries);
   2355                 }
   2356             } while (numTries < maxTries);
   2357             return response;
   2358         });
   2359     }
   2360     /**
   2361      * Needs to be called if keepAlive is set to true in request options.
   2362      */
   2363     dispose() {
   2364         if (this._agent) {
   2365             this._agent.destroy();
   2366         }
   2367         this._disposed = true;
   2368     }
   2369     /**
   2370      * Raw request.
   2371      * @param info
   2372      * @param data
   2373      */
   2374     requestRaw(info, data) {
   2375         return __awaiter(this, void 0, void 0, function* () {
   2376             return new Promise((resolve, reject) => {
   2377                 function callbackForResult(err, res) {
   2378                     if (err) {
   2379                         reject(err);
   2380                     }
   2381                     else if (!res) {
   2382                         // If `err` is not passed, then `res` must be passed.
   2383                         reject(new Error('Unknown error'));
   2384                     }
   2385                     else {
   2386                         resolve(res);
   2387                     }
   2388                 }
   2389                 this.requestRawWithCallback(info, data, callbackForResult);
   2390             });
   2391         });
   2392     }
   2393     /**
   2394      * Raw request with callback.
   2395      * @param info
   2396      * @param data
   2397      * @param onResult
   2398      */
   2399     requestRawWithCallback(info, data, onResult) {
   2400         if (typeof data === 'string') {
   2401             if (!info.options.headers) {
   2402                 info.options.headers = {};
   2403             }
   2404             info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
   2405         }
   2406         let callbackCalled = false;
   2407         function handleResult(err, res) {
   2408             if (!callbackCalled) {
   2409                 callbackCalled = true;
   2410                 onResult(err, res);
   2411             }
   2412         }
   2413         const req = info.httpModule.request(info.options, (msg) => {
   2414             const res = new HttpClientResponse(msg);
   2415             handleResult(undefined, res);
   2416         });
   2417         let socket;
   2418         req.on('socket', sock => {
   2419             socket = sock;
   2420         });
   2421         // If we ever get disconnected, we want the socket to timeout eventually
   2422         req.setTimeout(this._socketTimeout || 3 * 60000, () => {
   2423             if (socket) {
   2424                 socket.end();
   2425             }
   2426             handleResult(new Error(`Request timeout: ${info.options.path}`));
   2427         });
   2428         req.on('error', function (err) {
   2429             // err has statusCode property
   2430             // res should have headers
   2431             handleResult(err);
   2432         });
   2433         if (data && typeof data === 'string') {
   2434             req.write(data, 'utf8');
   2435         }
   2436         if (data && typeof data !== 'string') {
   2437             data.on('close', function () {
   2438                 req.end();
   2439             });
   2440             data.pipe(req);
   2441         }
   2442         else {
   2443             req.end();
   2444         }
   2445     }
   2446     /**
   2447      * Gets an http agent. This function is useful when you need an http agent that handles
   2448      * routing through a proxy server - depending upon the url and proxy environment variables.
   2449      * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
   2450      */
   2451     getAgent(serverUrl) {
   2452         const parsedUrl = new URL(serverUrl);
   2453         return this._getAgent(parsedUrl);
   2454     }
   2455     _prepareRequest(method, requestUrl, headers) {
   2456         const info = {};
   2457         info.parsedUrl = requestUrl;
   2458         const usingSsl = info.parsedUrl.protocol === 'https:';
   2459         info.httpModule = usingSsl ? https : http;
   2460         const defaultPort = usingSsl ? 443 : 80;
   2461         info.options = {};
   2462         info.options.host = info.parsedUrl.hostname;
   2463         info.options.port = info.parsedUrl.port
   2464             ? parseInt(info.parsedUrl.port)
   2465             : defaultPort;
   2466         info.options.path =
   2467             (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
   2468         info.options.method = method;
   2469         info.options.headers = this._mergeHeaders(headers);
   2470         if (this.userAgent != null) {
   2471             info.options.headers['user-agent'] = this.userAgent;
   2472         }
   2473         info.options.agent = this._getAgent(info.parsedUrl);
   2474         // gives handlers an opportunity to participate
   2475         if (this.handlers) {
   2476             for (const handler of this.handlers) {
   2477                 handler.prepareRequest(info.options);
   2478             }
   2479         }
   2480         return info;
   2481     }
   2482     _mergeHeaders(headers) {
   2483         if (this.requestOptions && this.requestOptions.headers) {
   2484             return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));
   2485         }
   2486         return lowercaseKeys(headers || {});
   2487     }
   2488     _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
   2489         let clientHeader;
   2490         if (this.requestOptions && this.requestOptions.headers) {
   2491             clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
   2492         }
   2493         return additionalHeaders[header] || clientHeader || _default;
   2494     }
   2495     _getAgent(parsedUrl) {
   2496         let agent;
   2497         const proxyUrl = pm.getProxyUrl(parsedUrl);
   2498         const useProxy = proxyUrl && proxyUrl.hostname;
   2499         if (this._keepAlive && useProxy) {
   2500             agent = this._proxyAgent;
   2501         }
   2502         if (this._keepAlive && !useProxy) {
   2503             agent = this._agent;
   2504         }
   2505         // if agent is already assigned use that agent.
   2506         if (agent) {
   2507             return agent;
   2508         }
   2509         const usingSsl = parsedUrl.protocol === 'https:';
   2510         let maxSockets = 100;
   2511         if (this.requestOptions) {
   2512             maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
   2513         }
   2514         // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
   2515         if (proxyUrl && proxyUrl.hostname) {
   2516             const agentOptions = {
   2517                 maxSockets,
   2518                 keepAlive: this._keepAlive,
   2519                 proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {
   2520                     proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
   2521                 })), { host: proxyUrl.hostname, port: proxyUrl.port })
   2522             };
   2523             let tunnelAgent;
   2524             const overHttps = proxyUrl.protocol === 'https:';
   2525             if (usingSsl) {
   2526                 tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
   2527             }
   2528             else {
   2529                 tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
   2530             }
   2531             agent = tunnelAgent(agentOptions);
   2532             this._proxyAgent = agent;
   2533         }
   2534         // if reusing agent across request and tunneling agent isn't assigned create a new agent
   2535         if (this._keepAlive && !agent) {
   2536             const options = { keepAlive: this._keepAlive, maxSockets };
   2537             agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
   2538             this._agent = agent;
   2539         }
   2540         // if not using private agent and tunnel agent isn't setup then use global agent
   2541         if (!agent) {
   2542             agent = usingSsl ? https.globalAgent : http.globalAgent;
   2543         }
   2544         if (usingSsl && this._ignoreSslError) {
   2545             // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
   2546             // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
   2547             // we have to cast it to any and change it directly
   2548             agent.options = Object.assign(agent.options || {}, {
   2549                 rejectUnauthorized: false
   2550             });
   2551         }
   2552         return agent;
   2553     }
   2554     _performExponentialBackoff(retryNumber) {
   2555         return __awaiter(this, void 0, void 0, function* () {
   2556             retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
   2557             const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
   2558             return new Promise(resolve => setTimeout(() => resolve(), ms));
   2559         });
   2560     }
   2561     _processResponse(res, options) {
   2562         return __awaiter(this, void 0, void 0, function* () {
   2563             return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
   2564                 const statusCode = res.message.statusCode || 0;
   2565                 const response = {
   2566                     statusCode,
   2567                     result: null,
   2568                     headers: {}
   2569                 };
   2570                 // not found leads to null obj returned
   2571                 if (statusCode === HttpCodes.NotFound) {
   2572                     resolve(response);
   2573                 }
   2574                 // get the result from the body
   2575                 function dateTimeDeserializer(key, value) {
   2576                     if (typeof value === 'string') {
   2577                         const a = new Date(value);
   2578                         if (!isNaN(a.valueOf())) {
   2579                             return a;
   2580                         }
   2581                     }
   2582                     return value;
   2583                 }
   2584                 let obj;
   2585                 let contents;
   2586                 try {
   2587                     contents = yield res.readBody();
   2588                     if (contents && contents.length > 0) {
   2589                         if (options && options.deserializeDates) {
   2590                             obj = JSON.parse(contents, dateTimeDeserializer);
   2591                         }
   2592                         else {
   2593                             obj = JSON.parse(contents);
   2594                         }
   2595                         response.result = obj;
   2596                     }
   2597                     response.headers = res.message.headers;
   2598                 }
   2599                 catch (err) {
   2600                     // Invalid resource (contents not json);  leaving result obj null
   2601                 }
   2602                 // note that 3xx redirects are handled by the http layer.
   2603                 if (statusCode > 299) {
   2604                     let msg;
   2605                     // if exception/error in body, attempt to get better error
   2606                     if (obj && obj.message) {
   2607                         msg = obj.message;
   2608                     }
   2609                     else if (contents && contents.length > 0) {
   2610                         // it may be the case that the exception is in the body message as string
   2611                         msg = contents;
   2612                     }
   2613                     else {
   2614                         msg = `Failed request: (${statusCode})`;
   2615                     }
   2616                     const err = new HttpClientError(msg, statusCode);
   2617                     err.result = response.result;
   2618                     reject(err);
   2619                 }
   2620                 else {
   2621                     resolve(response);
   2622                 }
   2623             }));
   2624         });
   2625     }
   2626 }
   2627 exports.HttpClient = HttpClient;
   2628 const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
   2629 //# sourceMappingURL=index.js.map
   2630 
   2631 /***/ }),
   2632 
   2633 /***/ 9835:
   2634 /***/ ((__unused_webpack_module, exports) => {
   2635 
   2636 
   2637 Object.defineProperty(exports, "__esModule", ({ value: true }));
   2638 exports.checkBypass = exports.getProxyUrl = void 0;
   2639 function getProxyUrl(reqUrl) {
   2640     const usingSsl = reqUrl.protocol === 'https:';
   2641     if (checkBypass(reqUrl)) {
   2642         return undefined;
   2643     }
   2644     const proxyVar = (() => {
   2645         if (usingSsl) {
   2646             return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
   2647         }
   2648         else {
   2649             return process.env['http_proxy'] || process.env['HTTP_PROXY'];
   2650         }
   2651     })();
   2652     if (proxyVar) {
   2653         return new URL(proxyVar);
   2654     }
   2655     else {
   2656         return undefined;
   2657     }
   2658 }
   2659 exports.getProxyUrl = getProxyUrl;
   2660 function checkBypass(reqUrl) {
   2661     if (!reqUrl.hostname) {
   2662         return false;
   2663     }
   2664     const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
   2665     if (!noProxy) {
   2666         return false;
   2667     }
   2668     // Determine the request port
   2669     let reqPort;
   2670     if (reqUrl.port) {
   2671         reqPort = Number(reqUrl.port);
   2672     }
   2673     else if (reqUrl.protocol === 'http:') {
   2674         reqPort = 80;
   2675     }
   2676     else if (reqUrl.protocol === 'https:') {
   2677         reqPort = 443;
   2678     }
   2679     // Format the request hostname and hostname with port
   2680     const upperReqHosts = [reqUrl.hostname.toUpperCase()];
   2681     if (typeof reqPort === 'number') {
   2682         upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
   2683     }
   2684     // Compare request host against noproxy
   2685     for (const upperNoProxyItem of noProxy
   2686         .split(',')
   2687         .map(x => x.trim().toUpperCase())
   2688         .filter(x => x)) {
   2689         if (upperReqHosts.some(x => x === upperNoProxyItem)) {
   2690             return true;
   2691         }
   2692     }
   2693     return false;
   2694 }
   2695 exports.checkBypass = checkBypass;
   2696 //# sourceMappingURL=proxy.js.map
   2697 
   2698 /***/ }),
   2699 
   2700 /***/ 1962:
   2701 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   2702 
   2703 
   2704 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   2705     if (k2 === undefined) k2 = k;
   2706     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   2707 }) : (function(o, m, k, k2) {
   2708     if (k2 === undefined) k2 = k;
   2709     o[k2] = m[k];
   2710 }));
   2711 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   2712     Object.defineProperty(o, "default", { enumerable: true, value: v });
   2713 }) : function(o, v) {
   2714     o["default"] = v;
   2715 });
   2716 var __importStar = (this && this.__importStar) || function (mod) {
   2717     if (mod && mod.__esModule) return mod;
   2718     var result = {};
   2719     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   2720     __setModuleDefault(result, mod);
   2721     return result;
   2722 };
   2723 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   2724     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   2725     return new (P || (P = Promise))(function (resolve, reject) {
   2726         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   2727         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   2728         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   2729         step((generator = generator.apply(thisArg, _arguments || [])).next());
   2730     });
   2731 };
   2732 var _a;
   2733 Object.defineProperty(exports, "__esModule", ({ value: true }));
   2734 exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0;
   2735 const fs = __importStar(__nccwpck_require__(7147));
   2736 const path = __importStar(__nccwpck_require__(1017));
   2737 _a = fs.promises
   2738 // export const {open} = 'fs'
   2739 , exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
   2740 // export const {open} = 'fs'
   2741 exports.IS_WINDOWS = process.platform === 'win32';
   2742 // See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691
   2743 exports.UV_FS_O_EXLOCK = 0x10000000;
   2744 exports.READONLY = fs.constants.O_RDONLY;
   2745 function exists(fsPath) {
   2746     return __awaiter(this, void 0, void 0, function* () {
   2747         try {
   2748             yield exports.stat(fsPath);
   2749         }
   2750         catch (err) {
   2751             if (err.code === 'ENOENT') {
   2752                 return false;
   2753             }
   2754             throw err;
   2755         }
   2756         return true;
   2757     });
   2758 }
   2759 exports.exists = exists;
   2760 function isDirectory(fsPath, useStat = false) {
   2761     return __awaiter(this, void 0, void 0, function* () {
   2762         const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
   2763         return stats.isDirectory();
   2764     });
   2765 }
   2766 exports.isDirectory = isDirectory;
   2767 /**
   2768  * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
   2769  * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
   2770  */
   2771 function isRooted(p) {
   2772     p = normalizeSeparators(p);
   2773     if (!p) {
   2774         throw new Error('isRooted() parameter "p" cannot be empty');
   2775     }
   2776     if (exports.IS_WINDOWS) {
   2777         return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
   2778         ); // e.g. C: or C:\hello
   2779     }
   2780     return p.startsWith('/');
   2781 }
   2782 exports.isRooted = isRooted;
   2783 /**
   2784  * Best effort attempt to determine whether a file exists and is executable.
   2785  * @param filePath    file path to check
   2786  * @param extensions  additional file extensions to try
   2787  * @return if file exists and is executable, returns the file path. otherwise empty string.
   2788  */
   2789 function tryGetExecutablePath(filePath, extensions) {
   2790     return __awaiter(this, void 0, void 0, function* () {
   2791         let stats = undefined;
   2792         try {
   2793             // test file exists
   2794             stats = yield exports.stat(filePath);
   2795         }
   2796         catch (err) {
   2797             if (err.code !== 'ENOENT') {
   2798                 // eslint-disable-next-line no-console
   2799                 console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
   2800             }
   2801         }
   2802         if (stats && stats.isFile()) {
   2803             if (exports.IS_WINDOWS) {
   2804                 // on Windows, test for valid extension
   2805                 const upperExt = path.extname(filePath).toUpperCase();
   2806                 if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
   2807                     return filePath;
   2808                 }
   2809             }
   2810             else {
   2811                 if (isUnixExecutable(stats)) {
   2812                     return filePath;
   2813                 }
   2814             }
   2815         }
   2816         // try each extension
   2817         const originalFilePath = filePath;
   2818         for (const extension of extensions) {
   2819             filePath = originalFilePath + extension;
   2820             stats = undefined;
   2821             try {
   2822                 stats = yield exports.stat(filePath);
   2823             }
   2824             catch (err) {
   2825                 if (err.code !== 'ENOENT') {
   2826                     // eslint-disable-next-line no-console
   2827                     console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
   2828                 }
   2829             }
   2830             if (stats && stats.isFile()) {
   2831                 if (exports.IS_WINDOWS) {
   2832                     // preserve the case of the actual file (since an extension was appended)
   2833                     try {
   2834                         const directory = path.dirname(filePath);
   2835                         const upperName = path.basename(filePath).toUpperCase();
   2836                         for (const actualName of yield exports.readdir(directory)) {
   2837                             if (upperName === actualName.toUpperCase()) {
   2838                                 filePath = path.join(directory, actualName);
   2839                                 break;
   2840                             }
   2841                         }
   2842                     }
   2843                     catch (err) {
   2844                         // eslint-disable-next-line no-console
   2845                         console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
   2846                     }
   2847                     return filePath;
   2848                 }
   2849                 else {
   2850                     if (isUnixExecutable(stats)) {
   2851                         return filePath;
   2852                     }
   2853                 }
   2854             }
   2855         }
   2856         return '';
   2857     });
   2858 }
   2859 exports.tryGetExecutablePath = tryGetExecutablePath;
   2860 function normalizeSeparators(p) {
   2861     p = p || '';
   2862     if (exports.IS_WINDOWS) {
   2863         // convert slashes on Windows
   2864         p = p.replace(/\//g, '\\');
   2865         // remove redundant slashes
   2866         return p.replace(/\\\\+/g, '\\');
   2867     }
   2868     // remove redundant slashes
   2869     return p.replace(/\/\/+/g, '/');
   2870 }
   2871 // on Mac/Linux, test the execute bit
   2872 //     R   W  X  R  W X R W X
   2873 //   256 128 64 32 16 8 4 2 1
   2874 function isUnixExecutable(stats) {
   2875     return ((stats.mode & 1) > 0 ||
   2876         ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
   2877         ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
   2878 }
   2879 // Get the path of cmd.exe in windows
   2880 function getCmdPath() {
   2881     var _a;
   2882     return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`;
   2883 }
   2884 exports.getCmdPath = getCmdPath;
   2885 //# sourceMappingURL=io-util.js.map
   2886 
   2887 /***/ }),
   2888 
   2889 /***/ 7436:
   2890 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   2891 
   2892 
   2893 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   2894     if (k2 === undefined) k2 = k;
   2895     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   2896 }) : (function(o, m, k, k2) {
   2897     if (k2 === undefined) k2 = k;
   2898     o[k2] = m[k];
   2899 }));
   2900 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   2901     Object.defineProperty(o, "default", { enumerable: true, value: v });
   2902 }) : function(o, v) {
   2903     o["default"] = v;
   2904 });
   2905 var __importStar = (this && this.__importStar) || function (mod) {
   2906     if (mod && mod.__esModule) return mod;
   2907     var result = {};
   2908     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   2909     __setModuleDefault(result, mod);
   2910     return result;
   2911 };
   2912 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   2913     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   2914     return new (P || (P = Promise))(function (resolve, reject) {
   2915         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   2916         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   2917         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   2918         step((generator = generator.apply(thisArg, _arguments || [])).next());
   2919     });
   2920 };
   2921 Object.defineProperty(exports, "__esModule", ({ value: true }));
   2922 exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0;
   2923 const assert_1 = __nccwpck_require__(9491);
   2924 const path = __importStar(__nccwpck_require__(1017));
   2925 const ioUtil = __importStar(__nccwpck_require__(1962));
   2926 /**
   2927  * Copies a file or folder.
   2928  * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
   2929  *
   2930  * @param     source    source path
   2931  * @param     dest      destination path
   2932  * @param     options   optional. See CopyOptions.
   2933  */
   2934 function cp(source, dest, options = {}) {
   2935     return __awaiter(this, void 0, void 0, function* () {
   2936         const { force, recursive, copySourceDirectory } = readCopyOptions(options);
   2937         const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
   2938         // Dest is an existing file, but not forcing
   2939         if (destStat && destStat.isFile() && !force) {
   2940             return;
   2941         }
   2942         // If dest is an existing directory, should copy inside.
   2943         const newDest = destStat && destStat.isDirectory() && copySourceDirectory
   2944             ? path.join(dest, path.basename(source))
   2945             : dest;
   2946         if (!(yield ioUtil.exists(source))) {
   2947             throw new Error(`no such file or directory: ${source}`);
   2948         }
   2949         const sourceStat = yield ioUtil.stat(source);
   2950         if (sourceStat.isDirectory()) {
   2951             if (!recursive) {
   2952                 throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
   2953             }
   2954             else {
   2955                 yield cpDirRecursive(source, newDest, 0, force);
   2956             }
   2957         }
   2958         else {
   2959             if (path.relative(source, newDest) === '') {
   2960                 // a file cannot be copied to itself
   2961                 throw new Error(`'${newDest}' and '${source}' are the same file`);
   2962             }
   2963             yield copyFile(source, newDest, force);
   2964         }
   2965     });
   2966 }
   2967 exports.cp = cp;
   2968 /**
   2969  * Moves a path.
   2970  *
   2971  * @param     source    source path
   2972  * @param     dest      destination path
   2973  * @param     options   optional. See MoveOptions.
   2974  */
   2975 function mv(source, dest, options = {}) {
   2976     return __awaiter(this, void 0, void 0, function* () {
   2977         if (yield ioUtil.exists(dest)) {
   2978             let destExists = true;
   2979             if (yield ioUtil.isDirectory(dest)) {
   2980                 // If dest is directory copy src into dest
   2981                 dest = path.join(dest, path.basename(source));
   2982                 destExists = yield ioUtil.exists(dest);
   2983             }
   2984             if (destExists) {
   2985                 if (options.force == null || options.force) {
   2986                     yield rmRF(dest);
   2987                 }
   2988                 else {
   2989                     throw new Error('Destination already exists');
   2990                 }
   2991             }
   2992         }
   2993         yield mkdirP(path.dirname(dest));
   2994         yield ioUtil.rename(source, dest);
   2995     });
   2996 }
   2997 exports.mv = mv;
   2998 /**
   2999  * Remove a path recursively with force
   3000  *
   3001  * @param inputPath path to remove
   3002  */
   3003 function rmRF(inputPath) {
   3004     return __awaiter(this, void 0, void 0, function* () {
   3005         if (ioUtil.IS_WINDOWS) {
   3006             // Check for invalid characters
   3007             // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file
   3008             if (/[*"<>|]/.test(inputPath)) {
   3009                 throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows');
   3010             }
   3011         }
   3012         try {
   3013             // note if path does not exist, error is silent
   3014             yield ioUtil.rm(inputPath, {
   3015                 force: true,
   3016                 maxRetries: 3,
   3017                 recursive: true,
   3018                 retryDelay: 300
   3019             });
   3020         }
   3021         catch (err) {
   3022             throw new Error(`File was unable to be removed ${err}`);
   3023         }
   3024     });
   3025 }
   3026 exports.rmRF = rmRF;
   3027 /**
   3028  * Make a directory.  Creates the full path with folders in between
   3029  * Will throw if it fails
   3030  *
   3031  * @param   fsPath        path to create
   3032  * @returns Promise<void>
   3033  */
   3034 function mkdirP(fsPath) {
   3035     return __awaiter(this, void 0, void 0, function* () {
   3036         assert_1.ok(fsPath, 'a path argument must be provided');
   3037         yield ioUtil.mkdir(fsPath, { recursive: true });
   3038     });
   3039 }
   3040 exports.mkdirP = mkdirP;
   3041 /**
   3042  * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
   3043  * If you check and the tool does not exist, it will throw.
   3044  *
   3045  * @param     tool              name of the tool
   3046  * @param     check             whether to check if tool exists
   3047  * @returns   Promise<string>   path to tool
   3048  */
   3049 function which(tool, check) {
   3050     return __awaiter(this, void 0, void 0, function* () {
   3051         if (!tool) {
   3052             throw new Error("parameter 'tool' is required");
   3053         }
   3054         // recursive when check=true
   3055         if (check) {
   3056             const result = yield which(tool, false);
   3057             if (!result) {
   3058                 if (ioUtil.IS_WINDOWS) {
   3059                     throw new Error(`Unable to locate executable file: ${tool}. 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.`);
   3060                 }
   3061                 else {
   3062                     throw new Error(`Unable to locate executable file: ${tool}. 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.`);
   3063                 }
   3064             }
   3065             return result;
   3066         }
   3067         const matches = yield findInPath(tool);
   3068         if (matches && matches.length > 0) {
   3069             return matches[0];
   3070         }
   3071         return '';
   3072     });
   3073 }
   3074 exports.which = which;
   3075 /**
   3076  * Returns a list of all occurrences of the given tool on the system path.
   3077  *
   3078  * @returns   Promise<string[]>  the paths of the tool
   3079  */
   3080 function findInPath(tool) {
   3081     return __awaiter(this, void 0, void 0, function* () {
   3082         if (!tool) {
   3083             throw new Error("parameter 'tool' is required");
   3084         }
   3085         // build the list of extensions to try
   3086         const extensions = [];
   3087         if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) {
   3088             for (const extension of process.env['PATHEXT'].split(path.delimiter)) {
   3089                 if (extension) {
   3090                     extensions.push(extension);
   3091                 }
   3092             }
   3093         }
   3094         // if it's rooted, return it if exists. otherwise return empty.
   3095         if (ioUtil.isRooted(tool)) {
   3096             const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
   3097             if (filePath) {
   3098                 return [filePath];
   3099             }
   3100             return [];
   3101         }
   3102         // if any path separators, return empty
   3103         if (tool.includes(path.sep)) {
   3104             return [];
   3105         }
   3106         // build the list of directories
   3107         //
   3108         // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
   3109         // it feels like we should not do this. Checking the current directory seems like more of a use
   3110         // case of a shell, and the which() function exposed by the toolkit should strive for consistency
   3111         // across platforms.
   3112         const directories = [];
   3113         if (process.env.PATH) {
   3114             for (const p of process.env.PATH.split(path.delimiter)) {
   3115                 if (p) {
   3116                     directories.push(p);
   3117                 }
   3118             }
   3119         }
   3120         // find all matches
   3121         const matches = [];
   3122         for (const directory of directories) {
   3123             const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions);
   3124             if (filePath) {
   3125                 matches.push(filePath);
   3126             }
   3127         }
   3128         return matches;
   3129     });
   3130 }
   3131 exports.findInPath = findInPath;
   3132 function readCopyOptions(options) {
   3133     const force = options.force == null ? true : options.force;
   3134     const recursive = Boolean(options.recursive);
   3135     const copySourceDirectory = options.copySourceDirectory == null
   3136         ? true
   3137         : Boolean(options.copySourceDirectory);
   3138     return { force, recursive, copySourceDirectory };
   3139 }
   3140 function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
   3141     return __awaiter(this, void 0, void 0, function* () {
   3142         // Ensure there is not a run away recursive copy
   3143         if (currentDepth >= 255)
   3144             return;
   3145         currentDepth++;
   3146         yield mkdirP(destDir);
   3147         const files = yield ioUtil.readdir(sourceDir);
   3148         for (const fileName of files) {
   3149             const srcFile = `${sourceDir}/${fileName}`;
   3150             const destFile = `${destDir}/${fileName}`;
   3151             const srcFileStat = yield ioUtil.lstat(srcFile);
   3152             if (srcFileStat.isDirectory()) {
   3153                 // Recurse
   3154                 yield cpDirRecursive(srcFile, destFile, currentDepth, force);
   3155             }
   3156             else {
   3157                 yield copyFile(srcFile, destFile, force);
   3158             }
   3159         }
   3160         // Change the mode for the newly created directory
   3161         yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
   3162     });
   3163 }
   3164 // Buffered file copy
   3165 function copyFile(srcFile, destFile, force) {
   3166     return __awaiter(this, void 0, void 0, function* () {
   3167         if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
   3168             // unlink/re-link it
   3169             try {
   3170                 yield ioUtil.lstat(destFile);
   3171                 yield ioUtil.unlink(destFile);
   3172             }
   3173             catch (e) {
   3174                 // Try to override file permission
   3175                 if (e.code === 'EPERM') {
   3176                     yield ioUtil.chmod(destFile, '0666');
   3177                     yield ioUtil.unlink(destFile);
   3178                 }
   3179                 // other errors = it doesn't exist, no work to do
   3180             }
   3181             // Copy over symlink
   3182             const symlinkFull = yield ioUtil.readlink(srcFile);
   3183             yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
   3184         }
   3185         else if (!(yield ioUtil.exists(destFile)) || force) {
   3186             yield ioUtil.copyFile(srcFile, destFile);
   3187         }
   3188     });
   3189 }
   3190 //# sourceMappingURL=io.js.map
   3191 
   3192 /***/ }),
   3193 
   3194 /***/ 2473:
   3195 /***/ (function(module, exports, __nccwpck_require__) {
   3196 
   3197 
   3198 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   3199     if (k2 === undefined) k2 = k;
   3200     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   3201 }) : (function(o, m, k, k2) {
   3202     if (k2 === undefined) k2 = k;
   3203     o[k2] = m[k];
   3204 }));
   3205 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   3206     Object.defineProperty(o, "default", { enumerable: true, value: v });
   3207 }) : function(o, v) {
   3208     o["default"] = v;
   3209 });
   3210 var __importStar = (this && this.__importStar) || function (mod) {
   3211     if (mod && mod.__esModule) return mod;
   3212     var result = {};
   3213     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   3214     __setModuleDefault(result, mod);
   3215     return result;
   3216 };
   3217 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   3218     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   3219     return new (P || (P = Promise))(function (resolve, reject) {
   3220         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   3221         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   3222         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   3223         step((generator = generator.apply(thisArg, _arguments || [])).next());
   3224     });
   3225 };
   3226 Object.defineProperty(exports, "__esModule", ({ value: true }));
   3227 exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0;
   3228 const semver = __importStar(__nccwpck_require__(5911));
   3229 const core_1 = __nccwpck_require__(2186);
   3230 // needs to be require for core node modules to be mocked
   3231 /* eslint @typescript-eslint/no-require-imports: 0 */
   3232 const os = __nccwpck_require__(2037);
   3233 const cp = __nccwpck_require__(2081);
   3234 const fs = __nccwpck_require__(7147);
   3235 function _findMatch(versionSpec, stable, candidates, archFilter) {
   3236     return __awaiter(this, void 0, void 0, function* () {
   3237         const platFilter = os.platform();
   3238         let result;
   3239         let match;
   3240         let file;
   3241         for (const candidate of candidates) {
   3242             const version = candidate.version;
   3243             core_1.debug(`check ${version} satisfies ${versionSpec}`);
   3244             if (semver.satisfies(version, versionSpec) &&
   3245                 (!stable || candidate.stable === stable)) {
   3246                 file = candidate.files.find(item => {
   3247                     core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`);
   3248                     let chk = item.arch === archFilter && item.platform === platFilter;
   3249                     if (chk && item.platform_version) {
   3250                         const osVersion = module.exports._getOsVersion();
   3251                         if (osVersion === item.platform_version) {
   3252                             chk = true;
   3253                         }
   3254                         else {
   3255                             chk = semver.satisfies(osVersion, item.platform_version);
   3256                         }
   3257                     }
   3258                     return chk;
   3259                 });
   3260                 if (file) {
   3261                     core_1.debug(`matched ${candidate.version}`);
   3262                     match = candidate;
   3263                     break;
   3264                 }
   3265             }
   3266         }
   3267         if (match && file) {
   3268             // clone since we're mutating the file list to be only the file that matches
   3269             result = Object.assign({}, match);
   3270             result.files = [file];
   3271         }
   3272         return result;
   3273     });
   3274 }
   3275 exports._findMatch = _findMatch;
   3276 function _getOsVersion() {
   3277     // TODO: add windows and other linux, arm variants
   3278     // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python)
   3279     const plat = os.platform();
   3280     let version = '';
   3281     if (plat === 'darwin') {
   3282         version = cp.execSync('sw_vers -productVersion').toString();
   3283     }
   3284     else if (plat === 'linux') {
   3285         // lsb_release process not in some containers, readfile
   3286         // Run cat /etc/lsb-release
   3287         // DISTRIB_ID=Ubuntu
   3288         // DISTRIB_RELEASE=18.04
   3289         // DISTRIB_CODENAME=bionic
   3290         // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
   3291         const lsbContents = module.exports._readLinuxVersionFile();
   3292         if (lsbContents) {
   3293             const lines = lsbContents.split('\n');
   3294             for (const line of lines) {
   3295                 const parts = line.split('=');
   3296                 if (parts.length === 2 &&
   3297                     (parts[0].trim() === 'VERSION_ID' ||
   3298                         parts[0].trim() === 'DISTRIB_RELEASE')) {
   3299                     version = parts[1]
   3300                         .trim()
   3301                         .replace(/^"/, '')
   3302                         .replace(/"$/, '');
   3303                     break;
   3304                 }
   3305             }
   3306         }
   3307     }
   3308     return version;
   3309 }
   3310 exports._getOsVersion = _getOsVersion;
   3311 function _readLinuxVersionFile() {
   3312     const lsbReleaseFile = '/etc/lsb-release';
   3313     const osReleaseFile = '/etc/os-release';
   3314     let contents = '';
   3315     if (fs.existsSync(lsbReleaseFile)) {
   3316         contents = fs.readFileSync(lsbReleaseFile).toString();
   3317     }
   3318     else if (fs.existsSync(osReleaseFile)) {
   3319         contents = fs.readFileSync(osReleaseFile).toString();
   3320     }
   3321     return contents;
   3322 }
   3323 exports._readLinuxVersionFile = _readLinuxVersionFile;
   3324 //# sourceMappingURL=manifest.js.map
   3325 
   3326 /***/ }),
   3327 
   3328 /***/ 8279:
   3329 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   3330 
   3331 
   3332 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   3333     if (k2 === undefined) k2 = k;
   3334     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   3335 }) : (function(o, m, k, k2) {
   3336     if (k2 === undefined) k2 = k;
   3337     o[k2] = m[k];
   3338 }));
   3339 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   3340     Object.defineProperty(o, "default", { enumerable: true, value: v });
   3341 }) : function(o, v) {
   3342     o["default"] = v;
   3343 });
   3344 var __importStar = (this && this.__importStar) || function (mod) {
   3345     if (mod && mod.__esModule) return mod;
   3346     var result = {};
   3347     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   3348     __setModuleDefault(result, mod);
   3349     return result;
   3350 };
   3351 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   3352     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   3353     return new (P || (P = Promise))(function (resolve, reject) {
   3354         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   3355         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   3356         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   3357         step((generator = generator.apply(thisArg, _arguments || [])).next());
   3358     });
   3359 };
   3360 Object.defineProperty(exports, "__esModule", ({ value: true }));
   3361 exports.RetryHelper = void 0;
   3362 const core = __importStar(__nccwpck_require__(2186));
   3363 /**
   3364  * Internal class for retries
   3365  */
   3366 class RetryHelper {
   3367     constructor(maxAttempts, minSeconds, maxSeconds) {
   3368         if (maxAttempts < 1) {
   3369             throw new Error('max attempts should be greater than or equal to 1');
   3370         }
   3371         this.maxAttempts = maxAttempts;
   3372         this.minSeconds = Math.floor(minSeconds);
   3373         this.maxSeconds = Math.floor(maxSeconds);
   3374         if (this.minSeconds > this.maxSeconds) {
   3375             throw new Error('min seconds should be less than or equal to max seconds');
   3376         }
   3377     }
   3378     execute(action, isRetryable) {
   3379         return __awaiter(this, void 0, void 0, function* () {
   3380             let attempt = 1;
   3381             while (attempt < this.maxAttempts) {
   3382                 // Try
   3383                 try {
   3384                     return yield action();
   3385                 }
   3386                 catch (err) {
   3387                     if (isRetryable && !isRetryable(err)) {
   3388                         throw err;
   3389                     }
   3390                     core.info(err.message);
   3391                 }
   3392                 // Sleep
   3393                 const seconds = this.getSleepAmount();
   3394                 core.info(`Waiting ${seconds} seconds before trying again`);
   3395                 yield this.sleep(seconds);
   3396                 attempt++;
   3397             }
   3398             // Last attempt
   3399             return yield action();
   3400         });
   3401     }
   3402     getSleepAmount() {
   3403         return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) +
   3404             this.minSeconds);
   3405     }
   3406     sleep(seconds) {
   3407         return __awaiter(this, void 0, void 0, function* () {
   3408             return new Promise(resolve => setTimeout(resolve, seconds * 1000));
   3409         });
   3410     }
   3411 }
   3412 exports.RetryHelper = RetryHelper;
   3413 //# sourceMappingURL=retry-helper.js.map
   3414 
   3415 /***/ }),
   3416 
   3417 /***/ 7784:
   3418 /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   3419 
   3420 
   3421 var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   3422     if (k2 === undefined) k2 = k;
   3423     Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   3424 }) : (function(o, m, k, k2) {
   3425     if (k2 === undefined) k2 = k;
   3426     o[k2] = m[k];
   3427 }));
   3428 var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   3429     Object.defineProperty(o, "default", { enumerable: true, value: v });
   3430 }) : function(o, v) {
   3431     o["default"] = v;
   3432 });
   3433 var __importStar = (this && this.__importStar) || function (mod) {
   3434     if (mod && mod.__esModule) return mod;
   3435     var result = {};
   3436     if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   3437     __setModuleDefault(result, mod);
   3438     return result;
   3439 };
   3440 var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   3441     function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   3442     return new (P || (P = Promise))(function (resolve, reject) {
   3443         function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   3444         function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   3445         function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   3446         step((generator = generator.apply(thisArg, _arguments || [])).next());
   3447     });
   3448 };
   3449 var __importDefault = (this && this.__importDefault) || function (mod) {
   3450     return (mod && mod.__esModule) ? mod : { "default": mod };
   3451 };
   3452 Object.defineProperty(exports, "__esModule", ({ value: true }));
   3453 exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0;
   3454 const core = __importStar(__nccwpck_require__(2186));
   3455 const io = __importStar(__nccwpck_require__(7436));
   3456 const fs = __importStar(__nccwpck_require__(7147));
   3457 const mm = __importStar(__nccwpck_require__(2473));
   3458 const os = __importStar(__nccwpck_require__(2037));
   3459 const path = __importStar(__nccwpck_require__(1017));
   3460 const httpm = __importStar(__nccwpck_require__(6255));
   3461 const semver = __importStar(__nccwpck_require__(5911));
   3462 const stream = __importStar(__nccwpck_require__(2781));
   3463 const util = __importStar(__nccwpck_require__(3837));
   3464 const assert_1 = __nccwpck_require__(9491);
   3465 const v4_1 = __importDefault(__nccwpck_require__(7468));
   3466 const exec_1 = __nccwpck_require__(1514);
   3467 const retry_helper_1 = __nccwpck_require__(8279);
   3468 class HTTPError extends Error {
   3469     constructor(httpStatusCode) {
   3470         super(`Unexpected HTTP response: ${httpStatusCode}`);
   3471         this.httpStatusCode = httpStatusCode;
   3472         Object.setPrototypeOf(this, new.target.prototype);
   3473     }
   3474 }
   3475 exports.HTTPError = HTTPError;
   3476 const IS_WINDOWS = process.platform === 'win32';
   3477 const IS_MAC = process.platform === 'darwin';
   3478 const userAgent = 'actions/tool-cache';
   3479 /**
   3480  * Download a tool from an url and stream it into a file
   3481  *
   3482  * @param url       url of tool to download
   3483  * @param dest      path to download tool
   3484  * @param auth      authorization header
   3485  * @param headers   other headers
   3486  * @returns         path to downloaded tool
   3487  */
   3488 function downloadTool(url, dest, auth, headers) {
   3489     return __awaiter(this, void 0, void 0, function* () {
   3490         dest = dest || path.join(_getTempDirectory(), v4_1.default());
   3491         yield io.mkdirP(path.dirname(dest));
   3492         core.debug(`Downloading ${url}`);
   3493         core.debug(`Destination ${dest}`);
   3494         const maxAttempts = 3;
   3495         const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10);
   3496         const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20);
   3497         const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds);
   3498         return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () {
   3499             return yield downloadToolAttempt(url, dest || '', auth, headers);
   3500         }), (err) => {
   3501             if (err instanceof HTTPError && err.httpStatusCode) {
   3502                 // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests
   3503                 if (err.httpStatusCode < 500 &&
   3504                     err.httpStatusCode !== 408 &&
   3505                     err.httpStatusCode !== 429) {
   3506                     return false;
   3507                 }
   3508             }
   3509             // Otherwise retry
   3510             return true;
   3511         });
   3512     });
   3513 }
   3514 exports.downloadTool = downloadTool;
   3515 function downloadToolAttempt(url, dest, auth, headers) {
   3516     return __awaiter(this, void 0, void 0, function* () {
   3517         if (fs.existsSync(dest)) {
   3518             throw new Error(`Destination file path ${dest} already exists`);
   3519         }
   3520         // Get the response headers
   3521         const http = new httpm.HttpClient(userAgent, [], {
   3522             allowRetries: false
   3523         });
   3524         if (auth) {
   3525             core.debug('set auth');
   3526             if (headers === undefined) {
   3527                 headers = {};
   3528             }
   3529             headers.authorization = auth;
   3530         }
   3531         const response = yield http.get(url, headers);
   3532         if (response.message.statusCode !== 200) {
   3533             const err = new HTTPError(response.message.statusCode);
   3534             core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
   3535             throw err;
   3536         }
   3537         // Download the response body
   3538         const pipeline = util.promisify(stream.pipeline);
   3539         const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message);
   3540         const readStream = responseMessageFactory();
   3541         let succeeded = false;
   3542         try {
   3543             yield pipeline(readStream, fs.createWriteStream(dest));
   3544             core.debug('download complete');
   3545             succeeded = true;
   3546             return dest;
   3547         }
   3548         finally {
   3549             // Error, delete dest before retry
   3550             if (!succeeded) {
   3551                 core.debug('download failed');
   3552                 try {
   3553                     yield io.rmRF(dest);
   3554                 }
   3555                 catch (err) {
   3556                     core.debug(`Failed to delete '${dest}'. ${err.message}`);
   3557                 }
   3558             }
   3559         }
   3560     });
   3561 }
   3562 /**
   3563  * Extract a .7z file
   3564  *
   3565  * @param file     path to the .7z file
   3566  * @param dest     destination directory. Optional.
   3567  * @param _7zPath  path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
   3568  * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
   3569  * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
   3570  * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
   3571  * interface, it is smaller than the full command line interface, and it does support long paths. At the
   3572  * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
   3573  * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
   3574  * to 7zr.exe can be pass to this function.
   3575  * @returns        path to the destination directory
   3576  */
   3577 function extract7z(file, dest, _7zPath) {
   3578     return __awaiter(this, void 0, void 0, function* () {
   3579         assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');
   3580         assert_1.ok(file, 'parameter "file" is required');
   3581         dest = yield _createExtractFolder(dest);
   3582         const originalCwd = process.cwd();
   3583         process.chdir(dest);
   3584         if (_7zPath) {
   3585             try {
   3586                 const logLevel = core.isDebug() ? '-bb1' : '-bb0';
   3587                 const args = [
   3588                     'x',
   3589                     logLevel,
   3590                     '-bd',
   3591                     '-sccUTF-8',
   3592                     file
   3593                 ];
   3594                 const options = {
   3595                     silent: true
   3596                 };
   3597                 yield exec_1.exec(`"${_7zPath}"`, args, options);
   3598             }
   3599             finally {
   3600                 process.chdir(originalCwd);
   3601             }
   3602         }
   3603         else {
   3604             const escapedScript = path
   3605                 .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')
   3606                 .replace(/'/g, "''")
   3607                 .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
   3608             const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '');
   3609             const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
   3610             const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;
   3611             const args = [
   3612                 '-NoLogo',
   3613                 '-Sta',
   3614                 '-NoProfile',
   3615                 '-NonInteractive',
   3616                 '-ExecutionPolicy',
   3617                 'Unrestricted',
   3618                 '-Command',
   3619                 command
   3620             ];
   3621             const options = {
   3622                 silent: true
   3623             };
   3624             try {
   3625                 const powershellPath = yield io.which('powershell', true);
   3626                 yield exec_1.exec(`"${powershellPath}"`, args, options);
   3627             }
   3628             finally {
   3629                 process.chdir(originalCwd);
   3630             }
   3631         }
   3632         return dest;
   3633     });
   3634 }
   3635 exports.extract7z = extract7z;
   3636 /**
   3637  * Extract a compressed tar archive
   3638  *
   3639  * @param file     path to the tar
   3640  * @param dest     destination directory. Optional.
   3641  * @param flags    flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional.
   3642  * @returns        path to the destination directory
   3643  */
   3644 function extractTar(file, dest, flags = 'xz') {
   3645     return __awaiter(this, void 0, void 0, function* () {
   3646         if (!file) {
   3647             throw new Error("parameter 'file' is required");
   3648         }
   3649         // Create dest
   3650         dest = yield _createExtractFolder(dest);
   3651         // Determine whether GNU tar
   3652         core.debug('Checking tar --version');
   3653         let versionOutput = '';
   3654         yield exec_1.exec('tar --version', [], {
   3655             ignoreReturnCode: true,
   3656             silent: true,
   3657             listeners: {
   3658                 stdout: (data) => (versionOutput += data.toString()),
   3659                 stderr: (data) => (versionOutput += data.toString())
   3660             }
   3661         });
   3662         core.debug(versionOutput.trim());
   3663         const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR');
   3664         // Initialize args
   3665         let args;
   3666         if (flags instanceof Array) {
   3667             args = flags;
   3668         }
   3669         else {
   3670             args = [flags];
   3671         }
   3672         if (core.isDebug() && !flags.includes('v')) {
   3673             args.push('-v');
   3674         }
   3675         let destArg = dest;
   3676         let fileArg = file;
   3677         if (IS_WINDOWS && isGnuTar) {
   3678             args.push('--force-local');
   3679             destArg = dest.replace(/\\/g, '/');
   3680             // Technically only the dest needs to have `/` but for aesthetic consistency
   3681             // convert slashes in the file arg too.
   3682             fileArg = file.replace(/\\/g, '/');
   3683         }
   3684         if (isGnuTar) {
   3685             // Suppress warnings when using GNU tar to extract archives created by BSD tar
   3686             args.push('--warning=no-unknown-keyword');
   3687             args.push('--overwrite');
   3688         }
   3689         args.push('-C', destArg, '-f', fileArg);
   3690         yield exec_1.exec(`tar`, args);
   3691         return dest;
   3692     });
   3693 }
   3694 exports.extractTar = extractTar;
   3695 /**
   3696  * Extract a xar compatible archive
   3697  *
   3698  * @param file     path to the archive
   3699  * @param dest     destination directory. Optional.
   3700  * @param flags    flags for the xar. Optional.
   3701  * @returns        path to the destination directory
   3702  */
   3703 function extractXar(file, dest, flags = []) {
   3704     return __awaiter(this, void 0, void 0, function* () {
   3705         assert_1.ok(IS_MAC, 'extractXar() not supported on current OS');
   3706         assert_1.ok(file, 'parameter "file" is required');
   3707         dest = yield _createExtractFolder(dest);
   3708         let args;
   3709         if (flags instanceof Array) {
   3710             args = flags;
   3711         }
   3712         else {
   3713             args = [flags];
   3714         }
   3715         args.push('-x', '-C', dest, '-f', file);
   3716         if (core.isDebug()) {
   3717             args.push('-v');
   3718         }
   3719         const xarPath = yield io.which('xar', true);
   3720         yield exec_1.exec(`"${xarPath}"`, _unique(args));
   3721         return dest;
   3722     });
   3723 }
   3724 exports.extractXar = extractXar;
   3725 /**
   3726  * Extract a zip
   3727  *
   3728  * @param file     path to the zip
   3729  * @param dest     destination directory. Optional.
   3730  * @returns        path to the destination directory
   3731  */
   3732 function extractZip(file, dest) {
   3733     return __awaiter(this, void 0, void 0, function* () {
   3734         if (!file) {
   3735             throw new Error("parameter 'file' is required");
   3736         }
   3737         dest = yield _createExtractFolder(dest);
   3738         if (IS_WINDOWS) {
   3739             yield extractZipWin(file, dest);
   3740         }
   3741         else {
   3742             yield extractZipNix(file, dest);
   3743         }
   3744         return dest;
   3745     });
   3746 }
   3747 exports.extractZip = extractZip;
   3748 function extractZipWin(file, dest) {
   3749     return __awaiter(this, void 0, void 0, function* () {
   3750         // build the powershell command
   3751         const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
   3752         const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
   3753         const pwshPath = yield io.which('pwsh', false);
   3754         //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory
   3755         //and the -Force flag for Expand-Archive as a fallback
   3756         if (pwshPath) {
   3757             //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive
   3758             const pwshCommand = [
   3759                 `$ErrorActionPreference = 'Stop' ;`,
   3760                 `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`,
   3761                 `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`,
   3762                 `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;`
   3763             ].join(' ');
   3764             const args = [
   3765                 '-NoLogo',
   3766                 '-NoProfile',
   3767                 '-NonInteractive',
   3768                 '-ExecutionPolicy',
   3769                 'Unrestricted',
   3770                 '-Command',
   3771                 pwshCommand
   3772             ];
   3773             core.debug(`Using pwsh at path: ${pwshPath}`);
   3774             yield exec_1.exec(`"${pwshPath}"`, args);
   3775         }
   3776         else {
   3777             const powershellCommand = [
   3778                 `$ErrorActionPreference = 'Stop' ;`,
   3779                 `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`,
   3780                 `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`,
   3781                 `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`
   3782             ].join(' ');
   3783             const args = [
   3784                 '-NoLogo',
   3785                 '-Sta',
   3786                 '-NoProfile',
   3787                 '-NonInteractive',
   3788                 '-ExecutionPolicy',
   3789                 'Unrestricted',
   3790                 '-Command',
   3791                 powershellCommand
   3792             ];
   3793             const powershellPath = yield io.which('powershell', true);
   3794             core.debug(`Using powershell at path: ${powershellPath}`);
   3795             yield exec_1.exec(`"${powershellPath}"`, args);
   3796         }
   3797     });
   3798 }
   3799 function extractZipNix(file, dest) {
   3800     return __awaiter(this, void 0, void 0, function* () {
   3801         const unzipPath = yield io.which('unzip', true);
   3802         const args = [file];
   3803         if (!core.isDebug()) {
   3804             args.unshift('-q');
   3805         }
   3806         args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run
   3807         yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest });
   3808     });
   3809 }
   3810 /**
   3811  * Caches a directory and installs it into the tool cacheDir
   3812  *
   3813  * @param sourceDir    the directory to cache into tools
   3814  * @param tool          tool name
   3815  * @param version       version of the tool.  semver format
   3816  * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
   3817  */
   3818 function cacheDir(sourceDir, tool, version, arch) {
   3819     return __awaiter(this, void 0, void 0, function* () {
   3820         version = semver.clean(version) || version;
   3821         arch = arch || os.arch();
   3822         core.debug(`Caching tool ${tool} ${version} ${arch}`);
   3823         core.debug(`source dir: ${sourceDir}`);
   3824         if (!fs.statSync(sourceDir).isDirectory()) {
   3825             throw new Error('sourceDir is not a directory');
   3826         }
   3827         // Create the tool dir
   3828         const destPath = yield _createToolPath(tool, version, arch);
   3829         // copy each child item. do not move. move can fail on Windows
   3830         // due to anti-virus software having an open handle on a file.
   3831         for (const itemName of fs.readdirSync(sourceDir)) {
   3832             const s = path.join(sourceDir, itemName);
   3833             yield io.cp(s, destPath, { recursive: true });
   3834         }
   3835         // write .complete
   3836         _completeToolPath(tool, version, arch);
   3837         return destPath;
   3838     });
   3839 }
   3840 exports.cacheDir = cacheDir;
   3841 /**
   3842  * Caches a downloaded file (GUID) and installs it
   3843  * into the tool cache with a given targetName
   3844  *
   3845  * @param sourceFile    the file to cache into tools.  Typically a result of downloadTool which is a guid.
   3846  * @param targetFile    the name of the file name in the tools directory
   3847  * @param tool          tool name
   3848  * @param version       version of the tool.  semver format
   3849  * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
   3850  */
   3851 function cacheFile(sourceFile, targetFile, tool, version, arch) {
   3852     return __awaiter(this, void 0, void 0, function* () {
   3853         version = semver.clean(version) || version;
   3854         arch = arch || os.arch();
   3855         core.debug(`Caching tool ${tool} ${version} ${arch}`);
   3856         core.debug(`source file: ${sourceFile}`);
   3857         if (!fs.statSync(sourceFile).isFile()) {
   3858             throw new Error('sourceFile is not a file');
   3859         }
   3860         // create the tool dir
   3861         const destFolder = yield _createToolPath(tool, version, arch);
   3862         // copy instead of move. move can fail on Windows due to
   3863         // anti-virus software having an open handle on a file.
   3864         const destPath = path.join(destFolder, targetFile);
   3865         core.debug(`destination file ${destPath}`);
   3866         yield io.cp(sourceFile, destPath);
   3867         // write .complete
   3868         _completeToolPath(tool, version, arch);
   3869         return destFolder;
   3870     });
   3871 }
   3872 exports.cacheFile = cacheFile;
   3873 /**
   3874  * Finds the path to a tool version in the local installed tool cache
   3875  *
   3876  * @param toolName      name of the tool
   3877  * @param versionSpec   version of the tool
   3878  * @param arch          optional arch.  defaults to arch of computer
   3879  */
   3880 function find(toolName, versionSpec, arch) {
   3881     if (!toolName) {
   3882         throw new Error('toolName parameter is required');
   3883     }
   3884     if (!versionSpec) {
   3885         throw new Error('versionSpec parameter is required');
   3886     }
   3887     arch = arch || os.arch();
   3888     // attempt to resolve an explicit version
   3889     if (!isExplicitVersion(versionSpec)) {
   3890         const localVersions = findAllVersions(toolName, arch);
   3891         const match = evaluateVersions(localVersions, versionSpec);
   3892         versionSpec = match;
   3893     }
   3894     // check for the explicit version in the cache
   3895     let toolPath = '';
   3896     if (versionSpec) {
   3897         versionSpec = semver.clean(versionSpec) || '';
   3898         const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch);
   3899         core.debug(`checking cache: ${cachePath}`);
   3900         if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {
   3901             core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);
   3902             toolPath = cachePath;
   3903         }
   3904         else {
   3905             core.debug('not found');
   3906         }
   3907     }
   3908     return toolPath;
   3909 }
   3910 exports.find = find;
   3911 /**
   3912  * Finds the paths to all versions of a tool that are installed in the local tool cache
   3913  *
   3914  * @param toolName  name of the tool
   3915  * @param arch      optional arch.  defaults to arch of computer
   3916  */
   3917 function findAllVersions(toolName, arch) {
   3918     const versions = [];
   3919     arch = arch || os.arch();
   3920     const toolPath = path.join(_getCacheDirectory(), toolName);
   3921     if (fs.existsSync(toolPath)) {
   3922         const children = fs.readdirSync(toolPath);
   3923         for (const child of children) {
   3924             if (isExplicitVersion(child)) {
   3925                 const fullPath = path.join(toolPath, child, arch || '');
   3926                 if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
   3927                     versions.push(child);
   3928                 }
   3929             }
   3930         }
   3931     }
   3932     return versions;
   3933 }
   3934 exports.findAllVersions = findAllVersions;
   3935 function getManifestFromRepo(owner, repo, auth, branch = 'master') {
   3936     return __awaiter(this, void 0, void 0, function* () {
   3937         let releases = [];
   3938         const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`;
   3939         const http = new httpm.HttpClient('tool-cache');
   3940         const headers = {};
   3941         if (auth) {
   3942             core.debug('set auth');
   3943             headers.authorization = auth;
   3944         }
   3945         const response = yield http.getJson(treeUrl, headers);
   3946         if (!response.result) {
   3947             return releases;
   3948         }
   3949         let manifestUrl = '';
   3950         for (const item of response.result.tree) {
   3951             if (item.path === 'versions-manifest.json') {
   3952                 manifestUrl = item.url;
   3953                 break;
   3954             }
   3955         }
   3956         headers['accept'] = 'application/vnd.github.VERSION.raw';
   3957         let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody();
   3958         if (versionsRaw) {
   3959             // shouldn't be needed but protects against invalid json saved with BOM
   3960             versionsRaw = versionsRaw.replace(/^\uFEFF/, '');
   3961             try {
   3962                 releases = JSON.parse(versionsRaw);
   3963             }
   3964             catch (_a) {
   3965                 core.debug('Invalid json');
   3966             }
   3967         }
   3968         return releases;
   3969     });
   3970 }
   3971 exports.getManifestFromRepo = getManifestFromRepo;
   3972 function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) {
   3973     return __awaiter(this, void 0, void 0, function* () {
   3974         // wrap the internal impl
   3975         const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter);
   3976         return match;
   3977     });
   3978 }
   3979 exports.findFromManifest = findFromManifest;
   3980 function _createExtractFolder(dest) {
   3981     return __awaiter(this, void 0, void 0, function* () {
   3982         if (!dest) {
   3983             // create a temp dir
   3984             dest = path.join(_getTempDirectory(), v4_1.default());
   3985         }
   3986         yield io.mkdirP(dest);
   3987         return dest;
   3988     });
   3989 }
   3990 function _createToolPath(tool, version, arch) {
   3991     return __awaiter(this, void 0, void 0, function* () {
   3992         const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
   3993         core.debug(`destination ${folderPath}`);
   3994         const markerPath = `${folderPath}.complete`;
   3995         yield io.rmRF(folderPath);
   3996         yield io.rmRF(markerPath);
   3997         yield io.mkdirP(folderPath);
   3998         return folderPath;
   3999     });
   4000 }
   4001 function _completeToolPath(tool, version, arch) {
   4002     const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || '');
   4003     const markerPath = `${folderPath}.complete`;
   4004     fs.writeFileSync(markerPath, '');
   4005     core.debug('finished caching tool');
   4006 }
   4007 /**
   4008  * Check if version string is explicit
   4009  *
   4010  * @param versionSpec      version string to check
   4011  */
   4012 function isExplicitVersion(versionSpec) {
   4013     const c = semver.clean(versionSpec) || '';
   4014     core.debug(`isExplicit: ${c}`);
   4015     const valid = semver.valid(c) != null;
   4016     core.debug(`explicit? ${valid}`);
   4017     return valid;
   4018 }
   4019 exports.isExplicitVersion = isExplicitVersion;
   4020 /**
   4021  * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec`
   4022  *
   4023  * @param versions        array of versions to evaluate
   4024  * @param versionSpec     semantic version spec to satisfy
   4025  */
   4026 function evaluateVersions(versions, versionSpec) {
   4027     let version = '';
   4028     core.debug(`evaluating ${versions.length} versions`);
   4029     versions = versions.sort((a, b) => {
   4030         if (semver.gt(a, b)) {
   4031             return 1;
   4032         }
   4033         return -1;
   4034     });
   4035     for (let i = versions.length - 1; i >= 0; i--) {
   4036         const potential = versions[i];
   4037         const satisfied = semver.satisfies(potential, versionSpec);
   4038         if (satisfied) {
   4039             version = potential;
   4040             break;
   4041         }
   4042     }
   4043     if (version) {
   4044         core.debug(`matched: ${version}`);
   4045     }
   4046     else {
   4047         core.debug('match not found');
   4048     }
   4049     return version;
   4050 }
   4051 exports.evaluateVersions = evaluateVersions;
   4052 /**
   4053  * Gets RUNNER_TOOL_CACHE
   4054  */
   4055 function _getCacheDirectory() {
   4056     const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || '';
   4057     assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined');
   4058     return cacheDirectory;
   4059 }
   4060 /**
   4061  * Gets RUNNER_TEMP
   4062  */
   4063 function _getTempDirectory() {
   4064     const tempDirectory = process.env['RUNNER_TEMP'] || '';
   4065     assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined');
   4066     return tempDirectory;
   4067 }
   4068 /**
   4069  * Gets a global variable
   4070  */
   4071 function _getGlobal(key, defaultValue) {
   4072     /* eslint-disable @typescript-eslint/no-explicit-any */
   4073     const value = global[key];
   4074     /* eslint-enable @typescript-eslint/no-explicit-any */
   4075     return value !== undefined ? value : defaultValue;
   4076 }
   4077 /**
   4078  * Returns an array of unique values.
   4079  * @param values Values to make unique.
   4080  */
   4081 function _unique(values) {
   4082     return Array.from(new Set(values));
   4083 }
   4084 //# sourceMappingURL=tool-cache.js.map
   4085 
   4086 /***/ }),
   4087 
   4088 /***/ 7701:
   4089 /***/ ((module) => {
   4090 
   4091 /**
   4092  * Convert array of 16 byte values to UUID string format of the form:
   4093  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
   4094  */
   4095 var byteToHex = [];
   4096 for (var i = 0; i < 256; ++i) {
   4097   byteToHex[i] = (i + 0x100).toString(16).substr(1);
   4098 }
   4099 
   4100 function bytesToUuid(buf, offset) {
   4101   var i = offset || 0;
   4102   var bth = byteToHex;
   4103   // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
   4104   return ([
   4105     bth[buf[i++]], bth[buf[i++]],
   4106     bth[buf[i++]], bth[buf[i++]], '-',
   4107     bth[buf[i++]], bth[buf[i++]], '-',
   4108     bth[buf[i++]], bth[buf[i++]], '-',
   4109     bth[buf[i++]], bth[buf[i++]], '-',
   4110     bth[buf[i++]], bth[buf[i++]],
   4111     bth[buf[i++]], bth[buf[i++]],
   4112     bth[buf[i++]], bth[buf[i++]]
   4113   ]).join('');
   4114 }
   4115 
   4116 module.exports = bytesToUuid;
   4117 
   4118 
   4119 /***/ }),
   4120 
   4121 /***/ 7269:
   4122 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   4123 
   4124 // Unique ID creation requires a high quality random # generator.  In node.js
   4125 // this is pretty straight-forward - we use the crypto API.
   4126 
   4127 var crypto = __nccwpck_require__(6113);
   4128 
   4129 module.exports = function nodeRNG() {
   4130   return crypto.randomBytes(16);
   4131 };
   4132 
   4133 
   4134 /***/ }),
   4135 
   4136 /***/ 7468:
   4137 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   4138 
   4139 var rng = __nccwpck_require__(7269);
   4140 var bytesToUuid = __nccwpck_require__(7701);
   4141 
   4142 function v4(options, buf, offset) {
   4143   var i = buf && offset || 0;
   4144 
   4145   if (typeof(options) == 'string') {
   4146     buf = options === 'binary' ? new Array(16) : null;
   4147     options = null;
   4148   }
   4149   options = options || {};
   4150 
   4151   var rnds = options.random || (options.rng || rng)();
   4152 
   4153   // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
   4154   rnds[6] = (rnds[6] & 0x0f) | 0x40;
   4155   rnds[8] = (rnds[8] & 0x3f) | 0x80;
   4156 
   4157   // Copy bytes to buffer, if provided
   4158   if (buf) {
   4159     for (var ii = 0; ii < 16; ++ii) {
   4160       buf[i + ii] = rnds[ii];
   4161     }
   4162   }
   4163 
   4164   return buf || bytesToUuid(rnds);
   4165 }
   4166 
   4167 module.exports = v4;
   4168 
   4169 
   4170 /***/ }),
   4171 
   4172 /***/ 334:
   4173 /***/ ((__unused_webpack_module, exports) => {
   4174 
   4175 
   4176 
   4177 Object.defineProperty(exports, "__esModule", ({ value: true }));
   4178 
   4179 const REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
   4180 const REGEX_IS_INSTALLATION = /^ghs_/;
   4181 const REGEX_IS_USER_TO_SERVER = /^ghu_/;
   4182 async function auth(token) {
   4183   const isApp = token.split(/\./).length === 3;
   4184   const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
   4185   const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
   4186   const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
   4187   return {
   4188     type: "token",
   4189     token: token,
   4190     tokenType
   4191   };
   4192 }
   4193 
   4194 /**
   4195  * Prefix token for usage in the Authorization header
   4196  *
   4197  * @param token OAuth token or JSON Web Token
   4198  */
   4199 function withAuthorizationPrefix(token) {
   4200   if (token.split(/\./).length === 3) {
   4201     return `bearer ${token}`;
   4202   }
   4203 
   4204   return `token ${token}`;
   4205 }
   4206 
   4207 async function hook(token, request, route, parameters) {
   4208   const endpoint = request.endpoint.merge(route, parameters);
   4209   endpoint.headers.authorization = withAuthorizationPrefix(token);
   4210   return request(endpoint);
   4211 }
   4212 
   4213 const createTokenAuth = function createTokenAuth(token) {
   4214   if (!token) {
   4215     throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
   4216   }
   4217 
   4218   if (typeof token !== "string") {
   4219     throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string");
   4220   }
   4221 
   4222   token = token.replace(/^(token|bearer) +/i, "");
   4223   return Object.assign(auth.bind(null, token), {
   4224     hook: hook.bind(null, token)
   4225   });
   4226 };
   4227 
   4228 exports.createTokenAuth = createTokenAuth;
   4229 //# sourceMappingURL=index.js.map
   4230 
   4231 
   4232 /***/ }),
   4233 
   4234 /***/ 6762:
   4235 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   4236 
   4237 
   4238 
   4239 Object.defineProperty(exports, "__esModule", ({ value: true }));
   4240 
   4241 var universalUserAgent = __nccwpck_require__(5030);
   4242 var beforeAfterHook = __nccwpck_require__(3682);
   4243 var request = __nccwpck_require__(6234);
   4244 var graphql = __nccwpck_require__(8467);
   4245 var authToken = __nccwpck_require__(334);
   4246 
   4247 function _objectWithoutPropertiesLoose(source, excluded) {
   4248   if (source == null) return {};
   4249   var target = {};
   4250   var sourceKeys = Object.keys(source);
   4251   var key, i;
   4252 
   4253   for (i = 0; i < sourceKeys.length; i++) {
   4254     key = sourceKeys[i];
   4255     if (excluded.indexOf(key) >= 0) continue;
   4256     target[key] = source[key];
   4257   }
   4258 
   4259   return target;
   4260 }
   4261 
   4262 function _objectWithoutProperties(source, excluded) {
   4263   if (source == null) return {};
   4264 
   4265   var target = _objectWithoutPropertiesLoose(source, excluded);
   4266 
   4267   var key, i;
   4268 
   4269   if (Object.getOwnPropertySymbols) {
   4270     var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
   4271 
   4272     for (i = 0; i < sourceSymbolKeys.length; i++) {
   4273       key = sourceSymbolKeys[i];
   4274       if (excluded.indexOf(key) >= 0) continue;
   4275       if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
   4276       target[key] = source[key];
   4277     }
   4278   }
   4279 
   4280   return target;
   4281 }
   4282 
   4283 const VERSION = "3.6.0";
   4284 
   4285 const _excluded = ["authStrategy"];
   4286 class Octokit {
   4287   constructor(options = {}) {
   4288     const hook = new beforeAfterHook.Collection();
   4289     const requestDefaults = {
   4290       baseUrl: request.request.endpoint.DEFAULTS.baseUrl,
   4291       headers: {},
   4292       request: Object.assign({}, options.request, {
   4293         // @ts-ignore internal usage only, no need to type
   4294         hook: hook.bind(null, "request")
   4295       }),
   4296       mediaType: {
   4297         previews: [],
   4298         format: ""
   4299       }
   4300     }; // prepend default user agent with `options.userAgent` if set
   4301 
   4302     requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" ");
   4303 
   4304     if (options.baseUrl) {
   4305       requestDefaults.baseUrl = options.baseUrl;
   4306     }
   4307 
   4308     if (options.previews) {
   4309       requestDefaults.mediaType.previews = options.previews;
   4310     }
   4311 
   4312     if (options.timeZone) {
   4313       requestDefaults.headers["time-zone"] = options.timeZone;
   4314     }
   4315 
   4316     this.request = request.request.defaults(requestDefaults);
   4317     this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults);
   4318     this.log = Object.assign({
   4319       debug: () => {},
   4320       info: () => {},
   4321       warn: console.warn.bind(console),
   4322       error: console.error.bind(console)
   4323     }, options.log);
   4324     this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance
   4325     //     is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.
   4326     // (2) If only `options.auth` is set, use the default token authentication strategy.
   4327     // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.
   4328     // TODO: type `options.auth` based on `options.authStrategy`.
   4329 
   4330     if (!options.authStrategy) {
   4331       if (!options.auth) {
   4332         // (1)
   4333         this.auth = async () => ({
   4334           type: "unauthenticated"
   4335         });
   4336       } else {
   4337         // (2)
   4338         const auth = authToken.createTokenAuth(options.auth); // @ts-ignore  ¯\_(ツ)_/¯
   4339 
   4340         hook.wrap("request", auth.hook);
   4341         this.auth = auth;
   4342       }
   4343     } else {
   4344       const {
   4345         authStrategy
   4346       } = options,
   4347             otherOptions = _objectWithoutProperties(options, _excluded);
   4348 
   4349       const auth = authStrategy(Object.assign({
   4350         request: this.request,
   4351         log: this.log,
   4352         // we pass the current octokit instance as well as its constructor options
   4353         // to allow for authentication strategies that return a new octokit instance
   4354         // that shares the same internal state as the current one. The original
   4355         // requirement for this was the "event-octokit" authentication strategy
   4356         // of https://github.com/probot/octokit-auth-probot.
   4357         octokit: this,
   4358         octokitOptions: otherOptions
   4359       }, options.auth)); // @ts-ignore  ¯\_(ツ)_/¯
   4360 
   4361       hook.wrap("request", auth.hook);
   4362       this.auth = auth;
   4363     } // apply plugins
   4364     // https://stackoverflow.com/a/16345172
   4365 
   4366 
   4367     const classConstructor = this.constructor;
   4368     classConstructor.plugins.forEach(plugin => {
   4369       Object.assign(this, plugin(this, options));
   4370     });
   4371   }
   4372 
   4373   static defaults(defaults) {
   4374     const OctokitWithDefaults = class extends this {
   4375       constructor(...args) {
   4376         const options = args[0] || {};
   4377 
   4378         if (typeof defaults === "function") {
   4379           super(defaults(options));
   4380           return;
   4381         }
   4382 
   4383         super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {
   4384           userAgent: `${options.userAgent} ${defaults.userAgent}`
   4385         } : null));
   4386       }
   4387 
   4388     };
   4389     return OctokitWithDefaults;
   4390   }
   4391   /**
   4392    * Attach a plugin (or many) to your Octokit instance.
   4393    *
   4394    * @example
   4395    * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
   4396    */
   4397 
   4398 
   4399   static plugin(...newPlugins) {
   4400     var _a;
   4401 
   4402     const currentPlugins = this.plugins;
   4403     const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a);
   4404     return NewOctokit;
   4405   }
   4406 
   4407 }
   4408 Octokit.VERSION = VERSION;
   4409 Octokit.plugins = [];
   4410 
   4411 exports.Octokit = Octokit;
   4412 //# sourceMappingURL=index.js.map
   4413 
   4414 
   4415 /***/ }),
   4416 
   4417 /***/ 9440:
   4418 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   4419 
   4420 
   4421 
   4422 Object.defineProperty(exports, "__esModule", ({ value: true }));
   4423 
   4424 var isPlainObject = __nccwpck_require__(3287);
   4425 var universalUserAgent = __nccwpck_require__(5030);
   4426 
   4427 function lowercaseKeys(object) {
   4428   if (!object) {
   4429     return {};
   4430   }
   4431 
   4432   return Object.keys(object).reduce((newObj, key) => {
   4433     newObj[key.toLowerCase()] = object[key];
   4434     return newObj;
   4435   }, {});
   4436 }
   4437 
   4438 function mergeDeep(defaults, options) {
   4439   const result = Object.assign({}, defaults);
   4440   Object.keys(options).forEach(key => {
   4441     if (isPlainObject.isPlainObject(options[key])) {
   4442       if (!(key in defaults)) Object.assign(result, {
   4443         [key]: options[key]
   4444       });else result[key] = mergeDeep(defaults[key], options[key]);
   4445     } else {
   4446       Object.assign(result, {
   4447         [key]: options[key]
   4448       });
   4449     }
   4450   });
   4451   return result;
   4452 }
   4453 
   4454 function removeUndefinedProperties(obj) {
   4455   for (const key in obj) {
   4456     if (obj[key] === undefined) {
   4457       delete obj[key];
   4458     }
   4459   }
   4460 
   4461   return obj;
   4462 }
   4463 
   4464 function merge(defaults, route, options) {
   4465   if (typeof route === "string") {
   4466     let [method, url] = route.split(" ");
   4467     options = Object.assign(url ? {
   4468       method,
   4469       url
   4470     } : {
   4471       url: method
   4472     }, options);
   4473   } else {
   4474     options = Object.assign({}, route);
   4475   } // lowercase header names before merging with defaults to avoid duplicates
   4476 
   4477 
   4478   options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging
   4479 
   4480   removeUndefinedProperties(options);
   4481   removeUndefinedProperties(options.headers);
   4482   const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten
   4483 
   4484   if (defaults && defaults.mediaType.previews.length) {
   4485     mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
   4486   }
   4487 
   4488   mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, ""));
   4489   return mergedOptions;
   4490 }
   4491 
   4492 function addQueryParameters(url, parameters) {
   4493   const separator = /\?/.test(url) ? "&" : "?";
   4494   const names = Object.keys(parameters);
   4495 
   4496   if (names.length === 0) {
   4497     return url;
   4498   }
   4499 
   4500   return url + separator + names.map(name => {
   4501     if (name === "q") {
   4502       return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
   4503     }
   4504 
   4505     return `${name}=${encodeURIComponent(parameters[name])}`;
   4506   }).join("&");
   4507 }
   4508 
   4509 const urlVariableRegex = /\{[^}]+\}/g;
   4510 
   4511 function removeNonChars(variableName) {
   4512   return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
   4513 }
   4514 
   4515 function extractUrlVariableNames(url) {
   4516   const matches = url.match(urlVariableRegex);
   4517 
   4518   if (!matches) {
   4519     return [];
   4520   }
   4521 
   4522   return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
   4523 }
   4524 
   4525 function omit(object, keysToOmit) {
   4526   return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {
   4527     obj[key] = object[key];
   4528     return obj;
   4529   }, {});
   4530 }
   4531 
   4532 // Based on https://github.com/bramstein/url-template, licensed under BSD
   4533 // TODO: create separate package.
   4534 //
   4535 // Copyright (c) 2012-2014, Bram Stein
   4536 // All rights reserved.
   4537 // Redistribution and use in source and binary forms, with or without
   4538 // modification, are permitted provided that the following conditions
   4539 // are met:
   4540 //  1. Redistributions of source code must retain the above copyright
   4541 //     notice, this list of conditions and the following disclaimer.
   4542 //  2. Redistributions in binary form must reproduce the above copyright
   4543 //     notice, this list of conditions and the following disclaimer in the
   4544 //     documentation and/or other materials provided with the distribution.
   4545 //  3. The name of the author may not be used to endorse or promote products
   4546 //     derived from this software without specific prior written permission.
   4547 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
   4548 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   4549 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
   4550 // EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   4551 // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   4552 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   4553 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
   4554 // OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   4555 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
   4556 // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   4557 
   4558 /* istanbul ignore file */
   4559 function encodeReserved(str) {
   4560   return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
   4561     if (!/%[0-9A-Fa-f]/.test(part)) {
   4562       part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
   4563     }
   4564 
   4565     return part;
   4566   }).join("");
   4567 }
   4568 
   4569 function encodeUnreserved(str) {
   4570   return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
   4571     return "%" + c.charCodeAt(0).toString(16).toUpperCase();
   4572   });
   4573 }
   4574 
   4575 function encodeValue(operator, value, key) {
   4576   value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
   4577 
   4578   if (key) {
   4579     return encodeUnreserved(key) + "=" + value;
   4580   } else {
   4581     return value;
   4582   }
   4583 }
   4584 
   4585 function isDefined(value) {
   4586   return value !== undefined && value !== null;
   4587 }
   4588 
   4589 function isKeyOperator(operator) {
   4590   return operator === ";" || operator === "&" || operator === "?";
   4591 }
   4592 
   4593 function getValues(context, operator, key, modifier) {
   4594   var value = context[key],
   4595       result = [];
   4596 
   4597   if (isDefined(value) && value !== "") {
   4598     if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
   4599       value = value.toString();
   4600 
   4601       if (modifier && modifier !== "*") {
   4602         value = value.substring(0, parseInt(modifier, 10));
   4603       }
   4604 
   4605       result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
   4606     } else {
   4607       if (modifier === "*") {
   4608         if (Array.isArray(value)) {
   4609           value.filter(isDefined).forEach(function (value) {
   4610             result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
   4611           });
   4612         } else {
   4613           Object.keys(value).forEach(function (k) {
   4614             if (isDefined(value[k])) {
   4615               result.push(encodeValue(operator, value[k], k));
   4616             }
   4617           });
   4618         }
   4619       } else {
   4620         const tmp = [];
   4621 
   4622         if (Array.isArray(value)) {
   4623           value.filter(isDefined).forEach(function (value) {
   4624             tmp.push(encodeValue(operator, value));
   4625           });
   4626         } else {
   4627           Object.keys(value).forEach(function (k) {
   4628             if (isDefined(value[k])) {
   4629               tmp.push(encodeUnreserved(k));
   4630               tmp.push(encodeValue(operator, value[k].toString()));
   4631             }
   4632           });
   4633         }
   4634 
   4635         if (isKeyOperator(operator)) {
   4636           result.push(encodeUnreserved(key) + "=" + tmp.join(","));
   4637         } else if (tmp.length !== 0) {
   4638           result.push(tmp.join(","));
   4639         }
   4640       }
   4641     }
   4642   } else {
   4643     if (operator === ";") {
   4644       if (isDefined(value)) {
   4645         result.push(encodeUnreserved(key));
   4646       }
   4647     } else if (value === "" && (operator === "&" || operator === "?")) {
   4648       result.push(encodeUnreserved(key) + "=");
   4649     } else if (value === "") {
   4650       result.push("");
   4651     }
   4652   }
   4653 
   4654   return result;
   4655 }
   4656 
   4657 function parseUrl(template) {
   4658   return {
   4659     expand: expand.bind(null, template)
   4660   };
   4661 }
   4662 
   4663 function expand(template, context) {
   4664   var operators = ["+", "#", ".", "/", ";", "?", "&"];
   4665   return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
   4666     if (expression) {
   4667       let operator = "";
   4668       const values = [];
   4669 
   4670       if (operators.indexOf(expression.charAt(0)) !== -1) {
   4671         operator = expression.charAt(0);
   4672         expression = expression.substr(1);
   4673       }
   4674 
   4675       expression.split(/,/g).forEach(function (variable) {
   4676         var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
   4677         values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
   4678       });
   4679 
   4680       if (operator && operator !== "+") {
   4681         var separator = ",";
   4682 
   4683         if (operator === "?") {
   4684           separator = "&";
   4685         } else if (operator !== "#") {
   4686           separator = operator;
   4687         }
   4688 
   4689         return (values.length !== 0 ? operator : "") + values.join(separator);
   4690       } else {
   4691         return values.join(",");
   4692       }
   4693     } else {
   4694       return encodeReserved(literal);
   4695     }
   4696   });
   4697 }
   4698 
   4699 function parse(options) {
   4700   // https://fetch.spec.whatwg.org/#methods
   4701   let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible
   4702 
   4703   let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
   4704   let headers = Object.assign({}, options.headers);
   4705   let body;
   4706   let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later
   4707 
   4708   const urlVariableNames = extractUrlVariableNames(url);
   4709   url = parseUrl(url).expand(parameters);
   4710 
   4711   if (!/^http/.test(url)) {
   4712     url = options.baseUrl + url;
   4713   }
   4714 
   4715   const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl");
   4716   const remainingParameters = omit(parameters, omittedParameters);
   4717   const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
   4718 
   4719   if (!isBinaryRequest) {
   4720     if (options.mediaType.format) {
   4721       // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
   4722       headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
   4723     }
   4724 
   4725     if (options.mediaType.previews.length) {
   4726       const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
   4727       headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {
   4728         const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
   4729         return `application/vnd.github.${preview}-preview${format}`;
   4730       }).join(",");
   4731     }
   4732   } // for GET/HEAD requests, set URL query parameters from remaining parameters
   4733   // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
   4734 
   4735 
   4736   if (["GET", "HEAD"].includes(method)) {
   4737     url = addQueryParameters(url, remainingParameters);
   4738   } else {
   4739     if ("data" in remainingParameters) {
   4740       body = remainingParameters.data;
   4741     } else {
   4742       if (Object.keys(remainingParameters).length) {
   4743         body = remainingParameters;
   4744       } else {
   4745         headers["content-length"] = 0;
   4746       }
   4747     }
   4748   } // default content-type for JSON if body is set
   4749 
   4750 
   4751   if (!headers["content-type"] && typeof body !== "undefined") {
   4752     headers["content-type"] = "application/json; charset=utf-8";
   4753   } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
   4754   // fetch does not allow to set `content-length` header, but we can set body to an empty string
   4755 
   4756 
   4757   if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
   4758     body = "";
   4759   } // Only return body/request keys if present
   4760 
   4761 
   4762   return Object.assign({
   4763     method,
   4764     url,
   4765     headers
   4766   }, typeof body !== "undefined" ? {
   4767     body
   4768   } : null, options.request ? {
   4769     request: options.request
   4770   } : null);
   4771 }
   4772 
   4773 function endpointWithDefaults(defaults, route, options) {
   4774   return parse(merge(defaults, route, options));
   4775 }
   4776 
   4777 function withDefaults(oldDefaults, newDefaults) {
   4778   const DEFAULTS = merge(oldDefaults, newDefaults);
   4779   const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
   4780   return Object.assign(endpoint, {
   4781     DEFAULTS,
   4782     defaults: withDefaults.bind(null, DEFAULTS),
   4783     merge: merge.bind(null, DEFAULTS),
   4784     parse
   4785   });
   4786 }
   4787 
   4788 const VERSION = "6.0.12";
   4789 
   4790 const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
   4791 // So we use RequestParameters and add method as additional required property.
   4792 
   4793 const DEFAULTS = {
   4794   method: "GET",
   4795   baseUrl: "https://api.github.com",
   4796   headers: {
   4797     accept: "application/vnd.github.v3+json",
   4798     "user-agent": userAgent
   4799   },
   4800   mediaType: {
   4801     format: "",
   4802     previews: []
   4803   }
   4804 };
   4805 
   4806 const endpoint = withDefaults(null, DEFAULTS);
   4807 
   4808 exports.endpoint = endpoint;
   4809 //# sourceMappingURL=index.js.map
   4810 
   4811 
   4812 /***/ }),
   4813 
   4814 /***/ 8467:
   4815 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   4816 
   4817 
   4818 
   4819 Object.defineProperty(exports, "__esModule", ({ value: true }));
   4820 
   4821 var request = __nccwpck_require__(6234);
   4822 var universalUserAgent = __nccwpck_require__(5030);
   4823 
   4824 const VERSION = "4.8.0";
   4825 
   4826 function _buildMessageForResponseErrors(data) {
   4827   return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n");
   4828 }
   4829 
   4830 class GraphqlResponseError extends Error {
   4831   constructor(request, headers, response) {
   4832     super(_buildMessageForResponseErrors(response));
   4833     this.request = request;
   4834     this.headers = headers;
   4835     this.response = response;
   4836     this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties.
   4837 
   4838     this.errors = response.errors;
   4839     this.data = response.data; // Maintains proper stack trace (only available on V8)
   4840 
   4841     /* istanbul ignore next */
   4842 
   4843     if (Error.captureStackTrace) {
   4844       Error.captureStackTrace(this, this.constructor);
   4845     }
   4846   }
   4847 
   4848 }
   4849 
   4850 const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"];
   4851 const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
   4852 const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
   4853 function graphql(request, query, options) {
   4854   if (options) {
   4855     if (typeof query === "string" && "query" in options) {
   4856       return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`));
   4857     }
   4858 
   4859     for (const key in options) {
   4860       if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;
   4861       return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`));
   4862     }
   4863   }
   4864 
   4865   const parsedOptions = typeof query === "string" ? Object.assign({
   4866     query
   4867   }, options) : query;
   4868   const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {
   4869     if (NON_VARIABLE_OPTIONS.includes(key)) {
   4870       result[key] = parsedOptions[key];
   4871       return result;
   4872     }
   4873 
   4874     if (!result.variables) {
   4875       result.variables = {};
   4876     }
   4877 
   4878     result.variables[key] = parsedOptions[key];
   4879     return result;
   4880   }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix
   4881   // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451
   4882 
   4883   const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;
   4884 
   4885   if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
   4886     requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
   4887   }
   4888 
   4889   return request(requestOptions).then(response => {
   4890     if (response.data.errors) {
   4891       const headers = {};
   4892 
   4893       for (const key of Object.keys(response.headers)) {
   4894         headers[key] = response.headers[key];
   4895       }
   4896 
   4897       throw new GraphqlResponseError(requestOptions, headers, response.data);
   4898     }
   4899 
   4900     return response.data.data;
   4901   });
   4902 }
   4903 
   4904 function withDefaults(request$1, newDefaults) {
   4905   const newRequest = request$1.defaults(newDefaults);
   4906 
   4907   const newApi = (query, options) => {
   4908     return graphql(newRequest, query, options);
   4909   };
   4910 
   4911   return Object.assign(newApi, {
   4912     defaults: withDefaults.bind(null, newRequest),
   4913     endpoint: request.request.endpoint
   4914   });
   4915 }
   4916 
   4917 const graphql$1 = withDefaults(request.request, {
   4918   headers: {
   4919     "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}`
   4920   },
   4921   method: "POST",
   4922   url: "/graphql"
   4923 });
   4924 function withCustomRequest(customRequest) {
   4925   return withDefaults(customRequest, {
   4926     method: "POST",
   4927     url: "/graphql"
   4928   });
   4929 }
   4930 
   4931 exports.GraphqlResponseError = GraphqlResponseError;
   4932 exports.graphql = graphql$1;
   4933 exports.withCustomRequest = withCustomRequest;
   4934 //# sourceMappingURL=index.js.map
   4935 
   4936 
   4937 /***/ }),
   4938 
   4939 /***/ 4193:
   4940 /***/ ((__unused_webpack_module, exports) => {
   4941 
   4942 
   4943 
   4944 Object.defineProperty(exports, "__esModule", ({ value: true }));
   4945 
   4946 const VERSION = "2.21.3";
   4947 
   4948 function ownKeys(object, enumerableOnly) {
   4949   var keys = Object.keys(object);
   4950 
   4951   if (Object.getOwnPropertySymbols) {
   4952     var symbols = Object.getOwnPropertySymbols(object);
   4953     enumerableOnly && (symbols = symbols.filter(function (sym) {
   4954       return Object.getOwnPropertyDescriptor(object, sym).enumerable;
   4955     })), keys.push.apply(keys, symbols);
   4956   }
   4957 
   4958   return keys;
   4959 }
   4960 
   4961 function _objectSpread2(target) {
   4962   for (var i = 1; i < arguments.length; i++) {
   4963     var source = null != arguments[i] ? arguments[i] : {};
   4964     i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
   4965       _defineProperty(target, key, source[key]);
   4966     }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
   4967       Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
   4968     });
   4969   }
   4970 
   4971   return target;
   4972 }
   4973 
   4974 function _defineProperty(obj, key, value) {
   4975   if (key in obj) {
   4976     Object.defineProperty(obj, key, {
   4977       value: value,
   4978       enumerable: true,
   4979       configurable: true,
   4980       writable: true
   4981     });
   4982   } else {
   4983     obj[key] = value;
   4984   }
   4985 
   4986   return obj;
   4987 }
   4988 
   4989 /**
   4990  * Some “list” response that can be paginated have a different response structure
   4991  *
   4992  * They have a `total_count` key in the response (search also has `incomplete_results`,
   4993  * /installation/repositories also has `repository_selection`), as well as a key with
   4994  * the list of the items which name varies from endpoint to endpoint.
   4995  *
   4996  * Octokit normalizes these responses so that paginated results are always returned following
   4997  * the same structure. One challenge is that if the list response has only one page, no Link
   4998  * header is provided, so this header alone is not sufficient to check wether a response is
   4999  * paginated or not.
   5000  *
   5001  * We check if a "total_count" key is present in the response data, but also make sure that
   5002  * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
   5003  * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
   5004  */
   5005 function normalizePaginatedListResponse(response) {
   5006   // endpoints can respond with 204 if repository is empty
   5007   if (!response.data) {
   5008     return _objectSpread2(_objectSpread2({}, response), {}, {
   5009       data: []
   5010     });
   5011   }
   5012 
   5013   const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
   5014   if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way
   5015   // to retrieve the same information.
   5016 
   5017   const incompleteResults = response.data.incomplete_results;
   5018   const repositorySelection = response.data.repository_selection;
   5019   const totalCount = response.data.total_count;
   5020   delete response.data.incomplete_results;
   5021   delete response.data.repository_selection;
   5022   delete response.data.total_count;
   5023   const namespaceKey = Object.keys(response.data)[0];
   5024   const data = response.data[namespaceKey];
   5025   response.data = data;
   5026 
   5027   if (typeof incompleteResults !== "undefined") {
   5028     response.data.incomplete_results = incompleteResults;
   5029   }
   5030 
   5031   if (typeof repositorySelection !== "undefined") {
   5032     response.data.repository_selection = repositorySelection;
   5033   }
   5034 
   5035   response.data.total_count = totalCount;
   5036   return response;
   5037 }
   5038 
   5039 function iterator(octokit, route, parameters) {
   5040   const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
   5041   const requestMethod = typeof route === "function" ? route : octokit.request;
   5042   const method = options.method;
   5043   const headers = options.headers;
   5044   let url = options.url;
   5045   return {
   5046     [Symbol.asyncIterator]: () => ({
   5047       async next() {
   5048         if (!url) return {
   5049           done: true
   5050         };
   5051 
   5052         try {
   5053           const response = await requestMethod({
   5054             method,
   5055             url,
   5056             headers
   5057           });
   5058           const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:
   5059           // '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
   5060           // sets `url` to undefined if "next" URL is not present or `link` header is not set
   5061 
   5062           url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
   5063           return {
   5064             value: normalizedResponse
   5065           };
   5066         } catch (error) {
   5067           if (error.status !== 409) throw error;
   5068           url = "";
   5069           return {
   5070             value: {
   5071               status: 200,
   5072               headers: {},
   5073               data: []
   5074             }
   5075           };
   5076         }
   5077       }
   5078 
   5079     })
   5080   };
   5081 }
   5082 
   5083 function paginate(octokit, route, parameters, mapFn) {
   5084   if (typeof parameters === "function") {
   5085     mapFn = parameters;
   5086     parameters = undefined;
   5087   }
   5088 
   5089   return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
   5090 }
   5091 
   5092 function gather(octokit, results, iterator, mapFn) {
   5093   return iterator.next().then(result => {
   5094     if (result.done) {
   5095       return results;
   5096     }
   5097 
   5098     let earlyExit = false;
   5099 
   5100     function done() {
   5101       earlyExit = true;
   5102     }
   5103 
   5104     results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
   5105 
   5106     if (earlyExit) {
   5107       return results;
   5108     }
   5109 
   5110     return gather(octokit, results, iterator, mapFn);
   5111   });
   5112 }
   5113 
   5114 const composePaginateRest = Object.assign(paginate, {
   5115   iterator
   5116 });
   5117 
   5118 const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "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/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "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}/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}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "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/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/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "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/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "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}/requested_reviewers", "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}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "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 /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/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}/starred", "GET /users/{username}/subscriptions"];
   5119 
   5120 function isPaginatingEndpoint(arg) {
   5121   if (typeof arg === "string") {
   5122     return paginatingEndpoints.includes(arg);
   5123   } else {
   5124     return false;
   5125   }
   5126 }
   5127 
   5128 /**
   5129  * @param octokit Octokit instance
   5130  * @param options Options passed to Octokit constructor
   5131  */
   5132 
   5133 function paginateRest(octokit) {
   5134   return {
   5135     paginate: Object.assign(paginate.bind(null, octokit), {
   5136       iterator: iterator.bind(null, octokit)
   5137     })
   5138   };
   5139 }
   5140 paginateRest.VERSION = VERSION;
   5141 
   5142 exports.composePaginateRest = composePaginateRest;
   5143 exports.isPaginatingEndpoint = isPaginatingEndpoint;
   5144 exports.paginateRest = paginateRest;
   5145 exports.paginatingEndpoints = paginatingEndpoints;
   5146 //# sourceMappingURL=index.js.map
   5147 
   5148 
   5149 /***/ }),
   5150 
   5151 /***/ 3044:
   5152 /***/ ((__unused_webpack_module, exports) => {
   5153 
   5154 
   5155 
   5156 Object.defineProperty(exports, "__esModule", ({ value: true }));
   5157 
   5158 function ownKeys(object, enumerableOnly) {
   5159   var keys = Object.keys(object);
   5160 
   5161   if (Object.getOwnPropertySymbols) {
   5162     var symbols = Object.getOwnPropertySymbols(object);
   5163 
   5164     if (enumerableOnly) {
   5165       symbols = symbols.filter(function (sym) {
   5166         return Object.getOwnPropertyDescriptor(object, sym).enumerable;
   5167       });
   5168     }
   5169 
   5170     keys.push.apply(keys, symbols);
   5171   }
   5172 
   5173   return keys;
   5174 }
   5175 
   5176 function _objectSpread2(target) {
   5177   for (var i = 1; i < arguments.length; i++) {
   5178     var source = arguments[i] != null ? arguments[i] : {};
   5179 
   5180     if (i % 2) {
   5181       ownKeys(Object(source), true).forEach(function (key) {
   5182         _defineProperty(target, key, source[key]);
   5183       });
   5184     } else if (Object.getOwnPropertyDescriptors) {
   5185       Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
   5186     } else {
   5187       ownKeys(Object(source)).forEach(function (key) {
   5188         Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
   5189       });
   5190     }
   5191   }
   5192 
   5193   return target;
   5194 }
   5195 
   5196 function _defineProperty(obj, key, value) {
   5197   if (key in obj) {
   5198     Object.defineProperty(obj, key, {
   5199       value: value,
   5200       enumerable: true,
   5201       configurable: true,
   5202       writable: true
   5203     });
   5204   } else {
   5205     obj[key] = value;
   5206   }
   5207 
   5208   return obj;
   5209 }
   5210 
   5211 const Endpoints = {
   5212   actions: {
   5213     addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"],
   5214     addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
   5215     addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
   5216     approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"],
   5217     cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"],
   5218     createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
   5219     createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
   5220     createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
   5221     createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"],
   5222     createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"],
   5223     createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
   5224     createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"],
   5225     createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"],
   5226     deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"],
   5227     deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"],
   5228     deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
   5229     deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
   5230     deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
   5231     deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
   5232     deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"],
   5233     deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"],
   5234     deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
   5235     deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
   5236     disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"],
   5237     disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"],
   5238     downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"],
   5239     downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"],
   5240     downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"],
   5241     downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"],
   5242     enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"],
   5243     enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"],
   5244     getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
   5245     getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
   5246     getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"],
   5247     getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"],
   5248     getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
   5249     getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"],
   5250     getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"],
   5251     getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
   5252     getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"],
   5253     getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"],
   5254     getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"],
   5255     getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"],
   5256     getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"],
   5257     getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"],
   5258     getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"],
   5259     getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
   5260     getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
   5261     getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
   5262     getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
   5263     getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, {
   5264       renamed: ["actions", "getGithubActionsPermissionsRepository"]
   5265     }],
   5266     getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
   5267     getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
   5268     getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"],
   5269     getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
   5270     getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"],
   5271     getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
   5272     getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"],
   5273     getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
   5274     getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"],
   5275     getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"],
   5276     getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"],
   5277     listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
   5278     listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"],
   5279     listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"],
   5280     listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"],
   5281     listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"],
   5282     listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
   5283     listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
   5284     listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
   5285     listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
   5286     listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
   5287     listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"],
   5288     listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"],
   5289     listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"],
   5290     listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
   5291     listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
   5292     listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"],
   5293     listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"],
   5294     listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
   5295     reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"],
   5296     reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
   5297     reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"],
   5298     removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"],
   5299     removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
   5300     removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"],
   5301     removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"],
   5302     removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"],
   5303     reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"],
   5304     setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"],
   5305     setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"],
   5306     setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"],
   5307     setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"],
   5308     setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"],
   5309     setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"],
   5310     setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"],
   5311     setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"],
   5312     setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"],
   5313     setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"],
   5314     setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"],
   5315     setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"]
   5316   },
   5317   activity: {
   5318     checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
   5319     deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
   5320     deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"],
   5321     getFeeds: ["GET /feeds"],
   5322     getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
   5323     getThread: ["GET /notifications/threads/{thread_id}"],
   5324     getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"],
   5325     listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
   5326     listNotificationsForAuthenticatedUser: ["GET /notifications"],
   5327     listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"],
   5328     listPublicEvents: ["GET /events"],
   5329     listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
   5330     listPublicEventsForUser: ["GET /users/{username}/events/public"],
   5331     listPublicOrgEvents: ["GET /orgs/{org}/events"],
   5332     listReceivedEventsForUser: ["GET /users/{username}/received_events"],
   5333     listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"],
   5334     listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
   5335     listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"],
   5336     listReposStarredByAuthenticatedUser: ["GET /user/starred"],
   5337     listReposStarredByUser: ["GET /users/{username}/starred"],
   5338     listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
   5339     listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
   5340     listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
   5341     listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
   5342     markNotificationsAsRead: ["PUT /notifications"],
   5343     markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
   5344     markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
   5345     setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
   5346     setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"],
   5347     starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
   5348     unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
   5349   },
   5350   apps: {
   5351     addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, {
   5352       renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"]
   5353     }],
   5354     addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"],
   5355     checkToken: ["POST /applications/{client_id}/token"],
   5356     createFromManifest: ["POST /app-manifests/{code}/conversions"],
   5357     createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"],
   5358     deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
   5359     deleteInstallation: ["DELETE /app/installations/{installation_id}"],
   5360     deleteToken: ["DELETE /applications/{client_id}/token"],
   5361     getAuthenticated: ["GET /app"],
   5362     getBySlug: ["GET /apps/{app_slug}"],
   5363     getInstallation: ["GET /app/installations/{installation_id}"],
   5364     getOrgInstallation: ["GET /orgs/{org}/installation"],
   5365     getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
   5366     getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"],
   5367     getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"],
   5368     getUserInstallation: ["GET /users/{username}/installation"],
   5369     getWebhookConfigForApp: ["GET /app/hook/config"],
   5370     getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
   5371     listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
   5372     listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"],
   5373     listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"],
   5374     listInstallations: ["GET /app/installations"],
   5375     listInstallationsForAuthenticatedUser: ["GET /user/installations"],
   5376     listPlans: ["GET /marketplace_listing/plans"],
   5377     listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
   5378     listReposAccessibleToInstallation: ["GET /installation/repositories"],
   5379     listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
   5380     listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"],
   5381     listWebhookDeliveries: ["GET /app/hook/deliveries"],
   5382     redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"],
   5383     removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, {
   5384       renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"]
   5385     }],
   5386     removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"],
   5387     resetToken: ["PATCH /applications/{client_id}/token"],
   5388     revokeInstallationAccessToken: ["DELETE /installation/token"],
   5389     scopeToken: ["POST /applications/{client_id}/token/scoped"],
   5390     suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
   5391     unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"],
   5392     updateWebhookConfigForApp: ["PATCH /app/hook/config"]
   5393   },
   5394   billing: {
   5395     getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
   5396     getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"],
   5397     getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"],
   5398     getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"],
   5399     getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
   5400     getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"],
   5401     getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"],
   5402     getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"]
   5403   },
   5404   checks: {
   5405     create: ["POST /repos/{owner}/{repo}/check-runs"],
   5406     createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
   5407     get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
   5408     getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
   5409     listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"],
   5410     listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
   5411     listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"],
   5412     listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
   5413     rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"],
   5414     rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"],
   5415     setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"],
   5416     update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
   5417   },
   5418   codeScanning: {
   5419     deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"],
   5420     getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, {
   5421       renamedParameters: {
   5422         alert_id: "alert_number"
   5423       }
   5424     }],
   5425     getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"],
   5426     getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
   5427     listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"],
   5428     listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
   5429     listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
   5430     listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, {
   5431       renamed: ["codeScanning", "listAlertInstances"]
   5432     }],
   5433     listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
   5434     updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"],
   5435     uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
   5436   },
   5437   codesOfConduct: {
   5438     getAllCodesOfConduct: ["GET /codes_of_conduct"],
   5439     getConductCode: ["GET /codes_of_conduct/{key}"]
   5440   },
   5441   codespaces: {
   5442     addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
   5443     codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"],
   5444     createForAuthenticatedUser: ["POST /user/codespaces"],
   5445     createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
   5446     createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"],
   5447     createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"],
   5448     createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"],
   5449     deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
   5450     deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"],
   5451     deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
   5452     deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"],
   5453     exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"],
   5454     getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"],
   5455     getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
   5456     getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"],
   5457     getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"],
   5458     getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"],
   5459     getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"],
   5460     listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"],
   5461     listForAuthenticatedUser: ["GET /user/codespaces"],
   5462     listInOrganization: ["GET /orgs/{org}/codespaces", {}, {
   5463       renamedParameters: {
   5464         org_id: "org"
   5465       }
   5466     }],
   5467     listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"],
   5468     listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
   5469     listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"],
   5470     listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
   5471     removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"],
   5472     repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"],
   5473     setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"],
   5474     startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
   5475     stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
   5476     stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"],
   5477     updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
   5478   },
   5479   dependabot: {
   5480     addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
   5481     createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"],
   5482     createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
   5483     deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
   5484     deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
   5485     getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
   5486     getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
   5487     getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"],
   5488     getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"],
   5489     listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
   5490     listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
   5491     listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"],
   5492     removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"],
   5493     setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"]
   5494   },
   5495   dependencyGraph: {
   5496     createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"],
   5497     diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"]
   5498   },
   5499   emojis: {
   5500     get: ["GET /emojis"]
   5501   },
   5502   enterpriseAdmin: {
   5503     addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
   5504     disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
   5505     enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"],
   5506     getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"],
   5507     getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"],
   5508     getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"],
   5509     listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
   5510     listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"],
   5511     removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
   5512     removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"],
   5513     setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"],
   5514     setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"],
   5515     setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"],
   5516     setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"]
   5517   },
   5518   gists: {
   5519     checkIsStarred: ["GET /gists/{gist_id}/star"],
   5520     create: ["POST /gists"],
   5521     createComment: ["POST /gists/{gist_id}/comments"],
   5522     delete: ["DELETE /gists/{gist_id}"],
   5523     deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
   5524     fork: ["POST /gists/{gist_id}/forks"],
   5525     get: ["GET /gists/{gist_id}"],
   5526     getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
   5527     getRevision: ["GET /gists/{gist_id}/{sha}"],
   5528     list: ["GET /gists"],
   5529     listComments: ["GET /gists/{gist_id}/comments"],
   5530     listCommits: ["GET /gists/{gist_id}/commits"],
   5531     listForUser: ["GET /users/{username}/gists"],
   5532     listForks: ["GET /gists/{gist_id}/forks"],
   5533     listPublic: ["GET /gists/public"],
   5534     listStarred: ["GET /gists/starred"],
   5535     star: ["PUT /gists/{gist_id}/star"],
   5536     unstar: ["DELETE /gists/{gist_id}/star"],
   5537     update: ["PATCH /gists/{gist_id}"],
   5538     updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
   5539   },
   5540   git: {
   5541     createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
   5542     createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
   5543     createRef: ["POST /repos/{owner}/{repo}/git/refs"],
   5544     createTag: ["POST /repos/{owner}/{repo}/git/tags"],
   5545     createTree: ["POST /repos/{owner}/{repo}/git/trees"],
   5546     deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
   5547     getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
   5548     getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
   5549     getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
   5550     getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
   5551     getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
   5552     listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
   5553     updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
   5554   },
   5555   gitignore: {
   5556     getAllTemplates: ["GET /gitignore/templates"],
   5557     getTemplate: ["GET /gitignore/templates/{name}"]
   5558   },
   5559   interactions: {
   5560     getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
   5561     getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
   5562     getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
   5563     getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, {
   5564       renamed: ["interactions", "getRestrictionsForAuthenticatedUser"]
   5565     }],
   5566     removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
   5567     removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
   5568     removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"],
   5569     removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, {
   5570       renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"]
   5571     }],
   5572     setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
   5573     setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
   5574     setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
   5575     setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, {
   5576       renamed: ["interactions", "setRestrictionsForAuthenticatedUser"]
   5577     }]
   5578   },
   5579   issues: {
   5580     addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
   5581     addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
   5582     checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
   5583     create: ["POST /repos/{owner}/{repo}/issues"],
   5584     createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"],
   5585     createLabel: ["POST /repos/{owner}/{repo}/labels"],
   5586     createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
   5587     deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"],
   5588     deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
   5589     deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"],
   5590     get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
   5591     getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
   5592     getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
   5593     getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
   5594     getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
   5595     list: ["GET /issues"],
   5596     listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
   5597     listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
   5598     listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
   5599     listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
   5600     listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
   5601     listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"],
   5602     listForAuthenticatedUser: ["GET /user/issues"],
   5603     listForOrg: ["GET /orgs/{org}/issues"],
   5604     listForRepo: ["GET /repos/{owner}/{repo}/issues"],
   5605     listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"],
   5606     listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
   5607     listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"],
   5608     listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
   5609     lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
   5610     removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"],
   5611     removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"],
   5612     removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"],
   5613     setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
   5614     unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
   5615     update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
   5616     updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
   5617     updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
   5618     updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"]
   5619   },
   5620   licenses: {
   5621     get: ["GET /licenses/{license}"],
   5622     getAllCommonlyUsed: ["GET /licenses"],
   5623     getForRepo: ["GET /repos/{owner}/{repo}/license"]
   5624   },
   5625   markdown: {
   5626     render: ["POST /markdown"],
   5627     renderRaw: ["POST /markdown/raw", {
   5628       headers: {
   5629         "content-type": "text/plain; charset=utf-8"
   5630       }
   5631     }]
   5632   },
   5633   meta: {
   5634     get: ["GET /meta"],
   5635     getOctocat: ["GET /octocat"],
   5636     getZen: ["GET /zen"],
   5637     root: ["GET /"]
   5638   },
   5639   migrations: {
   5640     cancelImport: ["DELETE /repos/{owner}/{repo}/import"],
   5641     deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"],
   5642     deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"],
   5643     downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"],
   5644     getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"],
   5645     getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"],
   5646     getImportStatus: ["GET /repos/{owner}/{repo}/import"],
   5647     getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"],
   5648     getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
   5649     getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
   5650     listForAuthenticatedUser: ["GET /user/migrations"],
   5651     listForOrg: ["GET /orgs/{org}/migrations"],
   5652     listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"],
   5653     listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
   5654     listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, {
   5655       renamed: ["migrations", "listReposForAuthenticatedUser"]
   5656     }],
   5657     mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"],
   5658     setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"],
   5659     startForAuthenticatedUser: ["POST /user/migrations"],
   5660     startForOrg: ["POST /orgs/{org}/migrations"],
   5661     startImport: ["PUT /repos/{owner}/{repo}/import"],
   5662     unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"],
   5663     unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"],
   5664     updateImport: ["PATCH /repos/{owner}/{repo}/import"]
   5665   },
   5666   orgs: {
   5667     blockUser: ["PUT /orgs/{org}/blocks/{username}"],
   5668     cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
   5669     checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
   5670     checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
   5671     checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
   5672     convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"],
   5673     createInvitation: ["POST /orgs/{org}/invitations"],
   5674     createWebhook: ["POST /orgs/{org}/hooks"],
   5675     deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
   5676     get: ["GET /orgs/{org}"],
   5677     getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
   5678     getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
   5679     getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
   5680     getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
   5681     getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"],
   5682     list: ["GET /organizations"],
   5683     listAppInstallations: ["GET /orgs/{org}/installations"],
   5684     listBlockedUsers: ["GET /orgs/{org}/blocks"],
   5685     listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"],
   5686     listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
   5687     listForAuthenticatedUser: ["GET /user/orgs"],
   5688     listForUser: ["GET /users/{username}/orgs"],
   5689     listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
   5690     listMembers: ["GET /orgs/{org}/members"],
   5691     listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
   5692     listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
   5693     listPendingInvitations: ["GET /orgs/{org}/invitations"],
   5694     listPublicMembers: ["GET /orgs/{org}/public_members"],
   5695     listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
   5696     listWebhooks: ["GET /orgs/{org}/hooks"],
   5697     pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
   5698     redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
   5699     removeMember: ["DELETE /orgs/{org}/members/{username}"],
   5700     removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
   5701     removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"],
   5702     removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"],
   5703     setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
   5704     setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"],
   5705     unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
   5706     update: ["PATCH /orgs/{org}"],
   5707     updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"],
   5708     updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
   5709     updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
   5710   },
   5711   packages: {
   5712     deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"],
   5713     deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"],
   5714     deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"],
   5715     deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5716     deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5717     deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5718     getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, {
   5719       renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"]
   5720     }],
   5721     getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, {
   5722       renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"]
   5723     }],
   5724     getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"],
   5725     getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"],
   5726     getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"],
   5727     getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"],
   5728     getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"],
   5729     getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"],
   5730     getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5731     getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5732     getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"],
   5733     listPackagesForAuthenticatedUser: ["GET /user/packages"],
   5734     listPackagesForOrganization: ["GET /orgs/{org}/packages"],
   5735     listPackagesForUser: ["GET /users/{username}/packages"],
   5736     restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"],
   5737     restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"],
   5738     restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"],
   5739     restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
   5740     restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"],
   5741     restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"]
   5742   },
   5743   projects: {
   5744     addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
   5745     createCard: ["POST /projects/columns/{column_id}/cards"],
   5746     createColumn: ["POST /projects/{project_id}/columns"],
   5747     createForAuthenticatedUser: ["POST /user/projects"],
   5748     createForOrg: ["POST /orgs/{org}/projects"],
   5749     createForRepo: ["POST /repos/{owner}/{repo}/projects"],
   5750     delete: ["DELETE /projects/{project_id}"],
   5751     deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
   5752     deleteColumn: ["DELETE /projects/columns/{column_id}"],
   5753     get: ["GET /projects/{project_id}"],
   5754     getCard: ["GET /projects/columns/cards/{card_id}"],
   5755     getColumn: ["GET /projects/columns/{column_id}"],
   5756     getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"],
   5757     listCards: ["GET /projects/columns/{column_id}/cards"],
   5758     listCollaborators: ["GET /projects/{project_id}/collaborators"],
   5759     listColumns: ["GET /projects/{project_id}/columns"],
   5760     listForOrg: ["GET /orgs/{org}/projects"],
   5761     listForRepo: ["GET /repos/{owner}/{repo}/projects"],
   5762     listForUser: ["GET /users/{username}/projects"],
   5763     moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
   5764     moveColumn: ["POST /projects/columns/{column_id}/moves"],
   5765     removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"],
   5766     update: ["PATCH /projects/{project_id}"],
   5767     updateCard: ["PATCH /projects/columns/cards/{card_id}"],
   5768     updateColumn: ["PATCH /projects/columns/{column_id}"]
   5769   },
   5770   pulls: {
   5771     checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
   5772     create: ["POST /repos/{owner}/{repo}/pulls"],
   5773     createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"],
   5774     createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
   5775     createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
   5776     deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
   5777     deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
   5778     dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"],
   5779     get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
   5780     getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
   5781     getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
   5782     list: ["GET /repos/{owner}/{repo}/pulls"],
   5783     listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"],
   5784     listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
   5785     listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
   5786     listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
   5787     listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"],
   5788     listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
   5789     listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
   5790     merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
   5791     removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
   5792     requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"],
   5793     submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"],
   5794     update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
   5795     updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"],
   5796     updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"],
   5797     updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"]
   5798   },
   5799   rateLimit: {
   5800     get: ["GET /rate_limit"]
   5801   },
   5802   reactions: {
   5803     createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
   5804     createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
   5805     createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
   5806     createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
   5807     createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"],
   5808     createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
   5809     createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"],
   5810     deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"],
   5811     deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"],
   5812     deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"],
   5813     deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"],
   5814     deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"],
   5815     deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"],
   5816     deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"],
   5817     listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"],
   5818     listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
   5819     listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"],
   5820     listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"],
   5821     listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"],
   5822     listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"],
   5823     listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"]
   5824   },
   5825   repos: {
   5826     acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, {
   5827       renamed: ["repos", "acceptInvitationForAuthenticatedUser"]
   5828     }],
   5829     acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"],
   5830     addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
   5831       mapToData: "apps"
   5832     }],
   5833     addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
   5834     addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
   5835       mapToData: "contexts"
   5836     }],
   5837     addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
   5838       mapToData: "teams"
   5839     }],
   5840     addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
   5841       mapToData: "users"
   5842     }],
   5843     checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
   5844     checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"],
   5845     codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
   5846     compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
   5847     compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"],
   5848     createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
   5849     createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
   5850     createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
   5851     createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
   5852     createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
   5853     createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
   5854     createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
   5855     createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
   5856     createForAuthenticatedUser: ["POST /user/repos"],
   5857     createFork: ["POST /repos/{owner}/{repo}/forks"],
   5858     createInOrg: ["POST /orgs/{org}/repos"],
   5859     createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"],
   5860     createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
   5861     createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
   5862     createRelease: ["POST /repos/{owner}/{repo}/releases"],
   5863     createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
   5864     createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"],
   5865     createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
   5866     declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, {
   5867       renamed: ["repos", "declineInvitationForAuthenticatedUser"]
   5868     }],
   5869     declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"],
   5870     delete: ["DELETE /repos/{owner}/{repo}"],
   5871     deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
   5872     deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
   5873     deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"],
   5874     deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
   5875     deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"],
   5876     deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
   5877     deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
   5878     deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
   5879     deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"],
   5880     deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
   5881     deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"],
   5882     deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
   5883     deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
   5884     deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
   5885     deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"],
   5886     deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"],
   5887     deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
   5888     disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"],
   5889     disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"],
   5890     disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"],
   5891     downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, {
   5892       renamed: ["repos", "downloadZipballArchive"]
   5893     }],
   5894     downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
   5895     downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
   5896     enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"],
   5897     enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"],
   5898     enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"],
   5899     generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"],
   5900     get: ["GET /repos/{owner}/{repo}"],
   5901     getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"],
   5902     getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
   5903     getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
   5904     getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"],
   5905     getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
   5906     getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"],
   5907     getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
   5908     getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
   5909     getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"],
   5910     getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
   5911     getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
   5912     getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"],
   5913     getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
   5914     getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
   5915     getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
   5916     getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
   5917     getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"],
   5918     getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
   5919     getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
   5920     getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
   5921     getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
   5922     getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
   5923     getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"],
   5924     getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"],
   5925     getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
   5926     getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
   5927     getPages: ["GET /repos/{owner}/{repo}/pages"],
   5928     getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
   5929     getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
   5930     getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
   5931     getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
   5932     getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
   5933     getReadme: ["GET /repos/{owner}/{repo}/readme"],
   5934     getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
   5935     getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
   5936     getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
   5937     getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
   5938     getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
   5939     getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"],
   5940     getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
   5941     getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
   5942     getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"],
   5943     getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
   5944     getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
   5945     getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"],
   5946     getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"],
   5947     listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
   5948     listBranches: ["GET /repos/{owner}/{repo}/branches"],
   5949     listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"],
   5950     listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
   5951     listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"],
   5952     listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
   5953     listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"],
   5954     listCommits: ["GET /repos/{owner}/{repo}/commits"],
   5955     listContributors: ["GET /repos/{owner}/{repo}/contributors"],
   5956     listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
   5957     listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"],
   5958     listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
   5959     listForAuthenticatedUser: ["GET /user/repos"],
   5960     listForOrg: ["GET /orgs/{org}/repos"],
   5961     listForUser: ["GET /users/{username}/repos"],
   5962     listForks: ["GET /repos/{owner}/{repo}/forks"],
   5963     listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
   5964     listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
   5965     listLanguages: ["GET /repos/{owner}/{repo}/languages"],
   5966     listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
   5967     listPublic: ["GET /repositories"],
   5968     listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"],
   5969     listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"],
   5970     listReleases: ["GET /repos/{owner}/{repo}/releases"],
   5971     listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
   5972     listTags: ["GET /repos/{owner}/{repo}/tags"],
   5973     listTeams: ["GET /repos/{owner}/{repo}/teams"],
   5974     listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"],
   5975     listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
   5976     merge: ["POST /repos/{owner}/{repo}/merges"],
   5977     mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
   5978     pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
   5979     redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"],
   5980     removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
   5981       mapToData: "apps"
   5982     }],
   5983     removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"],
   5984     removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
   5985       mapToData: "contexts"
   5986     }],
   5987     removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
   5988     removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
   5989       mapToData: "teams"
   5990     }],
   5991     removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
   5992       mapToData: "users"
   5993     }],
   5994     renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
   5995     replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
   5996     requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
   5997     setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"],
   5998     setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, {
   5999       mapToData: "apps"
   6000     }],
   6001     setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, {
   6002       mapToData: "contexts"
   6003     }],
   6004     setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, {
   6005       mapToData: "teams"
   6006     }],
   6007     setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, {
   6008       mapToData: "users"
   6009     }],
   6010     testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
   6011     transfer: ["POST /repos/{owner}/{repo}/transfer"],
   6012     update: ["PATCH /repos/{owner}/{repo}"],
   6013     updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"],
   6014     updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
   6015     updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
   6016     updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"],
   6017     updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"],
   6018     updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
   6019     updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"],
   6020     updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, {
   6021       renamed: ["repos", "updateStatusCheckProtection"]
   6022     }],
   6023     updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"],
   6024     updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
   6025     updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"],
   6026     uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
   6027       baseUrl: "https://uploads.github.com"
   6028     }]
   6029   },
   6030   search: {
   6031     code: ["GET /search/code"],
   6032     commits: ["GET /search/commits"],
   6033     issuesAndPullRequests: ["GET /search/issues"],
   6034     labels: ["GET /search/labels"],
   6035     repos: ["GET /search/repositories"],
   6036     topics: ["GET /search/topics"],
   6037     users: ["GET /search/users"]
   6038   },
   6039   secretScanning: {
   6040     getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"],
   6041     listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"],
   6042     listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
   6043     listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
   6044     listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"],
   6045     updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"]
   6046   },
   6047   teams: {
   6048     addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"],
   6049     addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
   6050     addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
   6051     checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
   6052     checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
   6053     create: ["POST /orgs/{org}/teams"],
   6054     createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
   6055     createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
   6056     deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
   6057     deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
   6058     deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
   6059     getByName: ["GET /orgs/{org}/teams/{team_slug}"],
   6060     getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
   6061     getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
   6062     getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"],
   6063     list: ["GET /orgs/{org}/teams"],
   6064     listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
   6065     listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"],
   6066     listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
   6067     listForAuthenticatedUser: ["GET /user/teams"],
   6068     listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
   6069     listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"],
   6070     listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
   6071     listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
   6072     removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"],
   6073     removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"],
   6074     removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"],
   6075     updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"],
   6076     updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"],
   6077     updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
   6078   },
   6079   users: {
   6080     addEmailForAuthenticated: ["POST /user/emails", {}, {
   6081       renamed: ["users", "addEmailForAuthenticatedUser"]
   6082     }],
   6083     addEmailForAuthenticatedUser: ["POST /user/emails"],
   6084     block: ["PUT /user/blocks/{username}"],
   6085     checkBlocked: ["GET /user/blocks/{username}"],
   6086     checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
   6087     checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
   6088     createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, {
   6089       renamed: ["users", "createGpgKeyForAuthenticatedUser"]
   6090     }],
   6091     createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
   6092     createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, {
   6093       renamed: ["users", "createPublicSshKeyForAuthenticatedUser"]
   6094     }],
   6095     createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
   6096     deleteEmailForAuthenticated: ["DELETE /user/emails", {}, {
   6097       renamed: ["users", "deleteEmailForAuthenticatedUser"]
   6098     }],
   6099     deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
   6100     deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, {
   6101       renamed: ["users", "deleteGpgKeyForAuthenticatedUser"]
   6102     }],
   6103     deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
   6104     deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, {
   6105       renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"]
   6106     }],
   6107     deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
   6108     follow: ["PUT /user/following/{username}"],
   6109     getAuthenticated: ["GET /user"],
   6110     getByUsername: ["GET /users/{username}"],
   6111     getContextForUser: ["GET /users/{username}/hovercard"],
   6112     getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, {
   6113       renamed: ["users", "getGpgKeyForAuthenticatedUser"]
   6114     }],
   6115     getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
   6116     getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, {
   6117       renamed: ["users", "getPublicSshKeyForAuthenticatedUser"]
   6118     }],
   6119     getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
   6120     list: ["GET /users"],
   6121     listBlockedByAuthenticated: ["GET /user/blocks", {}, {
   6122       renamed: ["users", "listBlockedByAuthenticatedUser"]
   6123     }],
   6124     listBlockedByAuthenticatedUser: ["GET /user/blocks"],
   6125     listEmailsForAuthenticated: ["GET /user/emails", {}, {
   6126       renamed: ["users", "listEmailsForAuthenticatedUser"]
   6127     }],
   6128     listEmailsForAuthenticatedUser: ["GET /user/emails"],
   6129     listFollowedByAuthenticated: ["GET /user/following", {}, {
   6130       renamed: ["users", "listFollowedByAuthenticatedUser"]
   6131     }],
   6132     listFollowedByAuthenticatedUser: ["GET /user/following"],
   6133     listFollowersForAuthenticatedUser: ["GET /user/followers"],
   6134     listFollowersForUser: ["GET /users/{username}/followers"],
   6135     listFollowingForUser: ["GET /users/{username}/following"],
   6136     listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, {
   6137       renamed: ["users", "listGpgKeysForAuthenticatedUser"]
   6138     }],
   6139     listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
   6140     listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
   6141     listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, {
   6142       renamed: ["users", "listPublicEmailsForAuthenticatedUser"]
   6143     }],
   6144     listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
   6145     listPublicKeysForUser: ["GET /users/{username}/keys"],
   6146     listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, {
   6147       renamed: ["users", "listPublicSshKeysForAuthenticatedUser"]
   6148     }],
   6149     listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
   6150     setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, {
   6151       renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"]
   6152     }],
   6153     setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"],
   6154     unblock: ["DELETE /user/blocks/{username}"],
   6155     unfollow: ["DELETE /user/following/{username}"],
   6156     updateAuthenticated: ["PATCH /user"]
   6157   }
   6158 };
   6159 
   6160 const VERSION = "5.16.2";
   6161 
   6162 function endpointsToMethods(octokit, endpointsMap) {
   6163   const newMethods = {};
   6164 
   6165   for (const [scope, endpoints] of Object.entries(endpointsMap)) {
   6166     for (const [methodName, endpoint] of Object.entries(endpoints)) {
   6167       const [route, defaults, decorations] = endpoint;
   6168       const [method, url] = route.split(/ /);
   6169       const endpointDefaults = Object.assign({
   6170         method,
   6171         url
   6172       }, defaults);
   6173 
   6174       if (!newMethods[scope]) {
   6175         newMethods[scope] = {};
   6176       }
   6177 
   6178       const scopeMethods = newMethods[scope];
   6179 
   6180       if (decorations) {
   6181         scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);
   6182         continue;
   6183       }
   6184 
   6185       scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);
   6186     }
   6187   }
   6188 
   6189   return newMethods;
   6190 }
   6191 
   6192 function decorate(octokit, scope, methodName, defaults, decorations) {
   6193   const requestWithDefaults = octokit.request.defaults(defaults);
   6194   /* istanbul ignore next */
   6195 
   6196   function withDecorations(...args) {
   6197     // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
   6198     let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`
   6199 
   6200     if (decorations.mapToData) {
   6201       options = Object.assign({}, options, {
   6202         data: options[decorations.mapToData],
   6203         [decorations.mapToData]: undefined
   6204       });
   6205       return requestWithDefaults(options);
   6206     }
   6207 
   6208     if (decorations.renamed) {
   6209       const [newScope, newMethodName] = decorations.renamed;
   6210       octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);
   6211     }
   6212 
   6213     if (decorations.deprecated) {
   6214       octokit.log.warn(decorations.deprecated);
   6215     }
   6216 
   6217     if (decorations.renamedParameters) {
   6218       // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
   6219       const options = requestWithDefaults.endpoint.merge(...args);
   6220 
   6221       for (const [name, alias] of Object.entries(decorations.renamedParameters)) {
   6222         if (name in options) {
   6223           octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`);
   6224 
   6225           if (!(alias in options)) {
   6226             options[alias] = options[name];
   6227           }
   6228 
   6229           delete options[name];
   6230         }
   6231       }
   6232 
   6233       return requestWithDefaults(options);
   6234     } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488
   6235 
   6236 
   6237     return requestWithDefaults(...args);
   6238   }
   6239 
   6240   return Object.assign(withDecorations, requestWithDefaults);
   6241 }
   6242 
   6243 function restEndpointMethods(octokit) {
   6244   const api = endpointsToMethods(octokit, Endpoints);
   6245   return {
   6246     rest: api
   6247   };
   6248 }
   6249 restEndpointMethods.VERSION = VERSION;
   6250 function legacyRestEndpointMethods(octokit) {
   6251   const api = endpointsToMethods(octokit, Endpoints);
   6252   return _objectSpread2(_objectSpread2({}, api), {}, {
   6253     rest: api
   6254   });
   6255 }
   6256 legacyRestEndpointMethods.VERSION = VERSION;
   6257 
   6258 exports.legacyRestEndpointMethods = legacyRestEndpointMethods;
   6259 exports.restEndpointMethods = restEndpointMethods;
   6260 //# sourceMappingURL=index.js.map
   6261 
   6262 
   6263 /***/ }),
   6264 
   6265 /***/ 537:
   6266 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   6267 
   6268 
   6269 
   6270 Object.defineProperty(exports, "__esModule", ({ value: true }));
   6271 
   6272 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
   6273 
   6274 var deprecation = __nccwpck_require__(8932);
   6275 var once = _interopDefault(__nccwpck_require__(1223));
   6276 
   6277 const logOnceCode = once(deprecation => console.warn(deprecation));
   6278 const logOnceHeaders = once(deprecation => console.warn(deprecation));
   6279 /**
   6280  * Error with extra properties to help with debugging
   6281  */
   6282 
   6283 class RequestError extends Error {
   6284   constructor(message, statusCode, options) {
   6285     super(message); // Maintains proper stack trace (only available on V8)
   6286 
   6287     /* istanbul ignore next */
   6288 
   6289     if (Error.captureStackTrace) {
   6290       Error.captureStackTrace(this, this.constructor);
   6291     }
   6292 
   6293     this.name = "HttpError";
   6294     this.status = statusCode;
   6295     let headers;
   6296 
   6297     if ("headers" in options && typeof options.headers !== "undefined") {
   6298       headers = options.headers;
   6299     }
   6300 
   6301     if ("response" in options) {
   6302       this.response = options.response;
   6303       headers = options.response.headers;
   6304     } // redact request credentials without mutating original request options
   6305 
   6306 
   6307     const requestCopy = Object.assign({}, options.request);
   6308 
   6309     if (options.request.headers.authorization) {
   6310       requestCopy.headers = Object.assign({}, options.request.headers, {
   6311         authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
   6312       });
   6313     }
   6314 
   6315     requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit
   6316     // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
   6317     .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended
   6318     // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
   6319     .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
   6320     this.request = requestCopy; // deprecations
   6321 
   6322     Object.defineProperty(this, "code", {
   6323       get() {
   6324         logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
   6325         return statusCode;
   6326       }
   6327 
   6328     });
   6329     Object.defineProperty(this, "headers", {
   6330       get() {
   6331         logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."));
   6332         return headers || {};
   6333       }
   6334 
   6335     });
   6336   }
   6337 
   6338 }
   6339 
   6340 exports.RequestError = RequestError;
   6341 //# sourceMappingURL=index.js.map
   6342 
   6343 
   6344 /***/ }),
   6345 
   6346 /***/ 6234:
   6347 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
   6348 
   6349 
   6350 
   6351 Object.defineProperty(exports, "__esModule", ({ value: true }));
   6352 
   6353 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
   6354 
   6355 var endpoint = __nccwpck_require__(9440);
   6356 var universalUserAgent = __nccwpck_require__(5030);
   6357 var isPlainObject = __nccwpck_require__(3287);
   6358 var nodeFetch = _interopDefault(__nccwpck_require__(467));
   6359 var requestError = __nccwpck_require__(537);
   6360 
   6361 const VERSION = "5.6.3";
   6362 
   6363 function getBufferResponse(response) {
   6364   return response.arrayBuffer();
   6365 }
   6366 
   6367 function fetchWrapper(requestOptions) {
   6368   const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
   6369 
   6370   if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
   6371     requestOptions.body = JSON.stringify(requestOptions.body);
   6372   }
   6373 
   6374   let headers = {};
   6375   let status;
   6376   let url;
   6377   const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
   6378   return fetch(requestOptions.url, Object.assign({
   6379     method: requestOptions.method,
   6380     body: requestOptions.body,
   6381     headers: requestOptions.headers,
   6382     redirect: requestOptions.redirect
   6383   }, // `requestOptions.request.agent` type is incompatible
   6384   // see https://github.com/octokit/types.ts/pull/264
   6385   requestOptions.request)).then(async response => {
   6386     url = response.url;
   6387     status = response.status;
   6388 
   6389     for (const keyAndValue of response.headers) {
   6390       headers[keyAndValue[0]] = keyAndValue[1];
   6391     }
   6392 
   6393     if ("deprecation" in headers) {
   6394       const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
   6395       const deprecationLink = matches && matches.pop();
   6396       log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`);
   6397     }
   6398 
   6399     if (status === 204 || status === 205) {
   6400       return;
   6401     } // GitHub API returns 200 for HEAD requests
   6402 
   6403 
   6404     if (requestOptions.method === "HEAD") {
   6405       if (status < 400) {
   6406         return;
   6407       }
   6408 
   6409       throw new requestError.RequestError(response.statusText, status, {
   6410         response: {
   6411           url,
   6412           status,
   6413           headers,
   6414           data: undefined
   6415         },
   6416         request: requestOptions
   6417       });
   6418     }
   6419 
   6420     if (status === 304) {
   6421       throw new requestError.RequestError("Not modified", status, {
   6422         response: {
   6423           url,
   6424           status,
   6425           headers,
   6426           data: await getResponseData(response)
   6427         },
   6428         request: requestOptions
   6429       });
   6430     }
   6431 
   6432     if (status >= 400) {
   6433       const data = await getResponseData(response);
   6434       const error = new requestError.RequestError(toErrorMessage(data), status, {
   6435         response: {
   6436           url,
   6437           status,
   6438           headers,
   6439           data
   6440         },
   6441         request: requestOptions
   6442       });
   6443       throw error;
   6444     }
   6445 
   6446     return getResponseData(response);
   6447   }).then(data => {
   6448     return {
   6449       status,
   6450       url,
   6451       headers,
   6452       data
   6453     };
   6454   }).catch(error => {
   6455     if (error instanceof requestError.RequestError) throw error;
   6456     throw new requestError.RequestError(error.message, 500, {
   6457       request: requestOptions
   6458     });
   6459   });
   6460 }
   6461 
   6462 async function getResponseData(response) {
   6463   const contentType = response.headers.get("content-type");
   6464 
   6465   if (/application\/json/.test(contentType)) {
   6466     return response.json();
   6467   }
   6468 
   6469   if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
   6470     return response.text();
   6471   }
   6472 
   6473   return getBufferResponse(response);
   6474 }
   6475 
   6476 function toErrorMessage(data) {
   6477   if (typeof data === "string") return data; // istanbul ignore else - just in case
   6478 
   6479   if ("message" in data) {
   6480     if (Array.isArray(data.errors)) {
   6481       return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`;
   6482     }
   6483 
   6484     return data.message;
   6485   } // istanbul ignore next - just in case
   6486 
   6487 
   6488   return `Unknown error: ${JSON.stringify(data)}`;
   6489 }
   6490 
   6491 function withDefaults(oldEndpoint, newDefaults) {
   6492   const endpoint = oldEndpoint.defaults(newDefaults);
   6493 
   6494   const newApi = function (route, parameters) {
   6495     const endpointOptions = endpoint.merge(route, parameters);
   6496 
   6497     if (!endpointOptions.request || !endpointOptions.request.hook) {
   6498       return fetchWrapper(endpoint.parse(endpointOptions));
   6499     }
   6500 
   6501     const request = (route, parameters) => {
   6502       return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
   6503     };
   6504 
   6505     Object.assign(request, {
   6506       endpoint,
   6507       defaults: withDefaults.bind(null, endpoint)
   6508     });
   6509     return endpointOptions.request.hook(request, endpointOptions);
   6510   };
   6511 
   6512   return Object.assign(newApi, {
   6513     endpoint,
   6514     defaults: withDefaults.bind(null, endpoint)
   6515   });
   6516 }
   6517 
   6518 const request = withDefaults(endpoint.endpoint, {
   6519   headers: {
   6520     "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`
   6521   }
   6522 });
   6523 
   6524 exports.request = request;
   6525 //# sourceMappingURL=index.js.map
   6526 
   6527 
   6528 /***/ }),
   6529 
   6530 /***/ 3682:
   6531 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   6532 
   6533 var register = __nccwpck_require__(4670);
   6534 var addHook = __nccwpck_require__(5549);
   6535 var removeHook = __nccwpck_require__(6819);
   6536 
   6537 // bind with array of arguments: https://stackoverflow.com/a/21792913
   6538 var bind = Function.bind;
   6539 var bindable = bind.bind(bind);
   6540 
   6541 function bindApi(hook, state, name) {
   6542   var removeHookRef = bindable(removeHook, null).apply(
   6543     null,
   6544     name ? [state, name] : [state]
   6545   );
   6546   hook.api = { remove: removeHookRef };
   6547   hook.remove = removeHookRef;
   6548   ["before", "error", "after", "wrap"].forEach(function (kind) {
   6549     var args = name ? [state, kind, name] : [state, kind];
   6550     hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
   6551   });
   6552 }
   6553 
   6554 function HookSingular() {
   6555   var singularHookName = "h";
   6556   var singularHookState = {
   6557     registry: {},
   6558   };
   6559   var singularHook = register.bind(null, singularHookState, singularHookName);
   6560   bindApi(singularHook, singularHookState, singularHookName);
   6561   return singularHook;
   6562 }
   6563 
   6564 function HookCollection() {
   6565   var state = {
   6566     registry: {},
   6567   };
   6568 
   6569   var hook = register.bind(null, state);
   6570   bindApi(hook, state);
   6571 
   6572   return hook;
   6573 }
   6574 
   6575 var collectionHookDeprecationMessageDisplayed = false;
   6576 function Hook() {
   6577   if (!collectionHookDeprecationMessageDisplayed) {
   6578     console.warn(
   6579       '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
   6580     );
   6581     collectionHookDeprecationMessageDisplayed = true;
   6582   }
   6583   return HookCollection();
   6584 }
   6585 
   6586 Hook.Singular = HookSingular.bind();
   6587 Hook.Collection = HookCollection.bind();
   6588 
   6589 module.exports = Hook;
   6590 // expose constructors as a named property for TypeScript
   6591 module.exports.Hook = Hook;
   6592 module.exports.Singular = Hook.Singular;
   6593 module.exports.Collection = Hook.Collection;
   6594 
   6595 
   6596 /***/ }),
   6597 
   6598 /***/ 5549:
   6599 /***/ ((module) => {
   6600 
   6601 module.exports = addHook;
   6602 
   6603 function addHook(state, kind, name, hook) {
   6604   var orig = hook;
   6605   if (!state.registry[name]) {
   6606     state.registry[name] = [];
   6607   }
   6608 
   6609   if (kind === "before") {
   6610     hook = function (method, options) {
   6611       return Promise.resolve()
   6612         .then(orig.bind(null, options))
   6613         .then(method.bind(null, options));
   6614     };
   6615   }
   6616 
   6617   if (kind === "after") {
   6618     hook = function (method, options) {
   6619       var result;
   6620       return Promise.resolve()
   6621         .then(method.bind(null, options))
   6622         .then(function (result_) {
   6623           result = result_;
   6624           return orig(result, options);
   6625         })
   6626         .then(function () {
   6627           return result;
   6628         });
   6629     };
   6630   }
   6631 
   6632   if (kind === "error") {
   6633     hook = function (method, options) {
   6634       return Promise.resolve()
   6635         .then(method.bind(null, options))
   6636         .catch(function (error) {
   6637           return orig(error, options);
   6638         });
   6639     };
   6640   }
   6641 
   6642   state.registry[name].push({
   6643     hook: hook,
   6644     orig: orig,
   6645   });
   6646 }
   6647 
   6648 
   6649 /***/ }),
   6650 
   6651 /***/ 4670:
   6652 /***/ ((module) => {
   6653 
   6654 module.exports = register;
   6655 
   6656 function register(state, name, method, options) {
   6657   if (typeof method !== "function") {
   6658     throw new Error("method for before hook must be a function");
   6659   }
   6660 
   6661   if (!options) {
   6662     options = {};
   6663   }
   6664 
   6665   if (Array.isArray(name)) {
   6666     return name.reverse().reduce(function (callback, name) {
   6667       return register.bind(null, state, name, callback, options);
   6668     }, method)();
   6669   }
   6670 
   6671   return Promise.resolve().then(function () {
   6672     if (!state.registry[name]) {
   6673       return method(options);
   6674     }
   6675 
   6676     return state.registry[name].reduce(function (method, registered) {
   6677       return registered.hook.bind(null, method, options);
   6678     }, method)();
   6679   });
   6680 }
   6681 
   6682 
   6683 /***/ }),
   6684 
   6685 /***/ 6819:
   6686 /***/ ((module) => {
   6687 
   6688 module.exports = removeHook;
   6689 
   6690 function removeHook(state, name, method) {
   6691   if (!state.registry[name]) {
   6692     return;
   6693   }
   6694 
   6695   var index = state.registry[name]
   6696     .map(function (registered) {
   6697       return registered.orig;
   6698     })
   6699     .indexOf(method);
   6700 
   6701   if (index === -1) {
   6702     return;
   6703   }
   6704 
   6705   state.registry[name].splice(index, 1);
   6706 }
   6707 
   6708 
   6709 /***/ }),
   6710 
   6711 /***/ 2391:
   6712 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   6713 
   6714 
   6715 const {Transform, PassThrough} = __nccwpck_require__(2781);
   6716 const zlib = __nccwpck_require__(9796);
   6717 const mimicResponse = __nccwpck_require__(3877);
   6718 
   6719 module.exports = response => {
   6720 	const contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();
   6721 
   6722 	if (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {
   6723 		return response;
   6724 	}
   6725 
   6726 	// TODO: Remove this when targeting Node.js 12.
   6727 	const isBrotli = contentEncoding === 'br';
   6728 	if (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {
   6729 		response.destroy(new Error('Brotli is not supported on Node.js < 12'));
   6730 		return response;
   6731 	}
   6732 
   6733 	let isEmpty = true;
   6734 
   6735 	const checker = new Transform({
   6736 		transform(data, _encoding, callback) {
   6737 			isEmpty = false;
   6738 
   6739 			callback(null, data);
   6740 		},
   6741 
   6742 		flush(callback) {
   6743 			callback();
   6744 		}
   6745 	});
   6746 
   6747 	const finalStream = new PassThrough({
   6748 		autoDestroy: false,
   6749 		destroy(error, callback) {
   6750 			response.destroy();
   6751 
   6752 			callback(error);
   6753 		}
   6754 	});
   6755 
   6756 	const decompressStream = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();
   6757 
   6758 	decompressStream.once('error', error => {
   6759 		if (isEmpty && !response.readable) {
   6760 			finalStream.end();
   6761 			return;
   6762 		}
   6763 
   6764 		finalStream.destroy(error);
   6765 	});
   6766 
   6767 	mimicResponse(response, finalStream);
   6768 	response.pipe(checker).pipe(decompressStream).pipe(finalStream);
   6769 
   6770 	return finalStream;
   6771 };
   6772 
   6773 
   6774 /***/ }),
   6775 
   6776 /***/ 3877:
   6777 /***/ ((module) => {
   6778 
   6779 
   6780 
   6781 // We define these manually to ensure they're always copied
   6782 // even if they would move up the prototype chain
   6783 // https://nodejs.org/api/http.html#http_class_http_incomingmessage
   6784 const knownProperties = [
   6785 	'aborted',
   6786 	'complete',
   6787 	'headers',
   6788 	'httpVersion',
   6789 	'httpVersionMinor',
   6790 	'httpVersionMajor',
   6791 	'method',
   6792 	'rawHeaders',
   6793 	'rawTrailers',
   6794 	'setTimeout',
   6795 	'socket',
   6796 	'statusCode',
   6797 	'statusMessage',
   6798 	'trailers',
   6799 	'url'
   6800 ];
   6801 
   6802 module.exports = (fromStream, toStream) => {
   6803 	if (toStream._readableState.autoDestroy) {
   6804 		throw new Error('The second stream must have the `autoDestroy` option set to `false`');
   6805 	}
   6806 
   6807 	const fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));
   6808 
   6809 	const properties = {};
   6810 
   6811 	for (const property of fromProperties) {
   6812 		// Don't overwrite existing properties.
   6813 		if (property in toStream) {
   6814 			continue;
   6815 		}
   6816 
   6817 		properties[property] = {
   6818 			get() {
   6819 				const value = fromStream[property];
   6820 				const isFunction = typeof value === 'function';
   6821 
   6822 				return isFunction ? value.bind(fromStream) : value;
   6823 			},
   6824 			set(value) {
   6825 				fromStream[property] = value;
   6826 			},
   6827 			enumerable: true,
   6828 			configurable: false
   6829 		};
   6830 	}
   6831 
   6832 	Object.defineProperties(toStream, properties);
   6833 
   6834 	fromStream.once('aborted', () => {
   6835 		toStream.destroy();
   6836 
   6837 		toStream.emit('aborted');
   6838 	});
   6839 
   6840 	fromStream.once('close', () => {
   6841 		if (fromStream.complete) {
   6842 			if (toStream.readable) {
   6843 				toStream.once('end', () => {
   6844 					toStream.emit('close');
   6845 				});
   6846 			} else {
   6847 				toStream.emit('close');
   6848 			}
   6849 		} else {
   6850 			toStream.emit('close');
   6851 		}
   6852 	});
   6853 
   6854 	return toStream;
   6855 };
   6856 
   6857 
   6858 /***/ }),
   6859 
   6860 /***/ 6214:
   6861 /***/ ((module, exports) => {
   6862 
   6863 
   6864 Object.defineProperty(exports, "__esModule", ({ value: true }));
   6865 function isTLSSocket(socket) {
   6866     return socket.encrypted;
   6867 }
   6868 const deferToConnect = (socket, fn) => {
   6869     let listeners;
   6870     if (typeof fn === 'function') {
   6871         const connect = fn;
   6872         listeners = { connect };
   6873     }
   6874     else {
   6875         listeners = fn;
   6876     }
   6877     const hasConnectListener = typeof listeners.connect === 'function';
   6878     const hasSecureConnectListener = typeof listeners.secureConnect === 'function';
   6879     const hasCloseListener = typeof listeners.close === 'function';
   6880     const onConnect = () => {
   6881         if (hasConnectListener) {
   6882             listeners.connect();
   6883         }
   6884         if (isTLSSocket(socket) && hasSecureConnectListener) {
   6885             if (socket.authorized) {
   6886                 listeners.secureConnect();
   6887             }
   6888             else if (!socket.authorizationError) {
   6889                 socket.once('secureConnect', listeners.secureConnect);
   6890             }
   6891         }
   6892         if (hasCloseListener) {
   6893             socket.once('close', listeners.close);
   6894         }
   6895     };
   6896     if (socket.writable && !socket.connecting) {
   6897         onConnect();
   6898     }
   6899     else if (socket.connecting) {
   6900         socket.once('connect', onConnect);
   6901     }
   6902     else if (socket.destroyed && hasCloseListener) {
   6903         listeners.close(socket._hadError);
   6904     }
   6905 };
   6906 exports["default"] = deferToConnect;
   6907 // For CommonJS default export support
   6908 module.exports = deferToConnect;
   6909 module.exports["default"] = deferToConnect;
   6910 
   6911 
   6912 /***/ }),
   6913 
   6914 /***/ 8932:
   6915 /***/ ((__unused_webpack_module, exports) => {
   6916 
   6917 
   6918 
   6919 Object.defineProperty(exports, "__esModule", ({ value: true }));
   6920 
   6921 class Deprecation extends Error {
   6922   constructor(message) {
   6923     super(message); // Maintains proper stack trace (only available on V8)
   6924 
   6925     /* istanbul ignore next */
   6926 
   6927     if (Error.captureStackTrace) {
   6928       Error.captureStackTrace(this, this.constructor);
   6929     }
   6930 
   6931     this.name = 'Deprecation';
   6932   }
   6933 
   6934 }
   6935 
   6936 exports.Deprecation = Deprecation;
   6937 
   6938 
   6939 /***/ }),
   6940 
   6941 /***/ 1585:
   6942 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   6943 
   6944 
   6945 const {PassThrough: PassThroughStream} = __nccwpck_require__(2781);
   6946 
   6947 module.exports = options => {
   6948 	options = {...options};
   6949 
   6950 	const {array} = options;
   6951 	let {encoding} = options;
   6952 	const isBuffer = encoding === 'buffer';
   6953 	let objectMode = false;
   6954 
   6955 	if (array) {
   6956 		objectMode = !(encoding || isBuffer);
   6957 	} else {
   6958 		encoding = encoding || 'utf8';
   6959 	}
   6960 
   6961 	if (isBuffer) {
   6962 		encoding = null;
   6963 	}
   6964 
   6965 	const stream = new PassThroughStream({objectMode});
   6966 
   6967 	if (encoding) {
   6968 		stream.setEncoding(encoding);
   6969 	}
   6970 
   6971 	let length = 0;
   6972 	const chunks = [];
   6973 
   6974 	stream.on('data', chunk => {
   6975 		chunks.push(chunk);
   6976 
   6977 		if (objectMode) {
   6978 			length = chunks.length;
   6979 		} else {
   6980 			length += chunk.length;
   6981 		}
   6982 	});
   6983 
   6984 	stream.getBufferedValue = () => {
   6985 		if (array) {
   6986 			return chunks;
   6987 		}
   6988 
   6989 		return isBuffer ? Buffer.concat(chunks, length) : chunks.join('');
   6990 	};
   6991 
   6992 	stream.getBufferedLength = () => length;
   6993 
   6994 	return stream;
   6995 };
   6996 
   6997 
   6998 /***/ }),
   6999 
   7000 /***/ 1766:
   7001 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   7002 
   7003 
   7004 const {constants: BufferConstants} = __nccwpck_require__(4300);
   7005 const stream = __nccwpck_require__(2781);
   7006 const {promisify} = __nccwpck_require__(3837);
   7007 const bufferStream = __nccwpck_require__(1585);
   7008 
   7009 const streamPipelinePromisified = promisify(stream.pipeline);
   7010 
   7011 class MaxBufferError extends Error {
   7012 	constructor() {
   7013 		super('maxBuffer exceeded');
   7014 		this.name = 'MaxBufferError';
   7015 	}
   7016 }
   7017 
   7018 async function getStream(inputStream, options) {
   7019 	if (!inputStream) {
   7020 		throw new Error('Expected a stream');
   7021 	}
   7022 
   7023 	options = {
   7024 		maxBuffer: Infinity,
   7025 		...options
   7026 	};
   7027 
   7028 	const {maxBuffer} = options;
   7029 	const stream = bufferStream(options);
   7030 
   7031 	await new Promise((resolve, reject) => {
   7032 		const rejectPromise = error => {
   7033 			// Don't retrieve an oversized buffer.
   7034 			if (error && stream.getBufferedLength() <= BufferConstants.MAX_LENGTH) {
   7035 				error.bufferedData = stream.getBufferedValue();
   7036 			}
   7037 
   7038 			reject(error);
   7039 		};
   7040 
   7041 		(async () => {
   7042 			try {
   7043 				await streamPipelinePromisified(inputStream, stream);
   7044 				resolve();
   7045 			} catch (error) {
   7046 				rejectPromise(error);
   7047 			}
   7048 		})();
   7049 
   7050 		stream.on('data', () => {
   7051 			if (stream.getBufferedLength() > maxBuffer) {
   7052 				rejectPromise(new MaxBufferError());
   7053 			}
   7054 		});
   7055 	});
   7056 
   7057 	return stream.getBufferedValue();
   7058 }
   7059 
   7060 module.exports = getStream;
   7061 module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'});
   7062 module.exports.array = (stream, options) => getStream(stream, {...options, array: true});
   7063 module.exports.MaxBufferError = MaxBufferError;
   7064 
   7065 
   7066 /***/ }),
   7067 
   7068 /***/ 1002:
   7069 /***/ ((module) => {
   7070 
   7071 
   7072 // rfc7231 6.1
   7073 const statusCodeCacheableByDefault = new Set([
   7074     200,
   7075     203,
   7076     204,
   7077     206,
   7078     300,
   7079     301,
   7080     308,
   7081     404,
   7082     405,
   7083     410,
   7084     414,
   7085     501,
   7086 ]);
   7087 
   7088 // This implementation does not understand partial responses (206)
   7089 const understoodStatuses = new Set([
   7090     200,
   7091     203,
   7092     204,
   7093     300,
   7094     301,
   7095     302,
   7096     303,
   7097     307,
   7098     308,
   7099     404,
   7100     405,
   7101     410,
   7102     414,
   7103     501,
   7104 ]);
   7105 
   7106 const errorStatusCodes = new Set([
   7107     500,
   7108     502,
   7109     503, 
   7110     504,
   7111 ]);
   7112 
   7113 const hopByHopHeaders = {
   7114     date: true, // included, because we add Age update Date
   7115     connection: true,
   7116     'keep-alive': true,
   7117     'proxy-authenticate': true,
   7118     'proxy-authorization': true,
   7119     te: true,
   7120     trailer: true,
   7121     'transfer-encoding': true,
   7122     upgrade: true,
   7123 };
   7124 
   7125 const excludedFromRevalidationUpdate = {
   7126     // Since the old body is reused, it doesn't make sense to change properties of the body
   7127     'content-length': true,
   7128     'content-encoding': true,
   7129     'transfer-encoding': true,
   7130     'content-range': true,
   7131 };
   7132 
   7133 function toNumberOrZero(s) {
   7134     const n = parseInt(s, 10);
   7135     return isFinite(n) ? n : 0;
   7136 }
   7137 
   7138 // RFC 5861
   7139 function isErrorResponse(response) {
   7140     // consider undefined response as faulty
   7141     if(!response) {
   7142         return true
   7143     }
   7144     return errorStatusCodes.has(response.status);
   7145 }
   7146 
   7147 function parseCacheControl(header) {
   7148     const cc = {};
   7149     if (!header) return cc;
   7150 
   7151     // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives),
   7152     // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale
   7153     const parts = header.trim().split(/,/);
   7154     for (const part of parts) {
   7155         const [k, v] = part.split(/=/, 2);
   7156         cc[k.trim()] = v === undefined ? true : v.trim().replace(/^"|"$/g, '');
   7157     }
   7158 
   7159     return cc;
   7160 }
   7161 
   7162 function formatCacheControl(cc) {
   7163     let parts = [];
   7164     for (const k in cc) {
   7165         const v = cc[k];
   7166         parts.push(v === true ? k : k + '=' + v);
   7167     }
   7168     if (!parts.length) {
   7169         return undefined;
   7170     }
   7171     return parts.join(', ');
   7172 }
   7173 
   7174 module.exports = class CachePolicy {
   7175     constructor(
   7176         req,
   7177         res,
   7178         {
   7179             shared,
   7180             cacheHeuristic,
   7181             immutableMinTimeToLive,
   7182             ignoreCargoCult,
   7183             _fromObject,
   7184         } = {}
   7185     ) {
   7186         if (_fromObject) {
   7187             this._fromObject(_fromObject);
   7188             return;
   7189         }
   7190 
   7191         if (!res || !res.headers) {
   7192             throw Error('Response headers missing');
   7193         }
   7194         this._assertRequestHasHeaders(req);
   7195 
   7196         this._responseTime = this.now();
   7197         this._isShared = shared !== false;
   7198         this._cacheHeuristic =
   7199             undefined !== cacheHeuristic ? cacheHeuristic : 0.1; // 10% matches IE
   7200         this._immutableMinTtl =
   7201             undefined !== immutableMinTimeToLive
   7202                 ? immutableMinTimeToLive
   7203                 : 24 * 3600 * 1000;
   7204 
   7205         this._status = 'status' in res ? res.status : 200;
   7206         this._resHeaders = res.headers;
   7207         this._rescc = parseCacheControl(res.headers['cache-control']);
   7208         this._method = 'method' in req ? req.method : 'GET';
   7209         this._url = req.url;
   7210         this._host = req.headers.host;
   7211         this._noAuthorization = !req.headers.authorization;
   7212         this._reqHeaders = res.headers.vary ? req.headers : null; // Don't keep all request headers if they won't be used
   7213         this._reqcc = parseCacheControl(req.headers['cache-control']);
   7214 
   7215         // Assume that if someone uses legacy, non-standard uncecessary options they don't understand caching,
   7216         // so there's no point stricly adhering to the blindly copy&pasted directives.
   7217         if (
   7218             ignoreCargoCult &&
   7219             'pre-check' in this._rescc &&
   7220             'post-check' in this._rescc
   7221         ) {
   7222             delete this._rescc['pre-check'];
   7223             delete this._rescc['post-check'];
   7224             delete this._rescc['no-cache'];
   7225             delete this._rescc['no-store'];
   7226             delete this._rescc['must-revalidate'];
   7227             this._resHeaders = Object.assign({}, this._resHeaders, {
   7228                 'cache-control': formatCacheControl(this._rescc),
   7229             });
   7230             delete this._resHeaders.expires;
   7231             delete this._resHeaders.pragma;
   7232         }
   7233 
   7234         // When the Cache-Control header field is not present in a request, caches MUST consider the no-cache request pragma-directive
   7235         // as having the same effect as if "Cache-Control: no-cache" were present (see Section 5.2.1).
   7236         if (
   7237             res.headers['cache-control'] == null &&
   7238             /no-cache/.test(res.headers.pragma)
   7239         ) {
   7240             this._rescc['no-cache'] = true;
   7241         }
   7242     }
   7243 
   7244     now() {
   7245         return Date.now();
   7246     }
   7247 
   7248     storable() {
   7249         // The "no-store" request directive indicates that a cache MUST NOT store any part of either this request or any response to it.
   7250         return !!(
   7251             !this._reqcc['no-store'] &&
   7252             // A cache MUST NOT store a response to any request, unless:
   7253             // The request method is understood by the cache and defined as being cacheable, and
   7254             ('GET' === this._method ||
   7255                 'HEAD' === this._method ||
   7256                 ('POST' === this._method && this._hasExplicitExpiration())) &&
   7257             // the response status code is understood by the cache, and
   7258             understoodStatuses.has(this._status) &&
   7259             // the "no-store" cache directive does not appear in request or response header fields, and
   7260             !this._rescc['no-store'] &&
   7261             // the "private" response directive does not appear in the response, if the cache is shared, and
   7262             (!this._isShared || !this._rescc.private) &&
   7263             // the Authorization header field does not appear in the request, if the cache is shared,
   7264             (!this._isShared ||
   7265                 this._noAuthorization ||
   7266                 this._allowsStoringAuthenticated()) &&
   7267             // the response either:
   7268             // contains an Expires header field, or
   7269             (this._resHeaders.expires ||
   7270                 // contains a max-age response directive, or
   7271                 // contains a s-maxage response directive and the cache is shared, or
   7272                 // contains a public response directive.
   7273                 this._rescc['max-age'] ||
   7274                 (this._isShared && this._rescc['s-maxage']) ||
   7275                 this._rescc.public ||
   7276                 // has a status code that is defined as cacheable by default
   7277                 statusCodeCacheableByDefault.has(this._status))
   7278         );
   7279     }
   7280 
   7281     _hasExplicitExpiration() {
   7282         // 4.2.1 Calculating Freshness Lifetime
   7283         return (
   7284             (this._isShared && this._rescc['s-maxage']) ||
   7285             this._rescc['max-age'] ||
   7286             this._resHeaders.expires
   7287         );
   7288     }
   7289 
   7290     _assertRequestHasHeaders(req) {
   7291         if (!req || !req.headers) {
   7292             throw Error('Request headers missing');
   7293         }
   7294     }
   7295 
   7296     satisfiesWithoutRevalidation(req) {
   7297         this._assertRequestHasHeaders(req);
   7298 
   7299         // When presented with a request, a cache MUST NOT reuse a stored response, unless:
   7300         // the presented request does not contain the no-cache pragma (Section 5.4), nor the no-cache cache directive,
   7301         // unless the stored response is successfully validated (Section 4.3), and
   7302         const requestCC = parseCacheControl(req.headers['cache-control']);
   7303         if (requestCC['no-cache'] || /no-cache/.test(req.headers.pragma)) {
   7304             return false;
   7305         }
   7306 
   7307         if (requestCC['max-age'] && this.age() > requestCC['max-age']) {
   7308             return false;
   7309         }
   7310 
   7311         if (
   7312             requestCC['min-fresh'] &&
   7313             this.timeToLive() < 1000 * requestCC['min-fresh']
   7314         ) {
   7315             return false;
   7316         }
   7317 
   7318         // the stored response is either:
   7319         // fresh, or allowed to be served stale
   7320         if (this.stale()) {
   7321             const allowsStale =
   7322                 requestCC['max-stale'] &&
   7323                 !this._rescc['must-revalidate'] &&
   7324                 (true === requestCC['max-stale'] ||
   7325                     requestCC['max-stale'] > this.age() - this.maxAge());
   7326             if (!allowsStale) {
   7327                 return false;
   7328             }
   7329         }
   7330 
   7331         return this._requestMatches(req, false);
   7332     }
   7333 
   7334     _requestMatches(req, allowHeadMethod) {
   7335         // The presented effective request URI and that of the stored response match, and
   7336         return (
   7337             (!this._url || this._url === req.url) &&
   7338             this._host === req.headers.host &&
   7339             // the request method associated with the stored response allows it to be used for the presented request, and
   7340             (!req.method ||
   7341                 this._method === req.method ||
   7342                 (allowHeadMethod && 'HEAD' === req.method)) &&
   7343             // selecting header fields nominated by the stored response (if any) match those presented, and
   7344             this._varyMatches(req)
   7345         );
   7346     }
   7347 
   7348     _allowsStoringAuthenticated() {
   7349         //  following Cache-Control response directives (Section 5.2.2) have such an effect: must-revalidate, public, and s-maxage.
   7350         return (
   7351             this._rescc['must-revalidate'] ||
   7352             this._rescc.public ||
   7353             this._rescc['s-maxage']
   7354         );
   7355     }
   7356 
   7357     _varyMatches(req) {
   7358         if (!this._resHeaders.vary) {
   7359             return true;
   7360         }
   7361 
   7362         // A Vary header field-value of "*" always fails to match
   7363         if (this._resHeaders.vary === '*') {
   7364             return false;
   7365         }
   7366 
   7367         const fields = this._resHeaders.vary
   7368             .trim()
   7369             .toLowerCase()
   7370             .split(/\s*,\s*/);
   7371         for (const name of fields) {
   7372             if (req.headers[name] !== this._reqHeaders[name]) return false;
   7373         }
   7374         return true;
   7375     }
   7376 
   7377     _copyWithoutHopByHopHeaders(inHeaders) {
   7378         const headers = {};
   7379         for (const name in inHeaders) {
   7380             if (hopByHopHeaders[name]) continue;
   7381             headers[name] = inHeaders[name];
   7382         }
   7383         // 9.1.  Connection
   7384         if (inHeaders.connection) {
   7385             const tokens = inHeaders.connection.trim().split(/\s*,\s*/);
   7386             for (const name of tokens) {
   7387                 delete headers[name];
   7388             }
   7389         }
   7390         if (headers.warning) {
   7391             const warnings = headers.warning.split(/,/).filter(warning => {
   7392                 return !/^\s*1[0-9][0-9]/.test(warning);
   7393             });
   7394             if (!warnings.length) {
   7395                 delete headers.warning;
   7396             } else {
   7397                 headers.warning = warnings.join(',').trim();
   7398             }
   7399         }
   7400         return headers;
   7401     }
   7402 
   7403     responseHeaders() {
   7404         const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);
   7405         const age = this.age();
   7406 
   7407         // A cache SHOULD generate 113 warning if it heuristically chose a freshness
   7408         // lifetime greater than 24 hours and the response's age is greater than 24 hours.
   7409         if (
   7410             age > 3600 * 24 &&
   7411             !this._hasExplicitExpiration() &&
   7412             this.maxAge() > 3600 * 24
   7413         ) {
   7414             headers.warning =
   7415                 (headers.warning ? `${headers.warning}, ` : '') +
   7416                 '113 - "rfc7234 5.5.4"';
   7417         }
   7418         headers.age = `${Math.round(age)}`;
   7419         headers.date = new Date(this.now()).toUTCString();
   7420         return headers;
   7421     }
   7422 
   7423     /**
   7424      * Value of the Date response header or current time if Date was invalid
   7425      * @return timestamp
   7426      */
   7427     date() {
   7428         const serverDate = Date.parse(this._resHeaders.date);
   7429         if (isFinite(serverDate)) {
   7430             return serverDate;
   7431         }
   7432         return this._responseTime;
   7433     }
   7434 
   7435     /**
   7436      * Value of the Age header, in seconds, updated for the current time.
   7437      * May be fractional.
   7438      *
   7439      * @return Number
   7440      */
   7441     age() {
   7442         let age = this._ageValue();
   7443 
   7444         const residentTime = (this.now() - this._responseTime) / 1000;
   7445         return age + residentTime;
   7446     }
   7447 
   7448     _ageValue() {
   7449         return toNumberOrZero(this._resHeaders.age);
   7450     }
   7451 
   7452     /**
   7453      * Value of applicable max-age (or heuristic equivalent) in seconds. This counts since response's `Date`.
   7454      *
   7455      * For an up-to-date value, see `timeToLive()`.
   7456      *
   7457      * @return Number
   7458      */
   7459     maxAge() {
   7460         if (!this.storable() || this._rescc['no-cache']) {
   7461             return 0;
   7462         }
   7463 
   7464         // Shared responses with cookies are cacheable according to the RFC, but IMHO it'd be unwise to do so by default
   7465         // so this implementation requires explicit opt-in via public header
   7466         if (
   7467             this._isShared &&
   7468             (this._resHeaders['set-cookie'] &&
   7469                 !this._rescc.public &&
   7470                 !this._rescc.immutable)
   7471         ) {
   7472             return 0;
   7473         }
   7474 
   7475         if (this._resHeaders.vary === '*') {
   7476             return 0;
   7477         }
   7478 
   7479         if (this._isShared) {
   7480             if (this._rescc['proxy-revalidate']) {
   7481                 return 0;
   7482             }
   7483             // if a response includes the s-maxage directive, a shared cache recipient MUST ignore the Expires field.
   7484             if (this._rescc['s-maxage']) {
   7485                 return toNumberOrZero(this._rescc['s-maxage']);
   7486             }
   7487         }
   7488 
   7489         // If a response includes a Cache-Control field with the max-age directive, a recipient MUST ignore the Expires field.
   7490         if (this._rescc['max-age']) {
   7491             return toNumberOrZero(this._rescc['max-age']);
   7492         }
   7493 
   7494         const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;
   7495 
   7496         const serverDate = this.date();
   7497         if (this._resHeaders.expires) {
   7498             const expires = Date.parse(this._resHeaders.expires);
   7499             // A cache recipient MUST interpret invalid date formats, especially the value "0", as representing a time in the past (i.e., "already expired").
   7500             if (Number.isNaN(expires) || expires < serverDate) {
   7501                 return 0;
   7502             }
   7503             return Math.max(defaultMinTtl, (expires - serverDate) / 1000);
   7504         }
   7505 
   7506         if (this._resHeaders['last-modified']) {
   7507             const lastModified = Date.parse(this._resHeaders['last-modified']);
   7508             if (isFinite(lastModified) && serverDate > lastModified) {
   7509                 return Math.max(
   7510                     defaultMinTtl,
   7511                     ((serverDate - lastModified) / 1000) * this._cacheHeuristic
   7512                 );
   7513             }
   7514         }
   7515 
   7516         return defaultMinTtl;
   7517     }
   7518 
   7519     timeToLive() {
   7520         const age = this.maxAge() - this.age();
   7521         const staleIfErrorAge = age + toNumberOrZero(this._rescc['stale-if-error']);
   7522         const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc['stale-while-revalidate']);
   7523         return Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1000;
   7524     }
   7525 
   7526     stale() {
   7527         return this.maxAge() <= this.age();
   7528     }
   7529 
   7530     _useStaleIfError() {
   7531         return this.maxAge() + toNumberOrZero(this._rescc['stale-if-error']) > this.age();
   7532     }
   7533 
   7534     useStaleWhileRevalidate() {
   7535         return this.maxAge() + toNumberOrZero(this._rescc['stale-while-revalidate']) > this.age();
   7536     }
   7537 
   7538     static fromObject(obj) {
   7539         return new this(undefined, undefined, { _fromObject: obj });
   7540     }
   7541 
   7542     _fromObject(obj) {
   7543         if (this._responseTime) throw Error('Reinitialized');
   7544         if (!obj || obj.v !== 1) throw Error('Invalid serialization');
   7545 
   7546         this._responseTime = obj.t;
   7547         this._isShared = obj.sh;
   7548         this._cacheHeuristic = obj.ch;
   7549         this._immutableMinTtl =
   7550             obj.imm !== undefined ? obj.imm : 24 * 3600 * 1000;
   7551         this._status = obj.st;
   7552         this._resHeaders = obj.resh;
   7553         this._rescc = obj.rescc;
   7554         this._method = obj.m;
   7555         this._url = obj.u;
   7556         this._host = obj.h;
   7557         this._noAuthorization = obj.a;
   7558         this._reqHeaders = obj.reqh;
   7559         this._reqcc = obj.reqcc;
   7560     }
   7561 
   7562     toObject() {
   7563         return {
   7564             v: 1,
   7565             t: this._responseTime,
   7566             sh: this._isShared,
   7567             ch: this._cacheHeuristic,
   7568             imm: this._immutableMinTtl,
   7569             st: this._status,
   7570             resh: this._resHeaders,
   7571             rescc: this._rescc,
   7572             m: this._method,
   7573             u: this._url,
   7574             h: this._host,
   7575             a: this._noAuthorization,
   7576             reqh: this._reqHeaders,
   7577             reqcc: this._reqcc,
   7578         };
   7579     }
   7580 
   7581     /**
   7582      * Headers for sending to the origin server to revalidate stale response.
   7583      * Allows server to return 304 to allow reuse of the previous response.
   7584      *
   7585      * Hop by hop headers are always stripped.
   7586      * Revalidation headers may be added or removed, depending on request.
   7587      */
   7588     revalidationHeaders(incomingReq) {
   7589         this._assertRequestHasHeaders(incomingReq);
   7590         const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);
   7591 
   7592         // This implementation does not understand range requests
   7593         delete headers['if-range'];
   7594 
   7595         if (!this._requestMatches(incomingReq, true) || !this.storable()) {
   7596             // revalidation allowed via HEAD
   7597             // not for the same resource, or wasn't allowed to be cached anyway
   7598             delete headers['if-none-match'];
   7599             delete headers['if-modified-since'];
   7600             return headers;
   7601         }
   7602 
   7603         /* MUST send that entity-tag in any cache validation request (using If-Match or If-None-Match) if an entity-tag has been provided by the origin server. */
   7604         if (this._resHeaders.etag) {
   7605             headers['if-none-match'] = headers['if-none-match']
   7606                 ? `${headers['if-none-match']}, ${this._resHeaders.etag}`
   7607                 : this._resHeaders.etag;
   7608         }
   7609 
   7610         // Clients MAY issue simple (non-subrange) GET requests with either weak validators or strong validators. Clients MUST NOT use weak validators in other forms of request.
   7611         const forbidsWeakValidators =
   7612             headers['accept-ranges'] ||
   7613             headers['if-match'] ||
   7614             headers['if-unmodified-since'] ||
   7615             (this._method && this._method != 'GET');
   7616 
   7617         /* SHOULD send the Last-Modified value in non-subrange cache validation requests (using If-Modified-Since) if only a Last-Modified value has been provided by the origin server.
   7618         Note: This implementation does not understand partial responses (206) */
   7619         if (forbidsWeakValidators) {
   7620             delete headers['if-modified-since'];
   7621 
   7622             if (headers['if-none-match']) {
   7623                 const etags = headers['if-none-match']
   7624                     .split(/,/)
   7625                     .filter(etag => {
   7626                         return !/^\s*W\//.test(etag);
   7627                     });
   7628                 if (!etags.length) {
   7629                     delete headers['if-none-match'];
   7630                 } else {
   7631                     headers['if-none-match'] = etags.join(',').trim();
   7632                 }
   7633             }
   7634         } else if (
   7635             this._resHeaders['last-modified'] &&
   7636             !headers['if-modified-since']
   7637         ) {
   7638             headers['if-modified-since'] = this._resHeaders['last-modified'];
   7639         }
   7640 
   7641         return headers;
   7642     }
   7643 
   7644     /**
   7645      * Creates new CachePolicy with information combined from the previews response,
   7646      * and the new revalidation response.
   7647      *
   7648      * Returns {policy, modified} where modified is a boolean indicating
   7649      * whether the response body has been modified, and old cached body can't be used.
   7650      *
   7651      * @return {Object} {policy: CachePolicy, modified: Boolean}
   7652      */
   7653     revalidatedPolicy(request, response) {
   7654         this._assertRequestHasHeaders(request);
   7655         if(this._useStaleIfError() && isErrorResponse(response)) {  // I consider the revalidation request unsuccessful
   7656           return {
   7657             modified: false,
   7658             matches: false,
   7659             policy: this,
   7660           };
   7661         }
   7662         if (!response || !response.headers) {
   7663             throw Error('Response headers missing');
   7664         }
   7665 
   7666         // These aren't going to be supported exactly, since one CachePolicy object
   7667         // doesn't know about all the other cached objects.
   7668         let matches = false;
   7669         if (response.status !== undefined && response.status != 304) {
   7670             matches = false;
   7671         } else if (
   7672             response.headers.etag &&
   7673             !/^\s*W\//.test(response.headers.etag)
   7674         ) {
   7675             // "All of the stored responses with the same strong validator are selected.
   7676             // If none of the stored responses contain the same strong validator,
   7677             // then the cache MUST NOT use the new response to update any stored responses."
   7678             matches =
   7679                 this._resHeaders.etag &&
   7680                 this._resHeaders.etag.replace(/^\s*W\//, '') ===
   7681                     response.headers.etag;
   7682         } else if (this._resHeaders.etag && response.headers.etag) {
   7683             // "If the new response contains a weak validator and that validator corresponds
   7684             // to one of the cache's stored responses,
   7685             // then the most recent of those matching stored responses is selected for update."
   7686             matches =
   7687                 this._resHeaders.etag.replace(/^\s*W\//, '') ===
   7688                 response.headers.etag.replace(/^\s*W\//, '');
   7689         } else if (this._resHeaders['last-modified']) {
   7690             matches =
   7691                 this._resHeaders['last-modified'] ===
   7692                 response.headers['last-modified'];
   7693         } else {
   7694             // If the new response does not include any form of validator (such as in the case where
   7695             // a client generates an If-Modified-Since request from a source other than the Last-Modified
   7696             // response header field), and there is only one stored response, and that stored response also
   7697             // lacks a validator, then that stored response is selected for update.
   7698             if (
   7699                 !this._resHeaders.etag &&
   7700                 !this._resHeaders['last-modified'] &&
   7701                 !response.headers.etag &&
   7702                 !response.headers['last-modified']
   7703             ) {
   7704                 matches = true;
   7705             }
   7706         }
   7707 
   7708         if (!matches) {
   7709             return {
   7710                 policy: new this.constructor(request, response),
   7711                 // Client receiving 304 without body, even if it's invalid/mismatched has no option
   7712                 // but to reuse a cached body. We don't have a good way to tell clients to do
   7713                 // error recovery in such case.
   7714                 modified: response.status != 304,
   7715                 matches: false,
   7716             };
   7717         }
   7718 
   7719         // use other header fields provided in the 304 (Not Modified) response to replace all instances
   7720         // of the corresponding header fields in the stored response.
   7721         const headers = {};
   7722         for (const k in this._resHeaders) {
   7723             headers[k] =
   7724                 k in response.headers && !excludedFromRevalidationUpdate[k]
   7725                     ? response.headers[k]
   7726                     : this._resHeaders[k];
   7727         }
   7728 
   7729         const newResponse = Object.assign({}, response, {
   7730             status: this._status,
   7731             method: this._method,
   7732             headers,
   7733         });
   7734         return {
   7735             policy: new this.constructor(request, newResponse, {
   7736                 shared: this._isShared,
   7737                 cacheHeuristic: this._cacheHeuristic,
   7738                 immutableMinTimeToLive: this._immutableMinTtl,
   7739             }),
   7740             modified: false,
   7741             matches: true,
   7742         };
   7743     }
   7744 };
   7745 
   7746 
   7747 /***/ }),
   7748 
   7749 /***/ 9898:
   7750 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   7751 
   7752 
   7753 // See https://github.com/facebook/jest/issues/2549
   7754 // eslint-disable-next-line node/prefer-global/url
   7755 const {URL} = __nccwpck_require__(7310);
   7756 const EventEmitter = __nccwpck_require__(2361);
   7757 const tls = __nccwpck_require__(4404);
   7758 const http2 = __nccwpck_require__(5158);
   7759 const QuickLRU = __nccwpck_require__(9273);
   7760 const delayAsyncDestroy = __nccwpck_require__(9237);
   7761 
   7762 const kCurrentStreamCount = Symbol('currentStreamCount');
   7763 const kRequest = Symbol('request');
   7764 const kOriginSet = Symbol('cachedOriginSet');
   7765 const kGracefullyClosing = Symbol('gracefullyClosing');
   7766 const kLength = Symbol('length');
   7767 
   7768 const nameKeys = [
   7769 	// Not an Agent option actually
   7770 	'createConnection',
   7771 
   7772 	// `http2.connect()` options
   7773 	'maxDeflateDynamicTableSize',
   7774 	'maxSettings',
   7775 	'maxSessionMemory',
   7776 	'maxHeaderListPairs',
   7777 	'maxOutstandingPings',
   7778 	'maxReservedRemoteStreams',
   7779 	'maxSendHeaderBlockLength',
   7780 	'paddingStrategy',
   7781 	'peerMaxConcurrentStreams',
   7782 	'settings',
   7783 
   7784 	// `tls.connect()` source options
   7785 	'family',
   7786 	'localAddress',
   7787 	'rejectUnauthorized',
   7788 
   7789 	// `tls.connect()` secure context options
   7790 	'pskCallback',
   7791 	'minDHSize',
   7792 
   7793 	// `tls.connect()` destination options
   7794 	// - `servername` is automatically validated, skip it
   7795 	// - `host` and `port` just describe the destination server,
   7796 	'path',
   7797 	'socket',
   7798 
   7799 	// `tls.createSecureContext()` options
   7800 	'ca',
   7801 	'cert',
   7802 	'sigalgs',
   7803 	'ciphers',
   7804 	'clientCertEngine',
   7805 	'crl',
   7806 	'dhparam',
   7807 	'ecdhCurve',
   7808 	'honorCipherOrder',
   7809 	'key',
   7810 	'privateKeyEngine',
   7811 	'privateKeyIdentifier',
   7812 	'maxVersion',
   7813 	'minVersion',
   7814 	'pfx',
   7815 	'secureOptions',
   7816 	'secureProtocol',
   7817 	'sessionIdContext',
   7818 	'ticketKeys'
   7819 ];
   7820 
   7821 const getSortedIndex = (array, value, compare) => {
   7822 	let low = 0;
   7823 	let high = array.length;
   7824 
   7825 	while (low < high) {
   7826 		const mid = (low + high) >>> 1;
   7827 
   7828 		if (compare(array[mid], value)) {
   7829 			low = mid + 1;
   7830 		} else {
   7831 			high = mid;
   7832 		}
   7833 	}
   7834 
   7835 	return low;
   7836 };
   7837 
   7838 const compareSessions = (a, b) => a.remoteSettings.maxConcurrentStreams > b.remoteSettings.maxConcurrentStreams;
   7839 
   7840 // See https://tools.ietf.org/html/rfc8336
   7841 const closeCoveredSessions = (where, session) => {
   7842 	// Clients SHOULD NOT emit new requests on any connection whose Origin
   7843 	// Set is a proper subset of another connection's Origin Set, and they
   7844 	// SHOULD close it once all outstanding requests are satisfied.
   7845 	for (let index = 0; index < where.length; index++) {
   7846 		const coveredSession = where[index];
   7847 
   7848 		if (
   7849 			// Unfortunately `.every()` returns true for an empty array
   7850 			coveredSession[kOriginSet].length > 0
   7851 
   7852 			// The set is a proper subset when its length is less than the other set.
   7853 			&& coveredSession[kOriginSet].length < session[kOriginSet].length
   7854 
   7855 			// And the other set includes all elements of the subset.
   7856 			&& coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin))
   7857 
   7858 			// Makes sure that the session can handle all requests from the covered session.
   7859 			&& (coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount]) <= session.remoteSettings.maxConcurrentStreams
   7860 		) {
   7861 			// This allows pending requests to finish and prevents making new requests.
   7862 			gracefullyClose(coveredSession);
   7863 		}
   7864 	}
   7865 };
   7866 
   7867 // This is basically inverted `closeCoveredSessions(...)`.
   7868 const closeSessionIfCovered = (where, coveredSession) => {
   7869 	for (let index = 0; index < where.length; index++) {
   7870 		const session = where[index];
   7871 
   7872 		if (
   7873 			coveredSession[kOriginSet].length > 0
   7874 			&& coveredSession[kOriginSet].length < session[kOriginSet].length
   7875 			&& coveredSession[kOriginSet].every(origin => session[kOriginSet].includes(origin))
   7876 			&& (coveredSession[kCurrentStreamCount] + session[kCurrentStreamCount]) <= session.remoteSettings.maxConcurrentStreams
   7877 		) {
   7878 			gracefullyClose(coveredSession);
   7879 
   7880 			return true;
   7881 		}
   7882 	}
   7883 
   7884 	return false;
   7885 };
   7886 
   7887 const gracefullyClose = session => {
   7888 	session[kGracefullyClosing] = true;
   7889 
   7890 	if (session[kCurrentStreamCount] === 0) {
   7891 		session.close();
   7892 	}
   7893 };
   7894 
   7895 class Agent extends EventEmitter {
   7896 	constructor({timeout = 0, maxSessions = Number.POSITIVE_INFINITY, maxEmptySessions = 10, maxCachedTlsSessions = 100} = {}) {
   7897 		super();
   7898 
   7899 		// SESSIONS[NORMALIZED_OPTIONS] = [];
   7900 		this.sessions = {};
   7901 
   7902 		// The queue for creating new sessions. It looks like this:
   7903 		// QUEUE[NORMALIZED_OPTIONS][NORMALIZED_ORIGIN] = ENTRY_FUNCTION
   7904 		//
   7905 		// It's faster when there are many origins. If there's only one, then QUEUE[`${options}:${origin}`] is faster.
   7906 		// I guess object creation / deletion is causing the slowdown.
   7907 		//
   7908 		// The entry function has `listeners`, `completed` and `destroyed` properties.
   7909 		// `listeners` is an array of objects containing `resolve` and `reject` functions.
   7910 		// `completed` is a boolean. It's set to true after ENTRY_FUNCTION is executed.
   7911 		// `destroyed` is a boolean. If it's set to true, the session will be destroyed if hasn't connected yet.
   7912 		this.queue = {};
   7913 
   7914 		// Each session will use this timeout value.
   7915 		this.timeout = timeout;
   7916 
   7917 		// Max sessions in total
   7918 		this.maxSessions = maxSessions;
   7919 
   7920 		// Max empty sessions in total
   7921 		this.maxEmptySessions = maxEmptySessions;
   7922 
   7923 		this._emptySessionCount = 0;
   7924 		this._sessionCount = 0;
   7925 
   7926 		// We don't support push streams by default.
   7927 		this.settings = {
   7928 			enablePush: false,
   7929 			initialWindowSize: 1024 * 1024 * 32 // 32MB, see https://github.com/nodejs/node/issues/38426
   7930 		};
   7931 
   7932 		// Reusing TLS sessions increases performance.
   7933 		this.tlsSessionCache = new QuickLRU({maxSize: maxCachedTlsSessions});
   7934 	}
   7935 
   7936 	get protocol() {
   7937 		return 'https:';
   7938 	}
   7939 
   7940 	normalizeOptions(options) {
   7941 		let normalized = '';
   7942 
   7943 		for (let index = 0; index < nameKeys.length; index++) {
   7944 			const key = nameKeys[index];
   7945 
   7946 			normalized += ':';
   7947 
   7948 			if (options && options[key] !== undefined) {
   7949 				normalized += options[key];
   7950 			}
   7951 		}
   7952 
   7953 		return normalized;
   7954 	}
   7955 
   7956 	_processQueue() {
   7957 		if (this._sessionCount >= this.maxSessions) {
   7958 			this.closeEmptySessions(this.maxSessions - this._sessionCount + 1);
   7959 			return;
   7960 		}
   7961 
   7962 		// eslint-disable-next-line guard-for-in
   7963 		for (const normalizedOptions in this.queue) {
   7964 			// eslint-disable-next-line guard-for-in
   7965 			for (const normalizedOrigin in this.queue[normalizedOptions]) {
   7966 				const item = this.queue[normalizedOptions][normalizedOrigin];
   7967 
   7968 				// The entry function can be run only once.
   7969 				if (!item.completed) {
   7970 					item.completed = true;
   7971 
   7972 					item();
   7973 				}
   7974 			}
   7975 		}
   7976 	}
   7977 
   7978 	_isBetterSession(thisStreamCount, thatStreamCount) {
   7979 		return thisStreamCount > thatStreamCount;
   7980 	}
   7981 
   7982 	_accept(session, listeners, normalizedOrigin, options) {
   7983 		let index = 0;
   7984 
   7985 		while (index < listeners.length && session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams) {
   7986 			// We assume `resolve(...)` calls `request(...)` *directly*,
   7987 			// otherwise the session will get overloaded.
   7988 			listeners[index].resolve(session);
   7989 
   7990 			index++;
   7991 		}
   7992 
   7993 		listeners.splice(0, index);
   7994 
   7995 		if (listeners.length > 0) {
   7996 			this.getSession(normalizedOrigin, options, listeners);
   7997 			listeners.length = 0;
   7998 		}
   7999 	}
   8000 
   8001 	getSession(origin, options, listeners) {
   8002 		return new Promise((resolve, reject) => {
   8003 			if (Array.isArray(listeners) && listeners.length > 0) {
   8004 				listeners = [...listeners];
   8005 
   8006 				// Resolve the current promise ASAP, we're just moving the listeners.
   8007 				// They will be executed at a different time.
   8008 				resolve();
   8009 			} else {
   8010 				listeners = [{resolve, reject}];
   8011 			}
   8012 
   8013 			try {
   8014 				// Parse origin
   8015 				if (typeof origin === 'string') {
   8016 					origin = new URL(origin);
   8017 				} else if (!(origin instanceof URL)) {
   8018 					throw new TypeError('The `origin` argument needs to be a string or an URL object');
   8019 				}
   8020 
   8021 				if (options) {
   8022 					// Validate servername
   8023 					const {servername} = options;
   8024 					const {hostname} = origin;
   8025 					if (servername && hostname !== servername) {
   8026 						throw new Error(`Origin ${hostname} differs from servername ${servername}`);
   8027 					}
   8028 				}
   8029 			} catch (error) {
   8030 				for (let index = 0; index < listeners.length; index++) {
   8031 					listeners[index].reject(error);
   8032 				}
   8033 
   8034 				return;
   8035 			}
   8036 
   8037 			const normalizedOptions = this.normalizeOptions(options);
   8038 			const normalizedOrigin = origin.origin;
   8039 
   8040 			if (normalizedOptions in this.sessions) {
   8041 				const sessions = this.sessions[normalizedOptions];
   8042 
   8043 				let maxConcurrentStreams = -1;
   8044 				let currentStreamsCount = -1;
   8045 				let optimalSession;
   8046 
   8047 				// We could just do this.sessions[normalizedOptions].find(...) but that isn't optimal.
   8048 				// Additionally, we are looking for session which has biggest current pending streams count.
   8049 				//
   8050 				// |------------| |------------| |------------| |------------|
   8051 				// | Session: A | | Session: B | | Session: C | | Session: D |
   8052 				// | Pending: 5 |-| Pending: 8 |-| Pending: 9 |-| Pending: 4 |
   8053 				// | Max:    10 | | Max:    10 | | Max:     9 | | Max:     5 |
   8054 				// |------------| |------------| |------------| |------------|
   8055 				//                     ^
   8056 				//                     |
   8057 				//     pick this one  --
   8058 				//
   8059 				for (let index = 0; index < sessions.length; index++) {
   8060 					const session = sessions[index];
   8061 
   8062 					const sessionMaxConcurrentStreams = session.remoteSettings.maxConcurrentStreams;
   8063 
   8064 					if (sessionMaxConcurrentStreams < maxConcurrentStreams) {
   8065 						break;
   8066 					}
   8067 
   8068 					if (!session[kOriginSet].includes(normalizedOrigin)) {
   8069 						continue;
   8070 					}
   8071 
   8072 					const sessionCurrentStreamsCount = session[kCurrentStreamCount];
   8073 
   8074 					if (
   8075 						sessionCurrentStreamsCount >= sessionMaxConcurrentStreams
   8076 						|| session[kGracefullyClosing]
   8077 						// Unfortunately the `close` event isn't called immediately,
   8078 						// so `session.destroyed` is `true`, but `session.closed` is `false`.
   8079 						|| session.destroyed
   8080 					) {
   8081 						continue;
   8082 					}
   8083 
   8084 					// We only need set this once.
   8085 					if (!optimalSession) {
   8086 						maxConcurrentStreams = sessionMaxConcurrentStreams;
   8087 					}
   8088 
   8089 					// Either get the session which has biggest current stream count or the lowest.
   8090 					if (this._isBetterSession(sessionCurrentStreamsCount, currentStreamsCount)) {
   8091 						optimalSession = session;
   8092 						currentStreamsCount = sessionCurrentStreamsCount;
   8093 					}
   8094 				}
   8095 
   8096 				if (optimalSession) {
   8097 					this._accept(optimalSession, listeners, normalizedOrigin, options);
   8098 					return;
   8099 				}
   8100 			}
   8101 
   8102 			if (normalizedOptions in this.queue) {
   8103 				if (normalizedOrigin in this.queue[normalizedOptions]) {
   8104 					// There's already an item in the queue, just attach ourselves to it.
   8105 					this.queue[normalizedOptions][normalizedOrigin].listeners.push(...listeners);
   8106 					return;
   8107 				}
   8108 			} else {
   8109 				this.queue[normalizedOptions] = {
   8110 					[kLength]: 0
   8111 				};
   8112 			}
   8113 
   8114 			// The entry must be removed from the queue IMMEDIATELY when:
   8115 			// 1. the session connects successfully,
   8116 			// 2. an error occurs.
   8117 			const removeFromQueue = () => {
   8118 				// Our entry can be replaced. We cannot remove the new one.
   8119 				if (normalizedOptions in this.queue && this.queue[normalizedOptions][normalizedOrigin] === entry) {
   8120 					delete this.queue[normalizedOptions][normalizedOrigin];
   8121 
   8122 					if (--this.queue[normalizedOptions][kLength] === 0) {
   8123 						delete this.queue[normalizedOptions];
   8124 					}
   8125 				}
   8126 			};
   8127 
   8128 			// The main logic is here
   8129 			const entry = async () => {
   8130 				this._sessionCount++;
   8131 
   8132 				const name = `${normalizedOrigin}:${normalizedOptions}`;
   8133 				let receivedSettings = false;
   8134 				let socket;
   8135 
   8136 				try {
   8137 					const computedOptions = {...options};
   8138 
   8139 					if (computedOptions.settings === undefined) {
   8140 						computedOptions.settings = this.settings;
   8141 					}
   8142 
   8143 					if (computedOptions.session === undefined) {
   8144 						computedOptions.session = this.tlsSessionCache.get(name);
   8145 					}
   8146 
   8147 					const createConnection = computedOptions.createConnection || this.createConnection;
   8148 
   8149 					// A hacky workaround to enable async `createConnection`
   8150 					socket = await createConnection.call(this, origin, computedOptions);
   8151 					computedOptions.createConnection = () => socket;
   8152 
   8153 					const session = http2.connect(origin, computedOptions);
   8154 					session[kCurrentStreamCount] = 0;
   8155 					session[kGracefullyClosing] = false;
   8156 
   8157 					// Node.js return https://false:443 instead of https://1.1.1.1:443
   8158 					const getOriginSet = () => {
   8159 						const {socket} = session;
   8160 
   8161 						let originSet;
   8162 						if (socket.servername === false) {
   8163 							socket.servername = socket.remoteAddress;
   8164 							originSet = session.originSet;
   8165 							socket.servername = false;
   8166 						} else {
   8167 							originSet = session.originSet;
   8168 						}
   8169 
   8170 						return originSet;
   8171 					};
   8172 
   8173 					const isFree = () => session[kCurrentStreamCount] < session.remoteSettings.maxConcurrentStreams;
   8174 
   8175 					session.socket.once('session', tlsSession => {
   8176 						this.tlsSessionCache.set(name, tlsSession);
   8177 					});
   8178 
   8179 					session.once('error', error => {
   8180 						// Listeners are empty when the session successfully connected.
   8181 						for (let index = 0; index < listeners.length; index++) {
   8182 							listeners[index].reject(error);
   8183 						}
   8184 
   8185 						// The connection got broken, purge the cache.
   8186 						this.tlsSessionCache.delete(name);
   8187 					});
   8188 
   8189 					session.setTimeout(this.timeout, () => {
   8190 						// Terminates all streams owned by this session.
   8191 						session.destroy();
   8192 					});
   8193 
   8194 					session.once('close', () => {
   8195 						this._sessionCount--;
   8196 
   8197 						if (receivedSettings) {
   8198 							// Assumes session `close` is emitted after request `close`
   8199 							this._emptySessionCount--;
   8200 
   8201 							// This cannot be moved to the stream logic,
   8202 							// because there may be a session that hadn't made a single request.
   8203 							const where = this.sessions[normalizedOptions];
   8204 
   8205 							if (where.length === 1) {
   8206 								delete this.sessions[normalizedOptions];
   8207 							} else {
   8208 								where.splice(where.indexOf(session), 1);
   8209 							}
   8210 						} else {
   8211 							// Broken connection
   8212 							removeFromQueue();
   8213 
   8214 							const error = new Error('Session closed without receiving a SETTINGS frame');
   8215 							error.code = 'HTTP2WRAPPER_NOSETTINGS';
   8216 
   8217 							for (let index = 0; index < listeners.length; index++) {
   8218 								listeners[index].reject(error);
   8219 							}
   8220 						}
   8221 
   8222 						// There may be another session awaiting.
   8223 						this._processQueue();
   8224 					});
   8225 
   8226 					// Iterates over the queue and processes listeners.
   8227 					const processListeners = () => {
   8228 						const queue = this.queue[normalizedOptions];
   8229 						if (!queue) {
   8230 							return;
   8231 						}
   8232 
   8233 						const originSet = session[kOriginSet];
   8234 
   8235 						for (let index = 0; index < originSet.length; index++) {
   8236 							const origin = originSet[index];
   8237 
   8238 							if (origin in queue) {
   8239 								const {listeners, completed} = queue[origin];
   8240 
   8241 								let index = 0;
   8242 
   8243 								// Prevents session overloading.
   8244 								while (index < listeners.length && isFree()) {
   8245 									// We assume `resolve(...)` calls `request(...)` *directly*,
   8246 									// otherwise the session will get overloaded.
   8247 									listeners[index].resolve(session);
   8248 
   8249 									index++;
   8250 								}
   8251 
   8252 								queue[origin].listeners.splice(0, index);
   8253 
   8254 								if (queue[origin].listeners.length === 0 && !completed) {
   8255 									delete queue[origin];
   8256 
   8257 									if (--queue[kLength] === 0) {
   8258 										delete this.queue[normalizedOptions];
   8259 										break;
   8260 									}
   8261 								}
   8262 
   8263 								// We're no longer free, no point in continuing.
   8264 								if (!isFree()) {
   8265 									break;
   8266 								}
   8267 							}
   8268 						}
   8269 					};
   8270 
   8271 					// The Origin Set cannot shrink. No need to check if it suddenly became covered by another one.
   8272 					session.on('origin', () => {
   8273 						session[kOriginSet] = getOriginSet() || [];
   8274 						session[kGracefullyClosing] = false;
   8275 						closeSessionIfCovered(this.sessions[normalizedOptions], session);
   8276 
   8277 						if (session[kGracefullyClosing] || !isFree()) {
   8278 							return;
   8279 						}
   8280 
   8281 						processListeners();
   8282 
   8283 						if (!isFree()) {
   8284 							return;
   8285 						}
   8286 
   8287 						// Close covered sessions (if possible).
   8288 						closeCoveredSessions(this.sessions[normalizedOptions], session);
   8289 					});
   8290 
   8291 					session.once('remoteSettings', () => {
   8292 						// The Agent could have been destroyed already.
   8293 						if (entry.destroyed) {
   8294 							const error = new Error('Agent has been destroyed');
   8295 
   8296 							for (let index = 0; index < listeners.length; index++) {
   8297 								listeners[index].reject(error);
   8298 							}
   8299 
   8300 							session.destroy();
   8301 							return;
   8302 						}
   8303 
   8304 						// See https://github.com/nodejs/node/issues/38426
   8305 						if (session.setLocalWindowSize) {
   8306 							session.setLocalWindowSize(1024 * 1024 * 4); // 4 MB
   8307 						}
   8308 
   8309 						session[kOriginSet] = getOriginSet() || [];
   8310 
   8311 						if (session.socket.encrypted) {
   8312 							const mainOrigin = session[kOriginSet][0];
   8313 							if (mainOrigin !== normalizedOrigin) {
   8314 								const error = new Error(`Requested origin ${normalizedOrigin} does not match server ${mainOrigin}`);
   8315 
   8316 								for (let index = 0; index < listeners.length; index++) {
   8317 									listeners[index].reject(error);
   8318 								}
   8319 
   8320 								session.destroy();
   8321 								return;
   8322 							}
   8323 						}
   8324 
   8325 						removeFromQueue();
   8326 
   8327 						{
   8328 							const where = this.sessions;
   8329 
   8330 							if (normalizedOptions in where) {
   8331 								const sessions = where[normalizedOptions];
   8332 								sessions.splice(getSortedIndex(sessions, session, compareSessions), 0, session);
   8333 							} else {
   8334 								where[normalizedOptions] = [session];
   8335 							}
   8336 						}
   8337 
   8338 						receivedSettings = true;
   8339 						this._emptySessionCount++;
   8340 
   8341 						this.emit('session', session);
   8342 						this._accept(session, listeners, normalizedOrigin, options);
   8343 
   8344 						if (session[kCurrentStreamCount] === 0 && this._emptySessionCount > this.maxEmptySessions) {
   8345 							this.closeEmptySessions(this._emptySessionCount - this.maxEmptySessions);
   8346 						}
   8347 
   8348 						// `session.remoteSettings.maxConcurrentStreams` might get increased
   8349 						session.on('remoteSettings', () => {
   8350 							if (!isFree()) {
   8351 								return;
   8352 							}
   8353 
   8354 							processListeners();
   8355 
   8356 							if (!isFree()) {
   8357 								return;
   8358 							}
   8359 
   8360 							// In case the Origin Set changes
   8361 							closeCoveredSessions(this.sessions[normalizedOptions], session);
   8362 						});
   8363 					});
   8364 
   8365 					// Shim `session.request()` in order to catch all streams
   8366 					session[kRequest] = session.request;
   8367 					session.request = (headers, streamOptions) => {
   8368 						if (session[kGracefullyClosing]) {
   8369 							throw new Error('The session is gracefully closing. No new streams are allowed.');
   8370 						}
   8371 
   8372 						const stream = session[kRequest](headers, streamOptions);
   8373 
   8374 						// The process won't exit until the session is closed or all requests are gone.
   8375 						session.ref();
   8376 
   8377 						if (session[kCurrentStreamCount]++ === 0) {
   8378 							this._emptySessionCount--;
   8379 						}
   8380 
   8381 						stream.once('close', () => {
   8382 							if (--session[kCurrentStreamCount] === 0) {
   8383 								this._emptySessionCount++;
   8384 								session.unref();
   8385 
   8386 								if (this._emptySessionCount > this.maxEmptySessions || session[kGracefullyClosing]) {
   8387 									session.close();
   8388 									return;
   8389 								}
   8390 							}
   8391 
   8392 							if (session.destroyed || session.closed) {
   8393 								return;
   8394 							}
   8395 
   8396 							if (isFree() && !closeSessionIfCovered(this.sessions[normalizedOptions], session)) {
   8397 								closeCoveredSessions(this.sessions[normalizedOptions], session);
   8398 								processListeners();
   8399 
   8400 								if (session[kCurrentStreamCount] === 0) {
   8401 									this._processQueue();
   8402 								}
   8403 							}
   8404 						});
   8405 
   8406 						return stream;
   8407 					};
   8408 				} catch (error) {
   8409 					removeFromQueue();
   8410 					this._sessionCount--;
   8411 
   8412 					for (let index = 0; index < listeners.length; index++) {
   8413 						listeners[index].reject(error);
   8414 					}
   8415 				}
   8416 			};
   8417 
   8418 			entry.listeners = listeners;
   8419 			entry.completed = false;
   8420 			entry.destroyed = false;
   8421 
   8422 			this.queue[normalizedOptions][normalizedOrigin] = entry;
   8423 			this.queue[normalizedOptions][kLength]++;
   8424 			this._processQueue();
   8425 		});
   8426 	}
   8427 
   8428 	request(origin, options, headers, streamOptions) {
   8429 		return new Promise((resolve, reject) => {
   8430 			this.getSession(origin, options, [{
   8431 				reject,
   8432 				resolve: session => {
   8433 					try {
   8434 						const stream = session.request(headers, streamOptions);
   8435 
   8436 						// Do not throw before `request(...)` has been awaited
   8437 						delayAsyncDestroy(stream);
   8438 
   8439 						resolve(stream);
   8440 					} catch (error) {
   8441 						reject(error);
   8442 					}
   8443 				}
   8444 			}]);
   8445 		});
   8446 	}
   8447 
   8448 	async createConnection(origin, options) {
   8449 		return Agent.connect(origin, options);
   8450 	}
   8451 
   8452 	static connect(origin, options) {
   8453 		options.ALPNProtocols = ['h2'];
   8454 
   8455 		const port = origin.port || 443;
   8456 		const host = origin.hostname;
   8457 
   8458 		if (typeof options.servername === 'undefined') {
   8459 			options.servername = host;
   8460 		}
   8461 
   8462 		const socket = tls.connect(port, host, options);
   8463 
   8464 		if (options.socket) {
   8465 			socket._peername = {
   8466 				family: undefined,
   8467 				address: undefined,
   8468 				port
   8469 			};
   8470 		}
   8471 
   8472 		return socket;
   8473 	}
   8474 
   8475 	closeEmptySessions(maxCount = Number.POSITIVE_INFINITY) {
   8476 		let closedCount = 0;
   8477 
   8478 		const {sessions} = this;
   8479 
   8480 		// eslint-disable-next-line guard-for-in
   8481 		for (const key in sessions) {
   8482 			const thisSessions = sessions[key];
   8483 
   8484 			for (let index = 0; index < thisSessions.length; index++) {
   8485 				const session = thisSessions[index];
   8486 
   8487 				if (session[kCurrentStreamCount] === 0) {
   8488 					closedCount++;
   8489 					session.close();
   8490 
   8491 					if (closedCount >= maxCount) {
   8492 						return closedCount;
   8493 					}
   8494 				}
   8495 			}
   8496 		}
   8497 
   8498 		return closedCount;
   8499 	}
   8500 
   8501 	destroy(reason) {
   8502 		const {sessions, queue} = this;
   8503 
   8504 		// eslint-disable-next-line guard-for-in
   8505 		for (const key in sessions) {
   8506 			const thisSessions = sessions[key];
   8507 
   8508 			for (let index = 0; index < thisSessions.length; index++) {
   8509 				thisSessions[index].destroy(reason);
   8510 			}
   8511 		}
   8512 
   8513 		// eslint-disable-next-line guard-for-in
   8514 		for (const normalizedOptions in queue) {
   8515 			const entries = queue[normalizedOptions];
   8516 
   8517 			// eslint-disable-next-line guard-for-in
   8518 			for (const normalizedOrigin in entries) {
   8519 				entries[normalizedOrigin].destroyed = true;
   8520 			}
   8521 		}
   8522 
   8523 		// New requests should NOT attach to destroyed sessions
   8524 		this.queue = {};
   8525 		this.tlsSessionCache.clear();
   8526 	}
   8527 
   8528 	get emptySessionCount() {
   8529 		return this._emptySessionCount;
   8530 	}
   8531 
   8532 	get pendingSessionCount() {
   8533 		return this._sessionCount - this._emptySessionCount;
   8534 	}
   8535 
   8536 	get sessionCount() {
   8537 		return this._sessionCount;
   8538 	}
   8539 }
   8540 
   8541 Agent.kCurrentStreamCount = kCurrentStreamCount;
   8542 Agent.kGracefullyClosing = kGracefullyClosing;
   8543 
   8544 module.exports = {
   8545 	Agent,
   8546 	globalAgent: new Agent()
   8547 };
   8548 
   8549 
   8550 /***/ }),
   8551 
   8552 /***/ 7167:
   8553 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   8554 
   8555 
   8556 // See https://github.com/facebook/jest/issues/2549
   8557 // eslint-disable-next-line node/prefer-global/url
   8558 const {URL, urlToHttpOptions} = __nccwpck_require__(7310);
   8559 const http = __nccwpck_require__(3685);
   8560 const https = __nccwpck_require__(5687);
   8561 const resolveALPN = __nccwpck_require__(6624);
   8562 const QuickLRU = __nccwpck_require__(9273);
   8563 const {Agent, globalAgent} = __nccwpck_require__(9898);
   8564 const Http2ClientRequest = __nccwpck_require__(9632);
   8565 const calculateServerName = __nccwpck_require__(1982);
   8566 const delayAsyncDestroy = __nccwpck_require__(9237);
   8567 
   8568 const cache = new QuickLRU({maxSize: 100});
   8569 const queue = new Map();
   8570 
   8571 const installSocket = (agent, socket, options) => {
   8572 	socket._httpMessage = {shouldKeepAlive: true};
   8573 
   8574 	const onFree = () => {
   8575 		agent.emit('free', socket, options);
   8576 	};
   8577 
   8578 	socket.on('free', onFree);
   8579 
   8580 	const onClose = () => {
   8581 		agent.removeSocket(socket, options);
   8582 	};
   8583 
   8584 	socket.on('close', onClose);
   8585 
   8586 	const onTimeout = () => {
   8587 		const {freeSockets} = agent;
   8588 
   8589 		for (const sockets of Object.values(freeSockets)) {
   8590 			if (sockets.includes(socket)) {
   8591 				socket.destroy();
   8592 				return;
   8593 			}
   8594 		}
   8595 	};
   8596 
   8597 	socket.on('timeout', onTimeout);
   8598 
   8599 	const onRemove = () => {
   8600 		agent.removeSocket(socket, options);
   8601 		socket.off('close', onClose);
   8602 		socket.off('free', onFree);
   8603 		socket.off('timeout', onTimeout);
   8604 		socket.off('agentRemove', onRemove);
   8605 	};
   8606 
   8607 	socket.on('agentRemove', onRemove);
   8608 
   8609 	agent.emit('free', socket, options);
   8610 };
   8611 
   8612 const createResolveProtocol = (cache, queue = new Map(), connect = undefined) => {
   8613 	return async options => {
   8614 		const name = `${options.host}:${options.port}:${options.ALPNProtocols.sort()}`;
   8615 
   8616 		if (!cache.has(name)) {
   8617 			if (queue.has(name)) {
   8618 				const result = await queue.get(name);
   8619 				return {alpnProtocol: result.alpnProtocol};
   8620 			}
   8621 
   8622 			const {path} = options;
   8623 			options.path = options.socketPath;
   8624 
   8625 			const resultPromise = resolveALPN(options, connect);
   8626 			queue.set(name, resultPromise);
   8627 
   8628 			try {
   8629 				const result = await resultPromise;
   8630 
   8631 				cache.set(name, result.alpnProtocol);
   8632 				queue.delete(name);
   8633 
   8634 				options.path = path;
   8635 
   8636 				return result;
   8637 			} catch (error) {
   8638 				queue.delete(name);
   8639 
   8640 				options.path = path;
   8641 
   8642 				throw error;
   8643 			}
   8644 		}
   8645 
   8646 		return {alpnProtocol: cache.get(name)};
   8647 	};
   8648 };
   8649 
   8650 const defaultResolveProtocol = createResolveProtocol(cache, queue);
   8651 
   8652 module.exports = async (input, options, callback) => {
   8653 	if (typeof input === 'string') {
   8654 		input = urlToHttpOptions(new URL(input));
   8655 	} else if (input instanceof URL) {
   8656 		input = urlToHttpOptions(input);
   8657 	} else {
   8658 		input = {...input};
   8659 	}
   8660 
   8661 	if (typeof options === 'function' || options === undefined) {
   8662 		// (options, callback)
   8663 		callback = options;
   8664 		options = input;
   8665 	} else {
   8666 		// (input, options, callback)
   8667 		options = Object.assign(input, options);
   8668 	}
   8669 
   8670 	options.ALPNProtocols = options.ALPNProtocols || ['h2', 'http/1.1'];
   8671 
   8672 	if (!Array.isArray(options.ALPNProtocols) || options.ALPNProtocols.length === 0) {
   8673 		throw new Error('The `ALPNProtocols` option must be an Array with at least one entry');
   8674 	}
   8675 
   8676 	options.protocol = options.protocol || 'https:';
   8677 	const isHttps = options.protocol === 'https:';
   8678 
   8679 	options.host = options.hostname || options.host || 'localhost';
   8680 	options.session = options.tlsSession;
   8681 	options.servername = options.servername || calculateServerName((options.headers && options.headers.host) || options.host);
   8682 	options.port = options.port || (isHttps ? 443 : 80);
   8683 	options._defaultAgent = isHttps ? https.globalAgent : http.globalAgent;
   8684 
   8685 	const resolveProtocol = options.resolveProtocol || defaultResolveProtocol;
   8686 
   8687 	// Note: We don't support `h2session` here
   8688 
   8689 	let {agent} = options;
   8690 	if (agent !== undefined && agent !== false && agent.constructor.name !== 'Object') {
   8691 		throw new Error('The `options.agent` can be only an object `http`, `https` or `http2` properties');
   8692 	}
   8693 
   8694 	if (isHttps) {
   8695 		options.resolveSocket = true;
   8696 
   8697 		let {socket, alpnProtocol, timeout} = await resolveProtocol(options);
   8698 
   8699 		if (timeout) {
   8700 			if (socket) {
   8701 				socket.destroy();
   8702 			}
   8703 
   8704 			const error = new Error(`Timed out resolving ALPN: ${options.timeout} ms`);
   8705 			error.code = 'ETIMEDOUT';
   8706 			error.ms = options.timeout;
   8707 
   8708 			throw error;
   8709 		}
   8710 
   8711 		// We can't accept custom `createConnection` because the API is different for HTTP/2
   8712 		if (socket && options.createConnection) {
   8713 			socket.destroy();
   8714 			socket = undefined;
   8715 		}
   8716 
   8717 		delete options.resolveSocket;
   8718 
   8719 		const isHttp2 = alpnProtocol === 'h2';
   8720 
   8721 		if (agent) {
   8722 			agent = isHttp2 ? agent.http2 : agent.https;
   8723 			options.agent = agent;
   8724 		}
   8725 
   8726 		if (agent === undefined) {
   8727 			agent = isHttp2 ? globalAgent : https.globalAgent;
   8728 		}
   8729 
   8730 		if (socket) {
   8731 			if (agent === false) {
   8732 				socket.destroy();
   8733 			} else {
   8734 				const defaultCreateConnection = (isHttp2 ? Agent : https.Agent).prototype.createConnection;
   8735 
   8736 				if (agent.createConnection === defaultCreateConnection) {
   8737 					if (isHttp2) {
   8738 						options._reuseSocket = socket;
   8739 					} else {
   8740 						installSocket(agent, socket, options);
   8741 					}
   8742 				} else {
   8743 					socket.destroy();
   8744 				}
   8745 			}
   8746 		}
   8747 
   8748 		if (isHttp2) {
   8749 			return delayAsyncDestroy(new Http2ClientRequest(options, callback));
   8750 		}
   8751 	} else if (agent) {
   8752 		options.agent = agent.http;
   8753 	}
   8754 
   8755 	return delayAsyncDestroy(http.request(options, callback));
   8756 };
   8757 
   8758 module.exports.protocolCache = cache;
   8759 module.exports.resolveProtocol = defaultResolveProtocol;
   8760 module.exports.createResolveProtocol = createResolveProtocol;
   8761 
   8762 
   8763 /***/ }),
   8764 
   8765 /***/ 9632:
   8766 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   8767 
   8768 
   8769 // See https://github.com/facebook/jest/issues/2549
   8770 // eslint-disable-next-line node/prefer-global/url
   8771 const {URL, urlToHttpOptions} = __nccwpck_require__(7310);
   8772 const http2 = __nccwpck_require__(5158);
   8773 const {Writable} = __nccwpck_require__(2781);
   8774 const {Agent, globalAgent} = __nccwpck_require__(9898);
   8775 const IncomingMessage = __nccwpck_require__(2575);
   8776 const proxyEvents = __nccwpck_require__(1818);
   8777 const {
   8778 	ERR_INVALID_ARG_TYPE,
   8779 	ERR_INVALID_PROTOCOL,
   8780 	ERR_HTTP_HEADERS_SENT
   8781 } = __nccwpck_require__(7087);
   8782 const validateHeaderName = __nccwpck_require__(4592);
   8783 const validateHeaderValue = __nccwpck_require__(3549);
   8784 const proxySocketHandler = __nccwpck_require__(9404);
   8785 
   8786 const {
   8787 	HTTP2_HEADER_STATUS,
   8788 	HTTP2_HEADER_METHOD,
   8789 	HTTP2_HEADER_PATH,
   8790 	HTTP2_HEADER_AUTHORITY,
   8791 	HTTP2_METHOD_CONNECT
   8792 } = http2.constants;
   8793 
   8794 const kHeaders = Symbol('headers');
   8795 const kOrigin = Symbol('origin');
   8796 const kSession = Symbol('session');
   8797 const kOptions = Symbol('options');
   8798 const kFlushedHeaders = Symbol('flushedHeaders');
   8799 const kJobs = Symbol('jobs');
   8800 const kPendingAgentPromise = Symbol('pendingAgentPromise');
   8801 
   8802 class ClientRequest extends Writable {
   8803 	constructor(input, options, callback) {
   8804 		super({
   8805 			autoDestroy: false,
   8806 			emitClose: false
   8807 		});
   8808 
   8809 		if (typeof input === 'string') {
   8810 			input = urlToHttpOptions(new URL(input));
   8811 		} else if (input instanceof URL) {
   8812 			input = urlToHttpOptions(input);
   8813 		} else {
   8814 			input = {...input};
   8815 		}
   8816 
   8817 		if (typeof options === 'function' || options === undefined) {
   8818 			// (options, callback)
   8819 			callback = options;
   8820 			options = input;
   8821 		} else {
   8822 			// (input, options, callback)
   8823 			options = Object.assign(input, options);
   8824 		}
   8825 
   8826 		if (options.h2session) {
   8827 			this[kSession] = options.h2session;
   8828 
   8829 			if (this[kSession].destroyed) {
   8830 				throw new Error('The session has been closed already');
   8831 			}
   8832 
   8833 			this.protocol = this[kSession].socket.encrypted ? 'https:' : 'http:';
   8834 		} else if (options.agent === false) {
   8835 			this.agent = new Agent({maxEmptySessions: 0});
   8836 		} else if (typeof options.agent === 'undefined' || options.agent === null) {
   8837 			this.agent = globalAgent;
   8838 		} else if (typeof options.agent.request === 'function') {
   8839 			this.agent = options.agent;
   8840 		} else {
   8841 			throw new ERR_INVALID_ARG_TYPE('options.agent', ['http2wrapper.Agent-like Object', 'undefined', 'false'], options.agent);
   8842 		}
   8843 
   8844 		if (this.agent) {
   8845 			this.protocol = this.agent.protocol;
   8846 		}
   8847 
   8848 		if (options.protocol && options.protocol !== this.protocol) {
   8849 			throw new ERR_INVALID_PROTOCOL(options.protocol, this.protocol);
   8850 		}
   8851 
   8852 		if (!options.port) {
   8853 			options.port = options.defaultPort || (this.agent && this.agent.defaultPort) || 443;
   8854 		}
   8855 
   8856 		options.host = options.hostname || options.host || 'localhost';
   8857 
   8858 		// Unused
   8859 		delete options.hostname;
   8860 
   8861 		const {timeout} = options;
   8862 		options.timeout = undefined;
   8863 
   8864 		this[kHeaders] = Object.create(null);
   8865 		this[kJobs] = [];
   8866 
   8867 		this[kPendingAgentPromise] = undefined;
   8868 
   8869 		this.socket = null;
   8870 		this.connection = null;
   8871 
   8872 		this.method = options.method || 'GET';
   8873 
   8874 		if (!(this.method === 'CONNECT' && (options.path === '/' || options.path === undefined))) {
   8875 			this.path = options.path;
   8876 		}
   8877 
   8878 		this.res = null;
   8879 		this.aborted = false;
   8880 		this.reusedSocket = false;
   8881 
   8882 		const {headers} = options;
   8883 		if (headers) {
   8884 			// eslint-disable-next-line guard-for-in
   8885 			for (const header in headers) {
   8886 				this.setHeader(header, headers[header]);
   8887 			}
   8888 		}
   8889 
   8890 		if (options.auth && !('authorization' in this[kHeaders])) {
   8891 			this[kHeaders].authorization = 'Basic ' + Buffer.from(options.auth).toString('base64');
   8892 		}
   8893 
   8894 		options.session = options.tlsSession;
   8895 		options.path = options.socketPath;
   8896 
   8897 		this[kOptions] = options;
   8898 
   8899 		// Clients that generate HTTP/2 requests directly SHOULD use the :authority pseudo-header field instead of the Host header field.
   8900 		this[kOrigin] = new URL(`${this.protocol}//${options.servername || options.host}:${options.port}`);
   8901 
   8902 		// A socket is being reused
   8903 		const reuseSocket = options._reuseSocket;
   8904 		if (reuseSocket) {
   8905 			options.createConnection = (...args) => {
   8906 				if (reuseSocket.destroyed) {
   8907 					return this.agent.createConnection(...args);
   8908 				}
   8909 
   8910 				return reuseSocket;
   8911 			};
   8912 
   8913 			// eslint-disable-next-line promise/prefer-await-to-then
   8914 			this.agent.getSession(this[kOrigin], this[kOptions]).catch(() => {});
   8915 		}
   8916 
   8917 		if (timeout) {
   8918 			this.setTimeout(timeout);
   8919 		}
   8920 
   8921 		if (callback) {
   8922 			this.once('response', callback);
   8923 		}
   8924 
   8925 		this[kFlushedHeaders] = false;
   8926 	}
   8927 
   8928 	get method() {
   8929 		return this[kHeaders][HTTP2_HEADER_METHOD];
   8930 	}
   8931 
   8932 	set method(value) {
   8933 		if (value) {
   8934 			this[kHeaders][HTTP2_HEADER_METHOD] = value.toUpperCase();
   8935 		}
   8936 	}
   8937 
   8938 	get path() {
   8939 		const header = this.method === 'CONNECT' ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;
   8940 
   8941 		return this[kHeaders][header];
   8942 	}
   8943 
   8944 	set path(value) {
   8945 		if (value) {
   8946 			const header = this.method === 'CONNECT' ? HTTP2_HEADER_AUTHORITY : HTTP2_HEADER_PATH;
   8947 
   8948 			this[kHeaders][header] = value;
   8949 		}
   8950 	}
   8951 
   8952 	get host() {
   8953 		return this[kOrigin].hostname;
   8954 	}
   8955 
   8956 	set host(_value) {
   8957 		// Do nothing as this is read only.
   8958 	}
   8959 
   8960 	get _mustNotHaveABody() {
   8961 		return this.method === 'GET' || this.method === 'HEAD' || this.method === 'DELETE';
   8962 	}
   8963 
   8964 	_write(chunk, encoding, callback) {
   8965 		// https://github.com/nodejs/node/blob/654df09ae0c5e17d1b52a900a545f0664d8c7627/lib/internal/http2/util.js#L148-L156
   8966 		if (this._mustNotHaveABody) {
   8967 			callback(new Error('The GET, HEAD and DELETE methods must NOT have a body'));
   8968 			/* istanbul ignore next: Node.js 12 throws directly */
   8969 			return;
   8970 		}
   8971 
   8972 		this.flushHeaders();
   8973 
   8974 		const callWrite = () => this._request.write(chunk, encoding, callback);
   8975 		if (this._request) {
   8976 			callWrite();
   8977 		} else {
   8978 			this[kJobs].push(callWrite);
   8979 		}
   8980 	}
   8981 
   8982 	_final(callback) {
   8983 		this.flushHeaders();
   8984 
   8985 		const callEnd = () => {
   8986 			// For GET, HEAD and DELETE and CONNECT
   8987 			if (this._mustNotHaveABody || this.method === 'CONNECT') {
   8988 				callback();
   8989 				return;
   8990 			}
   8991 
   8992 			this._request.end(callback);
   8993 		};
   8994 
   8995 		if (this._request) {
   8996 			callEnd();
   8997 		} else {
   8998 			this[kJobs].push(callEnd);
   8999 		}
   9000 	}
   9001 
   9002 	abort() {
   9003 		if (this.res && this.res.complete) {
   9004 			return;
   9005 		}
   9006 
   9007 		if (!this.aborted) {
   9008 			process.nextTick(() => this.emit('abort'));
   9009 		}
   9010 
   9011 		this.aborted = true;
   9012 
   9013 		this.destroy();
   9014 	}
   9015 
   9016 	async _destroy(error, callback) {
   9017 		if (this.res) {
   9018 			this.res._dump();
   9019 		}
   9020 
   9021 		if (this._request) {
   9022 			this._request.destroy();
   9023 		} else {
   9024 			process.nextTick(() => {
   9025 				this.emit('close');
   9026 			});
   9027 		}
   9028 
   9029 		try {
   9030 			await this[kPendingAgentPromise];
   9031 		} catch (internalError) {
   9032 			if (this.aborted) {
   9033 				error = internalError;
   9034 			}
   9035 		}
   9036 
   9037 		callback(error);
   9038 	}
   9039 
   9040 	async flushHeaders() {
   9041 		if (this[kFlushedHeaders] || this.destroyed) {
   9042 			return;
   9043 		}
   9044 
   9045 		this[kFlushedHeaders] = true;
   9046 
   9047 		const isConnectMethod = this.method === HTTP2_METHOD_CONNECT;
   9048 
   9049 		// The real magic is here
   9050 		const onStream = stream => {
   9051 			this._request = stream;
   9052 
   9053 			if (this.destroyed) {
   9054 				stream.destroy();
   9055 				return;
   9056 			}
   9057 
   9058 			// Forwards `timeout`, `continue`, `close` and `error` events to this instance.
   9059 			if (!isConnectMethod) {
   9060 				// TODO: Should we proxy `close` here?
   9061 				proxyEvents(stream, this, ['timeout', 'continue']);
   9062 			}
   9063 
   9064 			stream.once('error', error => {
   9065 				this.destroy(error);
   9066 			});
   9067 
   9068 			stream.once('aborted', () => {
   9069 				const {res} = this;
   9070 				if (res) {
   9071 					res.aborted = true;
   9072 					res.emit('aborted');
   9073 					res.destroy();
   9074 				} else {
   9075 					this.destroy(new Error('The server aborted the HTTP/2 stream'));
   9076 				}
   9077 			});
   9078 
   9079 			const onResponse = (headers, flags, rawHeaders) => {
   9080 				// If we were to emit raw request stream, it would be as fast as the native approach.
   9081 				// Note that wrapping the raw stream in a Proxy instance won't improve the performance (already tested it).
   9082 				const response = new IncomingMessage(this.socket, stream.readableHighWaterMark);
   9083 				this.res = response;
   9084 
   9085 				// Undocumented, but it is used by `cacheable-request`
   9086 				response.url = `${this[kOrigin].origin}${this.path}`;
   9087 
   9088 				response.req = this;
   9089 				response.statusCode = headers[HTTP2_HEADER_STATUS];
   9090 				response.headers = headers;
   9091 				response.rawHeaders = rawHeaders;
   9092 
   9093 				response.once('end', () => {
   9094 					response.complete = true;
   9095 
   9096 					// Has no effect, just be consistent with the Node.js behavior
   9097 					response.socket = null;
   9098 					response.connection = null;
   9099 				});
   9100 
   9101 				if (isConnectMethod) {
   9102 					response.upgrade = true;
   9103 
   9104 					// The HTTP1 API says the socket is detached here,
   9105 					// but we can't do that so we pass the original HTTP2 request.
   9106 					if (this.emit('connect', response, stream, Buffer.alloc(0))) {
   9107 						this.emit('close');
   9108 					} else {
   9109 						// No listeners attached, destroy the original request.
   9110 						stream.destroy();
   9111 					}
   9112 				} else {
   9113 					// Forwards data
   9114 					stream.on('data', chunk => {
   9115 						if (!response._dumped && !response.push(chunk)) {
   9116 							stream.pause();
   9117 						}
   9118 					});
   9119 
   9120 					stream.once('end', () => {
   9121 						if (!this.aborted) {
   9122 							response.push(null);
   9123 						}
   9124 					});
   9125 
   9126 					if (!this.emit('response', response)) {
   9127 						// No listeners attached, dump the response.
   9128 						response._dump();
   9129 					}
   9130 				}
   9131 			};
   9132 
   9133 			// This event tells we are ready to listen for the data.
   9134 			stream.once('response', onResponse);
   9135 
   9136 			// Emits `information` event
   9137 			stream.once('headers', headers => this.emit('information', {statusCode: headers[HTTP2_HEADER_STATUS]}));
   9138 
   9139 			stream.once('trailers', (trailers, flags, rawTrailers) => {
   9140 				const {res} = this;
   9141 
   9142 				// https://github.com/nodejs/node/issues/41251
   9143 				if (res === null) {
   9144 					onResponse(trailers, flags, rawTrailers);
   9145 					return;
   9146 				}
   9147 
   9148 				// Assigns trailers to the response object.
   9149 				res.trailers = trailers;
   9150 				res.rawTrailers = rawTrailers;
   9151 			});
   9152 
   9153 			stream.once('close', () => {
   9154 				const {aborted, res} = this;
   9155 				if (res) {
   9156 					if (aborted) {
   9157 						res.aborted = true;
   9158 						res.emit('aborted');
   9159 						res.destroy();
   9160 					}
   9161 
   9162 					const finish = () => {
   9163 						res.emit('close');
   9164 
   9165 						this.destroy();
   9166 						this.emit('close');
   9167 					};
   9168 
   9169 					if (res.readable) {
   9170 						res.once('end', finish);
   9171 					} else {
   9172 						finish();
   9173 					}
   9174 
   9175 					return;
   9176 				}
   9177 
   9178 				if (!this.destroyed) {
   9179 					this.destroy(new Error('The HTTP/2 stream has been early terminated'));
   9180 					this.emit('close');
   9181 					return;
   9182 				}
   9183 
   9184 				this.destroy();
   9185 				this.emit('close');
   9186 			});
   9187 
   9188 			this.socket = new Proxy(stream, proxySocketHandler);
   9189 
   9190 			for (const job of this[kJobs]) {
   9191 				job();
   9192 			}
   9193 
   9194 			this[kJobs].length = 0;
   9195 
   9196 			this.emit('socket', this.socket);
   9197 		};
   9198 
   9199 		if (!(HTTP2_HEADER_AUTHORITY in this[kHeaders]) && !isConnectMethod) {
   9200 			this[kHeaders][HTTP2_HEADER_AUTHORITY] = this[kOrigin].host;
   9201 		}
   9202 
   9203 		// Makes a HTTP2 request
   9204 		if (this[kSession]) {
   9205 			try {
   9206 				onStream(this[kSession].request(this[kHeaders]));
   9207 			} catch (error) {
   9208 				this.destroy(error);
   9209 			}
   9210 		} else {
   9211 			this.reusedSocket = true;
   9212 
   9213 			try {
   9214 				const promise = this.agent.request(this[kOrigin], this[kOptions], this[kHeaders]);
   9215 				this[kPendingAgentPromise] = promise;
   9216 
   9217 				onStream(await promise);
   9218 
   9219 				this[kPendingAgentPromise] = false;
   9220 			} catch (error) {
   9221 				this[kPendingAgentPromise] = false;
   9222 
   9223 				this.destroy(error);
   9224 			}
   9225 		}
   9226 	}
   9227 
   9228 	get connection() {
   9229 		return this.socket;
   9230 	}
   9231 
   9232 	set connection(value) {
   9233 		this.socket = value;
   9234 	}
   9235 
   9236 	getHeaderNames() {
   9237 		return Object.keys(this[kHeaders]);
   9238 	}
   9239 
   9240 	hasHeader(name) {
   9241 		if (typeof name !== 'string') {
   9242 			throw new ERR_INVALID_ARG_TYPE('name', 'string', name);
   9243 		}
   9244 
   9245 		return Boolean(this[kHeaders][name.toLowerCase()]);
   9246 	}
   9247 
   9248 	getHeader(name) {
   9249 		if (typeof name !== 'string') {
   9250 			throw new ERR_INVALID_ARG_TYPE('name', 'string', name);
   9251 		}
   9252 
   9253 		return this[kHeaders][name.toLowerCase()];
   9254 	}
   9255 
   9256 	get headersSent() {
   9257 		return this[kFlushedHeaders];
   9258 	}
   9259 
   9260 	removeHeader(name) {
   9261 		if (typeof name !== 'string') {
   9262 			throw new ERR_INVALID_ARG_TYPE('name', 'string', name);
   9263 		}
   9264 
   9265 		if (this.headersSent) {
   9266 			throw new ERR_HTTP_HEADERS_SENT('remove');
   9267 		}
   9268 
   9269 		delete this[kHeaders][name.toLowerCase()];
   9270 	}
   9271 
   9272 	setHeader(name, value) {
   9273 		if (this.headersSent) {
   9274 			throw new ERR_HTTP_HEADERS_SENT('set');
   9275 		}
   9276 
   9277 		validateHeaderName(name);
   9278 		validateHeaderValue(name, value);
   9279 
   9280 		const lowercased = name.toLowerCase();
   9281 
   9282 		if (lowercased === 'connection') {
   9283 			if (value.toLowerCase() === 'keep-alive') {
   9284 				return;
   9285 			}
   9286 
   9287 			throw new Error(`Invalid 'connection' header: ${value}`);
   9288 		}
   9289 
   9290 		if (lowercased === 'host' && this.method === 'CONNECT') {
   9291 			this[kHeaders][HTTP2_HEADER_AUTHORITY] = value;
   9292 		} else {
   9293 			this[kHeaders][lowercased] = value;
   9294 		}
   9295 	}
   9296 
   9297 	setNoDelay() {
   9298 		// HTTP2 sockets cannot be malformed, do nothing.
   9299 	}
   9300 
   9301 	setSocketKeepAlive() {
   9302 		// HTTP2 sockets cannot be malformed, do nothing.
   9303 	}
   9304 
   9305 	setTimeout(ms, callback) {
   9306 		const applyTimeout = () => this._request.setTimeout(ms, callback);
   9307 
   9308 		if (this._request) {
   9309 			applyTimeout();
   9310 		} else {
   9311 			this[kJobs].push(applyTimeout);
   9312 		}
   9313 
   9314 		return this;
   9315 	}
   9316 
   9317 	get maxHeadersCount() {
   9318 		if (!this.destroyed && this._request) {
   9319 			return this._request.session.localSettings.maxHeaderListSize;
   9320 		}
   9321 
   9322 		return undefined;
   9323 	}
   9324 
   9325 	set maxHeadersCount(_value) {
   9326 		// Updating HTTP2 settings would affect all requests, do nothing.
   9327 	}
   9328 }
   9329 
   9330 module.exports = ClientRequest;
   9331 
   9332 
   9333 /***/ }),
   9334 
   9335 /***/ 2575:
   9336 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9337 
   9338 
   9339 const {Readable} = __nccwpck_require__(2781);
   9340 
   9341 class IncomingMessage extends Readable {
   9342 	constructor(socket, highWaterMark) {
   9343 		super({
   9344 			emitClose: false,
   9345 			autoDestroy: true,
   9346 			highWaterMark
   9347 		});
   9348 
   9349 		this.statusCode = null;
   9350 		this.statusMessage = '';
   9351 		this.httpVersion = '2.0';
   9352 		this.httpVersionMajor = 2;
   9353 		this.httpVersionMinor = 0;
   9354 		this.headers = {};
   9355 		this.trailers = {};
   9356 		this.req = null;
   9357 
   9358 		this.aborted = false;
   9359 		this.complete = false;
   9360 		this.upgrade = null;
   9361 
   9362 		this.rawHeaders = [];
   9363 		this.rawTrailers = [];
   9364 
   9365 		this.socket = socket;
   9366 
   9367 		this._dumped = false;
   9368 	}
   9369 
   9370 	get connection() {
   9371 		return this.socket;
   9372 	}
   9373 
   9374 	set connection(value) {
   9375 		this.socket = value;
   9376 	}
   9377 
   9378 	_destroy(error, callback) {
   9379 		if (!this.readableEnded) {
   9380 			this.aborted = true;
   9381 		}
   9382 
   9383 		// See https://github.com/nodejs/node/issues/35303
   9384 		callback();
   9385 
   9386 		this.req._request.destroy(error);
   9387 	}
   9388 
   9389 	setTimeout(ms, callback) {
   9390 		this.req.setTimeout(ms, callback);
   9391 		return this;
   9392 	}
   9393 
   9394 	_dump() {
   9395 		if (!this._dumped) {
   9396 			this._dumped = true;
   9397 
   9398 			this.removeAllListeners('data');
   9399 			this.resume();
   9400 		}
   9401 	}
   9402 
   9403 	_read() {
   9404 		if (this.req) {
   9405 			this.req._request.resume();
   9406 		}
   9407 	}
   9408 }
   9409 
   9410 module.exports = IncomingMessage;
   9411 
   9412 
   9413 /***/ }),
   9414 
   9415 /***/ 4645:
   9416 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9417 
   9418 
   9419 const http2 = __nccwpck_require__(5158);
   9420 const {
   9421 	Agent,
   9422 	globalAgent
   9423 } = __nccwpck_require__(9898);
   9424 const ClientRequest = __nccwpck_require__(9632);
   9425 const IncomingMessage = __nccwpck_require__(2575);
   9426 const auto = __nccwpck_require__(7167);
   9427 const {
   9428 	HttpOverHttp2,
   9429 	HttpsOverHttp2
   9430 } = __nccwpck_require__(8795);
   9431 const Http2OverHttp2 = __nccwpck_require__(8553);
   9432 const {
   9433 	Http2OverHttp,
   9434 	Http2OverHttps
   9435 } = __nccwpck_require__(9794);
   9436 const validateHeaderName = __nccwpck_require__(4592);
   9437 const validateHeaderValue = __nccwpck_require__(3549);
   9438 
   9439 const request = (url, options, callback) => new ClientRequest(url, options, callback);
   9440 
   9441 const get = (url, options, callback) => {
   9442 	// eslint-disable-next-line unicorn/prevent-abbreviations
   9443 	const req = new ClientRequest(url, options, callback);
   9444 	req.end();
   9445 
   9446 	return req;
   9447 };
   9448 
   9449 module.exports = {
   9450 	...http2,
   9451 	ClientRequest,
   9452 	IncomingMessage,
   9453 	Agent,
   9454 	globalAgent,
   9455 	request,
   9456 	get,
   9457 	auto,
   9458 	proxies: {
   9459 		HttpOverHttp2,
   9460 		HttpsOverHttp2,
   9461 		Http2OverHttp2,
   9462 		Http2OverHttp,
   9463 		Http2OverHttps
   9464 	},
   9465 	validateHeaderName,
   9466 	validateHeaderValue
   9467 };
   9468 
   9469 
   9470 /***/ }),
   9471 
   9472 /***/ 7885:
   9473 /***/ ((module) => {
   9474 
   9475 
   9476 
   9477 module.exports = self => {
   9478 	const {username, password} = self.proxyOptions.url;
   9479 
   9480 	if (username || password) {
   9481 		const data = `${username}:${password}`;
   9482 		const authorization = `Basic ${Buffer.from(data).toString('base64')}`;
   9483 
   9484 		return {
   9485 			'proxy-authorization': authorization,
   9486 			authorization
   9487 		};
   9488 	}
   9489 
   9490 	return {};
   9491 };
   9492 
   9493 
   9494 /***/ }),
   9495 
   9496 /***/ 8795:
   9497 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9498 
   9499 
   9500 const tls = __nccwpck_require__(4404);
   9501 const http = __nccwpck_require__(3685);
   9502 const https = __nccwpck_require__(5687);
   9503 const JSStreamSocket = __nccwpck_require__(1564);
   9504 const {globalAgent} = __nccwpck_require__(9898);
   9505 const UnexpectedStatusCodeError = __nccwpck_require__(6203);
   9506 const initialize = __nccwpck_require__(1089);
   9507 const getAuthorizationHeaders = __nccwpck_require__(7885);
   9508 
   9509 const createConnection = (self, options, callback) => {
   9510 	(async () => {
   9511 		try {
   9512 			const {proxyOptions} = self;
   9513 			const {url, headers, raw} = proxyOptions;
   9514 
   9515 			const stream = await globalAgent.request(url, proxyOptions, {
   9516 				...getAuthorizationHeaders(self),
   9517 				...headers,
   9518 				':method': 'CONNECT',
   9519 				':authority': `${options.host}:${options.port}`
   9520 			});
   9521 
   9522 			stream.once('error', callback);
   9523 			stream.once('response', headers => {
   9524 				const statusCode = headers[':status'];
   9525 
   9526 				if (statusCode !== 200) {
   9527 					callback(new UnexpectedStatusCodeError(statusCode, ''));
   9528 					return;
   9529 				}
   9530 
   9531 				const encrypted = self instanceof https.Agent;
   9532 
   9533 				if (raw && encrypted) {
   9534 					options.socket = stream;
   9535 					const secureStream = tls.connect(options);
   9536 
   9537 					secureStream.once('close', () => {
   9538 						stream.destroy();
   9539 					});
   9540 
   9541 					callback(null, secureStream);
   9542 					return;
   9543 				}
   9544 
   9545 				const socket = new JSStreamSocket(stream);
   9546 				socket.encrypted = false;
   9547 				socket._handle.getpeername = out => {
   9548 					out.family = undefined;
   9549 					out.address = undefined;
   9550 					out.port = undefined;
   9551 				};
   9552 
   9553 				callback(null, socket);
   9554 			});
   9555 		} catch (error) {
   9556 			callback(error);
   9557 		}
   9558 	})();
   9559 };
   9560 
   9561 class HttpOverHttp2 extends http.Agent {
   9562 	constructor(options) {
   9563 		super(options);
   9564 
   9565 		initialize(this, options.proxyOptions);
   9566 	}
   9567 
   9568 	createConnection(options, callback) {
   9569 		createConnection(this, options, callback);
   9570 	}
   9571 }
   9572 
   9573 class HttpsOverHttp2 extends https.Agent {
   9574 	constructor(options) {
   9575 		super(options);
   9576 
   9577 		initialize(this, options.proxyOptions);
   9578 	}
   9579 
   9580 	createConnection(options, callback) {
   9581 		createConnection(this, options, callback);
   9582 	}
   9583 }
   9584 
   9585 module.exports = {
   9586 	HttpOverHttp2,
   9587 	HttpsOverHttp2
   9588 };
   9589 
   9590 
   9591 /***/ }),
   9592 
   9593 /***/ 9794:
   9594 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9595 
   9596 
   9597 const http = __nccwpck_require__(3685);
   9598 const https = __nccwpck_require__(5687);
   9599 const Http2OverHttpX = __nccwpck_require__(1857);
   9600 const getAuthorizationHeaders = __nccwpck_require__(7885);
   9601 
   9602 const getStream = request => new Promise((resolve, reject) => {
   9603 	const onConnect = (response, socket, head) => {
   9604 		socket.unshift(head);
   9605 
   9606 		request.off('error', reject);
   9607 		resolve([socket, response.statusCode, response.statusMessage]);
   9608 	};
   9609 
   9610 	request.once('error', reject);
   9611 	request.once('connect', onConnect);
   9612 });
   9613 
   9614 class Http2OverHttp extends Http2OverHttpX {
   9615 	async _getProxyStream(authority) {
   9616 		const {proxyOptions} = this;
   9617 		const {url, headers} = this.proxyOptions;
   9618 
   9619 		const network = url.protocol === 'https:' ? https : http;
   9620 
   9621 		// `new URL('https://localhost/httpbin.org:443')` results in
   9622 		// a `/httpbin.org:443` path, which has an invalid leading slash.
   9623 		const request = network.request({
   9624 			...proxyOptions,
   9625 			hostname: url.hostname,
   9626 			port: url.port,
   9627 			path: authority,
   9628 			headers: {
   9629 				...getAuthorizationHeaders(this),
   9630 				...headers,
   9631 				host: authority
   9632 			},
   9633 			method: 'CONNECT'
   9634 		}).end();
   9635 
   9636 		return getStream(request);
   9637 	}
   9638 }
   9639 
   9640 module.exports = {
   9641 	Http2OverHttp,
   9642 	Http2OverHttps: Http2OverHttp
   9643 };
   9644 
   9645 
   9646 /***/ }),
   9647 
   9648 /***/ 8553:
   9649 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9650 
   9651 
   9652 const {globalAgent} = __nccwpck_require__(9898);
   9653 const Http2OverHttpX = __nccwpck_require__(1857);
   9654 const getAuthorizationHeaders = __nccwpck_require__(7885);
   9655 
   9656 const getStatusCode = stream => new Promise((resolve, reject) => {
   9657 	stream.once('error', reject);
   9658 	stream.once('response', headers => {
   9659 		stream.off('error', reject);
   9660 		resolve(headers[':status']);
   9661 	});
   9662 });
   9663 
   9664 class Http2OverHttp2 extends Http2OverHttpX {
   9665 	async _getProxyStream(authority) {
   9666 		const {proxyOptions} = this;
   9667 
   9668 		const headers = {
   9669 			...getAuthorizationHeaders(this),
   9670 			...proxyOptions.headers,
   9671 			':method': 'CONNECT',
   9672 			':authority': authority
   9673 		};
   9674 
   9675 		const stream = await globalAgent.request(proxyOptions.url, proxyOptions, headers);
   9676 		const statusCode = await getStatusCode(stream);
   9677 
   9678 		return [stream, statusCode, ''];
   9679 	}
   9680 }
   9681 
   9682 module.exports = Http2OverHttp2;
   9683 
   9684 
   9685 /***/ }),
   9686 
   9687 /***/ 1857:
   9688 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9689 
   9690 
   9691 const {Agent} = __nccwpck_require__(9898);
   9692 const JSStreamSocket = __nccwpck_require__(1564);
   9693 const UnexpectedStatusCodeError = __nccwpck_require__(6203);
   9694 const initialize = __nccwpck_require__(1089);
   9695 
   9696 class Http2OverHttpX extends Agent {
   9697 	constructor(options) {
   9698 		super(options);
   9699 
   9700 		initialize(this, options.proxyOptions);
   9701 	}
   9702 
   9703 	async createConnection(origin, options) {
   9704 		const authority = `${origin.hostname}:${origin.port || 443}`;
   9705 
   9706 		const [stream, statusCode, statusMessage] = await this._getProxyStream(authority);
   9707 		if (statusCode !== 200) {
   9708 			throw new UnexpectedStatusCodeError(statusCode, statusMessage);
   9709 		}
   9710 
   9711 		if (this.proxyOptions.raw) {
   9712 			options.socket = stream;
   9713 		} else {
   9714 			const socket = new JSStreamSocket(stream);
   9715 			socket.encrypted = false;
   9716 			socket._handle.getpeername = out => {
   9717 				out.family = undefined;
   9718 				out.address = undefined;
   9719 				out.port = undefined;
   9720 			};
   9721 
   9722 			return socket;
   9723 		}
   9724 
   9725 		return super.createConnection(origin, options);
   9726 	}
   9727 }
   9728 
   9729 module.exports = Http2OverHttpX;
   9730 
   9731 
   9732 /***/ }),
   9733 
   9734 /***/ 1089:
   9735 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9736 
   9737 
   9738 // See https://github.com/facebook/jest/issues/2549
   9739 // eslint-disable-next-line node/prefer-global/url
   9740 const {URL} = __nccwpck_require__(7310);
   9741 const checkType = __nccwpck_require__(3453);
   9742 
   9743 module.exports = (self, proxyOptions) => {
   9744 	checkType('proxyOptions', proxyOptions, ['object']);
   9745 	checkType('proxyOptions.headers', proxyOptions.headers, ['object', 'undefined']);
   9746 	checkType('proxyOptions.raw', proxyOptions.raw, ['boolean', 'undefined']);
   9747 	checkType('proxyOptions.url', proxyOptions.url, [URL, 'string']);
   9748 
   9749 	const url = new URL(proxyOptions.url);
   9750 
   9751 	self.proxyOptions = {
   9752 		raw: true,
   9753 		...proxyOptions,
   9754 		headers: {...proxyOptions.headers},
   9755 		url
   9756 	};
   9757 };
   9758 
   9759 
   9760 /***/ }),
   9761 
   9762 /***/ 6203:
   9763 /***/ ((module) => {
   9764 
   9765 
   9766 
   9767 class UnexpectedStatusCodeError extends Error {
   9768 	constructor(statusCode, statusMessage = '') {
   9769 		super(`The proxy server rejected the request with status code ${statusCode} (${statusMessage || 'empty status message'})`);
   9770 		this.statusCode = statusCode;
   9771 		this.statusMessage = statusMessage;
   9772 	}
   9773 }
   9774 
   9775 module.exports = UnexpectedStatusCodeError;
   9776 
   9777 
   9778 /***/ }),
   9779 
   9780 /***/ 1982:
   9781 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9782 
   9783 
   9784 const {isIP} = __nccwpck_require__(1808);
   9785 const assert = __nccwpck_require__(9491);
   9786 
   9787 const getHost = host => {
   9788 	if (host[0] === '[') {
   9789 		const idx = host.indexOf(']');
   9790 
   9791 		assert(idx !== -1);
   9792 		return host.slice(1, idx);
   9793 	}
   9794 
   9795 	const idx = host.indexOf(':');
   9796 	if (idx === -1) {
   9797 		return host;
   9798 	}
   9799 
   9800 	return host.slice(0, idx);
   9801 };
   9802 
   9803 module.exports = host => {
   9804 	const servername = getHost(host);
   9805 
   9806 	if (isIP(servername)) {
   9807 		return '';
   9808 	}
   9809 
   9810 	return servername;
   9811 };
   9812 
   9813 
   9814 /***/ }),
   9815 
   9816 /***/ 3453:
   9817 /***/ ((module) => {
   9818 
   9819 
   9820 
   9821 const checkType = (name, value, types) => {
   9822 	const valid = types.some(type => {
   9823 		const typeofType = typeof type;
   9824 		if (typeofType === 'string') {
   9825 			return typeof value === type;
   9826 		}
   9827 
   9828 		return value instanceof type;
   9829 	});
   9830 
   9831 	if (!valid) {
   9832 		const names = types.map(type => typeof type === 'string' ? type : type.name);
   9833 
   9834 		throw new TypeError(`Expected '${name}' to be a type of ${names.join(' or ')}, got ${typeof value}`);
   9835 	}
   9836 };
   9837 
   9838 module.exports = checkType;
   9839 
   9840 
   9841 /***/ }),
   9842 
   9843 /***/ 9237:
   9844 /***/ ((module) => {
   9845 
   9846 
   9847 
   9848 module.exports = stream => {
   9849 	if (stream.listenerCount('error') !== 0) {
   9850 		return stream;
   9851 	}
   9852 
   9853 	stream.__destroy = stream._destroy;
   9854 	stream._destroy = (...args) => {
   9855 		const callback = args.pop();
   9856 
   9857 		stream.__destroy(...args, async error => {
   9858 			await Promise.resolve();
   9859 			callback(error);
   9860 		});
   9861 	};
   9862 
   9863 	const onError = error => {
   9864 		// eslint-disable-next-line promise/prefer-await-to-then
   9865 		Promise.resolve().then(() => {
   9866 			stream.emit('error', error);
   9867 		});
   9868 	};
   9869 
   9870 	stream.once('error', onError);
   9871 
   9872 	// eslint-disable-next-line promise/prefer-await-to-then
   9873 	Promise.resolve().then(() => {
   9874 		stream.off('error', onError);
   9875 	});
   9876 
   9877 	return stream;
   9878 };
   9879 
   9880 
   9881 /***/ }),
   9882 
   9883 /***/ 7087:
   9884 /***/ ((module) => {
   9885 
   9886 
   9887 /* istanbul ignore file: https://github.com/nodejs/node/blob/master/lib/internal/errors.js */
   9888 
   9889 const makeError = (Base, key, getMessage) => {
   9890 	module.exports[key] = class NodeError extends Base {
   9891 		constructor(...args) {
   9892 			super(typeof getMessage === 'string' ? getMessage : getMessage(args));
   9893 			this.name = `${super.name} [${key}]`;
   9894 			this.code = key;
   9895 		}
   9896 	};
   9897 };
   9898 
   9899 makeError(TypeError, 'ERR_INVALID_ARG_TYPE', args => {
   9900 	const type = args[0].includes('.') ? 'property' : 'argument';
   9901 
   9902 	let valid = args[1];
   9903 	const isManyTypes = Array.isArray(valid);
   9904 
   9905 	if (isManyTypes) {
   9906 		valid = `${valid.slice(0, -1).join(', ')} or ${valid.slice(-1)}`;
   9907 	}
   9908 
   9909 	return `The "${args[0]}" ${type} must be ${isManyTypes ? 'one of' : 'of'} type ${valid}. Received ${typeof args[2]}`;
   9910 });
   9911 
   9912 makeError(TypeError, 'ERR_INVALID_PROTOCOL', args =>
   9913 	`Protocol "${args[0]}" not supported. Expected "${args[1]}"`
   9914 );
   9915 
   9916 makeError(Error, 'ERR_HTTP_HEADERS_SENT', args =>
   9917 	`Cannot ${args[0]} headers after they are sent to the client`
   9918 );
   9919 
   9920 makeError(TypeError, 'ERR_INVALID_HTTP_TOKEN', args =>
   9921 	`${args[0]} must be a valid HTTP token [${args[1]}]`
   9922 );
   9923 
   9924 makeError(TypeError, 'ERR_HTTP_INVALID_HEADER_VALUE', args =>
   9925 	`Invalid value "${args[0]} for header "${args[1]}"`
   9926 );
   9927 
   9928 makeError(TypeError, 'ERR_INVALID_CHAR', args =>
   9929 	`Invalid character in ${args[0]} [${args[1]}]`
   9930 );
   9931 
   9932 makeError(
   9933 	Error,
   9934 	'ERR_HTTP2_NO_SOCKET_MANIPULATION',
   9935 	'HTTP/2 sockets should not be directly manipulated (e.g. read and written)'
   9936 );
   9937 
   9938 
   9939 /***/ }),
   9940 
   9941 /***/ 1199:
   9942 /***/ ((module) => {
   9943 
   9944 
   9945 
   9946 module.exports = header => {
   9947 	switch (header) {
   9948 		case ':method':
   9949 		case ':scheme':
   9950 		case ':authority':
   9951 		case ':path':
   9952 			return true;
   9953 		default:
   9954 			return false;
   9955 	}
   9956 };
   9957 
   9958 
   9959 /***/ }),
   9960 
   9961 /***/ 1564:
   9962 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9963 
   9964 
   9965 const stream = __nccwpck_require__(2781);
   9966 const tls = __nccwpck_require__(4404);
   9967 
   9968 // Really awesome hack.
   9969 const JSStreamSocket = (new tls.TLSSocket(new stream.PassThrough()))._handle._parentWrap.constructor;
   9970 
   9971 module.exports = JSStreamSocket;
   9972 
   9973 
   9974 /***/ }),
   9975 
   9976 /***/ 1818:
   9977 /***/ ((module) => {
   9978 
   9979 
   9980 
   9981 module.exports = (from, to, events) => {
   9982 	for (const event of events) {
   9983 		from.on(event, (...args) => to.emit(event, ...args));
   9984 	}
   9985 };
   9986 
   9987 
   9988 /***/ }),
   9989 
   9990 /***/ 9404:
   9991 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
   9992 
   9993 
   9994 const {ERR_HTTP2_NO_SOCKET_MANIPULATION} = __nccwpck_require__(7087);
   9995 
   9996 /* istanbul ignore file */
   9997 /* https://github.com/nodejs/node/blob/6eec858f34a40ffa489c1ec54bb24da72a28c781/lib/internal/http2/compat.js#L195-L272 */
   9998 
   9999 const proxySocketHandler = {
  10000 	has(stream, property) {
  10001 		// Replaced [kSocket] with .socket
  10002 		const reference = stream.session === undefined ? stream : stream.session.socket;
  10003 		return (property in stream) || (property in reference);
  10004 	},
  10005 
  10006 	get(stream, property) {
  10007 		switch (property) {
  10008 			case 'on':
  10009 			case 'once':
  10010 			case 'end':
  10011 			case 'emit':
  10012 			case 'destroy':
  10013 				return stream[property].bind(stream);
  10014 			case 'writable':
  10015 			case 'destroyed':
  10016 				return stream[property];
  10017 			case 'readable':
  10018 				if (stream.destroyed) {
  10019 					return false;
  10020 				}
  10021 
  10022 				return stream.readable;
  10023 			case 'setTimeout': {
  10024 				const {session} = stream;
  10025 				if (session !== undefined) {
  10026 					return session.setTimeout.bind(session);
  10027 				}
  10028 
  10029 				return stream.setTimeout.bind(stream);
  10030 			}
  10031 
  10032 			case 'write':
  10033 			case 'read':
  10034 			case 'pause':
  10035 			case 'resume':
  10036 				throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
  10037 			default: {
  10038 				// Replaced [kSocket] with .socket
  10039 				const reference = stream.session === undefined ? stream : stream.session.socket;
  10040 				const value = reference[property];
  10041 
  10042 				return typeof value === 'function' ? value.bind(reference) : value;
  10043 			}
  10044 		}
  10045 	},
  10046 
  10047 	getPrototypeOf(stream) {
  10048 		if (stream.session !== undefined) {
  10049 			// Replaced [kSocket] with .socket
  10050 			return Reflect.getPrototypeOf(stream.session.socket);
  10051 		}
  10052 
  10053 		return Reflect.getPrototypeOf(stream);
  10054 	},
  10055 
  10056 	set(stream, property, value) {
  10057 		switch (property) {
  10058 			case 'writable':
  10059 			case 'readable':
  10060 			case 'destroyed':
  10061 			case 'on':
  10062 			case 'once':
  10063 			case 'end':
  10064 			case 'emit':
  10065 			case 'destroy':
  10066 				stream[property] = value;
  10067 				return true;
  10068 			case 'setTimeout': {
  10069 				const {session} = stream;
  10070 				if (session === undefined) {
  10071 					stream.setTimeout = value;
  10072 				} else {
  10073 					session.setTimeout = value;
  10074 				}
  10075 
  10076 				return true;
  10077 			}
  10078 
  10079 			case 'write':
  10080 			case 'read':
  10081 			case 'pause':
  10082 			case 'resume':
  10083 				throw new ERR_HTTP2_NO_SOCKET_MANIPULATION();
  10084 			default: {
  10085 				// Replaced [kSocket] with .socket
  10086 				const reference = stream.session === undefined ? stream : stream.session.socket;
  10087 				reference[property] = value;
  10088 				return true;
  10089 			}
  10090 		}
  10091 	}
  10092 };
  10093 
  10094 module.exports = proxySocketHandler;
  10095 
  10096 
  10097 /***/ }),
  10098 
  10099 /***/ 4592:
  10100 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  10101 
  10102 
  10103 const {ERR_INVALID_HTTP_TOKEN} = __nccwpck_require__(7087);
  10104 const isRequestPseudoHeader = __nccwpck_require__(1199);
  10105 
  10106 const isValidHttpToken = /^[\^`\-\w!#$%&*+.|~]+$/;
  10107 
  10108 module.exports = name => {
  10109 	if (typeof name !== 'string' || (!isValidHttpToken.test(name) && !isRequestPseudoHeader(name))) {
  10110 		throw new ERR_INVALID_HTTP_TOKEN('Header name', name);
  10111 	}
  10112 };
  10113 
  10114 
  10115 /***/ }),
  10116 
  10117 /***/ 3549:
  10118 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  10119 
  10120 
  10121 const {
  10122 	ERR_HTTP_INVALID_HEADER_VALUE,
  10123 	ERR_INVALID_CHAR
  10124 } = __nccwpck_require__(7087);
  10125 
  10126 const isInvalidHeaderValue = /[^\t\u0020-\u007E\u0080-\u00FF]/;
  10127 
  10128 module.exports = (name, value) => {
  10129 	if (typeof value === 'undefined') {
  10130 		throw new ERR_HTTP_INVALID_HEADER_VALUE(value, name);
  10131 	}
  10132 
  10133 	if (isInvalidHeaderValue.test(value)) {
  10134 		throw new ERR_INVALID_CHAR('header content', name);
  10135 	}
  10136 };
  10137 
  10138 
  10139 /***/ }),
  10140 
  10141 /***/ 3287:
  10142 /***/ ((__unused_webpack_module, exports) => {
  10143 
  10144 
  10145 
  10146 Object.defineProperty(exports, "__esModule", ({ value: true }));
  10147 
  10148 /*!
  10149  * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
  10150  *
  10151  * Copyright (c) 2014-2017, Jon Schlinkert.
  10152  * Released under the MIT License.
  10153  */
  10154 
  10155 function isObject(o) {
  10156   return Object.prototype.toString.call(o) === '[object Object]';
  10157 }
  10158 
  10159 function isPlainObject(o) {
  10160   var ctor,prot;
  10161 
  10162   if (isObject(o) === false) return false;
  10163 
  10164   // If has modified constructor
  10165   ctor = o.constructor;
  10166   if (ctor === undefined) return true;
  10167 
  10168   // If has modified prototype
  10169   prot = ctor.prototype;
  10170   if (isObject(prot) === false) return false;
  10171 
  10172   // If constructor does not have an Object-specific method
  10173   if (prot.hasOwnProperty('isPrototypeOf') === false) {
  10174     return false;
  10175   }
  10176 
  10177   // Most likely a plain Object
  10178   return true;
  10179 }
  10180 
  10181 exports.isPlainObject = isPlainObject;
  10182 
  10183 
  10184 /***/ }),
  10185 
  10186 /***/ 2820:
  10187 /***/ ((__unused_webpack_module, exports) => {
  10188 
  10189 //TODO: handle reviver/dehydrate function like normal
  10190 //and handle indentation, like normal.
  10191 //if anyone needs this... please send pull request.
  10192 
  10193 exports.stringify = function stringify (o) {
  10194   if('undefined' == typeof o) return o
  10195 
  10196   if(o && Buffer.isBuffer(o))
  10197     return JSON.stringify(':base64:' + o.toString('base64'))
  10198 
  10199   if(o && o.toJSON)
  10200     o =  o.toJSON()
  10201 
  10202   if(o && 'object' === typeof o) {
  10203     var s = ''
  10204     var array = Array.isArray(o)
  10205     s = array ? '[' : '{'
  10206     var first = true
  10207 
  10208     for(var k in o) {
  10209       var ignore = 'function' == typeof o[k] || (!array && 'undefined' === typeof o[k])
  10210       if(Object.hasOwnProperty.call(o, k) && !ignore) {
  10211         if(!first)
  10212           s += ','
  10213         first = false
  10214         if (array) {
  10215           if(o[k] == undefined)
  10216             s += 'null'
  10217           else
  10218             s += stringify(o[k])
  10219         } else if (o[k] !== void(0)) {
  10220           s += stringify(k) + ':' + stringify(o[k])
  10221         }
  10222       }
  10223     }
  10224 
  10225     s += array ? ']' : '}'
  10226 
  10227     return s
  10228   } else if ('string' === typeof o) {
  10229     return JSON.stringify(/^:/.test(o) ? ':' + o : o)
  10230   } else if ('undefined' === typeof o) {
  10231     return 'null';
  10232   } else
  10233     return JSON.stringify(o)
  10234 }
  10235 
  10236 exports.parse = function (s) {
  10237   return JSON.parse(s, function (key, value) {
  10238     if('string' === typeof value) {
  10239       if(/^:base64:/.test(value))
  10240         return Buffer.from(value.substring(8), 'base64')
  10241       else
  10242         return /^:/.test(value) ? value.substring(1) : value 
  10243     }
  10244     return value
  10245   })
  10246 }
  10247 
  10248 
  10249 /***/ }),
  10250 
  10251 /***/ 1531:
  10252 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  10253 
  10254 
  10255 
  10256 const EventEmitter = __nccwpck_require__(2361);
  10257 const JSONB = __nccwpck_require__(2820);
  10258 
  10259 const loadStore = options => {
  10260 	const adapters = {
  10261 		redis: '@keyv/redis',
  10262 		rediss: '@keyv/redis',
  10263 		mongodb: '@keyv/mongo',
  10264 		mongo: '@keyv/mongo',
  10265 		sqlite: '@keyv/sqlite',
  10266 		postgresql: '@keyv/postgres',
  10267 		postgres: '@keyv/postgres',
  10268 		mysql: '@keyv/mysql',
  10269 		etcd: '@keyv/etcd',
  10270 		offline: '@keyv/offline',
  10271 		tiered: '@keyv/tiered',
  10272 	};
  10273 	if (options.adapter || options.uri) {
  10274 		const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
  10275 		return new (require(adapters[adapter]))(options);
  10276 	}
  10277 
  10278 	return new Map();
  10279 };
  10280 
  10281 const iterableAdapters = [
  10282 	'sqlite',
  10283 	'postgres',
  10284 	'mysql',
  10285 	'mongo',
  10286 	'redis',
  10287 	'tiered',
  10288 ];
  10289 
  10290 class Keyv extends EventEmitter {
  10291 	constructor(uri, {emitErrors = true, ...options} = {}) {
  10292 		super();
  10293 		this.opts = {
  10294 			namespace: 'keyv',
  10295 			serialize: JSONB.stringify,
  10296 			deserialize: JSONB.parse,
  10297 			...((typeof uri === 'string') ? {uri} : uri),
  10298 			...options,
  10299 		};
  10300 
  10301 		if (!this.opts.store) {
  10302 			const adapterOptions = {...this.opts};
  10303 			this.opts.store = loadStore(adapterOptions);
  10304 		}
  10305 
  10306 		if (this.opts.compression) {
  10307 			const compression = this.opts.compression;
  10308 			this.opts.serialize = compression.serialize.bind(compression);
  10309 			this.opts.deserialize = compression.deserialize.bind(compression);
  10310 		}
  10311 
  10312 		if (typeof this.opts.store.on === 'function' && emitErrors) {
  10313 			this.opts.store.on('error', error => this.emit('error', error));
  10314 		}
  10315 
  10316 		this.opts.store.namespace = this.opts.namespace;
  10317 
  10318 		const generateIterator = iterator => async function * () {
  10319 			for await (const [key, raw] of typeof iterator === 'function'
  10320 				? iterator(this.opts.store.namespace)
  10321 				: iterator) {
  10322 				const data = this.opts.deserialize(raw);
  10323 				if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
  10324 					continue;
  10325 				}
  10326 
  10327 				if (typeof data.expires === 'number' && Date.now() > data.expires) {
  10328 					this.delete(key);
  10329 					continue;
  10330 				}
  10331 
  10332 				yield [this._getKeyUnprefix(key), data.value];
  10333 			}
  10334 		};
  10335 
  10336 		// Attach iterators
  10337 		if (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {
  10338 			this.iterator = generateIterator(this.opts.store);
  10339 		} else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts
  10340 			&& this._checkIterableAdaptar()) {
  10341 			this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
  10342 		}
  10343 	}
  10344 
  10345 	_checkIterableAdaptar() {
  10346 		return iterableAdapters.includes(this.opts.store.opts.dialect)
  10347 			|| iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;
  10348 	}
  10349 
  10350 	_getKeyPrefix(key) {
  10351 		return `${this.opts.namespace}:${key}`;
  10352 	}
  10353 
  10354 	_getKeyPrefixArray(keys) {
  10355 		return keys.map(key => `${this.opts.namespace}:${key}`);
  10356 	}
  10357 
  10358 	_getKeyUnprefix(key) {
  10359 		return key
  10360 			.split(':')
  10361 			.splice(1)
  10362 			.join(':');
  10363 	}
  10364 
  10365 	get(key, options) {
  10366 		const {store} = this.opts;
  10367 		const isArray = Array.isArray(key);
  10368 		const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
  10369 		if (isArray && store.getMany === undefined) {
  10370 			const promises = [];
  10371 			for (const key of keyPrefixed) {
  10372 				promises.push(Promise.resolve()
  10373 					.then(() => store.get(key))
  10374 					.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
  10375 					.then(data => {
  10376 						if (data === undefined || data === null) {
  10377 							return undefined;
  10378 						}
  10379 
  10380 						if (typeof data.expires === 'number' && Date.now() > data.expires) {
  10381 							return this.delete(key).then(() => undefined);
  10382 						}
  10383 
  10384 						return (options && options.raw) ? data : data.value;
  10385 					}),
  10386 				);
  10387 			}
  10388 
  10389 			return Promise.allSettled(promises)
  10390 				.then(values => {
  10391 					const data = [];
  10392 					for (const value of values) {
  10393 						data.push(value.value);
  10394 					}
  10395 
  10396 					return data;
  10397 				});
  10398 		}
  10399 
  10400 		return Promise.resolve()
  10401 			.then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))
  10402 			.then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
  10403 			.then(data => {
  10404 				if (data === undefined || data === null) {
  10405 					return undefined;
  10406 				}
  10407 
  10408 				if (isArray) {
  10409 					const result = [];
  10410 
  10411 					for (let row of data) {
  10412 						if ((typeof row === 'string')) {
  10413 							row = this.opts.deserialize(row);
  10414 						}
  10415 
  10416 						if (row === undefined || row === null) {
  10417 							result.push(undefined);
  10418 							continue;
  10419 						}
  10420 
  10421 						if (typeof row.expires === 'number' && Date.now() > row.expires) {
  10422 							this.delete(key).then(() => undefined);
  10423 							result.push(undefined);
  10424 						} else {
  10425 							result.push((options && options.raw) ? row : row.value);
  10426 						}
  10427 					}
  10428 
  10429 					return result;
  10430 				}
  10431 
  10432 				if (typeof data.expires === 'number' && Date.now() > data.expires) {
  10433 					return this.delete(key).then(() => undefined);
  10434 				}
  10435 
  10436 				return (options && options.raw) ? data : data.value;
  10437 			});
  10438 	}
  10439 
  10440 	set(key, value, ttl) {
  10441 		const keyPrefixed = this._getKeyPrefix(key);
  10442 		if (typeof ttl === 'undefined') {
  10443 			ttl = this.opts.ttl;
  10444 		}
  10445 
  10446 		if (ttl === 0) {
  10447 			ttl = undefined;
  10448 		}
  10449 
  10450 		const {store} = this.opts;
  10451 
  10452 		return Promise.resolve()
  10453 			.then(() => {
  10454 				const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
  10455 				if (typeof value === 'symbol') {
  10456 					this.emit('error', 'symbol cannot be serialized');
  10457 				}
  10458 
  10459 				value = {value, expires};
  10460 				return this.opts.serialize(value);
  10461 			})
  10462 			.then(value => store.set(keyPrefixed, value, ttl))
  10463 			.then(() => true);
  10464 	}
  10465 
  10466 	delete(key) {
  10467 		const {store} = this.opts;
  10468 		if (Array.isArray(key)) {
  10469 			const keyPrefixed = this._getKeyPrefixArray(key);
  10470 			if (store.deleteMany === undefined) {
  10471 				const promises = [];
  10472 				for (const key of keyPrefixed) {
  10473 					promises.push(store.delete(key));
  10474 				}
  10475 
  10476 				return Promise.allSettled(promises)
  10477 					.then(values => values.every(x => x.value === true));
  10478 			}
  10479 
  10480 			return Promise.resolve()
  10481 				.then(() => store.deleteMany(keyPrefixed));
  10482 		}
  10483 
  10484 		const keyPrefixed = this._getKeyPrefix(key);
  10485 		return Promise.resolve()
  10486 			.then(() => store.delete(keyPrefixed));
  10487 	}
  10488 
  10489 	clear() {
  10490 		const {store} = this.opts;
  10491 		return Promise.resolve()
  10492 			.then(() => store.clear());
  10493 	}
  10494 
  10495 	has(key) {
  10496 		const keyPrefixed = this._getKeyPrefix(key);
  10497 		const {store} = this.opts;
  10498 		return Promise.resolve()
  10499 			.then(async () => {
  10500 				if (typeof store.has === 'function') {
  10501 					return store.has(keyPrefixed);
  10502 				}
  10503 
  10504 				const value = await store.get(keyPrefixed);
  10505 				return value !== undefined;
  10506 			});
  10507 	}
  10508 
  10509 	disconnect() {
  10510 		const {store} = this.opts;
  10511 		if (typeof store.disconnect === 'function') {
  10512 			return store.disconnect();
  10513 		}
  10514 	}
  10515 }
  10516 
  10517 module.exports = Keyv;
  10518 
  10519 
  10520 /***/ }),
  10521 
  10522 /***/ 3329:
  10523 /***/ (function(module) {
  10524 
  10525 (function(root, factory) {
  10526   if (typeof define === 'function' && define.amd) {
  10527     define([], factory) /* global define */
  10528   } else if ( true && module.exports) {
  10529     module.exports = factory()
  10530   } else {
  10531     root.moo = factory()
  10532   }
  10533 }(this, function() {
  10534   'use strict';
  10535 
  10536   var hasOwnProperty = Object.prototype.hasOwnProperty
  10537   var toString = Object.prototype.toString
  10538   var hasSticky = typeof new RegExp().sticky === 'boolean'
  10539 
  10540   /***************************************************************************/
  10541 
  10542   function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }
  10543   function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }
  10544 
  10545   function reEscape(s) {
  10546     return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
  10547   }
  10548   function reGroups(s) {
  10549     var re = new RegExp('|' + s)
  10550     return re.exec('').length - 1
  10551   }
  10552   function reCapture(s) {
  10553     return '(' + s + ')'
  10554   }
  10555   function reUnion(regexps) {
  10556     if (!regexps.length) return '(?!)'
  10557     var source =  regexps.map(function(s) {
  10558       return "(?:" + s + ")"
  10559     }).join('|')
  10560     return "(?:" + source + ")"
  10561   }
  10562 
  10563   function regexpOrLiteral(obj) {
  10564     if (typeof obj === 'string') {
  10565       return '(?:' + reEscape(obj) + ')'
  10566 
  10567     } else if (isRegExp(obj)) {
  10568       // TODO: consider /u support
  10569       if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')
  10570       if (obj.global) throw new Error('RegExp /g flag is implied')
  10571       if (obj.sticky) throw new Error('RegExp /y flag is implied')
  10572       if (obj.multiline) throw new Error('RegExp /m flag is implied')
  10573       return obj.source
  10574 
  10575     } else {
  10576       throw new Error('Not a pattern: ' + obj)
  10577     }
  10578   }
  10579 
  10580   function pad(s, length) {
  10581     if (s.length > length) {
  10582       return s
  10583     }
  10584     return Array(length - s.length + 1).join(" ") + s
  10585   }
  10586 
  10587   function lastNLines(string, numLines) {
  10588     var position = string.length
  10589     var lineBreaks = 0;
  10590     while (true) {
  10591       var idx = string.lastIndexOf("\n", position - 1)
  10592       if (idx === -1) {
  10593         break;
  10594       } else {
  10595         lineBreaks++
  10596       }
  10597       position = idx
  10598       if (lineBreaks === numLines) {
  10599         break;
  10600       }
  10601       if (position === 0) {
  10602         break;
  10603       }
  10604     }
  10605     var startPosition = 
  10606       lineBreaks < numLines ?
  10607       0 : 
  10608       position + 1
  10609     return string.substring(startPosition).split("\n")
  10610   }
  10611 
  10612   function objectToRules(object) {
  10613     var keys = Object.getOwnPropertyNames(object)
  10614     var result = []
  10615     for (var i = 0; i < keys.length; i++) {
  10616       var key = keys[i]
  10617       var thing = object[key]
  10618       var rules = [].concat(thing)
  10619       if (key === 'include') {
  10620         for (var j = 0; j < rules.length; j++) {
  10621           result.push({include: rules[j]})
  10622         }
  10623         continue
  10624       }
  10625       var match = []
  10626       rules.forEach(function(rule) {
  10627         if (isObject(rule)) {
  10628           if (match.length) result.push(ruleOptions(key, match))
  10629           result.push(ruleOptions(key, rule))
  10630           match = []
  10631         } else {
  10632           match.push(rule)
  10633         }
  10634       })
  10635       if (match.length) result.push(ruleOptions(key, match))
  10636     }
  10637     return result
  10638   }
  10639 
  10640   function arrayToRules(array) {
  10641     var result = []
  10642     for (var i = 0; i < array.length; i++) {
  10643       var obj = array[i]
  10644       if (obj.include) {
  10645         var include = [].concat(obj.include)
  10646         for (var j = 0; j < include.length; j++) {
  10647           result.push({include: include[j]})
  10648         }
  10649         continue
  10650       }
  10651       if (!obj.type) {
  10652         throw new Error('Rule has no type: ' + JSON.stringify(obj))
  10653       }
  10654       result.push(ruleOptions(obj.type, obj))
  10655     }
  10656     return result
  10657   }
  10658 
  10659   function ruleOptions(type, obj) {
  10660     if (!isObject(obj)) {
  10661       obj = { match: obj }
  10662     }
  10663     if (obj.include) {
  10664       throw new Error('Matching rules cannot also include states')
  10665     }
  10666 
  10667     // nb. error and fallback imply lineBreaks
  10668     var options = {
  10669       defaultType: type,
  10670       lineBreaks: !!obj.error || !!obj.fallback,
  10671       pop: false,
  10672       next: null,
  10673       push: null,
  10674       error: false,
  10675       fallback: false,
  10676       value: null,
  10677       type: null,
  10678       shouldThrow: false,
  10679     }
  10680 
  10681     // Avoid Object.assign(), so we support IE9+
  10682     for (var key in obj) {
  10683       if (hasOwnProperty.call(obj, key)) {
  10684         options[key] = obj[key]
  10685       }
  10686     }
  10687 
  10688     // type transform cannot be a string
  10689     if (typeof options.type === 'string' && type !== options.type) {
  10690       throw new Error("Type transform cannot be a string (type '" + options.type + "' for token '" + type + "')")
  10691     }
  10692 
  10693     // convert to array
  10694     var match = options.match
  10695     options.match = Array.isArray(match) ? match : match ? [match] : []
  10696     options.match.sort(function(a, b) {
  10697       return isRegExp(a) && isRegExp(b) ? 0
  10698            : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length
  10699     })
  10700     return options
  10701   }
  10702 
  10703   function toRules(spec) {
  10704     return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)
  10705   }
  10706 
  10707   var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})
  10708   function compileRules(rules, hasStates) {
  10709     var errorRule = null
  10710     var fast = Object.create(null)
  10711     var fastAllowed = true
  10712     var unicodeFlag = null
  10713     var groups = []
  10714     var parts = []
  10715 
  10716     // If there is a fallback rule, then disable fast matching
  10717     for (var i = 0; i < rules.length; i++) {
  10718       if (rules[i].fallback) {
  10719         fastAllowed = false
  10720       }
  10721     }
  10722 
  10723     for (var i = 0; i < rules.length; i++) {
  10724       var options = rules[i]
  10725 
  10726       if (options.include) {
  10727         // all valid inclusions are removed by states() preprocessor
  10728         throw new Error('Inheritance is not allowed in stateless lexers')
  10729       }
  10730 
  10731       if (options.error || options.fallback) {
  10732         // errorRule can only be set once
  10733         if (errorRule) {
  10734           if (!options.fallback === !errorRule.fallback) {
  10735             throw new Error("Multiple " + (options.fallback ? "fallback" : "error") + " rules not allowed (for token '" + options.defaultType + "')")
  10736           } else {
  10737             throw new Error("fallback and error are mutually exclusive (for token '" + options.defaultType + "')")
  10738           }
  10739         }
  10740         errorRule = options
  10741       }
  10742 
  10743       var match = options.match.slice()
  10744       if (fastAllowed) {
  10745         while (match.length && typeof match[0] === 'string' && match[0].length === 1) {
  10746           var word = match.shift()
  10747           fast[word.charCodeAt(0)] = options
  10748         }
  10749       }
  10750 
  10751       // Warn about inappropriate state-switching options
  10752       if (options.pop || options.push || options.next) {
  10753         if (!hasStates) {
  10754           throw new Error("State-switching options are not allowed in stateless lexers (for token '" + options.defaultType + "')")
  10755         }
  10756         if (options.fallback) {
  10757           throw new Error("State-switching options are not allowed on fallback tokens (for token '" + options.defaultType + "')")
  10758         }
  10759       }
  10760 
  10761       // Only rules with a .match are included in the RegExp
  10762       if (match.length === 0) {
  10763         continue
  10764       }
  10765       fastAllowed = false
  10766 
  10767       groups.push(options)
  10768 
  10769       // Check unicode flag is used everywhere or nowhere
  10770       for (var j = 0; j < match.length; j++) {
  10771         var obj = match[j]
  10772         if (!isRegExp(obj)) {
  10773           continue
  10774         }
  10775 
  10776         if (unicodeFlag === null) {
  10777           unicodeFlag = obj.unicode
  10778         } else if (unicodeFlag !== obj.unicode && options.fallback === false) {
  10779           throw new Error('If one rule is /u then all must be')
  10780         }
  10781       }
  10782 
  10783       // convert to RegExp
  10784       var pat = reUnion(match.map(regexpOrLiteral))
  10785 
  10786       // validate
  10787       var regexp = new RegExp(pat)
  10788       if (regexp.test("")) {
  10789         throw new Error("RegExp matches empty string: " + regexp)
  10790       }
  10791       var groupCount = reGroups(pat)
  10792       if (groupCount > 0) {
  10793         throw new Error("RegExp has capture groups: " + regexp + "\nUse (?: … ) instead")
  10794       }
  10795 
  10796       // try and detect rules matching newlines
  10797       if (!options.lineBreaks && regexp.test('\n')) {
  10798         throw new Error('Rule should declare lineBreaks: ' + regexp)
  10799       }
  10800 
  10801       // store regex
  10802       parts.push(reCapture(pat))
  10803     }
  10804 
  10805 
  10806     // If there's no fallback rule, use the sticky flag so we only look for
  10807     // matches at the current index.
  10808     //
  10809     // If we don't support the sticky flag, then fake it using an irrefutable
  10810     // match (i.e. an empty pattern).
  10811     var fallbackRule = errorRule && errorRule.fallback
  10812     var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'
  10813     var suffix = hasSticky || fallbackRule ? '' : '|'
  10814 
  10815     if (unicodeFlag === true) flags += "u"
  10816     var combined = new RegExp(reUnion(parts) + suffix, flags)
  10817     return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}
  10818   }
  10819 
  10820   function compile(rules) {
  10821     var result = compileRules(toRules(rules))
  10822     return new Lexer({start: result}, 'start')
  10823   }
  10824 
  10825   function checkStateGroup(g, name, map) {
  10826     var state = g && (g.push || g.next)
  10827     if (state && !map[state]) {
  10828       throw new Error("Missing state '" + state + "' (in token '" + g.defaultType + "' of state '" + name + "')")
  10829     }
  10830     if (g && g.pop && +g.pop !== 1) {
  10831       throw new Error("pop must be 1 (in token '" + g.defaultType + "' of state '" + name + "')")
  10832     }
  10833   }
  10834   function compileStates(states, start) {
  10835     var all = states.$all ? toRules(states.$all) : []
  10836     delete states.$all
  10837 
  10838     var keys = Object.getOwnPropertyNames(states)
  10839     if (!start) start = keys[0]
  10840 
  10841     var ruleMap = Object.create(null)
  10842     for (var i = 0; i < keys.length; i++) {
  10843       var key = keys[i]
  10844       ruleMap[key] = toRules(states[key]).concat(all)
  10845     }
  10846     for (var i = 0; i < keys.length; i++) {
  10847       var key = keys[i]
  10848       var rules = ruleMap[key]
  10849       var included = Object.create(null)
  10850       for (var j = 0; j < rules.length; j++) {
  10851         var rule = rules[j]
  10852         if (!rule.include) continue
  10853         var splice = [j, 1]
  10854         if (rule.include !== key && !included[rule.include]) {
  10855           included[rule.include] = true
  10856           var newRules = ruleMap[rule.include]
  10857           if (!newRules) {
  10858             throw new Error("Cannot include nonexistent state '" + rule.include + "' (in state '" + key + "')")
  10859           }
  10860           for (var k = 0; k < newRules.length; k++) {
  10861             var newRule = newRules[k]
  10862             if (rules.indexOf(newRule) !== -1) continue
  10863             splice.push(newRule)
  10864           }
  10865         }
  10866         rules.splice.apply(rules, splice)
  10867         j--
  10868       }
  10869     }
  10870 
  10871     var map = Object.create(null)
  10872     for (var i = 0; i < keys.length; i++) {
  10873       var key = keys[i]
  10874       map[key] = compileRules(ruleMap[key], true)
  10875     }
  10876 
  10877     for (var i = 0; i < keys.length; i++) {
  10878       var name = keys[i]
  10879       var state = map[name]
  10880       var groups = state.groups
  10881       for (var j = 0; j < groups.length; j++) {
  10882         checkStateGroup(groups[j], name, map)
  10883       }
  10884       var fastKeys = Object.getOwnPropertyNames(state.fast)
  10885       for (var j = 0; j < fastKeys.length; j++) {
  10886         checkStateGroup(state.fast[fastKeys[j]], name, map)
  10887       }
  10888     }
  10889 
  10890     return new Lexer(map, start)
  10891   }
  10892 
  10893   function keywordTransform(map) {
  10894 
  10895     // Use a JavaScript Map to map keywords to their corresponding token type
  10896     // unless Map is unsupported, then fall back to using an Object:
  10897     var isMap = typeof Map !== 'undefined'
  10898     var reverseMap = isMap ? new Map : Object.create(null)
  10899 
  10900     var types = Object.getOwnPropertyNames(map)
  10901     for (var i = 0; i < types.length; i++) {
  10902       var tokenType = types[i]
  10903       var item = map[tokenType]
  10904       var keywordList = Array.isArray(item) ? item : [item]
  10905       keywordList.forEach(function(keyword) {
  10906         if (typeof keyword !== 'string') {
  10907           throw new Error("keyword must be string (in keyword '" + tokenType + "')")
  10908         }
  10909         if (isMap) {
  10910           reverseMap.set(keyword, tokenType)
  10911         } else {
  10912           reverseMap[keyword] = tokenType
  10913         }
  10914       })
  10915     }
  10916     return function(k) {
  10917       return isMap ? reverseMap.get(k) : reverseMap[k]
  10918     }
  10919   }
  10920 
  10921   /***************************************************************************/
  10922 
  10923   var Lexer = function(states, state) {
  10924     this.startState = state
  10925     this.states = states
  10926     this.buffer = ''
  10927     this.stack = []
  10928     this.reset()
  10929   }
  10930 
  10931   Lexer.prototype.reset = function(data, info) {
  10932     this.buffer = data || ''
  10933     this.index = 0
  10934     this.line = info ? info.line : 1
  10935     this.col = info ? info.col : 1
  10936     this.queuedToken = info ? info.queuedToken : null
  10937     this.queuedText = info ? info.queuedText: "";
  10938     this.queuedThrow = info ? info.queuedThrow : null
  10939     this.setState(info ? info.state : this.startState)
  10940     this.stack = info && info.stack ? info.stack.slice() : []
  10941     return this
  10942   }
  10943 
  10944   Lexer.prototype.save = function() {
  10945     return {
  10946       line: this.line,
  10947       col: this.col,
  10948       state: this.state,
  10949       stack: this.stack.slice(),
  10950       queuedToken: this.queuedToken,
  10951       queuedText: this.queuedText,
  10952       queuedThrow: this.queuedThrow,
  10953     }
  10954   }
  10955 
  10956   Lexer.prototype.setState = function(state) {
  10957     if (!state || this.state === state) return
  10958     this.state = state
  10959     var info = this.states[state]
  10960     this.groups = info.groups
  10961     this.error = info.error
  10962     this.re = info.regexp
  10963     this.fast = info.fast
  10964   }
  10965 
  10966   Lexer.prototype.popState = function() {
  10967     this.setState(this.stack.pop())
  10968   }
  10969 
  10970   Lexer.prototype.pushState = function(state) {
  10971     this.stack.push(this.state)
  10972     this.setState(state)
  10973   }
  10974 
  10975   var eat = hasSticky ? function(re, buffer) { // assume re is /y
  10976     return re.exec(buffer)
  10977   } : function(re, buffer) { // assume re is /g
  10978     var match = re.exec(buffer)
  10979     // will always match, since we used the |(?:) trick
  10980     if (match[0].length === 0) {
  10981       return null
  10982     }
  10983     return match
  10984   }
  10985 
  10986   Lexer.prototype._getGroup = function(match) {
  10987     var groupCount = this.groups.length
  10988     for (var i = 0; i < groupCount; i++) {
  10989       if (match[i + 1] !== undefined) {
  10990         return this.groups[i]
  10991       }
  10992     }
  10993     throw new Error('Cannot find token type for matched text')
  10994   }
  10995 
  10996   function tokenToString() {
  10997     return this.value
  10998   }
  10999 
  11000   Lexer.prototype.next = function() {
  11001     var index = this.index
  11002 
  11003     // If a fallback token matched, we don't need to re-run the RegExp
  11004     if (this.queuedGroup) {
  11005       var token = this._token(this.queuedGroup, this.queuedText, index)
  11006       this.queuedGroup = null
  11007       this.queuedText = ""
  11008       return token
  11009     }
  11010 
  11011     var buffer = this.buffer
  11012     if (index === buffer.length) {
  11013       return // EOF
  11014     }
  11015 
  11016     // Fast matching for single characters
  11017     var group = this.fast[buffer.charCodeAt(index)]
  11018     if (group) {
  11019       return this._token(group, buffer.charAt(index), index)
  11020     }
  11021 
  11022     // Execute RegExp
  11023     var re = this.re
  11024     re.lastIndex = index
  11025     var match = eat(re, buffer)
  11026 
  11027     // Error tokens match the remaining buffer
  11028     var error = this.error
  11029     if (match == null) {
  11030       return this._token(error, buffer.slice(index, buffer.length), index)
  11031     }
  11032 
  11033     var group = this._getGroup(match)
  11034     var text = match[0]
  11035 
  11036     if (error.fallback && match.index !== index) {
  11037       this.queuedGroup = group
  11038       this.queuedText = text
  11039 
  11040       // Fallback tokens contain the unmatched portion of the buffer
  11041       return this._token(error, buffer.slice(index, match.index), index)
  11042     }
  11043 
  11044     return this._token(group, text, index)
  11045   }
  11046 
  11047   Lexer.prototype._token = function(group, text, offset) {
  11048     // count line breaks
  11049     var lineBreaks = 0
  11050     if (group.lineBreaks) {
  11051       var matchNL = /\n/g
  11052       var nl = 1
  11053       if (text === '\n') {
  11054         lineBreaks = 1
  11055       } else {
  11056         while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }
  11057       }
  11058     }
  11059 
  11060     var token = {
  11061       type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,
  11062       value: typeof group.value === 'function' ? group.value(text) : text,
  11063       text: text,
  11064       toString: tokenToString,
  11065       offset: offset,
  11066       lineBreaks: lineBreaks,
  11067       line: this.line,
  11068       col: this.col,
  11069     }
  11070     // nb. adding more props to token object will make V8 sad!
  11071 
  11072     var size = text.length
  11073     this.index += size
  11074     this.line += lineBreaks
  11075     if (lineBreaks !== 0) {
  11076       this.col = size - nl + 1
  11077     } else {
  11078       this.col += size
  11079     }
  11080 
  11081     // throw, if no rule with {error: true}
  11082     if (group.shouldThrow) {
  11083       var err = new Error(this.formatError(token, "invalid syntax"))
  11084       throw err;
  11085     }
  11086 
  11087     if (group.pop) this.popState()
  11088     else if (group.push) this.pushState(group.push)
  11089     else if (group.next) this.setState(group.next)
  11090 
  11091     return token
  11092   }
  11093 
  11094   if (typeof Symbol !== 'undefined' && Symbol.iterator) {
  11095     var LexerIterator = function(lexer) {
  11096       this.lexer = lexer
  11097     }
  11098 
  11099     LexerIterator.prototype.next = function() {
  11100       var token = this.lexer.next()
  11101       return {value: token, done: !token}
  11102     }
  11103 
  11104     LexerIterator.prototype[Symbol.iterator] = function() {
  11105       return this
  11106     }
  11107 
  11108     Lexer.prototype[Symbol.iterator] = function() {
  11109       return new LexerIterator(this)
  11110     }
  11111   }
  11112 
  11113   Lexer.prototype.formatError = function(token, message) {
  11114     if (token == null) {
  11115       // An undefined token indicates EOF
  11116       var text = this.buffer.slice(this.index)
  11117       var token = {
  11118         text: text,
  11119         offset: this.index,
  11120         lineBreaks: text.indexOf('\n') === -1 ? 0 : 1,
  11121         line: this.line,
  11122         col: this.col,
  11123       }
  11124     }
  11125     
  11126     var numLinesAround = 2
  11127     var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)
  11128     var lastDisplayedLine = token.line + numLinesAround
  11129     var lastLineDigits = String(lastDisplayedLine).length
  11130     var displayedLines = lastNLines(
  11131         this.buffer, 
  11132         (this.line - token.line) + numLinesAround + 1
  11133       )
  11134       .slice(0, 5)
  11135     var errorLines = []
  11136     errorLines.push(message + " at line " + token.line + " col " + token.col + ":")
  11137     errorLines.push("")
  11138     for (var i = 0; i < displayedLines.length; i++) {
  11139       var line = displayedLines[i]
  11140       var lineNo = firstDisplayedLine + i
  11141       errorLines.push(pad(String(lineNo), lastLineDigits) + "  " + line);
  11142       if (lineNo === token.line) {
  11143         errorLines.push(pad("", lastLineDigits + token.col + 1) + "^")
  11144       }
  11145     }
  11146     return errorLines.join("\n")
  11147   }
  11148 
  11149   Lexer.prototype.clone = function() {
  11150     return new Lexer(this.states, this.state)
  11151   }
  11152 
  11153   Lexer.prototype.has = function(tokenType) {
  11154     return true
  11155   }
  11156 
  11157 
  11158   return {
  11159     compile: compile,
  11160     states: compileStates,
  11161     error: Object.freeze({error: true}),
  11162     fallback: Object.freeze({fallback: true}),
  11163     keywords: keywordTransform,
  11164   }
  11165 
  11166 }));
  11167 
  11168 
  11169 /***/ }),
  11170 
  11171 /***/ 7800:
  11172 /***/ (function(module) {
  11173 
  11174 (function(root, factory) {
  11175     if ( true && module.exports) {
  11176         module.exports = factory();
  11177     } else {
  11178         root.nearley = factory();
  11179     }
  11180 }(this, function() {
  11181 
  11182     function Rule(name, symbols, postprocess) {
  11183         this.id = ++Rule.highestId;
  11184         this.name = name;
  11185         this.symbols = symbols;        // a list of literal | regex class | nonterminal
  11186         this.postprocess = postprocess;
  11187         return this;
  11188     }
  11189     Rule.highestId = 0;
  11190 
  11191     Rule.prototype.toString = function(withCursorAt) {
  11192         var symbolSequence = (typeof withCursorAt === "undefined")
  11193                              ? this.symbols.map(getSymbolShortDisplay).join(' ')
  11194                              : (   this.symbols.slice(0, withCursorAt).map(getSymbolShortDisplay).join(' ')
  11195                                  + " ● "
  11196                                  + this.symbols.slice(withCursorAt).map(getSymbolShortDisplay).join(' ')     );
  11197         return this.name + " → " + symbolSequence;
  11198     }
  11199 
  11200 
  11201     // a State is a rule at a position from a given starting point in the input stream (reference)
  11202     function State(rule, dot, reference, wantedBy) {
  11203         this.rule = rule;
  11204         this.dot = dot;
  11205         this.reference = reference;
  11206         this.data = [];
  11207         this.wantedBy = wantedBy;
  11208         this.isComplete = this.dot === rule.symbols.length;
  11209     }
  11210 
  11211     State.prototype.toString = function() {
  11212         return "{" + this.rule.toString(this.dot) + "}, from: " + (this.reference || 0);
  11213     };
  11214 
  11215     State.prototype.nextState = function(child) {
  11216         var state = new State(this.rule, this.dot + 1, this.reference, this.wantedBy);
  11217         state.left = this;
  11218         state.right = child;
  11219         if (state.isComplete) {
  11220             state.data = state.build();
  11221             // Having right set here will prevent the right state and its children
  11222             // form being garbage collected
  11223             state.right = undefined;
  11224         }
  11225         return state;
  11226     };
  11227 
  11228     State.prototype.build = function() {
  11229         var children = [];
  11230         var node = this;
  11231         do {
  11232             children.push(node.right.data);
  11233             node = node.left;
  11234         } while (node.left);
  11235         children.reverse();
  11236         return children;
  11237     };
  11238 
  11239     State.prototype.finish = function() {
  11240         if (this.rule.postprocess) {
  11241             this.data = this.rule.postprocess(this.data, this.reference, Parser.fail);
  11242         }
  11243     };
  11244 
  11245 
  11246     function Column(grammar, index) {
  11247         this.grammar = grammar;
  11248         this.index = index;
  11249         this.states = [];
  11250         this.wants = {}; // states indexed by the non-terminal they expect
  11251         this.scannable = []; // list of states that expect a token
  11252         this.completed = {}; // states that are nullable
  11253     }
  11254 
  11255 
  11256     Column.prototype.process = function(nextColumn) {
  11257         var states = this.states;
  11258         var wants = this.wants;
  11259         var completed = this.completed;
  11260 
  11261         for (var w = 0; w < states.length; w++) { // nb. we push() during iteration
  11262             var state = states[w];
  11263 
  11264             if (state.isComplete) {
  11265                 state.finish();
  11266                 if (state.data !== Parser.fail) {
  11267                     // complete
  11268                     var wantedBy = state.wantedBy;
  11269                     for (var i = wantedBy.length; i--; ) { // this line is hot
  11270                         var left = wantedBy[i];
  11271                         this.complete(left, state);
  11272                     }
  11273 
  11274                     // special-case nullables
  11275                     if (state.reference === this.index) {
  11276                         // make sure future predictors of this rule get completed.
  11277                         var exp = state.rule.name;
  11278                         (this.completed[exp] = this.completed[exp] || []).push(state);
  11279                     }
  11280                 }
  11281 
  11282             } else {
  11283                 // queue scannable states
  11284                 var exp = state.rule.symbols[state.dot];
  11285                 if (typeof exp !== 'string') {
  11286                     this.scannable.push(state);
  11287                     continue;
  11288                 }
  11289 
  11290                 // predict
  11291                 if (wants[exp]) {
  11292                     wants[exp].push(state);
  11293 
  11294                     if (completed.hasOwnProperty(exp)) {
  11295                         var nulls = completed[exp];
  11296                         for (var i = 0; i < nulls.length; i++) {
  11297                             var right = nulls[i];
  11298                             this.complete(state, right);
  11299                         }
  11300                     }
  11301                 } else {
  11302                     wants[exp] = [state];
  11303                     this.predict(exp);
  11304                 }
  11305             }
  11306         }
  11307     }
  11308 
  11309     Column.prototype.predict = function(exp) {
  11310         var rules = this.grammar.byName[exp] || [];
  11311 
  11312         for (var i = 0; i < rules.length; i++) {
  11313             var r = rules[i];
  11314             var wantedBy = this.wants[exp];
  11315             var s = new State(r, 0, this.index, wantedBy);
  11316             this.states.push(s);
  11317         }
  11318     }
  11319 
  11320     Column.prototype.complete = function(left, right) {
  11321         var copy = left.nextState(right);
  11322         this.states.push(copy);
  11323     }
  11324 
  11325 
  11326     function Grammar(rules, start) {
  11327         this.rules = rules;
  11328         this.start = start || this.rules[0].name;
  11329         var byName = this.byName = {};
  11330         this.rules.forEach(function(rule) {
  11331             if (!byName.hasOwnProperty(rule.name)) {
  11332                 byName[rule.name] = [];
  11333             }
  11334             byName[rule.name].push(rule);
  11335         });
  11336     }
  11337 
  11338     // So we can allow passing (rules, start) directly to Parser for backwards compatibility
  11339     Grammar.fromCompiled = function(rules, start) {
  11340         var lexer = rules.Lexer;
  11341         if (rules.ParserStart) {
  11342           start = rules.ParserStart;
  11343           rules = rules.ParserRules;
  11344         }
  11345         var rules = rules.map(function (r) { return (new Rule(r.name, r.symbols, r.postprocess)); });
  11346         var g = new Grammar(rules, start);
  11347         g.lexer = lexer; // nb. storing lexer on Grammar is iffy, but unavoidable
  11348         return g;
  11349     }
  11350 
  11351 
  11352     function StreamLexer() {
  11353       this.reset("");
  11354     }
  11355 
  11356     StreamLexer.prototype.reset = function(data, state) {
  11357         this.buffer = data;
  11358         this.index = 0;
  11359         this.line = state ? state.line : 1;
  11360         this.lastLineBreak = state ? -state.col : 0;
  11361     }
  11362 
  11363     StreamLexer.prototype.next = function() {
  11364         if (this.index < this.buffer.length) {
  11365             var ch = this.buffer[this.index++];
  11366             if (ch === '\n') {
  11367               this.line += 1;
  11368               this.lastLineBreak = this.index;
  11369             }
  11370             return {value: ch};
  11371         }
  11372     }
  11373 
  11374     StreamLexer.prototype.save = function() {
  11375       return {
  11376         line: this.line,
  11377         col: this.index - this.lastLineBreak,
  11378       }
  11379     }
  11380 
  11381     StreamLexer.prototype.formatError = function(token, message) {
  11382         // nb. this gets called after consuming the offending token,
  11383         // so the culprit is index-1
  11384         var buffer = this.buffer;
  11385         if (typeof buffer === 'string') {
  11386             var lines = buffer
  11387                 .split("\n")
  11388                 .slice(
  11389                     Math.max(0, this.line - 5), 
  11390                     this.line
  11391                 );
  11392 
  11393             var nextLineBreak = buffer.indexOf('\n', this.index);
  11394             if (nextLineBreak === -1) nextLineBreak = buffer.length;
  11395             var col = this.index - this.lastLineBreak;
  11396             var lastLineDigits = String(this.line).length;
  11397             message += " at line " + this.line + " col " + col + ":\n\n";
  11398             message += lines
  11399                 .map(function(line, i) {
  11400                     return pad(this.line - lines.length + i + 1, lastLineDigits) + " " + line;
  11401                 }, this)
  11402                 .join("\n");
  11403             message += "\n" + pad("", lastLineDigits + col) + "^\n";
  11404             return message;
  11405         } else {
  11406             return message + " at index " + (this.index - 1);
  11407         }
  11408 
  11409         function pad(n, length) {
  11410             var s = String(n);
  11411             return Array(length - s.length + 1).join(" ") + s;
  11412         }
  11413     }
  11414 
  11415     function Parser(rules, start, options) {
  11416         if (rules instanceof Grammar) {
  11417             var grammar = rules;
  11418             var options = start;
  11419         } else {
  11420             var grammar = Grammar.fromCompiled(rules, start);
  11421         }
  11422         this.grammar = grammar;
  11423 
  11424         // Read options
  11425         this.options = {
  11426             keepHistory: false,
  11427             lexer: grammar.lexer || new StreamLexer,
  11428         };
  11429         for (var key in (options || {})) {
  11430             this.options[key] = options[key];
  11431         }
  11432 
  11433         // Setup lexer
  11434         this.lexer = this.options.lexer;
  11435         this.lexerState = undefined;
  11436 
  11437         // Setup a table
  11438         var column = new Column(grammar, 0);
  11439         var table = this.table = [column];
  11440 
  11441         // I could be expecting anything.
  11442         column.wants[grammar.start] = [];
  11443         column.predict(grammar.start);
  11444         // TODO what if start rule is nullable?
  11445         column.process();
  11446         this.current = 0; // token index
  11447     }
  11448 
  11449     // create a reserved token for indicating a parse fail
  11450     Parser.fail = {};
  11451 
  11452     Parser.prototype.feed = function(chunk) {
  11453         var lexer = this.lexer;
  11454         lexer.reset(chunk, this.lexerState);
  11455 
  11456         var token;
  11457         while (true) {
  11458             try {
  11459                 token = lexer.next();
  11460                 if (!token) {
  11461                     break;
  11462                 }
  11463             } catch (e) {
  11464                 // Create the next column so that the error reporter
  11465                 // can display the correctly predicted states.
  11466                 var nextColumn = new Column(this.grammar, this.current + 1);
  11467                 this.table.push(nextColumn);
  11468                 var err = new Error(this.reportLexerError(e));
  11469                 err.offset = this.current;
  11470                 err.token = e.token;
  11471                 throw err;
  11472             }
  11473             // We add new states to table[current+1]
  11474             var column = this.table[this.current];
  11475 
  11476             // GC unused states
  11477             if (!this.options.keepHistory) {
  11478                 delete this.table[this.current - 1];
  11479             }
  11480 
  11481             var n = this.current + 1;
  11482             var nextColumn = new Column(this.grammar, n);
  11483             this.table.push(nextColumn);
  11484 
  11485             // Advance all tokens that expect the symbol
  11486             var literal = token.text !== undefined ? token.text : token.value;
  11487             var value = lexer.constructor === StreamLexer ? token.value : token;
  11488             var scannable = column.scannable;
  11489             for (var w = scannable.length; w--; ) {
  11490                 var state = scannable[w];
  11491                 var expect = state.rule.symbols[state.dot];
  11492                 // Try to consume the token
  11493                 // either regex or literal
  11494                 if (expect.test ? expect.test(value) :
  11495                     expect.type ? expect.type === token.type
  11496                                 : expect.literal === literal) {
  11497                     // Add it
  11498                     var next = state.nextState({data: value, token: token, isToken: true, reference: n - 1});
  11499                     nextColumn.states.push(next);
  11500                 }
  11501             }
  11502 
  11503             // Next, for each of the rules, we either
  11504             // (a) complete it, and try to see if the reference row expected that
  11505             //     rule
  11506             // (b) predict the next nonterminal it expects by adding that
  11507             //     nonterminal's start state
  11508             // To prevent duplication, we also keep track of rules we have already
  11509             // added
  11510 
  11511             nextColumn.process();
  11512 
  11513             // If needed, throw an error:
  11514             if (nextColumn.states.length === 0) {
  11515                 // No states at all! This is not good.
  11516                 var err = new Error(this.reportError(token));
  11517                 err.offset = this.current;
  11518                 err.token = token;
  11519                 throw err;
  11520             }
  11521 
  11522             // maybe save lexer state
  11523             if (this.options.keepHistory) {
  11524               column.lexerState = lexer.save()
  11525             }
  11526 
  11527             this.current++;
  11528         }
  11529         if (column) {
  11530           this.lexerState = lexer.save()
  11531         }
  11532 
  11533         // Incrementally keep track of results
  11534         this.results = this.finish();
  11535 
  11536         // Allow chaining, for whatever it's worth
  11537         return this;
  11538     };
  11539 
  11540     Parser.prototype.reportLexerError = function(lexerError) {
  11541         var tokenDisplay, lexerMessage;
  11542         // Planning to add a token property to moo's thrown error
  11543         // even on erroring tokens to be used in error display below
  11544         var token = lexerError.token;
  11545         if (token) {
  11546             tokenDisplay = "input " + JSON.stringify(token.text[0]) + " (lexer error)";
  11547             lexerMessage = this.lexer.formatError(token, "Syntax error");
  11548         } else {
  11549             tokenDisplay = "input (lexer error)";
  11550             lexerMessage = lexerError.message;
  11551         }
  11552         return this.reportErrorCommon(lexerMessage, tokenDisplay);
  11553     };
  11554 
  11555     Parser.prototype.reportError = function(token) {
  11556         var tokenDisplay = (token.type ? token.type + " token: " : "") + JSON.stringify(token.value !== undefined ? token.value : token);
  11557         var lexerMessage = this.lexer.formatError(token, "Syntax error");
  11558         return this.reportErrorCommon(lexerMessage, tokenDisplay);
  11559     };
  11560 
  11561     Parser.prototype.reportErrorCommon = function(lexerMessage, tokenDisplay) {
  11562         var lines = [];
  11563         lines.push(lexerMessage);
  11564         var lastColumnIndex = this.table.length - 2;
  11565         var lastColumn = this.table[lastColumnIndex];
  11566         var expectantStates = lastColumn.states
  11567             .filter(function(state) {
  11568                 var nextSymbol = state.rule.symbols[state.dot];
  11569                 return nextSymbol && typeof nextSymbol !== "string";
  11570             });
  11571 
  11572         if (expectantStates.length === 0) {
  11573             lines.push('Unexpected ' + tokenDisplay + '. I did not expect any more input. Here is the state of my parse table:\n');
  11574             this.displayStateStack(lastColumn.states, lines);
  11575         } else {
  11576             lines.push('Unexpected ' + tokenDisplay + '. Instead, I was expecting to see one of the following:\n');
  11577             // Display a "state stack" for each expectant state
  11578             // - which shows you how this state came to be, step by step.
  11579             // If there is more than one derivation, we only display the first one.
  11580             var stateStacks = expectantStates
  11581                 .map(function(state) {
  11582                     return this.buildFirstStateStack(state, []) || [state];
  11583                 }, this);
  11584             // Display each state that is expecting a terminal symbol next.
  11585             stateStacks.forEach(function(stateStack) {
  11586                 var state = stateStack[0];
  11587                 var nextSymbol = state.rule.symbols[state.dot];
  11588                 var symbolDisplay = this.getSymbolDisplay(nextSymbol);
  11589                 lines.push('A ' + symbolDisplay + ' based on:');
  11590                 this.displayStateStack(stateStack, lines);
  11591             }, this);
  11592         }
  11593         lines.push("");
  11594         return lines.join("\n");
  11595     }
  11596     
  11597     Parser.prototype.displayStateStack = function(stateStack, lines) {
  11598         var lastDisplay;
  11599         var sameDisplayCount = 0;
  11600         for (var j = 0; j < stateStack.length; j++) {
  11601             var state = stateStack[j];
  11602             var display = state.rule.toString(state.dot);
  11603             if (display === lastDisplay) {
  11604                 sameDisplayCount++;
  11605             } else {
  11606                 if (sameDisplayCount > 0) {
  11607                     lines.push('    ^ ' + sameDisplayCount + ' more lines identical to this');
  11608                 }
  11609                 sameDisplayCount = 0;
  11610                 lines.push('    ' + display);
  11611             }
  11612             lastDisplay = display;
  11613         }
  11614     };
  11615 
  11616     Parser.prototype.getSymbolDisplay = function(symbol) {
  11617         return getSymbolLongDisplay(symbol);
  11618     };
  11619 
  11620     /*
  11621     Builds a the first state stack. You can think of a state stack as the call stack
  11622     of the recursive-descent parser which the Nearley parse algorithm simulates.
  11623     A state stack is represented as an array of state objects. Within a
  11624     state stack, the first item of the array will be the starting
  11625     state, with each successive item in the array going further back into history.
  11626 
  11627     This function needs to be given a starting state and an empty array representing
  11628     the visited states, and it returns an single state stack.
  11629 
  11630     */
  11631     Parser.prototype.buildFirstStateStack = function(state, visited) {
  11632         if (visited.indexOf(state) !== -1) {
  11633             // Found cycle, return null
  11634             // to eliminate this path from the results, because
  11635             // we don't know how to display it meaningfully
  11636             return null;
  11637         }
  11638         if (state.wantedBy.length === 0) {
  11639             return [state];
  11640         }
  11641         var prevState = state.wantedBy[0];
  11642         var childVisited = [state].concat(visited);
  11643         var childResult = this.buildFirstStateStack(prevState, childVisited);
  11644         if (childResult === null) {
  11645             return null;
  11646         }
  11647         return [state].concat(childResult);
  11648     };
  11649 
  11650     Parser.prototype.save = function() {
  11651         var column = this.table[this.current];
  11652         column.lexerState = this.lexerState;
  11653         return column;
  11654     };
  11655 
  11656     Parser.prototype.restore = function(column) {
  11657         var index = column.index;
  11658         this.current = index;
  11659         this.table[index] = column;
  11660         this.table.splice(index + 1);
  11661         this.lexerState = column.lexerState;
  11662 
  11663         // Incrementally keep track of results
  11664         this.results = this.finish();
  11665     };
  11666 
  11667     // nb. deprecated: use save/restore instead!
  11668     Parser.prototype.rewind = function(index) {
  11669         if (!this.options.keepHistory) {
  11670             throw new Error('set option `keepHistory` to enable rewinding')
  11671         }
  11672         // nb. recall column (table) indicies fall between token indicies.
  11673         //        col 0   --   token 0   --   col 1
  11674         this.restore(this.table[index]);
  11675     };
  11676 
  11677     Parser.prototype.finish = function() {
  11678         // Return the possible parsings
  11679         var considerations = [];
  11680         var start = this.grammar.start;
  11681         var column = this.table[this.table.length - 1]
  11682         column.states.forEach(function (t) {
  11683             if (t.rule.name === start
  11684                     && t.dot === t.rule.symbols.length
  11685                     && t.reference === 0
  11686                     && t.data !== Parser.fail) {
  11687                 considerations.push(t);
  11688             }
  11689         });
  11690         return considerations.map(function(c) {return c.data; });
  11691     };
  11692 
  11693     function getSymbolLongDisplay(symbol) {
  11694         var type = typeof symbol;
  11695         if (type === "string") {
  11696             return symbol;
  11697         } else if (type === "object") {
  11698             if (symbol.literal) {
  11699                 return JSON.stringify(symbol.literal);
  11700             } else if (symbol instanceof RegExp) {
  11701                 return 'character matching ' + symbol;
  11702             } else if (symbol.type) {
  11703                 return symbol.type + ' token';
  11704             } else if (symbol.test) {
  11705                 return 'token matching ' + String(symbol.test);
  11706             } else {
  11707                 throw new Error('Unknown symbol type: ' + symbol);
  11708             }
  11709         }
  11710     }
  11711 
  11712     function getSymbolShortDisplay(symbol) {
  11713         var type = typeof symbol;
  11714         if (type === "string") {
  11715             return symbol;
  11716         } else if (type === "object") {
  11717             if (symbol.literal) {
  11718                 return JSON.stringify(symbol.literal);
  11719             } else if (symbol instanceof RegExp) {
  11720                 return symbol.toString();
  11721             } else if (symbol.type) {
  11722                 return '%' + symbol.type;
  11723             } else if (symbol.test) {
  11724                 return '<' + String(symbol.test) + '>';
  11725             } else {
  11726                 throw new Error('Unknown symbol type: ' + symbol);
  11727             }
  11728         }
  11729     }
  11730 
  11731     return {
  11732         Parser: Parser,
  11733         Grammar: Grammar,
  11734         Rule: Rule,
  11735     };
  11736 
  11737 }));
  11738 
  11739 
  11740 /***/ }),
  11741 
  11742 /***/ 467:
  11743 /***/ ((module, exports, __nccwpck_require__) => {
  11744 
  11745 
  11746 
  11747 Object.defineProperty(exports, "__esModule", ({ value: true }));
  11748 
  11749 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
  11750 
  11751 var Stream = _interopDefault(__nccwpck_require__(2781));
  11752 var http = _interopDefault(__nccwpck_require__(3685));
  11753 var Url = _interopDefault(__nccwpck_require__(7310));
  11754 var whatwgUrl = _interopDefault(__nccwpck_require__(8665));
  11755 var https = _interopDefault(__nccwpck_require__(5687));
  11756 var zlib = _interopDefault(__nccwpck_require__(9796));
  11757 
  11758 // Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
  11759 
  11760 // fix for "Readable" isn't a named export issue
  11761 const Readable = Stream.Readable;
  11762 
  11763 const BUFFER = Symbol('buffer');
  11764 const TYPE = Symbol('type');
  11765 
  11766 class Blob {
  11767 	constructor() {
  11768 		this[TYPE] = '';
  11769 
  11770 		const blobParts = arguments[0];
  11771 		const options = arguments[1];
  11772 
  11773 		const buffers = [];
  11774 		let size = 0;
  11775 
  11776 		if (blobParts) {
  11777 			const a = blobParts;
  11778 			const length = Number(a.length);
  11779 			for (let i = 0; i < length; i++) {
  11780 				const element = a[i];
  11781 				let buffer;
  11782 				if (element instanceof Buffer) {
  11783 					buffer = element;
  11784 				} else if (ArrayBuffer.isView(element)) {
  11785 					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
  11786 				} else if (element instanceof ArrayBuffer) {
  11787 					buffer = Buffer.from(element);
  11788 				} else if (element instanceof Blob) {
  11789 					buffer = element[BUFFER];
  11790 				} else {
  11791 					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
  11792 				}
  11793 				size += buffer.length;
  11794 				buffers.push(buffer);
  11795 			}
  11796 		}
  11797 
  11798 		this[BUFFER] = Buffer.concat(buffers);
  11799 
  11800 		let type = options && options.type !== undefined && String(options.type).toLowerCase();
  11801 		if (type && !/[^\u0020-\u007E]/.test(type)) {
  11802 			this[TYPE] = type;
  11803 		}
  11804 	}
  11805 	get size() {
  11806 		return this[BUFFER].length;
  11807 	}
  11808 	get type() {
  11809 		return this[TYPE];
  11810 	}
  11811 	text() {
  11812 		return Promise.resolve(this[BUFFER].toString());
  11813 	}
  11814 	arrayBuffer() {
  11815 		const buf = this[BUFFER];
  11816 		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
  11817 		return Promise.resolve(ab);
  11818 	}
  11819 	stream() {
  11820 		const readable = new Readable();
  11821 		readable._read = function () {};
  11822 		readable.push(this[BUFFER]);
  11823 		readable.push(null);
  11824 		return readable;
  11825 	}
  11826 	toString() {
  11827 		return '[object Blob]';
  11828 	}
  11829 	slice() {
  11830 		const size = this.size;
  11831 
  11832 		const start = arguments[0];
  11833 		const end = arguments[1];
  11834 		let relativeStart, relativeEnd;
  11835 		if (start === undefined) {
  11836 			relativeStart = 0;
  11837 		} else if (start < 0) {
  11838 			relativeStart = Math.max(size + start, 0);
  11839 		} else {
  11840 			relativeStart = Math.min(start, size);
  11841 		}
  11842 		if (end === undefined) {
  11843 			relativeEnd = size;
  11844 		} else if (end < 0) {
  11845 			relativeEnd = Math.max(size + end, 0);
  11846 		} else {
  11847 			relativeEnd = Math.min(end, size);
  11848 		}
  11849 		const span = Math.max(relativeEnd - relativeStart, 0);
  11850 
  11851 		const buffer = this[BUFFER];
  11852 		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
  11853 		const blob = new Blob([], { type: arguments[2] });
  11854 		blob[BUFFER] = slicedBuffer;
  11855 		return blob;
  11856 	}
  11857 }
  11858 
  11859 Object.defineProperties(Blob.prototype, {
  11860 	size: { enumerable: true },
  11861 	type: { enumerable: true },
  11862 	slice: { enumerable: true }
  11863 });
  11864 
  11865 Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
  11866 	value: 'Blob',
  11867 	writable: false,
  11868 	enumerable: false,
  11869 	configurable: true
  11870 });
  11871 
  11872 /**
  11873  * fetch-error.js
  11874  *
  11875  * FetchError interface for operational errors
  11876  */
  11877 
  11878 /**
  11879  * Create FetchError instance
  11880  *
  11881  * @param   String      message      Error message for human
  11882  * @param   String      type         Error type for machine
  11883  * @param   String      systemError  For Node.js system error
  11884  * @return  FetchError
  11885  */
  11886 function FetchError(message, type, systemError) {
  11887   Error.call(this, message);
  11888 
  11889   this.message = message;
  11890   this.type = type;
  11891 
  11892   // when err.type is `system`, err.code contains system error code
  11893   if (systemError) {
  11894     this.code = this.errno = systemError.code;
  11895   }
  11896 
  11897   // hide custom error implementation details from end-users
  11898   Error.captureStackTrace(this, this.constructor);
  11899 }
  11900 
  11901 FetchError.prototype = Object.create(Error.prototype);
  11902 FetchError.prototype.constructor = FetchError;
  11903 FetchError.prototype.name = 'FetchError';
  11904 
  11905 let convert;
  11906 try {
  11907 	convert = (__nccwpck_require__(2877).convert);
  11908 } catch (e) {}
  11909 
  11910 const INTERNALS = Symbol('Body internals');
  11911 
  11912 // fix an issue where "PassThrough" isn't a named export for node <10
  11913 const PassThrough = Stream.PassThrough;
  11914 
  11915 /**
  11916  * Body mixin
  11917  *
  11918  * Ref: https://fetch.spec.whatwg.org/#body
  11919  *
  11920  * @param   Stream  body  Readable stream
  11921  * @param   Object  opts  Response options
  11922  * @return  Void
  11923  */
  11924 function Body(body) {
  11925 	var _this = this;
  11926 
  11927 	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
  11928 	    _ref$size = _ref.size;
  11929 
  11930 	let size = _ref$size === undefined ? 0 : _ref$size;
  11931 	var _ref$timeout = _ref.timeout;
  11932 	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
  11933 
  11934 	if (body == null) {
  11935 		// body is undefined or null
  11936 		body = null;
  11937 	} else if (isURLSearchParams(body)) {
  11938 		// body is a URLSearchParams
  11939 		body = Buffer.from(body.toString());
  11940 	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
  11941 		// body is ArrayBuffer
  11942 		body = Buffer.from(body);
  11943 	} else if (ArrayBuffer.isView(body)) {
  11944 		// body is ArrayBufferView
  11945 		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
  11946 	} else if (body instanceof Stream) ; else {
  11947 		// none of the above
  11948 		// coerce to string then buffer
  11949 		body = Buffer.from(String(body));
  11950 	}
  11951 	this[INTERNALS] = {
  11952 		body,
  11953 		disturbed: false,
  11954 		error: null
  11955 	};
  11956 	this.size = size;
  11957 	this.timeout = timeout;
  11958 
  11959 	if (body instanceof Stream) {
  11960 		body.on('error', function (err) {
  11961 			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
  11962 			_this[INTERNALS].error = error;
  11963 		});
  11964 	}
  11965 }
  11966 
  11967 Body.prototype = {
  11968 	get body() {
  11969 		return this[INTERNALS].body;
  11970 	},
  11971 
  11972 	get bodyUsed() {
  11973 		return this[INTERNALS].disturbed;
  11974 	},
  11975 
  11976 	/**
  11977   * Decode response as ArrayBuffer
  11978   *
  11979   * @return  Promise
  11980   */
  11981 	arrayBuffer() {
  11982 		return consumeBody.call(this).then(function (buf) {
  11983 			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
  11984 		});
  11985 	},
  11986 
  11987 	/**
  11988   * Return raw response as Blob
  11989   *
  11990   * @return Promise
  11991   */
  11992 	blob() {
  11993 		let ct = this.headers && this.headers.get('content-type') || '';
  11994 		return consumeBody.call(this).then(function (buf) {
  11995 			return Object.assign(
  11996 			// Prevent copying
  11997 			new Blob([], {
  11998 				type: ct.toLowerCase()
  11999 			}), {
  12000 				[BUFFER]: buf
  12001 			});
  12002 		});
  12003 	},
  12004 
  12005 	/**
  12006   * Decode response as json
  12007   *
  12008   * @return  Promise
  12009   */
  12010 	json() {
  12011 		var _this2 = this;
  12012 
  12013 		return consumeBody.call(this).then(function (buffer) {
  12014 			try {
  12015 				return JSON.parse(buffer.toString());
  12016 			} catch (err) {
  12017 				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
  12018 			}
  12019 		});
  12020 	},
  12021 
  12022 	/**
  12023   * Decode response as text
  12024   *
  12025   * @return  Promise
  12026   */
  12027 	text() {
  12028 		return consumeBody.call(this).then(function (buffer) {
  12029 			return buffer.toString();
  12030 		});
  12031 	},
  12032 
  12033 	/**
  12034   * Decode response as buffer (non-spec api)
  12035   *
  12036   * @return  Promise
  12037   */
  12038 	buffer() {
  12039 		return consumeBody.call(this);
  12040 	},
  12041 
  12042 	/**
  12043   * Decode response as text, while automatically detecting the encoding and
  12044   * trying to decode to UTF-8 (non-spec api)
  12045   *
  12046   * @return  Promise
  12047   */
  12048 	textConverted() {
  12049 		var _this3 = this;
  12050 
  12051 		return consumeBody.call(this).then(function (buffer) {
  12052 			return convertBody(buffer, _this3.headers);
  12053 		});
  12054 	}
  12055 };
  12056 
  12057 // In browsers, all properties are enumerable.
  12058 Object.defineProperties(Body.prototype, {
  12059 	body: { enumerable: true },
  12060 	bodyUsed: { enumerable: true },
  12061 	arrayBuffer: { enumerable: true },
  12062 	blob: { enumerable: true },
  12063 	json: { enumerable: true },
  12064 	text: { enumerable: true }
  12065 });
  12066 
  12067 Body.mixIn = function (proto) {
  12068 	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
  12069 		// istanbul ignore else: future proof
  12070 		if (!(name in proto)) {
  12071 			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
  12072 			Object.defineProperty(proto, name, desc);
  12073 		}
  12074 	}
  12075 };
  12076 
  12077 /**
  12078  * Consume and convert an entire Body to a Buffer.
  12079  *
  12080  * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
  12081  *
  12082  * @return  Promise
  12083  */
  12084 function consumeBody() {
  12085 	var _this4 = this;
  12086 
  12087 	if (this[INTERNALS].disturbed) {
  12088 		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
  12089 	}
  12090 
  12091 	this[INTERNALS].disturbed = true;
  12092 
  12093 	if (this[INTERNALS].error) {
  12094 		return Body.Promise.reject(this[INTERNALS].error);
  12095 	}
  12096 
  12097 	let body = this.body;
  12098 
  12099 	// body is null
  12100 	if (body === null) {
  12101 		return Body.Promise.resolve(Buffer.alloc(0));
  12102 	}
  12103 
  12104 	// body is blob
  12105 	if (isBlob(body)) {
  12106 		body = body.stream();
  12107 	}
  12108 
  12109 	// body is buffer
  12110 	if (Buffer.isBuffer(body)) {
  12111 		return Body.Promise.resolve(body);
  12112 	}
  12113 
  12114 	// istanbul ignore if: should never happen
  12115 	if (!(body instanceof Stream)) {
  12116 		return Body.Promise.resolve(Buffer.alloc(0));
  12117 	}
  12118 
  12119 	// body is stream
  12120 	// get ready to actually consume the body
  12121 	let accum = [];
  12122 	let accumBytes = 0;
  12123 	let abort = false;
  12124 
  12125 	return new Body.Promise(function (resolve, reject) {
  12126 		let resTimeout;
  12127 
  12128 		// allow timeout on slow response body
  12129 		if (_this4.timeout) {
  12130 			resTimeout = setTimeout(function () {
  12131 				abort = true;
  12132 				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
  12133 			}, _this4.timeout);
  12134 		}
  12135 
  12136 		// handle stream errors
  12137 		body.on('error', function (err) {
  12138 			if (err.name === 'AbortError') {
  12139 				// if the request was aborted, reject with this Error
  12140 				abort = true;
  12141 				reject(err);
  12142 			} else {
  12143 				// other errors, such as incorrect content-encoding
  12144 				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
  12145 			}
  12146 		});
  12147 
  12148 		body.on('data', function (chunk) {
  12149 			if (abort || chunk === null) {
  12150 				return;
  12151 			}
  12152 
  12153 			if (_this4.size && accumBytes + chunk.length > _this4.size) {
  12154 				abort = true;
  12155 				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
  12156 				return;
  12157 			}
  12158 
  12159 			accumBytes += chunk.length;
  12160 			accum.push(chunk);
  12161 		});
  12162 
  12163 		body.on('end', function () {
  12164 			if (abort) {
  12165 				return;
  12166 			}
  12167 
  12168 			clearTimeout(resTimeout);
  12169 
  12170 			try {
  12171 				resolve(Buffer.concat(accum, accumBytes));
  12172 			} catch (err) {
  12173 				// handle streams that have accumulated too much data (issue #414)
  12174 				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
  12175 			}
  12176 		});
  12177 	});
  12178 }
  12179 
  12180 /**
  12181  * Detect buffer encoding and convert to target encoding
  12182  * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
  12183  *
  12184  * @param   Buffer  buffer    Incoming buffer
  12185  * @param   String  encoding  Target encoding
  12186  * @return  String
  12187  */
  12188 function convertBody(buffer, headers) {
  12189 	if (typeof convert !== 'function') {
  12190 		throw new Error('The package `encoding` must be installed to use the textConverted() function');
  12191 	}
  12192 
  12193 	const ct = headers.get('content-type');
  12194 	let charset = 'utf-8';
  12195 	let res, str;
  12196 
  12197 	// header
  12198 	if (ct) {
  12199 		res = /charset=([^;]*)/i.exec(ct);
  12200 	}
  12201 
  12202 	// no charset in content type, peek at response body for at most 1024 bytes
  12203 	str = buffer.slice(0, 1024).toString();
  12204 
  12205 	// html5
  12206 	if (!res && str) {
  12207 		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
  12208 	}
  12209 
  12210 	// html4
  12211 	if (!res && str) {
  12212 		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
  12213 		if (!res) {
  12214 			res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str);
  12215 			if (res) {
  12216 				res.pop(); // drop last quote
  12217 			}
  12218 		}
  12219 
  12220 		if (res) {
  12221 			res = /charset=(.*)/i.exec(res.pop());
  12222 		}
  12223 	}
  12224 
  12225 	// xml
  12226 	if (!res && str) {
  12227 		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
  12228 	}
  12229 
  12230 	// found charset
  12231 	if (res) {
  12232 		charset = res.pop();
  12233 
  12234 		// prevent decode issues when sites use incorrect encoding
  12235 		// ref: https://hsivonen.fi/encoding-menu/
  12236 		if (charset === 'gb2312' || charset === 'gbk') {
  12237 			charset = 'gb18030';
  12238 		}
  12239 	}
  12240 
  12241 	// turn raw buffers into a single utf-8 buffer
  12242 	return convert(buffer, 'UTF-8', charset).toString();
  12243 }
  12244 
  12245 /**
  12246  * Detect a URLSearchParams object
  12247  * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
  12248  *
  12249  * @param   Object  obj     Object to detect by type or brand
  12250  * @return  String
  12251  */
  12252 function isURLSearchParams(obj) {
  12253 	// Duck-typing as a necessary condition.
  12254 	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
  12255 		return false;
  12256 	}
  12257 
  12258 	// Brand-checking and more duck-typing as optional condition.
  12259 	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
  12260 }
  12261 
  12262 /**
  12263  * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
  12264  * @param  {*} obj
  12265  * @return {boolean}
  12266  */
  12267 function isBlob(obj) {
  12268 	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
  12269 }
  12270 
  12271 /**
  12272  * Clone body given Res/Req instance
  12273  *
  12274  * @param   Mixed  instance  Response or Request instance
  12275  * @return  Mixed
  12276  */
  12277 function clone(instance) {
  12278 	let p1, p2;
  12279 	let body = instance.body;
  12280 
  12281 	// don't allow cloning a used body
  12282 	if (instance.bodyUsed) {
  12283 		throw new Error('cannot clone body after it is used');
  12284 	}
  12285 
  12286 	// check that body is a stream and not form-data object
  12287 	// note: we can't clone the form-data object without having it as a dependency
  12288 	if (body instanceof Stream && typeof body.getBoundary !== 'function') {
  12289 		// tee instance body
  12290 		p1 = new PassThrough();
  12291 		p2 = new PassThrough();
  12292 		body.pipe(p1);
  12293 		body.pipe(p2);
  12294 		// set instance body to teed body and return the other teed body
  12295 		instance[INTERNALS].body = p1;
  12296 		body = p2;
  12297 	}
  12298 
  12299 	return body;
  12300 }
  12301 
  12302 /**
  12303  * Performs the operation "extract a `Content-Type` value from |object|" as
  12304  * specified in the specification:
  12305  * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
  12306  *
  12307  * This function assumes that instance.body is present.
  12308  *
  12309  * @param   Mixed  instance  Any options.body input
  12310  */
  12311 function extractContentType(body) {
  12312 	if (body === null) {
  12313 		// body is null
  12314 		return null;
  12315 	} else if (typeof body === 'string') {
  12316 		// body is string
  12317 		return 'text/plain;charset=UTF-8';
  12318 	} else if (isURLSearchParams(body)) {
  12319 		// body is a URLSearchParams
  12320 		return 'application/x-www-form-urlencoded;charset=UTF-8';
  12321 	} else if (isBlob(body)) {
  12322 		// body is blob
  12323 		return body.type || null;
  12324 	} else if (Buffer.isBuffer(body)) {
  12325 		// body is buffer
  12326 		return null;
  12327 	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
  12328 		// body is ArrayBuffer
  12329 		return null;
  12330 	} else if (ArrayBuffer.isView(body)) {
  12331 		// body is ArrayBufferView
  12332 		return null;
  12333 	} else if (typeof body.getBoundary === 'function') {
  12334 		// detect form data input from form-data module
  12335 		return `multipart/form-data;boundary=${body.getBoundary()}`;
  12336 	} else if (body instanceof Stream) {
  12337 		// body is stream
  12338 		// can't really do much about this
  12339 		return null;
  12340 	} else {
  12341 		// Body constructor defaults other things to string
  12342 		return 'text/plain;charset=UTF-8';
  12343 	}
  12344 }
  12345 
  12346 /**
  12347  * The Fetch Standard treats this as if "total bytes" is a property on the body.
  12348  * For us, we have to explicitly get it with a function.
  12349  *
  12350  * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
  12351  *
  12352  * @param   Body    instance   Instance of Body
  12353  * @return  Number?            Number of bytes, or null if not possible
  12354  */
  12355 function getTotalBytes(instance) {
  12356 	const body = instance.body;
  12357 
  12358 
  12359 	if (body === null) {
  12360 		// body is null
  12361 		return 0;
  12362 	} else if (isBlob(body)) {
  12363 		return body.size;
  12364 	} else if (Buffer.isBuffer(body)) {
  12365 		// body is buffer
  12366 		return body.length;
  12367 	} else if (body && typeof body.getLengthSync === 'function') {
  12368 		// detect form data input from form-data module
  12369 		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
  12370 		body.hasKnownLength && body.hasKnownLength()) {
  12371 			// 2.x
  12372 			return body.getLengthSync();
  12373 		}
  12374 		return null;
  12375 	} else {
  12376 		// body is stream
  12377 		return null;
  12378 	}
  12379 }
  12380 
  12381 /**
  12382  * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
  12383  *
  12384  * @param   Body    instance   Instance of Body
  12385  * @return  Void
  12386  */
  12387 function writeToStream(dest, instance) {
  12388 	const body = instance.body;
  12389 
  12390 
  12391 	if (body === null) {
  12392 		// body is null
  12393 		dest.end();
  12394 	} else if (isBlob(body)) {
  12395 		body.stream().pipe(dest);
  12396 	} else if (Buffer.isBuffer(body)) {
  12397 		// body is buffer
  12398 		dest.write(body);
  12399 		dest.end();
  12400 	} else {
  12401 		// body is stream
  12402 		body.pipe(dest);
  12403 	}
  12404 }
  12405 
  12406 // expose Promise
  12407 Body.Promise = global.Promise;
  12408 
  12409 /**
  12410  * headers.js
  12411  *
  12412  * Headers class offers convenient helpers
  12413  */
  12414 
  12415 const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
  12416 const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
  12417 
  12418 function validateName(name) {
  12419 	name = `${name}`;
  12420 	if (invalidTokenRegex.test(name) || name === '') {
  12421 		throw new TypeError(`${name} is not a legal HTTP header name`);
  12422 	}
  12423 }
  12424 
  12425 function validateValue(value) {
  12426 	value = `${value}`;
  12427 	if (invalidHeaderCharRegex.test(value)) {
  12428 		throw new TypeError(`${value} is not a legal HTTP header value`);
  12429 	}
  12430 }
  12431 
  12432 /**
  12433  * Find the key in the map object given a header name.
  12434  *
  12435  * Returns undefined if not found.
  12436  *
  12437  * @param   String  name  Header name
  12438  * @return  String|Undefined
  12439  */
  12440 function find(map, name) {
  12441 	name = name.toLowerCase();
  12442 	for (const key in map) {
  12443 		if (key.toLowerCase() === name) {
  12444 			return key;
  12445 		}
  12446 	}
  12447 	return undefined;
  12448 }
  12449 
  12450 const MAP = Symbol('map');
  12451 class Headers {
  12452 	/**
  12453   * Headers class
  12454   *
  12455   * @param   Object  headers  Response headers
  12456   * @return  Void
  12457   */
  12458 	constructor() {
  12459 		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
  12460 
  12461 		this[MAP] = Object.create(null);
  12462 
  12463 		if (init instanceof Headers) {
  12464 			const rawHeaders = init.raw();
  12465 			const headerNames = Object.keys(rawHeaders);
  12466 
  12467 			for (const headerName of headerNames) {
  12468 				for (const value of rawHeaders[headerName]) {
  12469 					this.append(headerName, value);
  12470 				}
  12471 			}
  12472 
  12473 			return;
  12474 		}
  12475 
  12476 		// We don't worry about converting prop to ByteString here as append()
  12477 		// will handle it.
  12478 		if (init == null) ; else if (typeof init === 'object') {
  12479 			const method = init[Symbol.iterator];
  12480 			if (method != null) {
  12481 				if (typeof method !== 'function') {
  12482 					throw new TypeError('Header pairs must be iterable');
  12483 				}
  12484 
  12485 				// sequence<sequence<ByteString>>
  12486 				// Note: per spec we have to first exhaust the lists then process them
  12487 				const pairs = [];
  12488 				for (const pair of init) {
  12489 					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
  12490 						throw new TypeError('Each header pair must be iterable');
  12491 					}
  12492 					pairs.push(Array.from(pair));
  12493 				}
  12494 
  12495 				for (const pair of pairs) {
  12496 					if (pair.length !== 2) {
  12497 						throw new TypeError('Each header pair must be a name/value tuple');
  12498 					}
  12499 					this.append(pair[0], pair[1]);
  12500 				}
  12501 			} else {
  12502 				// record<ByteString, ByteString>
  12503 				for (const key of Object.keys(init)) {
  12504 					const value = init[key];
  12505 					this.append(key, value);
  12506 				}
  12507 			}
  12508 		} else {
  12509 			throw new TypeError('Provided initializer must be an object');
  12510 		}
  12511 	}
  12512 
  12513 	/**
  12514   * Return combined header value given name
  12515   *
  12516   * @param   String  name  Header name
  12517   * @return  Mixed
  12518   */
  12519 	get(name) {
  12520 		name = `${name}`;
  12521 		validateName(name);
  12522 		const key = find(this[MAP], name);
  12523 		if (key === undefined) {
  12524 			return null;
  12525 		}
  12526 
  12527 		return this[MAP][key].join(', ');
  12528 	}
  12529 
  12530 	/**
  12531   * Iterate over all headers
  12532   *
  12533   * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
  12534   * @param   Boolean   thisArg   `this` context for callback function
  12535   * @return  Void
  12536   */
  12537 	forEach(callback) {
  12538 		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
  12539 
  12540 		let pairs = getHeaders(this);
  12541 		let i = 0;
  12542 		while (i < pairs.length) {
  12543 			var _pairs$i = pairs[i];
  12544 			const name = _pairs$i[0],
  12545 			      value = _pairs$i[1];
  12546 
  12547 			callback.call(thisArg, value, name, this);
  12548 			pairs = getHeaders(this);
  12549 			i++;
  12550 		}
  12551 	}
  12552 
  12553 	/**
  12554   * Overwrite header values given name
  12555   *
  12556   * @param   String  name   Header name
  12557   * @param   String  value  Header value
  12558   * @return  Void
  12559   */
  12560 	set(name, value) {
  12561 		name = `${name}`;
  12562 		value = `${value}`;
  12563 		validateName(name);
  12564 		validateValue(value);
  12565 		const key = find(this[MAP], name);
  12566 		this[MAP][key !== undefined ? key : name] = [value];
  12567 	}
  12568 
  12569 	/**
  12570   * Append a value onto existing header
  12571   *
  12572   * @param   String  name   Header name
  12573   * @param   String  value  Header value
  12574   * @return  Void
  12575   */
  12576 	append(name, value) {
  12577 		name = `${name}`;
  12578 		value = `${value}`;
  12579 		validateName(name);
  12580 		validateValue(value);
  12581 		const key = find(this[MAP], name);
  12582 		if (key !== undefined) {
  12583 			this[MAP][key].push(value);
  12584 		} else {
  12585 			this[MAP][name] = [value];
  12586 		}
  12587 	}
  12588 
  12589 	/**
  12590   * Check for header name existence
  12591   *
  12592   * @param   String   name  Header name
  12593   * @return  Boolean
  12594   */
  12595 	has(name) {
  12596 		name = `${name}`;
  12597 		validateName(name);
  12598 		return find(this[MAP], name) !== undefined;
  12599 	}
  12600 
  12601 	/**
  12602   * Delete all header values given name
  12603   *
  12604   * @param   String  name  Header name
  12605   * @return  Void
  12606   */
  12607 	delete(name) {
  12608 		name = `${name}`;
  12609 		validateName(name);
  12610 		const key = find(this[MAP], name);
  12611 		if (key !== undefined) {
  12612 			delete this[MAP][key];
  12613 		}
  12614 	}
  12615 
  12616 	/**
  12617   * Return raw headers (non-spec api)
  12618   *
  12619   * @return  Object
  12620   */
  12621 	raw() {
  12622 		return this[MAP];
  12623 	}
  12624 
  12625 	/**
  12626   * Get an iterator on keys.
  12627   *
  12628   * @return  Iterator
  12629   */
  12630 	keys() {
  12631 		return createHeadersIterator(this, 'key');
  12632 	}
  12633 
  12634 	/**
  12635   * Get an iterator on values.
  12636   *
  12637   * @return  Iterator
  12638   */
  12639 	values() {
  12640 		return createHeadersIterator(this, 'value');
  12641 	}
  12642 
  12643 	/**
  12644   * Get an iterator on entries.
  12645   *
  12646   * This is the default iterator of the Headers object.
  12647   *
  12648   * @return  Iterator
  12649   */
  12650 	[Symbol.iterator]() {
  12651 		return createHeadersIterator(this, 'key+value');
  12652 	}
  12653 }
  12654 Headers.prototype.entries = Headers.prototype[Symbol.iterator];
  12655 
  12656 Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
  12657 	value: 'Headers',
  12658 	writable: false,
  12659 	enumerable: false,
  12660 	configurable: true
  12661 });
  12662 
  12663 Object.defineProperties(Headers.prototype, {
  12664 	get: { enumerable: true },
  12665 	forEach: { enumerable: true },
  12666 	set: { enumerable: true },
  12667 	append: { enumerable: true },
  12668 	has: { enumerable: true },
  12669 	delete: { enumerable: true },
  12670 	keys: { enumerable: true },
  12671 	values: { enumerable: true },
  12672 	entries: { enumerable: true }
  12673 });
  12674 
  12675 function getHeaders(headers) {
  12676 	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
  12677 
  12678 	const keys = Object.keys(headers[MAP]).sort();
  12679 	return keys.map(kind === 'key' ? function (k) {
  12680 		return k.toLowerCase();
  12681 	} : kind === 'value' ? function (k) {
  12682 		return headers[MAP][k].join(', ');
  12683 	} : function (k) {
  12684 		return [k.toLowerCase(), headers[MAP][k].join(', ')];
  12685 	});
  12686 }
  12687 
  12688 const INTERNAL = Symbol('internal');
  12689 
  12690 function createHeadersIterator(target, kind) {
  12691 	const iterator = Object.create(HeadersIteratorPrototype);
  12692 	iterator[INTERNAL] = {
  12693 		target,
  12694 		kind,
  12695 		index: 0
  12696 	};
  12697 	return iterator;
  12698 }
  12699 
  12700 const HeadersIteratorPrototype = Object.setPrototypeOf({
  12701 	next() {
  12702 		// istanbul ignore if
  12703 		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
  12704 			throw new TypeError('Value of `this` is not a HeadersIterator');
  12705 		}
  12706 
  12707 		var _INTERNAL = this[INTERNAL];
  12708 		const target = _INTERNAL.target,
  12709 		      kind = _INTERNAL.kind,
  12710 		      index = _INTERNAL.index;
  12711 
  12712 		const values = getHeaders(target, kind);
  12713 		const len = values.length;
  12714 		if (index >= len) {
  12715 			return {
  12716 				value: undefined,
  12717 				done: true
  12718 			};
  12719 		}
  12720 
  12721 		this[INTERNAL].index = index + 1;
  12722 
  12723 		return {
  12724 			value: values[index],
  12725 			done: false
  12726 		};
  12727 	}
  12728 }, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
  12729 
  12730 Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
  12731 	value: 'HeadersIterator',
  12732 	writable: false,
  12733 	enumerable: false,
  12734 	configurable: true
  12735 });
  12736 
  12737 /**
  12738  * Export the Headers object in a form that Node.js can consume.
  12739  *
  12740  * @param   Headers  headers
  12741  * @return  Object
  12742  */
  12743 function exportNodeCompatibleHeaders(headers) {
  12744 	const obj = Object.assign({ __proto__: null }, headers[MAP]);
  12745 
  12746 	// http.request() only supports string as Host header. This hack makes
  12747 	// specifying custom Host header possible.
  12748 	const hostHeaderKey = find(headers[MAP], 'Host');
  12749 	if (hostHeaderKey !== undefined) {
  12750 		obj[hostHeaderKey] = obj[hostHeaderKey][0];
  12751 	}
  12752 
  12753 	return obj;
  12754 }
  12755 
  12756 /**
  12757  * Create a Headers object from an object of headers, ignoring those that do
  12758  * not conform to HTTP grammar productions.
  12759  *
  12760  * @param   Object  obj  Object of headers
  12761  * @return  Headers
  12762  */
  12763 function createHeadersLenient(obj) {
  12764 	const headers = new Headers();
  12765 	for (const name of Object.keys(obj)) {
  12766 		if (invalidTokenRegex.test(name)) {
  12767 			continue;
  12768 		}
  12769 		if (Array.isArray(obj[name])) {
  12770 			for (const val of obj[name]) {
  12771 				if (invalidHeaderCharRegex.test(val)) {
  12772 					continue;
  12773 				}
  12774 				if (headers[MAP][name] === undefined) {
  12775 					headers[MAP][name] = [val];
  12776 				} else {
  12777 					headers[MAP][name].push(val);
  12778 				}
  12779 			}
  12780 		} else if (!invalidHeaderCharRegex.test(obj[name])) {
  12781 			headers[MAP][name] = [obj[name]];
  12782 		}
  12783 	}
  12784 	return headers;
  12785 }
  12786 
  12787 const INTERNALS$1 = Symbol('Response internals');
  12788 
  12789 // fix an issue where "STATUS_CODES" aren't a named export for node <10
  12790 const STATUS_CODES = http.STATUS_CODES;
  12791 
  12792 /**
  12793  * Response class
  12794  *
  12795  * @param   Stream  body  Readable stream
  12796  * @param   Object  opts  Response options
  12797  * @return  Void
  12798  */
  12799 class Response {
  12800 	constructor() {
  12801 		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  12802 		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  12803 
  12804 		Body.call(this, body, opts);
  12805 
  12806 		const status = opts.status || 200;
  12807 		const headers = new Headers(opts.headers);
  12808 
  12809 		if (body != null && !headers.has('Content-Type')) {
  12810 			const contentType = extractContentType(body);
  12811 			if (contentType) {
  12812 				headers.append('Content-Type', contentType);
  12813 			}
  12814 		}
  12815 
  12816 		this[INTERNALS$1] = {
  12817 			url: opts.url,
  12818 			status,
  12819 			statusText: opts.statusText || STATUS_CODES[status],
  12820 			headers,
  12821 			counter: opts.counter
  12822 		};
  12823 	}
  12824 
  12825 	get url() {
  12826 		return this[INTERNALS$1].url || '';
  12827 	}
  12828 
  12829 	get status() {
  12830 		return this[INTERNALS$1].status;
  12831 	}
  12832 
  12833 	/**
  12834   * Convenience property representing if the request ended normally
  12835   */
  12836 	get ok() {
  12837 		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
  12838 	}
  12839 
  12840 	get redirected() {
  12841 		return this[INTERNALS$1].counter > 0;
  12842 	}
  12843 
  12844 	get statusText() {
  12845 		return this[INTERNALS$1].statusText;
  12846 	}
  12847 
  12848 	get headers() {
  12849 		return this[INTERNALS$1].headers;
  12850 	}
  12851 
  12852 	/**
  12853   * Clone this response
  12854   *
  12855   * @return  Response
  12856   */
  12857 	clone() {
  12858 		return new Response(clone(this), {
  12859 			url: this.url,
  12860 			status: this.status,
  12861 			statusText: this.statusText,
  12862 			headers: this.headers,
  12863 			ok: this.ok,
  12864 			redirected: this.redirected
  12865 		});
  12866 	}
  12867 }
  12868 
  12869 Body.mixIn(Response.prototype);
  12870 
  12871 Object.defineProperties(Response.prototype, {
  12872 	url: { enumerable: true },
  12873 	status: { enumerable: true },
  12874 	ok: { enumerable: true },
  12875 	redirected: { enumerable: true },
  12876 	statusText: { enumerable: true },
  12877 	headers: { enumerable: true },
  12878 	clone: { enumerable: true }
  12879 });
  12880 
  12881 Object.defineProperty(Response.prototype, Symbol.toStringTag, {
  12882 	value: 'Response',
  12883 	writable: false,
  12884 	enumerable: false,
  12885 	configurable: true
  12886 });
  12887 
  12888 const INTERNALS$2 = Symbol('Request internals');
  12889 const URL = Url.URL || whatwgUrl.URL;
  12890 
  12891 // fix an issue where "format", "parse" aren't a named export for node <10
  12892 const parse_url = Url.parse;
  12893 const format_url = Url.format;
  12894 
  12895 /**
  12896  * Wrapper around `new URL` to handle arbitrary URLs
  12897  *
  12898  * @param  {string} urlStr
  12899  * @return {void}
  12900  */
  12901 function parseURL(urlStr) {
  12902 	/*
  12903  	Check whether the URL is absolute or not
  12904  		Scheme: https://tools.ietf.org/html/rfc3986#section-3.1
  12905  	Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3
  12906  */
  12907 	if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) {
  12908 		urlStr = new URL(urlStr).toString();
  12909 	}
  12910 
  12911 	// Fallback to old implementation for arbitrary URLs
  12912 	return parse_url(urlStr);
  12913 }
  12914 
  12915 const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
  12916 
  12917 /**
  12918  * Check if a value is an instance of Request.
  12919  *
  12920  * @param   Mixed   input
  12921  * @return  Boolean
  12922  */
  12923 function isRequest(input) {
  12924 	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
  12925 }
  12926 
  12927 function isAbortSignal(signal) {
  12928 	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
  12929 	return !!(proto && proto.constructor.name === 'AbortSignal');
  12930 }
  12931 
  12932 /**
  12933  * Request class
  12934  *
  12935  * @param   Mixed   input  Url or Request instance
  12936  * @param   Object  init   Custom options
  12937  * @return  Void
  12938  */
  12939 class Request {
  12940 	constructor(input) {
  12941 		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  12942 
  12943 		let parsedURL;
  12944 
  12945 		// normalize input
  12946 		if (!isRequest(input)) {
  12947 			if (input && input.href) {
  12948 				// in order to support Node.js' Url objects; though WHATWG's URL objects
  12949 				// will fall into this branch also (since their `toString()` will return
  12950 				// `href` property anyway)
  12951 				parsedURL = parseURL(input.href);
  12952 			} else {
  12953 				// coerce input to a string before attempting to parse
  12954 				parsedURL = parseURL(`${input}`);
  12955 			}
  12956 			input = {};
  12957 		} else {
  12958 			parsedURL = parseURL(input.url);
  12959 		}
  12960 
  12961 		let method = init.method || input.method || 'GET';
  12962 		method = method.toUpperCase();
  12963 
  12964 		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
  12965 			throw new TypeError('Request with GET/HEAD method cannot have body');
  12966 		}
  12967 
  12968 		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
  12969 
  12970 		Body.call(this, inputBody, {
  12971 			timeout: init.timeout || input.timeout || 0,
  12972 			size: init.size || input.size || 0
  12973 		});
  12974 
  12975 		const headers = new Headers(init.headers || input.headers || {});
  12976 
  12977 		if (inputBody != null && !headers.has('Content-Type')) {
  12978 			const contentType = extractContentType(inputBody);
  12979 			if (contentType) {
  12980 				headers.append('Content-Type', contentType);
  12981 			}
  12982 		}
  12983 
  12984 		let signal = isRequest(input) ? input.signal : null;
  12985 		if ('signal' in init) signal = init.signal;
  12986 
  12987 		if (signal != null && !isAbortSignal(signal)) {
  12988 			throw new TypeError('Expected signal to be an instanceof AbortSignal');
  12989 		}
  12990 
  12991 		this[INTERNALS$2] = {
  12992 			method,
  12993 			redirect: init.redirect || input.redirect || 'follow',
  12994 			headers,
  12995 			parsedURL,
  12996 			signal
  12997 		};
  12998 
  12999 		// node-fetch-only options
  13000 		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
  13001 		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
  13002 		this.counter = init.counter || input.counter || 0;
  13003 		this.agent = init.agent || input.agent;
  13004 	}
  13005 
  13006 	get method() {
  13007 		return this[INTERNALS$2].method;
  13008 	}
  13009 
  13010 	get url() {
  13011 		return format_url(this[INTERNALS$2].parsedURL);
  13012 	}
  13013 
  13014 	get headers() {
  13015 		return this[INTERNALS$2].headers;
  13016 	}
  13017 
  13018 	get redirect() {
  13019 		return this[INTERNALS$2].redirect;
  13020 	}
  13021 
  13022 	get signal() {
  13023 		return this[INTERNALS$2].signal;
  13024 	}
  13025 
  13026 	/**
  13027   * Clone this request
  13028   *
  13029   * @return  Request
  13030   */
  13031 	clone() {
  13032 		return new Request(this);
  13033 	}
  13034 }
  13035 
  13036 Body.mixIn(Request.prototype);
  13037 
  13038 Object.defineProperty(Request.prototype, Symbol.toStringTag, {
  13039 	value: 'Request',
  13040 	writable: false,
  13041 	enumerable: false,
  13042 	configurable: true
  13043 });
  13044 
  13045 Object.defineProperties(Request.prototype, {
  13046 	method: { enumerable: true },
  13047 	url: { enumerable: true },
  13048 	headers: { enumerable: true },
  13049 	redirect: { enumerable: true },
  13050 	clone: { enumerable: true },
  13051 	signal: { enumerable: true }
  13052 });
  13053 
  13054 /**
  13055  * Convert a Request to Node.js http request options.
  13056  *
  13057  * @param   Request  A Request instance
  13058  * @return  Object   The options object to be passed to http.request
  13059  */
  13060 function getNodeRequestOptions(request) {
  13061 	const parsedURL = request[INTERNALS$2].parsedURL;
  13062 	const headers = new Headers(request[INTERNALS$2].headers);
  13063 
  13064 	// fetch step 1.3
  13065 	if (!headers.has('Accept')) {
  13066 		headers.set('Accept', '*/*');
  13067 	}
  13068 
  13069 	// Basic fetch
  13070 	if (!parsedURL.protocol || !parsedURL.hostname) {
  13071 		throw new TypeError('Only absolute URLs are supported');
  13072 	}
  13073 
  13074 	if (!/^https?:$/.test(parsedURL.protocol)) {
  13075 		throw new TypeError('Only HTTP(S) protocols are supported');
  13076 	}
  13077 
  13078 	if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
  13079 		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
  13080 	}
  13081 
  13082 	// HTTP-network-or-cache fetch steps 2.4-2.7
  13083 	let contentLengthValue = null;
  13084 	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
  13085 		contentLengthValue = '0';
  13086 	}
  13087 	if (request.body != null) {
  13088 		const totalBytes = getTotalBytes(request);
  13089 		if (typeof totalBytes === 'number') {
  13090 			contentLengthValue = String(totalBytes);
  13091 		}
  13092 	}
  13093 	if (contentLengthValue) {
  13094 		headers.set('Content-Length', contentLengthValue);
  13095 	}
  13096 
  13097 	// HTTP-network-or-cache fetch step 2.11
  13098 	if (!headers.has('User-Agent')) {
  13099 		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
  13100 	}
  13101 
  13102 	// HTTP-network-or-cache fetch step 2.15
  13103 	if (request.compress && !headers.has('Accept-Encoding')) {
  13104 		headers.set('Accept-Encoding', 'gzip,deflate');
  13105 	}
  13106 
  13107 	let agent = request.agent;
  13108 	if (typeof agent === 'function') {
  13109 		agent = agent(parsedURL);
  13110 	}
  13111 
  13112 	if (!headers.has('Connection') && !agent) {
  13113 		headers.set('Connection', 'close');
  13114 	}
  13115 
  13116 	// HTTP-network fetch step 4.2
  13117 	// chunked encoding is handled by Node.js
  13118 
  13119 	return Object.assign({}, parsedURL, {
  13120 		method: request.method,
  13121 		headers: exportNodeCompatibleHeaders(headers),
  13122 		agent
  13123 	});
  13124 }
  13125 
  13126 /**
  13127  * abort-error.js
  13128  *
  13129  * AbortError interface for cancelled requests
  13130  */
  13131 
  13132 /**
  13133  * Create AbortError instance
  13134  *
  13135  * @param   String      message      Error message for human
  13136  * @return  AbortError
  13137  */
  13138 function AbortError(message) {
  13139   Error.call(this, message);
  13140 
  13141   this.type = 'aborted';
  13142   this.message = message;
  13143 
  13144   // hide custom error implementation details from end-users
  13145   Error.captureStackTrace(this, this.constructor);
  13146 }
  13147 
  13148 AbortError.prototype = Object.create(Error.prototype);
  13149 AbortError.prototype.constructor = AbortError;
  13150 AbortError.prototype.name = 'AbortError';
  13151 
  13152 const URL$1 = Url.URL || whatwgUrl.URL;
  13153 
  13154 // fix an issue where "PassThrough", "resolve" aren't a named export for node <10
  13155 const PassThrough$1 = Stream.PassThrough;
  13156 
  13157 const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {
  13158 	const orig = new URL$1(original).hostname;
  13159 	const dest = new URL$1(destination).hostname;
  13160 
  13161 	return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);
  13162 };
  13163 
  13164 /**
  13165  * isSameProtocol reports whether the two provided URLs use the same protocol.
  13166  *
  13167  * Both domains must already be in canonical form.
  13168  * @param {string|URL} original
  13169  * @param {string|URL} destination
  13170  */
  13171 const isSameProtocol = function isSameProtocol(destination, original) {
  13172 	const orig = new URL$1(original).protocol;
  13173 	const dest = new URL$1(destination).protocol;
  13174 
  13175 	return orig === dest;
  13176 };
  13177 
  13178 /**
  13179  * Fetch function
  13180  *
  13181  * @param   Mixed    url   Absolute url or Request instance
  13182  * @param   Object   opts  Fetch options
  13183  * @return  Promise
  13184  */
  13185 function fetch(url, opts) {
  13186 
  13187 	// allow custom promise
  13188 	if (!fetch.Promise) {
  13189 		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
  13190 	}
  13191 
  13192 	Body.Promise = fetch.Promise;
  13193 
  13194 	// wrap http.request into fetch
  13195 	return new fetch.Promise(function (resolve, reject) {
  13196 		// build request object
  13197 		const request = new Request(url, opts);
  13198 		const options = getNodeRequestOptions(request);
  13199 
  13200 		const send = (options.protocol === 'https:' ? https : http).request;
  13201 		const signal = request.signal;
  13202 
  13203 		let response = null;
  13204 
  13205 		const abort = function abort() {
  13206 			let error = new AbortError('The user aborted a request.');
  13207 			reject(error);
  13208 			if (request.body && request.body instanceof Stream.Readable) {
  13209 				destroyStream(request.body, error);
  13210 			}
  13211 			if (!response || !response.body) return;
  13212 			response.body.emit('error', error);
  13213 		};
  13214 
  13215 		if (signal && signal.aborted) {
  13216 			abort();
  13217 			return;
  13218 		}
  13219 
  13220 		const abortAndFinalize = function abortAndFinalize() {
  13221 			abort();
  13222 			finalize();
  13223 		};
  13224 
  13225 		// send request
  13226 		const req = send(options);
  13227 		let reqTimeout;
  13228 
  13229 		if (signal) {
  13230 			signal.addEventListener('abort', abortAndFinalize);
  13231 		}
  13232 
  13233 		function finalize() {
  13234 			req.abort();
  13235 			if (signal) signal.removeEventListener('abort', abortAndFinalize);
  13236 			clearTimeout(reqTimeout);
  13237 		}
  13238 
  13239 		if (request.timeout) {
  13240 			req.once('socket', function (socket) {
  13241 				reqTimeout = setTimeout(function () {
  13242 					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
  13243 					finalize();
  13244 				}, request.timeout);
  13245 			});
  13246 		}
  13247 
  13248 		req.on('error', function (err) {
  13249 			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
  13250 
  13251 			if (response && response.body) {
  13252 				destroyStream(response.body, err);
  13253 			}
  13254 
  13255 			finalize();
  13256 		});
  13257 
  13258 		fixResponseChunkedTransferBadEnding(req, function (err) {
  13259 			if (signal && signal.aborted) {
  13260 				return;
  13261 			}
  13262 
  13263 			if (response && response.body) {
  13264 				destroyStream(response.body, err);
  13265 			}
  13266 		});
  13267 
  13268 		/* c8 ignore next 18 */
  13269 		if (parseInt(process.version.substring(1)) < 14) {
  13270 			// Before Node.js 14, pipeline() does not fully support async iterators and does not always
  13271 			// properly handle when the socket close/end events are out of order.
  13272 			req.on('socket', function (s) {
  13273 				s.addListener('close', function (hadError) {
  13274 					// if a data listener is still present we didn't end cleanly
  13275 					const hasDataListener = s.listenerCount('data') > 0;
  13276 
  13277 					// if end happened before close but the socket didn't emit an error, do it now
  13278 					if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
  13279 						const err = new Error('Premature close');
  13280 						err.code = 'ERR_STREAM_PREMATURE_CLOSE';
  13281 						response.body.emit('error', err);
  13282 					}
  13283 				});
  13284 			});
  13285 		}
  13286 
  13287 		req.on('response', function (res) {
  13288 			clearTimeout(reqTimeout);
  13289 
  13290 			const headers = createHeadersLenient(res.headers);
  13291 
  13292 			// HTTP fetch step 5
  13293 			if (fetch.isRedirect(res.statusCode)) {
  13294 				// HTTP fetch step 5.2
  13295 				const location = headers.get('Location');
  13296 
  13297 				// HTTP fetch step 5.3
  13298 				let locationURL = null;
  13299 				try {
  13300 					locationURL = location === null ? null : new URL$1(location, request.url).toString();
  13301 				} catch (err) {
  13302 					// error here can only be invalid URL in Location: header
  13303 					// do not throw when options.redirect == manual
  13304 					// let the user extract the errorneous redirect URL
  13305 					if (request.redirect !== 'manual') {
  13306 						reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));
  13307 						finalize();
  13308 						return;
  13309 					}
  13310 				}
  13311 
  13312 				// HTTP fetch step 5.5
  13313 				switch (request.redirect) {
  13314 					case 'error':
  13315 						reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));
  13316 						finalize();
  13317 						return;
  13318 					case 'manual':
  13319 						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
  13320 						if (locationURL !== null) {
  13321 							// handle corrupted header
  13322 							try {
  13323 								headers.set('Location', locationURL);
  13324 							} catch (err) {
  13325 								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
  13326 								reject(err);
  13327 							}
  13328 						}
  13329 						break;
  13330 					case 'follow':
  13331 						// HTTP-redirect fetch step 2
  13332 						if (locationURL === null) {
  13333 							break;
  13334 						}
  13335 
  13336 						// HTTP-redirect fetch step 5
  13337 						if (request.counter >= request.follow) {
  13338 							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
  13339 							finalize();
  13340 							return;
  13341 						}
  13342 
  13343 						// HTTP-redirect fetch step 6 (counter increment)
  13344 						// Create a new Request object.
  13345 						const requestOpts = {
  13346 							headers: new Headers(request.headers),
  13347 							follow: request.follow,
  13348 							counter: request.counter + 1,
  13349 							agent: request.agent,
  13350 							compress: request.compress,
  13351 							method: request.method,
  13352 							body: request.body,
  13353 							signal: request.signal,
  13354 							timeout: request.timeout,
  13355 							size: request.size
  13356 						};
  13357 
  13358 						if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
  13359 							for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {
  13360 								requestOpts.headers.delete(name);
  13361 							}
  13362 						}
  13363 
  13364 						// HTTP-redirect fetch step 9
  13365 						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
  13366 							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
  13367 							finalize();
  13368 							return;
  13369 						}
  13370 
  13371 						// HTTP-redirect fetch step 11
  13372 						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
  13373 							requestOpts.method = 'GET';
  13374 							requestOpts.body = undefined;
  13375 							requestOpts.headers.delete('content-length');
  13376 						}
  13377 
  13378 						// HTTP-redirect fetch step 15
  13379 						resolve(fetch(new Request(locationURL, requestOpts)));
  13380 						finalize();
  13381 						return;
  13382 				}
  13383 			}
  13384 
  13385 			// prepare response
  13386 			res.once('end', function () {
  13387 				if (signal) signal.removeEventListener('abort', abortAndFinalize);
  13388 			});
  13389 			let body = res.pipe(new PassThrough$1());
  13390 
  13391 			const response_options = {
  13392 				url: request.url,
  13393 				status: res.statusCode,
  13394 				statusText: res.statusMessage,
  13395 				headers: headers,
  13396 				size: request.size,
  13397 				timeout: request.timeout,
  13398 				counter: request.counter
  13399 			};
  13400 
  13401 			// HTTP-network fetch step 12.1.1.3
  13402 			const codings = headers.get('Content-Encoding');
  13403 
  13404 			// HTTP-network fetch step 12.1.1.4: handle content codings
  13405 
  13406 			// in following scenarios we ignore compression support
  13407 			// 1. compression support is disabled
  13408 			// 2. HEAD request
  13409 			// 3. no Content-Encoding header
  13410 			// 4. no content response (204)
  13411 			// 5. content not modified response (304)
  13412 			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
  13413 				response = new Response(body, response_options);
  13414 				resolve(response);
  13415 				return;
  13416 			}
  13417 
  13418 			// For Node v6+
  13419 			// Be less strict when decoding compressed responses, since sometimes
  13420 			// servers send slightly invalid responses that are still accepted
  13421 			// by common browsers.
  13422 			// Always using Z_SYNC_FLUSH is what cURL does.
  13423 			const zlibOptions = {
  13424 				flush: zlib.Z_SYNC_FLUSH,
  13425 				finishFlush: zlib.Z_SYNC_FLUSH
  13426 			};
  13427 
  13428 			// for gzip
  13429 			if (codings == 'gzip' || codings == 'x-gzip') {
  13430 				body = body.pipe(zlib.createGunzip(zlibOptions));
  13431 				response = new Response(body, response_options);
  13432 				resolve(response);
  13433 				return;
  13434 			}
  13435 
  13436 			// for deflate
  13437 			if (codings == 'deflate' || codings == 'x-deflate') {
  13438 				// handle the infamous raw deflate response from old servers
  13439 				// a hack for old IIS and Apache servers
  13440 				const raw = res.pipe(new PassThrough$1());
  13441 				raw.once('data', function (chunk) {
  13442 					// see http://stackoverflow.com/questions/37519828
  13443 					if ((chunk[0] & 0x0F) === 0x08) {
  13444 						body = body.pipe(zlib.createInflate());
  13445 					} else {
  13446 						body = body.pipe(zlib.createInflateRaw());
  13447 					}
  13448 					response = new Response(body, response_options);
  13449 					resolve(response);
  13450 				});
  13451 				raw.on('end', function () {
  13452 					// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.
  13453 					if (!response) {
  13454 						response = new Response(body, response_options);
  13455 						resolve(response);
  13456 					}
  13457 				});
  13458 				return;
  13459 			}
  13460 
  13461 			// for br
  13462 			if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
  13463 				body = body.pipe(zlib.createBrotliDecompress());
  13464 				response = new Response(body, response_options);
  13465 				resolve(response);
  13466 				return;
  13467 			}
  13468 
  13469 			// otherwise, use response as-is
  13470 			response = new Response(body, response_options);
  13471 			resolve(response);
  13472 		});
  13473 
  13474 		writeToStream(req, request);
  13475 	});
  13476 }
  13477 function fixResponseChunkedTransferBadEnding(request, errorCallback) {
  13478 	let socket;
  13479 
  13480 	request.on('socket', function (s) {
  13481 		socket = s;
  13482 	});
  13483 
  13484 	request.on('response', function (response) {
  13485 		const headers = response.headers;
  13486 
  13487 		if (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {
  13488 			response.once('close', function (hadError) {
  13489 				// if a data listener is still present we didn't end cleanly
  13490 				const hasDataListener = socket.listenerCount('data') > 0;
  13491 
  13492 				if (hasDataListener && !hadError) {
  13493 					const err = new Error('Premature close');
  13494 					err.code = 'ERR_STREAM_PREMATURE_CLOSE';
  13495 					errorCallback(err);
  13496 				}
  13497 			});
  13498 		}
  13499 	});
  13500 }
  13501 
  13502 function destroyStream(stream, err) {
  13503 	if (stream.destroy) {
  13504 		stream.destroy(err);
  13505 	} else {
  13506 		// node < 8
  13507 		stream.emit('error', err);
  13508 		stream.end();
  13509 	}
  13510 }
  13511 
  13512 /**
  13513  * Redirect code matching
  13514  *
  13515  * @param   Number   code  Status code
  13516  * @return  Boolean
  13517  */
  13518 fetch.isRedirect = function (code) {
  13519 	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
  13520 };
  13521 
  13522 // expose Promise
  13523 fetch.Promise = global.Promise;
  13524 
  13525 module.exports = exports = fetch;
  13526 Object.defineProperty(exports, "__esModule", ({ value: true }));
  13527 exports["default"] = exports;
  13528 exports.Headers = Headers;
  13529 exports.Request = Request;
  13530 exports.Response = Response;
  13531 exports.FetchError = FetchError;
  13532 
  13533 
  13534 /***/ }),
  13535 
  13536 /***/ 1223:
  13537 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  13538 
  13539 var wrappy = __nccwpck_require__(2940)
  13540 module.exports = wrappy(once)
  13541 module.exports.strict = wrappy(onceStrict)
  13542 
  13543 once.proto = once(function () {
  13544   Object.defineProperty(Function.prototype, 'once', {
  13545     value: function () {
  13546       return once(this)
  13547     },
  13548     configurable: true
  13549   })
  13550 
  13551   Object.defineProperty(Function.prototype, 'onceStrict', {
  13552     value: function () {
  13553       return onceStrict(this)
  13554     },
  13555     configurable: true
  13556   })
  13557 })
  13558 
  13559 function once (fn) {
  13560   var f = function () {
  13561     if (f.called) return f.value
  13562     f.called = true
  13563     return f.value = fn.apply(this, arguments)
  13564   }
  13565   f.called = false
  13566   return f
  13567 }
  13568 
  13569 function onceStrict (fn) {
  13570   var f = function () {
  13571     if (f.called)
  13572       throw new Error(f.onceError)
  13573     f.called = true
  13574     return f.value = fn.apply(this, arguments)
  13575   }
  13576   var name = fn.name || 'Function wrapped with `once`'
  13577   f.onceError = name + " shouldn't be called more than once"
  13578   f.called = false
  13579   return f
  13580 }
  13581 
  13582 
  13583 /***/ }),
  13584 
  13585 /***/ 9273:
  13586 /***/ ((module) => {
  13587 
  13588 
  13589 
  13590 class QuickLRU {
  13591 	constructor(options = {}) {
  13592 		if (!(options.maxSize && options.maxSize > 0)) {
  13593 			throw new TypeError('`maxSize` must be a number greater than 0');
  13594 		}
  13595 
  13596 		this.maxSize = options.maxSize;
  13597 		this.onEviction = options.onEviction;
  13598 		this.cache = new Map();
  13599 		this.oldCache = new Map();
  13600 		this._size = 0;
  13601 	}
  13602 
  13603 	_set(key, value) {
  13604 		this.cache.set(key, value);
  13605 		this._size++;
  13606 
  13607 		if (this._size >= this.maxSize) {
  13608 			this._size = 0;
  13609 
  13610 			if (typeof this.onEviction === 'function') {
  13611 				for (const [key, value] of this.oldCache.entries()) {
  13612 					this.onEviction(key, value);
  13613 				}
  13614 			}
  13615 
  13616 			this.oldCache = this.cache;
  13617 			this.cache = new Map();
  13618 		}
  13619 	}
  13620 
  13621 	get(key) {
  13622 		if (this.cache.has(key)) {
  13623 			return this.cache.get(key);
  13624 		}
  13625 
  13626 		if (this.oldCache.has(key)) {
  13627 			const value = this.oldCache.get(key);
  13628 			this.oldCache.delete(key);
  13629 			this._set(key, value);
  13630 			return value;
  13631 		}
  13632 	}
  13633 
  13634 	set(key, value) {
  13635 		if (this.cache.has(key)) {
  13636 			this.cache.set(key, value);
  13637 		} else {
  13638 			this._set(key, value);
  13639 		}
  13640 
  13641 		return this;
  13642 	}
  13643 
  13644 	has(key) {
  13645 		return this.cache.has(key) || this.oldCache.has(key);
  13646 	}
  13647 
  13648 	peek(key) {
  13649 		if (this.cache.has(key)) {
  13650 			return this.cache.get(key);
  13651 		}
  13652 
  13653 		if (this.oldCache.has(key)) {
  13654 			return this.oldCache.get(key);
  13655 		}
  13656 	}
  13657 
  13658 	delete(key) {
  13659 		const deleted = this.cache.delete(key);
  13660 		if (deleted) {
  13661 			this._size--;
  13662 		}
  13663 
  13664 		return this.oldCache.delete(key) || deleted;
  13665 	}
  13666 
  13667 	clear() {
  13668 		this.cache.clear();
  13669 		this.oldCache.clear();
  13670 		this._size = 0;
  13671 	}
  13672 
  13673 	* keys() {
  13674 		for (const [key] of this) {
  13675 			yield key;
  13676 		}
  13677 	}
  13678 
  13679 	* values() {
  13680 		for (const [, value] of this) {
  13681 			yield value;
  13682 		}
  13683 	}
  13684 
  13685 	* [Symbol.iterator]() {
  13686 		for (const item of this.cache) {
  13687 			yield item;
  13688 		}
  13689 
  13690 		for (const item of this.oldCache) {
  13691 			const [key] = item;
  13692 			if (!this.cache.has(key)) {
  13693 				yield item;
  13694 			}
  13695 		}
  13696 	}
  13697 
  13698 	get size() {
  13699 		let oldCacheSize = 0;
  13700 		for (const key of this.oldCache.keys()) {
  13701 			if (!this.cache.has(key)) {
  13702 				oldCacheSize++;
  13703 			}
  13704 		}
  13705 
  13706 		return Math.min(this._size + oldCacheSize, this.maxSize);
  13707 	}
  13708 }
  13709 
  13710 module.exports = QuickLRU;
  13711 
  13712 
  13713 /***/ }),
  13714 
  13715 /***/ 6624:
  13716 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  13717 
  13718 
  13719 const tls = __nccwpck_require__(4404);
  13720 
  13721 module.exports = (options = {}, connect = tls.connect) => new Promise((resolve, reject) => {
  13722 	let timeout = false;
  13723 
  13724 	let socket;
  13725 
  13726 	const callback = async () => {
  13727 		await socketPromise;
  13728 
  13729 		socket.off('timeout', onTimeout);
  13730 		socket.off('error', reject);
  13731 
  13732 		if (options.resolveSocket) {
  13733 			resolve({alpnProtocol: socket.alpnProtocol, socket, timeout});
  13734 
  13735 			if (timeout) {
  13736 				await Promise.resolve();
  13737 				socket.emit('timeout');
  13738 			}
  13739 		} else {
  13740 			socket.destroy();
  13741 			resolve({alpnProtocol: socket.alpnProtocol, timeout});
  13742 		}
  13743 	};
  13744 
  13745 	const onTimeout = async () => {
  13746 		timeout = true;
  13747 		callback();
  13748 	};
  13749 
  13750 	const socketPromise = (async () => {
  13751 		try {
  13752 			socket = await connect(options, callback);
  13753 
  13754 			socket.on('error', reject);
  13755 			socket.once('timeout', onTimeout);
  13756 		} catch (error) {
  13757 			reject(error);
  13758 		}
  13759 	})();
  13760 });
  13761 
  13762 
  13763 /***/ }),
  13764 
  13765 /***/ 5911:
  13766 /***/ ((module, exports) => {
  13767 
  13768 exports = module.exports = SemVer
  13769 
  13770 var debug
  13771 /* istanbul ignore next */
  13772 if (typeof process === 'object' &&
  13773     process.env &&
  13774     process.env.NODE_DEBUG &&
  13775     /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
  13776   debug = function () {
  13777     var args = Array.prototype.slice.call(arguments, 0)
  13778     args.unshift('SEMVER')
  13779     console.log.apply(console, args)
  13780   }
  13781 } else {
  13782   debug = function () {}
  13783 }
  13784 
  13785 // Note: this is the semver.org version of the spec that it implements
  13786 // Not necessarily the package version of this code.
  13787 exports.SEMVER_SPEC_VERSION = '2.0.0'
  13788 
  13789 var MAX_LENGTH = 256
  13790 var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
  13791   /* istanbul ignore next */ 9007199254740991
  13792 
  13793 // Max safe segment length for coercion.
  13794 var MAX_SAFE_COMPONENT_LENGTH = 16
  13795 
  13796 var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
  13797 
  13798 // The actual regexps go on exports.re
  13799 var re = exports.re = []
  13800 var safeRe = exports.safeRe = []
  13801 var src = exports.src = []
  13802 var t = exports.tokens = {}
  13803 var R = 0
  13804 
  13805 function tok (n) {
  13806   t[n] = R++
  13807 }
  13808 
  13809 var LETTERDASHNUMBER = '[a-zA-Z0-9-]'
  13810 
  13811 // Replace some greedy regex tokens to prevent regex dos issues. These regex are
  13812 // used internally via the safeRe object since all inputs in this library get
  13813 // normalized first to trim and collapse all extra whitespace. The original
  13814 // regexes are exported for userland consumption and lower level usage. A
  13815 // future breaking change could export the safer regex only with a note that
  13816 // all input should have extra whitespace removed.
  13817 var safeRegexReplacements = [
  13818   ['\\s', 1],
  13819   ['\\d', MAX_LENGTH],
  13820   [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
  13821 ]
  13822 
  13823 function makeSafeRe (value) {
  13824   for (var i = 0; i < safeRegexReplacements.length; i++) {
  13825     var token = safeRegexReplacements[i][0]
  13826     var max = safeRegexReplacements[i][1]
  13827     value = value
  13828       .split(token + '*').join(token + '{0,' + max + '}')
  13829       .split(token + '+').join(token + '{1,' + max + '}')
  13830   }
  13831   return value
  13832 }
  13833 
  13834 // The following Regular Expressions can be used for tokenizing,
  13835 // validating, and parsing SemVer version strings.
  13836 
  13837 // ## Numeric Identifier
  13838 // A single `0`, or a non-zero digit followed by zero or more digits.
  13839 
  13840 tok('NUMERICIDENTIFIER')
  13841 src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
  13842 tok('NUMERICIDENTIFIERLOOSE')
  13843 src[t.NUMERICIDENTIFIERLOOSE] = '\\d+'
  13844 
  13845 // ## Non-numeric Identifier
  13846 // Zero or more digits, followed by a letter or hyphen, and then zero or
  13847 // more letters, digits, or hyphens.
  13848 
  13849 tok('NONNUMERICIDENTIFIER')
  13850 src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'
  13851 
  13852 // ## Main Version
  13853 // Three dot-separated numeric identifiers.
  13854 
  13855 tok('MAINVERSION')
  13856 src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
  13857                    '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
  13858                    '(' + src[t.NUMERICIDENTIFIER] + ')'
  13859 
  13860 tok('MAINVERSIONLOOSE')
  13861 src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
  13862                         '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
  13863                         '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
  13864 
  13865 // ## Pre-release Version Identifier
  13866 // A numeric identifier, or a non-numeric identifier.
  13867 
  13868 tok('PRERELEASEIDENTIFIER')
  13869 src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
  13870                             '|' + src[t.NONNUMERICIDENTIFIER] + ')'
  13871 
  13872 tok('PRERELEASEIDENTIFIERLOOSE')
  13873 src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
  13874                                  '|' + src[t.NONNUMERICIDENTIFIER] + ')'
  13875 
  13876 // ## Pre-release Version
  13877 // Hyphen, followed by one or more dot-separated pre-release version
  13878 // identifiers.
  13879 
  13880 tok('PRERELEASE')
  13881 src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
  13882                   '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
  13883 
  13884 tok('PRERELEASELOOSE')
  13885 src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
  13886                        '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
  13887 
  13888 // ## Build Metadata Identifier
  13889 // Any combination of digits, letters, or hyphens.
  13890 
  13891 tok('BUILDIDENTIFIER')
  13892 src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'
  13893 
  13894 // ## Build Metadata
  13895 // Plus sign, followed by one or more period-separated build metadata
  13896 // identifiers.
  13897 
  13898 tok('BUILD')
  13899 src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
  13900              '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
  13901 
  13902 // ## Full Version String
  13903 // A main version, followed optionally by a pre-release version and
  13904 // build metadata.
  13905 
  13906 // Note that the only major, minor, patch, and pre-release sections of
  13907 // the version string are capturing groups.  The build metadata is not a
  13908 // capturing group, because it should not ever be used in version
  13909 // comparison.
  13910 
  13911 tok('FULL')
  13912 tok('FULLPLAIN')
  13913 src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
  13914                   src[t.PRERELEASE] + '?' +
  13915                   src[t.BUILD] + '?'
  13916 
  13917 src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
  13918 
  13919 // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
  13920 // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
  13921 // common in the npm registry.
  13922 tok('LOOSEPLAIN')
  13923 src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
  13924                   src[t.PRERELEASELOOSE] + '?' +
  13925                   src[t.BUILD] + '?'
  13926 
  13927 tok('LOOSE')
  13928 src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
  13929 
  13930 tok('GTLT')
  13931 src[t.GTLT] = '((?:<|>)?=?)'
  13932 
  13933 // Something like "2.*" or "1.2.x".
  13934 // Note that "x.x" is a valid xRange identifer, meaning "any version"
  13935 // Only the first item is strictly required.
  13936 tok('XRANGEIDENTIFIERLOOSE')
  13937 src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
  13938 tok('XRANGEIDENTIFIER')
  13939 src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
  13940 
  13941 tok('XRANGEPLAIN')
  13942 src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
  13943                    '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
  13944                    '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
  13945                    '(?:' + src[t.PRERELEASE] + ')?' +
  13946                    src[t.BUILD] + '?' +
  13947                    ')?)?'
  13948 
  13949 tok('XRANGEPLAINLOOSE')
  13950 src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
  13951                         '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
  13952                         '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
  13953                         '(?:' + src[t.PRERELEASELOOSE] + ')?' +
  13954                         src[t.BUILD] + '?' +
  13955                         ')?)?'
  13956 
  13957 tok('XRANGE')
  13958 src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
  13959 tok('XRANGELOOSE')
  13960 src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
  13961 
  13962 // Coercion.
  13963 // Extract anything that could conceivably be a part of a valid semver
  13964 tok('COERCE')
  13965 src[t.COERCE] = '(^|[^\\d])' +
  13966               '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
  13967               '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
  13968               '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
  13969               '(?:$|[^\\d])'
  13970 tok('COERCERTL')
  13971 re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
  13972 safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')
  13973 
  13974 // Tilde ranges.
  13975 // Meaning is "reasonably at or greater than"
  13976 tok('LONETILDE')
  13977 src[t.LONETILDE] = '(?:~>?)'
  13978 
  13979 tok('TILDETRIM')
  13980 src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
  13981 re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
  13982 safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')
  13983 var tildeTrimReplace = '$1~'
  13984 
  13985 tok('TILDE')
  13986 src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
  13987 tok('TILDELOOSE')
  13988 src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
  13989 
  13990 // Caret ranges.
  13991 // Meaning is "at least and backwards compatible with"
  13992 tok('LONECARET')
  13993 src[t.LONECARET] = '(?:\\^)'
  13994 
  13995 tok('CARETTRIM')
  13996 src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
  13997 re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
  13998 safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')
  13999 var caretTrimReplace = '$1^'
  14000 
  14001 tok('CARET')
  14002 src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
  14003 tok('CARETLOOSE')
  14004 src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
  14005 
  14006 // A simple gt/lt/eq thing, or just "" to indicate "any version"
  14007 tok('COMPARATORLOOSE')
  14008 src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
  14009 tok('COMPARATOR')
  14010 src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
  14011 
  14012 // An expression to strip any whitespace between the gtlt and the thing
  14013 // it modifies, so that `> 1.2.3` ==> `>1.2.3`
  14014 tok('COMPARATORTRIM')
  14015 src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
  14016                       '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
  14017 
  14018 // this one has to use the /g flag
  14019 re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
  14020 safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')
  14021 var comparatorTrimReplace = '$1$2$3'
  14022 
  14023 // Something like `1.2.3 - 1.2.4`
  14024 // Note that these all use the loose form, because they'll be
  14025 // checked against either the strict or loose comparator form
  14026 // later.
  14027 tok('HYPHENRANGE')
  14028 src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
  14029                    '\\s+-\\s+' +
  14030                    '(' + src[t.XRANGEPLAIN] + ')' +
  14031                    '\\s*$'
  14032 
  14033 tok('HYPHENRANGELOOSE')
  14034 src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
  14035                         '\\s+-\\s+' +
  14036                         '(' + src[t.XRANGEPLAINLOOSE] + ')' +
  14037                         '\\s*$'
  14038 
  14039 // Star ranges basically just allow anything at all.
  14040 tok('STAR')
  14041 src[t.STAR] = '(<|>)?=?\\s*\\*'
  14042 
  14043 // Compile to actual regexp objects.
  14044 // All are flag-free, unless they were created above with a flag.
  14045 for (var i = 0; i < R; i++) {
  14046   debug(i, src[i])
  14047   if (!re[i]) {
  14048     re[i] = new RegExp(src[i])
  14049 
  14050     // Replace all greedy whitespace to prevent regex dos issues. These regex are
  14051     // used internally via the safeRe object since all inputs in this library get
  14052     // normalized first to trim and collapse all extra whitespace. The original
  14053     // regexes are exported for userland consumption and lower level usage. A
  14054     // future breaking change could export the safer regex only with a note that
  14055     // all input should have extra whitespace removed.
  14056     safeRe[i] = new RegExp(makeSafeRe(src[i]))
  14057   }
  14058 }
  14059 
  14060 exports.parse = parse
  14061 function parse (version, options) {
  14062   if (!options || typeof options !== 'object') {
  14063     options = {
  14064       loose: !!options,
  14065       includePrerelease: false
  14066     }
  14067   }
  14068 
  14069   if (version instanceof SemVer) {
  14070     return version
  14071   }
  14072 
  14073   if (typeof version !== 'string') {
  14074     return null
  14075   }
  14076 
  14077   if (version.length > MAX_LENGTH) {
  14078     return null
  14079   }
  14080 
  14081   var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]
  14082   if (!r.test(version)) {
  14083     return null
  14084   }
  14085 
  14086   try {
  14087     return new SemVer(version, options)
  14088   } catch (er) {
  14089     return null
  14090   }
  14091 }
  14092 
  14093 exports.valid = valid
  14094 function valid (version, options) {
  14095   var v = parse(version, options)
  14096   return v ? v.version : null
  14097 }
  14098 
  14099 exports.clean = clean
  14100 function clean (version, options) {
  14101   var s = parse(version.trim().replace(/^[=v]+/, ''), options)
  14102   return s ? s.version : null
  14103 }
  14104 
  14105 exports.SemVer = SemVer
  14106 
  14107 function SemVer (version, options) {
  14108   if (!options || typeof options !== 'object') {
  14109     options = {
  14110       loose: !!options,
  14111       includePrerelease: false
  14112     }
  14113   }
  14114   if (version instanceof SemVer) {
  14115     if (version.loose === options.loose) {
  14116       return version
  14117     } else {
  14118       version = version.version
  14119     }
  14120   } else if (typeof version !== 'string') {
  14121     throw new TypeError('Invalid Version: ' + version)
  14122   }
  14123 
  14124   if (version.length > MAX_LENGTH) {
  14125     throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
  14126   }
  14127 
  14128   if (!(this instanceof SemVer)) {
  14129     return new SemVer(version, options)
  14130   }
  14131 
  14132   debug('SemVer', version, options)
  14133   this.options = options
  14134   this.loose = !!options.loose
  14135 
  14136   var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])
  14137 
  14138   if (!m) {
  14139     throw new TypeError('Invalid Version: ' + version)
  14140   }
  14141 
  14142   this.raw = version
  14143 
  14144   // these are actually numbers
  14145   this.major = +m[1]
  14146   this.minor = +m[2]
  14147   this.patch = +m[3]
  14148 
  14149   if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
  14150     throw new TypeError('Invalid major version')
  14151   }
  14152 
  14153   if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
  14154     throw new TypeError('Invalid minor version')
  14155   }
  14156 
  14157   if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
  14158     throw new TypeError('Invalid patch version')
  14159   }
  14160 
  14161   // numberify any prerelease numeric ids
  14162   if (!m[4]) {
  14163     this.prerelease = []
  14164   } else {
  14165     this.prerelease = m[4].split('.').map(function (id) {
  14166       if (/^[0-9]+$/.test(id)) {
  14167         var num = +id
  14168         if (num >= 0 && num < MAX_SAFE_INTEGER) {
  14169           return num
  14170         }
  14171       }
  14172       return id
  14173     })
  14174   }
  14175 
  14176   this.build = m[5] ? m[5].split('.') : []
  14177   this.format()
  14178 }
  14179 
  14180 SemVer.prototype.format = function () {
  14181   this.version = this.major + '.' + this.minor + '.' + this.patch
  14182   if (this.prerelease.length) {
  14183     this.version += '-' + this.prerelease.join('.')
  14184   }
  14185   return this.version
  14186 }
  14187 
  14188 SemVer.prototype.toString = function () {
  14189   return this.version
  14190 }
  14191 
  14192 SemVer.prototype.compare = function (other) {
  14193   debug('SemVer.compare', this.version, this.options, other)
  14194   if (!(other instanceof SemVer)) {
  14195     other = new SemVer(other, this.options)
  14196   }
  14197 
  14198   return this.compareMain(other) || this.comparePre(other)
  14199 }
  14200 
  14201 SemVer.prototype.compareMain = function (other) {
  14202   if (!(other instanceof SemVer)) {
  14203     other = new SemVer(other, this.options)
  14204   }
  14205 
  14206   return compareIdentifiers(this.major, other.major) ||
  14207          compareIdentifiers(this.minor, other.minor) ||
  14208          compareIdentifiers(this.patch, other.patch)
  14209 }
  14210 
  14211 SemVer.prototype.comparePre = function (other) {
  14212   if (!(other instanceof SemVer)) {
  14213     other = new SemVer(other, this.options)
  14214   }
  14215 
  14216   // NOT having a prerelease is > having one
  14217   if (this.prerelease.length && !other.prerelease.length) {
  14218     return -1
  14219   } else if (!this.prerelease.length && other.prerelease.length) {
  14220     return 1
  14221   } else if (!this.prerelease.length && !other.prerelease.length) {
  14222     return 0
  14223   }
  14224 
  14225   var i = 0
  14226   do {
  14227     var a = this.prerelease[i]
  14228     var b = other.prerelease[i]
  14229     debug('prerelease compare', i, a, b)
  14230     if (a === undefined && b === undefined) {
  14231       return 0
  14232     } else if (b === undefined) {
  14233       return 1
  14234     } else if (a === undefined) {
  14235       return -1
  14236     } else if (a === b) {
  14237       continue
  14238     } else {
  14239       return compareIdentifiers(a, b)
  14240     }
  14241   } while (++i)
  14242 }
  14243 
  14244 SemVer.prototype.compareBuild = function (other) {
  14245   if (!(other instanceof SemVer)) {
  14246     other = new SemVer(other, this.options)
  14247   }
  14248 
  14249   var i = 0
  14250   do {
  14251     var a = this.build[i]
  14252     var b = other.build[i]
  14253     debug('prerelease compare', i, a, b)
  14254     if (a === undefined && b === undefined) {
  14255       return 0
  14256     } else if (b === undefined) {
  14257       return 1
  14258     } else if (a === undefined) {
  14259       return -1
  14260     } else if (a === b) {
  14261       continue
  14262     } else {
  14263       return compareIdentifiers(a, b)
  14264     }
  14265   } while (++i)
  14266 }
  14267 
  14268 // preminor will bump the version up to the next minor release, and immediately
  14269 // down to pre-release. premajor and prepatch work the same way.
  14270 SemVer.prototype.inc = function (release, identifier) {
  14271   switch (release) {
  14272     case 'premajor':
  14273       this.prerelease.length = 0
  14274       this.patch = 0
  14275       this.minor = 0
  14276       this.major++
  14277       this.inc('pre', identifier)
  14278       break
  14279     case 'preminor':
  14280       this.prerelease.length = 0
  14281       this.patch = 0
  14282       this.minor++
  14283       this.inc('pre', identifier)
  14284       break
  14285     case 'prepatch':
  14286       // If this is already a prerelease, it will bump to the next version
  14287       // drop any prereleases that might already exist, since they are not
  14288       // relevant at this point.
  14289       this.prerelease.length = 0
  14290       this.inc('patch', identifier)
  14291       this.inc('pre', identifier)
  14292       break
  14293     // If the input is a non-prerelease version, this acts the same as
  14294     // prepatch.
  14295     case 'prerelease':
  14296       if (this.prerelease.length === 0) {
  14297         this.inc('patch', identifier)
  14298       }
  14299       this.inc('pre', identifier)
  14300       break
  14301 
  14302     case 'major':
  14303       // If this is a pre-major version, bump up to the same major version.
  14304       // Otherwise increment major.
  14305       // 1.0.0-5 bumps to 1.0.0
  14306       // 1.1.0 bumps to 2.0.0
  14307       if (this.minor !== 0 ||
  14308           this.patch !== 0 ||
  14309           this.prerelease.length === 0) {
  14310         this.major++
  14311       }
  14312       this.minor = 0
  14313       this.patch = 0
  14314       this.prerelease = []
  14315       break
  14316     case 'minor':
  14317       // If this is a pre-minor version, bump up to the same minor version.
  14318       // Otherwise increment minor.
  14319       // 1.2.0-5 bumps to 1.2.0
  14320       // 1.2.1 bumps to 1.3.0
  14321       if (this.patch !== 0 || this.prerelease.length === 0) {
  14322         this.minor++
  14323       }
  14324       this.patch = 0
  14325       this.prerelease = []
  14326       break
  14327     case 'patch':
  14328       // If this is not a pre-release version, it will increment the patch.
  14329       // If it is a pre-release it will bump up to the same patch version.
  14330       // 1.2.0-5 patches to 1.2.0
  14331       // 1.2.0 patches to 1.2.1
  14332       if (this.prerelease.length === 0) {
  14333         this.patch++
  14334       }
  14335       this.prerelease = []
  14336       break
  14337     // This probably shouldn't be used publicly.
  14338     // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
  14339     case 'pre':
  14340       if (this.prerelease.length === 0) {
  14341         this.prerelease = [0]
  14342       } else {
  14343         var i = this.prerelease.length
  14344         while (--i >= 0) {
  14345           if (typeof this.prerelease[i] === 'number') {
  14346             this.prerelease[i]++
  14347             i = -2
  14348           }
  14349         }
  14350         if (i === -1) {
  14351           // didn't increment anything
  14352           this.prerelease.push(0)
  14353         }
  14354       }
  14355       if (identifier) {
  14356         // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
  14357         // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
  14358         if (this.prerelease[0] === identifier) {
  14359           if (isNaN(this.prerelease[1])) {
  14360             this.prerelease = [identifier, 0]
  14361           }
  14362         } else {
  14363           this.prerelease = [identifier, 0]
  14364         }
  14365       }
  14366       break
  14367 
  14368     default:
  14369       throw new Error('invalid increment argument: ' + release)
  14370   }
  14371   this.format()
  14372   this.raw = this.version
  14373   return this
  14374 }
  14375 
  14376 exports.inc = inc
  14377 function inc (version, release, loose, identifier) {
  14378   if (typeof (loose) === 'string') {
  14379     identifier = loose
  14380     loose = undefined
  14381   }
  14382 
  14383   try {
  14384     return new SemVer(version, loose).inc(release, identifier).version
  14385   } catch (er) {
  14386     return null
  14387   }
  14388 }
  14389 
  14390 exports.diff = diff
  14391 function diff (version1, version2) {
  14392   if (eq(version1, version2)) {
  14393     return null
  14394   } else {
  14395     var v1 = parse(version1)
  14396     var v2 = parse(version2)
  14397     var prefix = ''
  14398     if (v1.prerelease.length || v2.prerelease.length) {
  14399       prefix = 'pre'
  14400       var defaultResult = 'prerelease'
  14401     }
  14402     for (var key in v1) {
  14403       if (key === 'major' || key === 'minor' || key === 'patch') {
  14404         if (v1[key] !== v2[key]) {
  14405           return prefix + key
  14406         }
  14407       }
  14408     }
  14409     return defaultResult // may be undefined
  14410   }
  14411 }
  14412 
  14413 exports.compareIdentifiers = compareIdentifiers
  14414 
  14415 var numeric = /^[0-9]+$/
  14416 function compareIdentifiers (a, b) {
  14417   var anum = numeric.test(a)
  14418   var bnum = numeric.test(b)
  14419 
  14420   if (anum && bnum) {
  14421     a = +a
  14422     b = +b
  14423   }
  14424 
  14425   return a === b ? 0
  14426     : (anum && !bnum) ? -1
  14427     : (bnum && !anum) ? 1
  14428     : a < b ? -1
  14429     : 1
  14430 }
  14431 
  14432 exports.rcompareIdentifiers = rcompareIdentifiers
  14433 function rcompareIdentifiers (a, b) {
  14434   return compareIdentifiers(b, a)
  14435 }
  14436 
  14437 exports.major = major
  14438 function major (a, loose) {
  14439   return new SemVer(a, loose).major
  14440 }
  14441 
  14442 exports.minor = minor
  14443 function minor (a, loose) {
  14444   return new SemVer(a, loose).minor
  14445 }
  14446 
  14447 exports.patch = patch
  14448 function patch (a, loose) {
  14449   return new SemVer(a, loose).patch
  14450 }
  14451 
  14452 exports.compare = compare
  14453 function compare (a, b, loose) {
  14454   return new SemVer(a, loose).compare(new SemVer(b, loose))
  14455 }
  14456 
  14457 exports.compareLoose = compareLoose
  14458 function compareLoose (a, b) {
  14459   return compare(a, b, true)
  14460 }
  14461 
  14462 exports.compareBuild = compareBuild
  14463 function compareBuild (a, b, loose) {
  14464   var versionA = new SemVer(a, loose)
  14465   var versionB = new SemVer(b, loose)
  14466   return versionA.compare(versionB) || versionA.compareBuild(versionB)
  14467 }
  14468 
  14469 exports.rcompare = rcompare
  14470 function rcompare (a, b, loose) {
  14471   return compare(b, a, loose)
  14472 }
  14473 
  14474 exports.sort = sort
  14475 function sort (list, loose) {
  14476   return list.sort(function (a, b) {
  14477     return exports.compareBuild(a, b, loose)
  14478   })
  14479 }
  14480 
  14481 exports.rsort = rsort
  14482 function rsort (list, loose) {
  14483   return list.sort(function (a, b) {
  14484     return exports.compareBuild(b, a, loose)
  14485   })
  14486 }
  14487 
  14488 exports.gt = gt
  14489 function gt (a, b, loose) {
  14490   return compare(a, b, loose) > 0
  14491 }
  14492 
  14493 exports.lt = lt
  14494 function lt (a, b, loose) {
  14495   return compare(a, b, loose) < 0
  14496 }
  14497 
  14498 exports.eq = eq
  14499 function eq (a, b, loose) {
  14500   return compare(a, b, loose) === 0
  14501 }
  14502 
  14503 exports.neq = neq
  14504 function neq (a, b, loose) {
  14505   return compare(a, b, loose) !== 0
  14506 }
  14507 
  14508 exports.gte = gte
  14509 function gte (a, b, loose) {
  14510   return compare(a, b, loose) >= 0
  14511 }
  14512 
  14513 exports.lte = lte
  14514 function lte (a, b, loose) {
  14515   return compare(a, b, loose) <= 0
  14516 }
  14517 
  14518 exports.cmp = cmp
  14519 function cmp (a, op, b, loose) {
  14520   switch (op) {
  14521     case '===':
  14522       if (typeof a === 'object')
  14523         a = a.version
  14524       if (typeof b === 'object')
  14525         b = b.version
  14526       return a === b
  14527 
  14528     case '!==':
  14529       if (typeof a === 'object')
  14530         a = a.version
  14531       if (typeof b === 'object')
  14532         b = b.version
  14533       return a !== b
  14534 
  14535     case '':
  14536     case '=':
  14537     case '==':
  14538       return eq(a, b, loose)
  14539 
  14540     case '!=':
  14541       return neq(a, b, loose)
  14542 
  14543     case '>':
  14544       return gt(a, b, loose)
  14545 
  14546     case '>=':
  14547       return gte(a, b, loose)
  14548 
  14549     case '<':
  14550       return lt(a, b, loose)
  14551 
  14552     case '<=':
  14553       return lte(a, b, loose)
  14554 
  14555     default:
  14556       throw new TypeError('Invalid operator: ' + op)
  14557   }
  14558 }
  14559 
  14560 exports.Comparator = Comparator
  14561 function Comparator (comp, options) {
  14562   if (!options || typeof options !== 'object') {
  14563     options = {
  14564       loose: !!options,
  14565       includePrerelease: false
  14566     }
  14567   }
  14568 
  14569   if (comp instanceof Comparator) {
  14570     if (comp.loose === !!options.loose) {
  14571       return comp
  14572     } else {
  14573       comp = comp.value
  14574     }
  14575   }
  14576 
  14577   if (!(this instanceof Comparator)) {
  14578     return new Comparator(comp, options)
  14579   }
  14580 
  14581   comp = comp.trim().split(/\s+/).join(' ')
  14582   debug('comparator', comp, options)
  14583   this.options = options
  14584   this.loose = !!options.loose
  14585   this.parse(comp)
  14586 
  14587   if (this.semver === ANY) {
  14588     this.value = ''
  14589   } else {
  14590     this.value = this.operator + this.semver.version
  14591   }
  14592 
  14593   debug('comp', this)
  14594 }
  14595 
  14596 var ANY = {}
  14597 Comparator.prototype.parse = function (comp) {
  14598   var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
  14599   var m = comp.match(r)
  14600 
  14601   if (!m) {
  14602     throw new TypeError('Invalid comparator: ' + comp)
  14603   }
  14604 
  14605   this.operator = m[1] !== undefined ? m[1] : ''
  14606   if (this.operator === '=') {
  14607     this.operator = ''
  14608   }
  14609 
  14610   // if it literally is just '>' or '' then allow anything.
  14611   if (!m[2]) {
  14612     this.semver = ANY
  14613   } else {
  14614     this.semver = new SemVer(m[2], this.options.loose)
  14615   }
  14616 }
  14617 
  14618 Comparator.prototype.toString = function () {
  14619   return this.value
  14620 }
  14621 
  14622 Comparator.prototype.test = function (version) {
  14623   debug('Comparator.test', version, this.options.loose)
  14624 
  14625   if (this.semver === ANY || version === ANY) {
  14626     return true
  14627   }
  14628 
  14629   if (typeof version === 'string') {
  14630     try {
  14631       version = new SemVer(version, this.options)
  14632     } catch (er) {
  14633       return false
  14634     }
  14635   }
  14636 
  14637   return cmp(version, this.operator, this.semver, this.options)
  14638 }
  14639 
  14640 Comparator.prototype.intersects = function (comp, options) {
  14641   if (!(comp instanceof Comparator)) {
  14642     throw new TypeError('a Comparator is required')
  14643   }
  14644 
  14645   if (!options || typeof options !== 'object') {
  14646     options = {
  14647       loose: !!options,
  14648       includePrerelease: false
  14649     }
  14650   }
  14651 
  14652   var rangeTmp
  14653 
  14654   if (this.operator === '') {
  14655     if (this.value === '') {
  14656       return true
  14657     }
  14658     rangeTmp = new Range(comp.value, options)
  14659     return satisfies(this.value, rangeTmp, options)
  14660   } else if (comp.operator === '') {
  14661     if (comp.value === '') {
  14662       return true
  14663     }
  14664     rangeTmp = new Range(this.value, options)
  14665     return satisfies(comp.semver, rangeTmp, options)
  14666   }
  14667 
  14668   var sameDirectionIncreasing =
  14669     (this.operator === '>=' || this.operator === '>') &&
  14670     (comp.operator === '>=' || comp.operator === '>')
  14671   var sameDirectionDecreasing =
  14672     (this.operator === '<=' || this.operator === '<') &&
  14673     (comp.operator === '<=' || comp.operator === '<')
  14674   var sameSemVer = this.semver.version === comp.semver.version
  14675   var differentDirectionsInclusive =
  14676     (this.operator === '>=' || this.operator === '<=') &&
  14677     (comp.operator === '>=' || comp.operator === '<=')
  14678   var oppositeDirectionsLessThan =
  14679     cmp(this.semver, '<', comp.semver, options) &&
  14680     ((this.operator === '>=' || this.operator === '>') &&
  14681     (comp.operator === '<=' || comp.operator === '<'))
  14682   var oppositeDirectionsGreaterThan =
  14683     cmp(this.semver, '>', comp.semver, options) &&
  14684     ((this.operator === '<=' || this.operator === '<') &&
  14685     (comp.operator === '>=' || comp.operator === '>'))
  14686 
  14687   return sameDirectionIncreasing || sameDirectionDecreasing ||
  14688     (sameSemVer && differentDirectionsInclusive) ||
  14689     oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
  14690 }
  14691 
  14692 exports.Range = Range
  14693 function Range (range, options) {
  14694   if (!options || typeof options !== 'object') {
  14695     options = {
  14696       loose: !!options,
  14697       includePrerelease: false
  14698     }
  14699   }
  14700 
  14701   if (range instanceof Range) {
  14702     if (range.loose === !!options.loose &&
  14703         range.includePrerelease === !!options.includePrerelease) {
  14704       return range
  14705     } else {
  14706       return new Range(range.raw, options)
  14707     }
  14708   }
  14709 
  14710   if (range instanceof Comparator) {
  14711     return new Range(range.value, options)
  14712   }
  14713 
  14714   if (!(this instanceof Range)) {
  14715     return new Range(range, options)
  14716   }
  14717 
  14718   this.options = options
  14719   this.loose = !!options.loose
  14720   this.includePrerelease = !!options.includePrerelease
  14721 
  14722   // First reduce all whitespace as much as possible so we do not have to rely
  14723   // on potentially slow regexes like \s*. This is then stored and used for
  14724   // future error messages as well.
  14725   this.raw = range
  14726     .trim()
  14727     .split(/\s+/)
  14728     .join(' ')
  14729 
  14730   // First, split based on boolean or ||
  14731   this.set = this.raw.split('||').map(function (range) {
  14732     return this.parseRange(range.trim())
  14733   }, this).filter(function (c) {
  14734     // throw out any that are not relevant for whatever reason
  14735     return c.length
  14736   })
  14737 
  14738   if (!this.set.length) {
  14739     throw new TypeError('Invalid SemVer Range: ' + this.raw)
  14740   }
  14741 
  14742   this.format()
  14743 }
  14744 
  14745 Range.prototype.format = function () {
  14746   this.range = this.set.map(function (comps) {
  14747     return comps.join(' ').trim()
  14748   }).join('||').trim()
  14749   return this.range
  14750 }
  14751 
  14752 Range.prototype.toString = function () {
  14753   return this.range
  14754 }
  14755 
  14756 Range.prototype.parseRange = function (range) {
  14757   var loose = this.options.loose
  14758   // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
  14759   var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]
  14760   range = range.replace(hr, hyphenReplace)
  14761   debug('hyphen replace', range)
  14762   // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
  14763   range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)
  14764   debug('comparator trim', range, safeRe[t.COMPARATORTRIM])
  14765 
  14766   // `~ 1.2.3` => `~1.2.3`
  14767   range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)
  14768 
  14769   // `^ 1.2.3` => `^1.2.3`
  14770   range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)
  14771 
  14772   // normalize spaces
  14773   range = range.split(/\s+/).join(' ')
  14774 
  14775   // At this point, the range is completely trimmed and
  14776   // ready to be split into comparators.
  14777 
  14778   var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]
  14779   var set = range.split(' ').map(function (comp) {
  14780     return parseComparator(comp, this.options)
  14781   }, this).join(' ').split(/\s+/)
  14782   if (this.options.loose) {
  14783     // in loose mode, throw out any that are not valid comparators
  14784     set = set.filter(function (comp) {
  14785       return !!comp.match(compRe)
  14786     })
  14787   }
  14788   set = set.map(function (comp) {
  14789     return new Comparator(comp, this.options)
  14790   }, this)
  14791 
  14792   return set
  14793 }
  14794 
  14795 Range.prototype.intersects = function (range, options) {
  14796   if (!(range instanceof Range)) {
  14797     throw new TypeError('a Range is required')
  14798   }
  14799 
  14800   return this.set.some(function (thisComparators) {
  14801     return (
  14802       isSatisfiable(thisComparators, options) &&
  14803       range.set.some(function (rangeComparators) {
  14804         return (
  14805           isSatisfiable(rangeComparators, options) &&
  14806           thisComparators.every(function (thisComparator) {
  14807             return rangeComparators.every(function (rangeComparator) {
  14808               return thisComparator.intersects(rangeComparator, options)
  14809             })
  14810           })
  14811         )
  14812       })
  14813     )
  14814   })
  14815 }
  14816 
  14817 // take a set of comparators and determine whether there
  14818 // exists a version which can satisfy it
  14819 function isSatisfiable (comparators, options) {
  14820   var result = true
  14821   var remainingComparators = comparators.slice()
  14822   var testComparator = remainingComparators.pop()
  14823 
  14824   while (result && remainingComparators.length) {
  14825     result = remainingComparators.every(function (otherComparator) {
  14826       return testComparator.intersects(otherComparator, options)
  14827     })
  14828 
  14829     testComparator = remainingComparators.pop()
  14830   }
  14831 
  14832   return result
  14833 }
  14834 
  14835 // Mostly just for testing and legacy API reasons
  14836 exports.toComparators = toComparators
  14837 function toComparators (range, options) {
  14838   return new Range(range, options).set.map(function (comp) {
  14839     return comp.map(function (c) {
  14840       return c.value
  14841     }).join(' ').trim().split(' ')
  14842   })
  14843 }
  14844 
  14845 // comprised of xranges, tildes, stars, and gtlt's at this point.
  14846 // already replaced the hyphen ranges
  14847 // turn into a set of JUST comparators.
  14848 function parseComparator (comp, options) {
  14849   debug('comp', comp, options)
  14850   comp = replaceCarets(comp, options)
  14851   debug('caret', comp)
  14852   comp = replaceTildes(comp, options)
  14853   debug('tildes', comp)
  14854   comp = replaceXRanges(comp, options)
  14855   debug('xrange', comp)
  14856   comp = replaceStars(comp, options)
  14857   debug('stars', comp)
  14858   return comp
  14859 }
  14860 
  14861 function isX (id) {
  14862   return !id || id.toLowerCase() === 'x' || id === '*'
  14863 }
  14864 
  14865 // ~, ~> --> * (any, kinda silly)
  14866 // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
  14867 // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
  14868 // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
  14869 // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
  14870 // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
  14871 function replaceTildes (comp, options) {
  14872   return comp.trim().split(/\s+/).map(function (comp) {
  14873     return replaceTilde(comp, options)
  14874   }).join(' ')
  14875 }
  14876 
  14877 function replaceTilde (comp, options) {
  14878   var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]
  14879   return comp.replace(r, function (_, M, m, p, pr) {
  14880     debug('tilde', comp, _, M, m, p, pr)
  14881     var ret
  14882 
  14883     if (isX(M)) {
  14884       ret = ''
  14885     } else if (isX(m)) {
  14886       ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
  14887     } else if (isX(p)) {
  14888       // ~1.2 == >=1.2.0 <1.3.0
  14889       ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
  14890     } else if (pr) {
  14891       debug('replaceTilde pr', pr)
  14892       ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
  14893             ' <' + M + '.' + (+m + 1) + '.0'
  14894     } else {
  14895       // ~1.2.3 == >=1.2.3 <1.3.0
  14896       ret = '>=' + M + '.' + m + '.' + p +
  14897             ' <' + M + '.' + (+m + 1) + '.0'
  14898     }
  14899 
  14900     debug('tilde return', ret)
  14901     return ret
  14902   })
  14903 }
  14904 
  14905 // ^ --> * (any, kinda silly)
  14906 // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
  14907 // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
  14908 // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
  14909 // ^1.2.3 --> >=1.2.3 <2.0.0
  14910 // ^1.2.0 --> >=1.2.0 <2.0.0
  14911 function replaceCarets (comp, options) {
  14912   return comp.trim().split(/\s+/).map(function (comp) {
  14913     return replaceCaret(comp, options)
  14914   }).join(' ')
  14915 }
  14916 
  14917 function replaceCaret (comp, options) {
  14918   debug('caret', comp, options)
  14919   var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]
  14920   return comp.replace(r, function (_, M, m, p, pr) {
  14921     debug('caret', comp, _, M, m, p, pr)
  14922     var ret
  14923 
  14924     if (isX(M)) {
  14925       ret = ''
  14926     } else if (isX(m)) {
  14927       ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
  14928     } else if (isX(p)) {
  14929       if (M === '0') {
  14930         ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
  14931       } else {
  14932         ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
  14933       }
  14934     } else if (pr) {
  14935       debug('replaceCaret pr', pr)
  14936       if (M === '0') {
  14937         if (m === '0') {
  14938           ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
  14939                 ' <' + M + '.' + m + '.' + (+p + 1)
  14940         } else {
  14941           ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
  14942                 ' <' + M + '.' + (+m + 1) + '.0'
  14943         }
  14944       } else {
  14945         ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
  14946               ' <' + (+M + 1) + '.0.0'
  14947       }
  14948     } else {
  14949       debug('no pr')
  14950       if (M === '0') {
  14951         if (m === '0') {
  14952           ret = '>=' + M + '.' + m + '.' + p +
  14953                 ' <' + M + '.' + m + '.' + (+p + 1)
  14954         } else {
  14955           ret = '>=' + M + '.' + m + '.' + p +
  14956                 ' <' + M + '.' + (+m + 1) + '.0'
  14957         }
  14958       } else {
  14959         ret = '>=' + M + '.' + m + '.' + p +
  14960               ' <' + (+M + 1) + '.0.0'
  14961       }
  14962     }
  14963 
  14964     debug('caret return', ret)
  14965     return ret
  14966   })
  14967 }
  14968 
  14969 function replaceXRanges (comp, options) {
  14970   debug('replaceXRanges', comp, options)
  14971   return comp.split(/\s+/).map(function (comp) {
  14972     return replaceXRange(comp, options)
  14973   }).join(' ')
  14974 }
  14975 
  14976 function replaceXRange (comp, options) {
  14977   comp = comp.trim()
  14978   var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]
  14979   return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
  14980     debug('xRange', comp, ret, gtlt, M, m, p, pr)
  14981     var xM = isX(M)
  14982     var xm = xM || isX(m)
  14983     var xp = xm || isX(p)
  14984     var anyX = xp
  14985 
  14986     if (gtlt === '=' && anyX) {
  14987       gtlt = ''
  14988     }
  14989 
  14990     // if we're including prereleases in the match, then we need
  14991     // to fix this to -0, the lowest possible prerelease value
  14992     pr = options.includePrerelease ? '-0' : ''
  14993 
  14994     if (xM) {
  14995       if (gtlt === '>' || gtlt === '<') {
  14996         // nothing is allowed
  14997         ret = '<0.0.0-0'
  14998       } else {
  14999         // nothing is forbidden
  15000         ret = '*'
  15001       }
  15002     } else if (gtlt && anyX) {
  15003       // we know patch is an x, because we have any x at all.
  15004       // replace X with 0
  15005       if (xm) {
  15006         m = 0
  15007       }
  15008       p = 0
  15009 
  15010       if (gtlt === '>') {
  15011         // >1 => >=2.0.0
  15012         // >1.2 => >=1.3.0
  15013         // >1.2.3 => >= 1.2.4
  15014         gtlt = '>='
  15015         if (xm) {
  15016           M = +M + 1
  15017           m = 0
  15018           p = 0
  15019         } else {
  15020           m = +m + 1
  15021           p = 0
  15022         }
  15023       } else if (gtlt === '<=') {
  15024         // <=0.7.x is actually <0.8.0, since any 0.7.x should
  15025         // pass.  Similarly, <=7.x is actually <8.0.0, etc.
  15026         gtlt = '<'
  15027         if (xm) {
  15028           M = +M + 1
  15029         } else {
  15030           m = +m + 1
  15031         }
  15032       }
  15033 
  15034       ret = gtlt + M + '.' + m + '.' + p + pr
  15035     } else if (xm) {
  15036       ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
  15037     } else if (xp) {
  15038       ret = '>=' + M + '.' + m + '.0' + pr +
  15039         ' <' + M + '.' + (+m + 1) + '.0' + pr
  15040     }
  15041 
  15042     debug('xRange return', ret)
  15043 
  15044     return ret
  15045   })
  15046 }
  15047 
  15048 // Because * is AND-ed with everything else in the comparator,
  15049 // and '' means "any version", just remove the *s entirely.
  15050 function replaceStars (comp, options) {
  15051   debug('replaceStars', comp, options)
  15052   // Looseness is ignored here.  star is always as loose as it gets!
  15053   return comp.trim().replace(safeRe[t.STAR], '')
  15054 }
  15055 
  15056 // This function is passed to string.replace(re[t.HYPHENRANGE])
  15057 // M, m, patch, prerelease, build
  15058 // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
  15059 // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
  15060 // 1.2 - 3.4 => >=1.2.0 <3.5.0
  15061 function hyphenReplace ($0,
  15062   from, fM, fm, fp, fpr, fb,
  15063   to, tM, tm, tp, tpr, tb) {
  15064   if (isX(fM)) {
  15065     from = ''
  15066   } else if (isX(fm)) {
  15067     from = '>=' + fM + '.0.0'
  15068   } else if (isX(fp)) {
  15069     from = '>=' + fM + '.' + fm + '.0'
  15070   } else {
  15071     from = '>=' + from
  15072   }
  15073 
  15074   if (isX(tM)) {
  15075     to = ''
  15076   } else if (isX(tm)) {
  15077     to = '<' + (+tM + 1) + '.0.0'
  15078   } else if (isX(tp)) {
  15079     to = '<' + tM + '.' + (+tm + 1) + '.0'
  15080   } else if (tpr) {
  15081     to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
  15082   } else {
  15083     to = '<=' + to
  15084   }
  15085 
  15086   return (from + ' ' + to).trim()
  15087 }
  15088 
  15089 // if ANY of the sets match ALL of its comparators, then pass
  15090 Range.prototype.test = function (version) {
  15091   if (!version) {
  15092     return false
  15093   }
  15094 
  15095   if (typeof version === 'string') {
  15096     try {
  15097       version = new SemVer(version, this.options)
  15098     } catch (er) {
  15099       return false
  15100     }
  15101   }
  15102 
  15103   for (var i = 0; i < this.set.length; i++) {
  15104     if (testSet(this.set[i], version, this.options)) {
  15105       return true
  15106     }
  15107   }
  15108   return false
  15109 }
  15110 
  15111 function testSet (set, version, options) {
  15112   for (var i = 0; i < set.length; i++) {
  15113     if (!set[i].test(version)) {
  15114       return false
  15115     }
  15116   }
  15117 
  15118   if (version.prerelease.length && !options.includePrerelease) {
  15119     // Find the set of versions that are allowed to have prereleases
  15120     // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
  15121     // That should allow `1.2.3-pr.2` to pass.
  15122     // However, `1.2.4-alpha.notready` should NOT be allowed,
  15123     // even though it's within the range set by the comparators.
  15124     for (i = 0; i < set.length; i++) {
  15125       debug(set[i].semver)
  15126       if (set[i].semver === ANY) {
  15127         continue
  15128       }
  15129 
  15130       if (set[i].semver.prerelease.length > 0) {
  15131         var allowed = set[i].semver
  15132         if (allowed.major === version.major &&
  15133             allowed.minor === version.minor &&
  15134             allowed.patch === version.patch) {
  15135           return true
  15136         }
  15137       }
  15138     }
  15139 
  15140     // Version has a -pre, but it's not one of the ones we like.
  15141     return false
  15142   }
  15143 
  15144   return true
  15145 }
  15146 
  15147 exports.satisfies = satisfies
  15148 function satisfies (version, range, options) {
  15149   try {
  15150     range = new Range(range, options)
  15151   } catch (er) {
  15152     return false
  15153   }
  15154   return range.test(version)
  15155 }
  15156 
  15157 exports.maxSatisfying = maxSatisfying
  15158 function maxSatisfying (versions, range, options) {
  15159   var max = null
  15160   var maxSV = null
  15161   try {
  15162     var rangeObj = new Range(range, options)
  15163   } catch (er) {
  15164     return null
  15165   }
  15166   versions.forEach(function (v) {
  15167     if (rangeObj.test(v)) {
  15168       // satisfies(v, range, options)
  15169       if (!max || maxSV.compare(v) === -1) {
  15170         // compare(max, v, true)
  15171         max = v
  15172         maxSV = new SemVer(max, options)
  15173       }
  15174     }
  15175   })
  15176   return max
  15177 }
  15178 
  15179 exports.minSatisfying = minSatisfying
  15180 function minSatisfying (versions, range, options) {
  15181   var min = null
  15182   var minSV = null
  15183   try {
  15184     var rangeObj = new Range(range, options)
  15185   } catch (er) {
  15186     return null
  15187   }
  15188   versions.forEach(function (v) {
  15189     if (rangeObj.test(v)) {
  15190       // satisfies(v, range, options)
  15191       if (!min || minSV.compare(v) === 1) {
  15192         // compare(min, v, true)
  15193         min = v
  15194         minSV = new SemVer(min, options)
  15195       }
  15196     }
  15197   })
  15198   return min
  15199 }
  15200 
  15201 exports.minVersion = minVersion
  15202 function minVersion (range, loose) {
  15203   range = new Range(range, loose)
  15204 
  15205   var minver = new SemVer('0.0.0')
  15206   if (range.test(minver)) {
  15207     return minver
  15208   }
  15209 
  15210   minver = new SemVer('0.0.0-0')
  15211   if (range.test(minver)) {
  15212     return minver
  15213   }
  15214 
  15215   minver = null
  15216   for (var i = 0; i < range.set.length; ++i) {
  15217     var comparators = range.set[i]
  15218 
  15219     comparators.forEach(function (comparator) {
  15220       // Clone to avoid manipulating the comparator's semver object.
  15221       var compver = new SemVer(comparator.semver.version)
  15222       switch (comparator.operator) {
  15223         case '>':
  15224           if (compver.prerelease.length === 0) {
  15225             compver.patch++
  15226           } else {
  15227             compver.prerelease.push(0)
  15228           }
  15229           compver.raw = compver.format()
  15230           /* fallthrough */
  15231         case '':
  15232         case '>=':
  15233           if (!minver || gt(minver, compver)) {
  15234             minver = compver
  15235           }
  15236           break
  15237         case '<':
  15238         case '<=':
  15239           /* Ignore maximum versions */
  15240           break
  15241         /* istanbul ignore next */
  15242         default:
  15243           throw new Error('Unexpected operation: ' + comparator.operator)
  15244       }
  15245     })
  15246   }
  15247 
  15248   if (minver && range.test(minver)) {
  15249     return minver
  15250   }
  15251 
  15252   return null
  15253 }
  15254 
  15255 exports.validRange = validRange
  15256 function validRange (range, options) {
  15257   try {
  15258     // Return '*' instead of '' so that truthiness works.
  15259     // This will throw if it's invalid anyway
  15260     return new Range(range, options).range || '*'
  15261   } catch (er) {
  15262     return null
  15263   }
  15264 }
  15265 
  15266 // Determine if version is less than all the versions possible in the range
  15267 exports.ltr = ltr
  15268 function ltr (version, range, options) {
  15269   return outside(version, range, '<', options)
  15270 }
  15271 
  15272 // Determine if version is greater than all the versions possible in the range.
  15273 exports.gtr = gtr
  15274 function gtr (version, range, options) {
  15275   return outside(version, range, '>', options)
  15276 }
  15277 
  15278 exports.outside = outside
  15279 function outside (version, range, hilo, options) {
  15280   version = new SemVer(version, options)
  15281   range = new Range(range, options)
  15282 
  15283   var gtfn, ltefn, ltfn, comp, ecomp
  15284   switch (hilo) {
  15285     case '>':
  15286       gtfn = gt
  15287       ltefn = lte
  15288       ltfn = lt
  15289       comp = '>'
  15290       ecomp = '>='
  15291       break
  15292     case '<':
  15293       gtfn = lt
  15294       ltefn = gte
  15295       ltfn = gt
  15296       comp = '<'
  15297       ecomp = '<='
  15298       break
  15299     default:
  15300       throw new TypeError('Must provide a hilo val of "<" or ">"')
  15301   }
  15302 
  15303   // If it satisifes the range it is not outside
  15304   if (satisfies(version, range, options)) {
  15305     return false
  15306   }
  15307 
  15308   // From now on, variable terms are as if we're in "gtr" mode.
  15309   // but note that everything is flipped for the "ltr" function.
  15310 
  15311   for (var i = 0; i < range.set.length; ++i) {
  15312     var comparators = range.set[i]
  15313 
  15314     var high = null
  15315     var low = null
  15316 
  15317     comparators.forEach(function (comparator) {
  15318       if (comparator.semver === ANY) {
  15319         comparator = new Comparator('>=0.0.0')
  15320       }
  15321       high = high || comparator
  15322       low = low || comparator
  15323       if (gtfn(comparator.semver, high.semver, options)) {
  15324         high = comparator
  15325       } else if (ltfn(comparator.semver, low.semver, options)) {
  15326         low = comparator
  15327       }
  15328     })
  15329 
  15330     // If the edge version comparator has a operator then our version
  15331     // isn't outside it
  15332     if (high.operator === comp || high.operator === ecomp) {
  15333       return false
  15334     }
  15335 
  15336     // If the lowest version comparator has an operator and our version
  15337     // is less than it then it isn't higher than the range
  15338     if ((!low.operator || low.operator === comp) &&
  15339         ltefn(version, low.semver)) {
  15340       return false
  15341     } else if (low.operator === ecomp && ltfn(version, low.semver)) {
  15342       return false
  15343     }
  15344   }
  15345   return true
  15346 }
  15347 
  15348 exports.prerelease = prerelease
  15349 function prerelease (version, options) {
  15350   var parsed = parse(version, options)
  15351   return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
  15352 }
  15353 
  15354 exports.intersects = intersects
  15355 function intersects (r1, r2, options) {
  15356   r1 = new Range(r1, options)
  15357   r2 = new Range(r2, options)
  15358   return r1.intersects(r2)
  15359 }
  15360 
  15361 exports.coerce = coerce
  15362 function coerce (version, options) {
  15363   if (version instanceof SemVer) {
  15364     return version
  15365   }
  15366 
  15367   if (typeof version === 'number') {
  15368     version = String(version)
  15369   }
  15370 
  15371   if (typeof version !== 'string') {
  15372     return null
  15373   }
  15374 
  15375   options = options || {}
  15376 
  15377   var match = null
  15378   if (!options.rtl) {
  15379     match = version.match(safeRe[t.COERCE])
  15380   } else {
  15381     // Find the right-most coercible string that does not share
  15382     // a terminus with a more left-ward coercible string.
  15383     // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
  15384     //
  15385     // Walk through the string checking with a /g regexp
  15386     // Manually set the index so as to pick up overlapping matches.
  15387     // Stop when we get a match that ends at the string end, since no
  15388     // coercible string can be more right-ward without the same terminus.
  15389     var next
  15390     while ((next = safeRe[t.COERCERTL].exec(version)) &&
  15391       (!match || match.index + match[0].length !== version.length)
  15392     ) {
  15393       if (!match ||
  15394           next.index + next[0].length !== match.index + match[0].length) {
  15395         match = next
  15396       }
  15397       safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
  15398     }
  15399     // leave it in a clean state
  15400     safeRe[t.COERCERTL].lastIndex = -1
  15401   }
  15402 
  15403   if (match === null) {
  15404     return null
  15405   }
  15406 
  15407   return parse(match[2] +
  15408     '.' + (match[3] || '0') +
  15409     '.' + (match[4] || '0'), options)
  15410 }
  15411 
  15412 
  15413 /***/ }),
  15414 
  15415 /***/ 4256:
  15416 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  15417 
  15418 
  15419 
  15420 var punycode = __nccwpck_require__(5477);
  15421 var mappingTable = __nccwpck_require__(2020);
  15422 
  15423 var PROCESSING_OPTIONS = {
  15424   TRANSITIONAL: 0,
  15425   NONTRANSITIONAL: 1
  15426 };
  15427 
  15428 function normalize(str) { // fix bug in v8
  15429   return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000');
  15430 }
  15431 
  15432 function findStatus(val) {
  15433   var start = 0;
  15434   var end = mappingTable.length - 1;
  15435 
  15436   while (start <= end) {
  15437     var mid = Math.floor((start + end) / 2);
  15438 
  15439     var target = mappingTable[mid];
  15440     if (target[0][0] <= val && target[0][1] >= val) {
  15441       return target;
  15442     } else if (target[0][0] > val) {
  15443       end = mid - 1;
  15444     } else {
  15445       start = mid + 1;
  15446     }
  15447   }
  15448 
  15449   return null;
  15450 }
  15451 
  15452 var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
  15453 
  15454 function countSymbols(string) {
  15455   return string
  15456     // replace every surrogate pair with a BMP symbol
  15457     .replace(regexAstralSymbols, '_')
  15458     // then get the length
  15459     .length;
  15460 }
  15461 
  15462 function mapChars(domain_name, useSTD3, processing_option) {
  15463   var hasError = false;
  15464   var processed = "";
  15465 
  15466   var len = countSymbols(domain_name);
  15467   for (var i = 0; i < len; ++i) {
  15468     var codePoint = domain_name.codePointAt(i);
  15469     var status = findStatus(codePoint);
  15470 
  15471     switch (status[1]) {
  15472       case "disallowed":
  15473         hasError = true;
  15474         processed += String.fromCodePoint(codePoint);
  15475         break;
  15476       case "ignored":
  15477         break;
  15478       case "mapped":
  15479         processed += String.fromCodePoint.apply(String, status[2]);
  15480         break;
  15481       case "deviation":
  15482         if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {
  15483           processed += String.fromCodePoint.apply(String, status[2]);
  15484         } else {
  15485           processed += String.fromCodePoint(codePoint);
  15486         }
  15487         break;
  15488       case "valid":
  15489         processed += String.fromCodePoint(codePoint);
  15490         break;
  15491       case "disallowed_STD3_mapped":
  15492         if (useSTD3) {
  15493           hasError = true;
  15494           processed += String.fromCodePoint(codePoint);
  15495         } else {
  15496           processed += String.fromCodePoint.apply(String, status[2]);
  15497         }
  15498         break;
  15499       case "disallowed_STD3_valid":
  15500         if (useSTD3) {
  15501           hasError = true;
  15502         }
  15503 
  15504         processed += String.fromCodePoint(codePoint);
  15505         break;
  15506     }
  15507   }
  15508 
  15509   return {
  15510     string: processed,
  15511     error: hasError
  15512   };
  15513 }
  15514 
  15515 var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/;
  15516 
  15517 function validateLabel(label, processing_option) {
  15518   if (label.substr(0, 4) === "xn--") {
  15519     label = punycode.toUnicode(label);
  15520     processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
  15521   }
  15522 
  15523   var error = false;
  15524 
  15525   if (normalize(label) !== label ||
  15526       (label[3] === "-" && label[4] === "-") ||
  15527       label[0] === "-" || label[label.length - 1] === "-" ||
  15528       label.indexOf(".") !== -1 ||
  15529       label.search(combiningMarksRegex) === 0) {
  15530     error = true;
  15531   }
  15532 
  15533   var len = countSymbols(label);
  15534   for (var i = 0; i < len; ++i) {
  15535     var status = findStatus(label.codePointAt(i));
  15536     if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") ||
  15537         (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&
  15538          status[1] !== "valid" && status[1] !== "deviation")) {
  15539       error = true;
  15540       break;
  15541     }
  15542   }
  15543 
  15544   return {
  15545     label: label,
  15546     error: error
  15547   };
  15548 }
  15549 
  15550 function processing(domain_name, useSTD3, processing_option) {
  15551   var result = mapChars(domain_name, useSTD3, processing_option);
  15552   result.string = normalize(result.string);
  15553 
  15554   var labels = result.string.split(".");
  15555   for (var i = 0; i < labels.length; ++i) {
  15556     try {
  15557       var validation = validateLabel(labels[i]);
  15558       labels[i] = validation.label;
  15559       result.error = result.error || validation.error;
  15560     } catch(e) {
  15561       result.error = true;
  15562     }
  15563   }
  15564 
  15565   return {
  15566     string: labels.join("."),
  15567     error: result.error
  15568   };
  15569 }
  15570 
  15571 module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {
  15572   var result = processing(domain_name, useSTD3, processing_option);
  15573   var labels = result.string.split(".");
  15574   labels = labels.map(function(l) {
  15575     try {
  15576       return punycode.toASCII(l);
  15577     } catch(e) {
  15578       result.error = true;
  15579       return l;
  15580     }
  15581   });
  15582 
  15583   if (verifyDnsLength) {
  15584     var total = labels.slice(0, labels.length - 1).join(".").length;
  15585     if (total.length > 253 || total.length === 0) {
  15586       result.error = true;
  15587     }
  15588 
  15589     for (var i=0; i < labels.length; ++i) {
  15590       if (labels.length > 63 || labels.length === 0) {
  15591         result.error = true;
  15592         break;
  15593       }
  15594     }
  15595   }
  15596 
  15597   if (result.error) return null;
  15598   return labels.join(".");
  15599 };
  15600 
  15601 module.exports.toUnicode = function(domain_name, useSTD3) {
  15602   var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);
  15603 
  15604   return {
  15605     domain: result.string,
  15606     error: result.error
  15607   };
  15608 };
  15609 
  15610 module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;
  15611 
  15612 
  15613 /***/ }),
  15614 
  15615 /***/ 4294:
  15616 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  15617 
  15618 module.exports = __nccwpck_require__(4219);
  15619 
  15620 
  15621 /***/ }),
  15622 
  15623 /***/ 4219:
  15624 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  15625 
  15626 
  15627 
  15628 var net = __nccwpck_require__(1808);
  15629 var tls = __nccwpck_require__(4404);
  15630 var http = __nccwpck_require__(3685);
  15631 var https = __nccwpck_require__(5687);
  15632 var events = __nccwpck_require__(2361);
  15633 var assert = __nccwpck_require__(9491);
  15634 var util = __nccwpck_require__(3837);
  15635 
  15636 
  15637 exports.httpOverHttp = httpOverHttp;
  15638 exports.httpsOverHttp = httpsOverHttp;
  15639 exports.httpOverHttps = httpOverHttps;
  15640 exports.httpsOverHttps = httpsOverHttps;
  15641 
  15642 
  15643 function httpOverHttp(options) {
  15644   var agent = new TunnelingAgent(options);
  15645   agent.request = http.request;
  15646   return agent;
  15647 }
  15648 
  15649 function httpsOverHttp(options) {
  15650   var agent = new TunnelingAgent(options);
  15651   agent.request = http.request;
  15652   agent.createSocket = createSecureSocket;
  15653   agent.defaultPort = 443;
  15654   return agent;
  15655 }
  15656 
  15657 function httpOverHttps(options) {
  15658   var agent = new TunnelingAgent(options);
  15659   agent.request = https.request;
  15660   return agent;
  15661 }
  15662 
  15663 function httpsOverHttps(options) {
  15664   var agent = new TunnelingAgent(options);
  15665   agent.request = https.request;
  15666   agent.createSocket = createSecureSocket;
  15667   agent.defaultPort = 443;
  15668   return agent;
  15669 }
  15670 
  15671 
  15672 function TunnelingAgent(options) {
  15673   var self = this;
  15674   self.options = options || {};
  15675   self.proxyOptions = self.options.proxy || {};
  15676   self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
  15677   self.requests = [];
  15678   self.sockets = [];
  15679 
  15680   self.on('free', function onFree(socket, host, port, localAddress) {
  15681     var options = toOptions(host, port, localAddress);
  15682     for (var i = 0, len = self.requests.length; i < len; ++i) {
  15683       var pending = self.requests[i];
  15684       if (pending.host === options.host && pending.port === options.port) {
  15685         // Detect the request to connect same origin server,
  15686         // reuse the connection.
  15687         self.requests.splice(i, 1);
  15688         pending.request.onSocket(socket);
  15689         return;
  15690       }
  15691     }
  15692     socket.destroy();
  15693     self.removeSocket(socket);
  15694   });
  15695 }
  15696 util.inherits(TunnelingAgent, events.EventEmitter);
  15697 
  15698 TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
  15699   var self = this;
  15700   var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
  15701 
  15702   if (self.sockets.length >= this.maxSockets) {
  15703     // We are over limit so we'll add it to the queue.
  15704     self.requests.push(options);
  15705     return;
  15706   }
  15707 
  15708   // If we are under maxSockets create a new one.
  15709   self.createSocket(options, function(socket) {
  15710     socket.on('free', onFree);
  15711     socket.on('close', onCloseOrRemove);
  15712     socket.on('agentRemove', onCloseOrRemove);
  15713     req.onSocket(socket);
  15714 
  15715     function onFree() {
  15716       self.emit('free', socket, options);
  15717     }
  15718 
  15719     function onCloseOrRemove(err) {
  15720       self.removeSocket(socket);
  15721       socket.removeListener('free', onFree);
  15722       socket.removeListener('close', onCloseOrRemove);
  15723       socket.removeListener('agentRemove', onCloseOrRemove);
  15724     }
  15725   });
  15726 };
  15727 
  15728 TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
  15729   var self = this;
  15730   var placeholder = {};
  15731   self.sockets.push(placeholder);
  15732 
  15733   var connectOptions = mergeOptions({}, self.proxyOptions, {
  15734     method: 'CONNECT',
  15735     path: options.host + ':' + options.port,
  15736     agent: false,
  15737     headers: {
  15738       host: options.host + ':' + options.port
  15739     }
  15740   });
  15741   if (options.localAddress) {
  15742     connectOptions.localAddress = options.localAddress;
  15743   }
  15744   if (connectOptions.proxyAuth) {
  15745     connectOptions.headers = connectOptions.headers || {};
  15746     connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
  15747         new Buffer(connectOptions.proxyAuth).toString('base64');
  15748   }
  15749 
  15750   debug('making CONNECT request');
  15751   var connectReq = self.request(connectOptions);
  15752   connectReq.useChunkedEncodingByDefault = false; // for v0.6
  15753   connectReq.once('response', onResponse); // for v0.6
  15754   connectReq.once('upgrade', onUpgrade);   // for v0.6
  15755   connectReq.once('connect', onConnect);   // for v0.7 or later
  15756   connectReq.once('error', onError);
  15757   connectReq.end();
  15758 
  15759   function onResponse(res) {
  15760     // Very hacky. This is necessary to avoid http-parser leaks.
  15761     res.upgrade = true;
  15762   }
  15763 
  15764   function onUpgrade(res, socket, head) {
  15765     // Hacky.
  15766     process.nextTick(function() {
  15767       onConnect(res, socket, head);
  15768     });
  15769   }
  15770 
  15771   function onConnect(res, socket, head) {
  15772     connectReq.removeAllListeners();
  15773     socket.removeAllListeners();
  15774 
  15775     if (res.statusCode !== 200) {
  15776       debug('tunneling socket could not be established, statusCode=%d',
  15777         res.statusCode);
  15778       socket.destroy();
  15779       var error = new Error('tunneling socket could not be established, ' +
  15780         'statusCode=' + res.statusCode);
  15781       error.code = 'ECONNRESET';
  15782       options.request.emit('error', error);
  15783       self.removeSocket(placeholder);
  15784       return;
  15785     }
  15786     if (head.length > 0) {
  15787       debug('got illegal response body from proxy');
  15788       socket.destroy();
  15789       var error = new Error('got illegal response body from proxy');
  15790       error.code = 'ECONNRESET';
  15791       options.request.emit('error', error);
  15792       self.removeSocket(placeholder);
  15793       return;
  15794     }
  15795     debug('tunneling connection has established');
  15796     self.sockets[self.sockets.indexOf(placeholder)] = socket;
  15797     return cb(socket);
  15798   }
  15799 
  15800   function onError(cause) {
  15801     connectReq.removeAllListeners();
  15802 
  15803     debug('tunneling socket could not be established, cause=%s\n',
  15804           cause.message, cause.stack);
  15805     var error = new Error('tunneling socket could not be established, ' +
  15806                           'cause=' + cause.message);
  15807     error.code = 'ECONNRESET';
  15808     options.request.emit('error', error);
  15809     self.removeSocket(placeholder);
  15810   }
  15811 };
  15812 
  15813 TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
  15814   var pos = this.sockets.indexOf(socket)
  15815   if (pos === -1) {
  15816     return;
  15817   }
  15818   this.sockets.splice(pos, 1);
  15819 
  15820   var pending = this.requests.shift();
  15821   if (pending) {
  15822     // If we have pending requests and a socket gets closed a new one
  15823     // needs to be created to take over in the pool for the one that closed.
  15824     this.createSocket(pending, function(socket) {
  15825       pending.request.onSocket(socket);
  15826     });
  15827   }
  15828 };
  15829 
  15830 function createSecureSocket(options, cb) {
  15831   var self = this;
  15832   TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
  15833     var hostHeader = options.request.getHeader('host');
  15834     var tlsOptions = mergeOptions({}, self.options, {
  15835       socket: socket,
  15836       servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
  15837     });
  15838 
  15839     // 0 is dummy port for v0.6
  15840     var secureSocket = tls.connect(0, tlsOptions);
  15841     self.sockets[self.sockets.indexOf(socket)] = secureSocket;
  15842     cb(secureSocket);
  15843   });
  15844 }
  15845 
  15846 
  15847 function toOptions(host, port, localAddress) {
  15848   if (typeof host === 'string') { // since v0.10
  15849     return {
  15850       host: host,
  15851       port: port,
  15852       localAddress: localAddress
  15853     };
  15854   }
  15855   return host; // for v0.11 or later
  15856 }
  15857 
  15858 function mergeOptions(target) {
  15859   for (var i = 1, len = arguments.length; i < len; ++i) {
  15860     var overrides = arguments[i];
  15861     if (typeof overrides === 'object') {
  15862       var keys = Object.keys(overrides);
  15863       for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
  15864         var k = keys[j];
  15865         if (overrides[k] !== undefined) {
  15866           target[k] = overrides[k];
  15867         }
  15868       }
  15869     }
  15870   }
  15871   return target;
  15872 }
  15873 
  15874 
  15875 var debug;
  15876 if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
  15877   debug = function() {
  15878     var args = Array.prototype.slice.call(arguments);
  15879     if (typeof args[0] === 'string') {
  15880       args[0] = 'TUNNEL: ' + args[0];
  15881     } else {
  15882       args.unshift('TUNNEL:');
  15883     }
  15884     console.error.apply(console, args);
  15885   }
  15886 } else {
  15887   debug = function() {};
  15888 }
  15889 exports.debug = debug; // for test
  15890 
  15891 
  15892 /***/ }),
  15893 
  15894 /***/ 5030:
  15895 /***/ ((__unused_webpack_module, exports) => {
  15896 
  15897 
  15898 
  15899 Object.defineProperty(exports, "__esModule", ({ value: true }));
  15900 
  15901 function getUserAgent() {
  15902   if (typeof navigator === "object" && "userAgent" in navigator) {
  15903     return navigator.userAgent;
  15904   }
  15905 
  15906   if (typeof process === "object" && "version" in process) {
  15907     return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
  15908   }
  15909 
  15910   return "<environment undetectable>";
  15911 }
  15912 
  15913 exports.getUserAgent = getUserAgent;
  15914 //# sourceMappingURL=index.js.map
  15915 
  15916 
  15917 /***/ }),
  15918 
  15919 /***/ 5840:
  15920 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  15921 
  15922 
  15923 
  15924 Object.defineProperty(exports, "__esModule", ({
  15925   value: true
  15926 }));
  15927 Object.defineProperty(exports, "v1", ({
  15928   enumerable: true,
  15929   get: function () {
  15930     return _v.default;
  15931   }
  15932 }));
  15933 Object.defineProperty(exports, "v3", ({
  15934   enumerable: true,
  15935   get: function () {
  15936     return _v2.default;
  15937   }
  15938 }));
  15939 Object.defineProperty(exports, "v4", ({
  15940   enumerable: true,
  15941   get: function () {
  15942     return _v3.default;
  15943   }
  15944 }));
  15945 Object.defineProperty(exports, "v5", ({
  15946   enumerable: true,
  15947   get: function () {
  15948     return _v4.default;
  15949   }
  15950 }));
  15951 Object.defineProperty(exports, "NIL", ({
  15952   enumerable: true,
  15953   get: function () {
  15954     return _nil.default;
  15955   }
  15956 }));
  15957 Object.defineProperty(exports, "version", ({
  15958   enumerable: true,
  15959   get: function () {
  15960     return _version.default;
  15961   }
  15962 }));
  15963 Object.defineProperty(exports, "validate", ({
  15964   enumerable: true,
  15965   get: function () {
  15966     return _validate.default;
  15967   }
  15968 }));
  15969 Object.defineProperty(exports, "stringify", ({
  15970   enumerable: true,
  15971   get: function () {
  15972     return _stringify.default;
  15973   }
  15974 }));
  15975 Object.defineProperty(exports, "parse", ({
  15976   enumerable: true,
  15977   get: function () {
  15978     return _parse.default;
  15979   }
  15980 }));
  15981 
  15982 var _v = _interopRequireDefault(__nccwpck_require__(8628));
  15983 
  15984 var _v2 = _interopRequireDefault(__nccwpck_require__(6409));
  15985 
  15986 var _v3 = _interopRequireDefault(__nccwpck_require__(5122));
  15987 
  15988 var _v4 = _interopRequireDefault(__nccwpck_require__(9120));
  15989 
  15990 var _nil = _interopRequireDefault(__nccwpck_require__(5332));
  15991 
  15992 var _version = _interopRequireDefault(__nccwpck_require__(1595));
  15993 
  15994 var _validate = _interopRequireDefault(__nccwpck_require__(6900));
  15995 
  15996 var _stringify = _interopRequireDefault(__nccwpck_require__(8950));
  15997 
  15998 var _parse = _interopRequireDefault(__nccwpck_require__(2746));
  15999 
  16000 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16001 
  16002 /***/ }),
  16003 
  16004 /***/ 4569:
  16005 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16006 
  16007 
  16008 
  16009 Object.defineProperty(exports, "__esModule", ({
  16010   value: true
  16011 }));
  16012 exports["default"] = void 0;
  16013 
  16014 var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
  16015 
  16016 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16017 
  16018 function md5(bytes) {
  16019   if (Array.isArray(bytes)) {
  16020     bytes = Buffer.from(bytes);
  16021   } else if (typeof bytes === 'string') {
  16022     bytes = Buffer.from(bytes, 'utf8');
  16023   }
  16024 
  16025   return _crypto.default.createHash('md5').update(bytes).digest();
  16026 }
  16027 
  16028 var _default = md5;
  16029 exports["default"] = _default;
  16030 
  16031 /***/ }),
  16032 
  16033 /***/ 5332:
  16034 /***/ ((__unused_webpack_module, exports) => {
  16035 
  16036 
  16037 
  16038 Object.defineProperty(exports, "__esModule", ({
  16039   value: true
  16040 }));
  16041 exports["default"] = void 0;
  16042 var _default = '00000000-0000-0000-0000-000000000000';
  16043 exports["default"] = _default;
  16044 
  16045 /***/ }),
  16046 
  16047 /***/ 2746:
  16048 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16049 
  16050 
  16051 
  16052 Object.defineProperty(exports, "__esModule", ({
  16053   value: true
  16054 }));
  16055 exports["default"] = void 0;
  16056 
  16057 var _validate = _interopRequireDefault(__nccwpck_require__(6900));
  16058 
  16059 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16060 
  16061 function parse(uuid) {
  16062   if (!(0, _validate.default)(uuid)) {
  16063     throw TypeError('Invalid UUID');
  16064   }
  16065 
  16066   let v;
  16067   const arr = new Uint8Array(16); // Parse ########-....-....-....-............
  16068 
  16069   arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
  16070   arr[1] = v >>> 16 & 0xff;
  16071   arr[2] = v >>> 8 & 0xff;
  16072   arr[3] = v & 0xff; // Parse ........-####-....-....-............
  16073 
  16074   arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
  16075   arr[5] = v & 0xff; // Parse ........-....-####-....-............
  16076 
  16077   arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
  16078   arr[7] = v & 0xff; // Parse ........-....-....-####-............
  16079 
  16080   arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
  16081   arr[9] = v & 0xff; // Parse ........-....-....-....-############
  16082   // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
  16083 
  16084   arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
  16085   arr[11] = v / 0x100000000 & 0xff;
  16086   arr[12] = v >>> 24 & 0xff;
  16087   arr[13] = v >>> 16 & 0xff;
  16088   arr[14] = v >>> 8 & 0xff;
  16089   arr[15] = v & 0xff;
  16090   return arr;
  16091 }
  16092 
  16093 var _default = parse;
  16094 exports["default"] = _default;
  16095 
  16096 /***/ }),
  16097 
  16098 /***/ 814:
  16099 /***/ ((__unused_webpack_module, exports) => {
  16100 
  16101 
  16102 
  16103 Object.defineProperty(exports, "__esModule", ({
  16104   value: true
  16105 }));
  16106 exports["default"] = void 0;
  16107 var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
  16108 exports["default"] = _default;
  16109 
  16110 /***/ }),
  16111 
  16112 /***/ 807:
  16113 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16114 
  16115 
  16116 
  16117 Object.defineProperty(exports, "__esModule", ({
  16118   value: true
  16119 }));
  16120 exports["default"] = rng;
  16121 
  16122 var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
  16123 
  16124 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16125 
  16126 const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
  16127 
  16128 let poolPtr = rnds8Pool.length;
  16129 
  16130 function rng() {
  16131   if (poolPtr > rnds8Pool.length - 16) {
  16132     _crypto.default.randomFillSync(rnds8Pool);
  16133 
  16134     poolPtr = 0;
  16135   }
  16136 
  16137   return rnds8Pool.slice(poolPtr, poolPtr += 16);
  16138 }
  16139 
  16140 /***/ }),
  16141 
  16142 /***/ 5274:
  16143 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16144 
  16145 
  16146 
  16147 Object.defineProperty(exports, "__esModule", ({
  16148   value: true
  16149 }));
  16150 exports["default"] = void 0;
  16151 
  16152 var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
  16153 
  16154 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16155 
  16156 function sha1(bytes) {
  16157   if (Array.isArray(bytes)) {
  16158     bytes = Buffer.from(bytes);
  16159   } else if (typeof bytes === 'string') {
  16160     bytes = Buffer.from(bytes, 'utf8');
  16161   }
  16162 
  16163   return _crypto.default.createHash('sha1').update(bytes).digest();
  16164 }
  16165 
  16166 var _default = sha1;
  16167 exports["default"] = _default;
  16168 
  16169 /***/ }),
  16170 
  16171 /***/ 8950:
  16172 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16173 
  16174 
  16175 
  16176 Object.defineProperty(exports, "__esModule", ({
  16177   value: true
  16178 }));
  16179 exports["default"] = void 0;
  16180 
  16181 var _validate = _interopRequireDefault(__nccwpck_require__(6900));
  16182 
  16183 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16184 
  16185 /**
  16186  * Convert array of 16 byte values to UUID string format of the form:
  16187  * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
  16188  */
  16189 const byteToHex = [];
  16190 
  16191 for (let i = 0; i < 256; ++i) {
  16192   byteToHex.push((i + 0x100).toString(16).substr(1));
  16193 }
  16194 
  16195 function stringify(arr, offset = 0) {
  16196   // Note: Be careful editing this code!  It's been tuned for performance
  16197   // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
  16198   const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
  16199   // of the following:
  16200   // - One or more input array values don't map to a hex octet (leading to
  16201   // "undefined" in the uuid)
  16202   // - Invalid input values for the RFC `version` or `variant` fields
  16203 
  16204   if (!(0, _validate.default)(uuid)) {
  16205     throw TypeError('Stringified UUID is invalid');
  16206   }
  16207 
  16208   return uuid;
  16209 }
  16210 
  16211 var _default = stringify;
  16212 exports["default"] = _default;
  16213 
  16214 /***/ }),
  16215 
  16216 /***/ 8628:
  16217 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16218 
  16219 
  16220 
  16221 Object.defineProperty(exports, "__esModule", ({
  16222   value: true
  16223 }));
  16224 exports["default"] = void 0;
  16225 
  16226 var _rng = _interopRequireDefault(__nccwpck_require__(807));
  16227 
  16228 var _stringify = _interopRequireDefault(__nccwpck_require__(8950));
  16229 
  16230 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16231 
  16232 // **`v1()` - Generate time-based UUID**
  16233 //
  16234 // Inspired by https://github.com/LiosK/UUID.js
  16235 // and http://docs.python.org/library/uuid.html
  16236 let _nodeId;
  16237 
  16238 let _clockseq; // Previous uuid creation time
  16239 
  16240 
  16241 let _lastMSecs = 0;
  16242 let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
  16243 
  16244 function v1(options, buf, offset) {
  16245   let i = buf && offset || 0;
  16246   const b = buf || new Array(16);
  16247   options = options || {};
  16248   let node = options.node || _nodeId;
  16249   let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
  16250   // specified.  We do this lazily to minimize issues related to insufficient
  16251   // system entropy.  See #189
  16252 
  16253   if (node == null || clockseq == null) {
  16254     const seedBytes = options.random || (options.rng || _rng.default)();
  16255 
  16256     if (node == null) {
  16257       // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
  16258       node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
  16259     }
  16260 
  16261     if (clockseq == null) {
  16262       // Per 4.2.2, randomize (14 bit) clockseq
  16263       clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
  16264     }
  16265   } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
  16266   // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
  16267   // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
  16268   // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
  16269 
  16270 
  16271   let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
  16272   // cycle to simulate higher resolution clock
  16273 
  16274   let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
  16275 
  16276   const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
  16277 
  16278   if (dt < 0 && options.clockseq === undefined) {
  16279     clockseq = clockseq + 1 & 0x3fff;
  16280   } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
  16281   // time interval
  16282 
  16283 
  16284   if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
  16285     nsecs = 0;
  16286   } // Per 4.2.1.2 Throw error if too many uuids are requested
  16287 
  16288 
  16289   if (nsecs >= 10000) {
  16290     throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
  16291   }
  16292 
  16293   _lastMSecs = msecs;
  16294   _lastNSecs = nsecs;
  16295   _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
  16296 
  16297   msecs += 12219292800000; // `time_low`
  16298 
  16299   const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
  16300   b[i++] = tl >>> 24 & 0xff;
  16301   b[i++] = tl >>> 16 & 0xff;
  16302   b[i++] = tl >>> 8 & 0xff;
  16303   b[i++] = tl & 0xff; // `time_mid`
  16304 
  16305   const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
  16306   b[i++] = tmh >>> 8 & 0xff;
  16307   b[i++] = tmh & 0xff; // `time_high_and_version`
  16308 
  16309   b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
  16310 
  16311   b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
  16312 
  16313   b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
  16314 
  16315   b[i++] = clockseq & 0xff; // `node`
  16316 
  16317   for (let n = 0; n < 6; ++n) {
  16318     b[i + n] = node[n];
  16319   }
  16320 
  16321   return buf || (0, _stringify.default)(b);
  16322 }
  16323 
  16324 var _default = v1;
  16325 exports["default"] = _default;
  16326 
  16327 /***/ }),
  16328 
  16329 /***/ 6409:
  16330 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16331 
  16332 
  16333 
  16334 Object.defineProperty(exports, "__esModule", ({
  16335   value: true
  16336 }));
  16337 exports["default"] = void 0;
  16338 
  16339 var _v = _interopRequireDefault(__nccwpck_require__(5998));
  16340 
  16341 var _md = _interopRequireDefault(__nccwpck_require__(4569));
  16342 
  16343 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16344 
  16345 const v3 = (0, _v.default)('v3', 0x30, _md.default);
  16346 var _default = v3;
  16347 exports["default"] = _default;
  16348 
  16349 /***/ }),
  16350 
  16351 /***/ 5998:
  16352 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16353 
  16354 
  16355 
  16356 Object.defineProperty(exports, "__esModule", ({
  16357   value: true
  16358 }));
  16359 exports["default"] = _default;
  16360 exports.URL = exports.DNS = void 0;
  16361 
  16362 var _stringify = _interopRequireDefault(__nccwpck_require__(8950));
  16363 
  16364 var _parse = _interopRequireDefault(__nccwpck_require__(2746));
  16365 
  16366 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16367 
  16368 function stringToBytes(str) {
  16369   str = unescape(encodeURIComponent(str)); // UTF8 escape
  16370 
  16371   const bytes = [];
  16372 
  16373   for (let i = 0; i < str.length; ++i) {
  16374     bytes.push(str.charCodeAt(i));
  16375   }
  16376 
  16377   return bytes;
  16378 }
  16379 
  16380 const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
  16381 exports.DNS = DNS;
  16382 const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
  16383 exports.URL = URL;
  16384 
  16385 function _default(name, version, hashfunc) {
  16386   function generateUUID(value, namespace, buf, offset) {
  16387     if (typeof value === 'string') {
  16388       value = stringToBytes(value);
  16389     }
  16390 
  16391     if (typeof namespace === 'string') {
  16392       namespace = (0, _parse.default)(namespace);
  16393     }
  16394 
  16395     if (namespace.length !== 16) {
  16396       throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
  16397     } // Compute hash of namespace and value, Per 4.3
  16398     // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
  16399     // hashfunc([...namespace, ... value])`
  16400 
  16401 
  16402     let bytes = new Uint8Array(16 + value.length);
  16403     bytes.set(namespace);
  16404     bytes.set(value, namespace.length);
  16405     bytes = hashfunc(bytes);
  16406     bytes[6] = bytes[6] & 0x0f | version;
  16407     bytes[8] = bytes[8] & 0x3f | 0x80;
  16408 
  16409     if (buf) {
  16410       offset = offset || 0;
  16411 
  16412       for (let i = 0; i < 16; ++i) {
  16413         buf[offset + i] = bytes[i];
  16414       }
  16415 
  16416       return buf;
  16417     }
  16418 
  16419     return (0, _stringify.default)(bytes);
  16420   } // Function#name is not settable on some platforms (#270)
  16421 
  16422 
  16423   try {
  16424     generateUUID.name = name; // eslint-disable-next-line no-empty
  16425   } catch (err) {} // For CommonJS default export support
  16426 
  16427 
  16428   generateUUID.DNS = DNS;
  16429   generateUUID.URL = URL;
  16430   return generateUUID;
  16431 }
  16432 
  16433 /***/ }),
  16434 
  16435 /***/ 5122:
  16436 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16437 
  16438 
  16439 
  16440 Object.defineProperty(exports, "__esModule", ({
  16441   value: true
  16442 }));
  16443 exports["default"] = void 0;
  16444 
  16445 var _rng = _interopRequireDefault(__nccwpck_require__(807));
  16446 
  16447 var _stringify = _interopRequireDefault(__nccwpck_require__(8950));
  16448 
  16449 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16450 
  16451 function v4(options, buf, offset) {
  16452   options = options || {};
  16453 
  16454   const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
  16455 
  16456 
  16457   rnds[6] = rnds[6] & 0x0f | 0x40;
  16458   rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
  16459 
  16460   if (buf) {
  16461     offset = offset || 0;
  16462 
  16463     for (let i = 0; i < 16; ++i) {
  16464       buf[offset + i] = rnds[i];
  16465     }
  16466 
  16467     return buf;
  16468   }
  16469 
  16470   return (0, _stringify.default)(rnds);
  16471 }
  16472 
  16473 var _default = v4;
  16474 exports["default"] = _default;
  16475 
  16476 /***/ }),
  16477 
  16478 /***/ 9120:
  16479 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16480 
  16481 
  16482 
  16483 Object.defineProperty(exports, "__esModule", ({
  16484   value: true
  16485 }));
  16486 exports["default"] = void 0;
  16487 
  16488 var _v = _interopRequireDefault(__nccwpck_require__(5998));
  16489 
  16490 var _sha = _interopRequireDefault(__nccwpck_require__(5274));
  16491 
  16492 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16493 
  16494 const v5 = (0, _v.default)('v5', 0x50, _sha.default);
  16495 var _default = v5;
  16496 exports["default"] = _default;
  16497 
  16498 /***/ }),
  16499 
  16500 /***/ 6900:
  16501 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16502 
  16503 
  16504 
  16505 Object.defineProperty(exports, "__esModule", ({
  16506   value: true
  16507 }));
  16508 exports["default"] = void 0;
  16509 
  16510 var _regex = _interopRequireDefault(__nccwpck_require__(814));
  16511 
  16512 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16513 
  16514 function validate(uuid) {
  16515   return typeof uuid === 'string' && _regex.default.test(uuid);
  16516 }
  16517 
  16518 var _default = validate;
  16519 exports["default"] = _default;
  16520 
  16521 /***/ }),
  16522 
  16523 /***/ 1595:
  16524 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16525 
  16526 
  16527 
  16528 Object.defineProperty(exports, "__esModule", ({
  16529   value: true
  16530 }));
  16531 exports["default"] = void 0;
  16532 
  16533 var _validate = _interopRequireDefault(__nccwpck_require__(6900));
  16534 
  16535 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  16536 
  16537 function version(uuid) {
  16538   if (!(0, _validate.default)(uuid)) {
  16539     throw TypeError('Invalid UUID');
  16540   }
  16541 
  16542   return parseInt(uuid.substr(14, 1), 16);
  16543 }
  16544 
  16545 var _default = version;
  16546 exports["default"] = _default;
  16547 
  16548 /***/ }),
  16549 
  16550 /***/ 4886:
  16551 /***/ ((module) => {
  16552 
  16553 
  16554 
  16555 var conversions = {};
  16556 module.exports = conversions;
  16557 
  16558 function sign(x) {
  16559     return x < 0 ? -1 : 1;
  16560 }
  16561 
  16562 function evenRound(x) {
  16563     // Round x to the nearest integer, choosing the even integer if it lies halfway between two.
  16564     if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)
  16565         return Math.floor(x);
  16566     } else {
  16567         return Math.round(x);
  16568     }
  16569 }
  16570 
  16571 function createNumberConversion(bitLength, typeOpts) {
  16572     if (!typeOpts.unsigned) {
  16573         --bitLength;
  16574     }
  16575     const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);
  16576     const upperBound = Math.pow(2, bitLength) - 1;
  16577 
  16578     const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);
  16579     const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);
  16580 
  16581     return function(V, opts) {
  16582         if (!opts) opts = {};
  16583 
  16584         let x = +V;
  16585 
  16586         if (opts.enforceRange) {
  16587             if (!Number.isFinite(x)) {
  16588                 throw new TypeError("Argument is not a finite number");
  16589             }
  16590 
  16591             x = sign(x) * Math.floor(Math.abs(x));
  16592             if (x < lowerBound || x > upperBound) {
  16593                 throw new TypeError("Argument is not in byte range");
  16594             }
  16595 
  16596             return x;
  16597         }
  16598 
  16599         if (!isNaN(x) && opts.clamp) {
  16600             x = evenRound(x);
  16601 
  16602             if (x < lowerBound) x = lowerBound;
  16603             if (x > upperBound) x = upperBound;
  16604             return x;
  16605         }
  16606 
  16607         if (!Number.isFinite(x) || x === 0) {
  16608             return 0;
  16609         }
  16610 
  16611         x = sign(x) * Math.floor(Math.abs(x));
  16612         x = x % moduloVal;
  16613 
  16614         if (!typeOpts.unsigned && x >= moduloBound) {
  16615             return x - moduloVal;
  16616         } else if (typeOpts.unsigned) {
  16617             if (x < 0) {
  16618               x += moduloVal;
  16619             } else if (x === -0) { // don't return negative zero
  16620               return 0;
  16621             }
  16622         }
  16623 
  16624         return x;
  16625     }
  16626 }
  16627 
  16628 conversions["void"] = function () {
  16629     return undefined;
  16630 };
  16631 
  16632 conversions["boolean"] = function (val) {
  16633     return !!val;
  16634 };
  16635 
  16636 conversions["byte"] = createNumberConversion(8, { unsigned: false });
  16637 conversions["octet"] = createNumberConversion(8, { unsigned: true });
  16638 
  16639 conversions["short"] = createNumberConversion(16, { unsigned: false });
  16640 conversions["unsigned short"] = createNumberConversion(16, { unsigned: true });
  16641 
  16642 conversions["long"] = createNumberConversion(32, { unsigned: false });
  16643 conversions["unsigned long"] = createNumberConversion(32, { unsigned: true });
  16644 
  16645 conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });
  16646 conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });
  16647 
  16648 conversions["double"] = function (V) {
  16649     const x = +V;
  16650 
  16651     if (!Number.isFinite(x)) {
  16652         throw new TypeError("Argument is not a finite floating-point value");
  16653     }
  16654 
  16655     return x;
  16656 };
  16657 
  16658 conversions["unrestricted double"] = function (V) {
  16659     const x = +V;
  16660 
  16661     if (isNaN(x)) {
  16662         throw new TypeError("Argument is NaN");
  16663     }
  16664 
  16665     return x;
  16666 };
  16667 
  16668 // not quite valid, but good enough for JS
  16669 conversions["float"] = conversions["double"];
  16670 conversions["unrestricted float"] = conversions["unrestricted double"];
  16671 
  16672 conversions["DOMString"] = function (V, opts) {
  16673     if (!opts) opts = {};
  16674 
  16675     if (opts.treatNullAsEmptyString && V === null) {
  16676         return "";
  16677     }
  16678 
  16679     return String(V);
  16680 };
  16681 
  16682 conversions["ByteString"] = function (V, opts) {
  16683     const x = String(V);
  16684     let c = undefined;
  16685     for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
  16686         if (c > 255) {
  16687             throw new TypeError("Argument is not a valid bytestring");
  16688         }
  16689     }
  16690 
  16691     return x;
  16692 };
  16693 
  16694 conversions["USVString"] = function (V) {
  16695     const S = String(V);
  16696     const n = S.length;
  16697     const U = [];
  16698     for (let i = 0; i < n; ++i) {
  16699         const c = S.charCodeAt(i);
  16700         if (c < 0xD800 || c > 0xDFFF) {
  16701             U.push(String.fromCodePoint(c));
  16702         } else if (0xDC00 <= c && c <= 0xDFFF) {
  16703             U.push(String.fromCodePoint(0xFFFD));
  16704         } else {
  16705             if (i === n - 1) {
  16706                 U.push(String.fromCodePoint(0xFFFD));
  16707             } else {
  16708                 const d = S.charCodeAt(i + 1);
  16709                 if (0xDC00 <= d && d <= 0xDFFF) {
  16710                     const a = c & 0x3FF;
  16711                     const b = d & 0x3FF;
  16712                     U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));
  16713                     ++i;
  16714                 } else {
  16715                     U.push(String.fromCodePoint(0xFFFD));
  16716                 }
  16717             }
  16718         }
  16719     }
  16720 
  16721     return U.join('');
  16722 };
  16723 
  16724 conversions["Date"] = function (V, opts) {
  16725     if (!(V instanceof Date)) {
  16726         throw new TypeError("Argument is not a Date object");
  16727     }
  16728     if (isNaN(V)) {
  16729         return undefined;
  16730     }
  16731 
  16732     return V;
  16733 };
  16734 
  16735 conversions["RegExp"] = function (V, opts) {
  16736     if (!(V instanceof RegExp)) {
  16737         V = new RegExp(V);
  16738     }
  16739 
  16740     return V;
  16741 };
  16742 
  16743 
  16744 /***/ }),
  16745 
  16746 /***/ 7537:
  16747 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  16748 
  16749 
  16750 const usm = __nccwpck_require__(2158);
  16751 
  16752 exports.implementation = class URLImpl {
  16753   constructor(constructorArgs) {
  16754     const url = constructorArgs[0];
  16755     const base = constructorArgs[1];
  16756 
  16757     let parsedBase = null;
  16758     if (base !== undefined) {
  16759       parsedBase = usm.basicURLParse(base);
  16760       if (parsedBase === "failure") {
  16761         throw new TypeError("Invalid base URL");
  16762       }
  16763     }
  16764 
  16765     const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });
  16766     if (parsedURL === "failure") {
  16767       throw new TypeError("Invalid URL");
  16768     }
  16769 
  16770     this._url = parsedURL;
  16771 
  16772     // TODO: query stuff
  16773   }
  16774 
  16775   get href() {
  16776     return usm.serializeURL(this._url);
  16777   }
  16778 
  16779   set href(v) {
  16780     const parsedURL = usm.basicURLParse(v);
  16781     if (parsedURL === "failure") {
  16782       throw new TypeError("Invalid URL");
  16783     }
  16784 
  16785     this._url = parsedURL;
  16786   }
  16787 
  16788   get origin() {
  16789     return usm.serializeURLOrigin(this._url);
  16790   }
  16791 
  16792   get protocol() {
  16793     return this._url.scheme + ":";
  16794   }
  16795 
  16796   set protocol(v) {
  16797     usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" });
  16798   }
  16799 
  16800   get username() {
  16801     return this._url.username;
  16802   }
  16803 
  16804   set username(v) {
  16805     if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
  16806       return;
  16807     }
  16808 
  16809     usm.setTheUsername(this._url, v);
  16810   }
  16811 
  16812   get password() {
  16813     return this._url.password;
  16814   }
  16815 
  16816   set password(v) {
  16817     if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
  16818       return;
  16819     }
  16820 
  16821     usm.setThePassword(this._url, v);
  16822   }
  16823 
  16824   get host() {
  16825     const url = this._url;
  16826 
  16827     if (url.host === null) {
  16828       return "";
  16829     }
  16830 
  16831     if (url.port === null) {
  16832       return usm.serializeHost(url.host);
  16833     }
  16834 
  16835     return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port);
  16836   }
  16837 
  16838   set host(v) {
  16839     if (this._url.cannotBeABaseURL) {
  16840       return;
  16841     }
  16842 
  16843     usm.basicURLParse(v, { url: this._url, stateOverride: "host" });
  16844   }
  16845 
  16846   get hostname() {
  16847     if (this._url.host === null) {
  16848       return "";
  16849     }
  16850 
  16851     return usm.serializeHost(this._url.host);
  16852   }
  16853 
  16854   set hostname(v) {
  16855     if (this._url.cannotBeABaseURL) {
  16856       return;
  16857     }
  16858 
  16859     usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" });
  16860   }
  16861 
  16862   get port() {
  16863     if (this._url.port === null) {
  16864       return "";
  16865     }
  16866 
  16867     return usm.serializeInteger(this._url.port);
  16868   }
  16869 
  16870   set port(v) {
  16871     if (usm.cannotHaveAUsernamePasswordPort(this._url)) {
  16872       return;
  16873     }
  16874 
  16875     if (v === "") {
  16876       this._url.port = null;
  16877     } else {
  16878       usm.basicURLParse(v, { url: this._url, stateOverride: "port" });
  16879     }
  16880   }
  16881 
  16882   get pathname() {
  16883     if (this._url.cannotBeABaseURL) {
  16884       return this._url.path[0];
  16885     }
  16886 
  16887     if (this._url.path.length === 0) {
  16888       return "";
  16889     }
  16890 
  16891     return "/" + this._url.path.join("/");
  16892   }
  16893 
  16894   set pathname(v) {
  16895     if (this._url.cannotBeABaseURL) {
  16896       return;
  16897     }
  16898 
  16899     this._url.path = [];
  16900     usm.basicURLParse(v, { url: this._url, stateOverride: "path start" });
  16901   }
  16902 
  16903   get search() {
  16904     if (this._url.query === null || this._url.query === "") {
  16905       return "";
  16906     }
  16907 
  16908     return "?" + this._url.query;
  16909   }
  16910 
  16911   set search(v) {
  16912     // TODO: query stuff
  16913 
  16914     const url = this._url;
  16915 
  16916     if (v === "") {
  16917       url.query = null;
  16918       return;
  16919     }
  16920 
  16921     const input = v[0] === "?" ? v.substring(1) : v;
  16922     url.query = "";
  16923     usm.basicURLParse(input, { url, stateOverride: "query" });
  16924   }
  16925 
  16926   get hash() {
  16927     if (this._url.fragment === null || this._url.fragment === "") {
  16928       return "";
  16929     }
  16930 
  16931     return "#" + this._url.fragment;
  16932   }
  16933 
  16934   set hash(v) {
  16935     if (v === "") {
  16936       this._url.fragment = null;
  16937       return;
  16938     }
  16939 
  16940     const input = v[0] === "#" ? v.substring(1) : v;
  16941     this._url.fragment = "";
  16942     usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" });
  16943   }
  16944 
  16945   toJSON() {
  16946     return this.href;
  16947   }
  16948 };
  16949 
  16950 
  16951 /***/ }),
  16952 
  16953 /***/ 3394:
  16954 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  16955 
  16956 
  16957 
  16958 const conversions = __nccwpck_require__(4886);
  16959 const utils = __nccwpck_require__(3185);
  16960 const Impl = __nccwpck_require__(7537);
  16961 
  16962 const impl = utils.implSymbol;
  16963 
  16964 function URL(url) {
  16965   if (!this || this[impl] || !(this instanceof URL)) {
  16966     throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.");
  16967   }
  16968   if (arguments.length < 1) {
  16969     throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present.");
  16970   }
  16971   const args = [];
  16972   for (let i = 0; i < arguments.length && i < 2; ++i) {
  16973     args[i] = arguments[i];
  16974   }
  16975   args[0] = conversions["USVString"](args[0]);
  16976   if (args[1] !== undefined) {
  16977   args[1] = conversions["USVString"](args[1]);
  16978   }
  16979 
  16980   module.exports.setup(this, args);
  16981 }
  16982 
  16983 URL.prototype.toJSON = function toJSON() {
  16984   if (!this || !module.exports.is(this)) {
  16985     throw new TypeError("Illegal invocation");
  16986   }
  16987   const args = [];
  16988   for (let i = 0; i < arguments.length && i < 0; ++i) {
  16989     args[i] = arguments[i];
  16990   }
  16991   return this[impl].toJSON.apply(this[impl], args);
  16992 };
  16993 Object.defineProperty(URL.prototype, "href", {
  16994   get() {
  16995     return this[impl].href;
  16996   },
  16997   set(V) {
  16998     V = conversions["USVString"](V);
  16999     this[impl].href = V;
  17000   },
  17001   enumerable: true,
  17002   configurable: true
  17003 });
  17004 
  17005 URL.prototype.toString = function () {
  17006   if (!this || !module.exports.is(this)) {
  17007     throw new TypeError("Illegal invocation");
  17008   }
  17009   return this.href;
  17010 };
  17011 
  17012 Object.defineProperty(URL.prototype, "origin", {
  17013   get() {
  17014     return this[impl].origin;
  17015   },
  17016   enumerable: true,
  17017   configurable: true
  17018 });
  17019 
  17020 Object.defineProperty(URL.prototype, "protocol", {
  17021   get() {
  17022     return this[impl].protocol;
  17023   },
  17024   set(V) {
  17025     V = conversions["USVString"](V);
  17026     this[impl].protocol = V;
  17027   },
  17028   enumerable: true,
  17029   configurable: true
  17030 });
  17031 
  17032 Object.defineProperty(URL.prototype, "username", {
  17033   get() {
  17034     return this[impl].username;
  17035   },
  17036   set(V) {
  17037     V = conversions["USVString"](V);
  17038     this[impl].username = V;
  17039   },
  17040   enumerable: true,
  17041   configurable: true
  17042 });
  17043 
  17044 Object.defineProperty(URL.prototype, "password", {
  17045   get() {
  17046     return this[impl].password;
  17047   },
  17048   set(V) {
  17049     V = conversions["USVString"](V);
  17050     this[impl].password = V;
  17051   },
  17052   enumerable: true,
  17053   configurable: true
  17054 });
  17055 
  17056 Object.defineProperty(URL.prototype, "host", {
  17057   get() {
  17058     return this[impl].host;
  17059   },
  17060   set(V) {
  17061     V = conversions["USVString"](V);
  17062     this[impl].host = V;
  17063   },
  17064   enumerable: true,
  17065   configurable: true
  17066 });
  17067 
  17068 Object.defineProperty(URL.prototype, "hostname", {
  17069   get() {
  17070     return this[impl].hostname;
  17071   },
  17072   set(V) {
  17073     V = conversions["USVString"](V);
  17074     this[impl].hostname = V;
  17075   },
  17076   enumerable: true,
  17077   configurable: true
  17078 });
  17079 
  17080 Object.defineProperty(URL.prototype, "port", {
  17081   get() {
  17082     return this[impl].port;
  17083   },
  17084   set(V) {
  17085     V = conversions["USVString"](V);
  17086     this[impl].port = V;
  17087   },
  17088   enumerable: true,
  17089   configurable: true
  17090 });
  17091 
  17092 Object.defineProperty(URL.prototype, "pathname", {
  17093   get() {
  17094     return this[impl].pathname;
  17095   },
  17096   set(V) {
  17097     V = conversions["USVString"](V);
  17098     this[impl].pathname = V;
  17099   },
  17100   enumerable: true,
  17101   configurable: true
  17102 });
  17103 
  17104 Object.defineProperty(URL.prototype, "search", {
  17105   get() {
  17106     return this[impl].search;
  17107   },
  17108   set(V) {
  17109     V = conversions["USVString"](V);
  17110     this[impl].search = V;
  17111   },
  17112   enumerable: true,
  17113   configurable: true
  17114 });
  17115 
  17116 Object.defineProperty(URL.prototype, "hash", {
  17117   get() {
  17118     return this[impl].hash;
  17119   },
  17120   set(V) {
  17121     V = conversions["USVString"](V);
  17122     this[impl].hash = V;
  17123   },
  17124   enumerable: true,
  17125   configurable: true
  17126 });
  17127 
  17128 
  17129 module.exports = {
  17130   is(obj) {
  17131     return !!obj && obj[impl] instanceof Impl.implementation;
  17132   },
  17133   create(constructorArgs, privateData) {
  17134     let obj = Object.create(URL.prototype);
  17135     this.setup(obj, constructorArgs, privateData);
  17136     return obj;
  17137   },
  17138   setup(obj, constructorArgs, privateData) {
  17139     if (!privateData) privateData = {};
  17140     privateData.wrapper = obj;
  17141 
  17142     obj[impl] = new Impl.implementation(constructorArgs, privateData);
  17143     obj[impl][utils.wrapperSymbol] = obj;
  17144   },
  17145   interface: URL,
  17146   expose: {
  17147     Window: { URL: URL },
  17148     Worker: { URL: URL }
  17149   }
  17150 };
  17151 
  17152 
  17153 
  17154 /***/ }),
  17155 
  17156 /***/ 8665:
  17157 /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  17158 
  17159 
  17160 
  17161 exports.URL = __nccwpck_require__(3394)["interface"];
  17162 exports.serializeURL = __nccwpck_require__(2158).serializeURL;
  17163 exports.serializeURLOrigin = __nccwpck_require__(2158).serializeURLOrigin;
  17164 exports.basicURLParse = __nccwpck_require__(2158).basicURLParse;
  17165 exports.setTheUsername = __nccwpck_require__(2158).setTheUsername;
  17166 exports.setThePassword = __nccwpck_require__(2158).setThePassword;
  17167 exports.serializeHost = __nccwpck_require__(2158).serializeHost;
  17168 exports.serializeInteger = __nccwpck_require__(2158).serializeInteger;
  17169 exports.parseURL = __nccwpck_require__(2158).parseURL;
  17170 
  17171 
  17172 /***/ }),
  17173 
  17174 /***/ 2158:
  17175 /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  17176 
  17177 
  17178 const punycode = __nccwpck_require__(5477);
  17179 const tr46 = __nccwpck_require__(4256);
  17180 
  17181 const specialSchemes = {
  17182   ftp: 21,
  17183   file: null,
  17184   gopher: 70,
  17185   http: 80,
  17186   https: 443,
  17187   ws: 80,
  17188   wss: 443
  17189 };
  17190 
  17191 const failure = Symbol("failure");
  17192 
  17193 function countSymbols(str) {
  17194   return punycode.ucs2.decode(str).length;
  17195 }
  17196 
  17197 function at(input, idx) {
  17198   const c = input[idx];
  17199   return isNaN(c) ? undefined : String.fromCodePoint(c);
  17200 }
  17201 
  17202 function isASCIIDigit(c) {
  17203   return c >= 0x30 && c <= 0x39;
  17204 }
  17205 
  17206 function isASCIIAlpha(c) {
  17207   return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);
  17208 }
  17209 
  17210 function isASCIIAlphanumeric(c) {
  17211   return isASCIIAlpha(c) || isASCIIDigit(c);
  17212 }
  17213 
  17214 function isASCIIHex(c) {
  17215   return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);
  17216 }
  17217 
  17218 function isSingleDot(buffer) {
  17219   return buffer === "." || buffer.toLowerCase() === "%2e";
  17220 }
  17221 
  17222 function isDoubleDot(buffer) {
  17223   buffer = buffer.toLowerCase();
  17224   return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
  17225 }
  17226 
  17227 function isWindowsDriveLetterCodePoints(cp1, cp2) {
  17228   return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
  17229 }
  17230 
  17231 function isWindowsDriveLetterString(string) {
  17232   return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
  17233 }
  17234 
  17235 function isNormalizedWindowsDriveLetterString(string) {
  17236   return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
  17237 }
  17238 
  17239 function containsForbiddenHostCodePoint(string) {
  17240   return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/) !== -1;
  17241 }
  17242 
  17243 function containsForbiddenHostCodePointExcludingPercent(string) {
  17244   return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/) !== -1;
  17245 }
  17246 
  17247 function isSpecialScheme(scheme) {
  17248   return specialSchemes[scheme] !== undefined;
  17249 }
  17250 
  17251 function isSpecial(url) {
  17252   return isSpecialScheme(url.scheme);
  17253 }
  17254 
  17255 function defaultPort(scheme) {
  17256   return specialSchemes[scheme];
  17257 }
  17258 
  17259 function percentEncode(c) {
  17260   let hex = c.toString(16).toUpperCase();
  17261   if (hex.length === 1) {
  17262     hex = "0" + hex;
  17263   }
  17264 
  17265   return "%" + hex;
  17266 }
  17267 
  17268 function utf8PercentEncode(c) {
  17269   const buf = new Buffer(c);
  17270 
  17271   let str = "";
  17272 
  17273   for (let i = 0; i < buf.length; ++i) {
  17274     str += percentEncode(buf[i]);
  17275   }
  17276 
  17277   return str;
  17278 }
  17279 
  17280 function utf8PercentDecode(str) {
  17281   const input = new Buffer(str);
  17282   const output = [];
  17283   for (let i = 0; i < input.length; ++i) {
  17284     if (input[i] !== 37) {
  17285       output.push(input[i]);
  17286     } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {
  17287       output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));
  17288       i += 2;
  17289     } else {
  17290       output.push(input[i]);
  17291     }
  17292   }
  17293   return new Buffer(output).toString();
  17294 }
  17295 
  17296 function isC0ControlPercentEncode(c) {
  17297   return c <= 0x1F || c > 0x7E;
  17298 }
  17299 
  17300 const extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);
  17301 function isPathPercentEncode(c) {
  17302   return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);
  17303 }
  17304 
  17305 const extraUserinfoPercentEncodeSet =
  17306   new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
  17307 function isUserinfoPercentEncode(c) {
  17308   return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
  17309 }
  17310 
  17311 function percentEncodeChar(c, encodeSetPredicate) {
  17312   const cStr = String.fromCodePoint(c);
  17313 
  17314   if (encodeSetPredicate(c)) {
  17315     return utf8PercentEncode(cStr);
  17316   }
  17317 
  17318   return cStr;
  17319 }
  17320 
  17321 function parseIPv4Number(input) {
  17322   let R = 10;
  17323 
  17324   if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
  17325     input = input.substring(2);
  17326     R = 16;
  17327   } else if (input.length >= 2 && input.charAt(0) === "0") {
  17328     input = input.substring(1);
  17329     R = 8;
  17330   }
  17331 
  17332   if (input === "") {
  17333     return 0;
  17334   }
  17335 
  17336   const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);
  17337   if (regex.test(input)) {
  17338     return failure;
  17339   }
  17340 
  17341   return parseInt(input, R);
  17342 }
  17343 
  17344 function parseIPv4(input) {
  17345   const parts = input.split(".");
  17346   if (parts[parts.length - 1] === "") {
  17347     if (parts.length > 1) {
  17348       parts.pop();
  17349     }
  17350   }
  17351 
  17352   if (parts.length > 4) {
  17353     return input;
  17354   }
  17355 
  17356   const numbers = [];
  17357   for (const part of parts) {
  17358     if (part === "") {
  17359       return input;
  17360     }
  17361     const n = parseIPv4Number(part);
  17362     if (n === failure) {
  17363       return input;
  17364     }
  17365 
  17366     numbers.push(n);
  17367   }
  17368 
  17369   for (let i = 0; i < numbers.length - 1; ++i) {
  17370     if (numbers[i] > 255) {
  17371       return failure;
  17372     }
  17373   }
  17374   if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {
  17375     return failure;
  17376   }
  17377 
  17378   let ipv4 = numbers.pop();
  17379   let counter = 0;
  17380 
  17381   for (const n of numbers) {
  17382     ipv4 += n * Math.pow(256, 3 - counter);
  17383     ++counter;
  17384   }
  17385 
  17386   return ipv4;
  17387 }
  17388 
  17389 function serializeIPv4(address) {
  17390   let output = "";
  17391   let n = address;
  17392 
  17393   for (let i = 1; i <= 4; ++i) {
  17394     output = String(n % 256) + output;
  17395     if (i !== 4) {
  17396       output = "." + output;
  17397     }
  17398     n = Math.floor(n / 256);
  17399   }
  17400 
  17401   return output;
  17402 }
  17403 
  17404 function parseIPv6(input) {
  17405   const address = [0, 0, 0, 0, 0, 0, 0, 0];
  17406   let pieceIndex = 0;
  17407   let compress = null;
  17408   let pointer = 0;
  17409 
  17410   input = punycode.ucs2.decode(input);
  17411 
  17412   if (input[pointer] === 58) {
  17413     if (input[pointer + 1] !== 58) {
  17414       return failure;
  17415     }
  17416 
  17417     pointer += 2;
  17418     ++pieceIndex;
  17419     compress = pieceIndex;
  17420   }
  17421 
  17422   while (pointer < input.length) {
  17423     if (pieceIndex === 8) {
  17424       return failure;
  17425     }
  17426 
  17427     if (input[pointer] === 58) {
  17428       if (compress !== null) {
  17429         return failure;
  17430       }
  17431       ++pointer;
  17432       ++pieceIndex;
  17433       compress = pieceIndex;
  17434       continue;
  17435     }
  17436 
  17437     let value = 0;
  17438     let length = 0;
  17439 
  17440     while (length < 4 && isASCIIHex(input[pointer])) {
  17441       value = value * 0x10 + parseInt(at(input, pointer), 16);
  17442       ++pointer;
  17443       ++length;
  17444     }
  17445 
  17446     if (input[pointer] === 46) {
  17447       if (length === 0) {
  17448         return failure;
  17449       }
  17450 
  17451       pointer -= length;
  17452 
  17453       if (pieceIndex > 6) {
  17454         return failure;
  17455       }
  17456 
  17457       let numbersSeen = 0;
  17458 
  17459       while (input[pointer] !== undefined) {
  17460         let ipv4Piece = null;
  17461 
  17462         if (numbersSeen > 0) {
  17463           if (input[pointer] === 46 && numbersSeen < 4) {
  17464             ++pointer;
  17465           } else {
  17466             return failure;
  17467           }
  17468         }
  17469 
  17470         if (!isASCIIDigit(input[pointer])) {
  17471           return failure;
  17472         }
  17473 
  17474         while (isASCIIDigit(input[pointer])) {
  17475           const number = parseInt(at(input, pointer));
  17476           if (ipv4Piece === null) {
  17477             ipv4Piece = number;
  17478           } else if (ipv4Piece === 0) {
  17479             return failure;
  17480           } else {
  17481             ipv4Piece = ipv4Piece * 10 + number;
  17482           }
  17483           if (ipv4Piece > 255) {
  17484             return failure;
  17485           }
  17486           ++pointer;
  17487         }
  17488 
  17489         address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
  17490 
  17491         ++numbersSeen;
  17492 
  17493         if (numbersSeen === 2 || numbersSeen === 4) {
  17494           ++pieceIndex;
  17495         }
  17496       }
  17497 
  17498       if (numbersSeen !== 4) {
  17499         return failure;
  17500       }
  17501 
  17502       break;
  17503     } else if (input[pointer] === 58) {
  17504       ++pointer;
  17505       if (input[pointer] === undefined) {
  17506         return failure;
  17507       }
  17508     } else if (input[pointer] !== undefined) {
  17509       return failure;
  17510     }
  17511 
  17512     address[pieceIndex] = value;
  17513     ++pieceIndex;
  17514   }
  17515 
  17516   if (compress !== null) {
  17517     let swaps = pieceIndex - compress;
  17518     pieceIndex = 7;
  17519     while (pieceIndex !== 0 && swaps > 0) {
  17520       const temp = address[compress + swaps - 1];
  17521       address[compress + swaps - 1] = address[pieceIndex];
  17522       address[pieceIndex] = temp;
  17523       --pieceIndex;
  17524       --swaps;
  17525     }
  17526   } else if (compress === null && pieceIndex !== 8) {
  17527     return failure;
  17528   }
  17529 
  17530   return address;
  17531 }
  17532 
  17533 function serializeIPv6(address) {
  17534   let output = "";
  17535   const seqResult = findLongestZeroSequence(address);
  17536   const compress = seqResult.idx;
  17537   let ignore0 = false;
  17538 
  17539   for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {
  17540     if (ignore0 && address[pieceIndex] === 0) {
  17541       continue;
  17542     } else if (ignore0) {
  17543       ignore0 = false;
  17544     }
  17545 
  17546     if (compress === pieceIndex) {
  17547       const separator = pieceIndex === 0 ? "::" : ":";
  17548       output += separator;
  17549       ignore0 = true;
  17550       continue;
  17551     }
  17552 
  17553     output += address[pieceIndex].toString(16);
  17554 
  17555     if (pieceIndex !== 7) {
  17556       output += ":";
  17557     }
  17558   }
  17559 
  17560   return output;
  17561 }
  17562 
  17563 function parseHost(input, isSpecialArg) {
  17564   if (input[0] === "[") {
  17565     if (input[input.length - 1] !== "]") {
  17566       return failure;
  17567     }
  17568 
  17569     return parseIPv6(input.substring(1, input.length - 1));
  17570   }
  17571 
  17572   if (!isSpecialArg) {
  17573     return parseOpaqueHost(input);
  17574   }
  17575 
  17576   const domain = utf8PercentDecode(input);
  17577   const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);
  17578   if (asciiDomain === null) {
  17579     return failure;
  17580   }
  17581 
  17582   if (containsForbiddenHostCodePoint(asciiDomain)) {
  17583     return failure;
  17584   }
  17585 
  17586   const ipv4Host = parseIPv4(asciiDomain);
  17587   if (typeof ipv4Host === "number" || ipv4Host === failure) {
  17588     return ipv4Host;
  17589   }
  17590 
  17591   return asciiDomain;
  17592 }
  17593 
  17594 function parseOpaqueHost(input) {
  17595   if (containsForbiddenHostCodePointExcludingPercent(input)) {
  17596     return failure;
  17597   }
  17598 
  17599   let output = "";
  17600   const decoded = punycode.ucs2.decode(input);
  17601   for (let i = 0; i < decoded.length; ++i) {
  17602     output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);
  17603   }
  17604   return output;
  17605 }
  17606 
  17607 function findLongestZeroSequence(arr) {
  17608   let maxIdx = null;
  17609   let maxLen = 1; // only find elements > 1
  17610   let currStart = null;
  17611   let currLen = 0;
  17612 
  17613   for (let i = 0; i < arr.length; ++i) {
  17614     if (arr[i] !== 0) {
  17615       if (currLen > maxLen) {
  17616         maxIdx = currStart;
  17617         maxLen = currLen;
  17618       }
  17619 
  17620       currStart = null;
  17621       currLen = 0;
  17622     } else {
  17623       if (currStart === null) {
  17624         currStart = i;
  17625       }
  17626       ++currLen;
  17627     }
  17628   }
  17629 
  17630   // if trailing zeros
  17631   if (currLen > maxLen) {
  17632     maxIdx = currStart;
  17633     maxLen = currLen;
  17634   }
  17635 
  17636   return {
  17637     idx: maxIdx,
  17638     len: maxLen
  17639   };
  17640 }
  17641 
  17642 function serializeHost(host) {
  17643   if (typeof host === "number") {
  17644     return serializeIPv4(host);
  17645   }
  17646 
  17647   // IPv6 serializer
  17648   if (host instanceof Array) {
  17649     return "[" + serializeIPv6(host) + "]";
  17650   }
  17651 
  17652   return host;
  17653 }
  17654 
  17655 function trimControlChars(url) {
  17656   return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g, "");
  17657 }
  17658 
  17659 function trimTabAndNewline(url) {
  17660   return url.replace(/\u0009|\u000A|\u000D/g, "");
  17661 }
  17662 
  17663 function shortenPath(url) {
  17664   const path = url.path;
  17665   if (path.length === 0) {
  17666     return;
  17667   }
  17668   if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
  17669     return;
  17670   }
  17671 
  17672   path.pop();
  17673 }
  17674 
  17675 function includesCredentials(url) {
  17676   return url.username !== "" || url.password !== "";
  17677 }
  17678 
  17679 function cannotHaveAUsernamePasswordPort(url) {
  17680   return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
  17681 }
  17682 
  17683 function isNormalizedWindowsDriveLetter(string) {
  17684   return /^[A-Za-z]:$/.test(string);
  17685 }
  17686 
  17687 function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
  17688   this.pointer = 0;
  17689   this.input = input;
  17690   this.base = base || null;
  17691   this.encodingOverride = encodingOverride || "utf-8";
  17692   this.stateOverride = stateOverride;
  17693   this.url = url;
  17694   this.failure = false;
  17695   this.parseError = false;
  17696 
  17697   if (!this.url) {
  17698     this.url = {
  17699       scheme: "",
  17700       username: "",
  17701       password: "",
  17702       host: null,
  17703       port: null,
  17704       path: [],
  17705       query: null,
  17706       fragment: null,
  17707 
  17708       cannotBeABaseURL: false
  17709     };
  17710 
  17711     const res = trimControlChars(this.input);
  17712     if (res !== this.input) {
  17713       this.parseError = true;
  17714     }
  17715     this.input = res;
  17716   }
  17717 
  17718   const res = trimTabAndNewline(this.input);
  17719   if (res !== this.input) {
  17720     this.parseError = true;
  17721   }
  17722   this.input = res;
  17723 
  17724   this.state = stateOverride || "scheme start";
  17725 
  17726   this.buffer = "";
  17727   this.atFlag = false;
  17728   this.arrFlag = false;
  17729   this.passwordTokenSeenFlag = false;
  17730 
  17731   this.input = punycode.ucs2.decode(this.input);
  17732 
  17733   for (; this.pointer <= this.input.length; ++this.pointer) {
  17734     const c = this.input[this.pointer];
  17735     const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);
  17736 
  17737     // exec state machine
  17738     const ret = this["parse " + this.state](c, cStr);
  17739     if (!ret) {
  17740       break; // terminate algorithm
  17741     } else if (ret === failure) {
  17742       this.failure = true;
  17743       break;
  17744     }
  17745   }
  17746 }
  17747 
  17748 URLStateMachine.prototype["parse scheme start"] = function parseSchemeStart(c, cStr) {
  17749   if (isASCIIAlpha(c)) {
  17750     this.buffer += cStr.toLowerCase();
  17751     this.state = "scheme";
  17752   } else if (!this.stateOverride) {
  17753     this.state = "no scheme";
  17754     --this.pointer;
  17755   } else {
  17756     this.parseError = true;
  17757     return failure;
  17758   }
  17759 
  17760   return true;
  17761 };
  17762 
  17763 URLStateMachine.prototype["parse scheme"] = function parseScheme(c, cStr) {
  17764   if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {
  17765     this.buffer += cStr.toLowerCase();
  17766   } else if (c === 58) {
  17767     if (this.stateOverride) {
  17768       if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {
  17769         return false;
  17770       }
  17771 
  17772       if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {
  17773         return false;
  17774       }
  17775 
  17776       if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === "file") {
  17777         return false;
  17778       }
  17779 
  17780       if (this.url.scheme === "file" && (this.url.host === "" || this.url.host === null)) {
  17781         return false;
  17782       }
  17783     }
  17784     this.url.scheme = this.buffer;
  17785     this.buffer = "";
  17786     if (this.stateOverride) {
  17787       return false;
  17788     }
  17789     if (this.url.scheme === "file") {
  17790       if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {
  17791         this.parseError = true;
  17792       }
  17793       this.state = "file";
  17794     } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {
  17795       this.state = "special relative or authority";
  17796     } else if (isSpecial(this.url)) {
  17797       this.state = "special authority slashes";
  17798     } else if (this.input[this.pointer + 1] === 47) {
  17799       this.state = "path or authority";
  17800       ++this.pointer;
  17801     } else {
  17802       this.url.cannotBeABaseURL = true;
  17803       this.url.path.push("");
  17804       this.state = "cannot-be-a-base-URL path";
  17805     }
  17806   } else if (!this.stateOverride) {
  17807     this.buffer = "";
  17808     this.state = "no scheme";
  17809     this.pointer = -1;
  17810   } else {
  17811     this.parseError = true;
  17812     return failure;
  17813   }
  17814 
  17815   return true;
  17816 };
  17817 
  17818 URLStateMachine.prototype["parse no scheme"] = function parseNoScheme(c) {
  17819   if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {
  17820     return failure;
  17821   } else if (this.base.cannotBeABaseURL && c === 35) {
  17822     this.url.scheme = this.base.scheme;
  17823     this.url.path = this.base.path.slice();
  17824     this.url.query = this.base.query;
  17825     this.url.fragment = "";
  17826     this.url.cannotBeABaseURL = true;
  17827     this.state = "fragment";
  17828   } else if (this.base.scheme === "file") {
  17829     this.state = "file";
  17830     --this.pointer;
  17831   } else {
  17832     this.state = "relative";
  17833     --this.pointer;
  17834   }
  17835 
  17836   return true;
  17837 };
  17838 
  17839 URLStateMachine.prototype["parse special relative or authority"] = function parseSpecialRelativeOrAuthority(c) {
  17840   if (c === 47 && this.input[this.pointer + 1] === 47) {
  17841     this.state = "special authority ignore slashes";
  17842     ++this.pointer;
  17843   } else {
  17844     this.parseError = true;
  17845     this.state = "relative";
  17846     --this.pointer;
  17847   }
  17848 
  17849   return true;
  17850 };
  17851 
  17852 URLStateMachine.prototype["parse path or authority"] = function parsePathOrAuthority(c) {
  17853   if (c === 47) {
  17854     this.state = "authority";
  17855   } else {
  17856     this.state = "path";
  17857     --this.pointer;
  17858   }
  17859 
  17860   return true;
  17861 };
  17862 
  17863 URLStateMachine.prototype["parse relative"] = function parseRelative(c) {
  17864   this.url.scheme = this.base.scheme;
  17865   if (isNaN(c)) {
  17866     this.url.username = this.base.username;
  17867     this.url.password = this.base.password;
  17868     this.url.host = this.base.host;
  17869     this.url.port = this.base.port;
  17870     this.url.path = this.base.path.slice();
  17871     this.url.query = this.base.query;
  17872   } else if (c === 47) {
  17873     this.state = "relative slash";
  17874   } else if (c === 63) {
  17875     this.url.username = this.base.username;
  17876     this.url.password = this.base.password;
  17877     this.url.host = this.base.host;
  17878     this.url.port = this.base.port;
  17879     this.url.path = this.base.path.slice();
  17880     this.url.query = "";
  17881     this.state = "query";
  17882   } else if (c === 35) {
  17883     this.url.username = this.base.username;
  17884     this.url.password = this.base.password;
  17885     this.url.host = this.base.host;
  17886     this.url.port = this.base.port;
  17887     this.url.path = this.base.path.slice();
  17888     this.url.query = this.base.query;
  17889     this.url.fragment = "";
  17890     this.state = "fragment";
  17891   } else if (isSpecial(this.url) && c === 92) {
  17892     this.parseError = true;
  17893     this.state = "relative slash";
  17894   } else {
  17895     this.url.username = this.base.username;
  17896     this.url.password = this.base.password;
  17897     this.url.host = this.base.host;
  17898     this.url.port = this.base.port;
  17899     this.url.path = this.base.path.slice(0, this.base.path.length - 1);
  17900 
  17901     this.state = "path";
  17902     --this.pointer;
  17903   }
  17904 
  17905   return true;
  17906 };
  17907 
  17908 URLStateMachine.prototype["parse relative slash"] = function parseRelativeSlash(c) {
  17909   if (isSpecial(this.url) && (c === 47 || c === 92)) {
  17910     if (c === 92) {
  17911       this.parseError = true;
  17912     }
  17913     this.state = "special authority ignore slashes";
  17914   } else if (c === 47) {
  17915     this.state = "authority";
  17916   } else {
  17917     this.url.username = this.base.username;
  17918     this.url.password = this.base.password;
  17919     this.url.host = this.base.host;
  17920     this.url.port = this.base.port;
  17921     this.state = "path";
  17922     --this.pointer;
  17923   }
  17924 
  17925   return true;
  17926 };
  17927 
  17928 URLStateMachine.prototype["parse special authority slashes"] = function parseSpecialAuthoritySlashes(c) {
  17929   if (c === 47 && this.input[this.pointer + 1] === 47) {
  17930     this.state = "special authority ignore slashes";
  17931     ++this.pointer;
  17932   } else {
  17933     this.parseError = true;
  17934     this.state = "special authority ignore slashes";
  17935     --this.pointer;
  17936   }
  17937 
  17938   return true;
  17939 };
  17940 
  17941 URLStateMachine.prototype["parse special authority ignore slashes"] = function parseSpecialAuthorityIgnoreSlashes(c) {
  17942   if (c !== 47 && c !== 92) {
  17943     this.state = "authority";
  17944     --this.pointer;
  17945   } else {
  17946     this.parseError = true;
  17947   }
  17948 
  17949   return true;
  17950 };
  17951 
  17952 URLStateMachine.prototype["parse authority"] = function parseAuthority(c, cStr) {
  17953   if (c === 64) {
  17954     this.parseError = true;
  17955     if (this.atFlag) {
  17956       this.buffer = "%40" + this.buffer;
  17957     }
  17958     this.atFlag = true;
  17959 
  17960     // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars
  17961     const len = countSymbols(this.buffer);
  17962     for (let pointer = 0; pointer < len; ++pointer) {
  17963       const codePoint = this.buffer.codePointAt(pointer);
  17964 
  17965       if (codePoint === 58 && !this.passwordTokenSeenFlag) {
  17966         this.passwordTokenSeenFlag = true;
  17967         continue;
  17968       }
  17969       const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);
  17970       if (this.passwordTokenSeenFlag) {
  17971         this.url.password += encodedCodePoints;
  17972       } else {
  17973         this.url.username += encodedCodePoints;
  17974       }
  17975     }
  17976     this.buffer = "";
  17977   } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
  17978              (isSpecial(this.url) && c === 92)) {
  17979     if (this.atFlag && this.buffer === "") {
  17980       this.parseError = true;
  17981       return failure;
  17982     }
  17983     this.pointer -= countSymbols(this.buffer) + 1;
  17984     this.buffer = "";
  17985     this.state = "host";
  17986   } else {
  17987     this.buffer += cStr;
  17988   }
  17989 
  17990   return true;
  17991 };
  17992 
  17993 URLStateMachine.prototype["parse hostname"] =
  17994 URLStateMachine.prototype["parse host"] = function parseHostName(c, cStr) {
  17995   if (this.stateOverride && this.url.scheme === "file") {
  17996     --this.pointer;
  17997     this.state = "file host";
  17998   } else if (c === 58 && !this.arrFlag) {
  17999     if (this.buffer === "") {
  18000       this.parseError = true;
  18001       return failure;
  18002     }
  18003 
  18004     const host = parseHost(this.buffer, isSpecial(this.url));
  18005     if (host === failure) {
  18006       return failure;
  18007     }
  18008 
  18009     this.url.host = host;
  18010     this.buffer = "";
  18011     this.state = "port";
  18012     if (this.stateOverride === "hostname") {
  18013       return false;
  18014     }
  18015   } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
  18016              (isSpecial(this.url) && c === 92)) {
  18017     --this.pointer;
  18018     if (isSpecial(this.url) && this.buffer === "") {
  18019       this.parseError = true;
  18020       return failure;
  18021     } else if (this.stateOverride && this.buffer === "" &&
  18022                (includesCredentials(this.url) || this.url.port !== null)) {
  18023       this.parseError = true;
  18024       return false;
  18025     }
  18026 
  18027     const host = parseHost(this.buffer, isSpecial(this.url));
  18028     if (host === failure) {
  18029       return failure;
  18030     }
  18031 
  18032     this.url.host = host;
  18033     this.buffer = "";
  18034     this.state = "path start";
  18035     if (this.stateOverride) {
  18036       return false;
  18037     }
  18038   } else {
  18039     if (c === 91) {
  18040       this.arrFlag = true;
  18041     } else if (c === 93) {
  18042       this.arrFlag = false;
  18043     }
  18044     this.buffer += cStr;
  18045   }
  18046 
  18047   return true;
  18048 };
  18049 
  18050 URLStateMachine.prototype["parse port"] = function parsePort(c, cStr) {
  18051   if (isASCIIDigit(c)) {
  18052     this.buffer += cStr;
  18053   } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||
  18054              (isSpecial(this.url) && c === 92) ||
  18055              this.stateOverride) {
  18056     if (this.buffer !== "") {
  18057       const port = parseInt(this.buffer);
  18058       if (port > Math.pow(2, 16) - 1) {
  18059         this.parseError = true;
  18060         return failure;
  18061       }
  18062       this.url.port = port === defaultPort(this.url.scheme) ? null : port;
  18063       this.buffer = "";
  18064     }
  18065     if (this.stateOverride) {
  18066       return false;
  18067     }
  18068     this.state = "path start";
  18069     --this.pointer;
  18070   } else {
  18071     this.parseError = true;
  18072     return failure;
  18073   }
  18074 
  18075   return true;
  18076 };
  18077 
  18078 const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
  18079 
  18080 URLStateMachine.prototype["parse file"] = function parseFile(c) {
  18081   this.url.scheme = "file";
  18082 
  18083   if (c === 47 || c === 92) {
  18084     if (c === 92) {
  18085       this.parseError = true;
  18086     }
  18087     this.state = "file slash";
  18088   } else if (this.base !== null && this.base.scheme === "file") {
  18089     if (isNaN(c)) {
  18090       this.url.host = this.base.host;
  18091       this.url.path = this.base.path.slice();
  18092       this.url.query = this.base.query;
  18093     } else if (c === 63) {
  18094       this.url.host = this.base.host;
  18095       this.url.path = this.base.path.slice();
  18096       this.url.query = "";
  18097       this.state = "query";
  18098     } else if (c === 35) {
  18099       this.url.host = this.base.host;
  18100       this.url.path = this.base.path.slice();
  18101       this.url.query = this.base.query;
  18102       this.url.fragment = "";
  18103       this.state = "fragment";
  18104     } else {
  18105       if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points
  18106           !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||
  18107           (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points
  18108            !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {
  18109         this.url.host = this.base.host;
  18110         this.url.path = this.base.path.slice();
  18111         shortenPath(this.url);
  18112       } else {
  18113         this.parseError = true;
  18114       }
  18115 
  18116       this.state = "path";
  18117       --this.pointer;
  18118     }
  18119   } else {
  18120     this.state = "path";
  18121     --this.pointer;
  18122   }
  18123 
  18124   return true;
  18125 };
  18126 
  18127 URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
  18128   if (c === 47 || c === 92) {
  18129     if (c === 92) {
  18130       this.parseError = true;
  18131     }
  18132     this.state = "file host";
  18133   } else {
  18134     if (this.base !== null && this.base.scheme === "file") {
  18135       if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {
  18136         this.url.path.push(this.base.path[0]);
  18137       } else {
  18138         this.url.host = this.base.host;
  18139       }
  18140     }
  18141     this.state = "path";
  18142     --this.pointer;
  18143   }
  18144 
  18145   return true;
  18146 };
  18147 
  18148 URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
  18149   if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
  18150     --this.pointer;
  18151     if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
  18152       this.parseError = true;
  18153       this.state = "path";
  18154     } else if (this.buffer === "") {
  18155       this.url.host = "";
  18156       if (this.stateOverride) {
  18157         return false;
  18158       }
  18159       this.state = "path start";
  18160     } else {
  18161       let host = parseHost(this.buffer, isSpecial(this.url));
  18162       if (host === failure) {
  18163         return failure;
  18164       }
  18165       if (host === "localhost") {
  18166         host = "";
  18167       }
  18168       this.url.host = host;
  18169 
  18170       if (this.stateOverride) {
  18171         return false;
  18172       }
  18173 
  18174       this.buffer = "";
  18175       this.state = "path start";
  18176     }
  18177   } else {
  18178     this.buffer += cStr;
  18179   }
  18180 
  18181   return true;
  18182 };
  18183 
  18184 URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
  18185   if (isSpecial(this.url)) {
  18186     if (c === 92) {
  18187       this.parseError = true;
  18188     }
  18189     this.state = "path";
  18190 
  18191     if (c !== 47 && c !== 92) {
  18192       --this.pointer;
  18193     }
  18194   } else if (!this.stateOverride && c === 63) {
  18195     this.url.query = "";
  18196     this.state = "query";
  18197   } else if (!this.stateOverride && c === 35) {
  18198     this.url.fragment = "";
  18199     this.state = "fragment";
  18200   } else if (c !== undefined) {
  18201     this.state = "path";
  18202     if (c !== 47) {
  18203       --this.pointer;
  18204     }
  18205   }
  18206 
  18207   return true;
  18208 };
  18209 
  18210 URLStateMachine.prototype["parse path"] = function parsePath(c) {
  18211   if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
  18212       (!this.stateOverride && (c === 63 || c === 35))) {
  18213     if (isSpecial(this.url) && c === 92) {
  18214       this.parseError = true;
  18215     }
  18216 
  18217     if (isDoubleDot(this.buffer)) {
  18218       shortenPath(this.url);
  18219       if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
  18220         this.url.path.push("");
  18221       }
  18222     } else if (isSingleDot(this.buffer) && c !== 47 &&
  18223                !(isSpecial(this.url) && c === 92)) {
  18224       this.url.path.push("");
  18225     } else if (!isSingleDot(this.buffer)) {
  18226       if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
  18227         if (this.url.host !== "" && this.url.host !== null) {
  18228           this.parseError = true;
  18229           this.url.host = "";
  18230         }
  18231         this.buffer = this.buffer[0] + ":";
  18232       }
  18233       this.url.path.push(this.buffer);
  18234     }
  18235     this.buffer = "";
  18236     if (this.url.scheme === "file" && (c === undefined || c === 63 || c === 35)) {
  18237       while (this.url.path.length > 1 && this.url.path[0] === "") {
  18238         this.parseError = true;
  18239         this.url.path.shift();
  18240       }
  18241     }
  18242     if (c === 63) {
  18243       this.url.query = "";
  18244       this.state = "query";
  18245     }
  18246     if (c === 35) {
  18247       this.url.fragment = "";
  18248       this.state = "fragment";
  18249     }
  18250   } else {
  18251     // TODO: If c is not a URL code point and not "%", parse error.
  18252 
  18253     if (c === 37 &&
  18254       (!isASCIIHex(this.input[this.pointer + 1]) ||
  18255         !isASCIIHex(this.input[this.pointer + 2]))) {
  18256       this.parseError = true;
  18257     }
  18258 
  18259     this.buffer += percentEncodeChar(c, isPathPercentEncode);
  18260   }
  18261 
  18262   return true;
  18263 };
  18264 
  18265 URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
  18266   if (c === 63) {
  18267     this.url.query = "";
  18268     this.state = "query";
  18269   } else if (c === 35) {
  18270     this.url.fragment = "";
  18271     this.state = "fragment";
  18272   } else {
  18273     // TODO: Add: not a URL code point
  18274     if (!isNaN(c) && c !== 37) {
  18275       this.parseError = true;
  18276     }
  18277 
  18278     if (c === 37 &&
  18279         (!isASCIIHex(this.input[this.pointer + 1]) ||
  18280          !isASCIIHex(this.input[this.pointer + 2]))) {
  18281       this.parseError = true;
  18282     }
  18283 
  18284     if (!isNaN(c)) {
  18285       this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);
  18286     }
  18287   }
  18288 
  18289   return true;
  18290 };
  18291 
  18292 URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
  18293   if (isNaN(c) || (!this.stateOverride && c === 35)) {
  18294     if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
  18295       this.encodingOverride = "utf-8";
  18296     }
  18297 
  18298     const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead
  18299     for (let i = 0; i < buffer.length; ++i) {
  18300       if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||
  18301           buffer[i] === 0x3C || buffer[i] === 0x3E) {
  18302         this.url.query += percentEncode(buffer[i]);
  18303       } else {
  18304         this.url.query += String.fromCodePoint(buffer[i]);
  18305       }
  18306     }
  18307 
  18308     this.buffer = "";
  18309     if (c === 35) {
  18310       this.url.fragment = "";
  18311       this.state = "fragment";
  18312     }
  18313   } else {
  18314     // TODO: If c is not a URL code point and not "%", parse error.
  18315     if (c === 37 &&
  18316       (!isASCIIHex(this.input[this.pointer + 1]) ||
  18317         !isASCIIHex(this.input[this.pointer + 2]))) {
  18318       this.parseError = true;
  18319     }
  18320 
  18321     this.buffer += cStr;
  18322   }
  18323 
  18324   return true;
  18325 };
  18326 
  18327 URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
  18328   if (isNaN(c)) { // do nothing
  18329   } else if (c === 0x0) {
  18330     this.parseError = true;
  18331   } else {
  18332     // TODO: If c is not a URL code point and not "%", parse error.
  18333     if (c === 37 &&
  18334       (!isASCIIHex(this.input[this.pointer + 1]) ||
  18335         !isASCIIHex(this.input[this.pointer + 2]))) {
  18336       this.parseError = true;
  18337     }
  18338 
  18339     this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);
  18340   }
  18341 
  18342   return true;
  18343 };
  18344 
  18345 function serializeURL(url, excludeFragment) {
  18346   let output = url.scheme + ":";
  18347   if (url.host !== null) {
  18348     output += "//";
  18349 
  18350     if (url.username !== "" || url.password !== "") {
  18351       output += url.username;
  18352       if (url.password !== "") {
  18353         output += ":" + url.password;
  18354       }
  18355       output += "@";
  18356     }
  18357 
  18358     output += serializeHost(url.host);
  18359 
  18360     if (url.port !== null) {
  18361       output += ":" + url.port;
  18362     }
  18363   } else if (url.host === null && url.scheme === "file") {
  18364     output += "//";
  18365   }
  18366 
  18367   if (url.cannotBeABaseURL) {
  18368     output += url.path[0];
  18369   } else {
  18370     for (const string of url.path) {
  18371       output += "/" + string;
  18372     }
  18373   }
  18374 
  18375   if (url.query !== null) {
  18376     output += "?" + url.query;
  18377   }
  18378 
  18379   if (!excludeFragment && url.fragment !== null) {
  18380     output += "#" + url.fragment;
  18381   }
  18382 
  18383   return output;
  18384 }
  18385 
  18386 function serializeOrigin(tuple) {
  18387   let result = tuple.scheme + "://";
  18388   result += serializeHost(tuple.host);
  18389 
  18390   if (tuple.port !== null) {
  18391     result += ":" + tuple.port;
  18392   }
  18393 
  18394   return result;
  18395 }
  18396 
  18397 module.exports.serializeURL = serializeURL;
  18398 
  18399 module.exports.serializeURLOrigin = function (url) {
  18400   // https://url.spec.whatwg.org/#concept-url-origin
  18401   switch (url.scheme) {
  18402     case "blob":
  18403       try {
  18404         return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
  18405       } catch (e) {
  18406         // serializing an opaque origin returns "null"
  18407         return "null";
  18408       }
  18409     case "ftp":
  18410     case "gopher":
  18411     case "http":
  18412     case "https":
  18413     case "ws":
  18414     case "wss":
  18415       return serializeOrigin({
  18416         scheme: url.scheme,
  18417         host: url.host,
  18418         port: url.port
  18419       });
  18420     case "file":
  18421       // spec says "exercise to the reader", chrome says "file://"
  18422       return "file://";
  18423     default:
  18424       // serializing an opaque origin returns "null"
  18425       return "null";
  18426   }
  18427 };
  18428 
  18429 module.exports.basicURLParse = function (input, options) {
  18430   if (options === undefined) {
  18431     options = {};
  18432   }
  18433 
  18434   const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
  18435   if (usm.failure) {
  18436     return "failure";
  18437   }
  18438 
  18439   return usm.url;
  18440 };
  18441 
  18442 module.exports.setTheUsername = function (url, username) {
  18443   url.username = "";
  18444   const decoded = punycode.ucs2.decode(username);
  18445   for (let i = 0; i < decoded.length; ++i) {
  18446     url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
  18447   }
  18448 };
  18449 
  18450 module.exports.setThePassword = function (url, password) {
  18451   url.password = "";
  18452   const decoded = punycode.ucs2.decode(password);
  18453   for (let i = 0; i < decoded.length; ++i) {
  18454     url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);
  18455   }
  18456 };
  18457 
  18458 module.exports.serializeHost = serializeHost;
  18459 
  18460 module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
  18461 
  18462 module.exports.serializeInteger = function (integer) {
  18463   return String(integer);
  18464 };
  18465 
  18466 module.exports.parseURL = function (input, options) {
  18467   if (options === undefined) {
  18468     options = {};
  18469   }
  18470 
  18471   // We don't handle blobs, so this just delegates:
  18472   return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
  18473 };
  18474 
  18475 
  18476 /***/ }),
  18477 
  18478 /***/ 3185:
  18479 /***/ ((module) => {
  18480 
  18481 
  18482 
  18483 module.exports.mixin = function mixin(target, source) {
  18484   const keys = Object.getOwnPropertyNames(source);
  18485   for (let i = 0; i < keys.length; ++i) {
  18486     Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));
  18487   }
  18488 };
  18489 
  18490 module.exports.wrapperSymbol = Symbol("wrapper");
  18491 module.exports.implSymbol = Symbol("impl");
  18492 
  18493 module.exports.wrapperForImpl = function (impl) {
  18494   return impl[module.exports.wrapperSymbol];
  18495 };
  18496 
  18497 module.exports.implForWrapper = function (wrapper) {
  18498   return wrapper[module.exports.implSymbol];
  18499 };
  18500 
  18501 
  18502 
  18503 /***/ }),
  18504 
  18505 /***/ 2940:
  18506 /***/ ((module) => {
  18507 
  18508 // Returns a wrapper function that returns a wrapped callback
  18509 // The wrapper function should do some stuff, and return a
  18510 // presumably different callback function.
  18511 // This makes sure that own properties are retained, so that
  18512 // decorations and such are not lost along the way.
  18513 module.exports = wrappy
  18514 function wrappy (fn, cb) {
  18515   if (fn && cb) return wrappy(fn)(cb)
  18516 
  18517   if (typeof fn !== 'function')
  18518     throw new TypeError('need wrapper function')
  18519 
  18520   Object.keys(fn).forEach(function (k) {
  18521     wrapper[k] = fn[k]
  18522   })
  18523 
  18524   return wrapper
  18525 
  18526   function wrapper() {
  18527     var args = new Array(arguments.length)
  18528     for (var i = 0; i < args.length; i++) {
  18529       args[i] = arguments[i]
  18530     }
  18531     var ret = fn.apply(this, args)
  18532     var cb = args[args.length-1]
  18533     if (typeof ret === 'function' && ret !== cb) {
  18534       Object.keys(cb).forEach(function (k) {
  18535         ret[k] = cb[k]
  18536       })
  18537     }
  18538     return ret
  18539   }
  18540 }
  18541 
  18542 
  18543 /***/ }),
  18544 
  18545 /***/ 2877:
  18546 /***/ ((module) => {
  18547 
  18548 module.exports = eval("require")("encoding");
  18549 
  18550 
  18551 /***/ }),
  18552 
  18553 /***/ 9491:
  18554 /***/ ((module) => {
  18555 
  18556 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("assert");
  18557 
  18558 /***/ }),
  18559 
  18560 /***/ 4300:
  18561 /***/ ((module) => {
  18562 
  18563 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("buffer");
  18564 
  18565 /***/ }),
  18566 
  18567 /***/ 2081:
  18568 /***/ ((module) => {
  18569 
  18570 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("child_process");
  18571 
  18572 /***/ }),
  18573 
  18574 /***/ 6113:
  18575 /***/ ((module) => {
  18576 
  18577 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("crypto");
  18578 
  18579 /***/ }),
  18580 
  18581 /***/ 2361:
  18582 /***/ ((module) => {
  18583 
  18584 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("events");
  18585 
  18586 /***/ }),
  18587 
  18588 /***/ 7147:
  18589 /***/ ((module) => {
  18590 
  18591 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs");
  18592 
  18593 /***/ }),
  18594 
  18595 /***/ 3685:
  18596 /***/ ((module) => {
  18597 
  18598 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("http");
  18599 
  18600 /***/ }),
  18601 
  18602 /***/ 5158:
  18603 /***/ ((module) => {
  18604 
  18605 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("http2");
  18606 
  18607 /***/ }),
  18608 
  18609 /***/ 5687:
  18610 /***/ ((module) => {
  18611 
  18612 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("https");
  18613 
  18614 /***/ }),
  18615 
  18616 /***/ 1808:
  18617 /***/ ((module) => {
  18618 
  18619 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("net");
  18620 
  18621 /***/ }),
  18622 
  18623 /***/ 2037:
  18624 /***/ ((module) => {
  18625 
  18626 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("os");
  18627 
  18628 /***/ }),
  18629 
  18630 /***/ 1017:
  18631 /***/ ((module) => {
  18632 
  18633 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("path");
  18634 
  18635 /***/ }),
  18636 
  18637 /***/ 5477:
  18638 /***/ ((module) => {
  18639 
  18640 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("punycode");
  18641 
  18642 /***/ }),
  18643 
  18644 /***/ 2781:
  18645 /***/ ((module) => {
  18646 
  18647 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("stream");
  18648 
  18649 /***/ }),
  18650 
  18651 /***/ 1576:
  18652 /***/ ((module) => {
  18653 
  18654 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("string_decoder");
  18655 
  18656 /***/ }),
  18657 
  18658 /***/ 9512:
  18659 /***/ ((module) => {
  18660 
  18661 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("timers");
  18662 
  18663 /***/ }),
  18664 
  18665 /***/ 4404:
  18666 /***/ ((module) => {
  18667 
  18668 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("tls");
  18669 
  18670 /***/ }),
  18671 
  18672 /***/ 7310:
  18673 /***/ ((module) => {
  18674 
  18675 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("url");
  18676 
  18677 /***/ }),
  18678 
  18679 /***/ 3837:
  18680 /***/ ((module) => {
  18681 
  18682 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("util");
  18683 
  18684 /***/ }),
  18685 
  18686 /***/ 9796:
  18687 /***/ ((module) => {
  18688 
  18689 module.exports = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("zlib");
  18690 
  18691 /***/ }),
  18692 
  18693 /***/ 2020:
  18694 /***/ ((module) => {
  18695 
  18696 module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]');
  18697 
  18698 /***/ })
  18699 
  18700 /******/ });
  18701 /************************************************************************/
  18702 /******/ // The module cache
  18703 /******/ var __webpack_module_cache__ = {};
  18704 /******/ 
  18705 /******/ // The require function
  18706 /******/ function __nccwpck_require__(moduleId) {
  18707 /******/ 	// Check if module is in cache
  18708 /******/ 	var cachedModule = __webpack_module_cache__[moduleId];
  18709 /******/ 	if (cachedModule !== undefined) {
  18710 /******/ 		return cachedModule.exports;
  18711 /******/ 	}
  18712 /******/ 	// Create a new module (and put it into the cache)
  18713 /******/ 	var module = __webpack_module_cache__[moduleId] = {
  18714 /******/ 		// no module.id needed
  18715 /******/ 		// no module.loaded needed
  18716 /******/ 		exports: {}
  18717 /******/ 	};
  18718 /******/ 
  18719 /******/ 	// Execute the module function
  18720 /******/ 	var threw = true;
  18721 /******/ 	try {
  18722 /******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__);
  18723 /******/ 		threw = false;
  18724 /******/ 	} finally {
  18725 /******/ 		if(threw) delete __webpack_module_cache__[moduleId];
  18726 /******/ 	}
  18727 /******/ 
  18728 /******/ 	// Return the exports of the module
  18729 /******/ 	return module.exports;
  18730 /******/ }
  18731 /******/ 
  18732 /************************************************************************/
  18733 /******/ /* webpack/runtime/define property getters */
  18734 /******/ (() => {
  18735 /******/ 	// define getter functions for harmony exports
  18736 /******/ 	__nccwpck_require__.d = (exports, definition) => {
  18737 /******/ 		for(var key in definition) {
  18738 /******/ 			if(__nccwpck_require__.o(definition, key) && !__nccwpck_require__.o(exports, key)) {
  18739 /******/ 				Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
  18740 /******/ 			}
  18741 /******/ 		}
  18742 /******/ 	};
  18743 /******/ })();
  18744 /******/ 
  18745 /******/ /* webpack/runtime/hasOwnProperty shorthand */
  18746 /******/ (() => {
  18747 /******/ 	__nccwpck_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
  18748 /******/ })();
  18749 /******/ 
  18750 /******/ /* webpack/runtime/compat */
  18751 /******/ 
  18752 /******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = new URL('.', import.meta.url).pathname.slice(import.meta.url.match(/^file:\/\/\/\w:/) ? 1 : 0, -1) + "/";
  18753 /******/ 
  18754 /************************************************************************/
  18755 var __webpack_exports__ = {};
  18756 // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
  18757 (() => {
  18758 
  18759 // EXPORTS
  18760 __nccwpck_require__.d(__webpack_exports__, {
  18761   "K": () => (/* binding */ run)
  18762 });
  18763 
  18764 // EXTERNAL MODULE: ./node_modules/@actions/core/lib/core.js
  18765 var core = __nccwpck_require__(2186);
  18766 // EXTERNAL MODULE: ./node_modules/@actions/exec/lib/exec.js
  18767 var exec = __nccwpck_require__(1514);
  18768 // EXTERNAL MODULE: ./node_modules/@actions/github/lib/github.js
  18769 var github = __nccwpck_require__(5438);
  18770 // EXTERNAL MODULE: ./node_modules/@actions/io/lib/io.js
  18771 var io = __nccwpck_require__(7436);
  18772 // EXTERNAL MODULE: ./node_modules/@actions/tool-cache/lib/tool-cache.js
  18773 var tool_cache = __nccwpck_require__(7784);
  18774 ;// CONCATENATED MODULE: external "fs/promises"
  18775 const promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("fs/promises");
  18776 // EXTERNAL MODULE: external "path"
  18777 var external_path_ = __nccwpck_require__(1017);
  18778 // EXTERNAL MODULE: ./node_modules/moo/moo.js
  18779 var moo = __nccwpck_require__(3329);
  18780 ;// CONCATENATED MODULE: ./lib/grammar.js
  18781 // Generated automatically by nearley, version 2.20.1
  18782 // http://github.com/Hardmath123/nearley
  18783 // Bypasses TS6133. Allow declared but unused functions.
  18784 // @ts-ignore
  18785 function id(d) { return d[0]; }
  18786 
  18787 const { compile, keywords, error } = moo;
  18788 const appendItem = function (a, b) { return function (d) { return d[a].concat(d[b]); }; };
  18789 const empty = function (d) { return []; };
  18790 const lexer = compile({
  18791     count: /(?:0|[1-9][0-9]*)\./,
  18792     ws: /[ \t]+/,
  18793     keyword: ["Error:", "Broken link in", "to"],
  18794     number: /[0-9]+/,
  18795     internalMetaMessage: ["> Successfully checked"],
  18796     metaMessages: ["pages (", "orphan),", "sections", "-> Site content:", "Checking site...", "Checking all internal links with anchors.", "internal link(s) with anchors.", "Checking", "external link(s).", "Skipping", "> Checked", "external link(s):", "error(s) found.", "Done in"],
  18797     misc: [":", "ms."],
  18798     path: /(?:(?:.\/|\/)[.a-zA-Z0-9_-]+)+/,
  18799     url_with_error: /\w*?:\/\/.*?(?=: )/,
  18800     string: /(?!\s*$).+/,
  18801     lexerError: error,
  18802     newline: { match: '\n', lineBreaks: true }
  18803 });
  18804 ;
  18805 ;
  18806 ;
  18807 ;
  18808 const grammar = {
  18809     Lexer: lexer,
  18810     ParserRules: [
  18811         { "name": "stdOutInput", "symbols": ["stdOutRow"], "postprocess": id },
  18812         { "name": "stdOutInput", "symbols": ["stdOutInput", (lexer.has("newline") ? { type: "newline" } : newline), "stdOutRow"], "postprocess": appendItem(0, 2) },
  18813         { "name": "stdOutInput", "symbols": ["input"], "postprocess": id },
  18814         { "name": "stdOutRow", "symbols": ["metaMessage"], "postprocess": empty },
  18815         { "name": "stdOutRow", "symbols": ["successReport"], "postprocess": function (data) {
  18816                 return {
  18817                     successReport: data[0],
  18818                 };
  18819             }
  18820         },
  18821         { "name": "stdOutRow", "symbols": ["internalLinkMessage"], "postprocess": function (data) {
  18822                 return {
  18823                     internal_links: data[0],
  18824                 };
  18825             }
  18826         },
  18827         { "name": "stdOutRow", "symbols": ["externalLinkCheckingWithSkippedLinkMessage"], "postprocess": function (data) {
  18828                 return {
  18829                     external_links_planed_checking: data[0],
  18830                 };
  18831             }
  18832         },
  18833         { "name": "stdOutRow", "symbols": ["externalLinkCheckingMessage"], "postprocess": function (data) {
  18834                 return {
  18835                     external_links_planed_checking: data[0],
  18836                 };
  18837             }
  18838         },
  18839         { "name": "stdOutRow", "symbols": ["externalLinkCheckingLinkMessage"], "postprocess": function (data) {
  18840                 return {
  18841                     external_links_checked: data[0],
  18842                 };
  18843             }
  18844         },
  18845         { "name": "stdOutRow", "symbols": [], "postprocess": empty },
  18846         { "name": "metaMessage", "symbols": [(lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)] },
  18847         { "name": "metaMessage", "symbols": [(lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("misc") ? { type: "misc" } : misc)] },
  18848         { "name": "successReport", "symbols": [(lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)], "postprocess": function (data) {
  18849                 return {
  18850                     pages: data[2]["value"],
  18851                     orphans: data[5]["value"],
  18852                     sections: data[9]["value"],
  18853                 };
  18854             }
  18855         },
  18856         { "name": "internalLinkMessage", "symbols": [(lexer.has("internalMetaMessage") ? { type: "internalMetaMessage" } : internalMetaMessage), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)], "postprocess": function (data) {
  18857                 return {
  18858                     total: data[2]["value"],
  18859                 };
  18860             }
  18861         },
  18862         { "name": "externalLinkCheckingWithSkippedLinkMessage", "symbols": [(lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)], "postprocess": function (data) {
  18863                 return {
  18864                     total: data[2]["value"],
  18865                     skipped: data[8]["value"]
  18866                 };
  18867             }
  18868         },
  18869         { "name": "externalLinkCheckingMessage", "symbols": [{ "literal": "Checking" }, (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)], "postprocess": function (data) {
  18870                 return {
  18871                     total: data[2]["value"],
  18872                 };
  18873             }
  18874         },
  18875         { "name": "externalLinkCheckingLinkMessage", "symbols": [(lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("number") ? { type: "number" } : number), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("metaMessages") ? { type: "metaMessages" } : metaMessages)], "postprocess": function (data) {
  18876                 return {
  18877                     total: data[2]["value"],
  18878                     errors: data[6]["value"]
  18879                 };
  18880             }
  18881         },
  18882         { "name": "input", "symbols": ["row"], "postprocess": id },
  18883         { "name": "input", "symbols": ["input", (lexer.has("newline") ? { type: "newline" } : newline), "row"], "postprocess": appendItem(0, 2) },
  18884         { "name": "row", "symbols": ["broke_link_message"] },
  18885         { "name": "row", "symbols": ["error"] },
  18886         { "name": "row", "symbols": [], "postprocess": empty },
  18887         { "name": "error_message", "symbols": [(lexer.has("string") ? { type: "string" } : string)], "postprocess": function (data) { return data[0]["value"]; } },
  18888         { "name": "error", "symbols": [(lexer.has("keyword") ? { type: "keyword" } : keyword), (lexer.has("ws") ? { type: "ws" } : ws), "error_message"], "postprocess": function (data) { return { error_message: data[2] }; } },
  18889         { "name": "prefix", "symbols": [] },
  18890         { "name": "prefix", "symbols": [(lexer.has("ws") ? { type: "ws" } : ws)] },
  18891         { "name": "broke_link_message", "symbols": ["prefix", (lexer.has("count") ? { type: "count" } : count), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("keyword") ? { type: "keyword" } : keyword), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("path") ? { type: "path" } : path), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("keyword") ? { type: "keyword" } : keyword), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("url_with_error") ? { type: "url_with_error" } : url_with_error), (lexer.has("misc") ? { type: "misc" } : misc), (lexer.has("ws") ? { type: "ws" } : ws), (lexer.has("string") ? { type: "string" } : string)], "postprocess": function (data) {
  18892                 return {
  18893                     file: data[5]["value"],
  18894                     url: data[9]["value"],
  18895                     error_message: data[12]["value"]
  18896                 };
  18897             }
  18898         }
  18899     ],
  18900     ParserStart: "stdOutInput",
  18901 };
  18902 /* harmony default export */ const lib_grammar = (grammar);
  18903 
  18904 ;// CONCATENATED MODULE: ./node_modules/@sindresorhus/is/dist/index.js
  18905 const typedArrayTypeNames = [
  18906     'Int8Array',
  18907     'Uint8Array',
  18908     'Uint8ClampedArray',
  18909     'Int16Array',
  18910     'Uint16Array',
  18911     'Int32Array',
  18912     'Uint32Array',
  18913     'Float32Array',
  18914     'Float64Array',
  18915     'BigInt64Array',
  18916     'BigUint64Array',
  18917 ];
  18918 function isTypedArrayName(name) {
  18919     return typedArrayTypeNames.includes(name);
  18920 }
  18921 const objectTypeNames = [
  18922     'Function',
  18923     'Generator',
  18924     'AsyncGenerator',
  18925     'GeneratorFunction',
  18926     'AsyncGeneratorFunction',
  18927     'AsyncFunction',
  18928     'Observable',
  18929     'Array',
  18930     'Buffer',
  18931     'Blob',
  18932     'Object',
  18933     'RegExp',
  18934     'Date',
  18935     'Error',
  18936     'Map',
  18937     'Set',
  18938     'WeakMap',
  18939     'WeakSet',
  18940     'WeakRef',
  18941     'ArrayBuffer',
  18942     'SharedArrayBuffer',
  18943     'DataView',
  18944     'Promise',
  18945     'URL',
  18946     'FormData',
  18947     'URLSearchParams',
  18948     'HTMLElement',
  18949     'NaN',
  18950     ...typedArrayTypeNames,
  18951 ];
  18952 function isObjectTypeName(name) {
  18953     return objectTypeNames.includes(name);
  18954 }
  18955 const primitiveTypeNames = [
  18956     'null',
  18957     'undefined',
  18958     'string',
  18959     'number',
  18960     'bigint',
  18961     'boolean',
  18962     'symbol',
  18963 ];
  18964 function isPrimitiveTypeName(name) {
  18965     return primitiveTypeNames.includes(name);
  18966 }
  18967 // eslint-disable-next-line @typescript-eslint/ban-types
  18968 function isOfType(type) {
  18969     return (value) => typeof value === type;
  18970 }
  18971 const { toString: dist_toString } = Object.prototype;
  18972 const getObjectType = (value) => {
  18973     const objectTypeName = dist_toString.call(value).slice(8, -1);
  18974     if (/HTML\w+Element/.test(objectTypeName) && is.domElement(value)) {
  18975         return 'HTMLElement';
  18976     }
  18977     if (isObjectTypeName(objectTypeName)) {
  18978         return objectTypeName;
  18979     }
  18980     return undefined;
  18981 };
  18982 const isObjectOfType = (type) => (value) => getObjectType(value) === type;
  18983 function is(value) {
  18984     if (value === null) {
  18985         return 'null';
  18986     }
  18987     switch (typeof value) {
  18988         case 'undefined':
  18989             return 'undefined';
  18990         case 'string':
  18991             return 'string';
  18992         case 'number':
  18993             return Number.isNaN(value) ? 'NaN' : 'number';
  18994         case 'boolean':
  18995             return 'boolean';
  18996         case 'function':
  18997             return 'Function';
  18998         case 'bigint':
  18999             return 'bigint';
  19000         case 'symbol':
  19001             return 'symbol';
  19002         default:
  19003     }
  19004     if (is.observable(value)) {
  19005         return 'Observable';
  19006     }
  19007     if (is.array(value)) {
  19008         return 'Array';
  19009     }
  19010     if (is.buffer(value)) {
  19011         return 'Buffer';
  19012     }
  19013     const tagType = getObjectType(value);
  19014     if (tagType) {
  19015         return tagType;
  19016     }
  19017     if (value instanceof String || value instanceof Boolean || value instanceof Number) {
  19018         throw new TypeError('Please don\'t use object wrappers for primitive types');
  19019     }
  19020     return 'Object';
  19021 }
  19022 is.undefined = isOfType('undefined');
  19023 is.string = isOfType('string');
  19024 const isNumberType = isOfType('number');
  19025 is.number = (value) => isNumberType(value) && !is.nan(value);
  19026 is.bigint = isOfType('bigint');
  19027 // eslint-disable-next-line @typescript-eslint/ban-types
  19028 is.function_ = isOfType('function');
  19029 // eslint-disable-next-line @typescript-eslint/ban-types
  19030 is.null_ = (value) => value === null;
  19031 is.class_ = (value) => is.function_(value) && value.toString().startsWith('class ');
  19032 is.boolean = (value) => value === true || value === false;
  19033 is.symbol = isOfType('symbol');
  19034 is.numericString = (value) => is.string(value) && !is.emptyStringOrWhitespace(value) && !Number.isNaN(Number(value));
  19035 is.array = (value, assertion) => {
  19036     if (!Array.isArray(value)) {
  19037         return false;
  19038     }
  19039     if (!is.function_(assertion)) {
  19040         return true;
  19041     }
  19042     return value.every(element => assertion(element));
  19043 };
  19044 // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
  19045 is.buffer = (value) => value?.constructor?.isBuffer?.(value) ?? false;
  19046 is.blob = (value) => isObjectOfType('Blob')(value);
  19047 is.nullOrUndefined = (value) => is.null_(value) || is.undefined(value); // eslint-disable-line @typescript-eslint/ban-types
  19048 is.object = (value) => !is.null_(value) && (typeof value === 'object' || is.function_(value)); // eslint-disable-line @typescript-eslint/ban-types
  19049 is.iterable = (value) => is.function_(value?.[Symbol.iterator]);
  19050 is.asyncIterable = (value) => is.function_(value?.[Symbol.asyncIterator]);
  19051 is.generator = (value) => is.iterable(value) && is.function_(value?.next) && is.function_(value?.throw);
  19052 is.asyncGenerator = (value) => is.asyncIterable(value) && is.function_(value.next) && is.function_(value.throw);
  19053 is.nativePromise = (value) => isObjectOfType('Promise')(value);
  19054 const hasPromiseApi = (value) => is.function_(value?.then)
  19055     && is.function_(value?.catch);
  19056 is.promise = (value) => is.nativePromise(value) || hasPromiseApi(value);
  19057 is.generatorFunction = isObjectOfType('GeneratorFunction');
  19058 is.asyncGeneratorFunction = (value) => getObjectType(value) === 'AsyncGeneratorFunction';
  19059 is.asyncFunction = (value) => getObjectType(value) === 'AsyncFunction';
  19060 // eslint-disable-next-line no-prototype-builtins, @typescript-eslint/ban-types
  19061 is.boundFunction = (value) => is.function_(value) && !value.hasOwnProperty('prototype');
  19062 is.regExp = isObjectOfType('RegExp');
  19063 is.date = isObjectOfType('Date');
  19064 is.error = isObjectOfType('Error');
  19065 is.map = (value) => isObjectOfType('Map')(value);
  19066 is.set = (value) => isObjectOfType('Set')(value);
  19067 is.weakMap = (value) => isObjectOfType('WeakMap')(value); // eslint-disable-line @typescript-eslint/ban-types
  19068 is.weakSet = (value) => isObjectOfType('WeakSet')(value); // eslint-disable-line @typescript-eslint/ban-types
  19069 is.weakRef = (value) => isObjectOfType('WeakRef')(value); // eslint-disable-line @typescript-eslint/ban-types
  19070 is.int8Array = isObjectOfType('Int8Array');
  19071 is.uint8Array = isObjectOfType('Uint8Array');
  19072 is.uint8ClampedArray = isObjectOfType('Uint8ClampedArray');
  19073 is.int16Array = isObjectOfType('Int16Array');
  19074 is.uint16Array = isObjectOfType('Uint16Array');
  19075 is.int32Array = isObjectOfType('Int32Array');
  19076 is.uint32Array = isObjectOfType('Uint32Array');
  19077 is.float32Array = isObjectOfType('Float32Array');
  19078 is.float64Array = isObjectOfType('Float64Array');
  19079 is.bigInt64Array = isObjectOfType('BigInt64Array');
  19080 is.bigUint64Array = isObjectOfType('BigUint64Array');
  19081 is.arrayBuffer = isObjectOfType('ArrayBuffer');
  19082 is.sharedArrayBuffer = isObjectOfType('SharedArrayBuffer');
  19083 is.dataView = isObjectOfType('DataView');
  19084 is.enumCase = (value, targetEnum) => Object.values(targetEnum).includes(value);
  19085 is.directInstanceOf = (instance, class_) => Object.getPrototypeOf(instance) === class_.prototype;
  19086 is.urlInstance = (value) => isObjectOfType('URL')(value);
  19087 is.urlString = (value) => {
  19088     if (!is.string(value)) {
  19089         return false;
  19090     }
  19091     try {
  19092         new URL(value); // eslint-disable-line no-new
  19093         return true;
  19094     }
  19095     catch {
  19096         return false;
  19097     }
  19098 };
  19099 // Example: `is.truthy = (value: unknown): value is (not false | not 0 | not '' | not undefined | not null) => Boolean(value);`
  19100 is.truthy = (value) => Boolean(value); // eslint-disable-line unicorn/prefer-native-coercion-functions
  19101 // Example: `is.falsy = (value: unknown): value is (not true | 0 | '' | undefined | null) => Boolean(value);`
  19102 is.falsy = (value) => !value;
  19103 is.nan = (value) => Number.isNaN(value);
  19104 is.primitive = (value) => is.null_(value) || isPrimitiveTypeName(typeof value);
  19105 is.integer = (value) => Number.isInteger(value);
  19106 is.safeInteger = (value) => Number.isSafeInteger(value);
  19107 is.plainObject = (value) => {
  19108     // From: https://github.com/sindresorhus/is-plain-obj/blob/main/index.js
  19109     if (typeof value !== 'object' || value === null) {
  19110         return false;
  19111     }
  19112     // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
  19113     const prototype = Object.getPrototypeOf(value);
  19114     return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
  19115 };
  19116 is.typedArray = (value) => isTypedArrayName(getObjectType(value));
  19117 const isValidLength = (value) => is.safeInteger(value) && value >= 0;
  19118 is.arrayLike = (value) => !is.nullOrUndefined(value) && !is.function_(value) && isValidLength(value.length);
  19119 is.inRange = (value, range) => {
  19120     if (is.number(range)) {
  19121         return value >= Math.min(0, range) && value <= Math.max(range, 0);
  19122     }
  19123     if (is.array(range) && range.length === 2) {
  19124         return value >= Math.min(...range) && value <= Math.max(...range);
  19125     }
  19126     throw new TypeError(`Invalid range: ${JSON.stringify(range)}`);
  19127 };
  19128 // eslint-disable-next-line @typescript-eslint/naming-convention
  19129 const NODE_TYPE_ELEMENT = 1;
  19130 // eslint-disable-next-line @typescript-eslint/naming-convention
  19131 const DOM_PROPERTIES_TO_CHECK = [
  19132     'innerHTML',
  19133     'ownerDocument',
  19134     'style',
  19135     'attributes',
  19136     'nodeValue',
  19137 ];
  19138 is.domElement = (value) => is.object(value)
  19139     && value.nodeType === NODE_TYPE_ELEMENT
  19140     && is.string(value.nodeName)
  19141     && !is.plainObject(value)
  19142     && DOM_PROPERTIES_TO_CHECK.every(property => property in value);
  19143 is.observable = (value) => {
  19144     if (!value) {
  19145         return false;
  19146     }
  19147     // eslint-disable-next-line no-use-extend-native/no-use-extend-native, @typescript-eslint/no-unsafe-call
  19148     if (value === value[Symbol.observable]?.()) {
  19149         return true;
  19150     }
  19151     // eslint-disable-next-line @typescript-eslint/no-unsafe-call
  19152     if (value === value['@@observable']?.()) {
  19153         return true;
  19154     }
  19155     return false;
  19156 };
  19157 is.nodeStream = (value) => is.object(value) && is.function_(value.pipe) && !is.observable(value);
  19158 is.infinite = (value) => value === Number.POSITIVE_INFINITY || value === Number.NEGATIVE_INFINITY;
  19159 const isAbsoluteMod2 = (remainder) => (value) => is.integer(value) && Math.abs(value % 2) === remainder;
  19160 is.evenInteger = isAbsoluteMod2(0);
  19161 is.oddInteger = isAbsoluteMod2(1);
  19162 is.emptyArray = (value) => is.array(value) && value.length === 0;
  19163 is.nonEmptyArray = (value) => is.array(value) && value.length > 0;
  19164 is.emptyString = (value) => is.string(value) && value.length === 0;
  19165 const isWhiteSpaceString = (value) => is.string(value) && !/\S/.test(value);
  19166 is.emptyStringOrWhitespace = (value) => is.emptyString(value) || isWhiteSpaceString(value);
  19167 // TODO: Use `not ''` when the `not` operator is available.
  19168 is.nonEmptyString = (value) => is.string(value) && value.length > 0;
  19169 // TODO: Use `not ''` when the `not` operator is available.
  19170 is.nonEmptyStringAndNotWhitespace = (value) => is.string(value) && !is.emptyStringOrWhitespace(value);
  19171 // eslint-disable-next-line unicorn/no-array-callback-reference
  19172 is.emptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length === 0;
  19173 // TODO: Use `not` operator here to remove `Map` and `Set` from type guard:
  19174 // - https://github.com/Microsoft/TypeScript/pull/29317
  19175 // eslint-disable-next-line unicorn/no-array-callback-reference
  19176 is.nonEmptyObject = (value) => is.object(value) && !is.map(value) && !is.set(value) && Object.keys(value).length > 0;
  19177 is.emptySet = (value) => is.set(value) && value.size === 0;
  19178 is.nonEmptySet = (value) => is.set(value) && value.size > 0;
  19179 // eslint-disable-next-line unicorn/no-array-callback-reference
  19180 is.emptyMap = (value) => is.map(value) && value.size === 0;
  19181 // eslint-disable-next-line unicorn/no-array-callback-reference
  19182 is.nonEmptyMap = (value) => is.map(value) && value.size > 0;
  19183 // `PropertyKey` is any value that can be used as an object key (string, number, or symbol)
  19184 is.propertyKey = (value) => is.any([is.string, is.number, is.symbol], value);
  19185 is.formData = (value) => isObjectOfType('FormData')(value);
  19186 is.urlSearchParams = (value) => isObjectOfType('URLSearchParams')(value);
  19187 const predicateOnArray = (method, predicate, values) => {
  19188     if (!is.function_(predicate)) {
  19189         throw new TypeError(`Invalid predicate: ${JSON.stringify(predicate)}`);
  19190     }
  19191     if (values.length === 0) {
  19192         throw new TypeError('Invalid number of values');
  19193     }
  19194     return method.call(values, predicate);
  19195 };
  19196 is.any = (predicate, ...values) => {
  19197     const predicates = is.array(predicate) ? predicate : [predicate];
  19198     return predicates.some(singlePredicate => predicateOnArray(Array.prototype.some, singlePredicate, values));
  19199 };
  19200 is.all = (predicate, ...values) => predicateOnArray(Array.prototype.every, predicate, values);
  19201 const assertType = (condition, description, value, options = {}) => {
  19202     if (!condition) {
  19203         const { multipleValues } = options;
  19204         const valuesMessage = multipleValues
  19205             ? `received values of types ${[
  19206                 ...new Set(value.map(singleValue => `\`${is(singleValue)}\``)),
  19207             ].join(', ')}`
  19208             : `received value of type \`${is(value)}\``;
  19209         throw new TypeError(`Expected value which is \`${description}\`, ${valuesMessage}.`);
  19210     }
  19211 };
  19212 /* eslint-disable @typescript-eslint/no-confusing-void-expression */
  19213 const assert = {
  19214     // Unknowns.
  19215     undefined: (value) => assertType(is.undefined(value), 'undefined', value),
  19216     string: (value) => assertType(is.string(value), 'string', value),
  19217     number: (value) => assertType(is.number(value), 'number', value),
  19218     bigint: (value) => assertType(is.bigint(value), 'bigint', value),
  19219     // eslint-disable-next-line @typescript-eslint/ban-types
  19220     function_: (value) => assertType(is.function_(value), 'Function', value),
  19221     null_: (value) => assertType(is.null_(value), 'null', value),
  19222     class_: (value) => assertType(is.class_(value), "Class" /* AssertionTypeDescription.class_ */, value),
  19223     boolean: (value) => assertType(is.boolean(value), 'boolean', value),
  19224     symbol: (value) => assertType(is.symbol(value), 'symbol', value),
  19225     numericString: (value) => assertType(is.numericString(value), "string with a number" /* AssertionTypeDescription.numericString */, value),
  19226     array: (value, assertion) => {
  19227         const assert = assertType;
  19228         assert(is.array(value), 'Array', value);
  19229         if (assertion) {
  19230             // eslint-disable-next-line unicorn/no-array-for-each, unicorn/no-array-callback-reference
  19231             value.forEach(assertion);
  19232         }
  19233     },
  19234     buffer: (value) => assertType(is.buffer(value), 'Buffer', value),
  19235     blob: (value) => assertType(is.blob(value), 'Blob', value),
  19236     nullOrUndefined: (value) => assertType(is.nullOrUndefined(value), "null or undefined" /* AssertionTypeDescription.nullOrUndefined */, value),
  19237     object: (value) => assertType(is.object(value), 'Object', value),
  19238     iterable: (value) => assertType(is.iterable(value), "Iterable" /* AssertionTypeDescription.iterable */, value),
  19239     asyncIterable: (value) => assertType(is.asyncIterable(value), "AsyncIterable" /* AssertionTypeDescription.asyncIterable */, value),
  19240     generator: (value) => assertType(is.generator(value), 'Generator', value),
  19241     asyncGenerator: (value) => assertType(is.asyncGenerator(value), 'AsyncGenerator', value),
  19242     nativePromise: (value) => assertType(is.nativePromise(value), "native Promise" /* AssertionTypeDescription.nativePromise */, value),
  19243     promise: (value) => assertType(is.promise(value), 'Promise', value),
  19244     generatorFunction: (value) => assertType(is.generatorFunction(value), 'GeneratorFunction', value),
  19245     asyncGeneratorFunction: (value) => assertType(is.asyncGeneratorFunction(value), 'AsyncGeneratorFunction', value),
  19246     // eslint-disable-next-line @typescript-eslint/ban-types
  19247     asyncFunction: (value) => assertType(is.asyncFunction(value), 'AsyncFunction', value),
  19248     // eslint-disable-next-line @typescript-eslint/ban-types
  19249     boundFunction: (value) => assertType(is.boundFunction(value), 'Function', value),
  19250     regExp: (value) => assertType(is.regExp(value), 'RegExp', value),
  19251     date: (value) => assertType(is.date(value), 'Date', value),
  19252     error: (value) => assertType(is.error(value), 'Error', value),
  19253     map: (value) => assertType(is.map(value), 'Map', value),
  19254     set: (value) => assertType(is.set(value), 'Set', value),
  19255     weakMap: (value) => assertType(is.weakMap(value), 'WeakMap', value),
  19256     weakSet: (value) => assertType(is.weakSet(value), 'WeakSet', value),
  19257     weakRef: (value) => assertType(is.weakRef(value), 'WeakRef', value),
  19258     int8Array: (value) => assertType(is.int8Array(value), 'Int8Array', value),
  19259     uint8Array: (value) => assertType(is.uint8Array(value), 'Uint8Array', value),
  19260     uint8ClampedArray: (value) => assertType(is.uint8ClampedArray(value), 'Uint8ClampedArray', value),
  19261     int16Array: (value) => assertType(is.int16Array(value), 'Int16Array', value),
  19262     uint16Array: (value) => assertType(is.uint16Array(value), 'Uint16Array', value),
  19263     int32Array: (value) => assertType(is.int32Array(value), 'Int32Array', value),
  19264     uint32Array: (value) => assertType(is.uint32Array(value), 'Uint32Array', value),
  19265     float32Array: (value) => assertType(is.float32Array(value), 'Float32Array', value),
  19266     float64Array: (value) => assertType(is.float64Array(value), 'Float64Array', value),
  19267     bigInt64Array: (value) => assertType(is.bigInt64Array(value), 'BigInt64Array', value),
  19268     bigUint64Array: (value) => assertType(is.bigUint64Array(value), 'BigUint64Array', value),
  19269     arrayBuffer: (value) => assertType(is.arrayBuffer(value), 'ArrayBuffer', value),
  19270     sharedArrayBuffer: (value) => assertType(is.sharedArrayBuffer(value), 'SharedArrayBuffer', value),
  19271     dataView: (value) => assertType(is.dataView(value), 'DataView', value),
  19272     enumCase: (value, targetEnum) => assertType(is.enumCase(value, targetEnum), 'EnumCase', value),
  19273     urlInstance: (value) => assertType(is.urlInstance(value), 'URL', value),
  19274     urlString: (value) => assertType(is.urlString(value), "string with a URL" /* AssertionTypeDescription.urlString */, value),
  19275     truthy: (value) => assertType(is.truthy(value), "truthy" /* AssertionTypeDescription.truthy */, value),
  19276     falsy: (value) => assertType(is.falsy(value), "falsy" /* AssertionTypeDescription.falsy */, value),
  19277     nan: (value) => assertType(is.nan(value), "NaN" /* AssertionTypeDescription.nan */, value),
  19278     primitive: (value) => assertType(is.primitive(value), "primitive" /* AssertionTypeDescription.primitive */, value),
  19279     integer: (value) => assertType(is.integer(value), "integer" /* AssertionTypeDescription.integer */, value),
  19280     safeInteger: (value) => assertType(is.safeInteger(value), "integer" /* AssertionTypeDescription.safeInteger */, value),
  19281     plainObject: (value) => assertType(is.plainObject(value), "plain object" /* AssertionTypeDescription.plainObject */, value),
  19282     typedArray: (value) => assertType(is.typedArray(value), "TypedArray" /* AssertionTypeDescription.typedArray */, value),
  19283     arrayLike: (value) => assertType(is.arrayLike(value), "array-like" /* AssertionTypeDescription.arrayLike */, value),
  19284     domElement: (value) => assertType(is.domElement(value), "HTMLElement" /* AssertionTypeDescription.domElement */, value),
  19285     observable: (value) => assertType(is.observable(value), 'Observable', value),
  19286     nodeStream: (value) => assertType(is.nodeStream(value), "Node.js Stream" /* AssertionTypeDescription.nodeStream */, value),
  19287     infinite: (value) => assertType(is.infinite(value), "infinite number" /* AssertionTypeDescription.infinite */, value),
  19288     emptyArray: (value) => assertType(is.emptyArray(value), "empty array" /* AssertionTypeDescription.emptyArray */, value),
  19289     nonEmptyArray: (value) => assertType(is.nonEmptyArray(value), "non-empty array" /* AssertionTypeDescription.nonEmptyArray */, value),
  19290     emptyString: (value) => assertType(is.emptyString(value), "empty string" /* AssertionTypeDescription.emptyString */, value),
  19291     emptyStringOrWhitespace: (value) => assertType(is.emptyStringOrWhitespace(value), "empty string or whitespace" /* AssertionTypeDescription.emptyStringOrWhitespace */, value),
  19292     nonEmptyString: (value) => assertType(is.nonEmptyString(value), "non-empty string" /* AssertionTypeDescription.nonEmptyString */, value),
  19293     nonEmptyStringAndNotWhitespace: (value) => assertType(is.nonEmptyStringAndNotWhitespace(value), "non-empty string and not whitespace" /* AssertionTypeDescription.nonEmptyStringAndNotWhitespace */, value),
  19294     emptyObject: (value) => assertType(is.emptyObject(value), "empty object" /* AssertionTypeDescription.emptyObject */, value),
  19295     nonEmptyObject: (value) => assertType(is.nonEmptyObject(value), "non-empty object" /* AssertionTypeDescription.nonEmptyObject */, value),
  19296     emptySet: (value) => assertType(is.emptySet(value), "empty set" /* AssertionTypeDescription.emptySet */, value),
  19297     nonEmptySet: (value) => assertType(is.nonEmptySet(value), "non-empty set" /* AssertionTypeDescription.nonEmptySet */, value),
  19298     emptyMap: (value) => assertType(is.emptyMap(value), "empty map" /* AssertionTypeDescription.emptyMap */, value),
  19299     nonEmptyMap: (value) => assertType(is.nonEmptyMap(value), "non-empty map" /* AssertionTypeDescription.nonEmptyMap */, value),
  19300     propertyKey: (value) => assertType(is.propertyKey(value), 'PropertyKey', value),
  19301     formData: (value) => assertType(is.formData(value), 'FormData', value),
  19302     urlSearchParams: (value) => assertType(is.urlSearchParams(value), 'URLSearchParams', value),
  19303     // Numbers.
  19304     evenInteger: (value) => assertType(is.evenInteger(value), "even integer" /* AssertionTypeDescription.evenInteger */, value),
  19305     oddInteger: (value) => assertType(is.oddInteger(value), "odd integer" /* AssertionTypeDescription.oddInteger */, value),
  19306     // Two arguments.
  19307     directInstanceOf: (instance, class_) => assertType(is.directInstanceOf(instance, class_), "T" /* AssertionTypeDescription.directInstanceOf */, instance),
  19308     inRange: (value, range) => assertType(is.inRange(value, range), "in range" /* AssertionTypeDescription.inRange */, value),
  19309     // Variadic functions.
  19310     any: (predicate, ...values) => assertType(is.any(predicate, ...values), "predicate returns truthy for any value" /* AssertionTypeDescription.any */, values, { multipleValues: true }),
  19311     all: (predicate, ...values) => assertType(is.all(predicate, ...values), "predicate returns truthy for all values" /* AssertionTypeDescription.all */, values, { multipleValues: true }),
  19312 };
  19313 /* eslint-enable @typescript-eslint/no-confusing-void-expression */
  19314 // Some few keywords are reserved, but we'll populate them for Node.js users
  19315 // See https://github.com/Microsoft/TypeScript/issues/2536
  19316 Object.defineProperties(is, {
  19317     class: {
  19318         value: is.class_,
  19319     },
  19320     function: {
  19321         value: is.function_,
  19322     },
  19323     null: {
  19324         value: is.null_,
  19325     },
  19326 });
  19327 Object.defineProperties(assert, {
  19328     class: {
  19329         value: assert.class_,
  19330     },
  19331     function: {
  19332         value: assert.function_,
  19333     },
  19334     null: {
  19335         value: assert.null_,
  19336     },
  19337 });
  19338 /* harmony default export */ const dist = (is);
  19339 
  19340 ;// CONCATENATED MODULE: external "node:events"
  19341 const external_node_events_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:events");
  19342 ;// CONCATENATED MODULE: ./node_modules/p-cancelable/index.js
  19343 class CancelError extends Error {
  19344 	constructor(reason) {
  19345 		super(reason || 'Promise was canceled');
  19346 		this.name = 'CancelError';
  19347 	}
  19348 
  19349 	get isCanceled() {
  19350 		return true;
  19351 	}
  19352 }
  19353 
  19354 // TODO: Use private class fields when ESLint 8 is out.
  19355 
  19356 class PCancelable {
  19357 	static fn(userFunction) {
  19358 		return (...arguments_) => {
  19359 			return new PCancelable((resolve, reject, onCancel) => {
  19360 				arguments_.push(onCancel);
  19361 				// eslint-disable-next-line promise/prefer-await-to-then
  19362 				userFunction(...arguments_).then(resolve, reject);
  19363 			});
  19364 		};
  19365 	}
  19366 
  19367 	constructor(executor) {
  19368 		this._cancelHandlers = [];
  19369 		this._isPending = true;
  19370 		this._isCanceled = false;
  19371 		this._rejectOnCancel = true;
  19372 
  19373 		this._promise = new Promise((resolve, reject) => {
  19374 			this._reject = reject;
  19375 
  19376 			const onResolve = value => {
  19377 				if (!this._isCanceled || !onCancel.shouldReject) {
  19378 					this._isPending = false;
  19379 					resolve(value);
  19380 				}
  19381 			};
  19382 
  19383 			const onReject = error => {
  19384 				this._isPending = false;
  19385 				reject(error);
  19386 			};
  19387 
  19388 			const onCancel = handler => {
  19389 				if (!this._isPending) {
  19390 					throw new Error('The `onCancel` handler was attached after the promise settled.');
  19391 				}
  19392 
  19393 				this._cancelHandlers.push(handler);
  19394 			};
  19395 
  19396 			Object.defineProperties(onCancel, {
  19397 				shouldReject: {
  19398 					get: () => this._rejectOnCancel,
  19399 					set: boolean => {
  19400 						this._rejectOnCancel = boolean;
  19401 					}
  19402 				}
  19403 			});
  19404 
  19405 			executor(onResolve, onReject, onCancel);
  19406 		});
  19407 	}
  19408 
  19409 	then(onFulfilled, onRejected) {
  19410 		// eslint-disable-next-line promise/prefer-await-to-then
  19411 		return this._promise.then(onFulfilled, onRejected);
  19412 	}
  19413 
  19414 	catch(onRejected) {
  19415 		// eslint-disable-next-line promise/prefer-await-to-then
  19416 		return this._promise.catch(onRejected);
  19417 	}
  19418 
  19419 	finally(onFinally) {
  19420 		// eslint-disable-next-line promise/prefer-await-to-then
  19421 		return this._promise.finally(onFinally);
  19422 	}
  19423 
  19424 	cancel(reason) {
  19425 		if (!this._isPending || this._isCanceled) {
  19426 			return;
  19427 		}
  19428 
  19429 		this._isCanceled = true;
  19430 
  19431 		if (this._cancelHandlers.length > 0) {
  19432 			try {
  19433 				for (const handler of this._cancelHandlers) {
  19434 					handler();
  19435 				}
  19436 			} catch (error) {
  19437 				this._reject(error);
  19438 				return;
  19439 			}
  19440 		}
  19441 
  19442 		if (this._rejectOnCancel) {
  19443 			this._reject(new CancelError(reason));
  19444 		}
  19445 	}
  19446 
  19447 	get isCanceled() {
  19448 		return this._isCanceled;
  19449 	}
  19450 }
  19451 
  19452 Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);
  19453 
  19454 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/errors.js
  19455 
  19456 // A hacky check to prevent circular references.
  19457 function isRequest(x) {
  19458     return dist.object(x) && '_onResponse' in x;
  19459 }
  19460 /**
  19461 An error to be thrown when a request fails.
  19462 Contains a `code` property with error class code, like `ECONNREFUSED`.
  19463 */
  19464 class RequestError extends Error {
  19465     constructor(message, error, self) {
  19466         super(message);
  19467         Object.defineProperty(this, "input", {
  19468             enumerable: true,
  19469             configurable: true,
  19470             writable: true,
  19471             value: void 0
  19472         });
  19473         Object.defineProperty(this, "code", {
  19474             enumerable: true,
  19475             configurable: true,
  19476             writable: true,
  19477             value: void 0
  19478         });
  19479         Object.defineProperty(this, "stack", {
  19480             enumerable: true,
  19481             configurable: true,
  19482             writable: true,
  19483             value: void 0
  19484         });
  19485         Object.defineProperty(this, "response", {
  19486             enumerable: true,
  19487             configurable: true,
  19488             writable: true,
  19489             value: void 0
  19490         });
  19491         Object.defineProperty(this, "request", {
  19492             enumerable: true,
  19493             configurable: true,
  19494             writable: true,
  19495             value: void 0
  19496         });
  19497         Object.defineProperty(this, "timings", {
  19498             enumerable: true,
  19499             configurable: true,
  19500             writable: true,
  19501             value: void 0
  19502         });
  19503         Error.captureStackTrace(this, this.constructor);
  19504         this.name = 'RequestError';
  19505         this.code = error.code ?? 'ERR_GOT_REQUEST_ERROR';
  19506         this.input = error.input;
  19507         if (isRequest(self)) {
  19508             Object.defineProperty(this, 'request', {
  19509                 enumerable: false,
  19510                 value: self,
  19511             });
  19512             Object.defineProperty(this, 'response', {
  19513                 enumerable: false,
  19514                 value: self.response,
  19515             });
  19516             this.options = self.options;
  19517         }
  19518         else {
  19519             this.options = self;
  19520         }
  19521         this.timings = this.request?.timings;
  19522         // Recover the original stacktrace
  19523         if (dist.string(error.stack) && dist.string(this.stack)) {
  19524             const indexOfMessage = this.stack.indexOf(this.message) + this.message.length;
  19525             const thisStackTrace = this.stack.slice(indexOfMessage).split('\n').reverse();
  19526             const errorStackTrace = error.stack.slice(error.stack.indexOf(error.message) + error.message.length).split('\n').reverse();
  19527             // Remove duplicated traces
  19528             while (errorStackTrace.length > 0 && errorStackTrace[0] === thisStackTrace[0]) {
  19529                 thisStackTrace.shift();
  19530             }
  19531             this.stack = `${this.stack.slice(0, indexOfMessage)}${thisStackTrace.reverse().join('\n')}${errorStackTrace.reverse().join('\n')}`;
  19532         }
  19533     }
  19534 }
  19535 /**
  19536 An error to be thrown when the server redirects you more than ten times.
  19537 Includes a `response` property.
  19538 */
  19539 class MaxRedirectsError extends RequestError {
  19540     constructor(request) {
  19541         super(`Redirected ${request.options.maxRedirects} times. Aborting.`, {}, request);
  19542         this.name = 'MaxRedirectsError';
  19543         this.code = 'ERR_TOO_MANY_REDIRECTS';
  19544     }
  19545 }
  19546 /**
  19547 An error to be thrown when the server response code is not 2xx nor 3xx if `options.followRedirect` is `true`, but always except for 304.
  19548 Includes a `response` property.
  19549 */
  19550 // eslint-disable-next-line @typescript-eslint/naming-convention
  19551 class HTTPError extends RequestError {
  19552     constructor(response) {
  19553         super(`Response code ${response.statusCode} (${response.statusMessage})`, {}, response.request);
  19554         this.name = 'HTTPError';
  19555         this.code = 'ERR_NON_2XX_3XX_RESPONSE';
  19556     }
  19557 }
  19558 /**
  19559 An error to be thrown when a cache method fails.
  19560 For example, if the database goes down or there's a filesystem error.
  19561 */
  19562 class CacheError extends RequestError {
  19563     constructor(error, request) {
  19564         super(error.message, error, request);
  19565         this.name = 'CacheError';
  19566         this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_CACHE_ACCESS' : this.code;
  19567     }
  19568 }
  19569 /**
  19570 An error to be thrown when the request body is a stream and an error occurs while reading from that stream.
  19571 */
  19572 class UploadError extends RequestError {
  19573     constructor(error, request) {
  19574         super(error.message, error, request);
  19575         this.name = 'UploadError';
  19576         this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_UPLOAD' : this.code;
  19577     }
  19578 }
  19579 /**
  19580 An error to be thrown when the request is aborted due to a timeout.
  19581 Includes an `event` and `timings` property.
  19582 */
  19583 class TimeoutError extends RequestError {
  19584     constructor(error, timings, request) {
  19585         super(error.message, error, request);
  19586         Object.defineProperty(this, "timings", {
  19587             enumerable: true,
  19588             configurable: true,
  19589             writable: true,
  19590             value: void 0
  19591         });
  19592         Object.defineProperty(this, "event", {
  19593             enumerable: true,
  19594             configurable: true,
  19595             writable: true,
  19596             value: void 0
  19597         });
  19598         this.name = 'TimeoutError';
  19599         this.event = error.event;
  19600         this.timings = timings;
  19601     }
  19602 }
  19603 /**
  19604 An error to be thrown when reading from response stream fails.
  19605 */
  19606 class ReadError extends RequestError {
  19607     constructor(error, request) {
  19608         super(error.message, error, request);
  19609         this.name = 'ReadError';
  19610         this.code = this.code === 'ERR_GOT_REQUEST_ERROR' ? 'ERR_READING_RESPONSE_STREAM' : this.code;
  19611     }
  19612 }
  19613 /**
  19614 An error which always triggers a new retry when thrown.
  19615 */
  19616 class RetryError extends RequestError {
  19617     constructor(request) {
  19618         super('Retrying', {}, request);
  19619         this.name = 'RetryError';
  19620         this.code = 'ERR_RETRYING';
  19621     }
  19622 }
  19623 /**
  19624 An error to be thrown when the request is aborted by AbortController.
  19625 */
  19626 class AbortError extends RequestError {
  19627     constructor(request) {
  19628         super('This operation was aborted.', {}, request);
  19629         this.code = 'ERR_ABORTED';
  19630         this.name = 'AbortError';
  19631     }
  19632 }
  19633 
  19634 ;// CONCATENATED MODULE: external "node:process"
  19635 const external_node_process_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:process");
  19636 ;// CONCATENATED MODULE: external "node:buffer"
  19637 const external_node_buffer_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:buffer");
  19638 ;// CONCATENATED MODULE: external "node:stream"
  19639 const external_node_stream_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream");
  19640 ;// CONCATENATED MODULE: external "node:http"
  19641 const external_node_http_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:http");
  19642 // EXTERNAL MODULE: external "events"
  19643 var external_events_ = __nccwpck_require__(2361);
  19644 // EXTERNAL MODULE: external "util"
  19645 var external_util_ = __nccwpck_require__(3837);
  19646 // EXTERNAL MODULE: ./node_modules/defer-to-connect/dist/source/index.js
  19647 var source = __nccwpck_require__(6214);
  19648 ;// CONCATENATED MODULE: ./node_modules/@szmarczak/http-timer/dist/source/index.js
  19649 
  19650 
  19651 
  19652 const timer = (request) => {
  19653     if (request.timings) {
  19654         return request.timings;
  19655     }
  19656     const timings = {
  19657         start: Date.now(),
  19658         socket: undefined,
  19659         lookup: undefined,
  19660         connect: undefined,
  19661         secureConnect: undefined,
  19662         upload: undefined,
  19663         response: undefined,
  19664         end: undefined,
  19665         error: undefined,
  19666         abort: undefined,
  19667         phases: {
  19668             wait: undefined,
  19669             dns: undefined,
  19670             tcp: undefined,
  19671             tls: undefined,
  19672             request: undefined,
  19673             firstByte: undefined,
  19674             download: undefined,
  19675             total: undefined,
  19676         },
  19677     };
  19678     request.timings = timings;
  19679     const handleError = (origin) => {
  19680         origin.once(external_events_.errorMonitor, () => {
  19681             timings.error = Date.now();
  19682             timings.phases.total = timings.error - timings.start;
  19683         });
  19684     };
  19685     handleError(request);
  19686     const onAbort = () => {
  19687         timings.abort = Date.now();
  19688         timings.phases.total = timings.abort - timings.start;
  19689     };
  19690     request.prependOnceListener('abort', onAbort);
  19691     const onSocket = (socket) => {
  19692         timings.socket = Date.now();
  19693         timings.phases.wait = timings.socket - timings.start;
  19694         if (external_util_.types.isProxy(socket)) {
  19695             return;
  19696         }
  19697         const lookupListener = () => {
  19698             timings.lookup = Date.now();
  19699             timings.phases.dns = timings.lookup - timings.socket;
  19700         };
  19701         socket.prependOnceListener('lookup', lookupListener);
  19702         source(socket, {
  19703             connect: () => {
  19704                 timings.connect = Date.now();
  19705                 if (timings.lookup === undefined) {
  19706                     socket.removeListener('lookup', lookupListener);
  19707                     timings.lookup = timings.connect;
  19708                     timings.phases.dns = timings.lookup - timings.socket;
  19709                 }
  19710                 timings.phases.tcp = timings.connect - timings.lookup;
  19711             },
  19712             secureConnect: () => {
  19713                 timings.secureConnect = Date.now();
  19714                 timings.phases.tls = timings.secureConnect - timings.connect;
  19715             },
  19716         });
  19717     };
  19718     if (request.socket) {
  19719         onSocket(request.socket);
  19720     }
  19721     else {
  19722         request.prependOnceListener('socket', onSocket);
  19723     }
  19724     const onUpload = () => {
  19725         timings.upload = Date.now();
  19726         timings.phases.request = timings.upload - (timings.secureConnect ?? timings.connect);
  19727     };
  19728     if (request.writableFinished) {
  19729         onUpload();
  19730     }
  19731     else {
  19732         request.prependOnceListener('finish', onUpload);
  19733     }
  19734     request.prependOnceListener('response', (response) => {
  19735         timings.response = Date.now();
  19736         timings.phases.firstByte = timings.response - timings.upload;
  19737         response.timings = timings;
  19738         handleError(response);
  19739         response.prependOnceListener('end', () => {
  19740             request.off('abort', onAbort);
  19741             response.off('aborted', onAbort);
  19742             if (timings.phases.total) {
  19743                 // Aborted or errored
  19744                 return;
  19745             }
  19746             timings.end = Date.now();
  19747             timings.phases.download = timings.end - timings.response;
  19748             timings.phases.total = timings.end - timings.start;
  19749         });
  19750         response.prependOnceListener('aborted', onAbort);
  19751     });
  19752     return timings;
  19753 };
  19754 /* harmony default export */ const dist_source = (timer);
  19755 
  19756 ;// CONCATENATED MODULE: external "node:url"
  19757 const external_node_url_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:url");
  19758 ;// CONCATENATED MODULE: external "node:crypto"
  19759 const external_node_crypto_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto");
  19760 ;// CONCATENATED MODULE: ./node_modules/normalize-url/index.js
  19761 // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
  19762 const DATA_URL_DEFAULT_MIME_TYPE = 'text/plain';
  19763 const DATA_URL_DEFAULT_CHARSET = 'us-ascii';
  19764 
  19765 const testParameter = (name, filters) => filters.some(filter => filter instanceof RegExp ? filter.test(name) : filter === name);
  19766 
  19767 const supportedProtocols = new Set([
  19768 	'https:',
  19769 	'http:',
  19770 	'file:',
  19771 ]);
  19772 
  19773 const hasCustomProtocol = urlString => {
  19774 	try {
  19775 		const {protocol} = new URL(urlString);
  19776 		return protocol.endsWith(':') && !supportedProtocols.has(protocol);
  19777 	} catch {
  19778 		return false;
  19779 	}
  19780 };
  19781 
  19782 const normalizeDataURL = (urlString, {stripHash}) => {
  19783 	const match = /^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(urlString);
  19784 
  19785 	if (!match) {
  19786 		throw new Error(`Invalid URL: ${urlString}`);
  19787 	}
  19788 
  19789 	let {type, data, hash} = match.groups;
  19790 	const mediaType = type.split(';');
  19791 	hash = stripHash ? '' : hash;
  19792 
  19793 	let isBase64 = false;
  19794 	if (mediaType[mediaType.length - 1] === 'base64') {
  19795 		mediaType.pop();
  19796 		isBase64 = true;
  19797 	}
  19798 
  19799 	// Lowercase MIME type
  19800 	const mimeType = mediaType.shift()?.toLowerCase() ?? '';
  19801 	const attributes = mediaType
  19802 		.map(attribute => {
  19803 			let [key, value = ''] = attribute.split('=').map(string => string.trim());
  19804 
  19805 			// Lowercase `charset`
  19806 			if (key === 'charset') {
  19807 				value = value.toLowerCase();
  19808 
  19809 				if (value === DATA_URL_DEFAULT_CHARSET) {
  19810 					return '';
  19811 				}
  19812 			}
  19813 
  19814 			return `${key}${value ? `=${value}` : ''}`;
  19815 		})
  19816 		.filter(Boolean);
  19817 
  19818 	const normalizedMediaType = [
  19819 		...attributes,
  19820 	];
  19821 
  19822 	if (isBase64) {
  19823 		normalizedMediaType.push('base64');
  19824 	}
  19825 
  19826 	if (normalizedMediaType.length > 0 || (mimeType && mimeType !== DATA_URL_DEFAULT_MIME_TYPE)) {
  19827 		normalizedMediaType.unshift(mimeType);
  19828 	}
  19829 
  19830 	return `data:${normalizedMediaType.join(';')},${isBase64 ? data.trim() : data}${hash ? `#${hash}` : ''}`;
  19831 };
  19832 
  19833 function normalizeUrl(urlString, options) {
  19834 	options = {
  19835 		defaultProtocol: 'http',
  19836 		normalizeProtocol: true,
  19837 		forceHttp: false,
  19838 		forceHttps: false,
  19839 		stripAuthentication: true,
  19840 		stripHash: false,
  19841 		stripTextFragment: true,
  19842 		stripWWW: true,
  19843 		removeQueryParameters: [/^utm_\w+/i],
  19844 		removeTrailingSlash: true,
  19845 		removeSingleSlash: true,
  19846 		removeDirectoryIndex: false,
  19847 		removeExplicitPort: false,
  19848 		sortQueryParameters: true,
  19849 		...options,
  19850 	};
  19851 
  19852 	// Legacy: Append `:` to the protocol if missing.
  19853 	if (typeof options.defaultProtocol === 'string' && !options.defaultProtocol.endsWith(':')) {
  19854 		options.defaultProtocol = `${options.defaultProtocol}:`;
  19855 	}
  19856 
  19857 	urlString = urlString.trim();
  19858 
  19859 	// Data URL
  19860 	if (/^data:/i.test(urlString)) {
  19861 		return normalizeDataURL(urlString, options);
  19862 	}
  19863 
  19864 	if (hasCustomProtocol(urlString)) {
  19865 		return urlString;
  19866 	}
  19867 
  19868 	const hasRelativeProtocol = urlString.startsWith('//');
  19869 	const isRelativeUrl = !hasRelativeProtocol && /^\.*\//.test(urlString);
  19870 
  19871 	// Prepend protocol
  19872 	if (!isRelativeUrl) {
  19873 		urlString = urlString.replace(/^(?!(?:\w+:)?\/\/)|^\/\//, options.defaultProtocol);
  19874 	}
  19875 
  19876 	const urlObject = new URL(urlString);
  19877 
  19878 	if (options.forceHttp && options.forceHttps) {
  19879 		throw new Error('The `forceHttp` and `forceHttps` options cannot be used together');
  19880 	}
  19881 
  19882 	if (options.forceHttp && urlObject.protocol === 'https:') {
  19883 		urlObject.protocol = 'http:';
  19884 	}
  19885 
  19886 	if (options.forceHttps && urlObject.protocol === 'http:') {
  19887 		urlObject.protocol = 'https:';
  19888 	}
  19889 
  19890 	// Remove auth
  19891 	if (options.stripAuthentication) {
  19892 		urlObject.username = '';
  19893 		urlObject.password = '';
  19894 	}
  19895 
  19896 	// Remove hash
  19897 	if (options.stripHash) {
  19898 		urlObject.hash = '';
  19899 	} else if (options.stripTextFragment) {
  19900 		urlObject.hash = urlObject.hash.replace(/#?:~:text.*?$/i, '');
  19901 	}
  19902 
  19903 	// Remove duplicate slashes if not preceded by a protocol
  19904 	// NOTE: This could be implemented using a single negative lookbehind
  19905 	// regex, but we avoid that to maintain compatibility with older js engines
  19906 	// which do not have support for that feature.
  19907 	if (urlObject.pathname) {
  19908 		// TODO: Replace everything below with `urlObject.pathname = urlObject.pathname.replace(/(?<!\b[a-z][a-z\d+\-.]{1,50}:)\/{2,}/g, '/');` when Safari supports negative lookbehind.
  19909 
  19910 		// Split the string by occurrences of this protocol regex, and perform
  19911 		// duplicate-slash replacement on the strings between those occurrences
  19912 		// (if any).
  19913 		const protocolRegex = /\b[a-z][a-z\d+\-.]{1,50}:\/\//g;
  19914 
  19915 		let lastIndex = 0;
  19916 		let result = '';
  19917 		for (;;) {
  19918 			const match = protocolRegex.exec(urlObject.pathname);
  19919 			if (!match) {
  19920 				break;
  19921 			}
  19922 
  19923 			const protocol = match[0];
  19924 			const protocolAtIndex = match.index;
  19925 			const intermediate = urlObject.pathname.slice(lastIndex, protocolAtIndex);
  19926 
  19927 			result += intermediate.replace(/\/{2,}/g, '/');
  19928 			result += protocol;
  19929 			lastIndex = protocolAtIndex + protocol.length;
  19930 		}
  19931 
  19932 		const remnant = urlObject.pathname.slice(lastIndex, urlObject.pathname.length);
  19933 		result += remnant.replace(/\/{2,}/g, '/');
  19934 
  19935 		urlObject.pathname = result;
  19936 	}
  19937 
  19938 	// Decode URI octets
  19939 	if (urlObject.pathname) {
  19940 		try {
  19941 			urlObject.pathname = decodeURI(urlObject.pathname);
  19942 		} catch {}
  19943 	}
  19944 
  19945 	// Remove directory index
  19946 	if (options.removeDirectoryIndex === true) {
  19947 		options.removeDirectoryIndex = [/^index\.[a-z]+$/];
  19948 	}
  19949 
  19950 	if (Array.isArray(options.removeDirectoryIndex) && options.removeDirectoryIndex.length > 0) {
  19951 		let pathComponents = urlObject.pathname.split('/');
  19952 		const lastComponent = pathComponents[pathComponents.length - 1];
  19953 
  19954 		if (testParameter(lastComponent, options.removeDirectoryIndex)) {
  19955 			pathComponents = pathComponents.slice(0, -1);
  19956 			urlObject.pathname = pathComponents.slice(1).join('/') + '/';
  19957 		}
  19958 	}
  19959 
  19960 	if (urlObject.hostname) {
  19961 		// Remove trailing dot
  19962 		urlObject.hostname = urlObject.hostname.replace(/\.$/, '');
  19963 
  19964 		// Remove `www.`
  19965 		if (options.stripWWW && /^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(urlObject.hostname)) {
  19966 			// Each label should be max 63 at length (min: 1).
  19967 			// Source: https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
  19968 			// Each TLD should be up to 63 characters long (min: 2).
  19969 			// It is technically possible to have a single character TLD, but none currently exist.
  19970 			urlObject.hostname = urlObject.hostname.replace(/^www\./, '');
  19971 		}
  19972 	}
  19973 
  19974 	// Remove query unwanted parameters
  19975 	if (Array.isArray(options.removeQueryParameters)) {
  19976 		// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.
  19977 		for (const key of [...urlObject.searchParams.keys()]) {
  19978 			if (testParameter(key, options.removeQueryParameters)) {
  19979 				urlObject.searchParams.delete(key);
  19980 			}
  19981 		}
  19982 	}
  19983 
  19984 	if (!Array.isArray(options.keepQueryParameters) && options.removeQueryParameters === true) {
  19985 		urlObject.search = '';
  19986 	}
  19987 
  19988 	// Keep wanted query parameters
  19989 	if (Array.isArray(options.keepQueryParameters) && options.keepQueryParameters.length > 0) {
  19990 		// eslint-disable-next-line unicorn/no-useless-spread -- We are intentionally spreading to get a copy.
  19991 		for (const key of [...urlObject.searchParams.keys()]) {
  19992 			if (!testParameter(key, options.keepQueryParameters)) {
  19993 				urlObject.searchParams.delete(key);
  19994 			}
  19995 		}
  19996 	}
  19997 
  19998 	// Sort query parameters
  19999 	if (options.sortQueryParameters) {
  20000 		urlObject.searchParams.sort();
  20001 
  20002 		// Calling `.sort()` encodes the search parameters, so we need to decode them again.
  20003 		try {
  20004 			urlObject.search = decodeURIComponent(urlObject.search);
  20005 		} catch {}
  20006 	}
  20007 
  20008 	if (options.removeTrailingSlash) {
  20009 		urlObject.pathname = urlObject.pathname.replace(/\/$/, '');
  20010 	}
  20011 
  20012 	// Remove an explicit port number, excluding a default port number, if applicable
  20013 	if (options.removeExplicitPort && urlObject.port) {
  20014 		urlObject.port = '';
  20015 	}
  20016 
  20017 	const oldUrlString = urlString;
  20018 
  20019 	// Take advantage of many of the Node `url` normalizations
  20020 	urlString = urlObject.toString();
  20021 
  20022 	if (!options.removeSingleSlash && urlObject.pathname === '/' && !oldUrlString.endsWith('/') && urlObject.hash === '') {
  20023 		urlString = urlString.replace(/\/$/, '');
  20024 	}
  20025 
  20026 	// Remove ending `/` unless removeSingleSlash is false
  20027 	if ((options.removeTrailingSlash || urlObject.pathname === '/') && urlObject.hash === '' && options.removeSingleSlash) {
  20028 		urlString = urlString.replace(/\/$/, '');
  20029 	}
  20030 
  20031 	// Restore relative protocol, if applicable
  20032 	if (hasRelativeProtocol && !options.normalizeProtocol) {
  20033 		urlString = urlString.replace(/^http:\/\//, '//');
  20034 	}
  20035 
  20036 	// Remove http/https
  20037 	if (options.stripProtocol) {
  20038 		urlString = urlString.replace(/^(?:https?:)?\/\//, '');
  20039 	}
  20040 
  20041 	return urlString;
  20042 }
  20043 
  20044 // EXTERNAL MODULE: ./node_modules/get-stream/index.js
  20045 var get_stream = __nccwpck_require__(1766);
  20046 // EXTERNAL MODULE: ./node_modules/http-cache-semantics/index.js
  20047 var http_cache_semantics = __nccwpck_require__(1002);
  20048 ;// CONCATENATED MODULE: ./node_modules/lowercase-keys/index.js
  20049 function lowercaseKeys(object) {
  20050 	return Object.fromEntries(Object.entries(object).map(([key, value]) => [key.toLowerCase(), value]));
  20051 }
  20052 
  20053 ;// CONCATENATED MODULE: ./node_modules/responselike/index.js
  20054 
  20055 
  20056 
  20057 class Response extends external_node_stream_namespaceObject.Readable {
  20058 	statusCode;
  20059 	headers;
  20060 	body;
  20061 	url;
  20062 
  20063 	constructor({statusCode, headers, body, url}) {
  20064 		if (typeof statusCode !== 'number') {
  20065 			throw new TypeError('Argument `statusCode` should be a number');
  20066 		}
  20067 
  20068 		if (typeof headers !== 'object') {
  20069 			throw new TypeError('Argument `headers` should be an object');
  20070 		}
  20071 
  20072 		if (!(body instanceof Uint8Array)) {
  20073 			throw new TypeError('Argument `body` should be a buffer');
  20074 		}
  20075 
  20076 		if (typeof url !== 'string') {
  20077 			throw new TypeError('Argument `url` should be a string');
  20078 		}
  20079 
  20080 		super({
  20081 			read() {
  20082 				this.push(body);
  20083 				this.push(null);
  20084 			},
  20085 		});
  20086 
  20087 		this.statusCode = statusCode;
  20088 		this.headers = lowercaseKeys(headers);
  20089 		this.body = body;
  20090 		this.url = url;
  20091 	}
  20092 }
  20093 
  20094 // EXTERNAL MODULE: ./node_modules/keyv/src/index.js
  20095 var src = __nccwpck_require__(1531);
  20096 ;// CONCATENATED MODULE: ./node_modules/mimic-response/index.js
  20097 // We define these manually to ensure they're always copied
  20098 // even if they would move up the prototype chain
  20099 // https://nodejs.org/api/http.html#http_class_http_incomingmessage
  20100 const knownProperties = [
  20101 	'aborted',
  20102 	'complete',
  20103 	'headers',
  20104 	'httpVersion',
  20105 	'httpVersionMinor',
  20106 	'httpVersionMajor',
  20107 	'method',
  20108 	'rawHeaders',
  20109 	'rawTrailers',
  20110 	'setTimeout',
  20111 	'socket',
  20112 	'statusCode',
  20113 	'statusMessage',
  20114 	'trailers',
  20115 	'url',
  20116 ];
  20117 
  20118 function mimicResponse(fromStream, toStream) {
  20119 	if (toStream._readableState.autoDestroy) {
  20120 		throw new Error('The second stream must have the `autoDestroy` option set to `false`');
  20121 	}
  20122 
  20123 	const fromProperties = new Set([...Object.keys(fromStream), ...knownProperties]);
  20124 
  20125 	const properties = {};
  20126 
  20127 	for (const property of fromProperties) {
  20128 		// Don't overwrite existing properties.
  20129 		if (property in toStream) {
  20130 			continue;
  20131 		}
  20132 
  20133 		properties[property] = {
  20134 			get() {
  20135 				const value = fromStream[property];
  20136 				const isFunction = typeof value === 'function';
  20137 
  20138 				return isFunction ? value.bind(fromStream) : value;
  20139 			},
  20140 			set(value) {
  20141 				fromStream[property] = value;
  20142 			},
  20143 			enumerable: true,
  20144 			configurable: false,
  20145 		};
  20146 	}
  20147 
  20148 	Object.defineProperties(toStream, properties);
  20149 
  20150 	fromStream.once('aborted', () => {
  20151 		toStream.destroy();
  20152 
  20153 		toStream.emit('aborted');
  20154 	});
  20155 
  20156 	fromStream.once('close', () => {
  20157 		if (fromStream.complete) {
  20158 			if (toStream.readable) {
  20159 				toStream.once('end', () => {
  20160 					toStream.emit('close');
  20161 				});
  20162 			} else {
  20163 				toStream.emit('close');
  20164 			}
  20165 		} else {
  20166 			toStream.emit('close');
  20167 		}
  20168 	});
  20169 
  20170 	return toStream;
  20171 }
  20172 
  20173 ;// CONCATENATED MODULE: ./node_modules/cacheable-request/dist/types.js
  20174 // Type definitions for cacheable-request 6.0
  20175 // Project: https://github.com/lukechilds/cacheable-request#readme
  20176 // Definitions by: BendingBender <https://github.com/BendingBender>
  20177 //                 Paul Melnikow <https://github.com/paulmelnikow>
  20178 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
  20179 // TypeScript Version: 2.3
  20180 class types_RequestError extends Error {
  20181     constructor(error) {
  20182         super(error.message);
  20183         Object.assign(this, error);
  20184     }
  20185 }
  20186 class types_CacheError extends Error {
  20187     constructor(error) {
  20188         super(error.message);
  20189         Object.assign(this, error);
  20190     }
  20191 }
  20192 //# sourceMappingURL=types.js.map
  20193 ;// CONCATENATED MODULE: ./node_modules/cacheable-request/dist/index.js
  20194 
  20195 
  20196 
  20197 
  20198 
  20199 
  20200 
  20201 
  20202 
  20203 
  20204 
  20205 class CacheableRequest {
  20206     constructor(cacheRequest, cacheAdapter) {
  20207         this.hooks = new Map();
  20208         this.request = () => (options, cb) => {
  20209             let url;
  20210             if (typeof options === 'string') {
  20211                 url = normalizeUrlObject(external_node_url_namespaceObject.parse(options));
  20212                 options = {};
  20213             }
  20214             else if (options instanceof external_node_url_namespaceObject.URL) {
  20215                 url = normalizeUrlObject(external_node_url_namespaceObject.parse(options.toString()));
  20216                 options = {};
  20217             }
  20218             else {
  20219                 const [pathname, ...searchParts] = (options.path ?? '').split('?');
  20220                 const search = searchParts.length > 0
  20221                     ? `?${searchParts.join('?')}`
  20222                     : '';
  20223                 url = normalizeUrlObject({ ...options, pathname, search });
  20224             }
  20225             options = {
  20226                 headers: {},
  20227                 method: 'GET',
  20228                 cache: true,
  20229                 strictTtl: false,
  20230                 automaticFailover: false,
  20231                 ...options,
  20232                 ...urlObjectToRequestOptions(url),
  20233             };
  20234             options.headers = Object.fromEntries(entries(options.headers).map(([key, value]) => [key.toLowerCase(), value]));
  20235             const ee = new external_node_events_namespaceObject();
  20236             const normalizedUrlString = normalizeUrl(external_node_url_namespaceObject.format(url), {
  20237                 stripWWW: false,
  20238                 removeTrailingSlash: false,
  20239                 stripAuthentication: false,
  20240             });
  20241             let key = `${options.method}:${normalizedUrlString}`;
  20242             // POST, PATCH, and PUT requests may be cached, depending on the response
  20243             // cache-control headers. As a result, the body of the request should be
  20244             // added to the cache key in order to avoid collisions.
  20245             if (options.body && options.method !== undefined && ['POST', 'PATCH', 'PUT'].includes(options.method)) {
  20246                 if (options.body instanceof external_node_stream_namespaceObject.Readable) {
  20247                     // Streamed bodies should completely skip the cache because they may
  20248                     // or may not be hashable and in either case the stream would need to
  20249                     // close before the cache key could be generated.
  20250                     options.cache = false;
  20251                 }
  20252                 else {
  20253                     key += `:${external_node_crypto_namespaceObject.createHash('md5').update(options.body).digest('hex')}`;
  20254                 }
  20255             }
  20256             let revalidate = false;
  20257             let madeRequest = false;
  20258             const makeRequest = (options_) => {
  20259                 madeRequest = true;
  20260                 let requestErrored = false;
  20261                 let requestErrorCallback = () => { };
  20262                 const requestErrorPromise = new Promise(resolve => {
  20263                     requestErrorCallback = () => {
  20264                         if (!requestErrored) {
  20265                             requestErrored = true;
  20266                             resolve();
  20267                         }
  20268                     };
  20269                 });
  20270                 const handler = async (response) => {
  20271                     if (revalidate) {
  20272                         response.status = response.statusCode;
  20273                         const revalidatedPolicy = http_cache_semantics.fromObject(revalidate.cachePolicy).revalidatedPolicy(options_, response);
  20274                         if (!revalidatedPolicy.modified) {
  20275                             response.resume();
  20276                             await new Promise(resolve => {
  20277                                 // Skipping 'error' handler cause 'error' event should't be emitted for 304 response
  20278                                 response
  20279                                     .once('end', resolve);
  20280                             });
  20281                             const headers = convertHeaders(revalidatedPolicy.policy.responseHeaders());
  20282                             response = new Response({ statusCode: revalidate.statusCode, headers, body: revalidate.body, url: revalidate.url });
  20283                             response.cachePolicy = revalidatedPolicy.policy;
  20284                             response.fromCache = true;
  20285                         }
  20286                     }
  20287                     if (!response.fromCache) {
  20288                         response.cachePolicy = new http_cache_semantics(options_, response, options_);
  20289                         response.fromCache = false;
  20290                     }
  20291                     let clonedResponse;
  20292                     if (options_.cache && response.cachePolicy.storable()) {
  20293                         clonedResponse = cloneResponse(response);
  20294                         (async () => {
  20295                             try {
  20296                                 const bodyPromise = get_stream.buffer(response);
  20297                                 await Promise.race([
  20298                                     requestErrorPromise,
  20299                                     new Promise(resolve => response.once('end', resolve)),
  20300                                     new Promise(resolve => response.once('close', resolve)), // eslint-disable-line no-promise-executor-return
  20301                                 ]);
  20302                                 const body = await bodyPromise;
  20303                                 let value = {
  20304                                     url: response.url,
  20305                                     statusCode: response.fromCache ? revalidate.statusCode : response.statusCode,
  20306                                     body,
  20307                                     cachePolicy: response.cachePolicy.toObject(),
  20308                                 };
  20309                                 let ttl = options_.strictTtl ? response.cachePolicy.timeToLive() : undefined;
  20310                                 if (options_.maxTtl) {
  20311                                     ttl = ttl ? Math.min(ttl, options_.maxTtl) : options_.maxTtl;
  20312                                 }
  20313                                 if (this.hooks.size > 0) {
  20314                                     /* eslint-disable no-await-in-loop */
  20315                                     for (const key_ of this.hooks.keys()) {
  20316                                         value = await this.runHook(key_, value, response);
  20317                                     }
  20318                                     /* eslint-enable no-await-in-loop */
  20319                                 }
  20320                                 await this.cache.set(key, value, ttl);
  20321                             }
  20322                             catch (error) {
  20323                                 ee.emit('error', new types_CacheError(error));
  20324                             }
  20325                         })();
  20326                     }
  20327                     else if (options_.cache && revalidate) {
  20328                         (async () => {
  20329                             try {
  20330                                 await this.cache.delete(key);
  20331                             }
  20332                             catch (error) {
  20333                                 ee.emit('error', new types_CacheError(error));
  20334                             }
  20335                         })();
  20336                     }
  20337                     ee.emit('response', clonedResponse ?? response);
  20338                     if (typeof cb === 'function') {
  20339                         cb(clonedResponse ?? response);
  20340                     }
  20341                 };
  20342                 try {
  20343                     const request_ = this.cacheRequest(options_, handler);
  20344                     request_.once('error', requestErrorCallback);
  20345                     request_.once('abort', requestErrorCallback);
  20346                     request_.once('destroy', requestErrorCallback);
  20347                     ee.emit('request', request_);
  20348                 }
  20349                 catch (error) {
  20350                     ee.emit('error', new types_RequestError(error));
  20351                 }
  20352             };
  20353             (async () => {
  20354                 const get = async (options_) => {
  20355                     await Promise.resolve();
  20356                     const cacheEntry = options_.cache ? await this.cache.get(key) : undefined;
  20357                     if (typeof cacheEntry === 'undefined' && !options_.forceRefresh) {
  20358                         makeRequest(options_);
  20359                         return;
  20360                     }
  20361                     const policy = http_cache_semantics.fromObject(cacheEntry.cachePolicy);
  20362                     if (policy.satisfiesWithoutRevalidation(options_) && !options_.forceRefresh) {
  20363                         const headers = convertHeaders(policy.responseHeaders());
  20364                         const response = new Response({ statusCode: cacheEntry.statusCode, headers, body: cacheEntry.body, url: cacheEntry.url });
  20365                         response.cachePolicy = policy;
  20366                         response.fromCache = true;
  20367                         ee.emit('response', response);
  20368                         if (typeof cb === 'function') {
  20369                             cb(response);
  20370                         }
  20371                     }
  20372                     else if (policy.satisfiesWithoutRevalidation(options_) && Date.now() >= policy.timeToLive() && options_.forceRefresh) {
  20373                         await this.cache.delete(key);
  20374                         options_.headers = policy.revalidationHeaders(options_);
  20375                         makeRequest(options_);
  20376                     }
  20377                     else {
  20378                         revalidate = cacheEntry;
  20379                         options_.headers = policy.revalidationHeaders(options_);
  20380                         makeRequest(options_);
  20381                     }
  20382                 };
  20383                 const errorHandler = (error) => ee.emit('error', new types_CacheError(error));
  20384                 if (this.cache instanceof src) {
  20385                     const cachek = this.cache;
  20386                     cachek.once('error', errorHandler);
  20387                     ee.on('error', () => cachek.removeListener('error', errorHandler));
  20388                     ee.on('response', () => cachek.removeListener('error', errorHandler));
  20389                 }
  20390                 try {
  20391                     await get(options);
  20392                 }
  20393                 catch (error) {
  20394                     if (options.automaticFailover && !madeRequest) {
  20395                         makeRequest(options);
  20396                     }
  20397                     ee.emit('error', new types_CacheError(error));
  20398                 }
  20399             })();
  20400             return ee;
  20401         };
  20402         this.addHook = (name, fn) => {
  20403             if (!this.hooks.has(name)) {
  20404                 this.hooks.set(name, fn);
  20405             }
  20406         };
  20407         this.removeHook = (name) => this.hooks.delete(name);
  20408         this.getHook = (name) => this.hooks.get(name);
  20409         this.runHook = async (name, ...args) => this.hooks.get(name)?.(...args);
  20410         if (cacheAdapter instanceof src) {
  20411             this.cache = cacheAdapter;
  20412         }
  20413         else if (typeof cacheAdapter === 'string') {
  20414             this.cache = new src({
  20415                 uri: cacheAdapter,
  20416                 namespace: 'cacheable-request',
  20417             });
  20418         }
  20419         else {
  20420             this.cache = new src({
  20421                 store: cacheAdapter,
  20422                 namespace: 'cacheable-request',
  20423             });
  20424         }
  20425         this.request = this.request.bind(this);
  20426         this.cacheRequest = cacheRequest;
  20427     }
  20428 }
  20429 const entries = Object.entries;
  20430 const cloneResponse = (response) => {
  20431     const clone = new external_node_stream_namespaceObject.PassThrough({ autoDestroy: false });
  20432     mimicResponse(response, clone);
  20433     return response.pipe(clone);
  20434 };
  20435 const urlObjectToRequestOptions = (url) => {
  20436     const options = { ...url };
  20437     options.path = `${url.pathname || '/'}${url.search || ''}`;
  20438     delete options.pathname;
  20439     delete options.search;
  20440     return options;
  20441 };
  20442 const normalizeUrlObject = (url) => 
  20443 // If url was parsed by url.parse or new URL:
  20444 // - hostname will be set
  20445 // - host will be hostname[:port]
  20446 // - port will be set if it was explicit in the parsed string
  20447 // Otherwise, url was from request options:
  20448 // - hostname or host may be set
  20449 // - host shall not have port encoded
  20450 ({
  20451     protocol: url.protocol,
  20452     auth: url.auth,
  20453     hostname: url.hostname || url.host || 'localhost',
  20454     port: url.port,
  20455     pathname: url.pathname,
  20456     search: url.search,
  20457 });
  20458 const convertHeaders = (headers) => {
  20459     const result = [];
  20460     for (const name of Object.keys(headers)) {
  20461         result[name.toLowerCase()] = headers[name];
  20462     }
  20463     return result;
  20464 };
  20465 /* harmony default export */ const cacheable_request_dist = (CacheableRequest);
  20466 
  20467 const onResponse = 'onResponse';
  20468 //# sourceMappingURL=index.js.map
  20469 // EXTERNAL MODULE: ./node_modules/decompress-response/index.js
  20470 var decompress_response = __nccwpck_require__(2391);
  20471 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/isFunction.js
  20472 const isFunction = (value) => (typeof value === "function");
  20473 
  20474 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/isFormData.js
  20475 
  20476 const isFormData = (value) => Boolean(value
  20477     && isFunction(value.constructor)
  20478     && value[Symbol.toStringTag] === "FormData"
  20479     && isFunction(value.append)
  20480     && isFunction(value.getAll)
  20481     && isFunction(value.entries)
  20482     && isFunction(value[Symbol.iterator]));
  20483 
  20484 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/getStreamIterator.js
  20485 
  20486 const isAsyncIterable = (value) => (isFunction(value[Symbol.asyncIterator]));
  20487 async function* readStream(readable) {
  20488     const reader = readable.getReader();
  20489     while (true) {
  20490         const { done, value } = await reader.read();
  20491         if (done) {
  20492             break;
  20493         }
  20494         yield value;
  20495     }
  20496 }
  20497 const getStreamIterator = (source) => {
  20498     if (isAsyncIterable(source)) {
  20499         return source;
  20500     }
  20501     if (isFunction(source.getReader)) {
  20502         return readStream(source);
  20503     }
  20504     throw new TypeError("Unsupported data source: Expected either ReadableStream or async iterable.");
  20505 };
  20506 
  20507 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/createBoundary.js
  20508 const alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
  20509 function createBoundary() {
  20510     let size = 16;
  20511     let res = "";
  20512     while (size--) {
  20513         res += alphabet[(Math.random() * alphabet.length) << 0];
  20514     }
  20515     return res;
  20516 }
  20517 
  20518 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/normalizeValue.js
  20519 const normalizeValue = (value) => String(value)
  20520     .replace(/\r|\n/g, (match, i, str) => {
  20521     if ((match === "\r" && str[i + 1] !== "\n")
  20522         || (match === "\n" && str[i - 1] !== "\r")) {
  20523         return "\r\n";
  20524     }
  20525     return match;
  20526 });
  20527 
  20528 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/isPlainObject.js
  20529 const getType = (value) => (Object.prototype.toString.call(value).slice(8, -1).toLowerCase());
  20530 function isPlainObject(value) {
  20531     if (getType(value) !== "object") {
  20532         return false;
  20533     }
  20534     const pp = Object.getPrototypeOf(value);
  20535     if (pp === null || pp === undefined) {
  20536         return true;
  20537     }
  20538     const Ctor = pp.constructor && pp.constructor.toString();
  20539     return Ctor === Object.toString();
  20540 }
  20541 
  20542 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/proxyHeaders.js
  20543 function getProperty(target, prop) {
  20544     if (typeof prop === "string") {
  20545         for (const [name, value] of Object.entries(target)) {
  20546             if (prop.toLowerCase() === name.toLowerCase()) {
  20547                 return value;
  20548             }
  20549         }
  20550     }
  20551     return undefined;
  20552 }
  20553 const proxyHeaders = (object) => new Proxy(object, {
  20554     get: (target, prop) => getProperty(target, prop),
  20555     has: (target, prop) => getProperty(target, prop) !== undefined
  20556 });
  20557 
  20558 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/escapeName.js
  20559 const escapeName = (name) => String(name)
  20560     .replace(/\r/g, "%0D")
  20561     .replace(/\n/g, "%0A")
  20562     .replace(/"/g, "%22");
  20563 
  20564 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/util/isFile.js
  20565 
  20566 const isFile = (value) => Boolean(value
  20567     && typeof value === "object"
  20568     && isFunction(value.constructor)
  20569     && value[Symbol.toStringTag] === "File"
  20570     && isFunction(value.stream)
  20571     && value.name != null);
  20572 const isFileLike = (/* unused pure expression or super */ null && (isFile));
  20573 
  20574 ;// CONCATENATED MODULE: ./node_modules/form-data-encoder/lib/FormDataEncoder.js
  20575 var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
  20576     if (kind === "m") throw new TypeError("Private method is not writable");
  20577     if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
  20578     if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
  20579     return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
  20580 };
  20581 var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
  20582     if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
  20583     if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
  20584     return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
  20585 };
  20586 var _FormDataEncoder_instances, _FormDataEncoder_CRLF, _FormDataEncoder_CRLF_BYTES, _FormDataEncoder_CRLF_BYTES_LENGTH, _FormDataEncoder_DASHES, _FormDataEncoder_encoder, _FormDataEncoder_footer, _FormDataEncoder_form, _FormDataEncoder_options, _FormDataEncoder_getFieldHeader, _FormDataEncoder_getContentLength;
  20587 
  20588 
  20589 
  20590 
  20591 
  20592 
  20593 
  20594 
  20595 const defaultOptions = {
  20596     enableAdditionalHeaders: false
  20597 };
  20598 const readonlyProp = { writable: false, configurable: false };
  20599 class FormDataEncoder {
  20600     constructor(form, boundaryOrOptions, options) {
  20601         _FormDataEncoder_instances.add(this);
  20602         _FormDataEncoder_CRLF.set(this, "\r\n");
  20603         _FormDataEncoder_CRLF_BYTES.set(this, void 0);
  20604         _FormDataEncoder_CRLF_BYTES_LENGTH.set(this, void 0);
  20605         _FormDataEncoder_DASHES.set(this, "-".repeat(2));
  20606         _FormDataEncoder_encoder.set(this, new TextEncoder());
  20607         _FormDataEncoder_footer.set(this, void 0);
  20608         _FormDataEncoder_form.set(this, void 0);
  20609         _FormDataEncoder_options.set(this, void 0);
  20610         if (!isFormData(form)) {
  20611             throw new TypeError("Expected first argument to be a FormData instance.");
  20612         }
  20613         let boundary;
  20614         if (isPlainObject(boundaryOrOptions)) {
  20615             options = boundaryOrOptions;
  20616         }
  20617         else {
  20618             boundary = boundaryOrOptions;
  20619         }
  20620         if (!boundary) {
  20621             boundary = createBoundary();
  20622         }
  20623         if (typeof boundary !== "string") {
  20624             throw new TypeError("Expected boundary argument to be a string.");
  20625         }
  20626         if (options && !isPlainObject(options)) {
  20627             throw new TypeError("Expected options argument to be an object.");
  20628         }
  20629         __classPrivateFieldSet(this, _FormDataEncoder_form, Array.from(form.entries()), "f");
  20630         __classPrivateFieldSet(this, _FormDataEncoder_options, { ...defaultOptions, ...options }, "f");
  20631         __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES, __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")), "f");
  20632         __classPrivateFieldSet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, "f").byteLength, "f");
  20633         this.boundary = `form-data-boundary-${boundary}`;
  20634         this.contentType = `multipart/form-data; boundary=${this.boundary}`;
  20635         __classPrivateFieldSet(this, _FormDataEncoder_footer, __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(`${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f").repeat(2)}`), "f");
  20636         const headers = {
  20637             "Content-Type": this.contentType
  20638         };
  20639         const contentLength = __classPrivateFieldGet(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getContentLength).call(this);
  20640         if (contentLength) {
  20641             this.contentLength = contentLength;
  20642             headers["Content-Length"] = contentLength;
  20643         }
  20644         this.headers = proxyHeaders(Object.freeze(headers));
  20645         Object.defineProperties(this, {
  20646             boundary: readonlyProp,
  20647             contentType: readonlyProp,
  20648             contentLength: readonlyProp,
  20649             headers: readonlyProp
  20650         });
  20651     }
  20652     getContentLength() {
  20653         return this.contentLength == null ? undefined : Number(this.contentLength);
  20654     }
  20655     *values() {
  20656         for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, "f")) {
  20657             const value = isFile(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(normalizeValue(raw));
  20658             yield __classPrivateFieldGet(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name, value);
  20659             yield value;
  20660             yield __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES, "f");
  20661         }
  20662         yield __classPrivateFieldGet(this, _FormDataEncoder_footer, "f");
  20663     }
  20664     async *encode() {
  20665         for (const part of this.values()) {
  20666             if (isFile(part)) {
  20667                 yield* getStreamIterator(part.stream());
  20668             }
  20669             else {
  20670                 yield part;
  20671             }
  20672         }
  20673     }
  20674     [(_FormDataEncoder_CRLF = new WeakMap(), _FormDataEncoder_CRLF_BYTES = new WeakMap(), _FormDataEncoder_CRLF_BYTES_LENGTH = new WeakMap(), _FormDataEncoder_DASHES = new WeakMap(), _FormDataEncoder_encoder = new WeakMap(), _FormDataEncoder_footer = new WeakMap(), _FormDataEncoder_form = new WeakMap(), _FormDataEncoder_options = new WeakMap(), _FormDataEncoder_instances = new WeakSet(), _FormDataEncoder_getFieldHeader = function _FormDataEncoder_getFieldHeader(name, value) {
  20675         let header = "";
  20676         header += `${__classPrivateFieldGet(this, _FormDataEncoder_DASHES, "f")}${this.boundary}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}`;
  20677         header += `Content-Disposition: form-data; name="${escapeName(name)}"`;
  20678         if (isFile(value)) {
  20679             header += `; filename="${escapeName(value.name)}"${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}`;
  20680             header += `Content-Type: ${value.type || "application/octet-stream"}`;
  20681         }
  20682         const size = isFile(value) ? value.size : value.byteLength;
  20683         if (__classPrivateFieldGet(this, _FormDataEncoder_options, "f").enableAdditionalHeaders === true
  20684             && size != null
  20685             && !isNaN(size)) {
  20686             header += `${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f")}Content-Length: ${isFile(value) ? value.size : value.byteLength}`;
  20687         }
  20688         return __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(`${header}${__classPrivateFieldGet(this, _FormDataEncoder_CRLF, "f").repeat(2)}`);
  20689     }, _FormDataEncoder_getContentLength = function _FormDataEncoder_getContentLength() {
  20690         let length = 0;
  20691         for (const [name, raw] of __classPrivateFieldGet(this, _FormDataEncoder_form, "f")) {
  20692             const value = isFile(raw) ? raw : __classPrivateFieldGet(this, _FormDataEncoder_encoder, "f").encode(normalizeValue(raw));
  20693             const size = isFile(value) ? value.size : value.byteLength;
  20694             if (size == null || isNaN(size)) {
  20695                 return undefined;
  20696             }
  20697             length += __classPrivateFieldGet(this, _FormDataEncoder_instances, "m", _FormDataEncoder_getFieldHeader).call(this, name, value).byteLength;
  20698             length += size;
  20699             length += __classPrivateFieldGet(this, _FormDataEncoder_CRLF_BYTES_LENGTH, "f");
  20700         }
  20701         return String(length + __classPrivateFieldGet(this, _FormDataEncoder_footer, "f").byteLength);
  20702     }, Symbol.iterator)]() {
  20703         return this.values();
  20704     }
  20705     [Symbol.asyncIterator]() {
  20706         return this.encode();
  20707     }
  20708 }
  20709 
  20710 ;// CONCATENATED MODULE: external "node:util"
  20711 const external_node_util_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:util");
  20712 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/is-form-data.js
  20713 
  20714 function is_form_data_isFormData(body) {
  20715     return dist.nodeStream(body) && dist.function_(body.getBoundary);
  20716 }
  20717 
  20718 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/get-body-size.js
  20719 
  20720 
  20721 
  20722 
  20723 async function getBodySize(body, headers) {
  20724     if (headers && 'content-length' in headers) {
  20725         return Number(headers['content-length']);
  20726     }
  20727     if (!body) {
  20728         return 0;
  20729     }
  20730     if (dist.string(body)) {
  20731         return external_node_buffer_namespaceObject.Buffer.byteLength(body);
  20732     }
  20733     if (dist.buffer(body)) {
  20734         return body.length;
  20735     }
  20736     if (is_form_data_isFormData(body)) {
  20737         return (0,external_node_util_namespaceObject.promisify)(body.getLength.bind(body))();
  20738     }
  20739     return undefined;
  20740 }
  20741 
  20742 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/proxy-events.js
  20743 function proxyEvents(from, to, events) {
  20744     const eventFunctions = {};
  20745     for (const event of events) {
  20746         const eventFunction = (...args) => {
  20747             to.emit(event, ...args);
  20748         };
  20749         eventFunctions[event] = eventFunction;
  20750         from.on(event, eventFunction);
  20751     }
  20752     return () => {
  20753         for (const [event, eventFunction] of Object.entries(eventFunctions)) {
  20754             from.off(event, eventFunction);
  20755         }
  20756     };
  20757 }
  20758 
  20759 ;// CONCATENATED MODULE: external "node:net"
  20760 const external_node_net_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:net");
  20761 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/unhandle.js
  20762 // When attaching listeners, it's very easy to forget about them.
  20763 // Especially if you do error handling and set timeouts.
  20764 // So instead of checking if it's proper to throw an error on every timeout ever,
  20765 // use this simple tool which will remove all listeners you have attached.
  20766 function unhandle() {
  20767     const handlers = [];
  20768     return {
  20769         once(origin, event, fn) {
  20770             origin.once(event, fn);
  20771             handlers.push({ origin, event, fn });
  20772         },
  20773         unhandleAll() {
  20774             for (const handler of handlers) {
  20775                 const { origin, event, fn } = handler;
  20776                 origin.removeListener(event, fn);
  20777             }
  20778             handlers.length = 0;
  20779         },
  20780     };
  20781 }
  20782 
  20783 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/timed-out.js
  20784 
  20785 
  20786 const reentry = Symbol('reentry');
  20787 const noop = () => { };
  20788 class timed_out_TimeoutError extends Error {
  20789     constructor(threshold, event) {
  20790         super(`Timeout awaiting '${event}' for ${threshold}ms`);
  20791         Object.defineProperty(this, "event", {
  20792             enumerable: true,
  20793             configurable: true,
  20794             writable: true,
  20795             value: event
  20796         });
  20797         Object.defineProperty(this, "code", {
  20798             enumerable: true,
  20799             configurable: true,
  20800             writable: true,
  20801             value: void 0
  20802         });
  20803         this.name = 'TimeoutError';
  20804         this.code = 'ETIMEDOUT';
  20805     }
  20806 }
  20807 function timedOut(request, delays, options) {
  20808     if (reentry in request) {
  20809         return noop;
  20810     }
  20811     request[reentry] = true;
  20812     const cancelers = [];
  20813     const { once, unhandleAll } = unhandle();
  20814     const addTimeout = (delay, callback, event) => {
  20815         const timeout = setTimeout(callback, delay, delay, event);
  20816         timeout.unref?.();
  20817         const cancel = () => {
  20818             clearTimeout(timeout);
  20819         };
  20820         cancelers.push(cancel);
  20821         return cancel;
  20822     };
  20823     const { host, hostname } = options;
  20824     const timeoutHandler = (delay, event) => {
  20825         request.destroy(new timed_out_TimeoutError(delay, event));
  20826     };
  20827     const cancelTimeouts = () => {
  20828         for (const cancel of cancelers) {
  20829             cancel();
  20830         }
  20831         unhandleAll();
  20832     };
  20833     request.once('error', error => {
  20834         cancelTimeouts();
  20835         // Save original behavior
  20836         /* istanbul ignore next */
  20837         if (request.listenerCount('error') === 0) {
  20838             throw error;
  20839         }
  20840     });
  20841     if (delays.request !== undefined) {
  20842         const cancelTimeout = addTimeout(delays.request, timeoutHandler, 'request');
  20843         once(request, 'response', (response) => {
  20844             once(response, 'end', cancelTimeout);
  20845         });
  20846     }
  20847     if (delays.socket !== undefined) {
  20848         const { socket } = delays;
  20849         const socketTimeoutHandler = () => {
  20850             timeoutHandler(socket, 'socket');
  20851         };
  20852         request.setTimeout(socket, socketTimeoutHandler);
  20853         // `request.setTimeout(0)` causes a memory leak.
  20854         // We can just remove the listener and forget about the timer - it's unreffed.
  20855         // See https://github.com/sindresorhus/got/issues/690
  20856         cancelers.push(() => {
  20857             request.removeListener('timeout', socketTimeoutHandler);
  20858         });
  20859     }
  20860     const hasLookup = delays.lookup !== undefined;
  20861     const hasConnect = delays.connect !== undefined;
  20862     const hasSecureConnect = delays.secureConnect !== undefined;
  20863     const hasSend = delays.send !== undefined;
  20864     if (hasLookup || hasConnect || hasSecureConnect || hasSend) {
  20865         once(request, 'socket', (socket) => {
  20866             const { socketPath } = request;
  20867             /* istanbul ignore next: hard to test */
  20868             if (socket.connecting) {
  20869                 const hasPath = Boolean(socketPath ?? external_node_net_namespaceObject.isIP(hostname ?? host ?? '') !== 0);
  20870                 if (hasLookup && !hasPath && socket.address().address === undefined) {
  20871                     const cancelTimeout = addTimeout(delays.lookup, timeoutHandler, 'lookup');
  20872                     once(socket, 'lookup', cancelTimeout);
  20873                 }
  20874                 if (hasConnect) {
  20875                     const timeConnect = () => addTimeout(delays.connect, timeoutHandler, 'connect');
  20876                     if (hasPath) {
  20877                         once(socket, 'connect', timeConnect());
  20878                     }
  20879                     else {
  20880                         once(socket, 'lookup', (error) => {
  20881                             if (error === null) {
  20882                                 once(socket, 'connect', timeConnect());
  20883                             }
  20884                         });
  20885                     }
  20886                 }
  20887                 if (hasSecureConnect && options.protocol === 'https:') {
  20888                     once(socket, 'connect', () => {
  20889                         const cancelTimeout = addTimeout(delays.secureConnect, timeoutHandler, 'secureConnect');
  20890                         once(socket, 'secureConnect', cancelTimeout);
  20891                     });
  20892                 }
  20893             }
  20894             if (hasSend) {
  20895                 const timeRequest = () => addTimeout(delays.send, timeoutHandler, 'send');
  20896                 /* istanbul ignore next: hard to test */
  20897                 if (socket.connecting) {
  20898                     once(socket, 'connect', () => {
  20899                         once(request, 'upload-complete', timeRequest());
  20900                     });
  20901                 }
  20902                 else {
  20903                     once(request, 'upload-complete', timeRequest());
  20904                 }
  20905             }
  20906         });
  20907     }
  20908     if (delays.response !== undefined) {
  20909         once(request, 'upload-complete', () => {
  20910             const cancelTimeout = addTimeout(delays.response, timeoutHandler, 'response');
  20911             once(request, 'response', cancelTimeout);
  20912         });
  20913     }
  20914     if (delays.read !== undefined) {
  20915         once(request, 'response', (response) => {
  20916             const cancelTimeout = addTimeout(delays.read, timeoutHandler, 'read');
  20917             once(response, 'end', cancelTimeout);
  20918         });
  20919     }
  20920     return cancelTimeouts;
  20921 }
  20922 
  20923 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/url-to-options.js
  20924 
  20925 function urlToOptions(url) {
  20926     // Cast to URL
  20927     url = url;
  20928     const options = {
  20929         protocol: url.protocol,
  20930         hostname: dist.string(url.hostname) && url.hostname.startsWith('[') ? url.hostname.slice(1, -1) : url.hostname,
  20931         host: url.host,
  20932         hash: url.hash,
  20933         search: url.search,
  20934         pathname: url.pathname,
  20935         href: url.href,
  20936         path: `${url.pathname || ''}${url.search || ''}`,
  20937     };
  20938     if (dist.string(url.port) && url.port.length > 0) {
  20939         options.port = Number(url.port);
  20940     }
  20941     if (url.username || url.password) {
  20942         options.auth = `${url.username || ''}:${url.password || ''}`;
  20943     }
  20944     return options;
  20945 }
  20946 
  20947 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/weakable-map.js
  20948 class WeakableMap {
  20949     constructor() {
  20950         Object.defineProperty(this, "weakMap", {
  20951             enumerable: true,
  20952             configurable: true,
  20953             writable: true,
  20954             value: void 0
  20955         });
  20956         Object.defineProperty(this, "map", {
  20957             enumerable: true,
  20958             configurable: true,
  20959             writable: true,
  20960             value: void 0
  20961         });
  20962         this.weakMap = new WeakMap();
  20963         this.map = new Map();
  20964     }
  20965     set(key, value) {
  20966         if (typeof key === 'object') {
  20967             this.weakMap.set(key, value);
  20968         }
  20969         else {
  20970             this.map.set(key, value);
  20971         }
  20972     }
  20973     get(key) {
  20974         if (typeof key === 'object') {
  20975             return this.weakMap.get(key);
  20976         }
  20977         return this.map.get(key);
  20978     }
  20979     has(key) {
  20980         if (typeof key === 'object') {
  20981             return this.weakMap.has(key);
  20982         }
  20983         return this.map.has(key);
  20984     }
  20985 }
  20986 
  20987 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/calculate-retry-delay.js
  20988 const calculateRetryDelay = ({ attemptCount, retryOptions, error, retryAfter, computedValue, }) => {
  20989     if (error.name === 'RetryError') {
  20990         return 1;
  20991     }
  20992     if (attemptCount > retryOptions.limit) {
  20993         return 0;
  20994     }
  20995     const hasMethod = retryOptions.methods.includes(error.options.method);
  20996     const hasErrorCode = retryOptions.errorCodes.includes(error.code);
  20997     const hasStatusCode = error.response && retryOptions.statusCodes.includes(error.response.statusCode);
  20998     if (!hasMethod || (!hasErrorCode && !hasStatusCode)) {
  20999         return 0;
  21000     }
  21001     if (error.response) {
  21002         if (retryAfter) {
  21003             // In this case `computedValue` is `options.request.timeout`
  21004             if (retryAfter > computedValue) {
  21005                 return 0;
  21006             }
  21007             return retryAfter;
  21008         }
  21009         if (error.response.statusCode === 413) {
  21010             return 0;
  21011         }
  21012     }
  21013     const noise = Math.random() * retryOptions.noise;
  21014     return Math.min(((2 ** (attemptCount - 1)) * 1000), retryOptions.backoffLimit) + noise;
  21015 };
  21016 /* harmony default export */ const calculate_retry_delay = (calculateRetryDelay);
  21017 
  21018 ;// CONCATENATED MODULE: external "node:tls"
  21019 const external_node_tls_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:tls");
  21020 ;// CONCATENATED MODULE: external "node:https"
  21021 const external_node_https_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:https");
  21022 ;// CONCATENATED MODULE: external "node:dns"
  21023 const external_node_dns_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns");
  21024 ;// CONCATENATED MODULE: external "node:os"
  21025 const external_node_os_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:os");
  21026 ;// CONCATENATED MODULE: ./node_modules/cacheable-lookup/source/index.js
  21027 
  21028 
  21029 
  21030 
  21031 const {Resolver: AsyncResolver} = external_node_dns_namespaceObject.promises;
  21032 
  21033 const kCacheableLookupCreateConnection = Symbol('cacheableLookupCreateConnection');
  21034 const kCacheableLookupInstance = Symbol('cacheableLookupInstance');
  21035 const kExpires = Symbol('expires');
  21036 
  21037 const supportsALL = typeof external_node_dns_namespaceObject.ALL === 'number';
  21038 
  21039 const verifyAgent = agent => {
  21040 	if (!(agent && typeof agent.createConnection === 'function')) {
  21041 		throw new Error('Expected an Agent instance as the first argument');
  21042 	}
  21043 };
  21044 
  21045 const map4to6 = entries => {
  21046 	for (const entry of entries) {
  21047 		if (entry.family === 6) {
  21048 			continue;
  21049 		}
  21050 
  21051 		entry.address = `::ffff:${entry.address}`;
  21052 		entry.family = 6;
  21053 	}
  21054 };
  21055 
  21056 const getIfaceInfo = () => {
  21057 	let has4 = false;
  21058 	let has6 = false;
  21059 
  21060 	for (const device of Object.values(external_node_os_namespaceObject.networkInterfaces())) {
  21061 		for (const iface of device) {
  21062 			if (iface.internal) {
  21063 				continue;
  21064 			}
  21065 
  21066 			if (iface.family === 'IPv6') {
  21067 				has6 = true;
  21068 			} else {
  21069 				has4 = true;
  21070 			}
  21071 
  21072 			if (has4 && has6) {
  21073 				return {has4, has6};
  21074 			}
  21075 		}
  21076 	}
  21077 
  21078 	return {has4, has6};
  21079 };
  21080 
  21081 const isIterable = map => {
  21082 	return Symbol.iterator in map;
  21083 };
  21084 
  21085 const ignoreNoResultErrors = dnsPromise => {
  21086 	return dnsPromise.catch(error => {
  21087 		if (
  21088 			error.code === 'ENODATA' ||
  21089 			error.code === 'ENOTFOUND' ||
  21090 			error.code === 'ENOENT' // Windows: name exists, but not this record type
  21091 		) {
  21092 			return [];
  21093 		}
  21094 
  21095 		throw error;
  21096 	});
  21097 };
  21098 
  21099 const ttl = {ttl: true};
  21100 const source_all = {all: true};
  21101 const all4 = {all: true, family: 4};
  21102 const all6 = {all: true, family: 6};
  21103 
  21104 class CacheableLookup {
  21105 	constructor({
  21106 		cache = new Map(),
  21107 		maxTtl = Infinity,
  21108 		fallbackDuration = 3600,
  21109 		errorTtl = 0.15,
  21110 		resolver = new AsyncResolver(),
  21111 		lookup = external_node_dns_namespaceObject.lookup
  21112 	} = {}) {
  21113 		this.maxTtl = maxTtl;
  21114 		this.errorTtl = errorTtl;
  21115 
  21116 		this._cache = cache;
  21117 		this._resolver = resolver;
  21118 		this._dnsLookup = lookup && (0,external_node_util_namespaceObject.promisify)(lookup);
  21119 		this.stats = {
  21120 			cache: 0,
  21121 			query: 0
  21122 		};
  21123 
  21124 		if (this._resolver instanceof AsyncResolver) {
  21125 			this._resolve4 = this._resolver.resolve4.bind(this._resolver);
  21126 			this._resolve6 = this._resolver.resolve6.bind(this._resolver);
  21127 		} else {
  21128 			this._resolve4 = (0,external_node_util_namespaceObject.promisify)(this._resolver.resolve4.bind(this._resolver));
  21129 			this._resolve6 = (0,external_node_util_namespaceObject.promisify)(this._resolver.resolve6.bind(this._resolver));
  21130 		}
  21131 
  21132 		this._iface = getIfaceInfo();
  21133 
  21134 		this._pending = {};
  21135 		this._nextRemovalTime = false;
  21136 		this._hostnamesToFallback = new Set();
  21137 
  21138 		this.fallbackDuration = fallbackDuration;
  21139 
  21140 		if (fallbackDuration > 0) {
  21141 			const interval = setInterval(() => {
  21142 				this._hostnamesToFallback.clear();
  21143 			}, fallbackDuration * 1000);
  21144 
  21145 			/* istanbul ignore next: There is no `interval.unref()` when running inside an Electron renderer */
  21146 			if (interval.unref) {
  21147 				interval.unref();
  21148 			}
  21149 
  21150 			this._fallbackInterval = interval;
  21151 		}
  21152 
  21153 		this.lookup = this.lookup.bind(this);
  21154 		this.lookupAsync = this.lookupAsync.bind(this);
  21155 	}
  21156 
  21157 	set servers(servers) {
  21158 		this.clear();
  21159 
  21160 		this._resolver.setServers(servers);
  21161 	}
  21162 
  21163 	get servers() {
  21164 		return this._resolver.getServers();
  21165 	}
  21166 
  21167 	lookup(hostname, options, callback) {
  21168 		if (typeof options === 'function') {
  21169 			callback = options;
  21170 			options = {};
  21171 		} else if (typeof options === 'number') {
  21172 			options = {
  21173 				family: options
  21174 			};
  21175 		}
  21176 
  21177 		if (!callback) {
  21178 			throw new Error('Callback must be a function.');
  21179 		}
  21180 
  21181 		// eslint-disable-next-line promise/prefer-await-to-then
  21182 		this.lookupAsync(hostname, options).then(result => {
  21183 			if (options.all) {
  21184 				callback(null, result);
  21185 			} else {
  21186 				callback(null, result.address, result.family, result.expires, result.ttl, result.source);
  21187 			}
  21188 		}, callback);
  21189 	}
  21190 
  21191 	async lookupAsync(hostname, options = {}) {
  21192 		if (typeof options === 'number') {
  21193 			options = {
  21194 				family: options
  21195 			};
  21196 		}
  21197 
  21198 		let cached = await this.query(hostname);
  21199 
  21200 		if (options.family === 6) {
  21201 			const filtered = cached.filter(entry => entry.family === 6);
  21202 
  21203 			if (options.hints & external_node_dns_namespaceObject.V4MAPPED) {
  21204 				if ((supportsALL && options.hints & external_node_dns_namespaceObject.ALL) || filtered.length === 0) {
  21205 					map4to6(cached);
  21206 				} else {
  21207 					cached = filtered;
  21208 				}
  21209 			} else {
  21210 				cached = filtered;
  21211 			}
  21212 		} else if (options.family === 4) {
  21213 			cached = cached.filter(entry => entry.family === 4);
  21214 		}
  21215 
  21216 		if (options.hints & external_node_dns_namespaceObject.ADDRCONFIG) {
  21217 			const {_iface} = this;
  21218 			cached = cached.filter(entry => entry.family === 6 ? _iface.has6 : _iface.has4);
  21219 		}
  21220 
  21221 		if (cached.length === 0) {
  21222 			const error = new Error(`cacheableLookup ENOTFOUND ${hostname}`);
  21223 			error.code = 'ENOTFOUND';
  21224 			error.hostname = hostname;
  21225 
  21226 			throw error;
  21227 		}
  21228 
  21229 		if (options.all) {
  21230 			return cached;
  21231 		}
  21232 
  21233 		return cached[0];
  21234 	}
  21235 
  21236 	async query(hostname) {
  21237 		let source = 'cache';
  21238 		let cached = await this._cache.get(hostname);
  21239 
  21240 		if (cached) {
  21241 			this.stats.cache++;
  21242 		}
  21243 
  21244 		if (!cached) {
  21245 			const pending = this._pending[hostname];
  21246 			if (pending) {
  21247 				this.stats.cache++;
  21248 				cached = await pending;
  21249 			} else {
  21250 				source = 'query';
  21251 				const newPromise = this.queryAndCache(hostname);
  21252 				this._pending[hostname] = newPromise;
  21253 				this.stats.query++;
  21254 				try {
  21255 					cached = await newPromise;
  21256 				} finally {
  21257 					delete this._pending[hostname];
  21258 				}
  21259 			}
  21260 		}
  21261 
  21262 		cached = cached.map(entry => {
  21263 			return {...entry, source};
  21264 		});
  21265 
  21266 		return cached;
  21267 	}
  21268 
  21269 	async _resolve(hostname) {
  21270 		// ANY is unsafe as it doesn't trigger new queries in the underlying server.
  21271 		const [A, AAAA] = await Promise.all([
  21272 			ignoreNoResultErrors(this._resolve4(hostname, ttl)),
  21273 			ignoreNoResultErrors(this._resolve6(hostname, ttl))
  21274 		]);
  21275 
  21276 		let aTtl = 0;
  21277 		let aaaaTtl = 0;
  21278 		let cacheTtl = 0;
  21279 
  21280 		const now = Date.now();
  21281 
  21282 		for (const entry of A) {
  21283 			entry.family = 4;
  21284 			entry.expires = now + (entry.ttl * 1000);
  21285 
  21286 			aTtl = Math.max(aTtl, entry.ttl);
  21287 		}
  21288 
  21289 		for (const entry of AAAA) {
  21290 			entry.family = 6;
  21291 			entry.expires = now + (entry.ttl * 1000);
  21292 
  21293 			aaaaTtl = Math.max(aaaaTtl, entry.ttl);
  21294 		}
  21295 
  21296 		if (A.length > 0) {
  21297 			if (AAAA.length > 0) {
  21298 				cacheTtl = Math.min(aTtl, aaaaTtl);
  21299 			} else {
  21300 				cacheTtl = aTtl;
  21301 			}
  21302 		} else {
  21303 			cacheTtl = aaaaTtl;
  21304 		}
  21305 
  21306 		return {
  21307 			entries: [
  21308 				...A,
  21309 				...AAAA
  21310 			],
  21311 			cacheTtl
  21312 		};
  21313 	}
  21314 
  21315 	async _lookup(hostname) {
  21316 		try {
  21317 			const [A, AAAA] = await Promise.all([
  21318 				// Passing {all: true} doesn't return all IPv4 and IPv6 entries.
  21319 				// See https://github.com/szmarczak/cacheable-lookup/issues/42
  21320 				ignoreNoResultErrors(this._dnsLookup(hostname, all4)),
  21321 				ignoreNoResultErrors(this._dnsLookup(hostname, all6))
  21322 			]);
  21323 
  21324 			return {
  21325 				entries: [
  21326 					...A,
  21327 					...AAAA
  21328 				],
  21329 				cacheTtl: 0
  21330 			};
  21331 		} catch {
  21332 			return {
  21333 				entries: [],
  21334 				cacheTtl: 0
  21335 			};
  21336 		}
  21337 	}
  21338 
  21339 	async _set(hostname, data, cacheTtl) {
  21340 		if (this.maxTtl > 0 && cacheTtl > 0) {
  21341 			cacheTtl = Math.min(cacheTtl, this.maxTtl) * 1000;
  21342 			data[kExpires] = Date.now() + cacheTtl;
  21343 
  21344 			try {
  21345 				await this._cache.set(hostname, data, cacheTtl);
  21346 			} catch (error) {
  21347 				this.lookupAsync = async () => {
  21348 					const cacheError = new Error('Cache Error. Please recreate the CacheableLookup instance.');
  21349 					cacheError.cause = error;
  21350 
  21351 					throw cacheError;
  21352 				};
  21353 			}
  21354 
  21355 			if (isIterable(this._cache)) {
  21356 				this._tick(cacheTtl);
  21357 			}
  21358 		}
  21359 	}
  21360 
  21361 	async queryAndCache(hostname) {
  21362 		if (this._hostnamesToFallback.has(hostname)) {
  21363 			return this._dnsLookup(hostname, source_all);
  21364 		}
  21365 
  21366 		let query = await this._resolve(hostname);
  21367 
  21368 		if (query.entries.length === 0 && this._dnsLookup) {
  21369 			query = await this._lookup(hostname);
  21370 
  21371 			if (query.entries.length !== 0 && this.fallbackDuration > 0) {
  21372 				// Use `dns.lookup(...)` for that particular hostname
  21373 				this._hostnamesToFallback.add(hostname);
  21374 			}
  21375 		}
  21376 
  21377 		const cacheTtl = query.entries.length === 0 ? this.errorTtl : query.cacheTtl;
  21378 		await this._set(hostname, query.entries, cacheTtl);
  21379 
  21380 		return query.entries;
  21381 	}
  21382 
  21383 	_tick(ms) {
  21384 		const nextRemovalTime = this._nextRemovalTime;
  21385 
  21386 		if (!nextRemovalTime || ms < nextRemovalTime) {
  21387 			clearTimeout(this._removalTimeout);
  21388 
  21389 			this._nextRemovalTime = ms;
  21390 
  21391 			this._removalTimeout = setTimeout(() => {
  21392 				this._nextRemovalTime = false;
  21393 
  21394 				let nextExpiry = Infinity;
  21395 
  21396 				const now = Date.now();
  21397 
  21398 				for (const [hostname, entries] of this._cache) {
  21399 					const expires = entries[kExpires];
  21400 
  21401 					if (now >= expires) {
  21402 						this._cache.delete(hostname);
  21403 					} else if (expires < nextExpiry) {
  21404 						nextExpiry = expires;
  21405 					}
  21406 				}
  21407 
  21408 				if (nextExpiry !== Infinity) {
  21409 					this._tick(nextExpiry - now);
  21410 				}
  21411 			}, ms);
  21412 
  21413 			/* istanbul ignore next: There is no `timeout.unref()` when running inside an Electron renderer */
  21414 			if (this._removalTimeout.unref) {
  21415 				this._removalTimeout.unref();
  21416 			}
  21417 		}
  21418 	}
  21419 
  21420 	install(agent) {
  21421 		verifyAgent(agent);
  21422 
  21423 		if (kCacheableLookupCreateConnection in agent) {
  21424 			throw new Error('CacheableLookup has been already installed');
  21425 		}
  21426 
  21427 		agent[kCacheableLookupCreateConnection] = agent.createConnection;
  21428 		agent[kCacheableLookupInstance] = this;
  21429 
  21430 		agent.createConnection = (options, callback) => {
  21431 			if (!('lookup' in options)) {
  21432 				options.lookup = this.lookup;
  21433 			}
  21434 
  21435 			return agent[kCacheableLookupCreateConnection](options, callback);
  21436 		};
  21437 	}
  21438 
  21439 	uninstall(agent) {
  21440 		verifyAgent(agent);
  21441 
  21442 		if (agent[kCacheableLookupCreateConnection]) {
  21443 			if (agent[kCacheableLookupInstance] !== this) {
  21444 				throw new Error('The agent is not owned by this CacheableLookup instance');
  21445 			}
  21446 
  21447 			agent.createConnection = agent[kCacheableLookupCreateConnection];
  21448 
  21449 			delete agent[kCacheableLookupCreateConnection];
  21450 			delete agent[kCacheableLookupInstance];
  21451 		}
  21452 	}
  21453 
  21454 	updateInterfaceInfo() {
  21455 		const {_iface} = this;
  21456 
  21457 		this._iface = getIfaceInfo();
  21458 
  21459 		if ((_iface.has4 && !this._iface.has4) || (_iface.has6 && !this._iface.has6)) {
  21460 			this._cache.clear();
  21461 		}
  21462 	}
  21463 
  21464 	clear(hostname) {
  21465 		if (hostname) {
  21466 			this._cache.delete(hostname);
  21467 			return;
  21468 		}
  21469 
  21470 		this._cache.clear();
  21471 	}
  21472 }
  21473 
  21474 // EXTERNAL MODULE: ./node_modules/http2-wrapper/source/index.js
  21475 var http2_wrapper_source = __nccwpck_require__(4645);
  21476 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/parse-link-header.js
  21477 function parseLinkHeader(link) {
  21478     const parsed = [];
  21479     const items = link.split(',');
  21480     for (const item of items) {
  21481         // https://tools.ietf.org/html/rfc5988#section-5
  21482         const [rawUriReference, ...rawLinkParameters] = item.split(';');
  21483         const trimmedUriReference = rawUriReference.trim();
  21484         // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with
  21485         if (trimmedUriReference[0] !== '<' || trimmedUriReference[trimmedUriReference.length - 1] !== '>') {
  21486             throw new Error(`Invalid format of the Link header reference: ${trimmedUriReference}`);
  21487         }
  21488         const reference = trimmedUriReference.slice(1, -1);
  21489         const parameters = {};
  21490         if (rawLinkParameters.length === 0) {
  21491             throw new Error(`Unexpected end of Link header parameters: ${rawLinkParameters.join(';')}`);
  21492         }
  21493         for (const rawParameter of rawLinkParameters) {
  21494             const trimmedRawParameter = rawParameter.trim();
  21495             const center = trimmedRawParameter.indexOf('=');
  21496             if (center === -1) {
  21497                 throw new Error(`Failed to parse Link header: ${link}`);
  21498             }
  21499             const name = trimmedRawParameter.slice(0, center).trim();
  21500             const value = trimmedRawParameter.slice(center + 1).trim();
  21501             parameters[name] = value;
  21502         }
  21503         parsed.push({
  21504             reference,
  21505             parameters,
  21506         });
  21507     }
  21508     return parsed;
  21509 }
  21510 
  21511 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/options.js
  21512 
  21513 
  21514 
  21515 // DO NOT use destructuring for `https.request` and `http.request` as it's not compatible with `nock`.
  21516 
  21517 
  21518 
  21519 
  21520 
  21521 
  21522 
  21523 
  21524 const [major, minor] = external_node_process_namespaceObject.versions.node.split('.').map(Number);
  21525 function validateSearchParameters(searchParameters) {
  21526     // eslint-disable-next-line guard-for-in
  21527     for (const key in searchParameters) {
  21528         const value = searchParameters[key];
  21529         assert.any([dist.string, dist.number, dist.boolean, dist.null_, dist.undefined], value);
  21530     }
  21531 }
  21532 const globalCache = new Map();
  21533 let globalDnsCache;
  21534 const getGlobalDnsCache = () => {
  21535     if (globalDnsCache) {
  21536         return globalDnsCache;
  21537     }
  21538     globalDnsCache = new CacheableLookup();
  21539     return globalDnsCache;
  21540 };
  21541 const defaultInternals = {
  21542     request: undefined,
  21543     agent: {
  21544         http: undefined,
  21545         https: undefined,
  21546         http2: undefined,
  21547     },
  21548     h2session: undefined,
  21549     decompress: true,
  21550     timeout: {
  21551         connect: undefined,
  21552         lookup: undefined,
  21553         read: undefined,
  21554         request: undefined,
  21555         response: undefined,
  21556         secureConnect: undefined,
  21557         send: undefined,
  21558         socket: undefined,
  21559     },
  21560     prefixUrl: '',
  21561     body: undefined,
  21562     form: undefined,
  21563     json: undefined,
  21564     cookieJar: undefined,
  21565     ignoreInvalidCookies: false,
  21566     searchParams: undefined,
  21567     dnsLookup: undefined,
  21568     dnsCache: undefined,
  21569     context: {},
  21570     hooks: {
  21571         init: [],
  21572         beforeRequest: [],
  21573         beforeError: [],
  21574         beforeRedirect: [],
  21575         beforeRetry: [],
  21576         afterResponse: [],
  21577     },
  21578     followRedirect: true,
  21579     maxRedirects: 10,
  21580     cache: undefined,
  21581     throwHttpErrors: true,
  21582     username: '',
  21583     password: '',
  21584     http2: false,
  21585     allowGetBody: false,
  21586     headers: {
  21587         'user-agent': 'got (https://github.com/sindresorhus/got)',
  21588     },
  21589     methodRewriting: false,
  21590     dnsLookupIpVersion: undefined,
  21591     parseJson: JSON.parse,
  21592     stringifyJson: JSON.stringify,
  21593     retry: {
  21594         limit: 2,
  21595         methods: [
  21596             'GET',
  21597             'PUT',
  21598             'HEAD',
  21599             'DELETE',
  21600             'OPTIONS',
  21601             'TRACE',
  21602         ],
  21603         statusCodes: [
  21604             408,
  21605             413,
  21606             429,
  21607             500,
  21608             502,
  21609             503,
  21610             504,
  21611             521,
  21612             522,
  21613             524,
  21614         ],
  21615         errorCodes: [
  21616             'ETIMEDOUT',
  21617             'ECONNRESET',
  21618             'EADDRINUSE',
  21619             'ECONNREFUSED',
  21620             'EPIPE',
  21621             'ENOTFOUND',
  21622             'ENETUNREACH',
  21623             'EAI_AGAIN',
  21624         ],
  21625         maxRetryAfter: undefined,
  21626         calculateDelay: ({ computedValue }) => computedValue,
  21627         backoffLimit: Number.POSITIVE_INFINITY,
  21628         noise: 100,
  21629     },
  21630     localAddress: undefined,
  21631     method: 'GET',
  21632     createConnection: undefined,
  21633     cacheOptions: {
  21634         shared: undefined,
  21635         cacheHeuristic: undefined,
  21636         immutableMinTimeToLive: undefined,
  21637         ignoreCargoCult: undefined,
  21638     },
  21639     https: {
  21640         alpnProtocols: undefined,
  21641         rejectUnauthorized: undefined,
  21642         checkServerIdentity: undefined,
  21643         certificateAuthority: undefined,
  21644         key: undefined,
  21645         certificate: undefined,
  21646         passphrase: undefined,
  21647         pfx: undefined,
  21648         ciphers: undefined,
  21649         honorCipherOrder: undefined,
  21650         minVersion: undefined,
  21651         maxVersion: undefined,
  21652         signatureAlgorithms: undefined,
  21653         tlsSessionLifetime: undefined,
  21654         dhparam: undefined,
  21655         ecdhCurve: undefined,
  21656         certificateRevocationLists: undefined,
  21657     },
  21658     encoding: undefined,
  21659     resolveBodyOnly: false,
  21660     isStream: false,
  21661     responseType: 'text',
  21662     url: undefined,
  21663     pagination: {
  21664         transform(response) {
  21665             if (response.request.options.responseType === 'json') {
  21666                 return response.body;
  21667             }
  21668             return JSON.parse(response.body);
  21669         },
  21670         paginate({ response }) {
  21671             const rawLinkHeader = response.headers.link;
  21672             if (typeof rawLinkHeader !== 'string' || rawLinkHeader.trim() === '') {
  21673                 return false;
  21674             }
  21675             const parsed = parseLinkHeader(rawLinkHeader);
  21676             const next = parsed.find(entry => entry.parameters.rel === 'next' || entry.parameters.rel === '"next"');
  21677             if (next) {
  21678                 return {
  21679                     url: new URL(next.reference, response.url),
  21680                 };
  21681             }
  21682             return false;
  21683         },
  21684         filter: () => true,
  21685         shouldContinue: () => true,
  21686         countLimit: Number.POSITIVE_INFINITY,
  21687         backoff: 0,
  21688         requestLimit: 10000,
  21689         stackAllItems: false,
  21690     },
  21691     setHost: true,
  21692     maxHeaderSize: undefined,
  21693     signal: undefined,
  21694     enableUnixSockets: false,
  21695 };
  21696 const cloneInternals = (internals) => {
  21697     const { hooks, retry } = internals;
  21698     const result = {
  21699         ...internals,
  21700         context: { ...internals.context },
  21701         cacheOptions: { ...internals.cacheOptions },
  21702         https: { ...internals.https },
  21703         agent: { ...internals.agent },
  21704         headers: { ...internals.headers },
  21705         retry: {
  21706             ...retry,
  21707             errorCodes: [...retry.errorCodes],
  21708             methods: [...retry.methods],
  21709             statusCodes: [...retry.statusCodes],
  21710         },
  21711         timeout: { ...internals.timeout },
  21712         hooks: {
  21713             init: [...hooks.init],
  21714             beforeRequest: [...hooks.beforeRequest],
  21715             beforeError: [...hooks.beforeError],
  21716             beforeRedirect: [...hooks.beforeRedirect],
  21717             beforeRetry: [...hooks.beforeRetry],
  21718             afterResponse: [...hooks.afterResponse],
  21719         },
  21720         searchParams: internals.searchParams ? new URLSearchParams(internals.searchParams) : undefined,
  21721         pagination: { ...internals.pagination },
  21722     };
  21723     if (result.url !== undefined) {
  21724         result.prefixUrl = '';
  21725     }
  21726     return result;
  21727 };
  21728 const cloneRaw = (raw) => {
  21729     const { hooks, retry } = raw;
  21730     const result = { ...raw };
  21731     if (dist.object(raw.context)) {
  21732         result.context = { ...raw.context };
  21733     }
  21734     if (dist.object(raw.cacheOptions)) {
  21735         result.cacheOptions = { ...raw.cacheOptions };
  21736     }
  21737     if (dist.object(raw.https)) {
  21738         result.https = { ...raw.https };
  21739     }
  21740     if (dist.object(raw.cacheOptions)) {
  21741         result.cacheOptions = { ...result.cacheOptions };
  21742     }
  21743     if (dist.object(raw.agent)) {
  21744         result.agent = { ...raw.agent };
  21745     }
  21746     if (dist.object(raw.headers)) {
  21747         result.headers = { ...raw.headers };
  21748     }
  21749     if (dist.object(retry)) {
  21750         result.retry = { ...retry };
  21751         if (dist.array(retry.errorCodes)) {
  21752             result.retry.errorCodes = [...retry.errorCodes];
  21753         }
  21754         if (dist.array(retry.methods)) {
  21755             result.retry.methods = [...retry.methods];
  21756         }
  21757         if (dist.array(retry.statusCodes)) {
  21758             result.retry.statusCodes = [...retry.statusCodes];
  21759         }
  21760     }
  21761     if (dist.object(raw.timeout)) {
  21762         result.timeout = { ...raw.timeout };
  21763     }
  21764     if (dist.object(hooks)) {
  21765         result.hooks = {
  21766             ...hooks,
  21767         };
  21768         if (dist.array(hooks.init)) {
  21769             result.hooks.init = [...hooks.init];
  21770         }
  21771         if (dist.array(hooks.beforeRequest)) {
  21772             result.hooks.beforeRequest = [...hooks.beforeRequest];
  21773         }
  21774         if (dist.array(hooks.beforeError)) {
  21775             result.hooks.beforeError = [...hooks.beforeError];
  21776         }
  21777         if (dist.array(hooks.beforeRedirect)) {
  21778             result.hooks.beforeRedirect = [...hooks.beforeRedirect];
  21779         }
  21780         if (dist.array(hooks.beforeRetry)) {
  21781             result.hooks.beforeRetry = [...hooks.beforeRetry];
  21782         }
  21783         if (dist.array(hooks.afterResponse)) {
  21784             result.hooks.afterResponse = [...hooks.afterResponse];
  21785         }
  21786     }
  21787     // TODO: raw.searchParams
  21788     if (dist.object(raw.pagination)) {
  21789         result.pagination = { ...raw.pagination };
  21790     }
  21791     return result;
  21792 };
  21793 const getHttp2TimeoutOption = (internals) => {
  21794     const delays = [internals.timeout.socket, internals.timeout.connect, internals.timeout.lookup, internals.timeout.request, internals.timeout.secureConnect].filter(delay => typeof delay === 'number');
  21795     if (delays.length > 0) {
  21796         return Math.min(...delays);
  21797     }
  21798     return undefined;
  21799 };
  21800 const init = (options, withOptions, self) => {
  21801     const initHooks = options.hooks?.init;
  21802     if (initHooks) {
  21803         for (const hook of initHooks) {
  21804             hook(withOptions, self);
  21805         }
  21806     }
  21807 };
  21808 class Options {
  21809     constructor(input, options, defaults) {
  21810         Object.defineProperty(this, "_unixOptions", {
  21811             enumerable: true,
  21812             configurable: true,
  21813             writable: true,
  21814             value: void 0
  21815         });
  21816         Object.defineProperty(this, "_internals", {
  21817             enumerable: true,
  21818             configurable: true,
  21819             writable: true,
  21820             value: void 0
  21821         });
  21822         Object.defineProperty(this, "_merging", {
  21823             enumerable: true,
  21824             configurable: true,
  21825             writable: true,
  21826             value: void 0
  21827         });
  21828         Object.defineProperty(this, "_init", {
  21829             enumerable: true,
  21830             configurable: true,
  21831             writable: true,
  21832             value: void 0
  21833         });
  21834         assert.any([dist.string, dist.urlInstance, dist.object, dist.undefined], input);
  21835         assert.any([dist.object, dist.undefined], options);
  21836         assert.any([dist.object, dist.undefined], defaults);
  21837         if (input instanceof Options || options instanceof Options) {
  21838             throw new TypeError('The defaults must be passed as the third argument');
  21839         }
  21840         this._internals = cloneInternals(defaults?._internals ?? defaults ?? defaultInternals);
  21841         this._init = [...(defaults?._init ?? [])];
  21842         this._merging = false;
  21843         this._unixOptions = undefined;
  21844         // This rule allows `finally` to be considered more important.
  21845         // Meaning no matter the error thrown in the `try` block,
  21846         // if `finally` throws then the `finally` error will be thrown.
  21847         //
  21848         // Yes, we want this. If we set `url` first, then the `url.searchParams`
  21849         // would get merged. Instead we set the `searchParams` first, then
  21850         // `url.searchParams` is overwritten as expected.
  21851         //
  21852         /* eslint-disable no-unsafe-finally */
  21853         try {
  21854             if (dist.plainObject(input)) {
  21855                 try {
  21856                     this.merge(input);
  21857                     this.merge(options);
  21858                 }
  21859                 finally {
  21860                     this.url = input.url;
  21861                 }
  21862             }
  21863             else {
  21864                 try {
  21865                     this.merge(options);
  21866                 }
  21867                 finally {
  21868                     if (options?.url !== undefined) {
  21869                         if (input === undefined) {
  21870                             this.url = options.url;
  21871                         }
  21872                         else {
  21873                             throw new TypeError('The `url` option is mutually exclusive with the `input` argument');
  21874                         }
  21875                     }
  21876                     else if (input !== undefined) {
  21877                         this.url = input;
  21878                     }
  21879                 }
  21880             }
  21881         }
  21882         catch (error) {
  21883             error.options = this;
  21884             throw error;
  21885         }
  21886         /* eslint-enable no-unsafe-finally */
  21887     }
  21888     merge(options) {
  21889         if (!options) {
  21890             return;
  21891         }
  21892         if (options instanceof Options) {
  21893             for (const init of options._init) {
  21894                 this.merge(init);
  21895             }
  21896             return;
  21897         }
  21898         options = cloneRaw(options);
  21899         init(this, options, this);
  21900         init(options, options, this);
  21901         this._merging = true;
  21902         // Always merge `isStream` first
  21903         if ('isStream' in options) {
  21904             this.isStream = options.isStream;
  21905         }
  21906         try {
  21907             let push = false;
  21908             for (const key in options) {
  21909                 // `got.extend()` options
  21910                 if (key === 'mutableDefaults' || key === 'handlers') {
  21911                     continue;
  21912                 }
  21913                 // Never merge `url`
  21914                 if (key === 'url') {
  21915                     continue;
  21916                 }
  21917                 if (!(key in this)) {
  21918                     throw new Error(`Unexpected option: ${key}`);
  21919                 }
  21920                 // @ts-expect-error Type 'unknown' is not assignable to type 'never'.
  21921                 const value = options[key];
  21922                 if (value === undefined) {
  21923                     continue;
  21924                 }
  21925                 // @ts-expect-error Type 'unknown' is not assignable to type 'never'.
  21926                 this[key] = value;
  21927                 push = true;
  21928             }
  21929             if (push) {
  21930                 this._init.push(options);
  21931             }
  21932         }
  21933         finally {
  21934             this._merging = false;
  21935         }
  21936     }
  21937     /**
  21938     Custom request function.
  21939     The main purpose of this is to [support HTTP2 using a wrapper](https://github.com/szmarczak/http2-wrapper).
  21940 
  21941     @default http.request | https.request
  21942     */
  21943     get request() {
  21944         return this._internals.request;
  21945     }
  21946     set request(value) {
  21947         assert.any([dist.function_, dist.undefined], value);
  21948         this._internals.request = value;
  21949     }
  21950     /**
  21951     An object representing `http`, `https` and `http2` keys for [`http.Agent`](https://nodejs.org/api/http.html#http_class_http_agent), [`https.Agent`](https://nodejs.org/api/https.html#https_class_https_agent) and [`http2wrapper.Agent`](https://github.com/szmarczak/http2-wrapper#new-http2agentoptions) instance.
  21952     This is necessary because a request to one protocol might redirect to another.
  21953     In such a scenario, Got will switch over to the right protocol agent for you.
  21954 
  21955     If a key is not present, it will default to a global agent.
  21956 
  21957     @example
  21958     ```
  21959     import got from 'got';
  21960     import HttpAgent from 'agentkeepalive';
  21961 
  21962     const {HttpsAgent} = HttpAgent;
  21963 
  21964     await got('https://sindresorhus.com', {
  21965         agent: {
  21966             http: new HttpAgent(),
  21967             https: new HttpsAgent()
  21968         }
  21969     });
  21970     ```
  21971     */
  21972     get agent() {
  21973         return this._internals.agent;
  21974     }
  21975     set agent(value) {
  21976         assert.plainObject(value);
  21977         // eslint-disable-next-line guard-for-in
  21978         for (const key in value) {
  21979             if (!(key in this._internals.agent)) {
  21980                 throw new TypeError(`Unexpected agent option: ${key}`);
  21981             }
  21982             // @ts-expect-error - No idea why `value[key]` doesn't work here.
  21983             assert.any([dist.object, dist.undefined], value[key]);
  21984         }
  21985         if (this._merging) {
  21986             Object.assign(this._internals.agent, value);
  21987         }
  21988         else {
  21989             this._internals.agent = { ...value };
  21990         }
  21991     }
  21992     get h2session() {
  21993         return this._internals.h2session;
  21994     }
  21995     set h2session(value) {
  21996         this._internals.h2session = value;
  21997     }
  21998     /**
  21999     Decompress the response automatically.
  22000 
  22001     This will set the `accept-encoding` header to `gzip, deflate, br` unless you set it yourself.
  22002 
  22003     If this is disabled, a compressed response is returned as a `Buffer`.
  22004     This may be useful if you want to handle decompression yourself or stream the raw compressed data.
  22005 
  22006     @default true
  22007     */
  22008     get decompress() {
  22009         return this._internals.decompress;
  22010     }
  22011     set decompress(value) {
  22012         assert.boolean(value);
  22013         this._internals.decompress = value;
  22014     }
  22015     /**
  22016     Milliseconds to wait for the server to end the response before aborting the request with `got.TimeoutError` error (a.k.a. `request` property).
  22017     By default, there's no timeout.
  22018 
  22019     This also accepts an `object` with the following fields to constrain the duration of each phase of the request lifecycle:
  22020 
  22021     - `lookup` starts when a socket is assigned and ends when the hostname has been resolved.
  22022         Does not apply when using a Unix domain socket.
  22023     - `connect` starts when `lookup` completes (or when the socket is assigned if lookup does not apply to the request) and ends when the socket is connected.
  22024     - `secureConnect` starts when `connect` completes and ends when the handshaking process completes (HTTPS only).
  22025     - `socket` starts when the socket is connected. See [request.setTimeout](https://nodejs.org/api/http.html#http_request_settimeout_timeout_callback).
  22026     - `response` starts when the request has been written to the socket and ends when the response headers are received.
  22027     - `send` starts when the socket is connected and ends with the request has been written to the socket.
  22028     - `request` starts when the request is initiated and ends when the response's end event fires.
  22029     */
  22030     get timeout() {
  22031         // We always return `Delays` here.
  22032         // It has to be `Delays | number`, otherwise TypeScript will error because the getter and the setter have incompatible types.
  22033         return this._internals.timeout;
  22034     }
  22035     set timeout(value) {
  22036         assert.plainObject(value);
  22037         // eslint-disable-next-line guard-for-in
  22038         for (const key in value) {
  22039             if (!(key in this._internals.timeout)) {
  22040                 throw new Error(`Unexpected timeout option: ${key}`);
  22041             }
  22042             // @ts-expect-error - No idea why `value[key]` doesn't work here.
  22043             assert.any([dist.number, dist.undefined], value[key]);
  22044         }
  22045         if (this._merging) {
  22046             Object.assign(this._internals.timeout, value);
  22047         }
  22048         else {
  22049             this._internals.timeout = { ...value };
  22050         }
  22051     }
  22052     /**
  22053     When specified, `prefixUrl` will be prepended to `url`.
  22054     The prefix can be any valid URL, either relative or absolute.
  22055     A trailing slash `/` is optional - one will be added automatically.
  22056 
  22057     __Note__: `prefixUrl` will be ignored if the `url` argument is a URL instance.
  22058 
  22059     __Note__: Leading slashes in `input` are disallowed when using this option to enforce consistency and avoid confusion.
  22060     For example, when the prefix URL is `https://example.com/foo` and the input is `/bar`, there's ambiguity whether the resulting URL would become `https://example.com/foo/bar` or `https://example.com/bar`.
  22061     The latter is used by browsers.
  22062 
  22063     __Tip__: Useful when used with `got.extend()` to create niche-specific Got instances.
  22064 
  22065     __Tip__: You can change `prefixUrl` using hooks as long as the URL still includes the `prefixUrl`.
  22066     If the URL doesn't include it anymore, it will throw.
  22067 
  22068     @example
  22069     ```
  22070     import got from 'got';
  22071 
  22072     await got('unicorn', {prefixUrl: 'https://cats.com'});
  22073     //=> 'https://cats.com/unicorn'
  22074 
  22075     const instance = got.extend({
  22076         prefixUrl: 'https://google.com'
  22077     });
  22078 
  22079     await instance('unicorn', {
  22080         hooks: {
  22081             beforeRequest: [
  22082                 options => {
  22083                     options.prefixUrl = 'https://cats.com';
  22084                 }
  22085             ]
  22086         }
  22087     });
  22088     //=> 'https://cats.com/unicorn'
  22089     ```
  22090     */
  22091     get prefixUrl() {
  22092         // We always return `string` here.
  22093         // It has to be `string | URL`, otherwise TypeScript will error because the getter and the setter have incompatible types.
  22094         return this._internals.prefixUrl;
  22095     }
  22096     set prefixUrl(value) {
  22097         assert.any([dist.string, dist.urlInstance], value);
  22098         if (value === '') {
  22099             this._internals.prefixUrl = '';
  22100             return;
  22101         }
  22102         value = value.toString();
  22103         if (!value.endsWith('/')) {
  22104             value += '/';
  22105         }
  22106         if (this._internals.prefixUrl && this._internals.url) {
  22107             const { href } = this._internals.url;
  22108             this._internals.url.href = value + href.slice(this._internals.prefixUrl.length);
  22109         }
  22110         this._internals.prefixUrl = value;
  22111     }
  22112     /**
  22113     __Note #1__: The `body` option cannot be used with the `json` or `form` option.
  22114 
  22115     __Note #2__: If you provide this option, `got.stream()` will be read-only.
  22116 
  22117     __Note #3__: If you provide a payload with the `GET` or `HEAD` method, it will throw a `TypeError` unless the method is `GET` and the `allowGetBody` option is set to `true`.
  22118 
  22119     __Note #4__: This option is not enumerable and will not be merged with the instance defaults.
  22120 
  22121     The `content-length` header will be automatically set if `body` is a `string` / `Buffer` / [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) / [`form-data` instance](https://github.com/form-data/form-data), and `content-length` and `transfer-encoding` are not manually set in `options.headers`.
  22122 
  22123     Since Got 12, the `content-length` is not automatically set when `body` is a `fs.createReadStream`.
  22124     */
  22125     get body() {
  22126         return this._internals.body;
  22127     }
  22128     set body(value) {
  22129         assert.any([dist.string, dist.buffer, dist.nodeStream, dist.generator, dist.asyncGenerator, isFormData, dist.undefined], value);
  22130         if (dist.nodeStream(value)) {
  22131             assert.truthy(value.readable);
  22132         }
  22133         if (value !== undefined) {
  22134             assert.undefined(this._internals.form);
  22135             assert.undefined(this._internals.json);
  22136         }
  22137         this._internals.body = value;
  22138     }
  22139     /**
  22140     The form body is converted to a query string using [`(new URLSearchParams(object)).toString()`](https://nodejs.org/api/url.html#url_constructor_new_urlsearchparams_obj).
  22141 
  22142     If the `Content-Type` header is not present, it will be set to `application/x-www-form-urlencoded`.
  22143 
  22144     __Note #1__: If you provide this option, `got.stream()` will be read-only.
  22145 
  22146     __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
  22147     */
  22148     get form() {
  22149         return this._internals.form;
  22150     }
  22151     set form(value) {
  22152         assert.any([dist.plainObject, dist.undefined], value);
  22153         if (value !== undefined) {
  22154             assert.undefined(this._internals.body);
  22155             assert.undefined(this._internals.json);
  22156         }
  22157         this._internals.form = value;
  22158     }
  22159     /**
  22160     JSON body. If the `Content-Type` header is not set, it will be set to `application/json`.
  22161 
  22162     __Note #1__: If you provide this option, `got.stream()` will be read-only.
  22163 
  22164     __Note #2__: This option is not enumerable and will not be merged with the instance defaults.
  22165     */
  22166     get json() {
  22167         return this._internals.json;
  22168     }
  22169     set json(value) {
  22170         if (value !== undefined) {
  22171             assert.undefined(this._internals.body);
  22172             assert.undefined(this._internals.form);
  22173         }
  22174         this._internals.json = value;
  22175     }
  22176     /**
  22177     The URL to request, as a string, a [`https.request` options object](https://nodejs.org/api/https.html#https_https_request_options_callback), or a [WHATWG `URL`](https://nodejs.org/api/url.html#url_class_url).
  22178 
  22179     Properties from `options` will override properties in the parsed `url`.
  22180 
  22181     If no protocol is specified, it will throw a `TypeError`.
  22182 
  22183     __Note__: The query string is **not** parsed as search params.
  22184 
  22185     @example
  22186     ```
  22187     await got('https://example.com/?query=a b'); //=> https://example.com/?query=a%20b
  22188     await got('https://example.com/', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
  22189 
  22190     // The query string is overridden by `searchParams`
  22191     await got('https://example.com/?query=a b', {searchParams: {query: 'a b'}}); //=> https://example.com/?query=a+b
  22192     ```
  22193     */
  22194     get url() {
  22195         return this._internals.url;
  22196     }
  22197     set url(value) {
  22198         assert.any([dist.string, dist.urlInstance, dist.undefined], value);
  22199         if (value === undefined) {
  22200             this._internals.url = undefined;
  22201             return;
  22202         }
  22203         if (dist.string(value) && value.startsWith('/')) {
  22204             throw new Error('`url` must not start with a slash');
  22205         }
  22206         const urlString = `${this.prefixUrl}${value.toString()}`;
  22207         const url = new URL(urlString);
  22208         this._internals.url = url;
  22209         if (url.protocol === 'unix:') {
  22210             url.href = `http://unix${url.pathname}${url.search}`;
  22211         }
  22212         if (url.protocol !== 'http:' && url.protocol !== 'https:') {
  22213             const error = new Error(`Unsupported protocol: ${url.protocol}`);
  22214             error.code = 'ERR_UNSUPPORTED_PROTOCOL';
  22215             throw error;
  22216         }
  22217         if (this._internals.username) {
  22218             url.username = this._internals.username;
  22219             this._internals.username = '';
  22220         }
  22221         if (this._internals.password) {
  22222             url.password = this._internals.password;
  22223             this._internals.password = '';
  22224         }
  22225         if (this._internals.searchParams) {
  22226             url.search = this._internals.searchParams.toString();
  22227             this._internals.searchParams = undefined;
  22228         }
  22229         if (url.hostname === 'unix') {
  22230             if (!this._internals.enableUnixSockets) {
  22231                 throw new Error('Using UNIX domain sockets but option `enableUnixSockets` is not enabled');
  22232             }
  22233             const matches = /(?<socketPath>.+?):(?<path>.+)/.exec(`${url.pathname}${url.search}`);
  22234             if (matches?.groups) {
  22235                 const { socketPath, path } = matches.groups;
  22236                 this._unixOptions = {
  22237                     socketPath,
  22238                     path,
  22239                     host: '',
  22240                 };
  22241             }
  22242             else {
  22243                 this._unixOptions = undefined;
  22244             }
  22245             return;
  22246         }
  22247         this._unixOptions = undefined;
  22248     }
  22249     /**
  22250     Cookie support. You don't have to care about parsing or how to store them.
  22251 
  22252     __Note__: If you provide this option, `options.headers.cookie` will be overridden.
  22253     */
  22254     get cookieJar() {
  22255         return this._internals.cookieJar;
  22256     }
  22257     set cookieJar(value) {
  22258         assert.any([dist.object, dist.undefined], value);
  22259         if (value === undefined) {
  22260             this._internals.cookieJar = undefined;
  22261             return;
  22262         }
  22263         let { setCookie, getCookieString } = value;
  22264         assert.function_(setCookie);
  22265         assert.function_(getCookieString);
  22266         /* istanbul ignore next: Horrible `tough-cookie` v3 check */
  22267         if (setCookie.length === 4 && getCookieString.length === 0) {
  22268             setCookie = (0,external_node_util_namespaceObject.promisify)(setCookie.bind(value));
  22269             getCookieString = (0,external_node_util_namespaceObject.promisify)(getCookieString.bind(value));
  22270             this._internals.cookieJar = {
  22271                 setCookie,
  22272                 getCookieString: getCookieString,
  22273             };
  22274         }
  22275         else {
  22276             this._internals.cookieJar = value;
  22277         }
  22278     }
  22279     /**
  22280     You can abort the `request` using [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController).
  22281 
  22282     @example
  22283     ```
  22284     import got from 'got';
  22285 
  22286     const abortController = new AbortController();
  22287 
  22288     const request = got('https://httpbin.org/anything', {
  22289         signal: abortController.signal
  22290     });
  22291 
  22292     setTimeout(() => {
  22293         abortController.abort();
  22294     }, 100);
  22295     ```
  22296     */
  22297     get signal() {
  22298         return this._internals.signal;
  22299     }
  22300     set signal(value) {
  22301         assert.object(value);
  22302         this._internals.signal = value;
  22303     }
  22304     /**
  22305     Ignore invalid cookies instead of throwing an error.
  22306     Only useful when the `cookieJar` option has been set. Not recommended.
  22307 
  22308     @default false
  22309     */
  22310     get ignoreInvalidCookies() {
  22311         return this._internals.ignoreInvalidCookies;
  22312     }
  22313     set ignoreInvalidCookies(value) {
  22314         assert.boolean(value);
  22315         this._internals.ignoreInvalidCookies = value;
  22316     }
  22317     /**
  22318     Query string that will be added to the request URL.
  22319     This will override the query string in `url`.
  22320 
  22321     If you need to pass in an array, you can do it using a `URLSearchParams` instance.
  22322 
  22323     @example
  22324     ```
  22325     import got from 'got';
  22326 
  22327     const searchParams = new URLSearchParams([['key', 'a'], ['key', 'b']]);
  22328 
  22329     await got('https://example.com', {searchParams});
  22330 
  22331     console.log(searchParams.toString());
  22332     //=> 'key=a&key=b'
  22333     ```
  22334     */
  22335     get searchParams() {
  22336         if (this._internals.url) {
  22337             return this._internals.url.searchParams;
  22338         }
  22339         if (this._internals.searchParams === undefined) {
  22340             this._internals.searchParams = new URLSearchParams();
  22341         }
  22342         return this._internals.searchParams;
  22343     }
  22344     set searchParams(value) {
  22345         assert.any([dist.string, dist.object, dist.undefined], value);
  22346         const url = this._internals.url;
  22347         if (value === undefined) {
  22348             this._internals.searchParams = undefined;
  22349             if (url) {
  22350                 url.search = '';
  22351             }
  22352             return;
  22353         }
  22354         const searchParameters = this.searchParams;
  22355         let updated;
  22356         if (dist.string(value)) {
  22357             updated = new URLSearchParams(value);
  22358         }
  22359         else if (value instanceof URLSearchParams) {
  22360             updated = value;
  22361         }
  22362         else {
  22363             validateSearchParameters(value);
  22364             updated = new URLSearchParams();
  22365             // eslint-disable-next-line guard-for-in
  22366             for (const key in value) {
  22367                 const entry = value[key];
  22368                 if (entry === null) {
  22369                     updated.append(key, '');
  22370                 }
  22371                 else if (entry === undefined) {
  22372                     searchParameters.delete(key);
  22373                 }
  22374                 else {
  22375                     updated.append(key, entry);
  22376                 }
  22377             }
  22378         }
  22379         if (this._merging) {
  22380             // These keys will be replaced
  22381             for (const key of updated.keys()) {
  22382                 searchParameters.delete(key);
  22383             }
  22384             for (const [key, value] of updated) {
  22385                 searchParameters.append(key, value);
  22386             }
  22387         }
  22388         else if (url) {
  22389             url.search = searchParameters.toString();
  22390         }
  22391         else {
  22392             this._internals.searchParams = searchParameters;
  22393         }
  22394     }
  22395     get searchParameters() {
  22396         throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');
  22397     }
  22398     set searchParameters(_value) {
  22399         throw new Error('The `searchParameters` option does not exist. Use `searchParams` instead.');
  22400     }
  22401     get dnsLookup() {
  22402         return this._internals.dnsLookup;
  22403     }
  22404     set dnsLookup(value) {
  22405         assert.any([dist.function_, dist.undefined], value);
  22406         this._internals.dnsLookup = value;
  22407     }
  22408     /**
  22409     An instance of [`CacheableLookup`](https://github.com/szmarczak/cacheable-lookup) used for making DNS lookups.
  22410     Useful when making lots of requests to different *public* hostnames.
  22411 
  22412     `CacheableLookup` uses `dns.resolver4(..)` and `dns.resolver6(...)` under the hood and fall backs to `dns.lookup(...)` when the first two fail, which may lead to additional delay.
  22413 
  22414     __Note__: This should stay disabled when making requests to internal hostnames such as `localhost`, `database.local` etc.
  22415 
  22416     @default false
  22417     */
  22418     get dnsCache() {
  22419         return this._internals.dnsCache;
  22420     }
  22421     set dnsCache(value) {
  22422         assert.any([dist.object, dist.boolean, dist.undefined], value);
  22423         if (value === true) {
  22424             this._internals.dnsCache = getGlobalDnsCache();
  22425         }
  22426         else if (value === false) {
  22427             this._internals.dnsCache = undefined;
  22428         }
  22429         else {
  22430             this._internals.dnsCache = value;
  22431         }
  22432     }
  22433     /**
  22434     User data. `context` is shallow merged and enumerable. If it contains non-enumerable properties they will NOT be merged.
  22435 
  22436     @example
  22437     ```
  22438     import got from 'got';
  22439 
  22440     const instance = got.extend({
  22441         hooks: {
  22442             beforeRequest: [
  22443                 options => {
  22444                     if (!options.context || !options.context.token) {
  22445                         throw new Error('Token required');
  22446                     }
  22447 
  22448                     options.headers.token = options.context.token;
  22449                 }
  22450             ]
  22451         }
  22452     });
  22453 
  22454     const context = {
  22455         token: 'secret'
  22456     };
  22457 
  22458     const response = await instance('https://httpbin.org/headers', {context});
  22459 
  22460     // Let's see the headers
  22461     console.log(response.body);
  22462     ```
  22463     */
  22464     get context() {
  22465         return this._internals.context;
  22466     }
  22467     set context(value) {
  22468         assert.object(value);
  22469         if (this._merging) {
  22470             Object.assign(this._internals.context, value);
  22471         }
  22472         else {
  22473             this._internals.context = { ...value };
  22474         }
  22475     }
  22476     /**
  22477     Hooks allow modifications during the request lifecycle.
  22478     Hook functions may be async and are run serially.
  22479     */
  22480     get hooks() {
  22481         return this._internals.hooks;
  22482     }
  22483     set hooks(value) {
  22484         assert.object(value);
  22485         // eslint-disable-next-line guard-for-in
  22486         for (const knownHookEvent in value) {
  22487             if (!(knownHookEvent in this._internals.hooks)) {
  22488                 throw new Error(`Unexpected hook event: ${knownHookEvent}`);
  22489             }
  22490             const typedKnownHookEvent = knownHookEvent;
  22491             const hooks = value[typedKnownHookEvent];
  22492             assert.any([dist.array, dist.undefined], hooks);
  22493             if (hooks) {
  22494                 for (const hook of hooks) {
  22495                     assert.function_(hook);
  22496                 }
  22497             }
  22498             if (this._merging) {
  22499                 if (hooks) {
  22500                     // @ts-expect-error FIXME
  22501                     this._internals.hooks[typedKnownHookEvent].push(...hooks);
  22502                 }
  22503             }
  22504             else {
  22505                 if (!hooks) {
  22506                     throw new Error(`Missing hook event: ${knownHookEvent}`);
  22507                 }
  22508                 // @ts-expect-error FIXME
  22509                 this._internals.hooks[knownHookEvent] = [...hooks];
  22510             }
  22511         }
  22512     }
  22513     /**
  22514     Defines if redirect responses should be followed automatically.
  22515 
  22516     Note that if a `303` is sent by the server in response to any request type (`POST`, `DELETE`, etc.), Got will automatically request the resource pointed to in the location header via `GET`.
  22517     This is in accordance with [the spec](https://tools.ietf.org/html/rfc7231#section-6.4.4). You can optionally turn on this behavior also for other redirect codes - see `methodRewriting`.
  22518 
  22519     @default true
  22520     */
  22521     get followRedirect() {
  22522         return this._internals.followRedirect;
  22523     }
  22524     set followRedirect(value) {
  22525         assert.boolean(value);
  22526         this._internals.followRedirect = value;
  22527     }
  22528     get followRedirects() {
  22529         throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');
  22530     }
  22531     set followRedirects(_value) {
  22532         throw new TypeError('The `followRedirects` option does not exist. Use `followRedirect` instead.');
  22533     }
  22534     /**
  22535     If exceeded, the request will be aborted and a `MaxRedirectsError` will be thrown.
  22536 
  22537     @default 10
  22538     */
  22539     get maxRedirects() {
  22540         return this._internals.maxRedirects;
  22541     }
  22542     set maxRedirects(value) {
  22543         assert.number(value);
  22544         this._internals.maxRedirects = value;
  22545     }
  22546     /**
  22547     A cache adapter instance for storing cached response data.
  22548 
  22549     @default false
  22550     */
  22551     get cache() {
  22552         return this._internals.cache;
  22553     }
  22554     set cache(value) {
  22555         assert.any([dist.object, dist.string, dist.boolean, dist.undefined], value);
  22556         if (value === true) {
  22557             this._internals.cache = globalCache;
  22558         }
  22559         else if (value === false) {
  22560             this._internals.cache = undefined;
  22561         }
  22562         else {
  22563             this._internals.cache = value;
  22564         }
  22565     }
  22566     /**
  22567     Determines if a `got.HTTPError` is thrown for unsuccessful responses.
  22568 
  22569     If this is disabled, requests that encounter an error status code will be resolved with the `response` instead of throwing.
  22570     This may be useful if you are checking for resource availability and are expecting error responses.
  22571 
  22572     @default true
  22573     */
  22574     get throwHttpErrors() {
  22575         return this._internals.throwHttpErrors;
  22576     }
  22577     set throwHttpErrors(value) {
  22578         assert.boolean(value);
  22579         this._internals.throwHttpErrors = value;
  22580     }
  22581     get username() {
  22582         const url = this._internals.url;
  22583         const value = url ? url.username : this._internals.username;
  22584         return decodeURIComponent(value);
  22585     }
  22586     set username(value) {
  22587         assert.string(value);
  22588         const url = this._internals.url;
  22589         const fixedValue = encodeURIComponent(value);
  22590         if (url) {
  22591             url.username = fixedValue;
  22592         }
  22593         else {
  22594             this._internals.username = fixedValue;
  22595         }
  22596     }
  22597     get password() {
  22598         const url = this._internals.url;
  22599         const value = url ? url.password : this._internals.password;
  22600         return decodeURIComponent(value);
  22601     }
  22602     set password(value) {
  22603         assert.string(value);
  22604         const url = this._internals.url;
  22605         const fixedValue = encodeURIComponent(value);
  22606         if (url) {
  22607             url.password = fixedValue;
  22608         }
  22609         else {
  22610             this._internals.password = fixedValue;
  22611         }
  22612     }
  22613     /**
  22614     If set to `true`, Got will additionally accept HTTP2 requests.
  22615 
  22616     It will choose either HTTP/1.1 or HTTP/2 depending on the ALPN protocol.
  22617 
  22618     __Note__: This option requires Node.js 15.10.0 or newer as HTTP/2 support on older Node.js versions is very buggy.
  22619 
  22620     __Note__: Overriding `options.request` will disable HTTP2 support.
  22621 
  22622     @default false
  22623 
  22624     @example
  22625     ```
  22626     import got from 'got';
  22627 
  22628     const {headers} = await got('https://nghttp2.org/httpbin/anything', {http2: true});
  22629 
  22630     console.log(headers.via);
  22631     //=> '2 nghttpx'
  22632     ```
  22633     */
  22634     get http2() {
  22635         return this._internals.http2;
  22636     }
  22637     set http2(value) {
  22638         assert.boolean(value);
  22639         this._internals.http2 = value;
  22640     }
  22641     /**
  22642     Set this to `true` to allow sending body for the `GET` method.
  22643     However, the [HTTP/2 specification](https://tools.ietf.org/html/rfc7540#section-8.1.3) says that `An HTTP GET request includes request header fields and no payload body`, therefore when using the HTTP/2 protocol this option will have no effect.
  22644     This option is only meant to interact with non-compliant servers when you have no other choice.
  22645 
  22646     __Note__: The [RFC 7231](https://tools.ietf.org/html/rfc7231#section-4.3.1) doesn't specify any particular behavior for the GET method having a payload, therefore __it's considered an [anti-pattern](https://en.wikipedia.org/wiki/Anti-pattern)__.
  22647 
  22648     @default false
  22649     */
  22650     get allowGetBody() {
  22651         return this._internals.allowGetBody;
  22652     }
  22653     set allowGetBody(value) {
  22654         assert.boolean(value);
  22655         this._internals.allowGetBody = value;
  22656     }
  22657     /**
  22658     Request headers.
  22659 
  22660     Existing headers will be overwritten. Headers set to `undefined` will be omitted.
  22661 
  22662     @default {}
  22663     */
  22664     get headers() {
  22665         return this._internals.headers;
  22666     }
  22667     set headers(value) {
  22668         assert.plainObject(value);
  22669         if (this._merging) {
  22670             Object.assign(this._internals.headers, lowercaseKeys(value));
  22671         }
  22672         else {
  22673             this._internals.headers = lowercaseKeys(value);
  22674         }
  22675     }
  22676     /**
  22677     Specifies if the HTTP request method should be [rewritten as `GET`](https://tools.ietf.org/html/rfc7231#section-6.4) on redirects.
  22678 
  22679     As the [specification](https://tools.ietf.org/html/rfc7231#section-6.4) prefers to rewrite the HTTP method only on `303` responses, this is Got's default behavior.
  22680     Setting `methodRewriting` to `true` will also rewrite `301` and `302` responses, as allowed by the spec. This is the behavior followed by `curl` and browsers.
  22681 
  22682     __Note__: Got never performs method rewriting on `307` and `308` responses, as this is [explicitly prohibited by the specification](https://www.rfc-editor.org/rfc/rfc7231#section-6.4.7).
  22683 
  22684     @default false
  22685     */
  22686     get methodRewriting() {
  22687         return this._internals.methodRewriting;
  22688     }
  22689     set methodRewriting(value) {
  22690         assert.boolean(value);
  22691         this._internals.methodRewriting = value;
  22692     }
  22693     /**
  22694     Indicates which DNS record family to use.
  22695 
  22696     Values:
  22697     - `undefined`: IPv4 (if present) or IPv6
  22698     - `4`: Only IPv4
  22699     - `6`: Only IPv6
  22700 
  22701     @default undefined
  22702     */
  22703     get dnsLookupIpVersion() {
  22704         return this._internals.dnsLookupIpVersion;
  22705     }
  22706     set dnsLookupIpVersion(value) {
  22707         if (value !== undefined && value !== 4 && value !== 6) {
  22708             throw new TypeError(`Invalid DNS lookup IP version: ${value}`);
  22709         }
  22710         this._internals.dnsLookupIpVersion = value;
  22711     }
  22712     /**
  22713     A function used to parse JSON responses.
  22714 
  22715     @example
  22716     ```
  22717     import got from 'got';
  22718     import Bourne from '@hapi/bourne';
  22719 
  22720     const parsed = await got('https://example.com', {
  22721         parseJson: text => Bourne.parse(text)
  22722     }).json();
  22723 
  22724     console.log(parsed);
  22725     ```
  22726     */
  22727     get parseJson() {
  22728         return this._internals.parseJson;
  22729     }
  22730     set parseJson(value) {
  22731         assert.function_(value);
  22732         this._internals.parseJson = value;
  22733     }
  22734     /**
  22735     A function used to stringify the body of JSON requests.
  22736 
  22737     @example
  22738     ```
  22739     import got from 'got';
  22740 
  22741     await got.post('https://example.com', {
  22742         stringifyJson: object => JSON.stringify(object, (key, value) => {
  22743             if (key.startsWith('_')) {
  22744                 return;
  22745             }
  22746 
  22747             return value;
  22748         }),
  22749         json: {
  22750             some: 'payload',
  22751             _ignoreMe: 1234
  22752         }
  22753     });
  22754     ```
  22755 
  22756     @example
  22757     ```
  22758     import got from 'got';
  22759 
  22760     await got.post('https://example.com', {
  22761         stringifyJson: object => JSON.stringify(object, (key, value) => {
  22762             if (typeof value === 'number') {
  22763                 return value.toString();
  22764             }
  22765 
  22766             return value;
  22767         }),
  22768         json: {
  22769             some: 'payload',
  22770             number: 1
  22771         }
  22772     });
  22773     ```
  22774     */
  22775     get stringifyJson() {
  22776         return this._internals.stringifyJson;
  22777     }
  22778     set stringifyJson(value) {
  22779         assert.function_(value);
  22780         this._internals.stringifyJson = value;
  22781     }
  22782     /**
  22783     An object representing `limit`, `calculateDelay`, `methods`, `statusCodes`, `maxRetryAfter` and `errorCodes` fields for maximum retry count, retry handler, allowed methods, allowed status codes, maximum [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) time and allowed error codes.
  22784 
  22785     Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 1).
  22786 
  22787     The `calculateDelay` property is a `function` that receives an object with `attemptCount`, `retryOptions`, `error` and `computedValue` properties for current retry count, the retry options, error and default computed value.
  22788     The function must return a delay in milliseconds (or a Promise resolving with it) (`0` return value cancels retry).
  22789 
  22790     By default, it retries *only* on the specified methods, status codes, and on these network errors:
  22791 
  22792     - `ETIMEDOUT`: One of the [timeout](#timeout) limits were reached.
  22793     - `ECONNRESET`: Connection was forcibly closed by a peer.
  22794     - `EADDRINUSE`: Could not bind to any free port.
  22795     - `ECONNREFUSED`: Connection was refused by the server.
  22796     - `EPIPE`: The remote side of the stream being written has been closed.
  22797     - `ENOTFOUND`: Couldn't resolve the hostname to an IP address.
  22798     - `ENETUNREACH`: No internet connection.
  22799     - `EAI_AGAIN`: DNS lookup timed out.
  22800 
  22801     __Note__: If `maxRetryAfter` is set to `undefined`, it will use `options.timeout`.
  22802     __Note__: If [`Retry-After`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) header is greater than `maxRetryAfter`, it will cancel the request.
  22803     */
  22804     get retry() {
  22805         return this._internals.retry;
  22806     }
  22807     set retry(value) {
  22808         assert.plainObject(value);
  22809         assert.any([dist.function_, dist.undefined], value.calculateDelay);
  22810         assert.any([dist.number, dist.undefined], value.maxRetryAfter);
  22811         assert.any([dist.number, dist.undefined], value.limit);
  22812         assert.any([dist.array, dist.undefined], value.methods);
  22813         assert.any([dist.array, dist.undefined], value.statusCodes);
  22814         assert.any([dist.array, dist.undefined], value.errorCodes);
  22815         assert.any([dist.number, dist.undefined], value.noise);
  22816         if (value.noise && Math.abs(value.noise) > 100) {
  22817             throw new Error(`The maximum acceptable retry noise is +/- 100ms, got ${value.noise}`);
  22818         }
  22819         for (const key in value) {
  22820             if (!(key in this._internals.retry)) {
  22821                 throw new Error(`Unexpected retry option: ${key}`);
  22822             }
  22823         }
  22824         if (this._merging) {
  22825             Object.assign(this._internals.retry, value);
  22826         }
  22827         else {
  22828             this._internals.retry = { ...value };
  22829         }
  22830         const { retry } = this._internals;
  22831         retry.methods = [...new Set(retry.methods.map(method => method.toUpperCase()))];
  22832         retry.statusCodes = [...new Set(retry.statusCodes)];
  22833         retry.errorCodes = [...new Set(retry.errorCodes)];
  22834     }
  22835     /**
  22836     From `http.RequestOptions`.
  22837 
  22838     The IP address used to send the request from.
  22839     */
  22840     get localAddress() {
  22841         return this._internals.localAddress;
  22842     }
  22843     set localAddress(value) {
  22844         assert.any([dist.string, dist.undefined], value);
  22845         this._internals.localAddress = value;
  22846     }
  22847     /**
  22848     The HTTP method used to make the request.
  22849 
  22850     @default 'GET'
  22851     */
  22852     get method() {
  22853         return this._internals.method;
  22854     }
  22855     set method(value) {
  22856         assert.string(value);
  22857         this._internals.method = value.toUpperCase();
  22858     }
  22859     get createConnection() {
  22860         return this._internals.createConnection;
  22861     }
  22862     set createConnection(value) {
  22863         assert.any([dist.function_, dist.undefined], value);
  22864         this._internals.createConnection = value;
  22865     }
  22866     /**
  22867     From `http-cache-semantics`
  22868 
  22869     @default {}
  22870     */
  22871     get cacheOptions() {
  22872         return this._internals.cacheOptions;
  22873     }
  22874     set cacheOptions(value) {
  22875         assert.plainObject(value);
  22876         assert.any([dist.boolean, dist.undefined], value.shared);
  22877         assert.any([dist.number, dist.undefined], value.cacheHeuristic);
  22878         assert.any([dist.number, dist.undefined], value.immutableMinTimeToLive);
  22879         assert.any([dist.boolean, dist.undefined], value.ignoreCargoCult);
  22880         for (const key in value) {
  22881             if (!(key in this._internals.cacheOptions)) {
  22882                 throw new Error(`Cache option \`${key}\` does not exist`);
  22883             }
  22884         }
  22885         if (this._merging) {
  22886             Object.assign(this._internals.cacheOptions, value);
  22887         }
  22888         else {
  22889             this._internals.cacheOptions = { ...value };
  22890         }
  22891     }
  22892     /**
  22893     Options for the advanced HTTPS API.
  22894     */
  22895     get https() {
  22896         return this._internals.https;
  22897     }
  22898     set https(value) {
  22899         assert.plainObject(value);
  22900         assert.any([dist.boolean, dist.undefined], value.rejectUnauthorized);
  22901         assert.any([dist.function_, dist.undefined], value.checkServerIdentity);
  22902         assert.any([dist.string, dist.object, dist.array, dist.undefined], value.certificateAuthority);
  22903         assert.any([dist.string, dist.object, dist.array, dist.undefined], value.key);
  22904         assert.any([dist.string, dist.object, dist.array, dist.undefined], value.certificate);
  22905         assert.any([dist.string, dist.undefined], value.passphrase);
  22906         assert.any([dist.string, dist.buffer, dist.array, dist.undefined], value.pfx);
  22907         assert.any([dist.array, dist.undefined], value.alpnProtocols);
  22908         assert.any([dist.string, dist.undefined], value.ciphers);
  22909         assert.any([dist.string, dist.buffer, dist.undefined], value.dhparam);
  22910         assert.any([dist.string, dist.undefined], value.signatureAlgorithms);
  22911         assert.any([dist.string, dist.undefined], value.minVersion);
  22912         assert.any([dist.string, dist.undefined], value.maxVersion);
  22913         assert.any([dist.boolean, dist.undefined], value.honorCipherOrder);
  22914         assert.any([dist.number, dist.undefined], value.tlsSessionLifetime);
  22915         assert.any([dist.string, dist.undefined], value.ecdhCurve);
  22916         assert.any([dist.string, dist.buffer, dist.array, dist.undefined], value.certificateRevocationLists);
  22917         for (const key in value) {
  22918             if (!(key in this._internals.https)) {
  22919                 throw new Error(`HTTPS option \`${key}\` does not exist`);
  22920             }
  22921         }
  22922         if (this._merging) {
  22923             Object.assign(this._internals.https, value);
  22924         }
  22925         else {
  22926             this._internals.https = { ...value };
  22927         }
  22928     }
  22929     /**
  22930     [Encoding](https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings) to be used on `setEncoding` of the response data.
  22931 
  22932     To get a [`Buffer`](https://nodejs.org/api/buffer.html), you need to set `responseType` to `buffer` instead.
  22933     Don't set this option to `null`.
  22934 
  22935     __Note__: This doesn't affect streams! Instead, you need to do `got.stream(...).setEncoding(encoding)`.
  22936 
  22937     @default 'utf-8'
  22938     */
  22939     get encoding() {
  22940         return this._internals.encoding;
  22941     }
  22942     set encoding(value) {
  22943         if (value === null) {
  22944             throw new TypeError('To get a Buffer, set `options.responseType` to `buffer` instead');
  22945         }
  22946         assert.any([dist.string, dist.undefined], value);
  22947         this._internals.encoding = value;
  22948     }
  22949     /**
  22950     When set to `true` the promise will return the Response body instead of the Response object.
  22951 
  22952     @default false
  22953     */
  22954     get resolveBodyOnly() {
  22955         return this._internals.resolveBodyOnly;
  22956     }
  22957     set resolveBodyOnly(value) {
  22958         assert.boolean(value);
  22959         this._internals.resolveBodyOnly = value;
  22960     }
  22961     /**
  22962     Returns a `Stream` instead of a `Promise`.
  22963     This is equivalent to calling `got.stream(url, options?)`.
  22964 
  22965     @default false
  22966     */
  22967     get isStream() {
  22968         return this._internals.isStream;
  22969     }
  22970     set isStream(value) {
  22971         assert.boolean(value);
  22972         this._internals.isStream = value;
  22973     }
  22974     /**
  22975     The parsing method.
  22976 
  22977     The promise also has `.text()`, `.json()` and `.buffer()` methods which return another Got promise for the parsed body.
  22978 
  22979     It's like setting the options to `{responseType: 'json', resolveBodyOnly: true}` but without affecting the main Got promise.
  22980 
  22981     __Note__: When using streams, this option is ignored.
  22982 
  22983     @example
  22984     ```
  22985     const responsePromise = got(url);
  22986     const bufferPromise = responsePromise.buffer();
  22987     const jsonPromise = responsePromise.json();
  22988 
  22989     const [response, buffer, json] = Promise.all([responsePromise, bufferPromise, jsonPromise]);
  22990     // `response` is an instance of Got Response
  22991     // `buffer` is an instance of Buffer
  22992     // `json` is an object
  22993     ```
  22994 
  22995     @example
  22996     ```
  22997     // This
  22998     const body = await got(url).json();
  22999 
  23000     // is semantically the same as this
  23001     const body = await got(url, {responseType: 'json', resolveBodyOnly: true});
  23002     ```
  23003     */
  23004     get responseType() {
  23005         return this._internals.responseType;
  23006     }
  23007     set responseType(value) {
  23008         if (value === undefined) {
  23009             this._internals.responseType = 'text';
  23010             return;
  23011         }
  23012         if (value !== 'text' && value !== 'buffer' && value !== 'json') {
  23013             throw new Error(`Invalid \`responseType\` option: ${value}`);
  23014         }
  23015         this._internals.responseType = value;
  23016     }
  23017     get pagination() {
  23018         return this._internals.pagination;
  23019     }
  23020     set pagination(value) {
  23021         assert.object(value);
  23022         if (this._merging) {
  23023             Object.assign(this._internals.pagination, value);
  23024         }
  23025         else {
  23026             this._internals.pagination = value;
  23027         }
  23028     }
  23029     get auth() {
  23030         throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');
  23031     }
  23032     set auth(_value) {
  23033         throw new Error('Parameter `auth` is deprecated. Use `username` / `password` instead.');
  23034     }
  23035     get setHost() {
  23036         return this._internals.setHost;
  23037     }
  23038     set setHost(value) {
  23039         assert.boolean(value);
  23040         this._internals.setHost = value;
  23041     }
  23042     get maxHeaderSize() {
  23043         return this._internals.maxHeaderSize;
  23044     }
  23045     set maxHeaderSize(value) {
  23046         assert.any([dist.number, dist.undefined], value);
  23047         this._internals.maxHeaderSize = value;
  23048     }
  23049     get enableUnixSockets() {
  23050         return this._internals.enableUnixSockets;
  23051     }
  23052     set enableUnixSockets(value) {
  23053         assert.boolean(value);
  23054         this._internals.enableUnixSockets = value;
  23055     }
  23056     // eslint-disable-next-line @typescript-eslint/naming-convention
  23057     toJSON() {
  23058         return { ...this._internals };
  23059     }
  23060     [Symbol.for('nodejs.util.inspect.custom')](_depth, options) {
  23061         return (0,external_node_util_namespaceObject.inspect)(this._internals, options);
  23062     }
  23063     createNativeRequestOptions() {
  23064         const internals = this._internals;
  23065         const url = internals.url;
  23066         let agent;
  23067         if (url.protocol === 'https:') {
  23068             agent = internals.http2 ? internals.agent : internals.agent.https;
  23069         }
  23070         else {
  23071             agent = internals.agent.http;
  23072         }
  23073         const { https } = internals;
  23074         let { pfx } = https;
  23075         if (dist.array(pfx) && dist.plainObject(pfx[0])) {
  23076             pfx = pfx.map(object => ({
  23077                 buf: object.buffer,
  23078                 passphrase: object.passphrase,
  23079             }));
  23080         }
  23081         return {
  23082             ...internals.cacheOptions,
  23083             ...this._unixOptions,
  23084             // HTTPS options
  23085             // eslint-disable-next-line @typescript-eslint/naming-convention
  23086             ALPNProtocols: https.alpnProtocols,
  23087             ca: https.certificateAuthority,
  23088             cert: https.certificate,
  23089             key: https.key,
  23090             passphrase: https.passphrase,
  23091             pfx: https.pfx,
  23092             rejectUnauthorized: https.rejectUnauthorized,
  23093             checkServerIdentity: https.checkServerIdentity ?? external_node_tls_namespaceObject.checkServerIdentity,
  23094             ciphers: https.ciphers,
  23095             honorCipherOrder: https.honorCipherOrder,
  23096             minVersion: https.minVersion,
  23097             maxVersion: https.maxVersion,
  23098             sigalgs: https.signatureAlgorithms,
  23099             sessionTimeout: https.tlsSessionLifetime,
  23100             dhparam: https.dhparam,
  23101             ecdhCurve: https.ecdhCurve,
  23102             crl: https.certificateRevocationLists,
  23103             // HTTP options
  23104             lookup: internals.dnsLookup ?? internals.dnsCache?.lookup,
  23105             family: internals.dnsLookupIpVersion,
  23106             agent,
  23107             setHost: internals.setHost,
  23108             method: internals.method,
  23109             maxHeaderSize: internals.maxHeaderSize,
  23110             localAddress: internals.localAddress,
  23111             headers: internals.headers,
  23112             createConnection: internals.createConnection,
  23113             timeout: internals.http2 ? getHttp2TimeoutOption(internals) : undefined,
  23114             // HTTP/2 options
  23115             h2session: internals.h2session,
  23116         };
  23117     }
  23118     getRequestFunction() {
  23119         const url = this._internals.url;
  23120         const { request } = this._internals;
  23121         if (!request && url) {
  23122             return this.getFallbackRequestFunction();
  23123         }
  23124         return request;
  23125     }
  23126     getFallbackRequestFunction() {
  23127         const url = this._internals.url;
  23128         if (!url) {
  23129             return;
  23130         }
  23131         if (url.protocol === 'https:') {
  23132             if (this._internals.http2) {
  23133                 if (major < 15 || (major === 15 && minor < 10)) {
  23134                     const error = new Error('To use the `http2` option, install Node.js 15.10.0 or above');
  23135                     error.code = 'EUNSUPPORTED';
  23136                     throw error;
  23137                 }
  23138                 return http2_wrapper_source.auto;
  23139             }
  23140             return external_node_https_namespaceObject.request;
  23141         }
  23142         return external_node_http_namespaceObject.request;
  23143     }
  23144     freeze() {
  23145         const options = this._internals;
  23146         Object.freeze(options);
  23147         Object.freeze(options.hooks);
  23148         Object.freeze(options.hooks.afterResponse);
  23149         Object.freeze(options.hooks.beforeError);
  23150         Object.freeze(options.hooks.beforeRedirect);
  23151         Object.freeze(options.hooks.beforeRequest);
  23152         Object.freeze(options.hooks.beforeRetry);
  23153         Object.freeze(options.hooks.init);
  23154         Object.freeze(options.https);
  23155         Object.freeze(options.cacheOptions);
  23156         Object.freeze(options.agent);
  23157         Object.freeze(options.headers);
  23158         Object.freeze(options.timeout);
  23159         Object.freeze(options.retry);
  23160         Object.freeze(options.retry.errorCodes);
  23161         Object.freeze(options.retry.methods);
  23162         Object.freeze(options.retry.statusCodes);
  23163     }
  23164 }
  23165 
  23166 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/response.js
  23167 
  23168 const isResponseOk = (response) => {
  23169     const { statusCode } = response;
  23170     const limitStatusCode = response.request.options.followRedirect ? 299 : 399;
  23171     return (statusCode >= 200 && statusCode <= limitStatusCode) || statusCode === 304;
  23172 };
  23173 /**
  23174 An error to be thrown when server response code is 2xx, and parsing body fails.
  23175 Includes a `response` property.
  23176 */
  23177 class ParseError extends RequestError {
  23178     constructor(error, response) {
  23179         const { options } = response.request;
  23180         super(`${error.message} in "${options.url.toString()}"`, error, response.request);
  23181         this.name = 'ParseError';
  23182         this.code = 'ERR_BODY_PARSE_FAILURE';
  23183     }
  23184 }
  23185 const parseBody = (response, responseType, parseJson, encoding) => {
  23186     const { rawBody } = response;
  23187     try {
  23188         if (responseType === 'text') {
  23189             return rawBody.toString(encoding);
  23190         }
  23191         if (responseType === 'json') {
  23192             return rawBody.length === 0 ? '' : parseJson(rawBody.toString(encoding));
  23193         }
  23194         if (responseType === 'buffer') {
  23195             return rawBody;
  23196         }
  23197     }
  23198     catch (error) {
  23199         throw new ParseError(error, response);
  23200     }
  23201     throw new ParseError({
  23202         message: `Unknown body type '${responseType}'`,
  23203         name: 'Error',
  23204     }, response);
  23205 };
  23206 
  23207 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/is-client-request.js
  23208 function isClientRequest(clientRequest) {
  23209     return clientRequest.writable && !clientRequest.writableEnded;
  23210 }
  23211 /* harmony default export */ const is_client_request = (isClientRequest);
  23212 
  23213 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/utils/is-unix-socket-url.js
  23214 // eslint-disable-next-line @typescript-eslint/naming-convention
  23215 function isUnixSocketURL(url) {
  23216     return url.protocol === 'unix:' || url.hostname === 'unix';
  23217 }
  23218 
  23219 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/core/index.js
  23220 
  23221 
  23222 
  23223 
  23224 
  23225 
  23226 
  23227 
  23228 
  23229 
  23230 
  23231 
  23232 
  23233 
  23234 
  23235 
  23236 
  23237 
  23238 
  23239 
  23240 
  23241 
  23242 const { buffer: getStreamAsBuffer } = get_stream;
  23243 const supportsBrotli = dist.string(external_node_process_namespaceObject.versions.brotli);
  23244 const methodsWithoutBody = new Set(['GET', 'HEAD']);
  23245 const cacheableStore = new WeakableMap();
  23246 const redirectCodes = new Set([300, 301, 302, 303, 304, 307, 308]);
  23247 const proxiedRequestEvents = [
  23248     'socket',
  23249     'connect',
  23250     'continue',
  23251     'information',
  23252     'upgrade',
  23253 ];
  23254 const core_noop = () => { };
  23255 class Request extends external_node_stream_namespaceObject.Duplex {
  23256     constructor(url, options, defaults) {
  23257         super({
  23258             // Don't destroy immediately, as the error may be emitted on unsuccessful retry
  23259             autoDestroy: false,
  23260             // It needs to be zero because we're just proxying the data to another stream
  23261             highWaterMark: 0,
  23262         });
  23263         // @ts-expect-error - Ignoring for now.
  23264         Object.defineProperty(this, 'constructor', {
  23265             enumerable: true,
  23266             configurable: true,
  23267             writable: true,
  23268             value: void 0
  23269         });
  23270         Object.defineProperty(this, "_noPipe", {
  23271             enumerable: true,
  23272             configurable: true,
  23273             writable: true,
  23274             value: void 0
  23275         });
  23276         // @ts-expect-error https://github.com/microsoft/TypeScript/issues/9568
  23277         Object.defineProperty(this, "options", {
  23278             enumerable: true,
  23279             configurable: true,
  23280             writable: true,
  23281             value: void 0
  23282         });
  23283         Object.defineProperty(this, "response", {
  23284             enumerable: true,
  23285             configurable: true,
  23286             writable: true,
  23287             value: void 0
  23288         });
  23289         Object.defineProperty(this, "requestUrl", {
  23290             enumerable: true,
  23291             configurable: true,
  23292             writable: true,
  23293             value: void 0
  23294         });
  23295         Object.defineProperty(this, "redirectUrls", {
  23296             enumerable: true,
  23297             configurable: true,
  23298             writable: true,
  23299             value: void 0
  23300         });
  23301         Object.defineProperty(this, "retryCount", {
  23302             enumerable: true,
  23303             configurable: true,
  23304             writable: true,
  23305             value: void 0
  23306         });
  23307         Object.defineProperty(this, "_stopRetry", {
  23308             enumerable: true,
  23309             configurable: true,
  23310             writable: true,
  23311             value: void 0
  23312         });
  23313         Object.defineProperty(this, "_downloadedSize", {
  23314             enumerable: true,
  23315             configurable: true,
  23316             writable: true,
  23317             value: void 0
  23318         });
  23319         Object.defineProperty(this, "_uploadedSize", {
  23320             enumerable: true,
  23321             configurable: true,
  23322             writable: true,
  23323             value: void 0
  23324         });
  23325         Object.defineProperty(this, "_stopReading", {
  23326             enumerable: true,
  23327             configurable: true,
  23328             writable: true,
  23329             value: void 0
  23330         });
  23331         Object.defineProperty(this, "_pipedServerResponses", {
  23332             enumerable: true,
  23333             configurable: true,
  23334             writable: true,
  23335             value: void 0
  23336         });
  23337         Object.defineProperty(this, "_request", {
  23338             enumerable: true,
  23339             configurable: true,
  23340             writable: true,
  23341             value: void 0
  23342         });
  23343         Object.defineProperty(this, "_responseSize", {
  23344             enumerable: true,
  23345             configurable: true,
  23346             writable: true,
  23347             value: void 0
  23348         });
  23349         Object.defineProperty(this, "_bodySize", {
  23350             enumerable: true,
  23351             configurable: true,
  23352             writable: true,
  23353             value: void 0
  23354         });
  23355         Object.defineProperty(this, "_unproxyEvents", {
  23356             enumerable: true,
  23357             configurable: true,
  23358             writable: true,
  23359             value: void 0
  23360         });
  23361         Object.defineProperty(this, "_isFromCache", {
  23362             enumerable: true,
  23363             configurable: true,
  23364             writable: true,
  23365             value: void 0
  23366         });
  23367         Object.defineProperty(this, "_cannotHaveBody", {
  23368             enumerable: true,
  23369             configurable: true,
  23370             writable: true,
  23371             value: void 0
  23372         });
  23373         Object.defineProperty(this, "_triggerRead", {
  23374             enumerable: true,
  23375             configurable: true,
  23376             writable: true,
  23377             value: void 0
  23378         });
  23379         Object.defineProperty(this, "_cancelTimeouts", {
  23380             enumerable: true,
  23381             configurable: true,
  23382             writable: true,
  23383             value: void 0
  23384         });
  23385         Object.defineProperty(this, "_removeListeners", {
  23386             enumerable: true,
  23387             configurable: true,
  23388             writable: true,
  23389             value: void 0
  23390         });
  23391         Object.defineProperty(this, "_nativeResponse", {
  23392             enumerable: true,
  23393             configurable: true,
  23394             writable: true,
  23395             value: void 0
  23396         });
  23397         Object.defineProperty(this, "_flushed", {
  23398             enumerable: true,
  23399             configurable: true,
  23400             writable: true,
  23401             value: void 0
  23402         });
  23403         Object.defineProperty(this, "_aborted", {
  23404             enumerable: true,
  23405             configurable: true,
  23406             writable: true,
  23407             value: void 0
  23408         });
  23409         // We need this because `this._request` if `undefined` when using cache
  23410         Object.defineProperty(this, "_requestInitialized", {
  23411             enumerable: true,
  23412             configurable: true,
  23413             writable: true,
  23414             value: void 0
  23415         });
  23416         this._downloadedSize = 0;
  23417         this._uploadedSize = 0;
  23418         this._stopReading = false;
  23419         this._pipedServerResponses = new Set();
  23420         this._cannotHaveBody = false;
  23421         this._unproxyEvents = core_noop;
  23422         this._triggerRead = false;
  23423         this._cancelTimeouts = core_noop;
  23424         this._removeListeners = core_noop;
  23425         this._jobs = [];
  23426         this._flushed = false;
  23427         this._requestInitialized = false;
  23428         this._aborted = false;
  23429         this.redirectUrls = [];
  23430         this.retryCount = 0;
  23431         this._stopRetry = core_noop;
  23432         this.on('pipe', (source) => {
  23433             if (source?.headers) {
  23434                 Object.assign(this.options.headers, source.headers);
  23435             }
  23436         });
  23437         this.on('newListener', event => {
  23438             if (event === 'retry' && this.listenerCount('retry') > 0) {
  23439                 throw new Error('A retry listener has been attached already.');
  23440             }
  23441         });
  23442         try {
  23443             this.options = new Options(url, options, defaults);
  23444             if (!this.options.url) {
  23445                 if (this.options.prefixUrl === '') {
  23446                     throw new TypeError('Missing `url` property');
  23447                 }
  23448                 this.options.url = '';
  23449             }
  23450             this.requestUrl = this.options.url;
  23451         }
  23452         catch (error) {
  23453             const { options } = error;
  23454             if (options) {
  23455                 this.options = options;
  23456             }
  23457             this.flush = async () => {
  23458                 this.flush = async () => { };
  23459                 this.destroy(error);
  23460             };
  23461             return;
  23462         }
  23463         // Important! If you replace `body` in a handler with another stream, make sure it's readable first.
  23464         // The below is run only once.
  23465         const { body } = this.options;
  23466         if (dist.nodeStream(body)) {
  23467             body.once('error', error => {
  23468                 if (this._flushed) {
  23469                     this._beforeError(new UploadError(error, this));
  23470                 }
  23471                 else {
  23472                     this.flush = async () => {
  23473                         this.flush = async () => { };
  23474                         this._beforeError(new UploadError(error, this));
  23475                     };
  23476                 }
  23477             });
  23478         }
  23479         if (this.options.signal) {
  23480             const abort = () => {
  23481                 this.destroy(new AbortError(this));
  23482             };
  23483             if (this.options.signal.aborted) {
  23484                 abort();
  23485             }
  23486             else {
  23487                 this.options.signal.addEventListener('abort', abort);
  23488                 this._removeListeners = () => {
  23489                     this.options.signal?.removeEventListener('abort', abort);
  23490                 };
  23491             }
  23492         }
  23493     }
  23494     async flush() {
  23495         if (this._flushed) {
  23496             return;
  23497         }
  23498         this._flushed = true;
  23499         try {
  23500             await this._finalizeBody();
  23501             if (this.destroyed) {
  23502                 return;
  23503             }
  23504             await this._makeRequest();
  23505             if (this.destroyed) {
  23506                 this._request?.destroy();
  23507                 return;
  23508             }
  23509             // Queued writes etc.
  23510             for (const job of this._jobs) {
  23511                 job();
  23512             }
  23513             // Prevent memory leak
  23514             this._jobs.length = 0;
  23515             this._requestInitialized = true;
  23516         }
  23517         catch (error) {
  23518             this._beforeError(error);
  23519         }
  23520     }
  23521     _beforeError(error) {
  23522         if (this._stopReading) {
  23523             return;
  23524         }
  23525         const { response, options } = this;
  23526         const attemptCount = this.retryCount + (error.name === 'RetryError' ? 0 : 1);
  23527         this._stopReading = true;
  23528         if (!(error instanceof RequestError)) {
  23529             error = new RequestError(error.message, error, this);
  23530         }
  23531         const typedError = error;
  23532         void (async () => {
  23533             // Node.js parser is really weird.
  23534             // It emits post-request Parse Errors on the same instance as previous request. WTF.
  23535             // Therefore we need to check if it has been destroyed as well.
  23536             //
  23537             // Furthermore, Node.js 16 `response.destroy()` doesn't immediately destroy the socket,
  23538             // but makes the response unreadable. So we additionally need to check `response.readable`.
  23539             if (response?.readable && !response.rawBody && !this._request?.socket?.destroyed) {
  23540                 // @types/node has incorrect typings. `setEncoding` accepts `null` as well.
  23541                 response.setEncoding(this.readableEncoding);
  23542                 const success = await this._setRawBody(response);
  23543                 if (success) {
  23544                     response.body = response.rawBody.toString();
  23545                 }
  23546             }
  23547             if (this.listenerCount('retry') !== 0) {
  23548                 let backoff;
  23549                 try {
  23550                     let retryAfter;
  23551                     if (response && 'retry-after' in response.headers) {
  23552                         retryAfter = Number(response.headers['retry-after']);
  23553                         if (Number.isNaN(retryAfter)) {
  23554                             retryAfter = Date.parse(response.headers['retry-after']) - Date.now();
  23555                             if (retryAfter <= 0) {
  23556                                 retryAfter = 1;
  23557                             }
  23558                         }
  23559                         else {
  23560                             retryAfter *= 1000;
  23561                         }
  23562                     }
  23563                     const retryOptions = options.retry;
  23564                     backoff = await retryOptions.calculateDelay({
  23565                         attemptCount,
  23566                         retryOptions,
  23567                         error: typedError,
  23568                         retryAfter,
  23569                         computedValue: calculate_retry_delay({
  23570                             attemptCount,
  23571                             retryOptions,
  23572                             error: typedError,
  23573                             retryAfter,
  23574                             computedValue: retryOptions.maxRetryAfter ?? options.timeout.request ?? Number.POSITIVE_INFINITY,
  23575                         }),
  23576                     });
  23577                 }
  23578                 catch (error_) {
  23579                     void this._error(new RequestError(error_.message, error_, this));
  23580                     return;
  23581                 }
  23582                 if (backoff) {
  23583                     await new Promise(resolve => {
  23584                         const timeout = setTimeout(resolve, backoff);
  23585                         this._stopRetry = () => {
  23586                             clearTimeout(timeout);
  23587                             resolve();
  23588                         };
  23589                     });
  23590                     // Something forced us to abort the retry
  23591                     if (this.destroyed) {
  23592                         return;
  23593                     }
  23594                     try {
  23595                         for (const hook of this.options.hooks.beforeRetry) {
  23596                             // eslint-disable-next-line no-await-in-loop
  23597                             await hook(typedError, this.retryCount + 1);
  23598                         }
  23599                     }
  23600                     catch (error_) {
  23601                         void this._error(new RequestError(error_.message, error, this));
  23602                         return;
  23603                     }
  23604                     // Something forced us to abort the retry
  23605                     if (this.destroyed) {
  23606                         return;
  23607                     }
  23608                     this.destroy();
  23609                     this.emit('retry', this.retryCount + 1, error, (updatedOptions) => {
  23610                         const request = new Request(options.url, updatedOptions, options);
  23611                         request.retryCount = this.retryCount + 1;
  23612                         external_node_process_namespaceObject.nextTick(() => {
  23613                             void request.flush();
  23614                         });
  23615                         return request;
  23616                     });
  23617                     return;
  23618                 }
  23619             }
  23620             void this._error(typedError);
  23621         })();
  23622     }
  23623     _read() {
  23624         this._triggerRead = true;
  23625         const { response } = this;
  23626         if (response && !this._stopReading) {
  23627             // We cannot put this in the `if` above
  23628             // because `.read()` also triggers the `end` event
  23629             if (response.readableLength) {
  23630                 this._triggerRead = false;
  23631             }
  23632             let data;
  23633             while ((data = response.read()) !== null) {
  23634                 this._downloadedSize += data.length; // eslint-disable-line @typescript-eslint/restrict-plus-operands
  23635                 const progress = this.downloadProgress;
  23636                 if (progress.percent < 1) {
  23637                     this.emit('downloadProgress', progress);
  23638                 }
  23639                 this.push(data);
  23640             }
  23641         }
  23642     }
  23643     _write(chunk, encoding, callback) {
  23644         const write = () => {
  23645             this._writeRequest(chunk, encoding, callback);
  23646         };
  23647         if (this._requestInitialized) {
  23648             write();
  23649         }
  23650         else {
  23651             this._jobs.push(write);
  23652         }
  23653     }
  23654     _final(callback) {
  23655         const endRequest = () => {
  23656             // We need to check if `this._request` is present,
  23657             // because it isn't when we use cache.
  23658             if (!this._request || this._request.destroyed) {
  23659                 callback();
  23660                 return;
  23661             }
  23662             this._request.end((error) => {
  23663                 // The request has been destroyed before `_final` finished.
  23664                 // See https://github.com/nodejs/node/issues/39356
  23665                 if (this._request._writableState?.errored) {
  23666                     return;
  23667                 }
  23668                 if (!error) {
  23669                     this._bodySize = this._uploadedSize;
  23670                     this.emit('uploadProgress', this.uploadProgress);
  23671                     this._request.emit('upload-complete');
  23672                 }
  23673                 callback(error);
  23674             });
  23675         };
  23676         if (this._requestInitialized) {
  23677             endRequest();
  23678         }
  23679         else {
  23680             this._jobs.push(endRequest);
  23681         }
  23682     }
  23683     _destroy(error, callback) {
  23684         this._stopReading = true;
  23685         this.flush = async () => { };
  23686         // Prevent further retries
  23687         this._stopRetry();
  23688         this._cancelTimeouts();
  23689         this._removeListeners();
  23690         if (this.options) {
  23691             const { body } = this.options;
  23692             if (dist.nodeStream(body)) {
  23693                 body.destroy();
  23694             }
  23695         }
  23696         if (this._request) {
  23697             this._request.destroy();
  23698         }
  23699         if (error !== null && !dist.undefined(error) && !(error instanceof RequestError)) {
  23700             error = new RequestError(error.message, error, this);
  23701         }
  23702         callback(error);
  23703     }
  23704     pipe(destination, options) {
  23705         if (destination instanceof external_node_http_namespaceObject.ServerResponse) {
  23706             this._pipedServerResponses.add(destination);
  23707         }
  23708         return super.pipe(destination, options);
  23709     }
  23710     unpipe(destination) {
  23711         if (destination instanceof external_node_http_namespaceObject.ServerResponse) {
  23712             this._pipedServerResponses.delete(destination);
  23713         }
  23714         super.unpipe(destination);
  23715         return this;
  23716     }
  23717     async _finalizeBody() {
  23718         const { options } = this;
  23719         const { headers } = options;
  23720         const isForm = !dist.undefined(options.form);
  23721         // eslint-disable-next-line @typescript-eslint/naming-convention
  23722         const isJSON = !dist.undefined(options.json);
  23723         const isBody = !dist.undefined(options.body);
  23724         const cannotHaveBody = methodsWithoutBody.has(options.method) && !(options.method === 'GET' && options.allowGetBody);
  23725         this._cannotHaveBody = cannotHaveBody;
  23726         if (isForm || isJSON || isBody) {
  23727             if (cannotHaveBody) {
  23728                 throw new TypeError(`The \`${options.method}\` method cannot be used with a body`);
  23729             }
  23730             // Serialize body
  23731             const noContentType = !dist.string(headers['content-type']);
  23732             if (isBody) {
  23733                 // Body is spec-compliant FormData
  23734                 if (isFormData(options.body)) {
  23735                     const encoder = new FormDataEncoder(options.body);
  23736                     if (noContentType) {
  23737                         headers['content-type'] = encoder.headers['Content-Type'];
  23738                     }
  23739                     if ('Content-Length' in encoder.headers) {
  23740                         headers['content-length'] = encoder.headers['Content-Length'];
  23741                     }
  23742                     options.body = encoder.encode();
  23743                 }
  23744                 // Special case for https://github.com/form-data/form-data
  23745                 if (is_form_data_isFormData(options.body) && noContentType) {
  23746                     headers['content-type'] = `multipart/form-data; boundary=${options.body.getBoundary()}`;
  23747                 }
  23748             }
  23749             else if (isForm) {
  23750                 if (noContentType) {
  23751                     headers['content-type'] = 'application/x-www-form-urlencoded';
  23752                 }
  23753                 const { form } = options;
  23754                 options.form = undefined;
  23755                 options.body = (new URLSearchParams(form)).toString();
  23756             }
  23757             else {
  23758                 if (noContentType) {
  23759                     headers['content-type'] = 'application/json';
  23760                 }
  23761                 const { json } = options;
  23762                 options.json = undefined;
  23763                 options.body = options.stringifyJson(json);
  23764             }
  23765             const uploadBodySize = await getBodySize(options.body, options.headers);
  23766             // See https://tools.ietf.org/html/rfc7230#section-3.3.2
  23767             // A user agent SHOULD send a Content-Length in a request message when
  23768             // no Transfer-Encoding is sent and the request method defines a meaning
  23769             // for an enclosed payload body.  For example, a Content-Length header
  23770             // field is normally sent in a POST request even when the value is 0
  23771             // (indicating an empty payload body).  A user agent SHOULD NOT send a
  23772             // Content-Length header field when the request message does not contain
  23773             // a payload body and the method semantics do not anticipate such a
  23774             // body.
  23775             if (dist.undefined(headers['content-length']) && dist.undefined(headers['transfer-encoding']) && !cannotHaveBody && !dist.undefined(uploadBodySize)) {
  23776                 headers['content-length'] = String(uploadBodySize);
  23777             }
  23778         }
  23779         if (options.responseType === 'json' && !('accept' in options.headers)) {
  23780             options.headers.accept = 'application/json';
  23781         }
  23782         this._bodySize = Number(headers['content-length']) || undefined;
  23783     }
  23784     async _onResponseBase(response) {
  23785         // This will be called e.g. when using cache so we need to check if this request has been aborted.
  23786         if (this.isAborted) {
  23787             return;
  23788         }
  23789         const { options } = this;
  23790         const { url } = options;
  23791         this._nativeResponse = response;
  23792         if (options.decompress) {
  23793             response = decompress_response(response);
  23794         }
  23795         const statusCode = response.statusCode;
  23796         const typedResponse = response;
  23797         typedResponse.statusMessage = typedResponse.statusMessage ?? external_node_http_namespaceObject.STATUS_CODES[statusCode];
  23798         typedResponse.url = options.url.toString();
  23799         typedResponse.requestUrl = this.requestUrl;
  23800         typedResponse.redirectUrls = this.redirectUrls;
  23801         typedResponse.request = this;
  23802         typedResponse.isFromCache = this._nativeResponse.fromCache ?? false;
  23803         typedResponse.ip = this.ip;
  23804         typedResponse.retryCount = this.retryCount;
  23805         typedResponse.ok = isResponseOk(typedResponse);
  23806         this._isFromCache = typedResponse.isFromCache;
  23807         this._responseSize = Number(response.headers['content-length']) || undefined;
  23808         this.response = typedResponse;
  23809         response.once('end', () => {
  23810             this._responseSize = this._downloadedSize;
  23811             this.emit('downloadProgress', this.downloadProgress);
  23812         });
  23813         response.once('error', (error) => {
  23814             this._aborted = true;
  23815             // Force clean-up, because some packages don't do this.
  23816             // TODO: Fix decompress-response
  23817             response.destroy();
  23818             this._beforeError(new ReadError(error, this));
  23819         });
  23820         response.once('aborted', () => {
  23821             this._aborted = true;
  23822             this._beforeError(new ReadError({
  23823                 name: 'Error',
  23824                 message: 'The server aborted pending request',
  23825                 code: 'ECONNRESET',
  23826             }, this));
  23827         });
  23828         this.emit('downloadProgress', this.downloadProgress);
  23829         const rawCookies = response.headers['set-cookie'];
  23830         if (dist.object(options.cookieJar) && rawCookies) {
  23831             let promises = rawCookies.map(async (rawCookie) => options.cookieJar.setCookie(rawCookie, url.toString()));
  23832             if (options.ignoreInvalidCookies) {
  23833                 promises = promises.map(async (promise) => {
  23834                     try {
  23835                         await promise;
  23836                     }
  23837                     catch { }
  23838                 });
  23839             }
  23840             try {
  23841                 await Promise.all(promises);
  23842             }
  23843             catch (error) {
  23844                 this._beforeError(error);
  23845                 return;
  23846             }
  23847         }
  23848         // The above is running a promise, therefore we need to check if this request has been aborted yet again.
  23849         if (this.isAborted) {
  23850             return;
  23851         }
  23852         if (options.followRedirect && response.headers.location && redirectCodes.has(statusCode)) {
  23853             // We're being redirected, we don't care about the response.
  23854             // It'd be best to abort the request, but we can't because
  23855             // we would have to sacrifice the TCP connection. We don't want that.
  23856             response.resume();
  23857             this._cancelTimeouts();
  23858             this._unproxyEvents();
  23859             if (this.redirectUrls.length >= options.maxRedirects) {
  23860                 this._beforeError(new MaxRedirectsError(this));
  23861                 return;
  23862             }
  23863             this._request = undefined;
  23864             const updatedOptions = new Options(undefined, undefined, this.options);
  23865             const serverRequestedGet = statusCode === 303 && updatedOptions.method !== 'GET' && updatedOptions.method !== 'HEAD';
  23866             const canRewrite = statusCode !== 307 && statusCode !== 308;
  23867             const userRequestedGet = updatedOptions.methodRewriting && canRewrite;
  23868             if (serverRequestedGet || userRequestedGet) {
  23869                 updatedOptions.method = 'GET';
  23870                 updatedOptions.body = undefined;
  23871                 updatedOptions.json = undefined;
  23872                 updatedOptions.form = undefined;
  23873                 delete updatedOptions.headers['content-length'];
  23874             }
  23875             try {
  23876                 // We need this in order to support UTF-8
  23877                 const redirectBuffer = external_node_buffer_namespaceObject.Buffer.from(response.headers.location, 'binary').toString();
  23878                 const redirectUrl = new URL(redirectBuffer, url);
  23879                 if (!isUnixSocketURL(url) && isUnixSocketURL(redirectUrl)) {
  23880                     this._beforeError(new RequestError('Cannot redirect to UNIX socket', {}, this));
  23881                     return;
  23882                 }
  23883                 // Redirecting to a different site, clear sensitive data.
  23884                 if (redirectUrl.hostname !== url.hostname || redirectUrl.port !== url.port) {
  23885                     if ('host' in updatedOptions.headers) {
  23886                         delete updatedOptions.headers.host;
  23887                     }
  23888                     if ('cookie' in updatedOptions.headers) {
  23889                         delete updatedOptions.headers.cookie;
  23890                     }
  23891                     if ('authorization' in updatedOptions.headers) {
  23892                         delete updatedOptions.headers.authorization;
  23893                     }
  23894                     if (updatedOptions.username || updatedOptions.password) {
  23895                         updatedOptions.username = '';
  23896                         updatedOptions.password = '';
  23897                     }
  23898                 }
  23899                 else {
  23900                     redirectUrl.username = updatedOptions.username;
  23901                     redirectUrl.password = updatedOptions.password;
  23902                 }
  23903                 this.redirectUrls.push(redirectUrl);
  23904                 updatedOptions.prefixUrl = '';
  23905                 updatedOptions.url = redirectUrl;
  23906                 for (const hook of updatedOptions.hooks.beforeRedirect) {
  23907                     // eslint-disable-next-line no-await-in-loop
  23908                     await hook(updatedOptions, typedResponse);
  23909                 }
  23910                 this.emit('redirect', updatedOptions, typedResponse);
  23911                 this.options = updatedOptions;
  23912                 await this._makeRequest();
  23913             }
  23914             catch (error) {
  23915                 this._beforeError(error);
  23916                 return;
  23917             }
  23918             return;
  23919         }
  23920         // `HTTPError`s always have `error.response.body` defined.
  23921         // Therefore we cannot retry if `options.throwHttpErrors` is false.
  23922         // On the last retry, if `options.throwHttpErrors` is false, we would need to return the body,
  23923         // but that wouldn't be possible since the body would be already read in `error.response.body`.
  23924         if (options.isStream && options.throwHttpErrors && !isResponseOk(typedResponse)) {
  23925             this._beforeError(new HTTPError(typedResponse));
  23926             return;
  23927         }
  23928         response.on('readable', () => {
  23929             if (this._triggerRead) {
  23930                 this._read();
  23931             }
  23932         });
  23933         this.on('resume', () => {
  23934             response.resume();
  23935         });
  23936         this.on('pause', () => {
  23937             response.pause();
  23938         });
  23939         response.once('end', () => {
  23940             this.push(null);
  23941         });
  23942         if (this._noPipe) {
  23943             const success = await this._setRawBody();
  23944             if (success) {
  23945                 this.emit('response', response);
  23946             }
  23947             return;
  23948         }
  23949         this.emit('response', response);
  23950         for (const destination of this._pipedServerResponses) {
  23951             if (destination.headersSent) {
  23952                 continue;
  23953             }
  23954             // eslint-disable-next-line guard-for-in
  23955             for (const key in response.headers) {
  23956                 const isAllowed = options.decompress ? key !== 'content-encoding' : true;
  23957                 const value = response.headers[key];
  23958                 if (isAllowed) {
  23959                     destination.setHeader(key, value);
  23960                 }
  23961             }
  23962             destination.statusCode = statusCode;
  23963         }
  23964     }
  23965     async _setRawBody(from = this) {
  23966         if (from.readableEnded) {
  23967             return false;
  23968         }
  23969         try {
  23970             // Errors are emitted via the `error` event
  23971             const rawBody = await getStreamAsBuffer(from);
  23972             // TODO: Switch to this:
  23973             // let rawBody = await from.toArray();
  23974             // rawBody = Buffer.concat(rawBody);
  23975             // On retry Request is destroyed with no error, therefore the above will successfully resolve.
  23976             // So in order to check if this was really successfull, we need to check if it has been properly ended.
  23977             if (!this.isAborted) {
  23978                 this.response.rawBody = rawBody;
  23979                 return true;
  23980             }
  23981         }
  23982         catch { }
  23983         return false;
  23984     }
  23985     async _onResponse(response) {
  23986         try {
  23987             await this._onResponseBase(response);
  23988         }
  23989         catch (error) {
  23990             /* istanbul ignore next: better safe than sorry */
  23991             this._beforeError(error);
  23992         }
  23993     }
  23994     _onRequest(request) {
  23995         const { options } = this;
  23996         const { timeout, url } = options;
  23997         dist_source(request);
  23998         if (this.options.http2) {
  23999             // Unset stream timeout, as the `timeout` option was used only for connection timeout.
  24000             request.setTimeout(0);
  24001         }
  24002         this._cancelTimeouts = timedOut(request, timeout, url);
  24003         const responseEventName = options.cache ? 'cacheableResponse' : 'response';
  24004         request.once(responseEventName, (response) => {
  24005             void this._onResponse(response);
  24006         });
  24007         request.once('error', (error) => {
  24008             this._aborted = true;
  24009             // Force clean-up, because some packages (e.g. nock) don't do this.
  24010             request.destroy();
  24011             error = error instanceof timed_out_TimeoutError ? new TimeoutError(error, this.timings, this) : new RequestError(error.message, error, this);
  24012             this._beforeError(error);
  24013         });
  24014         this._unproxyEvents = proxyEvents(request, this, proxiedRequestEvents);
  24015         this._request = request;
  24016         this.emit('uploadProgress', this.uploadProgress);
  24017         this._sendBody();
  24018         this.emit('request', request);
  24019     }
  24020     async _asyncWrite(chunk) {
  24021         return new Promise((resolve, reject) => {
  24022             super.write(chunk, error => {
  24023                 if (error) {
  24024                     reject(error);
  24025                     return;
  24026                 }
  24027                 resolve();
  24028             });
  24029         });
  24030     }
  24031     _sendBody() {
  24032         // Send body
  24033         const { body } = this.options;
  24034         const currentRequest = this.redirectUrls.length === 0 ? this : this._request ?? this;
  24035         if (dist.nodeStream(body)) {
  24036             body.pipe(currentRequest);
  24037         }
  24038         else if (dist.generator(body) || dist.asyncGenerator(body)) {
  24039             (async () => {
  24040                 try {
  24041                     for await (const chunk of body) {
  24042                         await this._asyncWrite(chunk);
  24043                     }
  24044                     super.end();
  24045                 }
  24046                 catch (error) {
  24047                     this._beforeError(error);
  24048                 }
  24049             })();
  24050         }
  24051         else if (!dist.undefined(body)) {
  24052             this._writeRequest(body, undefined, () => { });
  24053             currentRequest.end();
  24054         }
  24055         else if (this._cannotHaveBody || this._noPipe) {
  24056             currentRequest.end();
  24057         }
  24058     }
  24059     _prepareCache(cache) {
  24060         if (!cacheableStore.has(cache)) {
  24061             const cacheableRequest = new cacheable_request_dist(((requestOptions, handler) => {
  24062                 const result = requestOptions._request(requestOptions, handler);
  24063                 // TODO: remove this when `cacheable-request` supports async request functions.
  24064                 if (dist.promise(result)) {
  24065                     // We only need to implement the error handler in order to support HTTP2 caching.
  24066                     // The result will be a promise anyway.
  24067                     // @ts-expect-error ignore
  24068                     result.once = (event, handler) => {
  24069                         if (event === 'error') {
  24070                             (async () => {
  24071                                 try {
  24072                                     await result;
  24073                                 }
  24074                                 catch (error) {
  24075                                     handler(error);
  24076                                 }
  24077                             })();
  24078                         }
  24079                         else if (event === 'abort') {
  24080                             // The empty catch is needed here in case when
  24081                             // it rejects before it's `await`ed in `_makeRequest`.
  24082                             (async () => {
  24083                                 try {
  24084                                     const request = (await result);
  24085                                     request.once('abort', handler);
  24086                                 }
  24087                                 catch { }
  24088                             })();
  24089                         }
  24090                         else {
  24091                             /* istanbul ignore next: safety check */
  24092                             throw new Error(`Unknown HTTP2 promise event: ${event}`);
  24093                         }
  24094                         return result;
  24095                     };
  24096                 }
  24097                 return result;
  24098             }), cache);
  24099             cacheableStore.set(cache, cacheableRequest.request());
  24100         }
  24101     }
  24102     async _createCacheableRequest(url, options) {
  24103         return new Promise((resolve, reject) => {
  24104             // TODO: Remove `utils/url-to-options.ts` when `cacheable-request` is fixed
  24105             Object.assign(options, urlToOptions(url));
  24106             let request;
  24107             // TODO: Fix `cacheable-response`. This is ugly.
  24108             const cacheRequest = cacheableStore.get(options.cache)(options, async (response) => {
  24109                 response._readableState.autoDestroy = false;
  24110                 if (request) {
  24111                     const fix = () => {
  24112                         if (response.req) {
  24113                             response.complete = response.req.res.complete;
  24114                         }
  24115                     };
  24116                     response.prependOnceListener('end', fix);
  24117                     fix();
  24118                     (await request).emit('cacheableResponse', response);
  24119                 }
  24120                 resolve(response);
  24121             });
  24122             cacheRequest.once('error', reject);
  24123             cacheRequest.once('request', async (requestOrPromise) => {
  24124                 request = requestOrPromise;
  24125                 resolve(request);
  24126             });
  24127         });
  24128     }
  24129     async _makeRequest() {
  24130         const { options } = this;
  24131         const { headers, username, password } = options;
  24132         const cookieJar = options.cookieJar;
  24133         for (const key in headers) {
  24134             if (dist.undefined(headers[key])) {
  24135                 // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
  24136                 delete headers[key];
  24137             }
  24138             else if (dist.null_(headers[key])) {
  24139                 throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${key}\` header`);
  24140             }
  24141         }
  24142         if (options.decompress && dist.undefined(headers['accept-encoding'])) {
  24143             headers['accept-encoding'] = supportsBrotli ? 'gzip, deflate, br' : 'gzip, deflate';
  24144         }
  24145         if (username || password) {
  24146             const credentials = external_node_buffer_namespaceObject.Buffer.from(`${username}:${password}`).toString('base64');
  24147             headers.authorization = `Basic ${credentials}`;
  24148         }
  24149         // Set cookies
  24150         if (cookieJar) {
  24151             const cookieString = await cookieJar.getCookieString(options.url.toString());
  24152             if (dist.nonEmptyString(cookieString)) {
  24153                 headers.cookie = cookieString;
  24154             }
  24155         }
  24156         // Reset `prefixUrl`
  24157         options.prefixUrl = '';
  24158         let request;
  24159         for (const hook of options.hooks.beforeRequest) {
  24160             // eslint-disable-next-line no-await-in-loop
  24161             const result = await hook(options);
  24162             if (!dist.undefined(result)) {
  24163                 // @ts-expect-error Skip the type mismatch to support abstract responses
  24164                 request = () => result;
  24165                 break;
  24166             }
  24167         }
  24168         if (!request) {
  24169             request = options.getRequestFunction();
  24170         }
  24171         const url = options.url;
  24172         this._requestOptions = options.createNativeRequestOptions();
  24173         if (options.cache) {
  24174             this._requestOptions._request = request;
  24175             this._requestOptions.cache = options.cache;
  24176             this._requestOptions.body = options.body;
  24177             this._prepareCache(options.cache);
  24178         }
  24179         // Cache support
  24180         const fn = options.cache ? this._createCacheableRequest : request;
  24181         try {
  24182             // We can't do `await fn(...)`,
  24183             // because stream `error` event can be emitted before `Promise.resolve()`.
  24184             let requestOrResponse = fn(url, this._requestOptions);
  24185             if (dist.promise(requestOrResponse)) {
  24186                 requestOrResponse = await requestOrResponse;
  24187             }
  24188             // Fallback
  24189             if (dist.undefined(requestOrResponse)) {
  24190                 requestOrResponse = options.getFallbackRequestFunction()(url, this._requestOptions);
  24191                 if (dist.promise(requestOrResponse)) {
  24192                     requestOrResponse = await requestOrResponse;
  24193                 }
  24194             }
  24195             if (is_client_request(requestOrResponse)) {
  24196                 this._onRequest(requestOrResponse);
  24197             }
  24198             else if (this.writable) {
  24199                 this.once('finish', () => {
  24200                     void this._onResponse(requestOrResponse);
  24201                 });
  24202                 this._sendBody();
  24203             }
  24204             else {
  24205                 void this._onResponse(requestOrResponse);
  24206             }
  24207         }
  24208         catch (error) {
  24209             if (error instanceof types_CacheError) {
  24210                 throw new CacheError(error, this);
  24211             }
  24212             throw error;
  24213         }
  24214     }
  24215     async _error(error) {
  24216         try {
  24217             if (error instanceof HTTPError && !this.options.throwHttpErrors) {
  24218                 // This branch can be reached only when using the Promise API
  24219                 // Skip calling the hooks on purpose.
  24220                 // See https://github.com/sindresorhus/got/issues/2103
  24221             }
  24222             else {
  24223                 for (const hook of this.options.hooks.beforeError) {
  24224                     // eslint-disable-next-line no-await-in-loop
  24225                     error = await hook(error);
  24226                 }
  24227             }
  24228         }
  24229         catch (error_) {
  24230             error = new RequestError(error_.message, error_, this);
  24231         }
  24232         this.destroy(error);
  24233     }
  24234     _writeRequest(chunk, encoding, callback) {
  24235         if (!this._request || this._request.destroyed) {
  24236             // Probably the `ClientRequest` instance will throw
  24237             return;
  24238         }
  24239         this._request.write(chunk, encoding, (error) => {
  24240             // The `!destroyed` check is required to prevent `uploadProgress` being emitted after the stream was destroyed
  24241             if (!error && !this._request.destroyed) {
  24242                 this._uploadedSize += external_node_buffer_namespaceObject.Buffer.byteLength(chunk, encoding);
  24243                 const progress = this.uploadProgress;
  24244                 if (progress.percent < 1) {
  24245                     this.emit('uploadProgress', progress);
  24246                 }
  24247             }
  24248             callback(error);
  24249         });
  24250     }
  24251     /**
  24252     The remote IP address.
  24253     */
  24254     get ip() {
  24255         return this.socket?.remoteAddress;
  24256     }
  24257     /**
  24258     Indicates whether the request has been aborted or not.
  24259     */
  24260     get isAborted() {
  24261         return this._aborted;
  24262     }
  24263     get socket() {
  24264         return this._request?.socket ?? undefined;
  24265     }
  24266     /**
  24267     Progress event for downloading (receiving a response).
  24268     */
  24269     get downloadProgress() {
  24270         let percent;
  24271         if (this._responseSize) {
  24272             percent = this._downloadedSize / this._responseSize;
  24273         }
  24274         else if (this._responseSize === this._downloadedSize) {
  24275             percent = 1;
  24276         }
  24277         else {
  24278             percent = 0;
  24279         }
  24280         return {
  24281             percent,
  24282             transferred: this._downloadedSize,
  24283             total: this._responseSize,
  24284         };
  24285     }
  24286     /**
  24287     Progress event for uploading (sending a request).
  24288     */
  24289     get uploadProgress() {
  24290         let percent;
  24291         if (this._bodySize) {
  24292             percent = this._uploadedSize / this._bodySize;
  24293         }
  24294         else if (this._bodySize === this._uploadedSize) {
  24295             percent = 1;
  24296         }
  24297         else {
  24298             percent = 0;
  24299         }
  24300         return {
  24301             percent,
  24302             transferred: this._uploadedSize,
  24303             total: this._bodySize,
  24304         };
  24305     }
  24306     /**
  24307     The object contains the following properties:
  24308 
  24309     - `start` - Time when the request started.
  24310     - `socket` - Time when a socket was assigned to the request.
  24311     - `lookup` - Time when the DNS lookup finished.
  24312     - `connect` - Time when the socket successfully connected.
  24313     - `secureConnect` - Time when the socket securely connected.
  24314     - `upload` - Time when the request finished uploading.
  24315     - `response` - Time when the request fired `response` event.
  24316     - `end` - Time when the response fired `end` event.
  24317     - `error` - Time when the request fired `error` event.
  24318     - `abort` - Time when the request fired `abort` event.
  24319     - `phases`
  24320         - `wait` - `timings.socket - timings.start`
  24321         - `dns` - `timings.lookup - timings.socket`
  24322         - `tcp` - `timings.connect - timings.lookup`
  24323         - `tls` - `timings.secureConnect - timings.connect`
  24324         - `request` - `timings.upload - (timings.secureConnect || timings.connect)`
  24325         - `firstByte` - `timings.response - timings.upload`
  24326         - `download` - `timings.end - timings.response`
  24327         - `total` - `(timings.end || timings.error || timings.abort) - timings.start`
  24328 
  24329     If something has not been measured yet, it will be `undefined`.
  24330 
  24331     __Note__: The time is a `number` representing the milliseconds elapsed since the UNIX epoch.
  24332     */
  24333     get timings() {
  24334         return this._request?.timings;
  24335     }
  24336     /**
  24337     Whether the response was retrieved from the cache.
  24338     */
  24339     get isFromCache() {
  24340         return this._isFromCache;
  24341     }
  24342     get reusedSocket() {
  24343         return this._request?.reusedSocket;
  24344     }
  24345 }
  24346 
  24347 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/as-promise/types.js
  24348 
  24349 /**
  24350 An error to be thrown when the request is aborted with `.cancel()`.
  24351 */
  24352 class types_CancelError extends RequestError {
  24353     constructor(request) {
  24354         super('Promise was canceled', {}, request);
  24355         this.name = 'CancelError';
  24356         this.code = 'ERR_CANCELED';
  24357     }
  24358     /**
  24359     Whether the promise is canceled.
  24360     */
  24361     get isCanceled() {
  24362         return true;
  24363     }
  24364 }
  24365 
  24366 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/as-promise/index.js
  24367 
  24368 
  24369 
  24370 
  24371 
  24372 
  24373 
  24374 
  24375 const as_promise_proxiedRequestEvents = [
  24376     'request',
  24377     'response',
  24378     'redirect',
  24379     'uploadProgress',
  24380     'downloadProgress',
  24381 ];
  24382 function asPromise(firstRequest) {
  24383     let globalRequest;
  24384     let globalResponse;
  24385     let normalizedOptions;
  24386     const emitter = new external_node_events_namespaceObject.EventEmitter();
  24387     const promise = new PCancelable((resolve, reject, onCancel) => {
  24388         onCancel(() => {
  24389             globalRequest.destroy();
  24390         });
  24391         onCancel.shouldReject = false;
  24392         onCancel(() => {
  24393             reject(new types_CancelError(globalRequest));
  24394         });
  24395         const makeRequest = (retryCount) => {
  24396             // Errors when a new request is made after the promise settles.
  24397             // Used to detect a race condition.
  24398             // See https://github.com/sindresorhus/got/issues/1489
  24399             onCancel(() => { });
  24400             const request = firstRequest ?? new Request(undefined, undefined, normalizedOptions);
  24401             request.retryCount = retryCount;
  24402             request._noPipe = true;
  24403             globalRequest = request;
  24404             request.once('response', async (response) => {
  24405                 // Parse body
  24406                 const contentEncoding = (response.headers['content-encoding'] ?? '').toLowerCase();
  24407                 const isCompressed = contentEncoding === 'gzip' || contentEncoding === 'deflate' || contentEncoding === 'br';
  24408                 const { options } = request;
  24409                 if (isCompressed && !options.decompress) {
  24410                     response.body = response.rawBody;
  24411                 }
  24412                 else {
  24413                     try {
  24414                         response.body = parseBody(response, options.responseType, options.parseJson, options.encoding);
  24415                     }
  24416                     catch (error) {
  24417                         // Fall back to `utf8`
  24418                         response.body = response.rawBody.toString();
  24419                         if (isResponseOk(response)) {
  24420                             request._beforeError(error);
  24421                             return;
  24422                         }
  24423                     }
  24424                 }
  24425                 try {
  24426                     const hooks = options.hooks.afterResponse;
  24427                     for (const [index, hook] of hooks.entries()) {
  24428                         // @ts-expect-error TS doesn't notice that CancelableRequest is a Promise
  24429                         // eslint-disable-next-line no-await-in-loop
  24430                         response = await hook(response, async (updatedOptions) => {
  24431                             options.merge(updatedOptions);
  24432                             options.prefixUrl = '';
  24433                             if (updatedOptions.url) {
  24434                                 options.url = updatedOptions.url;
  24435                             }
  24436                             // Remove any further hooks for that request, because we'll call them anyway.
  24437                             // The loop continues. We don't want duplicates (asPromise recursion).
  24438                             options.hooks.afterResponse = options.hooks.afterResponse.slice(0, index);
  24439                             throw new RetryError(request);
  24440                         });
  24441                         if (!(dist.object(response) && dist.number(response.statusCode) && !dist.nullOrUndefined(response.body))) {
  24442                             throw new TypeError('The `afterResponse` hook returned an invalid value');
  24443                         }
  24444                     }
  24445                 }
  24446                 catch (error) {
  24447                     request._beforeError(error);
  24448                     return;
  24449                 }
  24450                 globalResponse = response;
  24451                 if (!isResponseOk(response)) {
  24452                     request._beforeError(new HTTPError(response));
  24453                     return;
  24454                 }
  24455                 request.destroy();
  24456                 resolve(request.options.resolveBodyOnly ? response.body : response);
  24457             });
  24458             const onError = (error) => {
  24459                 if (promise.isCanceled) {
  24460                     return;
  24461                 }
  24462                 const { options } = request;
  24463                 if (error instanceof HTTPError && !options.throwHttpErrors) {
  24464                     const { response } = error;
  24465                     request.destroy();
  24466                     resolve(request.options.resolveBodyOnly ? response.body : response);
  24467                     return;
  24468                 }
  24469                 reject(error);
  24470             };
  24471             request.once('error', onError);
  24472             const previousBody = request.options?.body;
  24473             request.once('retry', (newRetryCount, error) => {
  24474                 firstRequest = undefined;
  24475                 const newBody = request.options.body;
  24476                 if (previousBody === newBody && dist.nodeStream(newBody)) {
  24477                     error.message = 'Cannot retry with consumed body stream';
  24478                     onError(error);
  24479                     return;
  24480                 }
  24481                 // This is needed! We need to reuse `request.options` because they can get modified!
  24482                 // For example, by calling `promise.json()`.
  24483                 normalizedOptions = request.options;
  24484                 makeRequest(newRetryCount);
  24485             });
  24486             proxyEvents(request, emitter, as_promise_proxiedRequestEvents);
  24487             if (dist.undefined(firstRequest)) {
  24488                 void request.flush();
  24489             }
  24490         };
  24491         makeRequest(0);
  24492     });
  24493     promise.on = (event, fn) => {
  24494         emitter.on(event, fn);
  24495         return promise;
  24496     };
  24497     promise.off = (event, fn) => {
  24498         emitter.off(event, fn);
  24499         return promise;
  24500     };
  24501     const shortcut = (responseType) => {
  24502         const newPromise = (async () => {
  24503             // Wait until downloading has ended
  24504             await promise;
  24505             const { options } = globalResponse.request;
  24506             return parseBody(globalResponse, responseType, options.parseJson, options.encoding);
  24507         })();
  24508         // eslint-disable-next-line @typescript-eslint/no-floating-promises
  24509         Object.defineProperties(newPromise, Object.getOwnPropertyDescriptors(promise));
  24510         return newPromise;
  24511     };
  24512     promise.json = () => {
  24513         if (globalRequest.options) {
  24514             const { headers } = globalRequest.options;
  24515             if (!globalRequest.writableFinished && !('accept' in headers)) {
  24516                 headers.accept = 'application/json';
  24517             }
  24518         }
  24519         return shortcut('json');
  24520     };
  24521     promise.buffer = () => shortcut('buffer');
  24522     promise.text = () => shortcut('text');
  24523     return promise;
  24524 }
  24525 
  24526 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/create.js
  24527 
  24528 
  24529 
  24530 
  24531 // The `delay` package weighs 10KB (!)
  24532 const delay = async (ms) => new Promise(resolve => {
  24533     setTimeout(resolve, ms);
  24534 });
  24535 const isGotInstance = (value) => dist.function_(value);
  24536 const aliases = [
  24537     'get',
  24538     'post',
  24539     'put',
  24540     'patch',
  24541     'head',
  24542     'delete',
  24543 ];
  24544 const create = (defaults) => {
  24545     defaults = {
  24546         options: new Options(undefined, undefined, defaults.options),
  24547         handlers: [...defaults.handlers],
  24548         mutableDefaults: defaults.mutableDefaults,
  24549     };
  24550     Object.defineProperty(defaults, 'mutableDefaults', {
  24551         enumerable: true,
  24552         configurable: false,
  24553         writable: false,
  24554     });
  24555     // Got interface
  24556     const got = ((url, options, defaultOptions = defaults.options) => {
  24557         const request = new Request(url, options, defaultOptions);
  24558         let promise;
  24559         const lastHandler = (normalized) => {
  24560             // Note: `options` is `undefined` when `new Options(...)` fails
  24561             request.options = normalized;
  24562             request._noPipe = !normalized.isStream;
  24563             void request.flush();
  24564             if (normalized.isStream) {
  24565                 return request;
  24566             }
  24567             if (!promise) {
  24568                 promise = asPromise(request);
  24569             }
  24570             return promise;
  24571         };
  24572         let iteration = 0;
  24573         const iterateHandlers = (newOptions) => {
  24574             const handler = defaults.handlers[iteration++] ?? lastHandler;
  24575             const result = handler(newOptions, iterateHandlers);
  24576             if (dist.promise(result) && !request.options.isStream) {
  24577                 if (!promise) {
  24578                     promise = asPromise(request);
  24579                 }
  24580                 if (result !== promise) {
  24581                     const descriptors = Object.getOwnPropertyDescriptors(promise);
  24582                     for (const key in descriptors) {
  24583                         if (key in result) {
  24584                             // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
  24585                             delete descriptors[key];
  24586                         }
  24587                     }
  24588                     // eslint-disable-next-line @typescript-eslint/no-floating-promises
  24589                     Object.defineProperties(result, descriptors);
  24590                     result.cancel = promise.cancel;
  24591                 }
  24592             }
  24593             return result;
  24594         };
  24595         return iterateHandlers(request.options);
  24596     });
  24597     got.extend = (...instancesOrOptions) => {
  24598         const options = new Options(undefined, undefined, defaults.options);
  24599         const handlers = [...defaults.handlers];
  24600         let mutableDefaults;
  24601         for (const value of instancesOrOptions) {
  24602             if (isGotInstance(value)) {
  24603                 options.merge(value.defaults.options);
  24604                 handlers.push(...value.defaults.handlers);
  24605                 mutableDefaults = value.defaults.mutableDefaults;
  24606             }
  24607             else {
  24608                 options.merge(value);
  24609                 if (value.handlers) {
  24610                     handlers.push(...value.handlers);
  24611                 }
  24612                 mutableDefaults = value.mutableDefaults;
  24613             }
  24614         }
  24615         return create({
  24616             options,
  24617             handlers,
  24618             mutableDefaults: Boolean(mutableDefaults),
  24619         });
  24620     };
  24621     // Pagination
  24622     const paginateEach = (async function* (url, options) {
  24623         let normalizedOptions = new Options(url, options, defaults.options);
  24624         normalizedOptions.resolveBodyOnly = false;
  24625         const { pagination } = normalizedOptions;
  24626         assert.function_(pagination.transform);
  24627         assert.function_(pagination.shouldContinue);
  24628         assert.function_(pagination.filter);
  24629         assert.function_(pagination.paginate);
  24630         assert.number(pagination.countLimit);
  24631         assert.number(pagination.requestLimit);
  24632         assert.number(pagination.backoff);
  24633         const allItems = [];
  24634         let { countLimit } = pagination;
  24635         let numberOfRequests = 0;
  24636         while (numberOfRequests < pagination.requestLimit) {
  24637             if (numberOfRequests !== 0) {
  24638                 // eslint-disable-next-line no-await-in-loop
  24639                 await delay(pagination.backoff);
  24640             }
  24641             // eslint-disable-next-line no-await-in-loop
  24642             const response = (await got(undefined, undefined, normalizedOptions));
  24643             // eslint-disable-next-line no-await-in-loop
  24644             const parsed = await pagination.transform(response);
  24645             const currentItems = [];
  24646             assert.array(parsed);
  24647             for (const item of parsed) {
  24648                 if (pagination.filter({ item, currentItems, allItems })) {
  24649                     if (!pagination.shouldContinue({ item, currentItems, allItems })) {
  24650                         return;
  24651                     }
  24652                     yield item;
  24653                     if (pagination.stackAllItems) {
  24654                         allItems.push(item);
  24655                     }
  24656                     currentItems.push(item);
  24657                     if (--countLimit <= 0) {
  24658                         return;
  24659                     }
  24660                 }
  24661             }
  24662             const optionsToMerge = pagination.paginate({
  24663                 response,
  24664                 currentItems,
  24665                 allItems,
  24666             });
  24667             if (optionsToMerge === false) {
  24668                 return;
  24669             }
  24670             if (optionsToMerge === response.request.options) {
  24671                 normalizedOptions = response.request.options;
  24672             }
  24673             else {
  24674                 normalizedOptions.merge(optionsToMerge);
  24675                 assert.any([dist.urlInstance, dist.undefined], optionsToMerge.url);
  24676                 if (optionsToMerge.url !== undefined) {
  24677                     normalizedOptions.prefixUrl = '';
  24678                     normalizedOptions.url = optionsToMerge.url;
  24679                 }
  24680             }
  24681             numberOfRequests++;
  24682         }
  24683     });
  24684     got.paginate = paginateEach;
  24685     got.paginate.all = (async (url, options) => {
  24686         const results = [];
  24687         for await (const item of paginateEach(url, options)) {
  24688             results.push(item);
  24689         }
  24690         return results;
  24691     });
  24692     // For those who like very descriptive names
  24693     got.paginate.each = paginateEach;
  24694     // Stream API
  24695     got.stream = ((url, options) => got(url, { ...options, isStream: true }));
  24696     // Shortcuts
  24697     for (const method of aliases) {
  24698         got[method] = ((url, options) => got(url, { ...options, method }));
  24699         got.stream[method] = ((url, options) => got(url, { ...options, method, isStream: true }));
  24700     }
  24701     if (!defaults.mutableDefaults) {
  24702         Object.freeze(defaults.handlers);
  24703         defaults.options.freeze();
  24704     }
  24705     Object.defineProperty(got, 'defaults', {
  24706         value: defaults,
  24707         writable: false,
  24708         configurable: false,
  24709         enumerable: true,
  24710     });
  24711     return got;
  24712 };
  24713 /* harmony default export */ const source_create = (create);
  24714 
  24715 ;// CONCATENATED MODULE: ./node_modules/got/dist/source/index.js
  24716 
  24717 
  24718 const defaults = {
  24719     options: new Options(),
  24720     handlers: [],
  24721     mutableDefaults: false,
  24722 };
  24723 const got = source_create(defaults);
  24724 /* harmony default export */ const got_dist_source = (got);
  24725 
  24726 
  24727 
  24728 
  24729 
  24730 
  24731 
  24732 
  24733 
  24734 
  24735 
  24736 
  24737 // EXTERNAL MODULE: ./node_modules/nearley/lib/nearley.js
  24738 var nearley = __nccwpck_require__(7800);
  24739 ;// CONCATENATED MODULE: ./lib/main.js
  24740 
  24741 
  24742 
  24743 
  24744 
  24745 
  24746 
  24747 
  24748 
  24749 // @ts-ignore
  24750 
  24751 const { Grammar, Parser } = nearley;
  24752 // Purely used for tests
  24753 function areWeTestingWithJest() {
  24754     return process.env.JEST_WORKER_ID !== undefined;
  24755 }
  24756 async function downloadRelease(version) {
  24757     // Download
  24758     const downloadUrl = `https://github.com/getzola/zola/releases/download/v${version}/zola-v${version}-x86_64-unknown-linux-gnu.tar.gz`;
  24759     let downloadPath = null;
  24760     try {
  24761         downloadPath = await (0,tool_cache.downloadTool)(downloadUrl);
  24762     }
  24763     catch (error) {
  24764         (0,core.debug)(error);
  24765         throw new Error(`Failed to download version v${version}: ${error}`);
  24766     }
  24767     // Extract
  24768     const extPath = await (0,tool_cache.extractTar)(downloadPath);
  24769     // Install into the local tool cache - node extracts with a root folder that matches the fileName downloaded
  24770     return await (0,tool_cache.cacheDir)(extPath, 'zola', version);
  24771 }
  24772 async function getZolaCli(version) {
  24773     // look if the binary is cached
  24774     let toolPath;
  24775     toolPath = (0,tool_cache.find)('zola', version);
  24776     // if not: download, extract and cache
  24777     if (!toolPath) {
  24778         toolPath = await downloadRelease(version);
  24779         (0,core.debug)(`Zola cached under ${toolPath}`);
  24780     }
  24781     (0,core.addPath)(toolPath);
  24782 }
  24783 async function run() {
  24784     // __dirname does not exist in esm world so we fake it the esm way. Nodejs approves.
  24785     const __dirname = process.env['GITHUB_WORKSPACE'] || '.';
  24786     const working_directory = (0,core.getInput)('working_directory');
  24787     let dataString = '';
  24788     let infoString = '';
  24789     const parser = new Parser(Grammar.fromCompiled(lib_grammar));
  24790     const options = {
  24791         cwd: external_path_.join(__dirname, working_directory),
  24792         ignoreReturnCode: true,
  24793         listeners: {
  24794             stderr: (data) => {
  24795                 dataString += data.toString();
  24796             },
  24797             stdout: (data) => {
  24798                 infoString += data.toString();
  24799             }
  24800         }
  24801     };
  24802     // Download zola
  24803     await getZolaCli('0.17.2');
  24804     const zolaPath = await (0,io.which)('zola', true);
  24805     const startTime = new Date();
  24806     await (0,exec.exec)(`${zolaPath}`, ['check'], options);
  24807     try {
  24808         parser.feed(dataString);
  24809     }
  24810     catch (parseError) {
  24811         (0,core.setFailed)(`Error at character ${parseError.offset}`);
  24812     }
  24813     const annotations = [];
  24814     for (const rawResult of parser.results[0]) {
  24815         const result = rawResult;
  24816         if (!result.hasOwnProperty('file')) {
  24817             continue;
  24818         }
  24819         // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- We ensured this exists previously
  24820         const data = await (0,promises_namespaceObject.readFile)(result.file, 'utf8');
  24821         const lines = data.split(/\r?\n/);
  24822         for (const [index, line] of lines.entries()) {
  24823             if (line.trim() === '') {
  24824                 continue;
  24825             }
  24826             const startingPositionOfUrl = line.indexOf(result.url ?? '');
  24827             if (startingPositionOfUrl === -1) {
  24828                 continue;
  24829             }
  24830             let message = `Zola Error Message: ${result.error_message}`;
  24831             // Check if we have a webarchive link
  24832             const waybackResponse = await got_dist_source.get(`http://archive.org/wayback/available?url=${result.url ?? ''}`)
  24833                 .json();
  24834             if (waybackResponse.archived_snapshots !== null) {
  24835                 if (waybackResponse.archived_snapshots.closest?.available &&
  24836                     waybackResponse.archived_snapshots.closest.status === '200') {
  24837                     message = `${message}\nWayback Machine Link is available: ${waybackResponse.archived_snapshots.closest.url}`;
  24838                 }
  24839             }
  24840             annotations.push({
  24841                 // This is a little awkward but does the job
  24842                 path: `/${external_path_.relative(__dirname, result.file ?? '')}`,
  24843                 start_line: index,
  24844                 end_line: index,
  24845                 start_column: startingPositionOfUrl,
  24846                 end_column: startingPositionOfUrl + (result.url ?? '').length,
  24847                 annotation_level: (0,core.getInput)('annotation_level'),
  24848                 message
  24849             });
  24850         }
  24851     }
  24852     // Only create result if there is anything to report
  24853     if (annotations.length > 0) {
  24854         const token = (0,core.getInput)('repo-token');
  24855         const octokit = (0,github.getOctokit)(token);
  24856         // call octokit to create a check with annotation and details
  24857         await octokit.rest.checks.create({
  24858             owner: github.context.repo.owner,
  24859             repo: github.context.repo.repo,
  24860             name: 'Zola Check',
  24861             head_sha: github.context.sha,
  24862             started_at: areWeTestingWithJest() ? undefined : startTime.toISOString(),
  24863             completed_at: areWeTestingWithJest()
  24864                 ? undefined
  24865                 : new Date().toISOString(),
  24866             status: 'completed',
  24867             conclusion: (0,core.getInput)('conclusion_level'),
  24868             output: {
  24869                 title: 'Link is not reachable',
  24870                 summary: 'Zola check found links which are not reachable. Make sure to either ignore these due to being false positives or fixing them',
  24871                 annotations
  24872             }
  24873         });
  24874     }
  24875     // Write summary
  24876     const stdoutParser = new Parser(Grammar.fromCompiled(lib_grammar));
  24877     stdoutParser.feed(infoString);
  24878     if (
  24879     // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24880     stdoutParser.results[0].filter((result) => result.hasOwnProperty('successReport')).length > 0) {
  24881         // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24882         const totalExternal = stdoutParser.results[0].filter((result) => result.hasOwnProperty('external_links_planed_checking'))[0]['external_links_planed_checking']['total'];
  24883         core.summary.addHeading('Zola check results')
  24884             .addTable([
  24885             [
  24886                 { data: 'Link Type', header: true },
  24887                 { data: 'Total', header: true },
  24888                 { data: 'Result', header: true }
  24889             ],
  24890             ['Internal', '', 'Pass ✅'],
  24891             ['External', totalExternal, `Pass ✅`]
  24892         ])
  24893             .write();
  24894     }
  24895     else {
  24896         // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24897         const totalInternal = stdoutParser.results[0].filter((result) => result.hasOwnProperty('internal_links'))[0]['internal_links']['total'];
  24898         // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24899         const totalExternal = stdoutParser.results[0].filter((result) => result.hasOwnProperty('external_links_planed_checking'))[0]['external_links_planed_checking']['total'];
  24900         const skippedExternal = 
  24901         // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24902         stdoutParser.results[0].filter((result) => result.hasOwnProperty('external_links_planed_checking'))[0]['external_links_planed_checking']['skipped'] || '0';
  24903         // eslint-disable-next-line @typescript-eslint/no-explicit-any
  24904         const errorCount = stdoutParser.results[0].filter((result) => result.hasOwnProperty('external_links_checked'))[0]['external_links_checked']['errors'];
  24905         core.summary.addHeading('Zola check results')
  24906             .addTable([
  24907             [
  24908                 { data: 'Link Type', header: true },
  24909                 { data: 'Total', header: true },
  24910                 { data: 'Result', header: true }
  24911             ],
  24912             ['Internal', totalInternal, 'Pass ✅'],
  24913             [
  24914                 'External',
  24915                 `${totalExternal} (Skipped ${skippedExternal})`,
  24916                 `Fail (${errorCount} error(s) found) ❌`
  24917             ]
  24918         ])
  24919             .write();
  24920     }
  24921 }
  24922 run();
  24923 
  24924 })();
  24925 
  24926 var __webpack_exports__run = __webpack_exports__.K;
  24927 export { __webpack_exports__run as run };
  24928 
  24929 //# sourceMappingURL=index.js.map